summaryrefslogtreecommitdiff
path: root/core/fpdfapi
diff options
context:
space:
mode:
Diffstat (limited to 'core/fpdfapi')
-rw-r--r--core/fpdfapi/fpdf_basic_module.cpp62
-rw-r--r--core/fpdfapi/fpdf_cmaps/CNS1/Adobe-CNS1-UCS2_5.cpp2131
-rw-r--r--core/fpdfapi/fpdf_cmaps/CNS1/B5pc-H_0.cpp93
-rw-r--r--core/fpdfapi/fpdf_cmaps/CNS1/B5pc-V_0.cpp14
-rw-r--r--core/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-H_0.cpp172
-rw-r--r--core/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-V_0.cpp189
-rw-r--r--core/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-H_0.cpp95
-rw-r--r--core/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-V_0.cpp15
-rw-r--r--core/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-H_0.cpp11
-rw-r--r--core/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-V_0.cpp16
-rw-r--r--core/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-H_5.cpp414
-rw-r--r--core/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-V_5.cpp15
-rw-r--r--core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-H_3.cpp5483
-rw-r--r--core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-V_3.cpp15
-rw-r--r--core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UTF16-H_0.cpp3245
-rw-r--r--core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.cpp56
-rw-r--r--core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h29
-rw-r--r--core/fpdfapi/fpdf_cmaps/GB1/Adobe-GB1-UCS2_5.cpp3375
-rw-r--r--core/fpdfapi/fpdf_cmaps/GB1/GB-EUC-H_0.cpp40
-rw-r--r--core/fpdfapi/fpdf_cmaps/GB1/GB-EUC-V_0.cpp17
-rw-r--r--core/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-H_2.cpp1367
-rw-r--r--core/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-V_2.cpp17
-rw-r--r--core/fpdfapi/fpdf_cmaps/GB1/GBK2K-H_5.cpp1822
-rw-r--r--core/fpdfapi/fpdf_cmaps/GB1/GBK2K-V_5.cpp24
-rw-r--r--core/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-H_2.cpp1367
-rw-r--r--core/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-V_2.cpp17
-rw-r--r--core/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-H_0.cpp41
-rw-r--r--core/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-V_0.cpp17
-rw-r--r--core/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-H_4.cpp4619
-rw-r--r--core/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-V_4.cpp18
-rw-r--r--core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.cpp55
-rw-r--r--core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h27
-rw-r--r--core/fpdfapi/fpdf_cmaps/Japan1/83pv-RKSJ-H_1.cpp84
-rw-r--r--core/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-H_2.cpp67
-rw-r--r--core/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-V_2.cpp36
-rw-r--r--core/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-H_2.cpp67
-rw-r--r--core/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-V_2.cpp36
-rw-r--r--core/fpdfapi/fpdf_cmaps/Japan1/90pv-RKSJ-H_1.cpp98
-rw-r--r--core/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-H_1.cpp222
-rw-r--r--core/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-V_1.cpp29
-rw-r--r--core/fpdfapi/fpdf_cmaps/Japan1/Adobe-Japan1-UCS2_4.cpp1726
-rw-r--r--core/fpdfapi/fpdf_cmaps/Japan1/EUC-H_1.cpp50
-rw-r--r--core/fpdfapi/fpdf_cmaps/Japan1/EUC-V_1.cpp19
-rw-r--r--core/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-H_2.cpp232
-rw-r--r--core/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-V_2.cpp23
-rw-r--r--core/fpdfapi/fpdf_cmaps/Japan1/H_1.cpp50
-rw-r--r--core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-H_4.cpp12
-rw-r--r--core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-V_4.cpp77
-rw-r--r--core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-H_4.cpp2182
-rw-r--r--core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-V_4.cpp66
-rw-r--r--core/fpdfapi/fpdf_cmaps/Japan1/V_1.cpp19
-rw-r--r--core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.cpp66
-rw-r--r--core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h35
-rw-r--r--core/fpdfapi/fpdf_cmaps/Korea1/Adobe-Korea1-UCS2_2.cpp2050
-rw-r--r--core/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-H_0.cpp166
-rw-r--r--core/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-V_0.cpp16
-rw-r--r--core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-H_1.cpp235
-rw-r--r--core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-V_1.cpp16
-rw-r--r--core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-H_1.cpp235
-rw-r--r--core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-V_1.cpp16
-rw-r--r--core/fpdfapi/fpdf_cmaps/Korea1/KSCpc-EUC-H_0.cpp180
-rw-r--r--core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-H_1.cpp2808
-rw-r--r--core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-V_1.cpp16
-rw-r--r--core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UTF16-H_0.cpp46
-rw-r--r--core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.cpp50
-rw-r--r--core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h24
-rw-r--r--core/fpdfapi/fpdf_cmaps/cmap_int.h32
-rw-r--r--core/fpdfapi/fpdf_cmaps/fpdf_cmaps.cpp192
-rw-r--r--core/fpdfapi/fpdf_edit/editint.h74
-rw-r--r--core/fpdfapi/fpdf_edit/fpdf_edit_content.cpp162
-rw-r--r--core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp2076
-rw-r--r--core/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp1156
-rw-r--r--core/fpdfapi/fpdf_edit/fpdf_edit_image.cpp391
-rw-r--r--core/fpdfapi/fpdf_font/font_int.h203
-rw-r--r--core/fpdfapi/fpdf_font/fpdf_font.cpp1814
-rw-r--r--core/fpdfapi/fpdf_font/fpdf_font_charset.cpp1782
-rw-r--r--core/fpdfapi/fpdf_font/fpdf_font_cid.cpp1676
-rw-r--r--core/fpdfapi/fpdf_font/fpdf_font_cid_unittest.cpp65
-rw-r--r--core/fpdfapi/fpdf_font/fpdf_font_unittest.cpp30
-rw-r--r--core/fpdfapi/fpdf_font/ttgsubtable.cpp415
-rw-r--r--core/fpdfapi/fpdf_font/ttgsubtable.h363
-rw-r--r--core/fpdfapi/fpdf_page/fpdf_page.cpp764
-rw-r--r--core/fpdfapi/fpdf_page/fpdf_page_colors.cpp1550
-rw-r--r--core/fpdfapi/fpdf_page/fpdf_page_doc.cpp610
-rw-r--r--core/fpdfapi/fpdf_page/fpdf_page_func.cpp966
-rw-r--r--core/fpdfapi/fpdf_page/fpdf_page_func_embeddertest.cpp20
-rw-r--r--core/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp697
-rw-r--r--core/fpdfapi/fpdf_page/fpdf_page_image.cpp100
-rw-r--r--core/fpdfapi/fpdf_page/fpdf_page_parser.cpp1819
-rw-r--r--core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp888
-rw-r--r--core/fpdfapi/fpdf_page/fpdf_page_parser_old_unittest.cpp47
-rw-r--r--core/fpdfapi/fpdf_page/fpdf_page_path.cpp55
-rw-r--r--core/fpdfapi/fpdf_page/fpdf_page_pattern.cpp320
-rw-r--r--core/fpdfapi/fpdf_page/pageint.h459
-rw-r--r--core/fpdfapi/fpdf_parser/cfdf_document.cpp98
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_array.cpp207
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_boolean.cpp45
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_data_avail.cpp1841
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_data_avail.h217
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_dictionary.cpp271
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_document.cpp354
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp469
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_hint_tables.h62
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_indirect_object_holder.cpp80
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_name.cpp53
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_null.cpp17
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_number.cpp56
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_object.cpp158
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp776
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_parser.cpp1652
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_parser_embeddertest.cpp40
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_parser_unittest.cpp202
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_reference.cpp72
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_simple_parser.cpp170
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_simple_parser_unittest.cpp96
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp342
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h64
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp714
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h105
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_stream.cpp232
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_string.cpp56
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_syntax_parser.cpp990
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h96
-rw-r--r--core/fpdfapi/fpdf_parser/cpdf_syntax_parser_unittest.cpp171
-rw-r--r--core/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp592
-rw-r--r--core/fpdfapi/fpdf_parser/fpdf_parser_decode_embeddertest.cpp117
-rw-r--r--core/fpdfapi/fpdf_parser/fpdf_parser_decode_unittest.cpp78
-rw-r--r--core/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp228
-rw-r--r--core/fpdfapi/fpdf_parser/fpdf_parser_utility.h39
-rw-r--r--core/fpdfapi/fpdf_render/fpdf_render.cpp1337
-rw-r--r--core/fpdfapi/fpdf_render/fpdf_render_cache.cpp334
-rw-r--r--core/fpdfapi/fpdf_render/fpdf_render_image.cpp998
-rw-r--r--core/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp1654
-rw-r--r--core/fpdfapi/fpdf_render/fpdf_render_loadimage_embeddertest.cpp29
-rw-r--r--core/fpdfapi/fpdf_render/fpdf_render_pattern.cpp1207
-rw-r--r--core/fpdfapi/fpdf_render/fpdf_render_pattern_embeddertest.cpp17
-rw-r--r--core/fpdfapi/fpdf_render/fpdf_render_text.cpp787
-rw-r--r--core/fpdfapi/fpdf_render/render_int.h619
138 files changed, 72400 insertions, 0 deletions
diff --git a/core/fpdfapi/fpdf_basic_module.cpp b/core/fpdfapi/fpdf_basic_module.cpp
new file mode 100644
index 0000000000..cf843cc4d9
--- /dev/null
+++ b/core/fpdfapi/fpdf_basic_module.cpp
@@ -0,0 +1,62 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fxcodec/fx_codec.h"
+
+namespace {
+
+CPDF_ModuleMgr* g_FPDFAPI_pDefaultMgr = nullptr;
+
+} // namespace
+
+// static
+CPDF_ModuleMgr* CPDF_ModuleMgr::Get() {
+ return g_FPDFAPI_pDefaultMgr;
+}
+
+// static
+void CPDF_ModuleMgr::Create() {
+ ASSERT(!g_FPDFAPI_pDefaultMgr);
+ g_FPDFAPI_pDefaultMgr = new CPDF_ModuleMgr;
+}
+
+// static
+void CPDF_ModuleMgr::Destroy() {
+ delete g_FPDFAPI_pDefaultMgr;
+ g_FPDFAPI_pDefaultMgr = nullptr;
+}
+
+CPDF_ModuleMgr::CPDF_ModuleMgr() : m_pCodecModule(nullptr) {}
+
+CPDF_ModuleMgr::~CPDF_ModuleMgr() {}
+
+void CPDF_ModuleMgr::SetPrivateData(void* module_id,
+ void* pData,
+ PD_CALLBACK_FREEDATA callback) {
+ m_privateData.SetPrivateData(module_id, pData, callback);
+}
+void* CPDF_ModuleMgr::GetPrivateData(void* module_id) {
+ return m_privateData.GetPrivateData(module_id);
+}
+ICodec_FaxModule* CPDF_ModuleMgr::GetFaxModule() {
+ return m_pCodecModule ? m_pCodecModule->GetFaxModule() : NULL;
+}
+ICodec_JpegModule* CPDF_ModuleMgr::GetJpegModule() {
+ return m_pCodecModule ? m_pCodecModule->GetJpegModule() : NULL;
+}
+ICodec_JpxModule* CPDF_ModuleMgr::GetJpxModule() {
+ return m_pCodecModule ? m_pCodecModule->GetJpxModule() : NULL;
+}
+ICodec_Jbig2Module* CPDF_ModuleMgr::GetJbig2Module() {
+ return m_pCodecModule ? m_pCodecModule->GetJbig2Module() : NULL;
+}
+ICodec_IccModule* CPDF_ModuleMgr::GetIccModule() {
+ return m_pCodecModule ? m_pCodecModule->GetIccModule() : NULL;
+}
+ICodec_FlateModule* CPDF_ModuleMgr::GetFlateModule() {
+ return m_pCodecModule ? m_pCodecModule->GetFlateModule() : NULL;
+}
diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/Adobe-CNS1-UCS2_5.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/Adobe-CNS1-UCS2_5.cpp
new file mode 100644
index 0000000000..5a45d0aa39
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/CNS1/Adobe-CNS1-UCS2_5.cpp
@@ -0,0 +1,2131 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h"
+
+const FX_WORD g_FXCMAP_CNS1CID2Unicode_5[19088] = {
+ 0xFFFD, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x0030,
+ 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039,
+ 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, 0x0042,
+ 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B,
+ 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054,
+ 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D,
+ 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066,
+ 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+ 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x00A9, 0x2122, 0x2026,
+ 0x3000, 0xFF0C, 0x3001, 0x3002, 0xFF0E, 0x2027, 0xFF1B, 0xFF1A, 0xFF1F,
+ 0xFF01, 0xFE30, 0x22EF, 0x2025, 0xFE50, 0xFE51, 0xFE52, 0x00B7, 0xFE54,
+ 0xFE55, 0xFE56, 0xFE57, 0xFF5C, 0x2013, 0xFE31, 0x2014, 0xFFFD, 0xFFFD,
+ 0xFFFD, 0xFFFD, 0xFF08, 0xFF09, 0xFE35, 0xFE36, 0xFF5B, 0xFF5D, 0xFE37,
+ 0xFE38, 0x3014, 0x3015, 0xFE39, 0xFE3A, 0x3010, 0x3011, 0xFE3B, 0xFE3C,
+ 0x300A, 0x300B, 0xFE3D, 0xFE3E, 0x3008, 0x3009, 0xFE3F, 0xFE40, 0x300C,
+ 0x300D, 0xFE41, 0xFE42, 0x300E, 0x300F, 0xFE43, 0xFE44, 0xFE59, 0xFE5A,
+ 0xFE5B, 0xFE5C, 0xFE5D, 0xFE5E, 0x2018, 0x2019, 0x201C, 0x201D, 0x301D,
+ 0x301E, 0x2035, 0x2032, 0xFF03, 0xFF06, 0xFF0A, 0x203B, 0x00A7, 0x3003,
+ 0x25CB, 0x25CF, 0x25B3, 0x25B2, 0x25CE, 0x2606, 0x2605, 0x25C7, 0x25C6,
+ 0x25A1, 0x25A0, 0x25BD, 0x25BC, 0x32A3, 0x2105, 0x203E, 0xFFE3, 0xFF3F,
+ 0x02CD, 0xFE49, 0xFE4A, 0xFE4D, 0xFE4E, 0xFE4B, 0xFE4C, 0xFE5F, 0xFE60,
+ 0xFE61, 0xFF0B, 0xFF0D, 0x00D7, 0x00F7, 0x00B1, 0x221A, 0xFF1C, 0xFF1E,
+ 0xFF1D, 0x2266, 0x2267, 0x2260, 0x221E, 0x2252, 0x2261, 0xFE62, 0xFE63,
+ 0xFE64, 0xFE65, 0xFE66, 0x223C, 0x2229, 0x222A, 0x22A5, 0x2220, 0x221F,
+ 0x22BF, 0x33D2, 0x33D1, 0x222B, 0x222E, 0x2235, 0x2234, 0x2640, 0x2642,
+ 0x2295, 0x2609, 0x2191, 0x2193, 0x2192, 0x2190, 0x2196, 0x2197, 0x2199,
+ 0x2198, 0x2225, 0x2223, 0xFF0F, 0xFF3C, 0xFF0F, 0xFF3C, 0xFF04, 0x00A5,
+ 0x3012, 0x00A2, 0x00A3, 0xFF05, 0xFF20, 0x2103, 0x2109, 0xFE69, 0xFE6A,
+ 0xFE6B, 0x33D5, 0x339C, 0x339D, 0x339E, 0x33CE, 0x33A1, 0x338E, 0x338F,
+ 0x33C4, 0x00B0, 0x5159, 0x515B, 0x515E, 0x515D, 0x5161, 0x5163, 0x55E7,
+ 0x74E9, 0x7CCE, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587,
+ 0x2588, 0x258F, 0x258E, 0x258D, 0x258C, 0x258B, 0x258A, 0x2589, 0x253C,
+ 0x2534, 0x252C, 0x2524, 0x251C, 0x2594, 0x2500, 0x2502, 0x2595, 0x250C,
+ 0x2510, 0x2514, 0x2518, 0x256D, 0x256E, 0x2570, 0x256F, 0x2550, 0x255E,
+ 0x256A, 0x2561, 0x25E2, 0x25E3, 0x25E5, 0x25E4, 0x2571, 0x2572, 0x2573,
+ 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18,
+ 0xFF19, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167,
+ 0x2168, 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027,
+ 0x3028, 0x3029, 0x3038, 0x5344, 0x303A, 0xFF21, 0xFF22, 0xFF23, 0xFF24,
+ 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D,
+ 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36,
+ 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45,
+ 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E,
+ 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57,
+ 0xFF58, 0xFF59, 0xFF5A, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396,
+ 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
+ 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9,
+ 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9,
+ 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3,
+ 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x3105, 0x3106, 0x3107,
+ 0x3108, 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E, 0x310F, 0x3110,
+ 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118, 0x3119,
+ 0x311A, 0x311B, 0x311C, 0x311D, 0x311E, 0x311F, 0x3120, 0x3121, 0x3122,
+ 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128, 0x3129, 0x02D9, 0x02CA,
+ 0x02C7, 0x02CB, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466,
+ 0x2467, 0x2468, 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479,
+ 0x247A, 0x247B, 0x247C, 0x247D, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174,
+ 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x4E28, 0x4E36, 0x4E3F, 0x4E85,
+ 0x4EA0, 0x5182, 0x5196, 0x51AB, 0x52F9, 0x5338, 0x5369, 0x53B6, 0x5902,
+ 0x5B80, 0x5DDB, 0x5E7A, 0x5E7F, 0x5EF4, 0x5F50, 0x5F61, 0x6534, 0x65E0,
+ 0x7592, 0x7676, 0x8FB5, 0x96B6, 0x2400, 0x2401, 0x2402, 0x2403, 0x2404,
+ 0x2405, 0x2406, 0x2407, 0x2408, 0x2409, 0x240A, 0x240B, 0x240C, 0x240D,
+ 0x240E, 0x240F, 0x2410, 0x2411, 0x2412, 0x2413, 0x2414, 0x2415, 0x2416,
+ 0x2417, 0x2418, 0x2419, 0x241A, 0x241B, 0x241C, 0x241D, 0x241E, 0x241F,
+ 0x2421, 0x4E00, 0x4E59, 0x4E01, 0x4E03, 0x4E43, 0x4E5D, 0x4E86, 0x4E8C,
+ 0x4EBA, 0x513F, 0x5165, 0x516B, 0x51E0, 0x5200, 0x5201, 0x529B, 0x5315,
+ 0x5341, 0x535C, 0x53C8, 0x4E09, 0x4E0B, 0x4E08, 0x4E0A, 0x4E2B, 0x4E38,
+ 0x51E1, 0x4E45, 0x4E48, 0x4E5F, 0x4E5E, 0x4E8E, 0x4EA1, 0x5140, 0x5203,
+ 0x52FA, 0x5343, 0x53C9, 0x53E3, 0x571F, 0x58EB, 0x5915, 0x5927, 0x5973,
+ 0x5B50, 0x5B51, 0x5B53, 0x5BF8, 0x5C0F, 0x5C22, 0x5C38, 0x5C71, 0x5DDD,
+ 0x5DE5, 0x5DF1, 0x5DF2, 0x5DF3, 0x5DFE, 0x5E72, 0x5EFE, 0x5F0B, 0x5F13,
+ 0x624D, 0x4E11, 0x4E10, 0x4E0D, 0x4E2D, 0x4E30, 0x4E39, 0x4E4B, 0x5C39,
+ 0x4E88, 0x4E91, 0x4E95, 0x4E92, 0x4E94, 0x4EA2, 0x4EC1, 0x4EC0, 0x4EC3,
+ 0x4EC6, 0x4EC7, 0x4ECD, 0x4ECA, 0x4ECB, 0x4EC4, 0x5143, 0x5141, 0x5167,
+ 0x516D, 0x516E, 0x516C, 0x5197, 0x51F6, 0x5206, 0x5207, 0x5208, 0x52FB,
+ 0x52FE, 0x52FF, 0x5316, 0x5339, 0x5348, 0x5347, 0x5345, 0x535E, 0x5384,
+ 0x53CB, 0x53CA, 0x53CD, 0x58EC, 0x5929, 0x592B, 0x592A, 0x592D, 0x5B54,
+ 0x5C11, 0x5C24, 0x5C3A, 0x5C6F, 0x5DF4, 0x5E7B, 0x5EFF, 0x5F14, 0x5F15,
+ 0x5FC3, 0x6208, 0x6236, 0x624B, 0x624E, 0x652F, 0x6587, 0x6597, 0x65A4,
+ 0x65B9, 0x65E5, 0x66F0, 0x6708, 0x6728, 0x6B20, 0x6B62, 0x6B79, 0x6BCB,
+ 0x6BD4, 0x6BDB, 0x6C0F, 0x6C34, 0x706B, 0x722A, 0x7236, 0x723B, 0x7247,
+ 0x7259, 0x725B, 0x72AC, 0x738B, 0x4E19, 0x4E16, 0x4E15, 0x4E14, 0x4E18,
+ 0x4E3B, 0x4E4D, 0x4E4F, 0x4E4E, 0x4EE5, 0x4ED8, 0x4ED4, 0x4ED5, 0x4ED6,
+ 0x4ED7, 0x4EE3, 0x4EE4, 0x4ED9, 0x4EDE, 0x5145, 0x5144, 0x5189, 0x518A,
+ 0x51AC, 0x51F9, 0x51FA, 0x51F8, 0x520A, 0x52A0, 0x529F, 0x5305, 0x5306,
+ 0x5317, 0x531D, 0x4EDF, 0x534A, 0x5349, 0x5361, 0x5360, 0x536F, 0x536E,
+ 0x53BB, 0x53EF, 0x53E4, 0x53F3, 0x53EC, 0x53EE, 0x53E9, 0x53E8, 0x53FC,
+ 0x53F8, 0x53F5, 0x53EB, 0x53E6, 0x53EA, 0x53F2, 0x53F1, 0x53F0, 0x53E5,
+ 0x53ED, 0x53FB, 0x56DB, 0x56DA, 0x5916, 0x592E, 0x5931, 0x5974, 0x5976,
+ 0x5B55, 0x5B83, 0x5C3C, 0x5DE8, 0x5DE7, 0x5DE6, 0x5E02, 0x5E03, 0x5E73,
+ 0x5E7C, 0x5F01, 0x5F18, 0x5F17, 0x5FC5, 0x620A, 0x6253, 0x6254, 0x6252,
+ 0x6251, 0x65A5, 0x65E6, 0x672E, 0x672C, 0x672A, 0x672B, 0x672D, 0x6B63,
+ 0x6BCD, 0x6C11, 0x6C10, 0x6C38, 0x6C41, 0x6C40, 0x6C3E, 0x72AF, 0x7384,
+ 0x7389, 0x74DC, 0x74E6, 0x7518, 0x751F, 0x7528, 0x7529, 0x7530, 0x7531,
+ 0x7532, 0x7533, 0x758B, 0x767D, 0x76AE, 0x76BF, 0x76EE, 0x77DB, 0x77E2,
+ 0x77F3, 0x793A, 0x79BE, 0x7A74, 0x7ACB, 0x4E1E, 0x4E1F, 0x4E52, 0x4E53,
+ 0x4E69, 0x4E99, 0x4EA4, 0x4EA6, 0x4EA5, 0x4EFF, 0x4F09, 0x4F19, 0x4F0A,
+ 0x4F15, 0x4F0D, 0x4F10, 0x4F11, 0x4F0F, 0x4EF2, 0x4EF6, 0x4EFB, 0x4EF0,
+ 0x4EF3, 0x4EFD, 0x4F01, 0x4F0B, 0x5149, 0x5147, 0x5146, 0x5148, 0x5168,
+ 0x5171, 0x518D, 0x51B0, 0x5217, 0x5211, 0x5212, 0x520E, 0x5216, 0x52A3,
+ 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540F, 0x540C, 0x540A,
+ 0x5410, 0x5401, 0x540B, 0x5404, 0x5411, 0x540D, 0x5408, 0x5403, 0x540E,
+ 0x5406, 0x5412, 0x56E0, 0x56DE, 0x56DD, 0x5733, 0x5730, 0x5728, 0x572D,
+ 0x572C, 0x572F, 0x5729, 0x5919, 0x591A, 0x5937, 0x5938, 0x5984, 0x5978,
+ 0x5983, 0x597D, 0x5979, 0x5982, 0x5981, 0x5B57, 0x5B58, 0x5B87, 0x5B88,
+ 0x5B85, 0x5B89, 0x5BFA, 0x5C16, 0x5C79, 0x5DDE, 0x5E06, 0x5E76, 0x5E74,
+ 0x5F0F, 0x5F1B, 0x5FD9, 0x5FD6, 0x620E, 0x620C, 0x620D, 0x6210, 0x6263,
+ 0x625B, 0x6258, 0x6536, 0x65E9, 0x65E8, 0x65EC, 0x65ED, 0x66F2, 0x66F3,
+ 0x6709, 0x673D, 0x6734, 0x6731, 0x6735, 0x6B21, 0x6B64, 0x6B7B, 0x6C16,
+ 0x6C5D, 0x6C57, 0x6C59, 0x6C5F, 0x6C60, 0x6C50, 0x6C55, 0x6C61, 0x6C5B,
+ 0x6C4D, 0x6C4E, 0x7070, 0x725F, 0x725D, 0x767E, 0x7AF9, 0x7C73, 0x7CF8,
+ 0x7F36, 0x7F8A, 0x7FBD, 0x8001, 0x8003, 0x800C, 0x8012, 0x8033, 0x807F,
+ 0x8089, 0x808B, 0x808C, 0x81E3, 0x81EA, 0x81F3, 0x81FC, 0x820C, 0x821B,
+ 0x821F, 0x826E, 0x8272, 0x827E, 0x866B, 0x8840, 0x884C, 0x8863, 0x897F,
+ 0x9621, 0x4E32, 0x4EA8, 0x4F4D, 0x4F4F, 0x4F47, 0x4F57, 0x4F5E, 0x4F34,
+ 0x4F5B, 0x4F55, 0x4F30, 0x4F50, 0x4F51, 0x4F3D, 0x4F3A, 0x4F38, 0x4F43,
+ 0x4F54, 0x4F3C, 0x4F46, 0x4F63, 0x4F5C, 0x4F60, 0x4F2F, 0x4F4E, 0x4F36,
+ 0x4F59, 0x4F5D, 0x4F48, 0x4F5A, 0x514C, 0x514B, 0x514D, 0x5175, 0x51B6,
+ 0x51B7, 0x5225, 0x5224, 0x5229, 0x522A, 0x5228, 0x52AB, 0x52A9, 0x52AA,
+ 0x52AC, 0x5323, 0x5373, 0x5375, 0x541D, 0x542D, 0x541E, 0x543E, 0x5426,
+ 0x544E, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541B, 0x5429,
+ 0x544A, 0x5439, 0x543B, 0x5438, 0x542E, 0x5435, 0x5436, 0x5420, 0x543C,
+ 0x5440, 0x5431, 0x542B, 0x541F, 0x542C, 0x56EA, 0x56F0, 0x56E4, 0x56EB,
+ 0x574A, 0x5751, 0x5740, 0x574D, 0x5747, 0x574E, 0x573E, 0x5750, 0x574F,
+ 0x573B, 0x58EF, 0x593E, 0x599D, 0x5992, 0x59A8, 0x599E, 0x59A3, 0x5999,
+ 0x5996, 0x598D, 0x59A4, 0x5993, 0x598A, 0x59A5, 0x5B5D, 0x5B5C, 0x5B5A,
+ 0x5B5B, 0x5B8C, 0x5B8B, 0x5B8F, 0x5C2C, 0x5C40, 0x5C41, 0x5C3F, 0x5C3E,
+ 0x5C90, 0x5C91, 0x5C94, 0x5C8C, 0x5DEB, 0x5E0C, 0x5E8F, 0x5E87, 0x5E8A,
+ 0x5EF7, 0x5F04, 0x5F1F, 0x5F64, 0x5F62, 0x5F77, 0x5F79, 0x5FD8, 0x5FCC,
+ 0x5FD7, 0x5FCD, 0x5FF1, 0x5FEB, 0x5FF8, 0x5FEA, 0x6212, 0x6211, 0x6284,
+ 0x6297, 0x6296, 0x6280, 0x6276, 0x6289, 0x626D, 0x628A, 0x627C, 0x627E,
+ 0x6279, 0x6273, 0x6292, 0x626F, 0x6298, 0x626E, 0x6295, 0x6293, 0x6291,
+ 0x6286, 0x6539, 0x653B, 0x6538, 0x65F1, 0x66F4, 0x675F, 0x674E, 0x674F,
+ 0x6750, 0x6751, 0x675C, 0x6756, 0x675E, 0x6749, 0x6746, 0x6760, 0x6753,
+ 0x6757, 0x6B65, 0x6BCF, 0x6C42, 0x6C5E, 0x6C99, 0x6C81, 0x6C88, 0x6C89,
+ 0x6C85, 0x6C9B, 0x6C6A, 0x6C7A, 0x6C90, 0x6C70, 0x6C8C, 0x6C68, 0x6C96,
+ 0x6C92, 0x6C7D, 0x6C83, 0x6C72, 0x6C7E, 0x6C74, 0x6C86, 0x6C76, 0x6C8D,
+ 0x6C94, 0x6C98, 0x6C82, 0x7076, 0x707C, 0x707D, 0x7078, 0x7262, 0x7261,
+ 0x7260, 0x72C4, 0x72C2, 0x7396, 0x752C, 0x752B, 0x7537, 0x7538, 0x7682,
+ 0x76EF, 0x77E3, 0x79C1, 0x79C0, 0x79BF, 0x7A76, 0x7CFB, 0x7F55, 0x8096,
+ 0x8093, 0x809D, 0x8098, 0x809B, 0x809A, 0x80B2, 0x826F, 0x8292, 0x828B,
+ 0x828D, 0x898B, 0x89D2, 0x8A00, 0x8C37, 0x8C46, 0x8C55, 0x8C9D, 0x8D64,
+ 0x8D70, 0x8DB3, 0x8EAB, 0x8ECA, 0x8F9B, 0x8FB0, 0x8FC2, 0x8FC6, 0x8FC5,
+ 0x8FC4, 0x5DE1, 0x9091, 0x90A2, 0x90AA, 0x90A6, 0x90A3, 0x9149, 0x91C6,
+ 0x91CC, 0x9632, 0x962E, 0x9631, 0x962A, 0x962C, 0x4E26, 0x4E56, 0x4E73,
+ 0x4E8B, 0x4E9B, 0x4E9E, 0x4EAB, 0x4EAC, 0x4F6F, 0x4F9D, 0x4F8D, 0x4F73,
+ 0x4F7F, 0x4F6C, 0x4F9B, 0x4F8B, 0x4F86, 0x4F83, 0x4F70, 0x4F75, 0x4F88,
+ 0x4F69, 0x4F7B, 0x4F96, 0x4F7E, 0x4F8F, 0x4F91, 0x4F7A, 0x5154, 0x5152,
+ 0x5155, 0x5169, 0x5177, 0x5176, 0x5178, 0x51BD, 0x51FD, 0x523B, 0x5238,
+ 0x5237, 0x523A, 0x5230, 0x522E, 0x5236, 0x5241, 0x52BE, 0x52BB, 0x5352,
+ 0x5354, 0x5353, 0x5351, 0x5366, 0x5377, 0x5378, 0x5379, 0x53D6, 0x53D4,
+ 0x53D7, 0x5473, 0x5475, 0x5496, 0x5478, 0x5495, 0x5480, 0x547B, 0x5477,
+ 0x5484, 0x5492, 0x5486, 0x547C, 0x5490, 0x5471, 0x5476, 0x548C, 0x549A,
+ 0x5462, 0x5468, 0x548B, 0x547D, 0x548E, 0x56FA, 0x5783, 0x5777, 0x576A,
+ 0x5769, 0x5761, 0x5766, 0x5764, 0x577C, 0x591C, 0x5949, 0x5947, 0x5948,
+ 0x5944, 0x5954, 0x59BE, 0x59BB, 0x59D4, 0x59B9, 0x59AE, 0x59D1, 0x59C6,
+ 0x59D0, 0x59CD, 0x59CB, 0x59D3, 0x59CA, 0x59AF, 0x59B3, 0x59D2, 0x59C5,
+ 0x5B5F, 0x5B64, 0x5B63, 0x5B97, 0x5B9A, 0x5B98, 0x5B9C, 0x5B99, 0x5B9B,
+ 0x5C1A, 0x5C48, 0x5C45, 0x5C46, 0x5CB7, 0x5CA1, 0x5CB8, 0x5CA9, 0x5CAB,
+ 0x5CB1, 0x5CB3, 0x5E18, 0x5E1A, 0x5E16, 0x5E15, 0x5E1B, 0x5E11, 0x5E78,
+ 0x5E9A, 0x5E97, 0x5E9C, 0x5E95, 0x5E96, 0x5EF6, 0x5F26, 0x5F27, 0x5F29,
+ 0x5F80, 0x5F81, 0x5F7F, 0x5F7C, 0x5FDD, 0x5FE0, 0x5FFD, 0x5FF5, 0x5FFF,
+ 0x600F, 0x6014, 0x602F, 0x6035, 0x6016, 0x602A, 0x6015, 0x6021, 0x6027,
+ 0x6029, 0x602B, 0x601B, 0x6216, 0x6215, 0x623F, 0x623E, 0x6240, 0x627F,
+ 0x62C9, 0x62CC, 0x62C4, 0x62BF, 0x62C2, 0x62B9, 0x62D2, 0x62DB, 0x62AB,
+ 0x62D3, 0x62D4, 0x62CB, 0x62C8, 0x62A8, 0x62BD, 0x62BC, 0x62D0, 0x62D9,
+ 0x62C7, 0x62CD, 0x62B5, 0x62DA, 0x62B1, 0x62D8, 0x62D6, 0x62D7, 0x62C6,
+ 0x62AC, 0x62CE, 0x653E, 0x65A7, 0x65BC, 0x65FA, 0x6614, 0x6613, 0x660C,
+ 0x6606, 0x6602, 0x660E, 0x6600, 0x660F, 0x6615, 0x660A, 0x6607, 0x670D,
+ 0x670B, 0x676D, 0x678B, 0x6795, 0x6771, 0x679C, 0x6773, 0x6777, 0x6787,
+ 0x679D, 0x6797, 0x676F, 0x6770, 0x677F, 0x6789, 0x677E, 0x6790, 0x6775,
+ 0x679A, 0x6793, 0x677C, 0x676A, 0x6772, 0x6B23, 0x6B66, 0x6B67, 0x6B7F,
+ 0x6C13, 0x6C1B, 0x6CE3, 0x6CE8, 0x6CF3, 0x6CB1, 0x6CCC, 0x6CE5, 0x6CB3,
+ 0x6CBD, 0x6CBE, 0x6CBC, 0x6CE2, 0x6CAB, 0x6CD5, 0x6CD3, 0x6CB8, 0x6CC4,
+ 0x6CB9, 0x6CC1, 0x6CAE, 0x6CD7, 0x6CC5, 0x6CF1, 0x6CBF, 0x6CBB, 0x6CE1,
+ 0x6CDB, 0x6CCA, 0x6CAC, 0x6CEF, 0x6CDC, 0x6CD6, 0x6CE0, 0x7095, 0x708E,
+ 0x7092, 0x708A, 0x7099, 0x722C, 0x722D, 0x7238, 0x7248, 0x7267, 0x7269,
+ 0x72C0, 0x72CE, 0x72D9, 0x72D7, 0x72D0, 0x73A9, 0x73A8, 0x739F, 0x73AB,
+ 0x73A5, 0x753D, 0x759D, 0x7599, 0x759A, 0x7684, 0x76C2, 0x76F2, 0x76F4,
+ 0x77E5, 0x77FD, 0x793E, 0x7940, 0x7941, 0x79C9, 0x79C8, 0x7A7A, 0x7A79,
+ 0x7AFA, 0x7CFE, 0x7F54, 0x7F8C, 0x7F8B, 0x8005, 0x80BA, 0x80A5, 0x80A2,
+ 0x80B1, 0x80A1, 0x80AB, 0x80A9, 0x80B4, 0x80AA, 0x80AF, 0x81E5, 0x81FE,
+ 0x820D, 0x82B3, 0x829D, 0x8299, 0x82AD, 0x82BD, 0x829F, 0x82B9, 0x82B1,
+ 0x82AC, 0x82A5, 0x82AF, 0x82B8, 0x82A3, 0x82B0, 0x82BE, 0x82B7, 0x864E,
+ 0x8671, 0x521D, 0x8868, 0x8ECB, 0x8FCE, 0x8FD4, 0x8FD1, 0x90B5, 0x90B8,
+ 0x90B1, 0x90B6, 0x91C7, 0x91D1, 0x9577, 0x9580, 0x961C, 0x9640, 0x963F,
+ 0x963B, 0x9644, 0x9642, 0x96B9, 0x96E8, 0x9752, 0x975E, 0x4E9F, 0x4EAD,
+ 0x4EAE, 0x4FE1, 0x4FB5, 0x4FAF, 0x4FBF, 0x4FE0, 0x4FD1, 0x4FCF, 0x4FDD,
+ 0x4FC3, 0x4FB6, 0x4FD8, 0x4FDF, 0x4FCA, 0x4FD7, 0x4FAE, 0x4FD0, 0x4FC4,
+ 0x4FC2, 0x4FDA, 0x4FCE, 0x4FDE, 0x4FB7, 0x5157, 0x5192, 0x5191, 0x51A0,
+ 0x524E, 0x5243, 0x524A, 0x524D, 0x524C, 0x524B, 0x5247, 0x52C7, 0x52C9,
+ 0x52C3, 0x52C1, 0x530D, 0x5357, 0x537B, 0x539A, 0x53DB, 0x54AC, 0x54C0,
+ 0x54A8, 0x54CE, 0x54C9, 0x54B8, 0x54A6, 0x54B3, 0x54C7, 0x54C2, 0x54BD,
+ 0x54AA, 0x54C1, 0x54C4, 0x54C8, 0x54AF, 0x54AB, 0x54B1, 0x54BB, 0x54A9,
+ 0x54A7, 0x54BF, 0x56FF, 0x5782, 0x578B, 0x57A0, 0x57A3, 0x57A2, 0x57CE,
+ 0x57AE, 0x5793, 0x5955, 0x5951, 0x594F, 0x594E, 0x5950, 0x59DC, 0x59D8,
+ 0x59FF, 0x59E3, 0x59E8, 0x5A03, 0x59E5, 0x59EA, 0x59DA, 0x59E6, 0x5A01,
+ 0x59FB, 0x5B69, 0x5BA3, 0x5BA6, 0x5BA4, 0x5BA2, 0x5BA5, 0x5C01, 0x5C4E,
+ 0x5C4F, 0x5C4D, 0x5C4B, 0x5CD9, 0x5CD2, 0x5DF7, 0x5E1D, 0x5E25, 0x5E1F,
+ 0x5E7D, 0x5EA0, 0x5EA6, 0x5EFA, 0x5F08, 0x5F2D, 0x5F65, 0x5F88, 0x5F85,
+ 0x5F8A, 0x5F8B, 0x5F87, 0x5F8C, 0x5F89, 0x6012, 0x601D, 0x6020, 0x6025,
+ 0x600E, 0x6028, 0x604D, 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606C,
+ 0x606B, 0x606A, 0x6064, 0x6241, 0x62DC, 0x6316, 0x6309, 0x62FC, 0x62ED,
+ 0x6301, 0x62EE, 0x62FD, 0x6307, 0x62F1, 0x62F7, 0x62EF, 0x62EC, 0x62FE,
+ 0x62F4, 0x6311, 0x6302, 0x653F, 0x6545, 0x65AB, 0x65BD, 0x65E2, 0x6625,
+ 0x662D, 0x6620, 0x6627, 0x662F, 0x661F, 0x6628, 0x6631, 0x6624, 0x66F7,
+ 0x67FF, 0x67D3, 0x67F1, 0x67D4, 0x67D0, 0x67EC, 0x67B6, 0x67AF, 0x67F5,
+ 0x67E9, 0x67EF, 0x67C4, 0x67D1, 0x67B4, 0x67DA, 0x67E5, 0x67B8, 0x67CF,
+ 0x67DE, 0x67F3, 0x67B0, 0x67D9, 0x67E2, 0x67DD, 0x67D2, 0x6B6A, 0x6B83,
+ 0x6B86, 0x6BB5, 0x6BD2, 0x6BD7, 0x6C1F, 0x6CC9, 0x6D0B, 0x6D32, 0x6D2A,
+ 0x6D41, 0x6D25, 0x6D0C, 0x6D31, 0x6D1E, 0x6D17, 0x6D3B, 0x6D3D, 0x6D3E,
+ 0x6D36, 0x6D1B, 0x6CF5, 0x6D39, 0x6D27, 0x6D38, 0x6D29, 0x6D2E, 0x6D35,
+ 0x6D0E, 0x6D2B, 0x70AB, 0x70BA, 0x70B3, 0x70AC, 0x70AF, 0x70AD, 0x70B8,
+ 0x70AE, 0x70A4, 0x7230, 0x7272, 0x726F, 0x7274, 0x72E9, 0x72E0, 0x72E1,
+ 0x73B7, 0x73CA, 0x73BB, 0x73B2, 0x73CD, 0x73C0, 0x73B3, 0x751A, 0x752D,
+ 0x754F, 0x754C, 0x754E, 0x754B, 0x75AB, 0x75A4, 0x75A5, 0x75A2, 0x75A3,
+ 0x7678, 0x7686, 0x7687, 0x7688, 0x76C8, 0x76C6, 0x76C3, 0x76C5, 0x7701,
+ 0x76F9, 0x76F8, 0x7709, 0x770B, 0x76FE, 0x76FC, 0x7707, 0x77DC, 0x7802,
+ 0x7814, 0x780C, 0x780D, 0x7946, 0x7949, 0x7948, 0x7947, 0x79B9, 0x79BA,
+ 0x79D1, 0x79D2, 0x79CB, 0x7A7F, 0x7A81, 0x7AFF, 0x7AFD, 0x7C7D, 0x7D02,
+ 0x7D05, 0x7D00, 0x7D09, 0x7D07, 0x7D04, 0x7D06, 0x7F38, 0x7F8E, 0x7FBF,
+ 0x8010, 0x800D, 0x8011, 0x8036, 0x80D6, 0x80E5, 0x80DA, 0x80C3, 0x80C4,
+ 0x80CC, 0x80E1, 0x80DB, 0x80CE, 0x80DE, 0x80E4, 0x80DD, 0x81F4, 0x8222,
+ 0x82E7, 0x8303, 0x8305, 0x82E3, 0x82DB, 0x82E6, 0x8304, 0x82E5, 0x8302,
+ 0x8309, 0x82D2, 0x82D7, 0x82F1, 0x8301, 0x82DC, 0x82D4, 0x82D1, 0x82DE,
+ 0x82D3, 0x82DF, 0x82EF, 0x8306, 0x8650, 0x8679, 0x867B, 0x867A, 0x884D,
+ 0x886B, 0x8981, 0x89D4, 0x8A08, 0x8A02, 0x8A03, 0x8C9E, 0x8CA0, 0x8D74,
+ 0x8D73, 0x8DB4, 0x8ECD, 0x8ECC, 0x8FF0, 0x8FE6, 0x8FE2, 0x8FEA, 0x8FE5,
+ 0x8FED, 0x8FEB, 0x8FE4, 0x8FE8, 0x90CA, 0x90CE, 0x90C1, 0x90C3, 0x914B,
+ 0x914A, 0x91CD, 0x9582, 0x9650, 0x964B, 0x964C, 0x964D, 0x9762, 0x9769,
+ 0x97CB, 0x97ED, 0x97F3, 0x9801, 0x98A8, 0x98DB, 0x98DF, 0x9996, 0x9999,
+ 0x4E58, 0x4EB3, 0x500C, 0x500D, 0x5023, 0x4FEF, 0x5026, 0x5025, 0x4FF8,
+ 0x5029, 0x5016, 0x5006, 0x503C, 0x501F, 0x501A, 0x5012, 0x5011, 0x4FFA,
+ 0x5000, 0x5014, 0x5028, 0x4FF1, 0x5021, 0x500B, 0x5019, 0x5018, 0x4FF3,
+ 0x4FEE, 0x502D, 0x502A, 0x4FFE, 0x502B, 0x5009, 0x517C, 0x51A4, 0x51A5,
+ 0x51A2, 0x51CD, 0x51CC, 0x51C6, 0x51CB, 0x5256, 0x525C, 0x5254, 0x525B,
+ 0x525D, 0x532A, 0x537F, 0x539F, 0x539D, 0x53DF, 0x54E8, 0x5510, 0x5501,
+ 0x5537, 0x54FC, 0x54E5, 0x54F2, 0x5506, 0x54FA, 0x5514, 0x54E9, 0x54ED,
+ 0x54E1, 0x5509, 0x54EE, 0x54EA, 0x54E6, 0x5527, 0x5507, 0x54FD, 0x550F,
+ 0x5703, 0x5704, 0x57C2, 0x57D4, 0x57CB, 0x57C3, 0x5809, 0x590F, 0x5957,
+ 0x5958, 0x595A, 0x5A11, 0x5A18, 0x5A1C, 0x5A1F, 0x5A1B, 0x5A13, 0x59EC,
+ 0x5A20, 0x5A23, 0x5A29, 0x5A25, 0x5A0C, 0x5A09, 0x5B6B, 0x5C58, 0x5BB0,
+ 0x5BB3, 0x5BB6, 0x5BB4, 0x5BAE, 0x5BB5, 0x5BB9, 0x5BB8, 0x5C04, 0x5C51,
+ 0x5C55, 0x5C50, 0x5CED, 0x5CFD, 0x5CFB, 0x5CEA, 0x5CE8, 0x5CF0, 0x5CF6,
+ 0x5D01, 0x5CF4, 0x5DEE, 0x5E2D, 0x5E2B, 0x5EAB, 0x5EAD, 0x5EA7, 0x5F31,
+ 0x5F92, 0x5F91, 0x5F90, 0x6059, 0x6063, 0x6065, 0x6050, 0x6055, 0x606D,
+ 0x6069, 0x606F, 0x6084, 0x609F, 0x609A, 0x608D, 0x6094, 0x608C, 0x6085,
+ 0x6096, 0x6247, 0x62F3, 0x6308, 0x62FF, 0x634E, 0x633E, 0x632F, 0x6355,
+ 0x6342, 0x6346, 0x634F, 0x6349, 0x633A, 0x6350, 0x633D, 0x632A, 0x632B,
+ 0x6328, 0x634D, 0x634C, 0x6548, 0x6549, 0x6599, 0x65C1, 0x65C5, 0x6642,
+ 0x6649, 0x664F, 0x6643, 0x6652, 0x664C, 0x6645, 0x6641, 0x66F8, 0x6714,
+ 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846, 0x6853, 0x6839, 0x6842,
+ 0x6854, 0x6829, 0x68B3, 0x6817, 0x684C, 0x6851, 0x683D, 0x67F4, 0x6850,
+ 0x6840, 0x683C, 0x6843, 0x682A, 0x6845, 0x6813, 0x6818, 0x6841, 0x6B8A,
+ 0x6B89, 0x6BB7, 0x6C23, 0x6C27, 0x6C28, 0x6C26, 0x6C24, 0x6CF0, 0x6D6A,
+ 0x6D95, 0x6D88, 0x6D87, 0x6D66, 0x6D78, 0x6D77, 0x6D59, 0x6D93, 0x6D6C,
+ 0x6D89, 0x6D6E, 0x6D5A, 0x6D74, 0x6D69, 0x6D8C, 0x6D8A, 0x6D79, 0x6D85,
+ 0x6D65, 0x6D94, 0x70CA, 0x70D8, 0x70E4, 0x70D9, 0x70C8, 0x70CF, 0x7239,
+ 0x7279, 0x72FC, 0x72F9, 0x72FD, 0x72F8, 0x72F7, 0x7386, 0x73ED, 0x7409,
+ 0x73EE, 0x73E0, 0x73EA, 0x73DE, 0x7554, 0x755D, 0x755C, 0x755A, 0x7559,
+ 0x75BE, 0x75C5, 0x75C7, 0x75B2, 0x75B3, 0x75BD, 0x75BC, 0x75B9, 0x75C2,
+ 0x75B8, 0x768B, 0x76B0, 0x76CA, 0x76CD, 0x76CE, 0x7729, 0x771F, 0x7720,
+ 0x7728, 0x77E9, 0x7830, 0x7827, 0x7838, 0x781D, 0x7834, 0x7837, 0x7825,
+ 0x782D, 0x7820, 0x781F, 0x7832, 0x7955, 0x7950, 0x7960, 0x795F, 0x7956,
+ 0x795E, 0x795D, 0x7957, 0x795A, 0x79E4, 0x79E3, 0x79E7, 0x79DF, 0x79E6,
+ 0x79E9, 0x79D8, 0x7A84, 0x7A88, 0x7AD9, 0x7B06, 0x7B11, 0x7C89, 0x7D21,
+ 0x7D17, 0x7D0B, 0x7D0A, 0x7D20, 0x7D22, 0x7D14, 0x7D10, 0x7D15, 0x7D1A,
+ 0x7D1C, 0x7D0D, 0x7D19, 0x7D1B, 0x7F3A, 0x7F5F, 0x7F94, 0x7FC5, 0x7FC1,
+ 0x8006, 0x8004, 0x8018, 0x8015, 0x8019, 0x8017, 0x803D, 0x803F, 0x80F1,
+ 0x8102, 0x80F0, 0x8105, 0x80ED, 0x80F4, 0x8106, 0x80F8, 0x80F3, 0x8108,
+ 0x80FD, 0x810A, 0x80FC, 0x80EF, 0x81ED, 0x81EC, 0x8200, 0x8210, 0x822A,
+ 0x822B, 0x8228, 0x822C, 0x82BB, 0x832B, 0x8352, 0x8354, 0x834A, 0x8338,
+ 0x8350, 0x8349, 0x8335, 0x8334, 0x834F, 0x8332, 0x8339, 0x8336, 0x8317,
+ 0x8340, 0x8331, 0x8328, 0x8343, 0x8654, 0x868A, 0x86AA, 0x8693, 0x86A4,
+ 0x86A9, 0x868C, 0x86A3, 0x869C, 0x8870, 0x8877, 0x8881, 0x8882, 0x887D,
+ 0x8879, 0x8A18, 0x8A10, 0x8A0E, 0x8A0C, 0x8A15, 0x8A0A, 0x8A17, 0x8A13,
+ 0x8A16, 0x8A0F, 0x8A11, 0x8C48, 0x8C7A, 0x8C79, 0x8CA1, 0x8CA2, 0x8D77,
+ 0x8EAC, 0x8ED2, 0x8ED4, 0x8ECF, 0x8FB1, 0x9001, 0x9006, 0x8FF7, 0x9000,
+ 0x8FFA, 0x8FF4, 0x9003, 0x8FFD, 0x9005, 0x8FF8, 0x9095, 0x90E1, 0x90DD,
+ 0x90E2, 0x9152, 0x914D, 0x914C, 0x91D8, 0x91DD, 0x91D7, 0x91DC, 0x91D9,
+ 0x9583, 0x9662, 0x9663, 0x9661, 0x965B, 0x965D, 0x9664, 0x9658, 0x965E,
+ 0x96BB, 0x98E2, 0x99AC, 0x9AA8, 0x9AD8, 0x9B25, 0x9B32, 0x9B3C, 0x4E7E,
+ 0x507A, 0x507D, 0x505C, 0x5047, 0x5043, 0x504C, 0x505A, 0x5049, 0x5065,
+ 0x5076, 0x504E, 0x5055, 0x5075, 0x5074, 0x5077, 0x504F, 0x500F, 0x506F,
+ 0x506D, 0x515C, 0x5195, 0x51F0, 0x526A, 0x526F, 0x52D2, 0x52D9, 0x52D8,
+ 0x52D5, 0x5310, 0x530F, 0x5319, 0x533F, 0x5340, 0x533E, 0x53C3, 0x66FC,
+ 0x5546, 0x556A, 0x5566, 0x5544, 0x555E, 0x5561, 0x5543, 0x554A, 0x5531,
+ 0x5556, 0x554F, 0x5555, 0x552F, 0x5564, 0x5538, 0x552E, 0x555C, 0x552C,
+ 0x5563, 0x5533, 0x5541, 0x5557, 0x5708, 0x570B, 0x5709, 0x57DF, 0x5805,
+ 0x580A, 0x5806, 0x57E0, 0x57E4, 0x57FA, 0x5802, 0x5835, 0x57F7, 0x57F9,
+ 0x5920, 0x5962, 0x5A36, 0x5A41, 0x5A49, 0x5A66, 0x5A6A, 0x5A40, 0x5A3C,
+ 0x5A62, 0x5A5A, 0x5A46, 0x5A4A, 0x5B70, 0x5BC7, 0x5BC5, 0x5BC4, 0x5BC2,
+ 0x5BBF, 0x5BC6, 0x5C09, 0x5C08, 0x5C07, 0x5C60, 0x5C5C, 0x5C5D, 0x5D07,
+ 0x5D06, 0x5D0E, 0x5D1B, 0x5D16, 0x5D22, 0x5D11, 0x5D29, 0x5D14, 0x5D19,
+ 0x5D24, 0x5D27, 0x5D17, 0x5DE2, 0x5E38, 0x5E36, 0x5E33, 0x5E37, 0x5EB7,
+ 0x5EB8, 0x5EB6, 0x5EB5, 0x5EBE, 0x5F35, 0x5F37, 0x5F57, 0x5F6C, 0x5F69,
+ 0x5F6B, 0x5F97, 0x5F99, 0x5F9E, 0x5F98, 0x5FA1, 0x5FA0, 0x5F9C, 0x607F,
+ 0x60A3, 0x6089, 0x60A0, 0x60A8, 0x60CB, 0x60B4, 0x60E6, 0x60BD, 0x60C5,
+ 0x60BB, 0x60B5, 0x60DC, 0x60BC, 0x60D8, 0x60D5, 0x60C6, 0x60DF, 0x60B8,
+ 0x60DA, 0x60C7, 0x621A, 0x621B, 0x6248, 0x63A0, 0x63A7, 0x6372, 0x6396,
+ 0x63A2, 0x63A5, 0x6377, 0x6367, 0x6398, 0x63AA, 0x6371, 0x63A9, 0x6389,
+ 0x6383, 0x639B, 0x636B, 0x63A8, 0x6384, 0x6388, 0x6399, 0x63A1, 0x63AC,
+ 0x6392, 0x638F, 0x6380, 0x637B, 0x6369, 0x6368, 0x637A, 0x655D, 0x6556,
+ 0x6551, 0x6559, 0x6557, 0x555F, 0x654F, 0x6558, 0x6555, 0x6554, 0x659C,
+ 0x659B, 0x65AC, 0x65CF, 0x65CB, 0x65CC, 0x65CE, 0x665D, 0x665A, 0x6664,
+ 0x6668, 0x6666, 0x665E, 0x66F9, 0x52D7, 0x671B, 0x6881, 0x68AF, 0x68A2,
+ 0x6893, 0x68B5, 0x687F, 0x6876, 0x68B1, 0x68A7, 0x6897, 0x68B0, 0x6883,
+ 0x68C4, 0x68AD, 0x6886, 0x6885, 0x6894, 0x689D, 0x68A8, 0x689F, 0x68A1,
+ 0x6882, 0x6B32, 0x6BBA, 0x6BEB, 0x6BEC, 0x6C2B, 0x6D8E, 0x6DBC, 0x6DF3,
+ 0x6DD9, 0x6DB2, 0x6DE1, 0x6DCC, 0x6DE4, 0x6DFB, 0x6DFA, 0x6E05, 0x6DC7,
+ 0x6DCB, 0x6DAF, 0x6DD1, 0x6DAE, 0x6DDE, 0x6DF9, 0x6DB8, 0x6DF7, 0x6DF5,
+ 0x6DC5, 0x6DD2, 0x6E1A, 0x6DB5, 0x6DDA, 0x6DEB, 0x6DD8, 0x6DEA, 0x6DF1,
+ 0x6DEE, 0x6DE8, 0x6DC6, 0x6DC4, 0x6DAA, 0x6DEC, 0x6DBF, 0x6DE6, 0x70F9,
+ 0x7109, 0x710A, 0x70FD, 0x70EF, 0x723D, 0x727D, 0x7281, 0x731C, 0x731B,
+ 0x7316, 0x7313, 0x7319, 0x7387, 0x7405, 0x740A, 0x7403, 0x7406, 0x73FE,
+ 0x740D, 0x74E0, 0x74F6, 0x74F7, 0x751C, 0x7522, 0x7565, 0x7566, 0x7562,
+ 0x7570, 0x758F, 0x75D4, 0x75D5, 0x75B5, 0x75CA, 0x75CD, 0x768E, 0x76D4,
+ 0x76D2, 0x76DB, 0x7737, 0x773E, 0x773C, 0x7736, 0x7738, 0x773A, 0x786B,
+ 0x7843, 0x784E, 0x7965, 0x7968, 0x796D, 0x79FB, 0x7A92, 0x7A95, 0x7B20,
+ 0x7B28, 0x7B1B, 0x7B2C, 0x7B26, 0x7B19, 0x7B1E, 0x7B2E, 0x7C92, 0x7C97,
+ 0x7C95, 0x7D46, 0x7D43, 0x7D71, 0x7D2E, 0x7D39, 0x7D3C, 0x7D40, 0x7D30,
+ 0x7D33, 0x7D44, 0x7D2F, 0x7D42, 0x7D32, 0x7D31, 0x7F3D, 0x7F9E, 0x7F9A,
+ 0x7FCC, 0x7FCE, 0x7FD2, 0x801C, 0x804A, 0x8046, 0x812F, 0x8116, 0x8123,
+ 0x812B, 0x8129, 0x8130, 0x8124, 0x8202, 0x8235, 0x8237, 0x8236, 0x8239,
+ 0x838E, 0x839E, 0x8398, 0x8378, 0x83A2, 0x8396, 0x83BD, 0x83AB, 0x8392,
+ 0x838A, 0x8393, 0x8389, 0x83A0, 0x8377, 0x837B, 0x837C, 0x8386, 0x83A7,
+ 0x8655, 0x5F6A, 0x86C7, 0x86C0, 0x86B6, 0x86C4, 0x86B5, 0x86C6, 0x86CB,
+ 0x86B1, 0x86AF, 0x86C9, 0x8853, 0x889E, 0x8888, 0x88AB, 0x8892, 0x8896,
+ 0x888D, 0x888B, 0x8993, 0x898F, 0x8A2A, 0x8A1D, 0x8A23, 0x8A25, 0x8A31,
+ 0x8A2D, 0x8A1F, 0x8A1B, 0x8A22, 0x8C49, 0x8C5A, 0x8CA9, 0x8CAC, 0x8CAB,
+ 0x8CA8, 0x8CAA, 0x8CA7, 0x8D67, 0x8D66, 0x8DBE, 0x8DBA, 0x8EDB, 0x8EDF,
+ 0x9019, 0x900D, 0x901A, 0x9017, 0x9023, 0x901F, 0x901D, 0x9010, 0x9015,
+ 0x901E, 0x9020, 0x900F, 0x9022, 0x9016, 0x901B, 0x9014, 0x90E8, 0x90ED,
+ 0x90FD, 0x9157, 0x91CE, 0x91F5, 0x91E6, 0x91E3, 0x91E7, 0x91ED, 0x91E9,
+ 0x9589, 0x966A, 0x9675, 0x9673, 0x9678, 0x9670, 0x9674, 0x9676, 0x9677,
+ 0x966C, 0x96C0, 0x96EA, 0x96E9, 0x7AE0, 0x7ADF, 0x9802, 0x9803, 0x9B5A,
+ 0x9CE5, 0x9E75, 0x9E7F, 0x9EA5, 0x9EBB, 0x50A2, 0x508D, 0x5085, 0x5099,
+ 0x5091, 0x5080, 0x5096, 0x5098, 0x509A, 0x6700, 0x51F1, 0x5272, 0x5274,
+ 0x5275, 0x5269, 0x52DE, 0x52DD, 0x52DB, 0x535A, 0x53A5, 0x557B, 0x5580,
+ 0x55A7, 0x557C, 0x558A, 0x559D, 0x5598, 0x5582, 0x559C, 0x55AA, 0x5594,
+ 0x5587, 0x558B, 0x5583, 0x55B3, 0x55AE, 0x559F, 0x553E, 0x55B2, 0x559A,
+ 0x55BB, 0x55AC, 0x55B1, 0x557E, 0x5589, 0x55AB, 0x5599, 0x570D, 0x582F,
+ 0x582A, 0x5834, 0x5824, 0x5830, 0x5831, 0x5821, 0x581D, 0x5820, 0x58F9,
+ 0x58FA, 0x5960, 0x5A77, 0x5A9A, 0x5A7F, 0x5A92, 0x5A9B, 0x5AA7, 0x5B73,
+ 0x5B71, 0x5BD2, 0x5BCC, 0x5BD3, 0x5BD0, 0x5C0A, 0x5C0B, 0x5C31, 0x5D4C,
+ 0x5D50, 0x5D34, 0x5D47, 0x5DFD, 0x5E45, 0x5E3D, 0x5E40, 0x5E43, 0x5E7E,
+ 0x5ECA, 0x5EC1, 0x5EC2, 0x5EC4, 0x5F3C, 0x5F6D, 0x5FA9, 0x5FAA, 0x5FA8,
+ 0x60D1, 0x60E1, 0x60B2, 0x60B6, 0x60E0, 0x611C, 0x6123, 0x60FA, 0x6115,
+ 0x60F0, 0x60FB, 0x60F4, 0x6168, 0x60F1, 0x610E, 0x60F6, 0x6109, 0x6100,
+ 0x6112, 0x621F, 0x6249, 0x63A3, 0x638C, 0x63CF, 0x63C0, 0x63E9, 0x63C9,
+ 0x63C6, 0x63CD, 0x63D2, 0x63E3, 0x63D0, 0x63E1, 0x63D6, 0x63ED, 0x63EE,
+ 0x6376, 0x63F4, 0x63EA, 0x63DB, 0x6452, 0x63DA, 0x63F9, 0x655E, 0x6566,
+ 0x6562, 0x6563, 0x6591, 0x6590, 0x65AF, 0x666E, 0x6670, 0x6674, 0x6676,
+ 0x666F, 0x6691, 0x667A, 0x667E, 0x6677, 0x66FE, 0x66FF, 0x671F, 0x671D,
+ 0x68FA, 0x68D5, 0x68E0, 0x68D8, 0x68D7, 0x6905, 0x68DF, 0x68F5, 0x68EE,
+ 0x68E7, 0x68F9, 0x68D2, 0x68F2, 0x68E3, 0x68CB, 0x68CD, 0x690D, 0x6912,
+ 0x690E, 0x68C9, 0x68DA, 0x696E, 0x68FB, 0x6B3E, 0x6B3A, 0x6B3D, 0x6B98,
+ 0x6B96, 0x6BBC, 0x6BEF, 0x6C2E, 0x6C2F, 0x6C2C, 0x6E2F, 0x6E38, 0x6E54,
+ 0x6E21, 0x6E32, 0x6E67, 0x6E4A, 0x6E20, 0x6E25, 0x6E23, 0x6E1B, 0x6E5B,
+ 0x6E58, 0x6E24, 0x6E56, 0x6E6E, 0x6E2D, 0x6E26, 0x6E6F, 0x6E34, 0x6E4D,
+ 0x6E3A, 0x6E2C, 0x6E43, 0x6E1D, 0x6E3E, 0x6ECB, 0x6E89, 0x6E19, 0x6E4E,
+ 0x6E63, 0x6E44, 0x6E72, 0x6E69, 0x6E5F, 0x7119, 0x711A, 0x7126, 0x7130,
+ 0x7121, 0x7136, 0x716E, 0x711C, 0x724C, 0x7284, 0x7280, 0x7336, 0x7325,
+ 0x7334, 0x7329, 0x743A, 0x742A, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436,
+ 0x7434, 0x742F, 0x741B, 0x7426, 0x7428, 0x7525, 0x7526, 0x756B, 0x756A,
+ 0x75E2, 0x75DB, 0x75E3, 0x75D9, 0x75D8, 0x75DE, 0x75E0, 0x767B, 0x767C,
+ 0x7696, 0x7693, 0x76B4, 0x76DC, 0x774F, 0x77ED, 0x785D, 0x786C, 0x786F,
+ 0x7A0D, 0x7A08, 0x7A0B, 0x7A05, 0x7A00, 0x7A98, 0x7A97, 0x7A96, 0x7AE5,
+ 0x7AE3, 0x7B49, 0x7B56, 0x7B46, 0x7B50, 0x7B52, 0x7B54, 0x7B4D, 0x7B4B,
+ 0x7B4F, 0x7B51, 0x7C9F, 0x7CA5, 0x7D5E, 0x7D50, 0x7D68, 0x7D55, 0x7D2B,
+ 0x7D6E, 0x7D72, 0x7D61, 0x7D66, 0x7D62, 0x7D70, 0x7D73, 0x5584, 0x7FD4,
+ 0x7FD5, 0x800B, 0x8052, 0x8085, 0x8155, 0x8154, 0x814B, 0x8151, 0x814E,
+ 0x8139, 0x8146, 0x813E, 0x814C, 0x8153, 0x8174, 0x8212, 0x821C, 0x83E9,
+ 0x8403, 0x83F8, 0x840D, 0x83E0, 0x83C5, 0x840B, 0x83C1, 0x83EF, 0x83F1,
+ 0x83F4, 0x8457, 0x840A, 0x83F0, 0x840C, 0x83CC, 0x83FD, 0x83F2, 0x83CA,
+ 0x8438, 0x840E, 0x8404, 0x83DC, 0x8407, 0x83D4, 0x83DF, 0x865B, 0x86DF,
+ 0x86D9, 0x86ED, 0x86D4, 0x86DB, 0x86E4, 0x86D0, 0x86DE, 0x8857, 0x88C1,
+ 0x88C2, 0x88B1, 0x8983, 0x8996, 0x8A3B, 0x8A60, 0x8A55, 0x8A5E, 0x8A3C,
+ 0x8A41, 0x8A54, 0x8A5B, 0x8A50, 0x8A46, 0x8A34, 0x8A3A, 0x8A36, 0x8A56,
+ 0x8C61, 0x8C82, 0x8CAF, 0x8CBC, 0x8CB3, 0x8CBD, 0x8CC1, 0x8CBB, 0x8CC0,
+ 0x8CB4, 0x8CB7, 0x8CB6, 0x8CBF, 0x8CB8, 0x8D8A, 0x8D85, 0x8D81, 0x8DCE,
+ 0x8DDD, 0x8DCB, 0x8DDA, 0x8DD1, 0x8DCC, 0x8DDB, 0x8DC6, 0x8EFB, 0x8EF8,
+ 0x8EFC, 0x8F9C, 0x902E, 0x9035, 0x9031, 0x9038, 0x9032, 0x9036, 0x9102,
+ 0x90F5, 0x9109, 0x90FE, 0x9163, 0x9165, 0x91CF, 0x9214, 0x9215, 0x9223,
+ 0x9209, 0x921E, 0x920D, 0x9210, 0x9207, 0x9211, 0x9594, 0x958F, 0x958B,
+ 0x9591, 0x9593, 0x9592, 0x958E, 0x968A, 0x968E, 0x968B, 0x967D, 0x9685,
+ 0x9686, 0x968D, 0x9672, 0x9684, 0x96C1, 0x96C5, 0x96C4, 0x96C6, 0x96C7,
+ 0x96EF, 0x96F2, 0x97CC, 0x9805, 0x9806, 0x9808, 0x98E7, 0x98EA, 0x98EF,
+ 0x98E9, 0x98F2, 0x98ED, 0x99AE, 0x99AD, 0x9EC3, 0x9ECD, 0x9ED1, 0x4E82,
+ 0x50AD, 0x50B5, 0x50B2, 0x50B3, 0x50C5, 0x50BE, 0x50AC, 0x50B7, 0x50BB,
+ 0x50AF, 0x50C7, 0x527F, 0x5277, 0x527D, 0x52DF, 0x52E6, 0x52E4, 0x52E2,
+ 0x52E3, 0x532F, 0x55DF, 0x55E8, 0x55D3, 0x55E6, 0x55CE, 0x55DC, 0x55C7,
+ 0x55D1, 0x55E3, 0x55E4, 0x55EF, 0x55DA, 0x55E1, 0x55C5, 0x55C6, 0x55E5,
+ 0x55C9, 0x5712, 0x5713, 0x585E, 0x5851, 0x5858, 0x5857, 0x585A, 0x5854,
+ 0x586B, 0x584C, 0x586D, 0x584A, 0x5862, 0x5852, 0x584B, 0x5967, 0x5AC1,
+ 0x5AC9, 0x5ACC, 0x5ABE, 0x5ABD, 0x5ABC, 0x5AB3, 0x5AC2, 0x5AB2, 0x5D69,
+ 0x5D6F, 0x5E4C, 0x5E79, 0x5EC9, 0x5EC8, 0x5F12, 0x5F59, 0x5FAC, 0x5FAE,
+ 0x611A, 0x610F, 0x6148, 0x611F, 0x60F3, 0x611B, 0x60F9, 0x6101, 0x6108,
+ 0x614E, 0x614C, 0x6144, 0x614D, 0x613E, 0x6134, 0x6127, 0x610D, 0x6106,
+ 0x6137, 0x6221, 0x6222, 0x6413, 0x643E, 0x641E, 0x642A, 0x642D, 0x643D,
+ 0x642C, 0x640F, 0x641C, 0x6414, 0x640D, 0x6436, 0x6416, 0x6417, 0x6406,
+ 0x656C, 0x659F, 0x65B0, 0x6697, 0x6689, 0x6687, 0x6688, 0x6696, 0x6684,
+ 0x6698, 0x668D, 0x6703, 0x6994, 0x696D, 0x695A, 0x6977, 0x6960, 0x6954,
+ 0x6975, 0x6930, 0x6982, 0x694A, 0x6968, 0x696B, 0x695E, 0x6953, 0x6979,
+ 0x6986, 0x695D, 0x6963, 0x695B, 0x6B47, 0x6B72, 0x6BC0, 0x6BBF, 0x6BD3,
+ 0x6BFD, 0x6EA2, 0x6EAF, 0x6ED3, 0x6EB6, 0x6EC2, 0x6E90, 0x6E9D, 0x6EC7,
+ 0x6EC5, 0x6EA5, 0x6E98, 0x6EBC, 0x6EBA, 0x6EAB, 0x6ED1, 0x6E96, 0x6E9C,
+ 0x6EC4, 0x6ED4, 0x6EAA, 0x6EA7, 0x6EB4, 0x714E, 0x7159, 0x7169, 0x7164,
+ 0x7149, 0x7167, 0x715C, 0x716C, 0x7166, 0x714C, 0x7165, 0x715E, 0x7146,
+ 0x7168, 0x7156, 0x723A, 0x7252, 0x7337, 0x7345, 0x733F, 0x733E, 0x746F,
+ 0x745A, 0x7455, 0x745F, 0x745E, 0x7441, 0x743F, 0x7459, 0x745B, 0x745C,
+ 0x7576, 0x7578, 0x7600, 0x75F0, 0x7601, 0x75F2, 0x75F1, 0x75FA, 0x75FF,
+ 0x75F4, 0x75F3, 0x76DE, 0x76DF, 0x775B, 0x776B, 0x7766, 0x775E, 0x7763,
+ 0x7779, 0x776A, 0x776C, 0x775C, 0x7765, 0x7768, 0x7762, 0x77EE, 0x788E,
+ 0x78B0, 0x7897, 0x7898, 0x788C, 0x7889, 0x787C, 0x7891, 0x7893, 0x787F,
+ 0x797A, 0x797F, 0x7981, 0x842C, 0x79BD, 0x7A1C, 0x7A1A, 0x7A20, 0x7A14,
+ 0x7A1F, 0x7A1E, 0x7A9F, 0x7AA0, 0x7B77, 0x7BC0, 0x7B60, 0x7B6E, 0x7B67,
+ 0x7CB1, 0x7CB3, 0x7CB5, 0x7D93, 0x7D79, 0x7D91, 0x7D81, 0x7D8F, 0x7D5B,
+ 0x7F6E, 0x7F69, 0x7F6A, 0x7F72, 0x7FA9, 0x7FA8, 0x7FA4, 0x8056, 0x8058,
+ 0x8086, 0x8084, 0x8171, 0x8170, 0x8178, 0x8165, 0x816E, 0x8173, 0x816B,
+ 0x8179, 0x817A, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477, 0x843D, 0x8431,
+ 0x8475, 0x8466, 0x846B, 0x8449, 0x846C, 0x845B, 0x843C, 0x8435, 0x8461,
+ 0x8463, 0x8469, 0x846D, 0x8446, 0x865E, 0x865C, 0x865F, 0x86F9, 0x8713,
+ 0x8708, 0x8707, 0x8700, 0x86FE, 0x86FB, 0x8702, 0x8703, 0x8706, 0x870A,
+ 0x8859, 0x88DF, 0x88D4, 0x88D9, 0x88DC, 0x88D8, 0x88DD, 0x88E1, 0x88CA,
+ 0x88D5, 0x88D2, 0x899C, 0x89E3, 0x8A6B, 0x8A72, 0x8A73, 0x8A66, 0x8A69,
+ 0x8A70, 0x8A87, 0x8A7C, 0x8A63, 0x8AA0, 0x8A71, 0x8A85, 0x8A6D, 0x8A62,
+ 0x8A6E, 0x8A6C, 0x8A79, 0x8A7B, 0x8A3E, 0x8A68, 0x8C62, 0x8C8A, 0x8C89,
+ 0x8CCA, 0x8CC7, 0x8CC8, 0x8CC4, 0x8CB2, 0x8CC3, 0x8CC2, 0x8CC5, 0x8DE1,
+ 0x8DDF, 0x8DE8, 0x8DEF, 0x8DF3, 0x8DFA, 0x8DEA, 0x8DE4, 0x8DE6, 0x8EB2,
+ 0x8F03, 0x8F09, 0x8EFE, 0x8F0A, 0x8F9F, 0x8FB2, 0x904B, 0x904A, 0x9053,
+ 0x9042, 0x9054, 0x903C, 0x9055, 0x9050, 0x9047, 0x904F, 0x904E, 0x904D,
+ 0x9051, 0x903E, 0x9041, 0x9112, 0x9117, 0x916C, 0x916A, 0x9169, 0x91C9,
+ 0x9237, 0x9257, 0x9238, 0x923D, 0x9240, 0x923E, 0x925B, 0x924B, 0x9264,
+ 0x9251, 0x9234, 0x9249, 0x924D, 0x9245, 0x9239, 0x923F, 0x925A, 0x9598,
+ 0x9698, 0x9694, 0x9695, 0x96CD, 0x96CB, 0x96C9, 0x96CA, 0x96F7, 0x96FB,
+ 0x96F9, 0x96F6, 0x9756, 0x9774, 0x9776, 0x9810, 0x9811, 0x9813, 0x980A,
+ 0x9812, 0x980C, 0x98FC, 0x98F4, 0x98FD, 0x98FE, 0x99B3, 0x99B1, 0x99B4,
+ 0x9AE1, 0x9CE9, 0x9E82, 0x9F0E, 0x9F13, 0x9F20, 0x50E7, 0x50EE, 0x50E5,
+ 0x50D6, 0x50ED, 0x50DA, 0x50D5, 0x50CF, 0x50D1, 0x50F1, 0x50CE, 0x50E9,
+ 0x5162, 0x51F3, 0x5283, 0x5282, 0x5331, 0x53AD, 0x55FE, 0x5600, 0x561B,
+ 0x5617, 0x55FD, 0x5614, 0x5606, 0x5609, 0x560D, 0x560E, 0x55F7, 0x5616,
+ 0x561F, 0x5608, 0x5610, 0x55F6, 0x5718, 0x5716, 0x5875, 0x587E, 0x5883,
+ 0x5893, 0x588A, 0x5879, 0x5885, 0x587D, 0x58FD, 0x5925, 0x5922, 0x5924,
+ 0x596A, 0x5969, 0x5AE1, 0x5AE6, 0x5AE9, 0x5AD7, 0x5AD6, 0x5AD8, 0x5AE3,
+ 0x5B75, 0x5BDE, 0x5BE7, 0x5BE1, 0x5BE5, 0x5BE6, 0x5BE8, 0x5BE2, 0x5BE4,
+ 0x5BDF, 0x5C0D, 0x5C62, 0x5D84, 0x5D87, 0x5E5B, 0x5E63, 0x5E55, 0x5E57,
+ 0x5E54, 0x5ED3, 0x5ED6, 0x5F0A, 0x5F46, 0x5F70, 0x5FB9, 0x6147, 0x613F,
+ 0x614B, 0x6177, 0x6162, 0x6163, 0x615F, 0x615A, 0x6158, 0x6175, 0x622A,
+ 0x6487, 0x6458, 0x6454, 0x64A4, 0x6478, 0x645F, 0x647A, 0x6451, 0x6467,
+ 0x6434, 0x646D, 0x647B, 0x6572, 0x65A1, 0x65D7, 0x65D6, 0x66A2, 0x66A8,
+ 0x669D, 0x699C, 0x69A8, 0x6995, 0x69C1, 0x69AE, 0x69D3, 0x69CB, 0x699B,
+ 0x69B7, 0x69BB, 0x69AB, 0x69B4, 0x69D0, 0x69CD, 0x69AD, 0x69CC, 0x69A6,
+ 0x69C3, 0x69A3, 0x6B49, 0x6B4C, 0x6C33, 0x6F33, 0x6F14, 0x6EFE, 0x6F13,
+ 0x6EF4, 0x6F29, 0x6F3E, 0x6F20, 0x6F2C, 0x6F0F, 0x6F02, 0x6F22, 0x6EFF,
+ 0x6EEF, 0x6F06, 0x6F31, 0x6F38, 0x6F32, 0x6F23, 0x6F15, 0x6F2B, 0x6F2F,
+ 0x6F88, 0x6F2A, 0x6EEC, 0x6F01, 0x6EF2, 0x6ECC, 0x6EF7, 0x7194, 0x7199,
+ 0x717D, 0x718A, 0x7184, 0x7192, 0x723E, 0x7292, 0x7296, 0x7344, 0x7350,
+ 0x7464, 0x7463, 0x746A, 0x7470, 0x746D, 0x7504, 0x7591, 0x7627, 0x760D,
+ 0x760B, 0x7609, 0x7613, 0x76E1, 0x76E3, 0x7784, 0x777D, 0x777F, 0x7761,
+ 0x78C1, 0x789F, 0x78A7, 0x78B3, 0x78A9, 0x78A3, 0x798E, 0x798F, 0x798D,
+ 0x7A2E, 0x7A31, 0x7AAA, 0x7AA9, 0x7AED, 0x7AEF, 0x7BA1, 0x7B95, 0x7B8B,
+ 0x7B75, 0x7B97, 0x7B9D, 0x7B94, 0x7B8F, 0x7BB8, 0x7B87, 0x7B84, 0x7CB9,
+ 0x7CBD, 0x7CBE, 0x7DBB, 0x7DB0, 0x7D9C, 0x7DBD, 0x7DBE, 0x7DA0, 0x7DCA,
+ 0x7DB4, 0x7DB2, 0x7DB1, 0x7DBA, 0x7DA2, 0x7DBF, 0x7DB5, 0x7DB8, 0x7DAD,
+ 0x7DD2, 0x7DC7, 0x7DAC, 0x7F70, 0x7FE0, 0x7FE1, 0x7FDF, 0x805E, 0x805A,
+ 0x8087, 0x8150, 0x8180, 0x818F, 0x8188, 0x818A, 0x817F, 0x8182, 0x81E7,
+ 0x81FA, 0x8207, 0x8214, 0x821E, 0x824B, 0x84C9, 0x84BF, 0x84C6, 0x84C4,
+ 0x8499, 0x849E, 0x84B2, 0x849C, 0x84CB, 0x84B8, 0x84C0, 0x84D3, 0x8490,
+ 0x84BC, 0x84D1, 0x84CA, 0x873F, 0x871C, 0x873B, 0x8722, 0x8725, 0x8734,
+ 0x8718, 0x8755, 0x8737, 0x8729, 0x88F3, 0x8902, 0x88F4, 0x88F9, 0x88F8,
+ 0x88FD, 0x88E8, 0x891A, 0x88EF, 0x8AA6, 0x8A8C, 0x8A9E, 0x8AA3, 0x8A8D,
+ 0x8AA1, 0x8A93, 0x8AA4, 0x8AAA, 0x8AA5, 0x8AA8, 0x8A98, 0x8A91, 0x8A9A,
+ 0x8AA7, 0x8C6A, 0x8C8D, 0x8C8C, 0x8CD3, 0x8CD1, 0x8CD2, 0x8D6B, 0x8D99,
+ 0x8D95, 0x8DFC, 0x8F14, 0x8F12, 0x8F15, 0x8F13, 0x8FA3, 0x9060, 0x9058,
+ 0x905C, 0x9063, 0x9059, 0x905E, 0x9062, 0x905D, 0x905B, 0x9119, 0x9118,
+ 0x911E, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278, 0x92AC, 0x9280, 0x9285,
+ 0x9298, 0x9296, 0x927B, 0x9293, 0x929C, 0x92A8, 0x927C, 0x9291, 0x95A1,
+ 0x95A8, 0x95A9, 0x95A3, 0x95A5, 0x95A4, 0x9699, 0x969C, 0x969B, 0x96CC,
+ 0x96D2, 0x9700, 0x977C, 0x9785, 0x97F6, 0x9817, 0x9818, 0x98AF, 0x98B1,
+ 0x9903, 0x9905, 0x990C, 0x9909, 0x99C1, 0x9AAF, 0x9AB0, 0x9AE6, 0x9B41,
+ 0x9B42, 0x9CF4, 0x9CF6, 0x9CF3, 0x9EBC, 0x9F3B, 0x9F4A, 0x5104, 0x5100,
+ 0x50FB, 0x50F5, 0x50F9, 0x5102, 0x5108, 0x5109, 0x5105, 0x51DC, 0x5287,
+ 0x5288, 0x5289, 0x528D, 0x528A, 0x52F0, 0x53B2, 0x562E, 0x563B, 0x5639,
+ 0x5632, 0x563F, 0x5634, 0x5629, 0x5653, 0x564E, 0x5657, 0x5674, 0x5636,
+ 0x562F, 0x5630, 0x5880, 0x589F, 0x589E, 0x58B3, 0x589C, 0x58AE, 0x58A9,
+ 0x58A6, 0x596D, 0x5B09, 0x5AFB, 0x5B0B, 0x5AF5, 0x5B0C, 0x5B08, 0x5BEE,
+ 0x5BEC, 0x5BE9, 0x5BEB, 0x5C64, 0x5C65, 0x5D9D, 0x5D94, 0x5E62, 0x5E5F,
+ 0x5E61, 0x5EE2, 0x5EDA, 0x5EDF, 0x5EDD, 0x5EE3, 0x5EE0, 0x5F48, 0x5F71,
+ 0x5FB7, 0x5FB5, 0x6176, 0x6167, 0x616E, 0x615D, 0x6155, 0x6182, 0x617C,
+ 0x6170, 0x616B, 0x617E, 0x61A7, 0x6190, 0x61AB, 0x618E, 0x61AC, 0x619A,
+ 0x61A4, 0x6194, 0x61AE, 0x622E, 0x6469, 0x646F, 0x6479, 0x649E, 0x64B2,
+ 0x6488, 0x6490, 0x64B0, 0x64A5, 0x6493, 0x6495, 0x64A9, 0x6492, 0x64AE,
+ 0x64AD, 0x64AB, 0x649A, 0x64AC, 0x6499, 0x64A2, 0x64B3, 0x6575, 0x6577,
+ 0x6578, 0x66AE, 0x66AB, 0x66B4, 0x66B1, 0x6A23, 0x6A1F, 0x69E8, 0x6A01,
+ 0x6A1E, 0x6A19, 0x69FD, 0x6A21, 0x6A13, 0x6A0A, 0x69F3, 0x6A02, 0x6A05,
+ 0x69ED, 0x6A11, 0x6B50, 0x6B4E, 0x6BA4, 0x6BC5, 0x6BC6, 0x6F3F, 0x6F7C,
+ 0x6F84, 0x6F51, 0x6F66, 0x6F54, 0x6F86, 0x6F6D, 0x6F5B, 0x6F78, 0x6F6E,
+ 0x6F8E, 0x6F7A, 0x6F70, 0x6F64, 0x6F97, 0x6F58, 0x6ED5, 0x6F6F, 0x6F60,
+ 0x6F5F, 0x719F, 0x71AC, 0x71B1, 0x71A8, 0x7256, 0x729B, 0x734E, 0x7357,
+ 0x7469, 0x748B, 0x7483, 0x747E, 0x7480, 0x757F, 0x7620, 0x7629, 0x761F,
+ 0x7624, 0x7626, 0x7621, 0x7622, 0x769A, 0x76BA, 0x76E4, 0x778E, 0x7787,
+ 0x778C, 0x7791, 0x778B, 0x78CB, 0x78C5, 0x78BA, 0x78CA, 0x78BE, 0x78D5,
+ 0x78BC, 0x78D0, 0x7A3F, 0x7A3C, 0x7A40, 0x7A3D, 0x7A37, 0x7A3B, 0x7AAF,
+ 0x7AAE, 0x7BAD, 0x7BB1, 0x7BC4, 0x7BB4, 0x7BC6, 0x7BC7, 0x7BC1, 0x7BA0,
+ 0x7BCC, 0x7CCA, 0x7DE0, 0x7DF4, 0x7DEF, 0x7DFB, 0x7DD8, 0x7DEC, 0x7DDD,
+ 0x7DE8, 0x7DE3, 0x7DDA, 0x7DDE, 0x7DE9, 0x7D9E, 0x7DD9, 0x7DF2, 0x7DF9,
+ 0x7F75, 0x7F77, 0x7FAF, 0x7FE9, 0x8026, 0x819B, 0x819C, 0x819D, 0x81A0,
+ 0x819A, 0x8198, 0x8517, 0x853D, 0x851A, 0x84EE, 0x852C, 0x852D, 0x8513,
+ 0x8511, 0x8523, 0x8521, 0x8514, 0x84EC, 0x8525, 0x84FF, 0x8506, 0x8782,
+ 0x8774, 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759, 0x8757, 0x874C,
+ 0x8753, 0x885B, 0x885D, 0x8910, 0x8907, 0x8912, 0x8913, 0x8915, 0x890A,
+ 0x8ABC, 0x8AD2, 0x8AC7, 0x8AC4, 0x8A95, 0x8ACB, 0x8AF8, 0x8AB2, 0x8AC9,
+ 0x8AC2, 0x8ABF, 0x8AB0, 0x8AD6, 0x8ACD, 0x8AB6, 0x8AB9, 0x8ADB, 0x8C4C,
+ 0x8C4E, 0x8C6C, 0x8CE0, 0x8CDE, 0x8CE6, 0x8CE4, 0x8CEC, 0x8CED, 0x8CE2,
+ 0x8CE3, 0x8CDC, 0x8CEA, 0x8CE1, 0x8D6D, 0x8D9F, 0x8DA3, 0x8E2B, 0x8E10,
+ 0x8E1D, 0x8E22, 0x8E0F, 0x8E29, 0x8E1F, 0x8E21, 0x8E1E, 0x8EBA, 0x8F1D,
+ 0x8F1B, 0x8F1F, 0x8F29, 0x8F26, 0x8F2A, 0x8F1C, 0x8F1E, 0x8F25, 0x9069,
+ 0x906E, 0x9068, 0x906D, 0x9077, 0x9130, 0x912D, 0x9127, 0x9131, 0x9187,
+ 0x9189, 0x918B, 0x9183, 0x92C5, 0x92BB, 0x92B7, 0x92EA, 0x92E4, 0x92C1,
+ 0x92B3, 0x92BC, 0x92D2, 0x92C7, 0x92F0, 0x92B2, 0x95AD, 0x95B1, 0x9704,
+ 0x9706, 0x9707, 0x9709, 0x9760, 0x978D, 0x978B, 0x978F, 0x9821, 0x982B,
+ 0x981C, 0x98B3, 0x990A, 0x9913, 0x9912, 0x9918, 0x99DD, 0x99D0, 0x99DF,
+ 0x99DB, 0x99D1, 0x99D5, 0x99D2, 0x99D9, 0x9AB7, 0x9AEE, 0x9AEF, 0x9B27,
+ 0x9B45, 0x9B44, 0x9B77, 0x9B6F, 0x9D06, 0x9D09, 0x9D03, 0x9EA9, 0x9EBE,
+ 0x9ECE, 0x58A8, 0x9F52, 0x5112, 0x5118, 0x5114, 0x5110, 0x5115, 0x5180,
+ 0x51AA, 0x51DD, 0x5291, 0x5293, 0x52F3, 0x5659, 0x566B, 0x5679, 0x5669,
+ 0x5664, 0x5678, 0x566A, 0x5668, 0x5665, 0x5671, 0x566F, 0x566C, 0x5662,
+ 0x5676, 0x58C1, 0x58BE, 0x58C7, 0x58C5, 0x596E, 0x5B1D, 0x5B34, 0x5B78,
+ 0x5BF0, 0x5C0E, 0x5F4A, 0x61B2, 0x6191, 0x61A9, 0x618A, 0x61CD, 0x61B6,
+ 0x61BE, 0x61CA, 0x61C8, 0x6230, 0x64C5, 0x64C1, 0x64CB, 0x64BB, 0x64BC,
+ 0x64DA, 0x64C4, 0x64C7, 0x64C2, 0x64CD, 0x64BF, 0x64D2, 0x64D4, 0x64BE,
+ 0x6574, 0x66C6, 0x66C9, 0x66B9, 0x66C4, 0x66C7, 0x66B8, 0x6A3D, 0x6A38,
+ 0x6A3A, 0x6A59, 0x6A6B, 0x6A58, 0x6A39, 0x6A44, 0x6A62, 0x6A61, 0x6A4B,
+ 0x6A47, 0x6A35, 0x6A5F, 0x6A48, 0x6B59, 0x6B77, 0x6C05, 0x6FC2, 0x6FB1,
+ 0x6FA1, 0x6FC3, 0x6FA4, 0x6FC1, 0x6FA7, 0x6FB3, 0x6FC0, 0x6FB9, 0x6FB6,
+ 0x6FA6, 0x6FA0, 0x6FB4, 0x71BE, 0x71C9, 0x71D0, 0x71D2, 0x71C8, 0x71D5,
+ 0x71B9, 0x71CE, 0x71D9, 0x71DC, 0x71C3, 0x71C4, 0x7368, 0x749C, 0x74A3,
+ 0x7498, 0x749F, 0x749E, 0x74E2, 0x750C, 0x750D, 0x7634, 0x7638, 0x763A,
+ 0x76E7, 0x76E5, 0x77A0, 0x779E, 0x779F, 0x77A5, 0x78E8, 0x78DA, 0x78EC,
+ 0x78E7, 0x79A6, 0x7A4D, 0x7A4E, 0x7A46, 0x7A4C, 0x7A4B, 0x7ABA, 0x7BD9,
+ 0x7C11, 0x7BC9, 0x7BE4, 0x7BDB, 0x7BE1, 0x7BE9, 0x7BE6, 0x7CD5, 0x7CD6,
+ 0x7E0A, 0x7E11, 0x7E08, 0x7E1B, 0x7E23, 0x7E1E, 0x7E1D, 0x7E09, 0x7E10,
+ 0x7F79, 0x7FB2, 0x7FF0, 0x7FF1, 0x7FEE, 0x8028, 0x81B3, 0x81A9, 0x81A8,
+ 0x81FB, 0x8208, 0x8258, 0x8259, 0x854A, 0x8559, 0x8548, 0x8568, 0x8569,
+ 0x8543, 0x8549, 0x856D, 0x856A, 0x855E, 0x8783, 0x879F, 0x879E, 0x87A2,
+ 0x878D, 0x8861, 0x892A, 0x8932, 0x8925, 0x892B, 0x8921, 0x89AA, 0x89A6,
+ 0x8AE6, 0x8AFA, 0x8AEB, 0x8AF1, 0x8B00, 0x8ADC, 0x8AE7, 0x8AEE, 0x8AFE,
+ 0x8B01, 0x8B02, 0x8AF7, 0x8AED, 0x8AF3, 0x8AF6, 0x8AFC, 0x8C6B, 0x8C6D,
+ 0x8C93, 0x8CF4, 0x8E44, 0x8E31, 0x8E34, 0x8E42, 0x8E39, 0x8E35, 0x8F3B,
+ 0x8F2F, 0x8F38, 0x8F33, 0x8FA8, 0x8FA6, 0x9075, 0x9074, 0x9078, 0x9072,
+ 0x907C, 0x907A, 0x9134, 0x9192, 0x9320, 0x9336, 0x92F8, 0x9333, 0x932F,
+ 0x9322, 0x92FC, 0x932B, 0x9304, 0x931A, 0x9310, 0x9326, 0x9321, 0x9315,
+ 0x932E, 0x9319, 0x95BB, 0x96A7, 0x96A8, 0x96AA, 0x96D5, 0x970E, 0x9711,
+ 0x9716, 0x970D, 0x9713, 0x970F, 0x975B, 0x975C, 0x9766, 0x9798, 0x9830,
+ 0x9838, 0x983B, 0x9837, 0x982D, 0x9839, 0x9824, 0x9910, 0x9928, 0x991E,
+ 0x991B, 0x9921, 0x991A, 0x99ED, 0x99E2, 0x99F1, 0x9AB8, 0x9ABC, 0x9AFB,
+ 0x9AED, 0x9B28, 0x9B91, 0x9D15, 0x9D23, 0x9D26, 0x9D28, 0x9D12, 0x9D1B,
+ 0x9ED8, 0x9ED4, 0x9F8D, 0x9F9C, 0x512A, 0x511F, 0x5121, 0x5132, 0x52F5,
+ 0x568E, 0x5680, 0x5690, 0x5685, 0x5687, 0x568F, 0x58D5, 0x58D3, 0x58D1,
+ 0x58CE, 0x5B30, 0x5B2A, 0x5B24, 0x5B7A, 0x5C37, 0x5C68, 0x5DBC, 0x5DBA,
+ 0x5DBD, 0x5DB8, 0x5E6B, 0x5F4C, 0x5FBD, 0x61C9, 0x61C2, 0x61C7, 0x61E6,
+ 0x61CB, 0x6232, 0x6234, 0x64CE, 0x64CA, 0x64D8, 0x64E0, 0x64F0, 0x64E6,
+ 0x64EC, 0x64F1, 0x64E2, 0x64ED, 0x6582, 0x6583, 0x66D9, 0x66D6, 0x6A80,
+ 0x6A94, 0x6A84, 0x6AA2, 0x6A9C, 0x6ADB, 0x6AA3, 0x6A7E, 0x6A97, 0x6A90,
+ 0x6AA0, 0x6B5C, 0x6BAE, 0x6BDA, 0x6C08, 0x6FD8, 0x6FF1, 0x6FDF, 0x6FE0,
+ 0x6FDB, 0x6FE4, 0x6FEB, 0x6FEF, 0x6F80, 0x6FEC, 0x6FE1, 0x6FE9, 0x6FD5,
+ 0x6FEE, 0x6FF0, 0x71E7, 0x71DF, 0x71EE, 0x71E6, 0x71E5, 0x71ED, 0x71EC,
+ 0x71F4, 0x71E0, 0x7235, 0x7246, 0x7370, 0x7372, 0x74A9, 0x74B0, 0x74A6,
+ 0x74A8, 0x7646, 0x7642, 0x764C, 0x76EA, 0x77B3, 0x77AA, 0x77B0, 0x77AC,
+ 0x77A7, 0x77AD, 0x77EF, 0x78F7, 0x78FA, 0x78F4, 0x78EF, 0x7901, 0x79A7,
+ 0x79AA, 0x7A57, 0x7ABF, 0x7C07, 0x7C0D, 0x7BFE, 0x7BF7, 0x7C0C, 0x7BE0,
+ 0x7CE0, 0x7CDC, 0x7CDE, 0x7CE2, 0x7CDF, 0x7CD9, 0x7CDD, 0x7E2E, 0x7E3E,
+ 0x7E46, 0x7E37, 0x7E32, 0x7E43, 0x7E2B, 0x7E3D, 0x7E31, 0x7E45, 0x7E41,
+ 0x7E34, 0x7E39, 0x7E48, 0x7E35, 0x7E3F, 0x7E2F, 0x7F44, 0x7FF3, 0x7FFC,
+ 0x8071, 0x8072, 0x8070, 0x806F, 0x8073, 0x81C6, 0x81C3, 0x81BA, 0x81C2,
+ 0x81C0, 0x81BF, 0x81BD, 0x81C9, 0x81BE, 0x81E8, 0x8209, 0x8271, 0x85AA,
+ 0x8584, 0x857E, 0x859C, 0x8591, 0x8594, 0x85AF, 0x859B, 0x8587, 0x85A8,
+ 0x858A, 0x85A6, 0x8667, 0x87C0, 0x87D1, 0x87B3, 0x87D2, 0x87C6, 0x87AB,
+ 0x87BB, 0x87BA, 0x87C8, 0x87CB, 0x893B, 0x8936, 0x8944, 0x8938, 0x893D,
+ 0x89AC, 0x8B0E, 0x8B17, 0x8B19, 0x8B1B, 0x8B0A, 0x8B20, 0x8B1D, 0x8B04,
+ 0x8B10, 0x8C41, 0x8C3F, 0x8C73, 0x8CFA, 0x8CFD, 0x8CFC, 0x8CF8, 0x8CFB,
+ 0x8DA8, 0x8E49, 0x8E4B, 0x8E48, 0x8E4A, 0x8F44, 0x8F3E, 0x8F42, 0x8F45,
+ 0x8F3F, 0x907F, 0x907D, 0x9084, 0x9081, 0x9082, 0x9080, 0x9139, 0x91A3,
+ 0x919E, 0x919C, 0x934D, 0x9382, 0x9328, 0x9375, 0x934A, 0x9365, 0x934B,
+ 0x9318, 0x937E, 0x936C, 0x935B, 0x9370, 0x935A, 0x9354, 0x95CA, 0x95CB,
+ 0x95CC, 0x95C8, 0x95C6, 0x96B1, 0x96B8, 0x96D6, 0x971C, 0x971E, 0x97A0,
+ 0x97D3, 0x9846, 0x98B6, 0x9935, 0x9A01, 0x99FF, 0x9BAE, 0x9BAB, 0x9BAA,
+ 0x9BAD, 0x9D3B, 0x9D3F, 0x9E8B, 0x9ECF, 0x9EDE, 0x9EDC, 0x9EDD, 0x9EDB,
+ 0x9F3E, 0x9F4B, 0x53E2, 0x5695, 0x56AE, 0x58D9, 0x58D8, 0x5B38, 0x5F5D,
+ 0x61E3, 0x6233, 0x64F4, 0x64F2, 0x64FE, 0x6506, 0x64FA, 0x64FB, 0x64F7,
+ 0x65B7, 0x66DC, 0x6726, 0x6AB3, 0x6AAC, 0x6AC3, 0x6ABB, 0x6AB8, 0x6AC2,
+ 0x6AAE, 0x6AAF, 0x6B5F, 0x6B78, 0x6BAF, 0x7009, 0x700B, 0x6FFE, 0x7006,
+ 0x6FFA, 0x7011, 0x700F, 0x71FB, 0x71FC, 0x71FE, 0x71F8, 0x7377, 0x7375,
+ 0x74A7, 0x74BF, 0x7515, 0x7656, 0x7658, 0x7652, 0x77BD, 0x77BF, 0x77BB,
+ 0x77BC, 0x790E, 0x79AE, 0x7A61, 0x7A62, 0x7A60, 0x7AC4, 0x7AC5, 0x7C2B,
+ 0x7C27, 0x7C2A, 0x7C1E, 0x7C23, 0x7C21, 0x7CE7, 0x7E54, 0x7E55, 0x7E5E,
+ 0x7E5A, 0x7E61, 0x7E52, 0x7E59, 0x7F48, 0x7FF9, 0x7FFB, 0x8077, 0x8076,
+ 0x81CD, 0x81CF, 0x820A, 0x85CF, 0x85A9, 0x85CD, 0x85D0, 0x85C9, 0x85B0,
+ 0x85BA, 0x85B9, 0x87EF, 0x87EC, 0x87F2, 0x87E0, 0x8986, 0x89B2, 0x89F4,
+ 0x8B28, 0x8B39, 0x8B2C, 0x8B2B, 0x8C50, 0x8D05, 0x8E59, 0x8E63, 0x8E66,
+ 0x8E64, 0x8E5F, 0x8E55, 0x8EC0, 0x8F49, 0x8F4D, 0x9087, 0x9083, 0x9088,
+ 0x91AB, 0x91AC, 0x91D0, 0x9394, 0x938A, 0x9396, 0x93A2, 0x93B3, 0x93AE,
+ 0x93AC, 0x93B0, 0x9398, 0x939A, 0x9397, 0x95D4, 0x95D6, 0x95D0, 0x95D5,
+ 0x96E2, 0x96DC, 0x96D9, 0x96DB, 0x96DE, 0x9724, 0x97A3, 0x97A6, 0x97AD,
+ 0x97F9, 0x984D, 0x984F, 0x984C, 0x984E, 0x9853, 0x98BA, 0x993E, 0x993F,
+ 0x993D, 0x992E, 0x99A5, 0x9A0E, 0x9AC1, 0x9B03, 0x9B06, 0x9B4F, 0x9B4E,
+ 0x9B4D, 0x9BCA, 0x9BC9, 0x9BFD, 0x9BC8, 0x9BC0, 0x9D51, 0x9D5D, 0x9D60,
+ 0x9EE0, 0x9F15, 0x9F2C, 0x5133, 0x56A5, 0x56A8, 0x58DE, 0x58DF, 0x58E2,
+ 0x5BF5, 0x9F90, 0x5EEC, 0x61F2, 0x61F7, 0x61F6, 0x61F5, 0x6500, 0x650F,
+ 0x66E0, 0x66DD, 0x6AE5, 0x6ADD, 0x6ADA, 0x6AD3, 0x701B, 0x701F, 0x7028,
+ 0x701A, 0x701D, 0x7015, 0x7018, 0x7206, 0x720D, 0x7258, 0x72A2, 0x7378,
+ 0x737A, 0x74BD, 0x74CA, 0x74E3, 0x7587, 0x7586, 0x765F, 0x7661, 0x77C7,
+ 0x7919, 0x79B1, 0x7A6B, 0x7A69, 0x7C3E, 0x7C3F, 0x7C38, 0x7C3D, 0x7C37,
+ 0x7C40, 0x7E6B, 0x7E6D, 0x7E79, 0x7E69, 0x7E6A, 0x7E73, 0x7F85, 0x7FB6,
+ 0x7FB9, 0x7FB8, 0x81D8, 0x85E9, 0x85DD, 0x85EA, 0x85D5, 0x85E4, 0x85E5,
+ 0x85F7, 0x87FB, 0x8805, 0x880D, 0x87F9, 0x87FE, 0x8960, 0x895F, 0x8956,
+ 0x895E, 0x8B41, 0x8B5C, 0x8B58, 0x8B49, 0x8B5A, 0x8B4E, 0x8B4F, 0x8B46,
+ 0x8B59, 0x8D08, 0x8D0A, 0x8E7C, 0x8E72, 0x8E87, 0x8E76, 0x8E6C, 0x8E7A,
+ 0x8E74, 0x8F54, 0x8F4E, 0x8FAD, 0x908A, 0x908B, 0x91B1, 0x91AE, 0x93E1,
+ 0x93D1, 0x93DF, 0x93C3, 0x93C8, 0x93DC, 0x93DD, 0x93D6, 0x93E2, 0x93CD,
+ 0x93D8, 0x93E4, 0x93D7, 0x93E8, 0x95DC, 0x96B4, 0x96E3, 0x972A, 0x9727,
+ 0x9761, 0x97DC, 0x97FB, 0x985E, 0x9858, 0x985B, 0x98BC, 0x9945, 0x9949,
+ 0x9A16, 0x9A19, 0x9B0D, 0x9BE8, 0x9BE7, 0x9BD6, 0x9BDB, 0x9D89, 0x9D61,
+ 0x9D72, 0x9D6A, 0x9D6C, 0x9E92, 0x9E97, 0x9E93, 0x9EB4, 0x52F8, 0x56B7,
+ 0x56B6, 0x56B4, 0x56BC, 0x58E4, 0x5B40, 0x5B43, 0x5B7D, 0x5BF6, 0x5DC9,
+ 0x61F8, 0x61FA, 0x6518, 0x6514, 0x6519, 0x66E6, 0x6727, 0x6AEC, 0x703E,
+ 0x7030, 0x7032, 0x7210, 0x737B, 0x74CF, 0x7662, 0x7665, 0x7926, 0x792A,
+ 0x792C, 0x792B, 0x7AC7, 0x7AF6, 0x7C4C, 0x7C43, 0x7C4D, 0x7CEF, 0x7CF0,
+ 0x8FAE, 0x7E7D, 0x7E7C, 0x7E82, 0x7F4C, 0x8000, 0x81DA, 0x8266, 0x85FB,
+ 0x85F9, 0x8611, 0x85FA, 0x8606, 0x860B, 0x8607, 0x860A, 0x8814, 0x8815,
+ 0x8964, 0x89BA, 0x89F8, 0x8B70, 0x8B6C, 0x8B66, 0x8B6F, 0x8B5F, 0x8B6B,
+ 0x8D0F, 0x8D0D, 0x8E89, 0x8E81, 0x8E85, 0x8E82, 0x91B4, 0x91CB, 0x9418,
+ 0x9403, 0x93FD, 0x95E1, 0x9730, 0x98C4, 0x9952, 0x9951, 0x99A8, 0x9A2B,
+ 0x9A30, 0x9A37, 0x9A35, 0x9C13, 0x9C0D, 0x9E79, 0x9EB5, 0x9EE8, 0x9F2F,
+ 0x9F5F, 0x9F63, 0x9F61, 0x5137, 0x5138, 0x56C1, 0x56C0, 0x56C2, 0x5914,
+ 0x5C6C, 0x5DCD, 0x61FC, 0x61FE, 0x651D, 0x651C, 0x6595, 0x66E9, 0x6AFB,
+ 0x6B04, 0x6AFA, 0x6BB2, 0x704C, 0x721B, 0x72A7, 0x74D6, 0x74D4, 0x7669,
+ 0x77D3, 0x7C50, 0x7E8F, 0x7E8C, 0x7FBC, 0x8617, 0x862D, 0x861A, 0x8823,
+ 0x8822, 0x8821, 0x881F, 0x896A, 0x896C, 0x89BD, 0x8B74, 0x8B77, 0x8B7D,
+ 0x8D13, 0x8E8A, 0x8E8D, 0x8E8B, 0x8F5F, 0x8FAF, 0x91BA, 0x942E, 0x9433,
+ 0x9435, 0x943A, 0x9438, 0x9432, 0x942B, 0x95E2, 0x9738, 0x9739, 0x9732,
+ 0x97FF, 0x9867, 0x9865, 0x9957, 0x9A45, 0x9A43, 0x9A40, 0x9A3E, 0x9ACF,
+ 0x9B54, 0x9B51, 0x9C2D, 0x9C25, 0x9DAF, 0x9DB4, 0x9DC2, 0x9DB8, 0x9E9D,
+ 0x9EEF, 0x9F19, 0x9F5C, 0x9F66, 0x9F67, 0x513C, 0x513B, 0x56C8, 0x56CA,
+ 0x56C9, 0x5B7F, 0x5DD4, 0x5DD2, 0x5F4E, 0x61FF, 0x6524, 0x6B0A, 0x6B61,
+ 0x7051, 0x7058, 0x7380, 0x74E4, 0x758A, 0x766E, 0x766C, 0x79B3, 0x7C60,
+ 0x7C5F, 0x807E, 0x807D, 0x81DF, 0x8972, 0x896F, 0x89FC, 0x8B80, 0x8D16,
+ 0x8D17, 0x8E91, 0x8E93, 0x8F61, 0x9148, 0x9444, 0x9451, 0x9452, 0x973D,
+ 0x973E, 0x97C3, 0x97C1, 0x986B, 0x9955, 0x9A55, 0x9A4D, 0x9AD2, 0x9B1A,
+ 0x9C49, 0x9C31, 0x9C3E, 0x9C3B, 0x9DD3, 0x9DD7, 0x9F34, 0x9F6C, 0x9F6A,
+ 0x9F94, 0x56CC, 0x5DD6, 0x6200, 0x6523, 0x652B, 0x652A, 0x66EC, 0x6B10,
+ 0x74DA, 0x7ACA, 0x7C64, 0x7C63, 0x7C65, 0x7E93, 0x7E96, 0x7E94, 0x81E2,
+ 0x8638, 0x863F, 0x8831, 0x8B8A, 0x9090, 0x908F, 0x9463, 0x9460, 0x9464,
+ 0x9768, 0x986F, 0x995C, 0x9A5A, 0x9A5B, 0x9A57, 0x9AD3, 0x9AD4, 0x9AD1,
+ 0x9C54, 0x9C57, 0x9C56, 0x9DE5, 0x9E9F, 0x9EF4, 0x56D1, 0x58E9, 0x652C,
+ 0x705E, 0x7671, 0x7672, 0x77D7, 0x7F50, 0x7F88, 0x8836, 0x8839, 0x8862,
+ 0x8B93, 0x8B92, 0x8B96, 0x8277, 0x8D1B, 0x91C0, 0x946A, 0x9742, 0x9748,
+ 0x9744, 0x97C6, 0x9870, 0x9A5F, 0x9B22, 0x9B58, 0x9C5F, 0x9DF9, 0x9DFA,
+ 0x9E7C, 0x9E7D, 0x9F07, 0x9F77, 0x9F72, 0x5EF3, 0x6B16, 0x7063, 0x7C6C,
+ 0x7C6E, 0x883B, 0x89C0, 0x8EA1, 0x91C1, 0x9472, 0x9470, 0x9871, 0x995E,
+ 0x9AD6, 0x9B23, 0x9ECC, 0x7064, 0x77DA, 0x8B9A, 0x9477, 0x97C9, 0x9A62,
+ 0x9A65, 0x7E9C, 0x8B9C, 0x8EAA, 0x91C5, 0x947D, 0x947E, 0x947C, 0x9C77,
+ 0x9C78, 0x9EF7, 0x8C54, 0x947F, 0x9E1A, 0x7228, 0x9A6A, 0x9B31, 0x9E1B,
+ 0x9E1E, 0x7C72, 0x4E42, 0x4E5C, 0x51F5, 0x531A, 0x5382, 0x4E07, 0x4E0C,
+ 0x4E47, 0x4E8D, 0x56D7, 0x5C6E, 0x5F73, 0x4E0F, 0x5187, 0x4E0E, 0x4E2E,
+ 0x4E93, 0x4EC2, 0x4EC9, 0x4EC8, 0x5198, 0x52FC, 0x536C, 0x53B9, 0x5720,
+ 0x5903, 0x592C, 0x5C10, 0x5DFF, 0x65E1, 0x6BB3, 0x6BCC, 0x6C14, 0x723F,
+ 0x4E31, 0x4E3C, 0x4EE8, 0x4EDC, 0x4EE9, 0x4EE1, 0x4EDD, 0x4EDA, 0x520C,
+ 0x5209, 0x531C, 0x534C, 0x5722, 0x5723, 0x5917, 0x592F, 0x5B81, 0x5B84,
+ 0x5C12, 0x5C3B, 0x5C74, 0x5C73, 0x5E04, 0x5E80, 0x5E82, 0x5FC9, 0x6209,
+ 0x6250, 0x6C15, 0x6C36, 0x6C43, 0x6C3F, 0x6C3B, 0x72AE, 0x72B0, 0x738A,
+ 0x79B8, 0x808A, 0x961E, 0x4F0E, 0x4F18, 0x4F2C, 0x4EF5, 0x4F14, 0x4EF1,
+ 0x4F00, 0x4EF7, 0x4F08, 0x4F1D, 0x4F02, 0x4F05, 0x4F22, 0x4F13, 0x4F04,
+ 0x4EF4, 0x4F12, 0x51B1, 0x5213, 0x5210, 0x52A6, 0x5322, 0x531F, 0x534D,
+ 0x538A, 0x5407, 0x56E1, 0x56DF, 0x572E, 0x572A, 0x5734, 0x593C, 0x5980,
+ 0x597C, 0x5985, 0x597B, 0x597E, 0x5977, 0x597F, 0x5B56, 0x5C15, 0x5C25,
+ 0x5C7C, 0x5C7A, 0x5C7B, 0x5C7E, 0x5DDF, 0x5E75, 0x5E84, 0x5F02, 0x5F1A,
+ 0x5F74, 0x5FD5, 0x5FD4, 0x5FCF, 0x625C, 0x625E, 0x6264, 0x6261, 0x6266,
+ 0x6262, 0x6259, 0x6260, 0x625A, 0x6265, 0x6537, 0x65EF, 0x65EE, 0x673E,
+ 0x6739, 0x6738, 0x673B, 0x673A, 0x673F, 0x673C, 0x6733, 0x6C18, 0x6C46,
+ 0x6C52, 0x6C5C, 0x6C4F, 0x6C4A, 0x6C54, 0x6C4B, 0x6C4C, 0x7071, 0x725E,
+ 0x72B4, 0x72B5, 0x738E, 0x752A, 0x767F, 0x7A75, 0x7F51, 0x8278, 0x827C,
+ 0x8280, 0x827D, 0x827F, 0x864D, 0x897E, 0x9099, 0x9097, 0x9098, 0x909B,
+ 0x9094, 0x9622, 0x9624, 0x9620, 0x9623, 0x4F56, 0x4F3B, 0x4F62, 0x4F49,
+ 0x4F53, 0x4F64, 0x4F3E, 0x4F67, 0x4F52, 0x4F5F, 0x4F41, 0x4F58, 0x4F2D,
+ 0x4F33, 0x4F3F, 0x4F61, 0x518F, 0x51B9, 0x521C, 0x521E, 0x5221, 0x52AD,
+ 0x52AE, 0x5309, 0x5363, 0x5372, 0x538E, 0x538F, 0x5430, 0x5437, 0x542A,
+ 0x5454, 0x5445, 0x5419, 0x541C, 0x5425, 0x5418, 0x543D, 0x544F, 0x5441,
+ 0x5428, 0x5424, 0x5447, 0x56EE, 0x56E7, 0x56E5, 0x5741, 0x5745, 0x574C,
+ 0x5749, 0x574B, 0x5752, 0x5906, 0x5940, 0x59A6, 0x5998, 0x59A0, 0x5997,
+ 0x598E, 0x59A2, 0x5990, 0x598F, 0x59A7, 0x59A1, 0x5B8E, 0x5B92, 0x5C28,
+ 0x5C2A, 0x5C8D, 0x5C8F, 0x5C88, 0x5C8B, 0x5C89, 0x5C92, 0x5C8A, 0x5C86,
+ 0x5C93, 0x5C95, 0x5DE0, 0x5E0A, 0x5E0E, 0x5E8B, 0x5E89, 0x5E8C, 0x5E88,
+ 0x5E8D, 0x5F05, 0x5F1D, 0x5F78, 0x5F76, 0x5FD2, 0x5FD1, 0x5FD0, 0x5FED,
+ 0x5FE8, 0x5FEE, 0x5FF3, 0x5FE1, 0x5FE4, 0x5FE3, 0x5FFA, 0x5FEF, 0x5FF7,
+ 0x5FFB, 0x6000, 0x5FF4, 0x623A, 0x6283, 0x628C, 0x628E, 0x628F, 0x6294,
+ 0x6287, 0x6271, 0x627B, 0x627A, 0x6270, 0x6281, 0x6288, 0x6277, 0x627D,
+ 0x6272, 0x6274, 0x65F0, 0x65F4, 0x65F3, 0x65F2, 0x65F5, 0x6745, 0x6747,
+ 0x6759, 0x6755, 0x674C, 0x6748, 0x675D, 0x674D, 0x675A, 0x674B, 0x6BD0,
+ 0x6C19, 0x6C1A, 0x6C78, 0x6C67, 0x6C6B, 0x6C84, 0x6C8B, 0x6C8F, 0x6C71,
+ 0x6C6F, 0x6C69, 0x6C9A, 0x6C6D, 0x6C87, 0x6C95, 0x6C9C, 0x6C66, 0x6C73,
+ 0x6C65, 0x6C7B, 0x6C8E, 0x7074, 0x707A, 0x7263, 0x72BF, 0x72BD, 0x72C3,
+ 0x72C6, 0x72C1, 0x72BA, 0x72C5, 0x7395, 0x7397, 0x7393, 0x7394, 0x7392,
+ 0x753A, 0x7539, 0x7594, 0x7595, 0x7681, 0x793D, 0x8034, 0x8095, 0x8099,
+ 0x8090, 0x8092, 0x809C, 0x8290, 0x828F, 0x8285, 0x828E, 0x8291, 0x8293,
+ 0x828A, 0x8283, 0x8284, 0x8C78, 0x8FC9, 0x8FBF, 0x909F, 0x90A1, 0x90A5,
+ 0x909E, 0x90A7, 0x90A0, 0x9630, 0x9628, 0x962F, 0x962D, 0x4E33, 0x4F98,
+ 0x4F7C, 0x4F85, 0x4F7D, 0x4F80, 0x4F87, 0x4F76, 0x4F74, 0x4F89, 0x4F84,
+ 0x4F77, 0x4F4C, 0x4F97, 0x4F6A, 0x4F9A, 0x4F79, 0x4F81, 0x4F78, 0x4F90,
+ 0x4F9C, 0x4F94, 0x4F9E, 0x4F92, 0x4F82, 0x4F95, 0x4F6B, 0x4F6E, 0x519E,
+ 0x51BC, 0x51BE, 0x5235, 0x5232, 0x5233, 0x5246, 0x5231, 0x52BC, 0x530A,
+ 0x530B, 0x533C, 0x5392, 0x5394, 0x5487, 0x547F, 0x5481, 0x5491, 0x5482,
+ 0x5488, 0x546B, 0x547A, 0x547E, 0x5465, 0x546C, 0x5474, 0x5466, 0x548D,
+ 0x546F, 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, 0x56F7, 0x56F9,
+ 0x576F, 0x5772, 0x576D, 0x576B, 0x5771, 0x5770, 0x5776, 0x5780, 0x5775,
+ 0x577B, 0x5773, 0x5774, 0x5762, 0x5768, 0x577D, 0x590C, 0x5945, 0x59B5,
+ 0x59BA, 0x59CF, 0x59CE, 0x59B2, 0x59CC, 0x59C1, 0x59B6, 0x59BC, 0x59C3,
+ 0x59D6, 0x59B1, 0x59BD, 0x59C0, 0x59C8, 0x59B4, 0x59C7, 0x5B62, 0x5B65,
+ 0x5B93, 0x5B95, 0x5C44, 0x5C47, 0x5CAE, 0x5CA4, 0x5CA0, 0x5CB5, 0x5CAF,
+ 0x5CA8, 0x5CAC, 0x5C9F, 0x5CA3, 0x5CAD, 0x5CA2, 0x5CAA, 0x5CA7, 0x5C9D,
+ 0x5CA5, 0x5CB6, 0x5CB0, 0x5CA6, 0x5E17, 0x5E14, 0x5E19, 0x5F28, 0x5F22,
+ 0x5F23, 0x5F24, 0x5F54, 0x5F82, 0x5F7E, 0x5F7D, 0x5FDE, 0x5FE5, 0x602D,
+ 0x6026, 0x6019, 0x6032, 0x600B, 0x6034, 0x600A, 0x6017, 0x6033, 0x601A,
+ 0x601E, 0x602C, 0x6022, 0x600D, 0x6010, 0x602E, 0x6013, 0x6011, 0x600C,
+ 0x6009, 0x601C, 0x6214, 0x623D, 0x62AD, 0x62B4, 0x62D1, 0x62BE, 0x62AA,
+ 0x62B6, 0x62CA, 0x62AE, 0x62B3, 0x62AF, 0x62BB, 0x62A9, 0x62B0, 0x62B8,
+ 0x653D, 0x65A8, 0x65BB, 0x6609, 0x65FC, 0x6604, 0x6612, 0x6608, 0x65FB,
+ 0x6603, 0x660B, 0x660D, 0x6605, 0x65FD, 0x6611, 0x6610, 0x66F6, 0x670A,
+ 0x6785, 0x676C, 0x678E, 0x6792, 0x6776, 0x677B, 0x6798, 0x6786, 0x6784,
+ 0x6774, 0x678D, 0x678C, 0x677A, 0x679F, 0x6791, 0x6799, 0x6783, 0x677D,
+ 0x6781, 0x6778, 0x6779, 0x6794, 0x6B25, 0x6B80, 0x6B7E, 0x6BDE, 0x6C1D,
+ 0x6C93, 0x6CEC, 0x6CEB, 0x6CEE, 0x6CD9, 0x6CB6, 0x6CD4, 0x6CAD, 0x6CE7,
+ 0x6CB7, 0x6CD0, 0x6CC2, 0x6CBA, 0x6CC3, 0x6CC6, 0x6CED, 0x6CF2, 0x6CD2,
+ 0x6CDD, 0x6CB4, 0x6C8A, 0x6C9D, 0x6C80, 0x6CDE, 0x6CC0, 0x6D30, 0x6CCD,
+ 0x6CC7, 0x6CB0, 0x6CF9, 0x6CCF, 0x6CE9, 0x6CD1, 0x7094, 0x7098, 0x7085,
+ 0x7093, 0x7086, 0x7084, 0x7091, 0x7096, 0x7082, 0x709A, 0x7083, 0x726A,
+ 0x72D6, 0x72CB, 0x72D8, 0x72C9, 0x72DC, 0x72D2, 0x72D4, 0x72DA, 0x72CC,
+ 0x72D1, 0x73A4, 0x73A1, 0x73AD, 0x73A6, 0x73A2, 0x73A0, 0x73AC, 0x739D,
+ 0x74DD, 0x74E8, 0x753F, 0x7540, 0x753E, 0x758C, 0x7598, 0x76AF, 0x76F3,
+ 0x76F1, 0x76F0, 0x76F5, 0x77F8, 0x77FC, 0x77F9, 0x77FB, 0x77FA, 0x77F7,
+ 0x7942, 0x793F, 0x79C5, 0x7A78, 0x7A7B, 0x7AFB, 0x7C75, 0x7CFD, 0x8035,
+ 0x808F, 0x80AE, 0x80A3, 0x80B8, 0x80B5, 0x80AD, 0x8220, 0x82A0, 0x82C0,
+ 0x82AB, 0x829A, 0x8298, 0x829B, 0x82B5, 0x82A7, 0x82AE, 0x82BC, 0x829E,
+ 0x82BA, 0x82B4, 0x82A8, 0x82A1, 0x82A9, 0x82C2, 0x82A4, 0x82C3, 0x82B6,
+ 0x82A2, 0x8670, 0x866F, 0x866D, 0x866E, 0x8C56, 0x8FD2, 0x8FCB, 0x8FD3,
+ 0x8FCD, 0x8FD6, 0x8FD5, 0x8FD7, 0x90B2, 0x90B4, 0x90AF, 0x90B3, 0x90B0,
+ 0x9639, 0x963D, 0x963C, 0x963A, 0x9643, 0x4FCD, 0x4FC5, 0x4FD3, 0x4FB2,
+ 0x4FC9, 0x4FCB, 0x4FC1, 0x4FD4, 0x4FDC, 0x4FD9, 0x4FBB, 0x4FB3, 0x4FDB,
+ 0x4FC7, 0x4FD6, 0x4FBA, 0x4FC0, 0x4FB9, 0x4FEC, 0x5244, 0x5249, 0x52C0,
+ 0x52C2, 0x533D, 0x537C, 0x5397, 0x5396, 0x5399, 0x5398, 0x54BA, 0x54A1,
+ 0x54AD, 0x54A5, 0x54CF, 0x54C3, 0x830D, 0x54B7, 0x54AE, 0x54D6, 0x54B6,
+ 0x54C5, 0x54C6, 0x54A0, 0x5470, 0x54BC, 0x54A2, 0x54BE, 0x5472, 0x54DE,
+ 0x54B0, 0x57B5, 0x579E, 0x579F, 0x57A4, 0x578C, 0x5797, 0x579D, 0x579B,
+ 0x5794, 0x5798, 0x578F, 0x5799, 0x57A5, 0x579A, 0x5795, 0x58F4, 0x590D,
+ 0x5953, 0x59E1, 0x59DE, 0x59EE, 0x5A00, 0x59F1, 0x59DD, 0x59FA, 0x59FD,
+ 0x59FC, 0x59F6, 0x59E4, 0x59F2, 0x59F7, 0x59DB, 0x59E9, 0x59F3, 0x59F5,
+ 0x59E0, 0x59FE, 0x59F4, 0x59ED, 0x5BA8, 0x5C4C, 0x5CD0, 0x5CD8, 0x5CCC,
+ 0x5CD7, 0x5CCB, 0x5CDB, 0x5CDE, 0x5CDA, 0x5CC9, 0x5CC7, 0x5CCA, 0x5CD6,
+ 0x5CD3, 0x5CD4, 0x5CCF, 0x5CC8, 0x5CC6, 0x5CCE, 0x5CDF, 0x5CF8, 0x5DF9,
+ 0x5E21, 0x5E22, 0x5E23, 0x5E20, 0x5E24, 0x5EB0, 0x5EA4, 0x5EA2, 0x5E9B,
+ 0x5EA3, 0x5EA5, 0x5F07, 0x5F2E, 0x5F56, 0x5F86, 0x6037, 0x6039, 0x6054,
+ 0x6072, 0x605E, 0x6045, 0x6053, 0x6047, 0x6049, 0x605B, 0x604C, 0x6040,
+ 0x6042, 0x605F, 0x6024, 0x6044, 0x6058, 0x6066, 0x606E, 0x6242, 0x6243,
+ 0x62CF, 0x630D, 0x630B, 0x62F5, 0x630E, 0x6303, 0x62EB, 0x62F9, 0x630F,
+ 0x630C, 0x62F8, 0x62F6, 0x6300, 0x6313, 0x6314, 0x62FA, 0x6315, 0x62FB,
+ 0x62F0, 0x6541, 0x6543, 0x65AA, 0x65BF, 0x6636, 0x6621, 0x6632, 0x6635,
+ 0x661C, 0x6626, 0x6622, 0x6633, 0x662B, 0x663A, 0x661D, 0x6634, 0x6639,
+ 0x662E, 0x670F, 0x6710, 0x67C1, 0x67F2, 0x67C8, 0x67BA, 0x67DC, 0x67BB,
+ 0x67F8, 0x67D8, 0x67C0, 0x67B7, 0x67C5, 0x67EB, 0x67E4, 0x67DF, 0x67B5,
+ 0x67CD, 0x67B3, 0x67F7, 0x67F6, 0x67EE, 0x67E3, 0x67C2, 0x67B9, 0x67CE,
+ 0x67E7, 0x67F0, 0x67B2, 0x67FC, 0x67C6, 0x67ED, 0x67CC, 0x67AE, 0x67E6,
+ 0x67DB, 0x67FA, 0x67C9, 0x67CA, 0x67C3, 0x67EA, 0x67CB, 0x6B28, 0x6B82,
+ 0x6B84, 0x6BB6, 0x6BD6, 0x6BD8, 0x6BE0, 0x6C20, 0x6C21, 0x6D28, 0x6D34,
+ 0x6D2D, 0x6D1F, 0x6D3C, 0x6D3F, 0x6D12, 0x6D0A, 0x6CDA, 0x6D33, 0x6D04,
+ 0x6D19, 0x6D3A, 0x6D1A, 0x6D11, 0x6D00, 0x6D1D, 0x6D42, 0x6D01, 0x6D18,
+ 0x6D37, 0x6D03, 0x6D0F, 0x6D40, 0x6D07, 0x6D20, 0x6D2C, 0x6D08, 0x6D22,
+ 0x6D09, 0x6D10, 0x70B7, 0x709F, 0x70BE, 0x70B1, 0x70B0, 0x70A1, 0x70B4,
+ 0x70B5, 0x70A9, 0x7241, 0x7249, 0x724A, 0x726C, 0x7270, 0x7273, 0x726E,
+ 0x72CA, 0x72E4, 0x72E8, 0x72EB, 0x72DF, 0x72EA, 0x72E6, 0x72E3, 0x7385,
+ 0x73CC, 0x73C2, 0x73C8, 0x73C5, 0x73B9, 0x73B6, 0x73B5, 0x73B4, 0x73EB,
+ 0x73BF, 0x73C7, 0x73BE, 0x73C3, 0x73C6, 0x73B8, 0x73CB, 0x74EC, 0x74EE,
+ 0x752E, 0x7547, 0x7548, 0x75A7, 0x75AA, 0x7679, 0x76C4, 0x7708, 0x7703,
+ 0x7704, 0x7705, 0x770A, 0x76F7, 0x76FB, 0x76FA, 0x77E7, 0x77E8, 0x7806,
+ 0x7811, 0x7812, 0x7805, 0x7810, 0x780F, 0x780E, 0x7809, 0x7803, 0x7813,
+ 0x794A, 0x794C, 0x794B, 0x7945, 0x7944, 0x79D5, 0x79CD, 0x79CF, 0x79D6,
+ 0x79CE, 0x7A80, 0x7A7E, 0x7AD1, 0x7B00, 0x7B01, 0x7C7A, 0x7C78, 0x7C79,
+ 0x7C7F, 0x7C80, 0x7C81, 0x7D03, 0x7D08, 0x7D01, 0x7F58, 0x7F91, 0x7F8D,
+ 0x7FBE, 0x8007, 0x800E, 0x800F, 0x8014, 0x8037, 0x80D8, 0x80C7, 0x80E0,
+ 0x80D1, 0x80C8, 0x80C2, 0x80D0, 0x80C5, 0x80E3, 0x80D9, 0x80DC, 0x80CA,
+ 0x80D5, 0x80C9, 0x80CF, 0x80D7, 0x80E6, 0x80CD, 0x81FF, 0x8221, 0x8294,
+ 0x82D9, 0x82FE, 0x82F9, 0x8307, 0x82E8, 0x8300, 0x82D5, 0x833A, 0x82EB,
+ 0x82D6, 0x82F4, 0x82EC, 0x82E1, 0x82F2, 0x82F5, 0x830C, 0x82FB, 0x82F6,
+ 0x82F0, 0x82EA, 0x82E4, 0x82E0, 0x82FA, 0x82F3, 0x82ED, 0x8677, 0x8674,
+ 0x867C, 0x8673, 0x8841, 0x884E, 0x8867, 0x886A, 0x8869, 0x89D3, 0x8A04,
+ 0x8A07, 0x8D72, 0x8FE3, 0x8FE1, 0x8FEE, 0x8FE0, 0x90F1, 0x90BD, 0x90BF,
+ 0x90D5, 0x90C5, 0x90BE, 0x90C7, 0x90CB, 0x90C8, 0x91D4, 0x91D3, 0x9654,
+ 0x964F, 0x9651, 0x9653, 0x964A, 0x964E, 0x501E, 0x5005, 0x5007, 0x5013,
+ 0x5022, 0x5030, 0x501B, 0x4FF5, 0x4FF4, 0x5033, 0x5037, 0x502C, 0x4FF6,
+ 0x4FF7, 0x5017, 0x501C, 0x5020, 0x5027, 0x5035, 0x502F, 0x5031, 0x500E,
+ 0x515A, 0x5194, 0x5193, 0x51CA, 0x51C4, 0x51C5, 0x51C8, 0x51CE, 0x5261,
+ 0x525A, 0x5252, 0x525E, 0x525F, 0x5255, 0x5262, 0x52CD, 0x530E, 0x539E,
+ 0x5526, 0x54E2, 0x5517, 0x5512, 0x54E7, 0x54F3, 0x54E4, 0x551A, 0x54FF,
+ 0x5504, 0x5508, 0x54EB, 0x5511, 0x5505, 0x54F1, 0x550A, 0x54FB, 0x54F7,
+ 0x54F8, 0x54E0, 0x550E, 0x5503, 0x550B, 0x5701, 0x5702, 0x57CC, 0x5832,
+ 0x57D5, 0x57D2, 0x57BA, 0x57C6, 0x57BD, 0x57BC, 0x57B8, 0x57B6, 0x57BF,
+ 0x57C7, 0x57D0, 0x57B9, 0x57C1, 0x590E, 0x594A, 0x5A19, 0x5A16, 0x5A2D,
+ 0x5A2E, 0x5A15, 0x5A0F, 0x5A17, 0x5A0A, 0x5A1E, 0x5A33, 0x5B6C, 0x5BA7,
+ 0x5BAD, 0x5BAC, 0x5C03, 0x5C56, 0x5C54, 0x5CEC, 0x5CFF, 0x5CEE, 0x5CF1,
+ 0x5CF7, 0x5D00, 0x5CF9, 0x5E29, 0x5E28, 0x5EA8, 0x5EAE, 0x5EAA, 0x5EAC,
+ 0x5F33, 0x5F30, 0x5F67, 0x605D, 0x605A, 0x6067, 0x6041, 0x60A2, 0x6088,
+ 0x6080, 0x6092, 0x6081, 0x609D, 0x6083, 0x6095, 0x609B, 0x6097, 0x6087,
+ 0x609C, 0x608E, 0x6219, 0x6246, 0x62F2, 0x6310, 0x6356, 0x632C, 0x6344,
+ 0x6345, 0x6336, 0x6343, 0x63E4, 0x6339, 0x634B, 0x634A, 0x633C, 0x6329,
+ 0x6341, 0x6334, 0x6358, 0x6354, 0x6359, 0x632D, 0x6347, 0x6333, 0x635A,
+ 0x6351, 0x6338, 0x6357, 0x6340, 0x6348, 0x654A, 0x6546, 0x65C6, 0x65C3,
+ 0x65C4, 0x65C2, 0x664A, 0x665F, 0x6647, 0x6651, 0x6712, 0x6713, 0x681F,
+ 0x681A, 0x6849, 0x6832, 0x6833, 0x683B, 0x684B, 0x684F, 0x6816, 0x6831,
+ 0x681C, 0x6835, 0x682B, 0x682D, 0x682F, 0x684E, 0x6844, 0x6834, 0x681D,
+ 0x6812, 0x6814, 0x6826, 0x6828, 0x682E, 0x684D, 0x683A, 0x6825, 0x6820,
+ 0x6B2C, 0x6B2F, 0x6B2D, 0x6B31, 0x6B34, 0x6B6D, 0x8082, 0x6B88, 0x6BE6,
+ 0x6BE4, 0x6BE8, 0x6BE3, 0x6BE2, 0x6BE7, 0x6C25, 0x6D7A, 0x6D63, 0x6D64,
+ 0x6D76, 0x6D0D, 0x6D61, 0x6D92, 0x6D58, 0x6D62, 0x6D6D, 0x6D6F, 0x6D91,
+ 0x6D8D, 0x6DEF, 0x6D7F, 0x6D86, 0x6D5E, 0x6D67, 0x6D60, 0x6D97, 0x6D70,
+ 0x6D7C, 0x6D5F, 0x6D82, 0x6D98, 0x6D2F, 0x6D68, 0x6D8B, 0x6D7E, 0x6D80,
+ 0x6D84, 0x6D16, 0x6D83, 0x6D7B, 0x6D7D, 0x6D75, 0x6D90, 0x70DC, 0x70D3,
+ 0x70D1, 0x70DD, 0x70CB, 0x7F39, 0x70E2, 0x70D7, 0x70D2, 0x70DE, 0x70E0,
+ 0x70D4, 0x70CD, 0x70C5, 0x70C6, 0x70C7, 0x70DA, 0x70CE, 0x70E1, 0x7242,
+ 0x7278, 0x7277, 0x7276, 0x7300, 0x72FA, 0x72F4, 0x72FE, 0x72F6, 0x72F3,
+ 0x72FB, 0x7301, 0x73D3, 0x73D9, 0x73E5, 0x73D6, 0x73BC, 0x73E7, 0x73E3,
+ 0x73E9, 0x73DC, 0x73D2, 0x73DB, 0x73D4, 0x73DD, 0x73DA, 0x73D7, 0x73D8,
+ 0x73E8, 0x74DE, 0x74DF, 0x74F4, 0x74F5, 0x7521, 0x755B, 0x755F, 0x75B0,
+ 0x75C1, 0x75BB, 0x75C4, 0x75C0, 0x75BF, 0x75B6, 0x75BA, 0x768A, 0x76C9,
+ 0x771D, 0x771B, 0x7710, 0x7713, 0x7712, 0x7723, 0x7711, 0x7715, 0x7719,
+ 0x771A, 0x7722, 0x7727, 0x7823, 0x782C, 0x7822, 0x7835, 0x782F, 0x7828,
+ 0x782E, 0x782B, 0x7821, 0x7829, 0x7833, 0x782A, 0x7831, 0x7954, 0x795B,
+ 0x794F, 0x795C, 0x7953, 0x7952, 0x7951, 0x79EB, 0x79EC, 0x79E0, 0x79EE,
+ 0x79ED, 0x79EA, 0x79DC, 0x79DE, 0x79DD, 0x7A86, 0x7A89, 0x7A85, 0x7A8B,
+ 0x7A8C, 0x7A8A, 0x7A87, 0x7AD8, 0x7B10, 0x7B04, 0x7B13, 0x7B05, 0x7B0F,
+ 0x7B08, 0x7B0A, 0x7B0E, 0x7B09, 0x7B12, 0x7C84, 0x7C91, 0x7C8A, 0x7C8C,
+ 0x7C88, 0x7C8D, 0x7C85, 0x7D1E, 0x7D1D, 0x7D11, 0x7D0E, 0x7D18, 0x7D16,
+ 0x7D13, 0x7D1F, 0x7D12, 0x7D0F, 0x7D0C, 0x7F5C, 0x7F61, 0x7F5E, 0x7F60,
+ 0x7F5D, 0x7F5B, 0x7F96, 0x7F92, 0x7FC3, 0x7FC2, 0x7FC0, 0x8016, 0x803E,
+ 0x8039, 0x80FA, 0x80F2, 0x80F9, 0x80F5, 0x8101, 0x80FB, 0x8100, 0x8201,
+ 0x822F, 0x8225, 0x8333, 0x832D, 0x8344, 0x8319, 0x8351, 0x8325, 0x8356,
+ 0x833F, 0x8341, 0x8326, 0x831C, 0x8322, 0x8342, 0x834E, 0x831B, 0x832A,
+ 0x8308, 0x833C, 0x834D, 0x8316, 0x8324, 0x8320, 0x8337, 0x832F, 0x8329,
+ 0x8347, 0x8345, 0x834C, 0x8353, 0x831E, 0x832C, 0x834B, 0x8327, 0x8348,
+ 0x8653, 0x8652, 0x86A2, 0x86A8, 0x8696, 0x868D, 0x8691, 0x869E, 0x8687,
+ 0x8697, 0x8686, 0x868B, 0x869A, 0x8685, 0x86A5, 0x8699, 0x86A1, 0x86A7,
+ 0x8695, 0x8698, 0x868E, 0x869D, 0x8690, 0x8694, 0x8843, 0x8844, 0x886D,
+ 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887F, 0x886F, 0x8883, 0x887E,
+ 0x8874, 0x887C, 0x8A12, 0x8C47, 0x8C57, 0x8C7B, 0x8CA4, 0x8CA3, 0x8D76,
+ 0x8D78, 0x8DB5, 0x8DB7, 0x8DB6, 0x8ED1, 0x8ED3, 0x8FFE, 0x8FF5, 0x9002,
+ 0x8FFF, 0x8FFB, 0x9004, 0x8FFC, 0x8FF6, 0x90D6, 0x90E0, 0x90D9, 0x90DA,
+ 0x90E3, 0x90DF, 0x90E5, 0x90D8, 0x90DB, 0x90D7, 0x90DC, 0x90E4, 0x9150,
+ 0x914E, 0x914F, 0x91D5, 0x91E2, 0x91DA, 0x965C, 0x965F, 0x96BC, 0x98E3,
+ 0x9ADF, 0x9B2F, 0x4E7F, 0x5070, 0x506A, 0x5061, 0x505E, 0x5060, 0x5053,
+ 0x504B, 0x505D, 0x5072, 0x5048, 0x504D, 0x5041, 0x505B, 0x504A, 0x5062,
+ 0x5015, 0x5045, 0x505F, 0x5069, 0x506B, 0x5063, 0x5064, 0x5046, 0x5040,
+ 0x506E, 0x5073, 0x5057, 0x5051, 0x51D0, 0x526B, 0x526D, 0x526C, 0x526E,
+ 0x52D6, 0x52D3, 0x532D, 0x539C, 0x5575, 0x5576, 0x553C, 0x554D, 0x5550,
+ 0x5534, 0x552A, 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545,
+ 0x550C, 0x5532, 0x5565, 0x554E, 0x5539, 0x5548, 0x552D, 0x553B, 0x5540,
+ 0x554B, 0x570A, 0x5707, 0x57FB, 0x5814, 0x57E2, 0x57F6, 0x57DC, 0x57F4,
+ 0x5800, 0x57ED, 0x57FD, 0x5808, 0x57F8, 0x580B, 0x57F3, 0x57CF, 0x5807,
+ 0x57EE, 0x57E3, 0x57F2, 0x57E5, 0x57EC, 0x57E1, 0x580E, 0x57FC, 0x5810,
+ 0x57E7, 0x5801, 0x580C, 0x57F1, 0x57E9, 0x57F0, 0x580D, 0x5804, 0x595C,
+ 0x5A60, 0x5A58, 0x5A55, 0x5A67, 0x5A5E, 0x5A38, 0x5A35, 0x5A6D, 0x5A50,
+ 0x5A5F, 0x5A65, 0x5A6C, 0x5A53, 0x5A64, 0x5A57, 0x5A43, 0x5A5D, 0x5A52,
+ 0x5A44, 0x5A5B, 0x5A48, 0x5A8E, 0x5A3E, 0x5A4D, 0x5A39, 0x5A4C, 0x5A70,
+ 0x5A69, 0x5A47, 0x5A51, 0x5A56, 0x5A42, 0x5A5C, 0x5B72, 0x5B6E, 0x5BC1,
+ 0x5BC0, 0x5C59, 0x5D1E, 0x5D0B, 0x5D1D, 0x5D1A, 0x5D20, 0x5D0C, 0x5D28,
+ 0x5D0D, 0x5D26, 0x5D25, 0x5D0F, 0x5D30, 0x5D12, 0x5D23, 0x5D1F, 0x5D2E,
+ 0x5E3E, 0x5E34, 0x5EB1, 0x5EB4, 0x5EB9, 0x5EB2, 0x5EB3, 0x5F36, 0x5F38,
+ 0x5F9B, 0x5F96, 0x5F9F, 0x608A, 0x6090, 0x6086, 0x60BE, 0x60B0, 0x60BA,
+ 0x60D3, 0x60D4, 0x60CF, 0x60E4, 0x60D9, 0x60DD, 0x60C8, 0x60B1, 0x60DB,
+ 0x60B7, 0x60CA, 0x60BF, 0x60C3, 0x60CD, 0x60C0, 0x6332, 0x6365, 0x638A,
+ 0x6382, 0x637D, 0x63BD, 0x639E, 0x63AD, 0x639D, 0x6397, 0x63AB, 0x638E,
+ 0x636F, 0x6387, 0x6390, 0x636E, 0x63AF, 0x6375, 0x639C, 0x636D, 0x63AE,
+ 0x637C, 0x63A4, 0x633B, 0x639F, 0x6378, 0x6385, 0x6381, 0x6391, 0x638D,
+ 0x6370, 0x6553, 0x65CD, 0x6665, 0x6661, 0x665B, 0x6659, 0x665C, 0x6662,
+ 0x6718, 0x6879, 0x6887, 0x6890, 0x689C, 0x686D, 0x686E, 0x68AE, 0x68AB,
+ 0x6956, 0x686F, 0x68A3, 0x68AC, 0x68A9, 0x6875, 0x6874, 0x68B2, 0x688F,
+ 0x6877, 0x6892, 0x687C, 0x686B, 0x6872, 0x68AA, 0x6880, 0x6871, 0x687E,
+ 0x689B, 0x6896, 0x688B, 0x68A0, 0x6889, 0x68A4, 0x6878, 0x687B, 0x6891,
+ 0x688C, 0x688A, 0x687D, 0x6B36, 0x6B33, 0x6B37, 0x6B38, 0x6B91, 0x6B8F,
+ 0x6B8D, 0x6B8E, 0x6B8C, 0x6C2A, 0x6DC0, 0x6DAB, 0x6DB4, 0x6DB3, 0x6E74,
+ 0x6DAC, 0x6DE9, 0x6DE2, 0x6DB7, 0x6DF6, 0x6DD4, 0x6E00, 0x6DC8, 0x6DE0,
+ 0x6DDF, 0x6DD6, 0x6DBE, 0x6DE5, 0x6DDC, 0x6DDD, 0x6DDB, 0x6DF4, 0x6DCA,
+ 0x6DBD, 0x6DED, 0x6DF0, 0x6DBA, 0x6DD5, 0x6DC2, 0x6DCF, 0x6DC9, 0x6DD0,
+ 0x6DF2, 0x6DD3, 0x6DFD, 0x6DD7, 0x6DCD, 0x6DE3, 0x6DBB, 0x70FA, 0x710D,
+ 0x70F7, 0x7117, 0x70F4, 0x710C, 0x70F0, 0x7104, 0x70F3, 0x7110, 0x70FC,
+ 0x70FF, 0x7106, 0x7113, 0x7100, 0x70F8, 0x70F6, 0x710B, 0x7102, 0x710E,
+ 0x727E, 0x727B, 0x727C, 0x727F, 0x731D, 0x7317, 0x7307, 0x7311, 0x7318,
+ 0x730A, 0x7308, 0x72FF, 0x730F, 0x731E, 0x7388, 0x73F6, 0x73F8, 0x73F5,
+ 0x7404, 0x7401, 0x73FD, 0x7407, 0x7400, 0x73FA, 0x73FC, 0x73FF, 0x740C,
+ 0x740B, 0x73F4, 0x7408, 0x7564, 0x7563, 0x75CE, 0x75D2, 0x75CF, 0x75CB,
+ 0x75CC, 0x75D1, 0x75D0, 0x768F, 0x7689, 0x76D3, 0x7739, 0x772F, 0x772D,
+ 0x7731, 0x7732, 0x7734, 0x7733, 0x773D, 0x7725, 0x773B, 0x7735, 0x7848,
+ 0x7852, 0x7849, 0x784D, 0x784A, 0x784C, 0x7826, 0x7845, 0x7850, 0x7964,
+ 0x7967, 0x7969, 0x796A, 0x7963, 0x796B, 0x7961, 0x79BB, 0x79FA, 0x79F8,
+ 0x79F6, 0x79F7, 0x7A8F, 0x7A94, 0x7A90, 0x7B35, 0x7B3B, 0x7B34, 0x7B25,
+ 0x7B30, 0x7B22, 0x7B24, 0x7B33, 0x7B18, 0x7B2A, 0x7B1D, 0x7B31, 0x7B2B,
+ 0x7B2D, 0x7B2F, 0x7B32, 0x7B38, 0x7B1A, 0x7B23, 0x7C94, 0x7C98, 0x7C96,
+ 0x7CA3, 0x7D35, 0x7D3D, 0x7D38, 0x7D36, 0x7D3A, 0x7D45, 0x7D2C, 0x7D29,
+ 0x7D41, 0x7D47, 0x7D3E, 0x7D3F, 0x7D4A, 0x7D3B, 0x7D28, 0x7F63, 0x7F95,
+ 0x7F9C, 0x7F9D, 0x7F9B, 0x7FCA, 0x7FCB, 0x7FCD, 0x7FD0, 0x7FD1, 0x7FC7,
+ 0x7FCF, 0x7FC9, 0x801F, 0x801E, 0x801B, 0x8047, 0x8043, 0x8048, 0x8118,
+ 0x8125, 0x8119, 0x811B, 0x812D, 0x811F, 0x812C, 0x811E, 0x8121, 0x8115,
+ 0x8127, 0x811D, 0x8122, 0x8211, 0x8238, 0x8233, 0x823A, 0x8234, 0x8232,
+ 0x8274, 0x8390, 0x83A3, 0x83A8, 0x838D, 0x837A, 0x8373, 0x83A4, 0x8374,
+ 0x838F, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83A9, 0x837D, 0x8383,
+ 0x838C, 0x839D, 0x839B, 0x83AA, 0x838B, 0x837E, 0x83A5, 0x83AF, 0x8388,
+ 0x8397, 0x83B0, 0x837F, 0x83A6, 0x8387, 0x83AE, 0x8376, 0x8659, 0x8656,
+ 0x86BF, 0x86B7, 0x86C2, 0x86C1, 0x86C5, 0x86BA, 0x86B0, 0x86C8, 0x86B9,
+ 0x86B3, 0x86B8, 0x86CC, 0x86B4, 0x86BB, 0x86BC, 0x86C3, 0x86BD, 0x86BE,
+ 0x8852, 0x8889, 0x8895, 0x88A8, 0x88A2, 0x88AA, 0x889A, 0x8891, 0x88A1,
+ 0x889F, 0x8898, 0x88A7, 0x8899, 0x889B, 0x8897, 0x88A4, 0x88AC, 0x888C,
+ 0x8893, 0x888E, 0x8982, 0x89D6, 0x89D9, 0x89D5, 0x8A30, 0x8A27, 0x8A2C,
+ 0x8A1E, 0x8C39, 0x8C3B, 0x8C5C, 0x8C5D, 0x8C7D, 0x8CA5, 0x8D7D, 0x8D7B,
+ 0x8D79, 0x8DBC, 0x8DC2, 0x8DB9, 0x8DBF, 0x8DC1, 0x8ED8, 0x8EDE, 0x8EDD,
+ 0x8EDC, 0x8ED7, 0x8EE0, 0x8EE1, 0x9024, 0x900B, 0x9011, 0x901C, 0x900C,
+ 0x9021, 0x90EF, 0x90EA, 0x90F0, 0x90F4, 0x90F2, 0x90F3, 0x90D4, 0x90EB,
+ 0x90EC, 0x90E9, 0x9156, 0x9158, 0x915A, 0x9153, 0x9155, 0x91EC, 0x91F4,
+ 0x91F1, 0x91F3, 0x91F8, 0x91E4, 0x91F9, 0x91EA, 0x91EB, 0x91F7, 0x91E8,
+ 0x91EE, 0x957A, 0x9586, 0x9588, 0x967C, 0x966D, 0x966B, 0x9671, 0x966F,
+ 0x96BF, 0x976A, 0x9804, 0x98E5, 0x9997, 0x509B, 0x5095, 0x5094, 0x509E,
+ 0x508B, 0x50A3, 0x5083, 0x508C, 0x508E, 0x509D, 0x5068, 0x509C, 0x5092,
+ 0x5082, 0x5087, 0x515F, 0x51D4, 0x5312, 0x5311, 0x53A4, 0x53A7, 0x5591,
+ 0x55A8, 0x55A5, 0x55AD, 0x5577, 0x5645, 0x55A2, 0x5593, 0x5588, 0x558F,
+ 0x55B5, 0x5581, 0x55A3, 0x5592, 0x55A4, 0x557D, 0x558C, 0x55A6, 0x557F,
+ 0x5595, 0x55A1, 0x558E, 0x570C, 0x5829, 0x5837, 0x5819, 0x581E, 0x5827,
+ 0x5823, 0x5828, 0x57F5, 0x5848, 0x5825, 0x581C, 0x581B, 0x5833, 0x583F,
+ 0x5836, 0x582E, 0x5839, 0x5838, 0x582D, 0x582C, 0x583B, 0x5961, 0x5AAF,
+ 0x5A94, 0x5A9F, 0x5A7A, 0x5AA2, 0x5A9E, 0x5A78, 0x5AA6, 0x5A7C, 0x5AA5,
+ 0x5AAC, 0x5A95, 0x5AAE, 0x5A37, 0x5A84, 0x5A8A, 0x5A97, 0x5A83, 0x5A8B,
+ 0x5AA9, 0x5A7B, 0x5A7D, 0x5A8C, 0x5A9C, 0x5A8F, 0x5A93, 0x5A9D, 0x5BEA,
+ 0x5BCD, 0x5BCB, 0x5BD4, 0x5BD1, 0x5BCA, 0x5BCE, 0x5C0C, 0x5C30, 0x5D37,
+ 0x5D43, 0x5D6B, 0x5D41, 0x5D4B, 0x5D3F, 0x5D35, 0x5D51, 0x5D4E, 0x5D55,
+ 0x5D33, 0x5D3A, 0x5D52, 0x5D3D, 0x5D31, 0x5D59, 0x5D42, 0x5D39, 0x5D49,
+ 0x5D38, 0x5D3C, 0x5D32, 0x5D36, 0x5D40, 0x5D45, 0x5E44, 0x5E41, 0x5F58,
+ 0x5FA6, 0x5FA5, 0x5FAB, 0x60C9, 0x60B9, 0x60CC, 0x60E2, 0x60CE, 0x60C4,
+ 0x6114, 0x60F2, 0x610A, 0x6116, 0x6105, 0x60F5, 0x6113, 0x60F8, 0x60FC,
+ 0x60FE, 0x60C1, 0x6103, 0x6118, 0x611D, 0x6110, 0x60FF, 0x6104, 0x610B,
+ 0x624A, 0x6394, 0x63B1, 0x63B0, 0x63CE, 0x63E5, 0x63E8, 0x63EF, 0x63C3,
+ 0x649D, 0x63F3, 0x63CA, 0x63E0, 0x63F6, 0x63D5, 0x63F2, 0x63F5, 0x6461,
+ 0x63DF, 0x63BE, 0x63DD, 0x63DC, 0x63C4, 0x63D8, 0x63D3, 0x63C2, 0x63C7,
+ 0x63CC, 0x63CB, 0x63C8, 0x63F0, 0x63D7, 0x63D9, 0x6532, 0x6567, 0x656A,
+ 0x6564, 0x655C, 0x6568, 0x6565, 0x658C, 0x659D, 0x659E, 0x65AE, 0x65D0,
+ 0x65D2, 0x667C, 0x666C, 0x667B, 0x6680, 0x6671, 0x6679, 0x666A, 0x6672,
+ 0x6701, 0x690C, 0x68D3, 0x6904, 0x68DC, 0x692A, 0x68EC, 0x68EA, 0x68F1,
+ 0x690F, 0x68D6, 0x68F7, 0x68EB, 0x68E4, 0x68F6, 0x6913, 0x6910, 0x68F3,
+ 0x68E1, 0x6907, 0x68CC, 0x6908, 0x6970, 0x68B4, 0x6911, 0x68EF, 0x68C6,
+ 0x6914, 0x68F8, 0x68D0, 0x68FD, 0x68FC, 0x68E8, 0x690B, 0x690A, 0x6917,
+ 0x68CE, 0x68C8, 0x68DD, 0x68DE, 0x68E6, 0x68F4, 0x68D1, 0x6906, 0x68D4,
+ 0x68E9, 0x6915, 0x6925, 0x68C7, 0x6B39, 0x6B3B, 0x6B3F, 0x6B3C, 0x6B94,
+ 0x6B97, 0x6B99, 0x6B95, 0x6BBD, 0x6BF0, 0x6BF2, 0x6BF3, 0x6C30, 0x6DFC,
+ 0x6E46, 0x6E47, 0x6E1F, 0x6E49, 0x6E88, 0x6E3C, 0x6E3D, 0x6E45, 0x6E62,
+ 0x6E2B, 0x6E3F, 0x6E41, 0x6E5D, 0x6E73, 0x6E1C, 0x6E33, 0x6E4B, 0x6E40,
+ 0x6E51, 0x6E3B, 0x6E03, 0x6E2E, 0x6E5E, 0x6E68, 0x6E5C, 0x6E61, 0x6E31,
+ 0x6E28, 0x6E60, 0x6E71, 0x6E6B, 0x6E39, 0x6E22, 0x6E30, 0x6E53, 0x6E65,
+ 0x6E27, 0x6E78, 0x6E64, 0x6E77, 0x6E55, 0x6E79, 0x6E52, 0x6E66, 0x6E35,
+ 0x6E36, 0x6E5A, 0x7120, 0x711E, 0x712F, 0x70FB, 0x712E, 0x7131, 0x7123,
+ 0x7125, 0x7122, 0x7132, 0x711F, 0x7128, 0x713A, 0x711B, 0x724B, 0x725A,
+ 0x7288, 0x7289, 0x7286, 0x7285, 0x728B, 0x7312, 0x730B, 0x7330, 0x7322,
+ 0x7331, 0x7333, 0x7327, 0x7332, 0x732D, 0x7326, 0x7323, 0x7335, 0x730C,
+ 0x742E, 0x742C, 0x7430, 0x742B, 0x7416, 0x741A, 0x7421, 0x742D, 0x7431,
+ 0x7424, 0x7423, 0x741D, 0x7429, 0x7420, 0x7432, 0x74FB, 0x752F, 0x756F,
+ 0x756C, 0x75E7, 0x75DA, 0x75E1, 0x75E6, 0x75DD, 0x75DF, 0x75E4, 0x75D7,
+ 0x7695, 0x7692, 0x76DA, 0x7746, 0x7747, 0x7744, 0x774D, 0x7745, 0x774A,
+ 0x774E, 0x774B, 0x774C, 0x77DE, 0x77EC, 0x7860, 0x7864, 0x7865, 0x785C,
+ 0x786D, 0x7871, 0x786A, 0x786E, 0x7870, 0x7869, 0x7868, 0x785E, 0x7862,
+ 0x7974, 0x7973, 0x7972, 0x7970, 0x7A02, 0x7A0A, 0x7A03, 0x7A0C, 0x7A04,
+ 0x7A99, 0x7AE6, 0x7AE4, 0x7B4A, 0x7B47, 0x7B44, 0x7B48, 0x7B4C, 0x7B4E,
+ 0x7B40, 0x7B58, 0x7B45, 0x7CA2, 0x7C9E, 0x7CA8, 0x7CA1, 0x7D58, 0x7D6F,
+ 0x7D63, 0x7D53, 0x7D56, 0x7D67, 0x7D6A, 0x7D4F, 0x7D6D, 0x7D5C, 0x7D6B,
+ 0x7D52, 0x7D54, 0x7D69, 0x7D51, 0x7D5F, 0x7D4E, 0x7F3E, 0x7F3F, 0x7F65,
+ 0x7F66, 0x7FA2, 0x7FA0, 0x7FA1, 0x7FD7, 0x8051, 0x804F, 0x8050, 0x80FE,
+ 0x80D4, 0x8143, 0x814A, 0x8152, 0x814F, 0x8147, 0x813D, 0x814D, 0x813A,
+ 0x81E6, 0x81EE, 0x81F7, 0x81F8, 0x81F9, 0x8204, 0x823C, 0x823D, 0x823F,
+ 0x8275, 0x833B, 0x83CF, 0x83F9, 0x8423, 0x83C0, 0x83E8, 0x8412, 0x83E7,
+ 0x83E4, 0x83FC, 0x83F6, 0x8410, 0x83C6, 0x83C8, 0x83EB, 0x83E3, 0x83BF,
+ 0x8401, 0x83DD, 0x83E5, 0x83D8, 0x83FF, 0x83E1, 0x83CB, 0x83CE, 0x83D6,
+ 0x83F5, 0x83C9, 0x8409, 0x840F, 0x83DE, 0x8411, 0x8406, 0x83C2, 0x83F3,
+ 0x83D5, 0x83FA, 0x83C7, 0x83D1, 0x83EA, 0x8413, 0x839A, 0x83C3, 0x83EC,
+ 0x83EE, 0x83C4, 0x83FB, 0x83D7, 0x83E2, 0x841B, 0x83DB, 0x83FE, 0x86D8,
+ 0x86E2, 0x86E6, 0x86D3, 0x86E3, 0x86DA, 0x86EA, 0x86DD, 0x86EB, 0x86DC,
+ 0x86EC, 0x86E9, 0x86D7, 0x86E8, 0x86D1, 0x8848, 0x8856, 0x8855, 0x88BA,
+ 0x88D7, 0x88B9, 0x88B8, 0x88C0, 0x88BE, 0x88B6, 0x88BC, 0x88B7, 0x88BD,
+ 0x88B2, 0x8901, 0x88C9, 0x8995, 0x8998, 0x8997, 0x89DD, 0x89DA, 0x89DB,
+ 0x8A4E, 0x8A4D, 0x8A39, 0x8A59, 0x8A40, 0x8A57, 0x8A58, 0x8A44, 0x8A45,
+ 0x8A52, 0x8A48, 0x8A51, 0x8A4A, 0x8A4C, 0x8A4F, 0x8C5F, 0x8C81, 0x8C80,
+ 0x8CBA, 0x8CBE, 0x8CB0, 0x8CB9, 0x8CB5, 0x8D84, 0x8D80, 0x8D89, 0x8DD8,
+ 0x8DD3, 0x8DCD, 0x8DC7, 0x8DD6, 0x8DDC, 0x8DCF, 0x8DD5, 0x8DD9, 0x8DC8,
+ 0x8DD7, 0x8DC5, 0x8EEF, 0x8EF7, 0x8EFA, 0x8EF9, 0x8EE6, 0x8EEE, 0x8EE5,
+ 0x8EF5, 0x8EE7, 0x8EE8, 0x8EF6, 0x8EEB, 0x8EF1, 0x8EEC, 0x8EF4, 0x8EE9,
+ 0x902D, 0x9034, 0x902F, 0x9106, 0x912C, 0x9104, 0x90FF, 0x90FC, 0x9108,
+ 0x90F9, 0x90FB, 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164,
+ 0x915F, 0x9162, 0x9160, 0x9201, 0x920A, 0x9225, 0x9203, 0x921A, 0x9226,
+ 0x920F, 0x920C, 0x9200, 0x9212, 0x91FF, 0x91FD, 0x9206, 0x9204, 0x9227,
+ 0x9202, 0x921C, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216, 0x957B, 0x958D,
+ 0x958C, 0x9590, 0x9687, 0x967E, 0x9688, 0x9689, 0x9683, 0x9680, 0x96C2,
+ 0x96C8, 0x96C3, 0x96F1, 0x96F0, 0x976C, 0x9770, 0x976E, 0x9807, 0x98A9,
+ 0x98EB, 0x9CE6, 0x9EF9, 0x4E83, 0x4E84, 0x4EB6, 0x50BD, 0x50BF, 0x50C6,
+ 0x50AE, 0x50C4, 0x50CA, 0x50B4, 0x50C8, 0x50C2, 0x50B0, 0x50C1, 0x50BA,
+ 0x50B1, 0x50CB, 0x50C9, 0x50B6, 0x50B8, 0x51D7, 0x527A, 0x5278, 0x527B,
+ 0x527C, 0x55C3, 0x55DB, 0x55CC, 0x55D0, 0x55CB, 0x55CA, 0x55DD, 0x55C0,
+ 0x55D4, 0x55C4, 0x55E9, 0x55BF, 0x55D2, 0x558D, 0x55CF, 0x55D5, 0x55E2,
+ 0x55D6, 0x55C8, 0x55F2, 0x55CD, 0x55D9, 0x55C2, 0x5714, 0x5853, 0x5868,
+ 0x5864, 0x584F, 0x584D, 0x5849, 0x586F, 0x5855, 0x584E, 0x585D, 0x5859,
+ 0x5865, 0x585B, 0x583D, 0x5863, 0x5871, 0x58FC, 0x5AC7, 0x5AC4, 0x5ACB,
+ 0x5ABA, 0x5AB8, 0x5AB1, 0x5AB5, 0x5AB0, 0x5ABF, 0x5AC8, 0x5ABB, 0x5AC6,
+ 0x5AB7, 0x5AC0, 0x5ACA, 0x5AB4, 0x5AB6, 0x5ACD, 0x5AB9, 0x5A90, 0x5BD6,
+ 0x5BD8, 0x5BD9, 0x5C1F, 0x5C33, 0x5D71, 0x5D63, 0x5D4A, 0x5D65, 0x5D72,
+ 0x5D6C, 0x5D5E, 0x5D68, 0x5D67, 0x5D62, 0x5DF0, 0x5E4F, 0x5E4E, 0x5E4A,
+ 0x5E4D, 0x5E4B, 0x5EC5, 0x5ECC, 0x5EC6, 0x5ECB, 0x5EC7, 0x5F40, 0x5FAF,
+ 0x5FAD, 0x60F7, 0x6149, 0x614A, 0x612B, 0x6145, 0x6136, 0x6132, 0x612E,
+ 0x6146, 0x612F, 0x614F, 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225,
+ 0x6224, 0x63C5, 0x63F1, 0x63EB, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424,
+ 0x6433, 0x6443, 0x641F, 0x6415, 0x6418, 0x6439, 0x6437, 0x6422, 0x6423,
+ 0x640C, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435, 0x642F, 0x640A, 0x641A,
+ 0x6440, 0x6425, 0x6427, 0x640B, 0x63E7, 0x641B, 0x642E, 0x6421, 0x640E,
+ 0x656F, 0x6592, 0x65D3, 0x6686, 0x668C, 0x6695, 0x6690, 0x668B, 0x668A,
+ 0x6699, 0x6694, 0x6678, 0x6720, 0x6966, 0x695F, 0x6938, 0x694E, 0x6962,
+ 0x6971, 0x693F, 0x6945, 0x696A, 0x6939, 0x6942, 0x6957, 0x6959, 0x697A,
+ 0x6948, 0x6949, 0x6935, 0x696C, 0x6933, 0x693D, 0x6965, 0x68F0, 0x6978,
+ 0x6934, 0x6969, 0x6940, 0x696F, 0x6944, 0x6976, 0x6958, 0x6941, 0x6974,
+ 0x694C, 0x693B, 0x694B, 0x6937, 0x695C, 0x694F, 0x6951, 0x6932, 0x6952,
+ 0x692F, 0x697B, 0x693C, 0x6B46, 0x6B45, 0x6B43, 0x6B42, 0x6B48, 0x6B41,
+ 0x6B9B, 0x6BFB, 0x6BFC, 0x6BF9, 0x6BF7, 0x6BF8, 0x6E9B, 0x6ED6, 0x6EC8,
+ 0x6E8F, 0x6EC0, 0x6E9F, 0x6E93, 0x6E94, 0x6EA0, 0x6EB1, 0x6EB9, 0x6EC6,
+ 0x6ED2, 0x6EBD, 0x6EC1, 0x6E9E, 0x6EC9, 0x6EB7, 0x6EB0, 0x6ECD, 0x6EA6,
+ 0x6ECF, 0x6EB2, 0x6EBE, 0x6EC3, 0x6EDC, 0x6ED8, 0x6E99, 0x6E92, 0x6E8E,
+ 0x6E8D, 0x6EA4, 0x6EA1, 0x6EBF, 0x6EB3, 0x6ED0, 0x6ECA, 0x6E97, 0x6EAE,
+ 0x6EA3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160, 0x7141, 0x715D, 0x7162,
+ 0x7172, 0x7178, 0x716A, 0x7161, 0x7142, 0x7158, 0x7143, 0x714B, 0x7170,
+ 0x715F, 0x7150, 0x7153, 0x7144, 0x714D, 0x715A, 0x724F, 0x728D, 0x728C,
+ 0x7291, 0x7290, 0x728E, 0x733C, 0x7342, 0x733B, 0x733A, 0x7340, 0x734A,
+ 0x7349, 0x7444, 0x744A, 0x744B, 0x7452, 0x7451, 0x7457, 0x7440, 0x744F,
+ 0x7450, 0x744E, 0x7442, 0x7446, 0x744D, 0x7454, 0x74E1, 0x74FF, 0x74FE,
+ 0x74FD, 0x751D, 0x7579, 0x7577, 0x6983, 0x75EF, 0x760F, 0x7603, 0x75F7,
+ 0x75FE, 0x75FC, 0x75F9, 0x75F8, 0x7610, 0x75FB, 0x75F6, 0x75ED, 0x75F5,
+ 0x75FD, 0x7699, 0x76B5, 0x76DD, 0x7755, 0x775F, 0x7760, 0x7752, 0x7756,
+ 0x775A, 0x7769, 0x7767, 0x7754, 0x7759, 0x776D, 0x77E0, 0x7887, 0x789A,
+ 0x7894, 0x788F, 0x7884, 0x7895, 0x7885, 0x7886, 0x78A1, 0x7883, 0x7879,
+ 0x7899, 0x7880, 0x7896, 0x787B, 0x797C, 0x7982, 0x797D, 0x7979, 0x7A11,
+ 0x7A18, 0x7A19, 0x7A12, 0x7A17, 0x7A15, 0x7A22, 0x7A13, 0x7A1B, 0x7A10,
+ 0x7AA3, 0x7AA2, 0x7A9E, 0x7AEB, 0x7B66, 0x7B64, 0x7B6D, 0x7B74, 0x7B69,
+ 0x7B72, 0x7B65, 0x7B73, 0x7B71, 0x7B70, 0x7B61, 0x7B78, 0x7B76, 0x7B63,
+ 0x7CB2, 0x7CB4, 0x7CAF, 0x7D88, 0x7D86, 0x7D80, 0x7D8D, 0x7D7F, 0x7D85,
+ 0x7D7A, 0x7D8E, 0x7D7B, 0x7D83, 0x7D7C, 0x7D8C, 0x7D94, 0x7D84, 0x7D7D,
+ 0x7D92, 0x7F6D, 0x7F6B, 0x7F67, 0x7F68, 0x7F6C, 0x7FA6, 0x7FA5, 0x7FA7,
+ 0x7FDB, 0x7FDC, 0x8021, 0x8164, 0x8160, 0x8177, 0x815C, 0x8169, 0x815B,
+ 0x8162, 0x8172, 0x6721, 0x815E, 0x8176, 0x8167, 0x816F, 0x8144, 0x8161,
+ 0x821D, 0x8249, 0x8244, 0x8240, 0x8242, 0x8245, 0x84F1, 0x843F, 0x8456,
+ 0x8476, 0x8479, 0x848F, 0x848D, 0x8465, 0x8451, 0x8440, 0x8486, 0x8467,
+ 0x8430, 0x844D, 0x847D, 0x845A, 0x8459, 0x8474, 0x8473, 0x845D, 0x8507,
+ 0x845E, 0x8437, 0x843A, 0x8434, 0x847A, 0x8443, 0x8478, 0x8432, 0x8445,
+ 0x8429, 0x83D9, 0x844B, 0x842F, 0x8442, 0x842D, 0x845F, 0x8470, 0x8439,
+ 0x844E, 0x844C, 0x8452, 0x846F, 0x84C5, 0x848E, 0x843B, 0x8447, 0x8436,
+ 0x8433, 0x8468, 0x847E, 0x8444, 0x842B, 0x8460, 0x8454, 0x846E, 0x8450,
+ 0x870B, 0x8704, 0x86F7, 0x870C, 0x86FA, 0x86D6, 0x86F5, 0x874D, 0x86F8,
+ 0x870E, 0x8709, 0x8701, 0x86F6, 0x870D, 0x8705, 0x88D6, 0x88CB, 0x88CD,
+ 0x88CE, 0x88DE, 0x88DB, 0x88DA, 0x88CC, 0x88D0, 0x8985, 0x899B, 0x89DF,
+ 0x89E5, 0x89E4, 0x89E1, 0x89E0, 0x89E2, 0x89DC, 0x89E6, 0x8A76, 0x8A86,
+ 0x8A7F, 0x8A61, 0x8A3F, 0x8A77, 0x8A82, 0x8A84, 0x8A75, 0x8A83, 0x8A81,
+ 0x8A74, 0x8A7A, 0x8C3C, 0x8C4B, 0x8C4A, 0x8C65, 0x8C64, 0x8C66, 0x8C86,
+ 0x8C84, 0x8C85, 0x8CCC, 0x8D68, 0x8D69, 0x8D91, 0x8D8C, 0x8D8E, 0x8D8F,
+ 0x8D8D, 0x8D93, 0x8D94, 0x8D90, 0x8D92, 0x8DF0, 0x8DE0, 0x8DEC, 0x8DF1,
+ 0x8DEE, 0x8DD0, 0x8DE9, 0x8DE3, 0x8DE2, 0x8DE7, 0x8DF2, 0x8DEB, 0x8DF4,
+ 0x8F06, 0x8EFF, 0x8F01, 0x8F00, 0x8F05, 0x8F07, 0x8F08, 0x8F02, 0x8F0B,
+ 0x9052, 0x903F, 0x9044, 0x9049, 0x903D, 0x9110, 0x910D, 0x910F, 0x9111,
+ 0x9116, 0x9114, 0x910B, 0x910E, 0x916E, 0x916F, 0x9248, 0x9252, 0x9230,
+ 0x923A, 0x9266, 0x9233, 0x9265, 0x925E, 0x9283, 0x922E, 0x924A, 0x9246,
+ 0x926D, 0x926C, 0x924F, 0x9260, 0x9267, 0x926F, 0x9236, 0x9261, 0x9270,
+ 0x9231, 0x9254, 0x9263, 0x9250, 0x9272, 0x924E, 0x9253, 0x924C, 0x9256,
+ 0x9232, 0x959F, 0x959C, 0x959E, 0x959B, 0x9692, 0x9693, 0x9691, 0x9697,
+ 0x96CE, 0x96FA, 0x96FD, 0x96F8, 0x96F5, 0x9773, 0x9777, 0x9778, 0x9772,
+ 0x980F, 0x980D, 0x980E, 0x98AC, 0x98F6, 0x98F9, 0x99AF, 0x99B2, 0x99B0,
+ 0x99B5, 0x9AAD, 0x9AAB, 0x9B5B, 0x9CEA, 0x9CED, 0x9CE7, 0x9E80, 0x9EFD,
+ 0x50E6, 0x50D4, 0x50D7, 0x50E8, 0x50F3, 0x50DB, 0x50EA, 0x50DD, 0x50E4,
+ 0x50D3, 0x50EC, 0x50F0, 0x50EF, 0x50E3, 0x50E0, 0x51D8, 0x5280, 0x5281,
+ 0x52E9, 0x52EB, 0x5330, 0x53AC, 0x5627, 0x5615, 0x560C, 0x5612, 0x55FC,
+ 0x560F, 0x561C, 0x5601, 0x5613, 0x5602, 0x55FA, 0x561D, 0x5604, 0x55FF,
+ 0x55F9, 0x5889, 0x587C, 0x5890, 0x5898, 0x5886, 0x5881, 0x587F, 0x5874,
+ 0x588B, 0x587A, 0x5887, 0x5891, 0x588E, 0x5876, 0x5882, 0x5888, 0x587B,
+ 0x5894, 0x588F, 0x58FE, 0x596B, 0x5ADC, 0x5AEE, 0x5AE5, 0x5AD5, 0x5AEA,
+ 0x5ADA, 0x5AED, 0x5AEB, 0x5AF3, 0x5AE2, 0x5AE0, 0x5ADB, 0x5AEC, 0x5ADE,
+ 0x5ADD, 0x5AD9, 0x5AE8, 0x5ADF, 0x5B77, 0x5BE0, 0x5BE3, 0x5C63, 0x5D82,
+ 0x5D80, 0x5D7D, 0x5D86, 0x5D7A, 0x5D81, 0x5D77, 0x5D8A, 0x5D89, 0x5D88,
+ 0x5D7E, 0x5D7C, 0x5D8D, 0x5D79, 0x5D7F, 0x5E58, 0x5E59, 0x5E53, 0x5ED8,
+ 0x5ED1, 0x5ED7, 0x5ECE, 0x5EDC, 0x5ED5, 0x5ED9, 0x5ED2, 0x5ED4, 0x5F44,
+ 0x5F43, 0x5F6F, 0x5FB6, 0x612C, 0x6128, 0x6141, 0x615E, 0x6171, 0x6173,
+ 0x6152, 0x6153, 0x6172, 0x616C, 0x6180, 0x6174, 0x6154, 0x617A, 0x615B,
+ 0x6165, 0x613B, 0x616A, 0x6161, 0x6156, 0x6229, 0x6227, 0x622B, 0x642B,
+ 0x644D, 0x645B, 0x645D, 0x6474, 0x6476, 0x6472, 0x6473, 0x647D, 0x6475,
+ 0x6466, 0x64A6, 0x644E, 0x6482, 0x645E, 0x645C, 0x644B, 0x6453, 0x6460,
+ 0x6450, 0x647F, 0x643F, 0x646C, 0x646B, 0x6459, 0x6465, 0x6477, 0x6573,
+ 0x65A0, 0x66A1, 0x66A0, 0x669F, 0x6705, 0x6704, 0x6722, 0x69B1, 0x69B6,
+ 0x69C9, 0x69A0, 0x69CE, 0x6996, 0x69B0, 0x69AC, 0x69BC, 0x6991, 0x6999,
+ 0x698E, 0x69A7, 0x698D, 0x69A9, 0x69BE, 0x69AF, 0x69BF, 0x69C4, 0x69BD,
+ 0x69A4, 0x69D4, 0x69B9, 0x69CA, 0x699A, 0x69CF, 0x69B3, 0x6993, 0x69AA,
+ 0x69A1, 0x699E, 0x69D9, 0x6997, 0x6990, 0x69C2, 0x69B5, 0x69A5, 0x69C6,
+ 0x6B4A, 0x6B4D, 0x6B4B, 0x6B9E, 0x6B9F, 0x6BA0, 0x6BC3, 0x6BC4, 0x6BFE,
+ 0x6ECE, 0x6EF5, 0x6EF1, 0x6F03, 0x6F25, 0x6EF8, 0x6F37, 0x6EFB, 0x6F2E,
+ 0x6F09, 0x6F4E, 0x6F19, 0x6F1A, 0x6F27, 0x6F18, 0x6F3B, 0x6F12, 0x6EED,
+ 0x6F0A, 0x6F36, 0x6F73, 0x6EF9, 0x6EEE, 0x6F2D, 0x6F40, 0x6F30, 0x6F3C,
+ 0x6F35, 0x6EEB, 0x6F07, 0x6F0E, 0x6F43, 0x6F05, 0x6EFD, 0x6EF6, 0x6F39,
+ 0x6F1C, 0x6EFC, 0x6F3A, 0x6F1F, 0x6F0D, 0x6F1E, 0x6F08, 0x6F21, 0x7187,
+ 0x7190, 0x7189, 0x7180, 0x7185, 0x7182, 0x718F, 0x717B, 0x7186, 0x7181,
+ 0x7197, 0x7244, 0x7253, 0x7297, 0x7295, 0x7293, 0x7343, 0x734D, 0x7351,
+ 0x734C, 0x7462, 0x7473, 0x7471, 0x7475, 0x7472, 0x7467, 0x746E, 0x7500,
+ 0x7502, 0x7503, 0x757D, 0x7590, 0x7616, 0x7608, 0x760C, 0x7615, 0x7611,
+ 0x760A, 0x7614, 0x76B8, 0x7781, 0x777C, 0x7785, 0x7782, 0x776E, 0x7780,
+ 0x776F, 0x777E, 0x7783, 0x78B2, 0x78AA, 0x78B4, 0x78AD, 0x78A8, 0x787E,
+ 0x78AB, 0x789E, 0x78A5, 0x78A0, 0x78AC, 0x78A2, 0x78A4, 0x7998, 0x798A,
+ 0x798B, 0x7996, 0x7995, 0x7994, 0x7993, 0x7997, 0x7988, 0x7992, 0x7990,
+ 0x7A2B, 0x7A4A, 0x7A30, 0x7A2F, 0x7A28, 0x7A26, 0x7AA8, 0x7AAB, 0x7AAC,
+ 0x7AEE, 0x7B88, 0x7B9C, 0x7B8A, 0x7B91, 0x7B90, 0x7B96, 0x7B8D, 0x7B8C,
+ 0x7B9B, 0x7B8E, 0x7B85, 0x7B98, 0x5284, 0x7B99, 0x7BA4, 0x7B82, 0x7CBB,
+ 0x7CBF, 0x7CBC, 0x7CBA, 0x7DA7, 0x7DB7, 0x7DC2, 0x7DA3, 0x7DAA, 0x7DC1,
+ 0x7DC0, 0x7DC5, 0x7D9D, 0x7DCE, 0x7DC4, 0x7DC6, 0x7DCB, 0x7DCC, 0x7DAF,
+ 0x7DB9, 0x7D96, 0x7DBC, 0x7D9F, 0x7DA6, 0x7DAE, 0x7DA9, 0x7DA1, 0x7DC9,
+ 0x7F73, 0x7FE2, 0x7FE3, 0x7FE5, 0x7FDE, 0x8024, 0x805D, 0x805C, 0x8189,
+ 0x8186, 0x8183, 0x8187, 0x818D, 0x818C, 0x818B, 0x8215, 0x8497, 0x84A4,
+ 0x84A1, 0x849F, 0x84BA, 0x84CE, 0x84C2, 0x84AC, 0x84AE, 0x84AB, 0x84B9,
+ 0x84B4, 0x84C1, 0x84CD, 0x84AA, 0x849A, 0x84B1, 0x84D0, 0x849D, 0x84A7,
+ 0x84BB, 0x84A2, 0x8494, 0x84C7, 0x84CC, 0x849B, 0x84A9, 0x84AF, 0x84A8,
+ 0x84D6, 0x8498, 0x84B6, 0x84CF, 0x84A0, 0x84D7, 0x84D4, 0x84D2, 0x84DB,
+ 0x84B0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, 0x876B, 0x8740, 0x872E,
+ 0x871E, 0x8721, 0x8719, 0x871B, 0x8743, 0x872C, 0x8741, 0x873E, 0x8746,
+ 0x8720, 0x8732, 0x872A, 0x872D, 0x873C, 0x8712, 0x873A, 0x8731, 0x8735,
+ 0x8742, 0x8726, 0x8727, 0x8738, 0x8724, 0x871A, 0x8730, 0x8711, 0x88F7,
+ 0x88E7, 0x88F1, 0x88F2, 0x88FA, 0x88FE, 0x88EE, 0x88FC, 0x88F6, 0x88FB,
+ 0x88F0, 0x88EC, 0x88EB, 0x899D, 0x89A1, 0x899F, 0x899E, 0x89E9, 0x89EB,
+ 0x89E8, 0x8AAB, 0x8A99, 0x8A8B, 0x8A92, 0x8A8F, 0x8A96, 0x8C3D, 0x8C68,
+ 0x8C69, 0x8CD5, 0x8CCF, 0x8CD7, 0x8D96, 0x8E09, 0x8E02, 0x8DFF, 0x8E0D,
+ 0x8DFD, 0x8E0A, 0x8E03, 0x8E07, 0x8E06, 0x8E05, 0x8DFE, 0x8E00, 0x8E04,
+ 0x8F10, 0x8F11, 0x8F0E, 0x8F0D, 0x9123, 0x911C, 0x9120, 0x9122, 0x911F,
+ 0x911D, 0x911A, 0x9124, 0x9121, 0x911B, 0x917A, 0x9172, 0x9179, 0x9173,
+ 0x92A5, 0x92A4, 0x9276, 0x929B, 0x927A, 0x92A0, 0x9294, 0x92AA, 0x928D,
+ 0x92A6, 0x929A, 0x92AB, 0x9279, 0x9297, 0x927F, 0x92A3, 0x92EE, 0x928E,
+ 0x9282, 0x9295, 0x92A2, 0x927D, 0x9288, 0x92A1, 0x928A, 0x9286, 0x928C,
+ 0x9299, 0x92A7, 0x927E, 0x9287, 0x92A9, 0x929D, 0x928B, 0x922D, 0x969E,
+ 0x96A1, 0x96FF, 0x9758, 0x977D, 0x977A, 0x977E, 0x9783, 0x9780, 0x9782,
+ 0x977B, 0x9784, 0x9781, 0x977F, 0x97CE, 0x97CD, 0x9816, 0x98AD, 0x98AE,
+ 0x9902, 0x9900, 0x9907, 0x999D, 0x999C, 0x99C3, 0x99B9, 0x99BB, 0x99BA,
+ 0x99C2, 0x99BD, 0x99C7, 0x9AB1, 0x9AE3, 0x9AE7, 0x9B3E, 0x9B3F, 0x9B60,
+ 0x9B61, 0x9B5F, 0x9CF1, 0x9CF2, 0x9CF5, 0x9EA7, 0x50FF, 0x5103, 0x5130,
+ 0x50F8, 0x5106, 0x5107, 0x50F6, 0x50FE, 0x510B, 0x510C, 0x50FD, 0x510A,
+ 0x528B, 0x528C, 0x52F1, 0x52EF, 0x5648, 0x5642, 0x564C, 0x5635, 0x5641,
+ 0x564A, 0x5649, 0x5646, 0x5658, 0x565A, 0x5640, 0x5633, 0x563D, 0x562C,
+ 0x563E, 0x5638, 0x562A, 0x563A, 0x571A, 0x58AB, 0x589D, 0x58B1, 0x58A0,
+ 0x58A3, 0x58AF, 0x58AC, 0x58A5, 0x58A1, 0x58FF, 0x5AFF, 0x5AF4, 0x5AFD,
+ 0x5AF7, 0x5AF6, 0x5B03, 0x5AF8, 0x5B02, 0x5AF9, 0x5B01, 0x5B07, 0x5B05,
+ 0x5B0F, 0x5C67, 0x5D99, 0x5D97, 0x5D9F, 0x5D92, 0x5DA2, 0x5D93, 0x5D95,
+ 0x5DA0, 0x5D9C, 0x5DA1, 0x5D9A, 0x5D9E, 0x5E69, 0x5E5D, 0x5E60, 0x5E5C,
+ 0x7DF3, 0x5EDB, 0x5EDE, 0x5EE1, 0x5F49, 0x5FB2, 0x618B, 0x6183, 0x6179,
+ 0x61B1, 0x61B0, 0x61A2, 0x6189, 0x619B, 0x6193, 0x61AF, 0x61AD, 0x619F,
+ 0x6192, 0x61AA, 0x61A1, 0x618D, 0x6166, 0x61B3, 0x622D, 0x646E, 0x6470,
+ 0x6496, 0x64A0, 0x6485, 0x6497, 0x649C, 0x648F, 0x648B, 0x648A, 0x648C,
+ 0x64A3, 0x649F, 0x6468, 0x64B1, 0x6498, 0x6576, 0x657A, 0x6579, 0x657B,
+ 0x65B2, 0x65B3, 0x66B5, 0x66B0, 0x66A9, 0x66B2, 0x66B7, 0x66AA, 0x66AF,
+ 0x6A00, 0x6A06, 0x6A17, 0x69E5, 0x69F8, 0x6A15, 0x69F1, 0x69E4, 0x6A20,
+ 0x69FF, 0x69EC, 0x69E2, 0x6A1B, 0x6A1D, 0x69FE, 0x6A27, 0x69F2, 0x69EE,
+ 0x6A14, 0x69F7, 0x69E7, 0x6A40, 0x6A08, 0x69E6, 0x69FB, 0x6A0D, 0x69FC,
+ 0x69EB, 0x6A09, 0x6A04, 0x6A18, 0x6A25, 0x6A0F, 0x69F6, 0x6A26, 0x6A07,
+ 0x69F4, 0x6A16, 0x6B51, 0x6BA5, 0x6BA3, 0x6BA2, 0x6BA6, 0x6C01, 0x6C00,
+ 0x6BFF, 0x6C02, 0x6F41, 0x6F26, 0x6F7E, 0x6F87, 0x6FC6, 0x6F92, 0x6F8D,
+ 0x6F89, 0x6F8C, 0x6F62, 0x6F4F, 0x6F85, 0x6F5A, 0x6F96, 0x6F76, 0x6F6C,
+ 0x6F82, 0x6F55, 0x6F72, 0x6F52, 0x6F50, 0x6F57, 0x6F94, 0x6F93, 0x6F5D,
+ 0x6F00, 0x6F61, 0x6F6B, 0x6F7D, 0x6F67, 0x6F90, 0x6F53, 0x6F8B, 0x6F69,
+ 0x6F7F, 0x6F95, 0x6F63, 0x6F77, 0x6F6A, 0x6F7B, 0x71B2, 0x71AF, 0x719B,
+ 0x71B0, 0x71A0, 0x719A, 0x71A9, 0x71B5, 0x719D, 0x71A5, 0x719E, 0x71A4,
+ 0x71A1, 0x71AA, 0x719C, 0x71A7, 0x71B3, 0x7298, 0x729A, 0x7358, 0x7352,
+ 0x735E, 0x735F, 0x7360, 0x735D, 0x735B, 0x7361, 0x735A, 0x7359, 0x7362,
+ 0x7487, 0x7489, 0x748A, 0x7486, 0x7481, 0x747D, 0x7485, 0x7488, 0x747C,
+ 0x7479, 0x7508, 0x7507, 0x757E, 0x7625, 0x761E, 0x7619, 0x761D, 0x761C,
+ 0x7623, 0x761A, 0x7628, 0x761B, 0x769C, 0x769D, 0x769E, 0x769B, 0x778D,
+ 0x778F, 0x7789, 0x7788, 0x78CD, 0x78BB, 0x78CF, 0x78CC, 0x78D1, 0x78CE,
+ 0x78D4, 0x78C8, 0x78C3, 0x78C4, 0x78C9, 0x799A, 0x79A1, 0x79A0, 0x799C,
+ 0x79A2, 0x799B, 0x6B76, 0x7A39, 0x7AB2, 0x7AB4, 0x7AB3, 0x7BB7, 0x7BCB,
+ 0x7BBE, 0x7BAC, 0x7BCE, 0x7BAF, 0x7BB9, 0x7BCA, 0x7BB5, 0x7CC5, 0x7CC8,
+ 0x7CCC, 0x7CCB, 0x7DF7, 0x7DDB, 0x7DEA, 0x7DE7, 0x7DD7, 0x7DE1, 0x7E03,
+ 0x7DFA, 0x7DE6, 0x7DF6, 0x7DF1, 0x7DF0, 0x7DEE, 0x7DDF, 0x7F76, 0x7FAC,
+ 0x7FB0, 0x7FAD, 0x7FED, 0x7FEB, 0x7FEA, 0x7FEC, 0x7FE6, 0x7FE8, 0x8064,
+ 0x8067, 0x81A3, 0x819F, 0x819E, 0x8195, 0x81A2, 0x8199, 0x8197, 0x8216,
+ 0x824F, 0x8253, 0x8252, 0x8250, 0x824E, 0x8251, 0x8524, 0x853B, 0x850F,
+ 0x8500, 0x8529, 0x850E, 0x8509, 0x850D, 0x851F, 0x850A, 0x8527, 0x851C,
+ 0x84FB, 0x852B, 0x84FA, 0x8508, 0x850C, 0x84F4, 0x852A, 0x84F2, 0x8515,
+ 0x84F7, 0x84EB, 0x84F3, 0x84FC, 0x8512, 0x84EA, 0x84E9, 0x8516, 0x84FE,
+ 0x8528, 0x851D, 0x852E, 0x8502, 0x84FD, 0x851E, 0x84F6, 0x8531, 0x8526,
+ 0x84E7, 0x84E8, 0x84F0, 0x84EF, 0x84F9, 0x8518, 0x8520, 0x8530, 0x850B,
+ 0x8519, 0x852F, 0x8662, 0x8756, 0x8763, 0x8764, 0x8777, 0x87E1, 0x8773,
+ 0x8758, 0x8754, 0x875B, 0x8752, 0x8761, 0x875A, 0x8751, 0x875E, 0x876D,
+ 0x876A, 0x8750, 0x874E, 0x875F, 0x875D, 0x876F, 0x876C, 0x877A, 0x876E,
+ 0x875C, 0x8765, 0x874F, 0x877B, 0x8775, 0x8762, 0x8767, 0x8769, 0x885A,
+ 0x8905, 0x890C, 0x8914, 0x890B, 0x8917, 0x8918, 0x8919, 0x8906, 0x8916,
+ 0x8911, 0x890E, 0x8909, 0x89A2, 0x89A4, 0x89A3, 0x89ED, 0x89F0, 0x89EC,
+ 0x8ACF, 0x8AC6, 0x8AB8, 0x8AD3, 0x8AD1, 0x8AD4, 0x8AD5, 0x8ABB, 0x8AD7,
+ 0x8ABE, 0x8AC0, 0x8AC5, 0x8AD8, 0x8AC3, 0x8ABA, 0x8ABD, 0x8AD9, 0x8C3E,
+ 0x8C4D, 0x8C8F, 0x8CE5, 0x8CDF, 0x8CD9, 0x8CE8, 0x8CDA, 0x8CDD, 0x8CE7,
+ 0x8DA0, 0x8D9C, 0x8DA1, 0x8D9B, 0x8E20, 0x8E23, 0x8E25, 0x8E24, 0x8E2E,
+ 0x8E15, 0x8E1B, 0x8E16, 0x8E11, 0x8E19, 0x8E26, 0x8E27, 0x8E14, 0x8E12,
+ 0x8E18, 0x8E13, 0x8E1C, 0x8E17, 0x8E1A, 0x8F2C, 0x8F24, 0x8F18, 0x8F1A,
+ 0x8F20, 0x8F23, 0x8F16, 0x8F17, 0x9073, 0x9070, 0x906F, 0x9067, 0x906B,
+ 0x912F, 0x912B, 0x9129, 0x912A, 0x9132, 0x9126, 0x912E, 0x9185, 0x9186,
+ 0x918A, 0x9181, 0x9182, 0x9184, 0x9180, 0x92D0, 0x92C3, 0x92C4, 0x92C0,
+ 0x92D9, 0x92B6, 0x92CF, 0x92F1, 0x92DF, 0x92D8, 0x92E9, 0x92D7, 0x92DD,
+ 0x92CC, 0x92EF, 0x92C2, 0x92E8, 0x92CA, 0x92C8, 0x92CE, 0x92E6, 0x92CD,
+ 0x92D5, 0x92C9, 0x92E0, 0x92DE, 0x92E7, 0x92D1, 0x92D3, 0x92B5, 0x92E1,
+ 0x9325, 0x92C6, 0x92B4, 0x957C, 0x95AC, 0x95AB, 0x95AE, 0x95B0, 0x96A4,
+ 0x96A2, 0x96D3, 0x9705, 0x9708, 0x9702, 0x975A, 0x978A, 0x978E, 0x9788,
+ 0x97D0, 0x97CF, 0x981E, 0x981D, 0x9826, 0x9829, 0x9828, 0x9820, 0x981B,
+ 0x9827, 0x98B2, 0x9908, 0x98FA, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915,
+ 0x99DC, 0x99CD, 0x99CF, 0x99D3, 0x99D4, 0x99CE, 0x99C9, 0x99D6, 0x99D8,
+ 0x99CB, 0x99D7, 0x99CC, 0x9AB3, 0x9AEC, 0x9AEB, 0x9AF3, 0x9AF2, 0x9AF1,
+ 0x9B46, 0x9B43, 0x9B67, 0x9B74, 0x9B71, 0x9B66, 0x9B76, 0x9B75, 0x9B70,
+ 0x9B68, 0x9B64, 0x9B6C, 0x9CFC, 0x9CFA, 0x9CFD, 0x9CFF, 0x9CF7, 0x9D07,
+ 0x9D00, 0x9CF9, 0x9CFB, 0x9D08, 0x9D05, 0x9D04, 0x9E83, 0x9ED3, 0x9F0F,
+ 0x9F10, 0x511C, 0x5113, 0x5117, 0x511A, 0x5111, 0x51DE, 0x5334, 0x53E1,
+ 0x5670, 0x5660, 0x566E, 0x5673, 0x5666, 0x5663, 0x566D, 0x5672, 0x565E,
+ 0x5677, 0x571C, 0x571B, 0x58C8, 0x58BD, 0x58C9, 0x58BF, 0x58BA, 0x58C2,
+ 0x58BC, 0x58C6, 0x5B17, 0x5B19, 0x5B1B, 0x5B21, 0x5B14, 0x5B13, 0x5B10,
+ 0x5B16, 0x5B28, 0x5B1A, 0x5B20, 0x5B1E, 0x5BEF, 0x5DAC, 0x5DB1, 0x5DA9,
+ 0x5DA7, 0x5DB5, 0x5DB0, 0x5DAE, 0x5DAA, 0x5DA8, 0x5DB2, 0x5DAD, 0x5DAF,
+ 0x5DB4, 0x5E67, 0x5E68, 0x5E66, 0x5E6F, 0x5EE9, 0x5EE7, 0x5EE6, 0x5EE8,
+ 0x5EE5, 0x5F4B, 0x5FBC, 0x5FBB, 0x619D, 0x61A8, 0x6196, 0x61C5, 0x61B4,
+ 0x61C6, 0x61C1, 0x61CC, 0x61BA, 0x61BF, 0x61B8, 0x618C, 0x64D7, 0x64D6,
+ 0x64D0, 0x64CF, 0x64C9, 0x64BD, 0x6489, 0x64C3, 0x64DB, 0x64F3, 0x64D9,
+ 0x6533, 0x657F, 0x657C, 0x65A2, 0x66C8, 0x66BE, 0x66C0, 0x66CA, 0x66CB,
+ 0x66CF, 0x66BD, 0x66BB, 0x66BA, 0x66CC, 0x6723, 0x6A34, 0x6A66, 0x6A49,
+ 0x6A67, 0x6A32, 0x6A68, 0x6A3E, 0x6A5D, 0x6A6D, 0x6A76, 0x6A5B, 0x6A51,
+ 0x6A28, 0x6A5A, 0x6A3B, 0x6A3F, 0x6A41, 0x6A6A, 0x6A64, 0x6A50, 0x6A4F,
+ 0x6A54, 0x6A6F, 0x6A69, 0x6A60, 0x6A3C, 0x6A5E, 0x6A56, 0x6A55, 0x6A4D,
+ 0x6A4E, 0x6A46, 0x6B55, 0x6B54, 0x6B56, 0x6BA7, 0x6BAA, 0x6BAB, 0x6BC8,
+ 0x6BC7, 0x6C04, 0x6C03, 0x6C06, 0x6FAD, 0x6FCB, 0x6FA3, 0x6FC7, 0x6FBC,
+ 0x6FCE, 0x6FC8, 0x6F5E, 0x6FC4, 0x6FBD, 0x6F9E, 0x6FCA, 0x6FA8, 0x7004,
+ 0x6FA5, 0x6FAE, 0x6FBA, 0x6FAC, 0x6FAA, 0x6FCF, 0x6FBF, 0x6FB8, 0x6FA2,
+ 0x6FC9, 0x6FAB, 0x6FCD, 0x6FAF, 0x6FB2, 0x6FB0, 0x71C5, 0x71C2, 0x71BF,
+ 0x71B8, 0x71D6, 0x71C0, 0x71C1, 0x71CB, 0x71D4, 0x71CA, 0x71C7, 0x71CF,
+ 0x71BD, 0x71D8, 0x71BC, 0x71C6, 0x71DA, 0x71DB, 0x729D, 0x729E, 0x7369,
+ 0x7366, 0x7367, 0x736C, 0x7365, 0x736B, 0x736A, 0x747F, 0x749A, 0x74A0,
+ 0x7494, 0x7492, 0x7495, 0x74A1, 0x750B, 0x7580, 0x762F, 0x762D, 0x7631,
+ 0x763D, 0x7633, 0x763C, 0x7635, 0x7632, 0x7630, 0x76BB, 0x76E6, 0x779A,
+ 0x779D, 0x77A1, 0x779C, 0x779B, 0x77A2, 0x77A3, 0x7795, 0x7799, 0x7797,
+ 0x78DD, 0x78E9, 0x78E5, 0x78EA, 0x78DE, 0x78E3, 0x78DB, 0x78E1, 0x78E2,
+ 0x78ED, 0x78DF, 0x78E0, 0x79A4, 0x7A44, 0x7A48, 0x7A47, 0x7AB6, 0x7AB8,
+ 0x7AB5, 0x7AB1, 0x7AB7, 0x7BDE, 0x7BE3, 0x7BE7, 0x7BDD, 0x7BD5, 0x7BE5,
+ 0x7BDA, 0x7BE8, 0x7BF9, 0x7BD4, 0x7BEA, 0x7BE2, 0x7BDC, 0x7BEB, 0x7BD8,
+ 0x7BDF, 0x7CD2, 0x7CD4, 0x7CD7, 0x7CD0, 0x7CD1, 0x7E12, 0x7E21, 0x7E17,
+ 0x7E0C, 0x7E1F, 0x7E20, 0x7E13, 0x7E0E, 0x7E1C, 0x7E15, 0x7E1A, 0x7E22,
+ 0x7E0B, 0x7E0F, 0x7E16, 0x7E0D, 0x7E14, 0x7E25, 0x7E24, 0x7F43, 0x7F7B,
+ 0x7F7C, 0x7F7A, 0x7FB1, 0x7FEF, 0x802A, 0x8029, 0x806C, 0x81B1, 0x81A6,
+ 0x81AE, 0x81B9, 0x81B5, 0x81AB, 0x81B0, 0x81AC, 0x81B4, 0x81B2, 0x81B7,
+ 0x81A7, 0x81F2, 0x8255, 0x8256, 0x8257, 0x8556, 0x8545, 0x856B, 0x854D,
+ 0x8553, 0x8561, 0x8558, 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544,
+ 0x8551, 0x8547, 0x8563, 0x853E, 0x855B, 0x8571, 0x854E, 0x856E, 0x8575,
+ 0x8555, 0x8567, 0x8560, 0x858C, 0x8566, 0x855D, 0x8554, 0x8565, 0x856C,
+ 0x8663, 0x8665, 0x8664, 0x87A4, 0x879B, 0x878F, 0x8797, 0x8793, 0x8792,
+ 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87A3, 0x8785, 0x8790,
+ 0x8791, 0x879D, 0x8784, 0x8794, 0x879C, 0x879A, 0x8789, 0x891E, 0x8926,
+ 0x8930, 0x892D, 0x892E, 0x8927, 0x8931, 0x8922, 0x8929, 0x8923, 0x892F,
+ 0x892C, 0x891F, 0x89F1, 0x8AE0, 0x8AE2, 0x8AF2, 0x8AF4, 0x8AF5, 0x8ADD,
+ 0x8B14, 0x8AE4, 0x8ADF, 0x8AF0, 0x8AC8, 0x8ADE, 0x8AE1, 0x8AE8, 0x8AFF,
+ 0x8AEF, 0x8AFB, 0x8C91, 0x8C92, 0x8C90, 0x8CF5, 0x8CEE, 0x8CF1, 0x8CF0,
+ 0x8CF3, 0x8D6C, 0x8D6E, 0x8DA5, 0x8DA7, 0x8E33, 0x8E3E, 0x8E38, 0x8E40,
+ 0x8E45, 0x8E36, 0x8E3C, 0x8E3D, 0x8E41, 0x8E30, 0x8E3F, 0x8EBD, 0x8F36,
+ 0x8F2E, 0x8F35, 0x8F32, 0x8F39, 0x8F37, 0x8F34, 0x9076, 0x9079, 0x907B,
+ 0x9086, 0x90FA, 0x9133, 0x9135, 0x9136, 0x9193, 0x9190, 0x9191, 0x918D,
+ 0x918F, 0x9327, 0x931E, 0x9308, 0x931F, 0x9306, 0x930F, 0x937A, 0x9338,
+ 0x933C, 0x931B, 0x9323, 0x9312, 0x9301, 0x9346, 0x932D, 0x930E, 0x930D,
+ 0x92CB, 0x931D, 0x92FA, 0x9313, 0x92F9, 0x92F7, 0x9334, 0x9302, 0x9324,
+ 0x92FF, 0x9329, 0x9339, 0x9335, 0x932A, 0x9314, 0x930C, 0x930B, 0x92FE,
+ 0x9309, 0x9300, 0x92FB, 0x9316, 0x95BC, 0x95CD, 0x95BE, 0x95B9, 0x95BA,
+ 0x95B6, 0x95BF, 0x95B5, 0x95BD, 0x96A9, 0x96D4, 0x970B, 0x9712, 0x9710,
+ 0x9799, 0x9797, 0x9794, 0x97F0, 0x97F8, 0x9835, 0x982F, 0x9832, 0x9924,
+ 0x991F, 0x9927, 0x9929, 0x999E, 0x99EE, 0x99EC, 0x99E5, 0x99E4, 0x99F0,
+ 0x99E3, 0x99EA, 0x99E9, 0x99E7, 0x9AB9, 0x9ABF, 0x9AB4, 0x9ABB, 0x9AF6,
+ 0x9AFA, 0x9AF9, 0x9AF7, 0x9B33, 0x9B80, 0x9B85, 0x9B87, 0x9B7C, 0x9B7E,
+ 0x9B7B, 0x9B82, 0x9B93, 0x9B92, 0x9B90, 0x9B7A, 0x9B95, 0x9B7D, 0x9B88,
+ 0x9D25, 0x9D17, 0x9D20, 0x9D1E, 0x9D14, 0x9D29, 0x9D1D, 0x9D18, 0x9D22,
+ 0x9D10, 0x9D19, 0x9D1F, 0x9E88, 0x9E86, 0x9E87, 0x9EAE, 0x9EAD, 0x9ED5,
+ 0x9ED6, 0x9EFA, 0x9F12, 0x9F3D, 0x5126, 0x5125, 0x5122, 0x5124, 0x5120,
+ 0x5129, 0x52F4, 0x5693, 0x568C, 0x568D, 0x5686, 0x5684, 0x5683, 0x567E,
+ 0x5682, 0x567F, 0x5681, 0x58D6, 0x58D4, 0x58CF, 0x58D2, 0x5B2D, 0x5B25,
+ 0x5B32, 0x5B23, 0x5B2C, 0x5B27, 0x5B26, 0x5B2F, 0x5B2E, 0x5B7B, 0x5BF1,
+ 0x5BF2, 0x5DB7, 0x5E6C, 0x5E6A, 0x5FBE, 0x61C3, 0x61B5, 0x61BC, 0x61E7,
+ 0x61E0, 0x61E5, 0x61E4, 0x61E8, 0x61DE, 0x64EF, 0x64E9, 0x64E3, 0x64EB,
+ 0x64E4, 0x64E8, 0x6581, 0x6580, 0x65B6, 0x65DA, 0x66D2, 0x6A8D, 0x6A96,
+ 0x6A81, 0x6AA5, 0x6A89, 0x6A9F, 0x6A9B, 0x6AA1, 0x6A9E, 0x6A87, 0x6A93,
+ 0x6A8E, 0x6A95, 0x6A83, 0x6AA8, 0x6AA4, 0x6A91, 0x6A7F, 0x6AA6, 0x6A9A,
+ 0x6A85, 0x6A8C, 0x6A92, 0x6B5B, 0x6BAD, 0x6C09, 0x6FCC, 0x6FA9, 0x6FF4,
+ 0x6FD4, 0x6FE3, 0x6FDC, 0x6FED, 0x6FE7, 0x6FE6, 0x6FDE, 0x6FF2, 0x6FDD,
+ 0x6FE2, 0x6FE8, 0x71E1, 0x71F1, 0x71E8, 0x71F2, 0x71E4, 0x71F0, 0x71E2,
+ 0x7373, 0x736E, 0x736F, 0x7497, 0x74B2, 0x74AB, 0x7490, 0x74AA, 0x74AD,
+ 0x74B1, 0x74A5, 0x74AF, 0x7510, 0x7511, 0x7512, 0x750F, 0x7584, 0x7643,
+ 0x7648, 0x7649, 0x7647, 0x76A4, 0x76E9, 0x77B5, 0x77AB, 0x77B2, 0x77B7,
+ 0x77B6, 0x77B4, 0x77B1, 0x77A8, 0x77F0, 0x78F3, 0x78FD, 0x7902, 0x78FB,
+ 0x78FC, 0x78FF, 0x78F2, 0x7905, 0x78F9, 0x78FE, 0x7904, 0x79AB, 0x79A8,
+ 0x7A5C, 0x7A5B, 0x7A56, 0x7A58, 0x7A54, 0x7A5A, 0x7ABE, 0x7AC0, 0x7AC1,
+ 0x7C05, 0x7C0F, 0x7BF2, 0x7C00, 0x7BFF, 0x7BFB, 0x7C0E, 0x7BF4, 0x7C0B,
+ 0x7BF3, 0x7C02, 0x7C09, 0x7C03, 0x7C01, 0x7BF8, 0x7BFD, 0x7C06, 0x7BF0,
+ 0x7BF1, 0x7C10, 0x7C0A, 0x7CE8, 0x7E2D, 0x7E3C, 0x7E42, 0x7E33, 0x9848,
+ 0x7E38, 0x7E2A, 0x7E49, 0x7E40, 0x7E47, 0x7E29, 0x7E4C, 0x7E30, 0x7E3B,
+ 0x7E36, 0x7E44, 0x7E3A, 0x7F45, 0x7F7F, 0x7F7E, 0x7F7D, 0x7FF4, 0x7FF2,
+ 0x802C, 0x81BB, 0x81C4, 0x81CC, 0x81CA, 0x81C5, 0x81C7, 0x81BC, 0x81E9,
+ 0x825B, 0x825A, 0x825C, 0x8583, 0x8580, 0x858F, 0x85A7, 0x8595, 0x85A0,
+ 0x858B, 0x85A3, 0x857B, 0x85A4, 0x859A, 0x859E, 0x8577, 0x857C, 0x8589,
+ 0x85A1, 0x857A, 0x8578, 0x8557, 0x858E, 0x8596, 0x8586, 0x858D, 0x8599,
+ 0x859D, 0x8581, 0x85A2, 0x8582, 0x8588, 0x8585, 0x8579, 0x8576, 0x8598,
+ 0x8590, 0x859F, 0x8668, 0x87BE, 0x87AA, 0x87AD, 0x87C5, 0x87B0, 0x87AC,
+ 0x87B9, 0x87B5, 0x87BC, 0x87AE, 0x87C9, 0x87C3, 0x87C2, 0x87CC, 0x87B7,
+ 0x87AF, 0x87C4, 0x87CA, 0x87B4, 0x87B6, 0x87BF, 0x87B8, 0x87BD, 0x87DE,
+ 0x87B2, 0x8935, 0x8933, 0x893C, 0x893E, 0x8941, 0x8952, 0x8937, 0x8942,
+ 0x89AD, 0x89AF, 0x89AE, 0x89F2, 0x89F3, 0x8B1E, 0x8B18, 0x8B16, 0x8B11,
+ 0x8B05, 0x8B0B, 0x8B22, 0x8B0F, 0x8B12, 0x8B15, 0x8B07, 0x8B0D, 0x8B08,
+ 0x8B06, 0x8B1C, 0x8B13, 0x8B1A, 0x8C4F, 0x8C70, 0x8C72, 0x8C71, 0x8C6F,
+ 0x8C95, 0x8C94, 0x8CF9, 0x8D6F, 0x8E4E, 0x8E4D, 0x8E53, 0x8E50, 0x8E4C,
+ 0x8E47, 0x8F43, 0x8F40, 0x9085, 0x907E, 0x9138, 0x919A, 0x91A2, 0x919B,
+ 0x9199, 0x919F, 0x91A1, 0x919D, 0x91A0, 0x93A1, 0x9383, 0x93AF, 0x9364,
+ 0x9356, 0x9347, 0x937C, 0x9358, 0x935C, 0x9376, 0x9349, 0x9350, 0x9351,
+ 0x9360, 0x936D, 0x938F, 0x934C, 0x936A, 0x9379, 0x9357, 0x9355, 0x9352,
+ 0x934F, 0x9371, 0x9377, 0x937B, 0x9361, 0x935E, 0x9363, 0x9367, 0x934E,
+ 0x9359, 0x95C7, 0x95C0, 0x95C9, 0x95C3, 0x95C5, 0x95B7, 0x96AE, 0x96B0,
+ 0x96AC, 0x9720, 0x971F, 0x9718, 0x971D, 0x9719, 0x979A, 0x97A1, 0x979C,
+ 0x979E, 0x979D, 0x97D5, 0x97D4, 0x97F1, 0x9841, 0x9844, 0x984A, 0x9849,
+ 0x9845, 0x9843, 0x9925, 0x992B, 0x992C, 0x992A, 0x9933, 0x9932, 0x992F,
+ 0x992D, 0x9931, 0x9930, 0x9998, 0x99A3, 0x99A1, 0x9A02, 0x99FA, 0x99F4,
+ 0x99F7, 0x99F9, 0x99F8, 0x99F6, 0x99FB, 0x99FD, 0x99FE, 0x99FC, 0x9A03,
+ 0x9ABE, 0x9AFE, 0x9AFD, 0x9B01, 0x9AFC, 0x9B48, 0x9B9A, 0x9BA8, 0x9B9E,
+ 0x9B9B, 0x9BA6, 0x9BA1, 0x9BA5, 0x9BA4, 0x9B86, 0x9BA2, 0x9BA0, 0x9BAF,
+ 0x9D33, 0x9D41, 0x9D67, 0x9D36, 0x9D2E, 0x9D2F, 0x9D31, 0x9D38, 0x9D30,
+ 0x9D45, 0x9D42, 0x9D43, 0x9D3E, 0x9D37, 0x9D40, 0x9D3D, 0x7FF5, 0x9D2D,
+ 0x9E8A, 0x9E89, 0x9E8D, 0x9EB0, 0x9EC8, 0x9EDA, 0x9EFB, 0x9EFF, 0x9F24,
+ 0x9F23, 0x9F22, 0x9F54, 0x9FA0, 0x5131, 0x512D, 0x512E, 0x5698, 0x569C,
+ 0x5697, 0x569A, 0x569D, 0x5699, 0x5970, 0x5B3C, 0x5C69, 0x5C6A, 0x5DC0,
+ 0x5E6D, 0x5E6E, 0x61D8, 0x61DF, 0x61ED, 0x61EE, 0x61F1, 0x61EA, 0x61F0,
+ 0x61EB, 0x61D6, 0x61E9, 0x64FF, 0x6504, 0x64FD, 0x64F8, 0x6501, 0x6503,
+ 0x64FC, 0x6594, 0x65DB, 0x66DA, 0x66DB, 0x66D8, 0x6AC5, 0x6AB9, 0x6ABD,
+ 0x6AE1, 0x6AC6, 0x6ABA, 0x6AB6, 0x6AB7, 0x6AC7, 0x6AB4, 0x6AAD, 0x6B5E,
+ 0x6BC9, 0x6C0B, 0x7007, 0x700C, 0x700D, 0x7001, 0x7005, 0x7014, 0x700E,
+ 0x6FFF, 0x7000, 0x6FFB, 0x7026, 0x6FFC, 0x6FF7, 0x700A, 0x7201, 0x71FF,
+ 0x71F9, 0x7203, 0x71FD, 0x7376, 0x74B8, 0x74C0, 0x74B5, 0x74C1, 0x74BE,
+ 0x74B6, 0x74BB, 0x74C2, 0x7514, 0x7513, 0x765C, 0x7664, 0x7659, 0x7650,
+ 0x7653, 0x7657, 0x765A, 0x76A6, 0x76BD, 0x76EC, 0x77C2, 0x77BA, 0x790C,
+ 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79AD, 0x79AC, 0x7A5F,
+ 0x7C1C, 0x7C29, 0x7C19, 0x7C20, 0x7C1F, 0x7C2D, 0x7C1D, 0x7C26, 0x7C28,
+ 0x7C22, 0x7C25, 0x7C30, 0x7E5C, 0x7E50, 0x7E56, 0x7E63, 0x7E58, 0x7E62,
+ 0x7E5F, 0x7E51, 0x7E60, 0x7E57, 0x7E53, 0x7FB5, 0x7FB3, 0x7FF7, 0x7FF8,
+ 0x8075, 0x81D1, 0x81D2, 0x81D0, 0x825F, 0x825E, 0x85B4, 0x85C6, 0x85C0,
+ 0x85C3, 0x85C2, 0x85B3, 0x85B5, 0x85BD, 0x85C7, 0x85C4, 0x85BF, 0x85CB,
+ 0x85CE, 0x85C8, 0x85C5, 0x85B1, 0x85B6, 0x85D2, 0x8624, 0x85B8, 0x85B7,
+ 0x85BE, 0x8669, 0x87E7, 0x87E6, 0x87E2, 0x87DB, 0x87EB, 0x87EA, 0x87E5,
+ 0x87DF, 0x87F3, 0x87E4, 0x87D4, 0x87DC, 0x87D3, 0x87ED, 0x87D8, 0x87E3,
+ 0x87D7, 0x87D9, 0x8801, 0x87F4, 0x87E8, 0x87DD, 0x8953, 0x894B, 0x894F,
+ 0x894C, 0x8946, 0x8950, 0x8951, 0x8949, 0x8B2A, 0x8B27, 0x8B23, 0x8B33,
+ 0x8B30, 0x8B35, 0x8B47, 0x8B2F, 0x8B3C, 0x8B3E, 0x8B31, 0x8B25, 0x8B37,
+ 0x8B26, 0x8B36, 0x8B2E, 0x8B24, 0x8B3B, 0x8B3D, 0x8B3A, 0x8C42, 0x8C75,
+ 0x8C99, 0x8C98, 0x8C97, 0x8CFE, 0x8D04, 0x8D02, 0x8D00, 0x8E5C, 0x8E62,
+ 0x8E60, 0x8E57, 0x8E56, 0x8E5E, 0x8E65, 0x8E67, 0x8E5B, 0x8E5A, 0x8E61,
+ 0x8E5D, 0x8E69, 0x8E54, 0x8F46, 0x8F47, 0x8F48, 0x8F4B, 0x9128, 0x913A,
+ 0x913B, 0x913E, 0x91A8, 0x91A5, 0x91A7, 0x91AF, 0x91AA, 0x93B5, 0x938C,
+ 0x9392, 0x93B7, 0x939B, 0x939D, 0x9389, 0x93A7, 0x938E, 0x93AA, 0x939E,
+ 0x93A6, 0x9395, 0x9388, 0x9399, 0x939F, 0x9380, 0x938D, 0x93B1, 0x9391,
+ 0x93B2, 0x93A4, 0x93A8, 0x93B4, 0x93A3, 0x95D2, 0x95D3, 0x95D1, 0x96B3,
+ 0x96D7, 0x96DA, 0x5DC2, 0x96DF, 0x96D8, 0x96DD, 0x9723, 0x9722, 0x9725,
+ 0x97AC, 0x97AE, 0x97A8, 0x97AB, 0x97A4, 0x97AA, 0x97A2, 0x97A5, 0x97D7,
+ 0x97D9, 0x97D6, 0x97D8, 0x97FA, 0x9850, 0x9851, 0x9852, 0x98B8, 0x9941,
+ 0x993C, 0x993A, 0x9A0F, 0x9A0B, 0x9A09, 0x9A0D, 0x9A04, 0x9A11, 0x9A0A,
+ 0x9A05, 0x9A07, 0x9A06, 0x9AC0, 0x9ADC, 0x9B08, 0x9B04, 0x9B05, 0x9B29,
+ 0x9B35, 0x9B4A, 0x9B4C, 0x9B4B, 0x9BC7, 0x9BC6, 0x9BC3, 0x9BBF, 0x9BC1,
+ 0x9BB5, 0x9BB8, 0x9BD3, 0x9BB6, 0x9BC4, 0x9BB9, 0x9BBD, 0x9D5C, 0x9D53,
+ 0x9D4F, 0x9D4A, 0x9D5B, 0x9D4B, 0x9D59, 0x9D56, 0x9D4C, 0x9D57, 0x9D52,
+ 0x9D54, 0x9D5F, 0x9D58, 0x9D5A, 0x9E8E, 0x9E8C, 0x9EDF, 0x9F01, 0x9F00,
+ 0x9F16, 0x9F25, 0x9F2B, 0x9F2A, 0x9F29, 0x9F28, 0x9F4C, 0x9F55, 0x5134,
+ 0x5135, 0x5296, 0x52F7, 0x53B4, 0x56AB, 0x56AD, 0x56A6, 0x56A7, 0x56AA,
+ 0x56AC, 0x58DA, 0x58DD, 0x58DB, 0x5912, 0x5B3D, 0x5B3E, 0x5B3F, 0x5DC3,
+ 0x5E70, 0x5FBF, 0x61FB, 0x6507, 0x6510, 0x650D, 0x6509, 0x650C, 0x650E,
+ 0x6584, 0x65DE, 0x65DD, 0x66DE, 0x6AE7, 0x6AE0, 0x6ACC, 0x6AD1, 0x6AD9,
+ 0x6ACB, 0x6ADF, 0x6ADC, 0x6AD0, 0x6AEB, 0x6ACF, 0x6ACD, 0x6ADE, 0x6B60,
+ 0x6BB0, 0x6C0C, 0x7019, 0x7027, 0x7020, 0x7016, 0x702B, 0x7021, 0x7022,
+ 0x7023, 0x7029, 0x7017, 0x7024, 0x701C, 0x720C, 0x720A, 0x7207, 0x7202,
+ 0x7205, 0x72A5, 0x72A6, 0x72A4, 0x72A3, 0x72A1, 0x74CB, 0x74C5, 0x74B7,
+ 0x74C3, 0x7516, 0x7660, 0x77C9, 0x77CA, 0x77C4, 0x77F1, 0x791D, 0x791B,
+ 0x7921, 0x791C, 0x7917, 0x791E, 0x79B0, 0x7A67, 0x7A68, 0x7C33, 0x7C3C,
+ 0x7C39, 0x7C2C, 0x7C3B, 0x7CEC, 0x7CEA, 0x7E76, 0x7E75, 0x7E78, 0x7E70,
+ 0x7E77, 0x7E6F, 0x7E7A, 0x7E72, 0x7E74, 0x7E68, 0x7F4B, 0x7F4A, 0x7F83,
+ 0x7F86, 0x7FB7, 0x7FFD, 0x7FFE, 0x8078, 0x81D7, 0x81D5, 0x820B, 0x8264,
+ 0x8261, 0x8263, 0x85EB, 0x85F1, 0x85ED, 0x85D9, 0x85E1, 0x85E8, 0x85DA,
+ 0x85D7, 0x85EC, 0x85F2, 0x85F8, 0x85D8, 0x85DF, 0x85E3, 0x85DC, 0x85D1,
+ 0x85F0, 0x85E6, 0x85EF, 0x85DE, 0x85E2, 0x8800, 0x87FA, 0x8803, 0x87F6,
+ 0x87F7, 0x8809, 0x880C, 0x880B, 0x8806, 0x87FC, 0x8808, 0x87FF, 0x880A,
+ 0x8802, 0x8962, 0x895A, 0x895B, 0x8957, 0x8961, 0x895C, 0x8958, 0x895D,
+ 0x8959, 0x8988, 0x89B7, 0x89B6, 0x89F6, 0x8B50, 0x8B48, 0x8B4A, 0x8B40,
+ 0x8B53, 0x8B56, 0x8B54, 0x8B4B, 0x8B55, 0x8B51, 0x8B42, 0x8B52, 0x8B57,
+ 0x8C43, 0x8C77, 0x8C76, 0x8C9A, 0x8D06, 0x8D07, 0x8D09, 0x8DAC, 0x8DAA,
+ 0x8DAD, 0x8DAB, 0x8E6D, 0x8E78, 0x8E73, 0x8E6A, 0x8E6F, 0x8E7B, 0x8EC2,
+ 0x8F52, 0x8F51, 0x8F4F, 0x8F50, 0x8F53, 0x8FB4, 0x9140, 0x913F, 0x91B0,
+ 0x91AD, 0x93DE, 0x93C7, 0x93CF, 0x93C2, 0x93DA, 0x93D0, 0x93F9, 0x93EC,
+ 0x93CC, 0x93D9, 0x93A9, 0x93E6, 0x93CA, 0x93D4, 0x93EE, 0x93E3, 0x93D5,
+ 0x93C4, 0x93CE, 0x93C0, 0x93D2, 0x93A5, 0x93E7, 0x957D, 0x95DA, 0x95DB,
+ 0x96E1, 0x9729, 0x972B, 0x972C, 0x9728, 0x9726, 0x97B3, 0x97B7, 0x97B6,
+ 0x97DD, 0x97DE, 0x97DF, 0x985C, 0x9859, 0x985D, 0x9857, 0x98BF, 0x98BD,
+ 0x98BB, 0x98BE, 0x9948, 0x9947, 0x9943, 0x99A6, 0x99A7, 0x9A1A, 0x9A15,
+ 0x9A25, 0x9A1D, 0x9A24, 0x9A1B, 0x9A22, 0x9A20, 0x9A27, 0x9A23, 0x9A1E,
+ 0x9A1C, 0x9A14, 0x9AC2, 0x9B0B, 0x9B0A, 0x9B0E, 0x9B0C, 0x9B37, 0x9BEA,
+ 0x9BEB, 0x9BE0, 0x9BDE, 0x9BE4, 0x9BE6, 0x9BE2, 0x9BF0, 0x9BD4, 0x9BD7,
+ 0x9BEC, 0x9BDC, 0x9BD9, 0x9BE5, 0x9BD5, 0x9BE1, 0x9BDA, 0x9D77, 0x9D81,
+ 0x9D8A, 0x9D84, 0x9D88, 0x9D71, 0x9D80, 0x9D78, 0x9D86, 0x9D8B, 0x9D8C,
+ 0x9D7D, 0x9D6B, 0x9D74, 0x9D75, 0x9D70, 0x9D69, 0x9D85, 0x9D73, 0x9D7B,
+ 0x9D82, 0x9D6F, 0x9D79, 0x9D7F, 0x9D87, 0x9D68, 0x9E94, 0x9E91, 0x9EC0,
+ 0x9EFC, 0x9F2D, 0x9F40, 0x9F41, 0x9F4D, 0x9F56, 0x9F57, 0x9F58, 0x5337,
+ 0x56B2, 0x56B5, 0x56B3, 0x58E3, 0x5B45, 0x5DC6, 0x5DC7, 0x5EEE, 0x5EEF,
+ 0x5FC0, 0x5FC1, 0x61F9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65DF, 0x66E8,
+ 0x66E3, 0x66E4, 0x6AF3, 0x6AF0, 0x6AEA, 0x6AE8, 0x6AF9, 0x6AF1, 0x6AEE,
+ 0x6AEF, 0x703C, 0x7035, 0x702F, 0x7037, 0x7034, 0x7031, 0x7042, 0x7038,
+ 0x703F, 0x703A, 0x7039, 0x702A, 0x7040, 0x703B, 0x7033, 0x7041, 0x7213,
+ 0x7214, 0x72A8, 0x737D, 0x737C, 0x74BA, 0x76AB, 0x76AA, 0x76BE, 0x76ED,
+ 0x77CC, 0x77CE, 0x77CF, 0x77CD, 0x77F2, 0x7925, 0x7923, 0x7927, 0x7928,
+ 0x7924, 0x7929, 0x79B2, 0x7A6E, 0x7A6C, 0x7A6D, 0x7AF7, 0x7C49, 0x7C48,
+ 0x7C4A, 0x7C47, 0x7C45, 0x7CEE, 0x7E7B, 0x7E7E, 0x7E81, 0x7E80, 0x7FBA,
+ 0x7FFF, 0x8079, 0x81DB, 0x81D9, 0x8268, 0x8269, 0x8622, 0x85FF, 0x8601,
+ 0x85FE, 0x861B, 0x8600, 0x85F6, 0x8604, 0x8609, 0x8605, 0x860C, 0x85FD,
+ 0x8819, 0x8810, 0x8811, 0x8817, 0x8813, 0x8816, 0x8963, 0x8966, 0x89B9,
+ 0x89F7, 0x8B60, 0x8B6A, 0x8B5D, 0x8B68, 0x8B63, 0x8B65, 0x8B67, 0x8B6D,
+ 0x8DAE, 0x8E86, 0x8E88, 0x8E84, 0x8F59, 0x8F56, 0x8F57, 0x8F55, 0x8F58,
+ 0x8F5A, 0x908D, 0x9143, 0x9141, 0x91B7, 0x91B5, 0x91B2, 0x91B3, 0x940B,
+ 0x9413, 0x93FB, 0x9420, 0x940F, 0x9414, 0x93FE, 0x9415, 0x9410, 0x9428,
+ 0x9419, 0x940D, 0x93F5, 0x9400, 0x93F7, 0x9407, 0x940E, 0x9416, 0x9412,
+ 0x93FA, 0x9409, 0x93F8, 0x943C, 0x940A, 0x93FF, 0x93FC, 0x940C, 0x93F6,
+ 0x9411, 0x9406, 0x95DE, 0x95E0, 0x95DF, 0x972E, 0x972F, 0x97B9, 0x97BB,
+ 0x97FD, 0x97FE, 0x9860, 0x9862, 0x9863, 0x985F, 0x98C1, 0x98C2, 0x9950,
+ 0x994E, 0x9959, 0x994C, 0x994B, 0x9953, 0x9A32, 0x9A34, 0x9A31, 0x9A2C,
+ 0x9A2A, 0x9A36, 0x9A29, 0x9A2E, 0x9A38, 0x9A2D, 0x9AC7, 0x9ACA, 0x9AC6,
+ 0x9B10, 0x9B12, 0x9B11, 0x9C0B, 0x9C08, 0x9BF7, 0x9C05, 0x9C12, 0x9BF8,
+ 0x9C40, 0x9C07, 0x9C0E, 0x9C06, 0x9C17, 0x9C14, 0x9C09, 0x9D9F, 0x9D99,
+ 0x9DA4, 0x9D9D, 0x9D92, 0x9D98, 0x9D90, 0x9D9B, 0x9DA0, 0x9D94, 0x9D9C,
+ 0x9DAA, 0x9D97, 0x9DA1, 0x9D9A, 0x9DA2, 0x9DA8, 0x9D9E, 0x9DA3, 0x9DBF,
+ 0x9DA9, 0x9D96, 0x9DA6, 0x9DA7, 0x9E99, 0x9E9B, 0x9E9A, 0x9EE5, 0x9EE4,
+ 0x9EE7, 0x9EE6, 0x9F30, 0x9F2E, 0x9F5B, 0x9F60, 0x9F5E, 0x9F5D, 0x9F59,
+ 0x9F91, 0x513A, 0x5139, 0x5298, 0x5297, 0x56C3, 0x56BD, 0x56BE, 0x5B48,
+ 0x5B47, 0x5DCB, 0x5DCF, 0x5EF1, 0x61FD, 0x651B, 0x6B02, 0x6AFC, 0x6B03,
+ 0x6AF8, 0x6B00, 0x7043, 0x7044, 0x704A, 0x7048, 0x7049, 0x7045, 0x7046,
+ 0x721D, 0x721A, 0x7219, 0x737E, 0x7517, 0x766A, 0x77D0, 0x792D, 0x7931,
+ 0x792F, 0x7C54, 0x7C53, 0x7CF2, 0x7E8A, 0x7E87, 0x7E88, 0x7E8B, 0x7E86,
+ 0x7E8D, 0x7F4D, 0x7FBB, 0x8030, 0x81DD, 0x8618, 0x862A, 0x8626, 0x861F,
+ 0x8623, 0x861C, 0x8619, 0x8627, 0x862E, 0x8621, 0x8620, 0x8629, 0x861E,
+ 0x8625, 0x8829, 0x881D, 0x881B, 0x8820, 0x8824, 0x881C, 0x882B, 0x884A,
+ 0x896D, 0x8969, 0x896E, 0x896B, 0x89FA, 0x8B79, 0x8B78, 0x8B45, 0x8B7A,
+ 0x8B7B, 0x8D10, 0x8D14, 0x8DAF, 0x8E8E, 0x8E8C, 0x8F5E, 0x8F5B, 0x8F5D,
+ 0x9146, 0x9144, 0x9145, 0x91B9, 0x943F, 0x943B, 0x9436, 0x9429, 0x943D,
+ 0x9430, 0x9439, 0x942A, 0x9437, 0x942C, 0x9440, 0x9431, 0x95E5, 0x95E4,
+ 0x95E3, 0x9735, 0x973A, 0x97BF, 0x97E1, 0x9864, 0x98C9, 0x98C6, 0x98C0,
+ 0x9958, 0x9956, 0x9A39, 0x9A3D, 0x9A46, 0x9A44, 0x9A42, 0x9A41, 0x9A3A,
+ 0x9A3F, 0x9ACD, 0x9B15, 0x9B17, 0x9B18, 0x9B16, 0x9B3A, 0x9B52, 0x9C2B,
+ 0x9C1D, 0x9C1C, 0x9C2C, 0x9C23, 0x9C28, 0x9C29, 0x9C24, 0x9C21, 0x9DB7,
+ 0x9DB6, 0x9DBC, 0x9DC1, 0x9DC7, 0x9DCA, 0x9DCF, 0x9DBE, 0x9DC5, 0x9DC3,
+ 0x9DBB, 0x9DB5, 0x9DCE, 0x9DB9, 0x9DBA, 0x9DAC, 0x9DC8, 0x9DB1, 0x9DAD,
+ 0x9DCC, 0x9DB3, 0x9DCD, 0x9DB2, 0x9E7A, 0x9E9C, 0x9EEB, 0x9EEE, 0x9EED,
+ 0x9F1B, 0x9F18, 0x9F1A, 0x9F31, 0x9F4E, 0x9F65, 0x9F64, 0x9F92, 0x4EB9,
+ 0x56C6, 0x56C5, 0x56CB, 0x5971, 0x5B4B, 0x5B4C, 0x5DD5, 0x5DD1, 0x5EF2,
+ 0x6521, 0x6520, 0x6526, 0x6522, 0x6B0B, 0x6B08, 0x6B09, 0x6C0D, 0x7055,
+ 0x7056, 0x7057, 0x7052, 0x721E, 0x721F, 0x72A9, 0x737F, 0x74D8, 0x74D5,
+ 0x74D9, 0x74D7, 0x766D, 0x76AD, 0x7935, 0x79B4, 0x7A70, 0x7A71, 0x7C57,
+ 0x7C5C, 0x7C59, 0x7C5B, 0x7C5A, 0x7CF4, 0x7CF1, 0x7E91, 0x7F4F, 0x7F87,
+ 0x81DE, 0x826B, 0x8634, 0x8635, 0x8633, 0x862C, 0x8632, 0x8636, 0x882C,
+ 0x8828, 0x8826, 0x882A, 0x8825, 0x8971, 0x89BF, 0x89BE, 0x89FB, 0x8B7E,
+ 0x8B84, 0x8B82, 0x8B86, 0x8B85, 0x8B7F, 0x8D15, 0x8E95, 0x8E94, 0x8E9A,
+ 0x8E92, 0x8E90, 0x8E96, 0x8E97, 0x8F60, 0x8F62, 0x9147, 0x944C, 0x9450,
+ 0x944A, 0x944B, 0x944F, 0x9447, 0x9445, 0x9448, 0x9449, 0x9446, 0x973F,
+ 0x97E3, 0x986A, 0x9869, 0x98CB, 0x9954, 0x995B, 0x9A4E, 0x9A53, 0x9A54,
+ 0x9A4C, 0x9A4F, 0x9A48, 0x9A4A, 0x9A49, 0x9A52, 0x9A50, 0x9AD0, 0x9B19,
+ 0x9B2B, 0x9B3B, 0x9B56, 0x9B55, 0x9C46, 0x9C48, 0x9C3F, 0x9C44, 0x9C39,
+ 0x9C33, 0x9C41, 0x9C3C, 0x9C37, 0x9C34, 0x9C32, 0x9C3D, 0x9C36, 0x9DDB,
+ 0x9DD2, 0x9DDE, 0x9DDA, 0x9DCB, 0x9DD0, 0x9DDC, 0x9DD1, 0x9DDF, 0x9DE9,
+ 0x9DD9, 0x9DD8, 0x9DD6, 0x9DF5, 0x9DD5, 0x9DDD, 0x9EB6, 0x9EF0, 0x9F35,
+ 0x9F33, 0x9F32, 0x9F42, 0x9F6B, 0x9F95, 0x9FA2, 0x513D, 0x5299, 0x58E8,
+ 0x58E7, 0x5972, 0x5B4D, 0x5DD8, 0x882F, 0x5F4F, 0x6201, 0x6203, 0x6204,
+ 0x6529, 0x6525, 0x6596, 0x66EB, 0x6B11, 0x6B12, 0x6B0F, 0x6BCA, 0x705B,
+ 0x705A, 0x7222, 0x7382, 0x7381, 0x7383, 0x7670, 0x77D4, 0x7C67, 0x7C66,
+ 0x7E95, 0x826C, 0x863A, 0x8640, 0x8639, 0x863C, 0x8631, 0x863B, 0x863E,
+ 0x8830, 0x8832, 0x882E, 0x8833, 0x8976, 0x8974, 0x8973, 0x89FE, 0x8B8C,
+ 0x8B8E, 0x8B8B, 0x8B88, 0x8C45, 0x8D19, 0x8E98, 0x8F64, 0x8F63, 0x91BC,
+ 0x9462, 0x9455, 0x945D, 0x9457, 0x945E, 0x97C4, 0x97C5, 0x9800, 0x9A56,
+ 0x9A59, 0x9B1E, 0x9B1F, 0x9B20, 0x9C52, 0x9C58, 0x9C50, 0x9C4A, 0x9C4D,
+ 0x9C4B, 0x9C55, 0x9C59, 0x9C4C, 0x9C4E, 0x9DFB, 0x9DF7, 0x9DEF, 0x9DE3,
+ 0x9DEB, 0x9DF8, 0x9DE4, 0x9DF6, 0x9DE1, 0x9DEE, 0x9DE6, 0x9DF2, 0x9DF0,
+ 0x9DE2, 0x9DEC, 0x9DF4, 0x9DF3, 0x9DE8, 0x9DED, 0x9EC2, 0x9ED0, 0x9EF2,
+ 0x9EF3, 0x9F06, 0x9F1C, 0x9F38, 0x9F37, 0x9F36, 0x9F43, 0x9F4F, 0x9F71,
+ 0x9F70, 0x9F6E, 0x9F6F, 0x56D3, 0x56CD, 0x5B4E, 0x5C6D, 0x652D, 0x66ED,
+ 0x66EE, 0x6B13, 0x705F, 0x7061, 0x705D, 0x7060, 0x7223, 0x74DB, 0x74E5,
+ 0x77D5, 0x7938, 0x79B7, 0x79B6, 0x7C6A, 0x7E97, 0x7F89, 0x826D, 0x8643,
+ 0x8838, 0x8837, 0x8835, 0x884B, 0x8B94, 0x8B95, 0x8E9E, 0x8E9F, 0x8EA0,
+ 0x8E9D, 0x91BE, 0x91BD, 0x91C2, 0x946B, 0x9468, 0x9469, 0x96E5, 0x9746,
+ 0x9743, 0x9747, 0x97C7, 0x97E5, 0x9A5E, 0x9AD5, 0x9B59, 0x9C63, 0x9C67,
+ 0x9C66, 0x9C62, 0x9C5E, 0x9C60, 0x9E02, 0x9DFE, 0x9E07, 0x9E03, 0x9E06,
+ 0x9E05, 0x9E00, 0x9E01, 0x9E09, 0x9DFF, 0x9DFD, 0x9E04, 0x9EA0, 0x9F1E,
+ 0x9F46, 0x9F74, 0x9F75, 0x9F76, 0x56D4, 0x652E, 0x65B8, 0x6B18, 0x6B19,
+ 0x6B17, 0x6B1A, 0x7062, 0x7226, 0x72AA, 0x77D8, 0x77D9, 0x7939, 0x7C69,
+ 0x7C6B, 0x7CF6, 0x7E9A, 0x7E98, 0x7E9B, 0x7E99, 0x81E0, 0x81E1, 0x8646,
+ 0x8647, 0x8648, 0x8979, 0x897A, 0x897C, 0x897B, 0x89FF, 0x8B98, 0x8B99,
+ 0x8EA5, 0x8EA4, 0x8EA3, 0x946E, 0x946D, 0x946F, 0x9471, 0x9473, 0x9749,
+ 0x9872, 0x995F, 0x9C68, 0x9C6E, 0x9C6D, 0x9E0B, 0x9E0D, 0x9E10, 0x9E0F,
+ 0x9E12, 0x9E11, 0x9EA1, 0x9EF5, 0x9F09, 0x9F47, 0x9F78, 0x9F7B, 0x9F7A,
+ 0x9F79, 0x571E, 0x7066, 0x7C6F, 0x883C, 0x8DB2, 0x8EA6, 0x91C3, 0x9474,
+ 0x9478, 0x9476, 0x9475, 0x9A60, 0x9B2E, 0x9C74, 0x9C73, 0x9C71, 0x9C75,
+ 0x9E14, 0x9E13, 0x9EF6, 0x9F0A, 0x9FA4, 0x7068, 0x7065, 0x7CF7, 0x866A,
+ 0x883E, 0x883D, 0x883F, 0x8B9E, 0x8C9C, 0x8EA9, 0x8EC9, 0x974B, 0x9873,
+ 0x9874, 0x98CC, 0x9961, 0x99AB, 0x9A64, 0x9A66, 0x9A67, 0x9B24, 0x9E15,
+ 0x9E17, 0x9F48, 0x6207, 0x6B1E, 0x7227, 0x864C, 0x8EA8, 0x9482, 0x9480,
+ 0x9481, 0x9A69, 0x9A68, 0x9E19, 0x864B, 0x8B9F, 0x9483, 0x9C79, 0x9EB7,
+ 0x7675, 0x9A6B, 0x9C7A, 0x9E1D, 0x7069, 0x706A, 0x7229, 0x9EA4, 0x9F7E,
+ 0x9F49, 0x9F98, 0xFE19, 0x223C, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024,
+ 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D,
+ 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036,
+ 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048,
+ 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051,
+ 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A,
+ 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063,
+ 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C,
+ 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075,
+ 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E,
+ 0xFE33, 0x2574, 0xFE34, 0xFE4F, 0x0308, 0xFF3E, 0x30FD, 0x30FE, 0x309D,
+ 0x309E, 0xFFFD, 0x3005, 0x3006, 0x3007, 0x30FC, 0xFF3B, 0xFF3D, 0x273D,
+ 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049,
+ 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 0x3050, 0x3051, 0x3052,
+ 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305A, 0x305B,
+ 0x305C, 0x305D, 0x305E, 0x305F, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064,
+ 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D,
+ 0x306E, 0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076,
+ 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F,
+ 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
+ 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, 0x3090, 0x3091,
+ 0x3092, 0x3093, 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7,
+ 0x30A8, 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0,
+ 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9,
+ 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2,
+ 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB,
+ 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4,
+ 0x30D5, 0x30D6, 0x30D7, 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD,
+ 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6,
+ 0x30E7, 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF,
+ 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, 0x0410, 0x0411,
+ 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419,
+ 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422,
+ 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B,
+ 0x042C, 0x042D, 0x042E, 0x042F, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434,
+ 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C,
+ 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445,
+ 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E,
+ 0x044F, 0x21E7, 0x21B8, 0x21B9, 0x4E41, 0x0000, 0x4E5A, 0x0000, 0x5202,
+ 0x4491, 0x9FB0, 0x5188, 0x9FB1, 0x0000, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
+ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
+ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
+ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
+ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
+ 0x00AC, 0xFFE4, 0xFF07, 0xFF02, 0x3231, 0x2116, 0x2121, 0x7881, 0x92B9,
+ 0x88CF, 0x58BB, 0x6052, 0x7CA7, 0x5AFA, 0x2554, 0x2566, 0x2557, 0x2560,
+ 0x256C, 0x2563, 0x255A, 0x2569, 0x255D, 0x2552, 0x2564, 0x2555, 0xFFFD,
+ 0xFFFD, 0xFFFD, 0x2558, 0x2567, 0x255B, 0x2553, 0x2565, 0x2556, 0x255F,
+ 0x256B, 0x2562, 0x2559, 0x2568, 0x255C, 0x2551, 0xFFFD, 0xFFFD, 0xFFFD,
+ 0xFFFD, 0xFFFD, 0x2593, 0xFFFD, 0xFFFD, 0xFE10, 0xFE11, 0xFE12, 0xFFFD,
+ 0xFE14, 0xFE13, 0xFE16, 0xFE15, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
+ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
+ 0xFFFD, 0xFFFD, 0x0000, 0x57BE, 0x0000, 0x713E, 0x0000, 0x69A2, 0x0000,
+ 0x5B74, 0x7A49, 0x0000, 0x0000, 0x7A65, 0x7A7D, 0x0000, 0x7ABB, 0x7AB0,
+ 0x7AC2, 0x7AC3, 0x71D1, 0x0000, 0x41CA, 0x7ADA, 0x7ADD, 0x7AEA, 0x41EF,
+ 0x54B2, 0x0000, 0x7B0B, 0x7B55, 0x7B29, 0x0000, 0x0000, 0x7BA2, 0x7B6F,
+ 0x839C, 0x0000, 0x0000, 0x7BD0, 0x8421, 0x7B92, 0xFFFD, 0x0000, 0xFFFD,
+ 0x8492, 0x7BFA, 0xFFFD, 0x7C35, 0x0000, 0x7C44, 0x7C83, 0x0000, 0x7CA6,
+ 0x0000, 0x7CC9, 0x7CC7, 0x7CE6, 0xFFFD, 0x7CF3, 0x7CF5, 0x7E67, 0x451D,
+ 0x0000, 0x7D5D, 0x0000, 0x7D89, 0x7DAB, 0x7135, 0x7DB3, 0x7DD6, 0x0000,
+ 0x0000, 0x7DE4, 0x3D13, 0x7DF5, 0x0000, 0x7DE5, 0x0000, 0xFFFD, 0x0000,
+ 0x0000, 0x7E6E, 0xFFFD, 0x432B, 0x946C, 0x7E27, 0x7F40, 0x7F41, 0x7F47,
+ 0x7936, 0x0000, 0x99E1, 0x7F97, 0x0000, 0x7FA3, 0x0000, 0x0000, 0x455C,
+ 0x0000, 0x0000, 0x7FFA, 0x0000, 0xFA5B, 0x8008, 0x801D, 0xFFFD, 0x802F,
+ 0x0000, 0x0000, 0x803B, 0x803C, 0x8061, 0x0000, 0x4989, 0x0000, 0x0000,
+ 0x0000, 0x6725, 0x80A7, 0x0000, 0x8107, 0x811A, 0x58B0, 0x0000, 0x6C7F,
+ 0x0000, 0x64E7, 0x0000, 0x8218, 0x0000, 0x6A53, 0x0000, 0x0000, 0x447A,
+ 0x8229, 0x0000, 0x0000, 0x4FF9, 0x0000, 0x84E2, 0x8362, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x82AA, 0x691B, 0x0000, 0x41DB, 0x854B, 0x82D0,
+ 0x831A, 0x0000, 0x0000, 0x36C1, 0x0000, 0x0000, 0x827B, 0x82E2, 0x8318,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3DBF, 0x831D, 0x55EC, 0x8385,
+ 0x450B, 0x0000, 0x83AC, 0xFFFD, 0x83D3, 0x0000, 0x6A57, 0x855A, 0x3496,
+ 0x0000, 0x8458, 0x0000, 0x8471, 0x3DD3, 0x44E4, 0x6AA7, 0x844A, 0x7958,
+ 0xFFFD, 0x0000, 0x0000, 0x0000, 0x84DE, 0xFFFD, 0x8391, 0x44A0, 0x8493,
+ 0x84E4, 0x0000, 0x4240, 0x0000, 0x4543, 0x8534, 0x5AF2, 0x4523, 0x4527,
+ 0x8573, 0x4516, 0x67BF, 0x8616, 0x0000, 0x0000, 0x85C1, 0x0000, 0x8602,
+ 0x0000, 0x0000, 0x0000, 0x456A, 0x8628, 0x3648, 0x0000, 0x53F7, 0x0000,
+ 0x867E, 0xFFFD, 0x0000, 0x87EE, 0x0000, 0x87B1, 0x87DA, 0x880F, 0x5661,
+ 0x866C, 0x6856, 0x460F, 0x8845, 0x8846, 0x0000, 0x0000, 0x0000, 0x885E,
+ 0x889C, 0x465B, 0x88B4, 0x88B5, 0x88C5, 0x0000, 0x8987, 0xFFFD, 0xFFFD,
+ 0xFFFD, 0x89A7, 0x89BC, 0x0000, 0x89E7, 0x0000, 0x0000, 0x8A9C, 0x7793,
+ 0x91FE, 0x8A90, 0x0000, 0x7AE9, 0x0000, 0x4713, 0x0000, 0x717C, 0x8B0C,
+ 0x8B1F, 0x0000, 0x0000, 0x8B3F, 0xFFFD, 0x8B4D, 0x8AA9, 0x0000, 0x8B90,
+ 0x8B9B, 0x8AAF, 0x0000, 0x4615, 0x884F, 0x8C9B, 0x0000, 0x0000, 0x0000,
+ 0x3725, 0x0000, 0x8CD6, 0x0000, 0x0000, 0x8D12, 0x8D03, 0x0000, 0x8CDB,
+ 0x705C, 0x8D11, 0x3ED0, 0x0000, 0x8DA9, 0x0000, 0x0000, 0x0000, 0x3B7C,
+ 0x0000, 0x0000, 0x7AE7, 0x8EAD, 0x8EB6, 0x8EC3, 0x92D4, 0x8F19, 0x8F2D,
+ 0x0000, 0x0000, 0x8FA5, 0x9303, 0x0000, 0x0000, 0x8FB3, 0xFFFD, 0x0000,
+ 0x0000, 0x0000, 0x5EF8, 0x0000, 0x8FF9, 0xFFFD, 0x0000, 0x3980, 0x0000,
+ 0x9037, 0x0000, 0x0000, 0x9061, 0x0000, 0x0000, 0x90A8, 0x0000, 0x90C4,
+ 0x0000, 0x90AE, 0xFA26, 0x9167, 0x91A9, 0x91C4, 0x7CAC, 0x0000, 0x0000,
+ 0x920E, 0x6C9F, 0x9241, 0x9262, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x932C, 0x936B, 0x0000, 0x0000, 0x5AC3, 0x0000, 0x0000, 0x4965,
+ 0x9244, 0x0000, 0x0000, 0x0000, 0x9373, 0x945B, 0x8EBC, 0x9585, 0x95A6,
+ 0x9426, 0x95A0, 0x6FF6, 0x42B9, 0x0000, 0x0000, 0x0000, 0x49DF, 0x6C1C,
+ 0x967B, 0x9696, 0x416C, 0x96A3, 0x0000, 0x61DA, 0xE4AD, 0x78F5, 0x0000,
+ 0x96BD, 0x53CC, 0x49A1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x9731, 0x8642, 0x9736, 0x4A0F, 0x453D, 0x4585, 0x0000,
+ 0x7075, 0x5B41, 0x971B, 0xFFFD, 0x0000, 0x9757, 0x5B4A, 0x0000, 0x975F,
+ 0x9425, 0x50D0, 0x0000, 0x0000, 0x9789, 0x979F, 0x97B1, 0x97BE, 0x97C0,
+ 0x97D2, 0x97E0, 0x0000, 0x97EE, 0x741C, 0x0000, 0xFFFD, 0x97F5, 0x0000,
+ 0x0000, 0x4AD1, 0x9834, 0x9833, 0x984B, 0x9866, 0x3B0E, 0x0000, 0x3D51,
+ 0x0000, 0x0000, 0x0000, 0x98CA, 0x98B7, 0x98C8, 0x98C7, 0x4AFF, 0x0000,
+ 0x0000, 0x55B0, 0x98E1, 0x98E6, 0x98EC, 0x9378, 0x9939, 0x0000, 0x4B72,
+ 0x0000, 0x0000, 0x99F5, 0x9A0C, 0x9A3B, 0x9A10, 0x9A58, 0x0000, 0x36C4,
+ 0x0000, 0x0000, 0x9AE0, 0x9AE2, 0x0000, 0x9AF4, 0x4C0E, 0x9B14, 0x9B2D,
+ 0x0000, 0x5034, 0x9B34, 0x38C3, 0x0000, 0x9B50, 0x9B40, 0x0000, 0x5A45,
+ 0x0000, 0x9B8E, 0x9C02, 0x9BFF, 0x9C0C, 0x0000, 0x9DD4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x9D7E, 0x9D83, 0x0000, 0x9E0E, 0x9DC4,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x9D39, 0x0000, 0x0000, 0x9E90, 0x9E95,
+ 0x9E9E, 0x9EA2, 0x4D34, 0x9EAA, 0x9EAF, 0x0000, 0x9EC1, 0x3B60, 0x39E5,
+ 0x3D1D, 0x4F32, 0x37BE, 0x0000, 0x9F02, 0x9F08, 0x4B96, 0x9424, 0x0000,
+ 0x9F17, 0x0000, 0x9F39, 0x569F, 0x568A, 0x9F45, 0x99B8, 0x0000, 0x97F2,
+ 0x847F, 0xFFFD, 0x9F69, 0x7ADC, 0x9F8E, 0x7216, 0x4BBE, 0x0000, 0x0000,
+ 0x7177, 0x0000, 0x0000, 0x0000, 0x739E, 0x0000, 0x0000, 0x799F, 0x0000,
+ 0x0000, 0x9369, 0x93F3, 0x0000, 0x92EC, 0x9381, 0x93CB, 0x0000, 0x0000,
+ 0x7217, 0x3EEB, 0x7772, 0x7A43, 0x70D0, 0x0000, 0x0000, 0x717E, 0x0000,
+ 0x70A3, 0x0000, 0x0000, 0x3EC7, 0x0000, 0x0000, 0x0000, 0x3722, 0x0000,
+ 0x0000, 0x36E1, 0x0000, 0x0000, 0x0000, 0x3723, 0x0000, 0x575B, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x8503, 0x0000, 0xFFFD, 0x8455, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x44F4, 0x0000, 0x0000, 0x0000,
+ 0x67F9, 0x3733, 0x3C15, 0x3DE7, 0x586C, 0x0000, 0x6810, 0x4057, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x54CB, 0x569E, 0x0000, 0x5692, 0x0000,
+ 0x0000, 0x0000, 0xFFFD, 0x0000, 0x939C, 0x4EF8, 0x512B, 0x3819, 0x0000,
+ 0x4EBC, 0x0000, 0xFFFD, 0x4F4B, 0x4F8A, 0x0000, 0x5A68, 0x0000, 0x0000,
+ 0x3999, 0x0000, 0x0000, 0x3435, 0x4F29, 0x0000, 0x0000, 0x0000, 0x8ADA,
+ 0x0000, 0x4E98, 0x50CD, 0x510D, 0x4FA2, 0x4F03, 0x0000, 0x0000, 0x4F42,
+ 0x502E, 0x506C, 0x5081, 0x4FCC, 0x4FE5, 0x5058, 0x50FC, 0x6E76, 0x0000,
+ 0x0000, 0x0000, 0x6D72, 0x0000, 0x0000, 0x51A8, 0x51C3, 0x0000, 0x44DD,
+ 0x0000, 0x0000, 0x0000, 0x8D7A, 0x0000, 0x0000, 0x5259, 0x52A4, 0x0000,
+ 0x52E1, 0xFFFD, 0x467A, 0x718C, 0x0000, 0x0000, 0x0000, 0x0000, 0x69D1,
+ 0x0000, 0xFFFD, 0x3EDE, 0x7499, 0x7414, 0x7456, 0x7398, 0x4B8E, 0x0000,
+ 0x0000, 0x53D0, 0x3584, 0x720F, 0x0000, 0x55B4, 0x0000, 0x54CD, 0x0000,
+ 0x571D, 0x925D, 0x96F4, 0x57DD, 0x578D, 0x577F, 0x363E, 0x58CB, 0x5A99,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5A2C, 0x59B8, 0x5A7E, 0x5ACF, 0x5A12,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x36F5, 0x6D05, 0x7443, 0x5A21, 0x0000,
+ 0x5A81, 0x0000, 0x0000, 0x93E0, 0x748C, 0x0000, 0x7105, 0x4972, 0x9408,
+ 0x0000, 0x93BD, 0x37A0, 0x5C1E, 0x5C9E, 0x5E5E, 0x5E48, 0x0000, 0x0000,
+ 0x0000, 0x5ECD, 0x5B4F, 0x0000, 0x0000, 0x3701, 0x0000, 0x36DD, 0x0000,
+ 0x36D3, 0x812A, 0x0000, 0x0000, 0x0000, 0x0000, 0x5F0C, 0x5F0E, 0x0000,
+ 0x0000, 0x5A6B, 0x0000, 0x5B44, 0x0000, 0x8860, 0x607E, 0x0000, 0x0000,
+ 0x5FDB, 0x3EB8, 0x0000, 0x0000, 0x0000, 0x0000, 0x61C0, 0x0000, 0x0000,
+ 0x0000, 0x6199, 0x6198, 0x6075, 0x0000, 0x0000, 0x0000, 0x0000, 0x6471,
+ 0x0000, 0x0000, 0x3A29, 0x0000, 0x0000, 0x0000, 0x0000, 0x6337, 0x64B6,
+ 0x6331, 0x63D1, 0x0000, 0x0000, 0x62A4, 0x0000, 0x643B, 0x656B, 0x6972,
+ 0x3BF4, 0x0000, 0x0000, 0x0000, 0x0000, 0x550D, 0x0000, 0x0000, 0x0000,
+ 0x66CE, 0x0000, 0x0000, 0x3AE0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x78EE, 0x0000, 0x0000, 0x0000, 0x3464, 0x0000, 0x0000, 0x0000,
+ 0x668E, 0x0000, 0x666B, 0x4B93, 0x6630, 0x0000, 0x0000, 0x6663, 0x0000,
+ 0x0000, 0x661E, 0x0000, 0x38D1, 0x0000, 0x0000, 0x3B99, 0x0000, 0x0000,
+ 0x74D0, 0x3B96, 0x0000, 0x68B6, 0xFFFD, 0x3BC4, 0x6ABE, 0x0000, 0x0000,
+ 0x6A33, 0x6A52, 0x6AC9, 0x6B05, 0x0000, 0x6511, 0x6898, 0x6A4C, 0x3BD7,
+ 0x6A7A, 0x6B57, 0x0000, 0x0000, 0x93A0, 0x92F2, 0x0000, 0x0000, 0x9289,
+ 0x0000, 0x0000, 0x9467, 0x6DA5, 0x6F0B, 0xFFFD, 0x0000, 0x3D8F, 0x6E04,
+ 0x0000, 0x5A3D, 0x6E0A, 0x5847, 0x6D24, 0x7842, 0x713B, 0x0000, 0x0000,
+ 0x70F1, 0x7250, 0x7287, 0x7294, 0x0000, 0x0000, 0x5179, 0x0000, 0x0000,
+ 0x747A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3F06, 0x3EB1, 0x0000,
+ 0x0000, 0x0000, 0x60A7, 0x3EF3, 0x74CC, 0x743C, 0x9387, 0x7437, 0x449F,
+ 0x0000, 0x4551, 0x7583, 0x3F63, 0x0000, 0x0000, 0x3F58, 0x7555, 0x7673,
+ 0x0000, 0xFFFD, 0x7468, 0x0000, 0x0000, 0x0000, 0x3AFB, 0x3DCD, 0x0000,
+ 0x3EFF, 0x0000, 0x0000, 0x91FA, 0x5732, 0x9342, 0x0000, 0x0000, 0x50DF,
+ 0x0000, 0x0000, 0x7778, 0x0000, 0x770E, 0x770F, 0x777B, 0x0000, 0x0000,
+ 0x3A5E, 0x0000, 0x7438, 0x749B, 0x3EBF, 0x0000, 0x0000, 0x40C8, 0x0000,
+ 0x0000, 0x9307, 0x0000, 0x781E, 0x788D, 0x7888, 0x78D2, 0x73D0, 0x7959,
+ 0x0000, 0x0000, 0x410E, 0xFFFD, 0xFFFD, 0x79A5, 0x6A2D, 0x0000, 0x7A3A,
+ 0x79F4, 0x416E, 0x0000, 0x4132, 0x9235, 0x79F1, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3597, 0x556B, 0x3570, 0x36AA, 0x0000, 0x0000, 0x7AE2,
+ 0x5A59, 0x0000, 0x0000, 0x0000, 0x5A0D, 0x0000, 0x78F0, 0x5A2A, 0x0000,
+ 0x7AFE, 0x41F9, 0x7C5D, 0x7C6D, 0x4211, 0x0000, 0x0000, 0x0000, 0x7CCD,
+ 0x0000, 0x0000, 0x7C8E, 0x7C7C, 0x7CAE, 0x6AB2, 0x7DDC, 0x7E07, 0x7DD3,
+ 0x7F4E, 0x0000, 0x0000, 0x0000, 0x7D97, 0x0000, 0x426A, 0x0000, 0x0000,
+ 0x67D6, 0x0000, 0x0000, 0x57C4, 0x0000, 0x0000, 0x7FDD, 0x7B27, 0x0000,
+ 0x0000, 0x0000, 0x7B0C, 0x0000, 0x99E6, 0x8645, 0x9A63, 0x6A1C, 0x0000,
+ 0x0000, 0x0000, 0x9A1F, 0x0000, 0x8495, 0x0000, 0x0000, 0x44EA, 0x8137,
+ 0x4402, 0x80C6, 0x8109, 0x8142, 0x0000, 0x98C3, 0x0000, 0x8262, 0x8265,
+ 0x0000, 0x8453, 0x0000, 0x8610, 0x0000, 0x5A86, 0x417F, 0x0000, 0x5B2B,
+ 0x0000, 0x5AE4, 0x0000, 0x86A0, 0x0000, 0x0000, 0x882D, 0x0000, 0x5A02,
+ 0x886E, 0x4F45, 0x8887, 0x88BF, 0x88E6, 0x8965, 0x894D, 0x0000, 0x8954,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3EAD, 0x84A3, 0x46F5,
+ 0x46CF, 0x37F2, 0x8A3D, 0x8A1C, 0x0000, 0x5F4D, 0x922B, 0x0000, 0x65D4,
+ 0x7129, 0x70C4, 0x0000, 0x9D6D, 0x8C9F, 0x8CE9, 0x0000, 0x599A, 0x77C3,
+ 0x59F0, 0x36D4, 0x8E2A, 0x8EA7, 0x0000, 0x8F30, 0x8F4A, 0x42F4, 0x6C58,
+ 0x6FBB, 0x0000, 0x489B, 0x6F79, 0x6E8B, 0x0000, 0x9BE9, 0x36B5, 0x0000,
+ 0x90BB, 0x48B4, 0x5571, 0x4906, 0x91BB, 0x9404, 0x0000, 0x4062, 0x0000,
+ 0x9427, 0x0000, 0x0000, 0x84E5, 0x8A2B, 0x9599, 0x95A7, 0x9597, 0x9596,
+ 0x0000, 0x7445, 0x3EC2, 0x0000, 0x0000, 0x0000, 0x3EE7, 0x0000, 0x968F,
+ 0x0000, 0x0000, 0x0000, 0x3ECC, 0x0000, 0x0000, 0x0000, 0x7412, 0x746B,
+ 0x3EFC, 0x9741, 0x0000, 0x6847, 0x4A1D, 0x0000, 0x0000, 0xFFFD, 0x9368,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x92BA, 0x5B11, 0x8B69, 0x493C, 0x73F9,
+ 0x0000, 0x979B, 0xFFFD, 0x9938, 0x0000, 0x5DC1, 0x0000, 0x0000, 0x981F,
+ 0x0000, 0x92F6, 0x0000, 0x91E5, 0x44C0, 0x0000, 0x0000, 0x0000, 0x98DC,
+ 0x0000, 0x3F00, 0x922A, 0x4925, 0x8414, 0x993B, 0x994D, 0x0000, 0x3DFD,
+ 0xFFFD, 0x4B6F, 0x99AA, 0x9A5C, 0x0000, 0x0000, 0x6A8F, 0x9A21, 0x5AFE,
+ 0x9A2F, 0x0000, 0x4B90, 0x0000, 0x99BC, 0x4BBD, 0x4B97, 0x937D, 0x5872,
+ 0x0000, 0x5822, 0x0000, 0x0000, 0x7844, 0x0000, 0x0000, 0x68C5, 0x3D7D,
+ 0x9458, 0x3927, 0x6150, 0x0000, 0x0000, 0x6107, 0x9C4F, 0x9C53, 0x9C7B,
+ 0x9C35, 0x9C10, 0x9B7F, 0x9BCF, 0x0000, 0x9B9F, 0x0000, 0x0000, 0x9D21,
+ 0x4CAE, 0x0000, 0x9E18, 0x4CB0, 0x9D0C, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x9DA5, 0x84BD, 0x0000, 0x0000, 0x0000, 0x85FC, 0x4533, 0x0000, 0x0000,
+ 0x0000, 0x8420, 0x85EE, 0x0000, 0x0000, 0x0000, 0x79E2, 0x0000, 0x0000,
+ 0x0000, 0x3D62, 0x93DB, 0x92BE, 0x9348, 0x0000, 0x78B9, 0x9277, 0x944D,
+ 0x4FE4, 0x3440, 0x9064, 0x0000, 0x783D, 0x7854, 0x78B6, 0x784B, 0x0000,
+ 0x0000, 0x0000, 0x369A, 0x4F72, 0x6FDA, 0x6FD9, 0xFFFD, 0x701E, 0x5414,
+ 0x0000, 0x57BB, 0x58F3, 0x578A, 0x9D16, 0x57D7, 0x7134, 0x34AF, 0x0000,
+ 0x71EB, 0x0000, 0x0000, 0xFFFD, 0x0000, 0x0000, 0x610C, 0x5ACE, 0x5A0B,
+ 0x42BC, 0x0000, 0x372C, 0x4B7B, 0x0000, 0x93BB, 0x93B8, 0x0000, 0x0000,
+ 0x8472, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5994, 0x0000, 0x0000,
+ 0x7DA8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x92E5, 0x73E2, 0x3EE9,
+ 0x74B4, 0x0000, 0x0000, 0x3EE1, 0x0000, 0x6AD8, 0x73F3, 0x73FB, 0x3ED6,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7448, 0x0000,
+ 0x70A5, 0x0000, 0x9284, 0x73E6, 0x935F, 0x0000, 0x9331, 0x0000, 0x0000,
+ 0x9386, 0x0000, 0x0000, 0x4935, 0x0000, 0x716B, 0x0000, 0x0000, 0x56A4,
+ 0x0000, 0x0000, 0x0000, 0x5502, 0x79C4, 0x0000, 0x7DFE, 0x0000, 0x0000,
+ 0x0000, 0x452E, 0x9401, 0x370A, 0x0000, 0x0000, 0x59B0, 0x0000, 0x0000,
+ 0x0000, 0x5AA1, 0x36E2, 0x0000, 0x36B0, 0x925F, 0x5A79, 0x0000, 0x0000,
+ 0x9374, 0x3CCD, 0x0000, 0x4A96, 0x398A, 0x50F4, 0x3D69, 0x3D4C, 0x0000,
+ 0x7175, 0x42FB, 0x0000, 0x6E0F, 0x0000, 0x44EB, 0x6D57, 0x0000, 0x7067,
+ 0x6CAF, 0x3CD6, 0x0000, 0x0000, 0x6E02, 0x6F0C, 0x3D6F, 0x0000, 0x7551,
+ 0x36BC, 0x34C8, 0x4680, 0x3EDA, 0x4871, 0x59C4, 0x926E, 0x493E, 0x8F41,
+ 0x0000, 0x0000, 0x5812, 0x57C8, 0x36D6, 0x0000, 0x70FE, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x68B9, 0x6967, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6A1A, 0x0000, 0x0000, 0x843E, 0x44DF,
+ 0x44CE, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFD, 0xFFFD, 0x833D, 0x0000,
+ 0x83ED, 0x0000, 0x0000, 0x0000, 0x5989, 0x5A82, 0x0000, 0x5A61, 0x5A71,
+ 0x0000, 0x0000, 0x372D, 0x59EF, 0x0000, 0x36C7, 0x718E, 0x9390, 0x669A,
+ 0x0000, 0x5A6E, 0x5A2B, 0x0000, 0x6A2B, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x711D, 0x0000, 0x0000, 0x4FB0, 0x0000, 0x5CC2, 0x0000, 0x0000, 0x0000,
+ 0x6A0C, 0x0000, 0x0000, 0xFFFD, 0x7133, 0x0000, 0x3DA5, 0x6CDF, 0x0000,
+ 0x59EB, 0x5F5C, 0x0000, 0x7CD3, 0x0000, 0x0000, 0x0000, 0x906C, 0x81F6,
+ 0x770C, 0x6CA2, 0x56FD, 0x5869, 0x6761, 0x5C5E, 0x58F2, 0x70B9, 0x6803,
+ 0x8FBB, 0x8FBC, 0x4E21, 0x7B39, 0x3DCC, 0x732A, 0x7560, 0x583A, 0x82A6,
+ 0x698A, 0x60E3, 0x4EEE, 0x99C4, 0x9EBF, 0x5301, 0x67A0, 0x60E8, 0x51B4,
+ 0x7A83, 0x9C3A, 0x7AC8, 0x691A, 0x59AC, 0x5840, 0x546A, 0x60E7, 0x567A,
+ 0x6955, 0x9C2F, 0x87A5, 0x5C20, 0x5E0B, 0x671E, 0x84AD, 0x8B81, 0x4E78,
+ 0x62C3, 0x6855, 0xFFFD, 0x82FD, 0x89A5, 0x8FA0, 0x97B8, 0x9847, 0x9ABD,
+ 0x5FB1, 0x6648, 0x66BF, 0x0000, 0xFFFD, 0x0000, 0xFFFD, 0xFFFD, 0x0000,
+ 0x670E, 0x6918, 0x0000, 0x0000, 0x0000, 0x0000, 0x48D0, 0x4AB8, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x51D2, 0x0000, 0x599F, 0x0000, 0x3BBE, 0x0000,
+ 0x399B, 0x0000, 0x0000, 0x3762, 0x0000, 0x8B5E, 0x0000, 0xFFFD, 0x7209,
+ 0x0000, 0x0000, 0x8EDA, 0x528F, 0x7171, 0x0000, 0x0000, 0x55BC, 0x0000,
+ 0x3473, 0x0000, 0x4718, 0x0000, 0x5066, 0x34FB, 0x0000, 0xFFFD, 0x477C,
+ 0x0000, 0x0000, 0xFFFD, 0x0000, 0x9056, 0x0000, 0x8B62, 0x5D5B, 0x0000,
+ 0xFFFD, 0x0000, 0x8AEA, 0x0000, 0x0000, 0x4BC0, 0x0000, 0x9465, 0x0000,
+ 0x6195, 0x5A27, 0x0000, 0x0000, 0x0000, 0x4E6A, 0x0000, 0x9656, 0x6D8F,
+ 0x0000, 0x8977, 0x0000, 0xFFFD, 0x7B42, 0x0000, 0x0000, 0xFFFD, 0x7A45,
+ 0x9A26, 0x365F, 0x0000, 0x0000, 0x7983, 0x5D2C, 0x0000, 0xFFFD, 0x46D0,
+ 0x753B, 0x8865, 0x58B6, 0x371C, 0x0000, 0x3C54, 0x9281, 0x0000, 0x9330,
+ 0x0000, 0x6C39, 0x0000, 0x8827, 0x88F5, 0x0000, 0x0000, 0x0000, 0x6EB8,
+ 0x0000, 0x0000, 0x39A4, 0xFFFD, 0xFFFD, 0x453F, 0x66B6, 0x0000, 0x0000,
+ 0x8943, 0x40DF, 0x0000, 0x39A1, 0x0000, 0x0000, 0x0000, 0x71AD, 0x8366,
+ 0x0000, 0xFFFD, 0x4CB7, 0x0000, 0x0000, 0x0000, 0x7B43, 0x797E, 0x6FB5,
+ 0x0000, 0x6A03, 0x0000, 0x53A2, 0x0000, 0x93BF, 0x6836, 0x975D, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5D85, 0x0000, 0x5715, 0x9823, 0x0000, 0x5DAB,
+ 0x0000, 0x65BE, 0x69D5, 0x53D2, 0x0000, 0x0000, 0x3C11, 0x6736, 0x0000,
+ 0x35CA, 0x48FA, 0xFFFD, 0x7808, 0x9255, 0x43F2, 0x43DF, 0x59F8, 0xFFFD,
+ 0x568B, 0x0000, 0x9012, 0x55C1, 0x4509, 0x7E7F, 0x6F56, 0x6AB1, 0x34E4,
+ 0x0000, 0x373A, 0xFFFD, 0x0000, 0x0000, 0x3DEB, 0x0000, 0x0000, 0x56BF,
+ 0x8E0E, 0x5B6D, 0x63DE, 0xFFFD, 0x6530, 0x562D, 0x541A, 0x0000, 0x4C7D,
+ 0x5622, 0x561E, 0x7F49, 0x5975, 0x0000, 0x8770, 0x8117, 0x9D5E, 0x8D18,
+ 0x763B, 0x9C45, 0x764E, 0x77B9, 0x9345, 0x5432, 0x8148, 0x82F7, 0x5625,
+ 0x8132, 0x8418, 0x80BD, 0x55EA, 0x7962, 0x5643, 0x5416, 0x0000, 0x35CE,
+ 0x5605, 0x55F1, 0x66F1, 0x0000, 0x362D, 0x7534, 0x55F0, 0x55BA, 0x5497,
+ 0x5572, 0x0000, 0x0000, 0x5ED0, 0x0000, 0x0000, 0x0000, 0x9EAB, 0x7D5A,
+ 0xFFFD, 0x0000, 0x629D, 0x976D, 0x5494, 0x8CCD, 0x71F6, 0x9176, 0x63FC,
+ 0x63B9, 0x63FE, 0x5569, 0x0000, 0x9C72, 0x0000, 0x519A, 0x34DF, 0x0000,
+ 0x51A7, 0x544D, 0x551E, 0x5513, 0x7666, 0x8E2D, 0x0000, 0x75B1, 0x80B6,
+ 0x8804, 0xFFFD, 0x88C7, 0x81B6, 0x841C, 0x44EC, 0x7304, 0x830B, 0x567B,
+ 0x9170, 0x9208, 0x0000, 0x7266, 0x474E, 0x0000, 0x40FA, 0x9C5D, 0x651F,
+ 0x48F3, 0x0000, 0x0000, 0xFFFD, 0x0000, 0xED2B, 0x0000, 0x71A3, 0x7E8E,
+ 0x9D50, 0x3577, 0x6CB2, 0x5367, 0x39DC, 0x0000, 0x822D, 0x544B, 0xED43,
+ 0x3A52, 0x7374, 0x0000, 0x4D09, 0x9BED, 0xFFFD, 0x4C5B, 0x0000, 0x845C,
+ 0x0000, 0x632E, 0x7D25, 0x3A2A, 0x9008, 0x52CC, 0x3E74, 0x367A, 0x45E9,
+ 0x0000, 0x7640, 0x5AF0, 0x0000, 0x787A, 0x0000, 0x58A7, 0x40BF, 0x567C,
+ 0x9B8B, 0x5D74, 0x7654, 0x0000, 0x9E85, 0x4CE1, 0xFFFD, 0x37FB, 0x6119,
+ 0x0000, 0xED73, 0x565D, 0x0000, 0x5234, 0x35AD, 0xFFFD, 0x9D7C, 0x7C56,
+ 0x9B39, 0x57DE, 0x5C53, 0x64D3, 0x0000, 0x0000, 0x86AD, 0x0000, 0x0000,
+ 0xED8C, 0x51FE, 0x0000, 0x5D8E, 0x9703, 0x0000, 0x9E81, 0x904C, 0x7B1F,
+ 0x9B02, 0x5CD1, 0x7BA3, 0x6268, 0x6335, 0x9AFF, 0x7BCF, 0x9B2A, 0x7C7E,
+ 0xFFFD, 0x7C42, 0x7C86, 0x9C15, 0x7BFC, 0x9B09, 0xFFFD, 0x9C2E, 0x9F5A,
+ 0x5573, 0x5BC3, 0x4FFD, 0x9E98, 0x4FF2, 0x5260, 0x52D1, 0x5767, 0x5056,
+ 0x59B7, 0x5E12, 0x97C8, 0x9DAB, 0x8F5C, 0x5469, 0x97B4, 0x9940, 0x97BA,
+ 0x532C, 0x6130, 0x692C, 0x53DA, 0x9C0A, 0x9D02, 0x4C3B, 0x9641, 0x6980,
+ 0x50A6, 0x7546, 0x0000, 0x99DA, 0x5273, 0xEDC9, 0x9159, 0x9681, 0x915C,
+ 0xEDCD, 0x9151, 0x0000, 0x637F, 0x6ACA, 0x5611, 0x918E, 0x757A, 0x6285,
+ 0x734F, 0x7C70, 0x0000, 0xEDDC, 0x76D6, 0x9B9D, 0x4E2A, 0x0000, 0x83BE,
+ 0x8842, 0xEDE4, 0x5C4A, 0x69C0, 0xFFFD, 0xFFFD, 0x521F, 0x5DF5, 0x4ECE,
+ 0x6C31, 0x0000, 0x4F39, 0x549C, 0xFFFD, 0x529A, 0x8D82, 0x35FE, 0xFFFD,
+ 0x35F3, 0xEDF6, 0x6B52, 0x917C, 0x9FA5, 0x9B97, 0x982E, 0x98B4, 0x9ABA,
+ 0x9EA8, 0x9E84, 0x7B14, 0xEE02, 0x6BFA, 0x8818, 0x7F78, 0xEE06, 0x5620,
+ 0x0000, 0x8E77, 0x9F53, 0xEE0B, 0x8DD4, 0x8E4F, 0x9E1C, 0x8E01, 0x6282,
+ 0x0000, 0x8E28, 0x8E75, 0x7AD3, 0x7A3E, 0x78D8, 0x6CEA, 0x8A67, 0x7607,
+ 0x9F26, 0x6CCE, 0x87D6, 0x75C3, 0x0000, 0x7853, 0x8D0C, 0x72E2, 0x7371,
+ 0x8B2D, 0x7302, 0x74F1, 0x8CEB, 0x0000, 0x862F, 0x5FBA, 0x88A0, 0x44B7,
+ 0xEE2F, 0x0000, 0xEE32, 0x8A7E, 0x0000, 0xEE35, 0x60FD, 0x7667, 0x9AD7,
+ 0x9D44, 0x936E, 0x9B8F, 0x87F5, 0xEE3D, 0xFFFD, 0x8CF7, 0x732C, 0x9721,
+ 0x9BB0, 0x35D6, 0x72B2, 0x4C07, 0x7C51, 0x994A, 0x6159, 0x4C04, 0x9E96,
+ 0x617D, 0xEE4D, 0x575F, 0x616F, 0x62A6, 0x6239, 0xFFFD, 0x3A5C, 0x61E2,
+ 0x53AA, 0x6364, 0x6802, 0x35D2, 0x5D57, 0x8FDA, 0x0000, 0xEE5E, 0x50D9,
+ 0x7906, 0x5332, 0x9638, 0x0000, 0x4065, 0xEE66, 0x77FE, 0xEE68, 0x7CC2,
+ 0x0000, 0x7CDA, 0x7A2D, 0x8066, 0x8063, 0x7D4D, 0x7505, 0x74F2, 0x8994,
+ 0x821A, 0x670C, 0x8062, 0x0000, 0x805B, 0x74F0, 0x8103, 0x7724, 0x8989,
+ 0x0000, 0x7553, 0x87A9, 0x87CE, 0x81C8, 0x878C, 0x8A49, 0x8CAD, 0x8B43,
+ 0x772B, 0x74F8, 0x84DA, 0x69B2, 0x8DA6, 0xEE8C, 0x89A9, 0xFFFD, 0x6DB9,
+ 0x87C1, 0x0000, 0x74E7, 0x3DDB, 0x7176, 0x60A4, 0x619C, 0x3CD1, 0xFFFD,
+ 0x6077, 0xEE9A, 0x7F71, 0x0000, 0x60E9, 0x4B7E, 0x0000, 0x92DB, 0x0000,
+ 0x0000, 0x854C, 0x42B5, 0x73EF, 0x51B5, 0x3649, 0x0000, 0x0000, 0x9344,
+ 0x0000, 0x82EE, 0x0000, 0x783C, 0x6744, 0x62DF, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4FAB, 0x0000, 0x5008, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xFFFD, 0x0000, 0x5FA4, 0x0000, 0x0000, 0x6EDB, 0x0000, 0x50DE,
+ 0x5101, 0x347A, 0x510E, 0x986C, 0x3743, 0x8416, 0x0000, 0x0000, 0x5160,
+ 0x0000, 0x516A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5B82, 0x877D, 0x0000, 0x0000, 0x51B2, 0x51B8, 0x9D34, 0x51C9, 0x51CF,
+ 0x51D1, 0x3CDC, 0x51D3, 0x0000, 0x51B3, 0xFFFD, 0xFFFD, 0x51ED, 0x83CD,
+ 0x693E, 0x0000, 0x5F7B, 0x520B, 0x5226, 0x523C, 0x52B5, 0x5257, 0x5294,
+ 0x52B9, 0x52C5, 0x7C15, 0x8542, 0x52E0, 0x860D, 0x0000, 0x0000, 0x0000,
+ 0x5549, 0x6ED9, 0x0000, 0x0000, 0x0000, 0x5333, 0xFFFD, 0x0000, 0x6CCB,
+ 0x0000, 0x681B, 0x73D5, 0x604A, 0x3EAA, 0x38CC, 0x0000, 0x71DD, 0x44A2,
+ 0x536D, 0x5374, 0x0000, 0x537E, 0x0000, 0x0000, 0x0000, 0x77E6, 0x5393,
+ 0x0000, 0x53A0, 0x53AB, 0x53AE, 0x73A7, 0x0000, 0x3F59, 0x739C, 0x53C1,
+ 0x53C5, 0x6C49, 0x4E49, 0x57FE, 0x53D9, 0x3AAB, 0x0000, 0x53E0, 0x0000,
+ 0x0000, 0x53F6, 0x0000, 0x5413, 0x7079, 0x552B, 0x6657, 0x6D5B, 0x546D,
+ 0x0000, 0x0000, 0x555D, 0x548F, 0x54A4, 0x47A6, 0x0000, 0x0000, 0x3DB4,
+ 0x0000, 0x0000, 0x0000, 0x5547, 0x4CED, 0x542F, 0x7417, 0x5586, 0x55A9,
+ 0xFFFD, 0x0000, 0x0000, 0x4552, 0x0000, 0x66B3, 0x0000, 0x5637, 0x66CD,
+ 0x0000, 0x66A4, 0xFFFD, 0x564D, 0x564F, 0x78F1, 0x56F1, 0x9787, 0x53FE,
+ 0x5700, 0x56EF, 0x56ED, 0x0000, 0x3623, 0x0000, 0x5746, 0x0000, 0x6C6E,
+ 0x708B, 0x5742, 0x36B1, 0x0000, 0x57E6, 0x0000, 0x5803, 0x0000, 0x0000,
+ 0x5826, 0x0000, 0x581F, 0x58AA, 0x3561, 0x58E0, 0x58DC, 0x0000, 0x58FB,
+ 0x5BFF, 0x5743, 0x0000, 0x0000, 0x93D3, 0x35A1, 0x591F, 0x68A6, 0x36C3,
+ 0x6E59, 0x0000, 0x5A24, 0xFFFD, 0x0000, 0x8505, 0x59C9, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x59D9, 0x0000, 0x0000, 0x0000, 0x6D71, 0x0000, 0x0000,
+ 0x59F9, 0x0000, 0x5AAB, 0x5A63, 0x36E6, 0x0000, 0xFFFD, 0x3708, 0x5A96,
+ 0x7465, 0x5AD3, 0x0000, 0x0000, 0x0000, 0x3732, 0x0000, 0x5E83, 0x52D0,
+ 0x5B76, 0x6588, 0x5B7C, 0x0000, 0x4004, 0x485D, 0x0000, 0x5BD5, 0x0000,
+ 0x0000, 0x0000, 0x5BF3, 0x5B9D, 0x4D10, 0x5C05, 0x0000, 0x5C13, 0x73CE,
+ 0x5C14, 0x0000, 0x0000, 0x5C49, 0x48DD, 0x5C85, 0x5CE9, 0x5CEF, 0x5D8B,
+ 0x0000, 0x0000, 0x5D10, 0x5D18, 0x5D46, 0x0000, 0x5CBA, 0x5DD7, 0x82FC,
+ 0x382D, 0x0000, 0x0000, 0x0000, 0x8287, 0x3836, 0x3BC2, 0x5E2E, 0x6A8A,
+ 0xFFFD, 0xE12F, 0x0000, 0x0000, 0x53A6, 0x4EB7, 0xFFFD, 0x53A8, 0x0000,
+ 0x5E09, 0xE138, 0x0000, 0x5EF9, 0x5EFB, 0x38A0, 0x5EFC, 0x683E, 0x941B,
+ 0x5F0D, 0x0000, 0x0000, 0x3ADE, 0x0000, 0x5F3A, 0x0000, 0x0000, 0x0000,
+ 0x5F63, 0x0000, 0x5F72, 0x9340, 0x0000, 0x5FA7, 0x5DB6, 0x3D5F, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x91D6, 0x0000, 0x0000, 0x6031, 0x6685, 0x3963,
+ 0x3DC7, 0x3639, 0x5790, 0x0000, 0x7971, 0x3E40, 0x609E, 0xFFFD, 0x60EA,
+ 0x0000, 0x0000, 0x0000, 0x74A4, 0x50E1, 0x5AA0, 0x6164, 0x6142, 0x0000,
+ 0x0000, 0x6181, 0x51F4, 0x0000, 0x6187, 0x5BAA, 0x0000, 0x0000, 0x61D3,
+ 0x0000, 0x0000, 0x61D0, 0x3932, 0x0000, 0x0000, 0x6023, 0x615C, 0x651E,
+ 0x638B, 0x0000, 0x62C5, 0x0000, 0x62D5, 0x0000, 0x636C, 0x0000, 0x3A17,
+ 0x6438, 0x63F8, 0x0000, 0x0000, 0x6F8A, 0x0000, 0xFFFD, 0x0000, 0x64E1,
+ 0x64E5, 0x947B, 0x3A66, 0x643A, 0x3A57, 0x654D, 0x6F16, 0x0000, 0x0000,
+ 0x6585, 0x656D, 0x655F, 0xFFFD, 0x65B5, 0x0000, 0x4B37, 0x65D1, 0x40D8,
+ 0x0000, 0xE1AB, 0x65E3, 0x5FDF, 0x0000, 0x6618, 0x0000, 0x0000, 0x6644,
+ 0x0000, 0x0000, 0x664B, 0x0000, 0x6667, 0x0000, 0x6673, 0xFA12, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x77C5, 0x0000, 0x99A4, 0x6702, 0x0000, 0x0000,
+ 0x69FA, 0x0000, 0x0000, 0x6767, 0x6762, 0x0000, 0x0000, 0x67D7, 0x44E9,
+ 0x6822, 0x6E50, 0x923C, 0x6801, 0x0000, 0x0000, 0x685D, 0x0000, 0x69E1,
+ 0x6A0B, 0x0000, 0x6973, 0x68C3, 0x0000, 0x6901, 0x6900, 0x3A01, 0x0000,
+ 0x3B80, 0x67AC, 0x6961, 0x0000, 0x42FC, 0x6936, 0x6998, 0x3BA1, 0x0000,
+ 0x8363, 0x5090, 0x69F9, 0x0000, 0x0000, 0x6A45, 0x0000, 0x6A9D, 0x3BF3,
+ 0x67B1, 0x6AC8, 0x0000, 0x3C0D, 0x6B1D, 0x0000, 0x60DE, 0x6B35, 0x6B74,
+ 0x0000, 0x6EB5, 0x0000, 0xFFFD, 0x0000, 0x3740, 0x5421, 0x0000, 0x6BE1,
+ 0x0000, 0x6BDC, 0x6C37, 0x0000, 0x0000, 0x0000, 0x6C5A, 0x8226, 0x6C79,
+ 0x0000, 0x44C5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x36E5, 0x3CEB,
+ 0x0000, 0x9B83, 0x0000, 0x0000, 0x7F8F, 0x6837, 0x0000, 0x0000, 0x0000,
+ 0x6D96, 0x6D5C, 0x6E7C, 0x6F04, 0x0000, 0x0000, 0x0000, 0x8533, 0x0000,
+ 0x51C7, 0xFFFD, 0xFFFD, 0x842E, 0x0000, 0x0000, 0x0000, 0x7453, 0x0000,
+ 0x79CC, 0x6E4F, 0x5A91, 0x0000, 0x6FF8, 0x370D, 0x6F9D, 0x0000, 0x6EFA,
+ 0x0000, 0x0000, 0x4555, 0x93F0, 0x6F44, 0x6F5C, 0x3D4E, 0x6F74, 0x0000,
+ 0x3D3B, 0x6F9F, 0x0000, 0x6FD3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x51DF, 0xE251, 0xE252, 0x0000, 0x0000, 0x704B, 0x707E, 0x70A7,
+ 0xFFFD, 0x70CC, 0x70D5, 0x70D6, 0x70DF, 0x4104, 0x3DE8, 0x71B4, 0x7196,
+ 0x0000, 0x712B, 0x7145, 0x5A88, 0x714A, 0xFA48, 0x0000, 0x714F, 0x9362,
+ 0x0000, 0x712C, 0x0000, 0x0000, 0x0000, 0x71BA, 0x0000, 0x70BD, 0x720E,
+ 0x9442, 0x7215, 0x5911, 0x9443, 0x7224, 0x9341, 0x0000, 0x722E, 0x7240,
+ 0x0000, 0x68BD, 0x7255, 0x7257, 0x3E55, 0x0000, 0x680D, 0x6F3D, 0x7282,
+ 0xFFFD, 0x732B, 0x0000, 0x0000, 0x48ED, 0x0000, 0x7328, 0x732E, 0x73CF,
+ 0x73AA, 0x0000, 0x0000, 0x73C9, 0x7449, 0x0000, 0x0000, 0x0000, 0x6623,
+ 0x36C5, 0x0000, 0x0000, 0x0000, 0x73F7, 0x7415, 0x6903, 0x0000, 0x7439,
+ 0x3ED7, 0x0000, 0x0000, 0x7460, 0x0000, 0x7447, 0x73E4, 0x7476, 0x83B9,
+ 0x746C, 0x7474, 0x93F1, 0x6A2C, 0x7482, 0x4953, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5B46, 0x0000, 0x0000, 0x74C8, 0x0000, 0x750E, 0x751E, 0x0000,
+ 0x0000, 0x5BD7, 0x0000, 0x9385, 0x754D, 0x754A, 0x7567, 0x756E, 0x0000,
+ 0x3F04, 0x0000, 0x758E, 0x745D, 0x759E, 0x75B4, 0x7602, 0x762C, 0x7651,
+ 0x764F, 0x766F, 0xE2D3, 0x0000, 0x7690, 0x81EF, 0x37F8, 0x0000, 0x0000,
+ 0x76A1, 0x76A5, 0x76B7, 0x76CC, 0x0000, 0x8462, 0x0000, 0x0000, 0x0000,
+ 0x771E, 0x7726, 0x7740, 0x64AF, 0x0000, 0x7758, 0x0000, 0x77AF, 0x0000,
+ 0x0000, 0x0000, 0x77F4, 0xFFFD, 0x68CA, 0x78AF, 0x78C7, 0x78D3, 0x96A5,
+ 0x792E, 0x0000, 0x78D7, 0x7934, 0x78B1, 0x0000, 0x8FB8, 0x8884, 0x0000,
+ 0x7986, 0x8900, 0x6902, 0x7980, 0x0000, 0x799D, 0x0000, 0x793C, 0x79A9,
+ 0x6E2A, 0x0000, 0x3EA8, 0x79C6, 0x0000, 0x79D4, 0xFFFD, 0x5525, 0xFFFD,
+ 0x0000, 0x0000, 0x0000, 0x5590, 0x0000, 0x39EC, 0x0000, 0x8E46, 0x0000,
+ 0x0000, 0xFFFD, 0x0000, 0x777A, 0x0000, 0x3A34, 0x47D5, 0x0000, 0x0000,
+ 0x0000, 0x64DD, 0x0000, 0x0000, 0x0000, 0xFFFD, 0x648D, 0x8E7E, 0x0000,
+ 0xFFFD, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFD, 0x0000, 0x0000, 0x0000,
+ 0x47F4, 0x0000, 0x0000, 0x9AB2, 0x3A67, 0x0000, 0x3FED, 0x3506, 0x0000,
+ 0x0000, 0xFFFD, 0x0000, 0x9D6E, 0x9815, 0xFFFD, 0x43D9, 0xFFFD, 0x64B4,
+ 0x54E3, 0xFFFD, 0x0000, 0xFFFD, 0x39FB, 0xFFFD, 0x0000, 0x0000, 0x0000,
+ 0x64EA, 0x0000, 0x0000, 0x8E68, 0xFFFD, 0x0000, 0x0000, 0xFFFD, 0x480B,
+ 0x0000, 0x3FFA, 0x5873, 0x0000, 0xFFFD, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xFFFD, 0x5579, 0xFFFD, 0x43BA, 0xFFFD, 0x4AB4, 0x0000, 0x0000, 0x81AA,
+ 0x98F5, 0x0000, 0x6379, 0x39FE, 0x0000, 0x8DC0, 0x56A1, 0x647C, 0x3E43,
+ 0xFFFD, 0x0000, 0x0000, 0x0000, 0xFFFD, 0xFFFD, 0x0000, 0x0000, 0x3992,
+ 0x3A06, 0x0000, 0x3578, 0x0000, 0x0000, 0xFFFD, 0xFFFD, 0x0000, 0x0000,
+ 0x34BC, 0x6C3D, 0x0000, 0xFFFD, 0xFFFD, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3A18, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x95AA, 0xFFFD, 0x0000, 0x7140, 0xFFFD, 0x5156,
+ 0x4EFE, 0x5088, 0xFFFD, 0x3493, 0x5186, 0x5E42, 0x5205, 0x5227, 0x5279,
+ 0x0000, 0x3553, 0x53C2, 0x535F, 0xFFFD, 0x553F, 0xFFFD, 0x55D8, 0x35DD,
+ 0x5621, 0xFFFD, 0x5654, 0x0000, 0xFFFD, 0x0000, 0xFFFD, 0x0000, 0xFFFD,
+ 0xFFFD, 0x37B9, 0x5CC1, 0x5D15, 0x5D56, 0x3838, 0x4E81, 0x5EBD, 0x3914,
+ 0x61B9, 0x6290, 0x6318, 0x645A, 0x6491, 0x816D, 0x8184, 0x8193, 0x6800,
+ 0x3BBC, 0x728F, 0x72CD, 0x0000, 0x7339, 0x7542, 0x75DC, 0x3FC0, 0x0000,
+ 0x3FD7, 0xFFFD, 0x7680, 0x768C, 0x40A8, 0x7839, 0x4103, 0x7A91, 0x7C1B,
+ 0x7CED, 0x7F93, 0x7FAE, 0xFFFD, 0x82FF, 0x585F, 0x86B2, 0x45AC, 0x878B,
+ 0x8947, 0xFFFD, 0x8A29, 0xFFFD, 0x8E71, 0x0000, 0x8EB0, 0xFFFD, 0x915E,
+ 0x918C, 0x990E, 0x991C, 0xFFFD, 0xFFFD, 0x9B81, 0x9DC0, 0x9D93, 0x9EAC,
+ 0x4D91, 0xFFFD, 0x93BA, 0x9E7B, 0x7089, 0x7348, 0xFFFD, 0x7999, 0x8FB7,
+ 0xFFFD, 0x9942, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026,
+ 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038,
+ 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041,
+ 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A,
+ 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053,
+ 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C,
+ 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065,
+ 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E,
+ 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x00A9, 0x2122,
+ 0x2026, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x0030,
+ 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039,
+ 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, 0x0042,
+ 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B,
+ 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054,
+ 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D,
+ 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066,
+ 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+ 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x20AC, 0x20AC, 0x2110,
+ 0x20AC, 0x20AC, 0x309B, 0x309C, 0x2E80, 0x31C0, 0x31C1, 0x31C2, 0x31C3,
+ 0x31C4, 0x0000, 0x31C5, 0x0000, 0x0000, 0x31C6, 0x31C7, 0x0000, 0x0000,
+ 0x31C8, 0x0000, 0x31C9, 0x31CA, 0x31CB, 0x31CC, 0x0000, 0x31CD, 0x31CE,
+ 0xF538, 0xF539, 0x0000, 0x0000, 0x9751, 0x0000, 0x4E5B, 0x4EBB, 0x353E,
+ 0x5C23, 0x5F51, 0x5FC4, 0x38FA, 0x624C, 0x6535, 0x6B7A, 0x6C35, 0x6C3A,
+ 0x706C, 0x722B, 0x4E2C, 0x72AD, 0x0000, 0x7F52, 0x793B, 0x7CF9, 0x7F53,
+ 0x0000, 0x34C1, 0x0000, 0x8002, 0x8080, 0x0000, 0x0000, 0x535D, 0x8864,
+ 0x89C1, 0x0000, 0x8BA0, 0x8D1D, 0x9485, 0x9578, 0x957F, 0x95E8, 0x0000,
+ 0x97E6, 0x9875, 0x98CE, 0x98DE, 0x9963, 0x0000, 0x9C7C, 0x9E1F, 0x9EC4,
+ 0x6B6F, 0xF907, 0x4E37, 0x0000, 0x961D, 0x6237, 0x94A2, 0x2E84, 0x2E86,
+ 0x2E87, 0x2E88, 0x2E8A, 0x2E8C, 0x2E8D, 0x2E95, 0x2E9C, 0x2EA5, 0x2EA7,
+ 0x2EAA, 0x2EAC, 0x2EAE, 0x2EB6, 0x2EBC, 0x2EBE, 0x2ECA, 0x2ECC, 0x2ECD,
+ 0x2ECF, 0x2ED6, 0x2ED7, 0x2EDE, 0x0000, 0x0000, 0x650A, 0x4E3D, 0x6EDD,
+ 0x9D4E, 0x91DF, 0x0000, 0x4F1A, 0x4F28, 0x4FA8, 0x5174, 0x519C, 0x51E4,
+ 0x52A1, 0x52A8, 0x533B, 0x534E, 0x53D1, 0x53D8, 0x56E2, 0x58F0, 0x5904,
+ 0x5907, 0x5932, 0x5934, 0x5B66, 0x5B9E, 0x5B9F, 0x5C9A, 0x5E86, 0x603B,
+ 0x6589, 0x67FE, 0x6804, 0x6865, 0x6D4E, 0x70BC, 0x7535, 0x7EA4, 0x7EAC,
+ 0x7EBA, 0x7EC7, 0x7ECF, 0x7EDF, 0x7F06, 0x7F37, 0x827A, 0x82CF, 0x836F,
+ 0x89C6, 0x8BBE, 0x8BE2, 0x8F66, 0x8F67, 0x8F6E, 0x7411, 0x7CFC, 0x7DCD,
+ 0x6946, 0x7AC9, 0x78B8, 0x80BC, 0x8D0B, 0x80F6, 0x0000, 0x809F, 0x9EC7,
+ 0x4CCD, 0x9DC9, 0x9E0C, 0x4C3E, 0x0000, 0x0000, 0x9E0A, 0x0000, 0x35C1,
+ 0x6E9A, 0x823E, 0x7519, 0x4911, 0x9A6C, 0x9A8F, 0x9F99, 0x7987, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4E24, 0x4E80, 0x4E87, 0x4EBF, 0x4EEB, 0x4F37,
+ 0x344C, 0x4FBD, 0x3E48, 0x5003, 0x347D, 0x34A5, 0x5905, 0x51DB, 0x51FC,
+ 0x4E89, 0x5290, 0x5327, 0x35C7, 0x53A9, 0x3551, 0x53B0, 0x5423, 0x356D,
+ 0x3572, 0x3681, 0x5493, 0x54A3, 0x54B4, 0x54B9, 0x54D0, 0x54EF, 0x5518,
+ 0x5523, 0x5528, 0x3598, 0x35A5, 0x35BF, 0x55D7, 0x35C5, 0x0000, 0x4053,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x40BB, 0x0000, 0x5652, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x35FB,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3F93, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3FF9, 0x0000, 0x6432, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x54CC, 0x82C4,
+ 0x55B9, 0x0000, 0x9C26, 0x9AB6, 0x0000, 0x80EC, 0x5C1C, 0x0000, 0x8134,
+ 0x3797, 0x0000, 0x91B6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3609,
+ 0x0000, 0x56AF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5A54, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x579C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3703, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5899, 0x5268,
+ 0x361A, 0x0000, 0x7BB2, 0x5B68, 0x4800, 0x4B2C, 0x9F27, 0x49E7, 0x9C1F,
+ 0x9B8D, 0x0000, 0x0000, 0x55FB, 0x35F2, 0x5689, 0x5D3E, 0x5D48, 0x3DFC,
+ 0x380F, 0x5DA4, 0x5DB9, 0x3820, 0x5F25, 0x5F83, 0x3908, 0x393F, 0x394D,
+ 0x60D7, 0x613D, 0x5CE5, 0x3989, 0x61B7, 0x61CF, 0x39B8, 0x622C, 0x62E5,
+ 0x39F8, 0x56B1, 0x3A03, 0x63E2, 0x63FB, 0x6407, 0x3A4B, 0x64C0, 0x9F9F,
+ 0x3A97, 0x6586, 0x3ABD, 0x65FF, 0x6653, 0x3AF2, 0x6692, 0x3B22, 0x6716,
+ 0x3B42, 0x67A4, 0x3B58, 0x684A, 0x6884, 0x3B72, 0x3B71, 0x3B7B, 0x6909,
+ 0x6943, 0x725C, 0x6964, 0x699F, 0x6985, 0x69D6, 0x3BDD, 0x6A65, 0x6A74,
+ 0x6A71, 0x6A82, 0x3BEC, 0x6A99, 0x3BF2, 0x6AAB, 0x6AB5, 0x6AD4, 0x6AF6,
+ 0x6B81, 0x6BC1, 0x6BEA, 0x6C75, 0x6CAA, 0x3CCB, 0x6D02, 0x6D06, 0x6D26,
+ 0x6D81, 0x3CEF, 0x6DA4, 0x6DB1, 0x6E15, 0x6E18, 0x6E29, 0x6E86, 0x0000,
+ 0x6EBB, 0x6EE2, 0x6EDA, 0x9F7F, 0x6EE8, 0x6EE9, 0x6F24, 0x6F34, 0x3D46,
+ 0x0000, 0x6F81, 0x6FBE, 0x3D6A, 0x3D75, 0x71B7, 0x5C99, 0x3D8A, 0x702C,
+ 0x3D91, 0x7050, 0x7054, 0x706F, 0x707F, 0x0000, 0x43C1, 0x35F1, 0x0000,
+ 0x364E, 0x3DAD, 0x0000, 0x667D, 0x7C74, 0x748D, 0x7E92, 0x4503, 0x0000,
+ 0x0000, 0x0000, 0x347E, 0x0000, 0x0000, 0x0000, 0x8771, 0x63C1, 0x7777,
+ 0x898A, 0x0000, 0x8B4C, 0x0000, 0x492A, 0x0000, 0x0000, 0x0000, 0x3AF0,
+ 0x708F, 0x0000, 0x0000, 0x0000, 0x6888, 0x0000, 0x9F62, 0x93C6, 0x0000,
+ 0x9366, 0x928F, 0x8614, 0x0000, 0x4190, 0x678F, 0x681E, 0x3863, 0x0000,
+ 0x3B19, 0x8496, 0x0000, 0x39E2, 0x8480, 0x436E, 0x9771, 0x999B, 0x492D,
+ 0x6F17, 0x0000, 0x70A6, 0x0000, 0x7E65, 0x5D2F, 0x3DF3, 0x0000, 0x0000,
+ 0x7DA4, 0x8426, 0x5485, 0x0000, 0x0000, 0x577E, 0x0000, 0x0000, 0x3FE5,
+ 0x0000, 0x0000, 0x7003, 0x0000, 0x5D70, 0x738F, 0x0000, 0x0000, 0x4FC8,
+ 0x7FE7, 0x7310, 0x7338, 0x7341, 0x3EA9, 0x71F5, 0x0000, 0x73E1, 0x3ECA,
+ 0x3ED1, 0x7419, 0x741E, 0x741F, 0x3EE2, 0x3EF0, 0x3EF4, 0x3EFA, 0x74D3,
+ 0x3F0E, 0x3F53, 0x756D, 0x7572, 0x758D, 0x3F7C, 0x75C8, 0x764D, 0x7674,
+ 0x3FDC, 0x767A, 0x7188, 0x5623, 0x8980, 0x401D, 0x7743, 0x4039, 0x4045,
+ 0x35DB, 0x7798, 0x406A, 0x406F, 0x77BE, 0x77CB, 0x7818, 0x781C, 0x7847,
+ 0x7851, 0x7866, 0x8448, 0x0000, 0x7933, 0x7932, 0x4109, 0x7991, 0x7A06,
+ 0x4167, 0x41B2, 0x7ABC, 0x8279, 0x41C4, 0x7ACF, 0x7ADB, 0x41CF, 0x7B62,
+ 0x7B6C, 0x7B7B, 0x7C12, 0x4260, 0x427A, 0x7C7B, 0x7C9C, 0x428C, 0x7CB8,
+ 0x4294, 0x8F93, 0x70C0, 0x0000, 0x7DCF, 0x7DD4, 0x7DD0, 0x7DFD, 0x7FB4,
+ 0x729F, 0x4397, 0x8020, 0x8025, 0x802E, 0x8031, 0x8054, 0x57B4, 0x70A0,
+ 0x80B7, 0x80E9, 0x43ED, 0x810C, 0x810E, 0x8112, 0x8114, 0x4401, 0x3B39,
+ 0x8156, 0x8159, 0x815A, 0x4413, 0x817C, 0x4425, 0x442D, 0x81A5, 0x57EF,
+ 0x81C1, 0x81E4, 0x8254, 0x448F, 0x8276, 0x82CA, 0x82D8, 0x44B0, 0x8357,
+ 0x9669, 0x8405, 0x70F5, 0x8464, 0x8488, 0x4504, 0x84BE, 0x84E1, 0x84F8,
+ 0x8510, 0x8538, 0x8552, 0x453B, 0x856F, 0x8570, 0x85E0, 0x4577, 0x8672,
+ 0x8692, 0x86EF, 0x9645, 0x4606, 0x4617, 0x88AE, 0x88FF, 0x8924, 0x8991,
+ 0x0000, 0x8A38, 0x8A94, 0x8AB4, 0x8C51, 0x8CD4, 0x8CF2, 0x8D1C, 0x4798,
+ 0x8DC3, 0x47ED, 0x8E3A, 0x5754, 0x55F5, 0x4837, 0x8ECE, 0x8EE2, 0x8EE4,
+ 0x8EED, 0x8EF2, 0x8FC1, 0x8FCA, 0x8FCC, 0x9033, 0x48AD, 0x98E0, 0x9213,
+ 0x491E, 0x9228, 0x9258, 0x926B, 0x92B1, 0x92AE, 0x92BF, 0x92E3, 0x92EB,
+ 0x92F3, 0x92F4, 0x92FD, 0x9343, 0x9384, 0x93AD, 0x4945, 0x4951, 0x9417,
+ 0x941D, 0x942D, 0x943E, 0x496A, 0x9454, 0x9479, 0x952D, 0x95A2, 0x49A7,
+ 0x95F4, 0x9633, 0x49E5, 0x4A24, 0x9740, 0x4A35, 0x97B2, 0x97C2, 0x4AE4,
+ 0x98B9, 0x4B19, 0x98F1, 0x5844, 0x9919, 0x9937, 0x995D, 0x9962, 0x4B70,
+ 0x99C5, 0x4B9D, 0x9A3C, 0x9B0F, 0x9B69, 0x9BDD, 0x9BF1, 0x9BF4, 0x4C6D,
+ 0x9C20, 0x376F, 0x0000, 0x9D49, 0x9EFE, 0x5650, 0x9DBD, 0x9DFC, 0x94F6,
+ 0x8FB6, 0x9EB1, 0x9EBD, 0x9EC6, 0x94DC, 0x9EE2, 0x9EF1, 0x9EF8, 0x9F44,
+ 0x0000, 0x0000, 0x0000, 0x94C3, 0x0000, 0x94C1, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5757, 0x7173, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x549E,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3647, 0x0000, 0x0000,
+ 0x0000, 0x5364, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x70BB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7198, 0x0000, 0x69E9, 0x36C8, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x58B5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5788, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5965, 0x0000, 0x0000, 0x573F, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x57A1, 0x7151, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x56B9, 0x0000, 0x3618, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x949F, 0x0000,
+ 0x36B9, 0x0000, 0x0000, 0x56D6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x63E6, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3DF7, 0x0000, 0x0000, 0x8FD0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7E9F, 0x0000,
+ 0x0000, 0x4CA4, 0x9547, 0x0000, 0x71A2, 0x0000, 0x0000, 0x4D9C, 0x0000,
+ 0x8FBE, 0x8FBA, 0x0000, 0x8FB9, 0x0000, 0x4EEA, 0x0000, 0x8E80, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4E9A, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3DC6, 0x0000, 0x4E1C,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x55DE, 0x8786, 0x0000, 0x0000, 0x5B90,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4E1A, 0x4E04, 0x5B0D, 0x36AC, 0x537D, 0x36A5, 0x589A, 0x0000,
+ 0x57AA, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x57A7, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x9C1B, 0x0000, 0x3E06, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x577A, 0x54DA, 0x717A, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3635, 0x0000, 0x5220, 0x3C18,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4562, 0x5B1F, 0x0000, 0x9F50,
+ 0x9EA6, 0x0000, 0x51E2, 0x5342, 0x66AD, 0x585C, 0x5553, 0x3D85, 0x6160,
+ 0x48AE, 0x97BD, 0x0000, 0x60B3, 0x8424, 0x9814, 0x0000, 0x0000, 0x0000,
+ 0x3B2B, 0x3D32, 0x0000, 0x7081, 0x5C9C, 0x0000, 0x3730, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0100, 0x00C1, 0x01CD, 0x00C0, 0x0112, 0x00C9, 0x011A,
+ 0x00C8, 0x014C, 0x00D3, 0x01D1, 0x00D2, 0xF325, 0x1EBE, 0xF327, 0x1EC0,
+ 0x00CA, 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0251, 0x0113, 0x00E9, 0x011B,
+ 0x00E8, 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2, 0x00F2,
+ 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8, 0x01DA, 0x01DC, 0x00FC,
+ 0xF344, 0x1EBF, 0xF346, 0x1EC1, 0x00EA, 0x0261, 0x0283, 0x0250, 0x025B,
+ 0x0254, 0x0275, 0x0153, 0x00F8, 0x014B, 0x028A, 0x026A, 0x23DA, 0x23DB,
+ 0x2E9D, 0x2EC6, 0x2EE3, 0x503B, 0x6DFE, 0x0000, 0x9FA6, 0x3DC9, 0x888F,
+ 0x0000, 0x7077, 0x5CF5, 0x4B20, 0x0000, 0x3559, 0x0000, 0x6122, 0x0000,
+ 0x8FA7, 0x91F6, 0x7191, 0x6719, 0x73BA, 0x0000, 0x0000, 0x3C8B, 0x0000,
+ 0x4B10, 0x78E4, 0x7402, 0x51AE, 0x0000, 0x4009, 0x6A63, 0x0000, 0x4223,
+ 0x860F, 0x7A2A, 0x0000, 0x0000, 0x9755, 0x704D, 0x5324, 0x0000, 0x93F4,
+ 0x76D9, 0x0000, 0x9FA7, 0x77DD, 0x4EA3, 0x4FF0, 0x50BC, 0x4E2F, 0x4F17,
+ 0x9FA8, 0x5434, 0x7D8B, 0x5892, 0x58D0, 0x0000, 0x5E92, 0x5E99, 0x5FC2,
+ 0x0000, 0x658B, 0x0000, 0x6919, 0x6A43, 0x0000, 0x6CFF, 0x7200, 0x0000,
+ 0x738C, 0x3EDB, 0x0000, 0x5B15, 0x74B9, 0x8B83, 0x0000, 0x0000, 0x7A93,
+ 0x7BEC, 0x7CC3, 0x7E6C, 0x82F8, 0x8597, 0x9FA9, 0x8890, 0x9FAA, 0x8EB9,
+ 0x9FAB, 0x8FCF, 0x855F, 0x99E0, 0x9221, 0x9FAC, 0x0000, 0x0000, 0x4071,
+ 0x42A2, 0x5A1A, 0x9868, 0x676B, 0x4276, 0x573D, 0x85D6, 0x0000, 0x82BF,
+ 0x0000, 0x4C81, 0x0000, 0x5D7B, 0x0000, 0x0000, 0x9FAD, 0x9FAE, 0x5B96,
+ 0x9FAF, 0x7E5B, 0x43F0, 0x4C32, 0x4603, 0x45A6, 0x4578, 0x0000, 0x4D77,
+ 0x45B3, 0x0000, 0x4CE2, 0x0000, 0x3B95, 0x4736, 0x4744, 0x4C47, 0x4C40,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4C57, 0x0000, 0x474F, 0x45DA,
+ 0x4C85, 0x0000, 0x4D07, 0x4AA4, 0x46A1, 0x0000, 0x7225, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x664D, 0x56FB, 0x7D95, 0x591D, 0x0000, 0x3DF4, 0x9734,
+ 0x0000, 0x5BDB, 0x0000, 0x5AA4, 0x3625, 0x0000, 0x5AD1, 0x5BB7, 0x5CFC,
+ 0x676E, 0x8593, 0x0000, 0x7461, 0x749D, 0x0000, 0x66E7, 0x6E57, 0x79CA,
+ 0x3D88, 0x44C3, 0x0000, 0x0000, 0x439A, 0x4536, 0x5CD5, 0x0000, 0x8AF9,
+ 0x5C78, 0x3D12, 0x0000, 0x5D78, 0x9FB2, 0x7157, 0x4558, 0x0000, 0x0000,
+ 0x4C77, 0x3978, 0x344A, 0x0000, 0x0000, 0x8ACC, 0x4FB4, 0x0000, 0x59BF,
+ 0x816C, 0x9856, 0x0000, 0x5F3B, 0x0000, 0x0000, 0x0000, 0x4102, 0x46BB,
+ 0x0000, 0x3F07, 0x9FB3, 0x0000, 0x40F8, 0x37D6, 0x46F7, 0x0000, 0x417C,
+ 0x0000, 0x0000, 0x456D, 0x38D4, 0x0000, 0x4561, 0x451B, 0x4D89, 0x4C7B,
+ 0x4D76, 0x45EA, 0x3FC8, 0x0000, 0x3661, 0x44DE, 0x44BD, 0x41ED,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/B5pc-H_0.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/B5pc-H_0.cpp
new file mode 100644
index 0000000000..532ecd1013
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/CNS1/B5pc-H_0.cpp
@@ -0,0 +1,93 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h"
+
+const FX_WORD g_FXCMAP_B5pc_H_0[247 * 3] = {
+ 0x0020, 0x007E, 0x0001, 0x0080, 0x0080, 0x003D, 0x00FD, 0x00FF, 0x0060,
+ 0xA140, 0xA158, 0x0063, 0xA159, 0xA15C, 0x35AF, 0xA15D, 0xA17E, 0x0080,
+ 0xA1A1, 0xA1F5, 0x00A2, 0xA1F6, 0xA1F6, 0x00F8, 0xA1F7, 0xA1F7, 0x00F7,
+ 0xA1F8, 0xA1FE, 0x00F9, 0xA240, 0xA27E, 0x0100, 0xA2A1, 0xA2FE, 0x013F,
+ 0xA340, 0xA37E, 0x019D, 0xA3A1, 0xA3BB, 0x01DC, 0xA3BD, 0xA3BF, 0x01F7,
+ 0xA3C0, 0xA3E0, 0x0232, 0xA440, 0xA47E, 0x0253, 0xA4A1, 0xA4FE, 0x0292,
+ 0xA540, 0xA57E, 0x02F0, 0xA5A1, 0xA5FE, 0x032F, 0xA640, 0xA67E, 0x038D,
+ 0xA6A1, 0xA6FE, 0x03CC, 0xA740, 0xA77E, 0x042A, 0xA7A1, 0xA7FE, 0x0469,
+ 0xA840, 0xA87E, 0x04C7, 0xA8A1, 0xA8FE, 0x0506, 0xA940, 0xA97E, 0x0564,
+ 0xA9A1, 0xA9FE, 0x05A3, 0xAA40, 0xAA7E, 0x0601, 0xAAA1, 0xAAFE, 0x0640,
+ 0xAB40, 0xAB7E, 0x069E, 0xABA1, 0xABFE, 0x06DD, 0xAC40, 0xAC7E, 0x073B,
+ 0xACA1, 0xACFD, 0x077A, 0xACFE, 0xACFE, 0x097F, 0xAD40, 0xAD7E, 0x07D7,
+ 0xADA1, 0xADFE, 0x0816, 0xAE40, 0xAE7E, 0x0874, 0xAEA1, 0xAEFE, 0x08B3,
+ 0xAF40, 0xAF7E, 0x0911, 0xAFA1, 0xAFCF, 0x0950, 0xAFD0, 0xAFFE, 0x0980,
+ 0xB040, 0xB07E, 0x09AF, 0xB0A1, 0xB0FE, 0x09EE, 0xB140, 0xB17E, 0x0A4C,
+ 0xB1A1, 0xB1FE, 0x0A8B, 0xB240, 0xB27E, 0x0AE9, 0xB2A1, 0xB2FE, 0x0B28,
+ 0xB340, 0xB37E, 0x0B86, 0xB3A1, 0xB3FE, 0x0BC5, 0xB440, 0xB47E, 0x0C23,
+ 0xB4A1, 0xB4FE, 0x0C62, 0xB540, 0xB57E, 0x0CC0, 0xB5A1, 0xB5FE, 0x0CFF,
+ 0xB640, 0xB67E, 0x0D5D, 0xB6A1, 0xB6FE, 0x0D9C, 0xB740, 0xB77E, 0x0DFA,
+ 0xB7A1, 0xB7FE, 0x0E39, 0xB840, 0xB87E, 0x0E97, 0xB8A1, 0xB8FE, 0x0ED6,
+ 0xB940, 0xB97E, 0x0F34, 0xB9A1, 0xB9FE, 0x0F73, 0xBA40, 0xBA7E, 0x0FD1,
+ 0xBAA1, 0xBAFE, 0x1010, 0xBB40, 0xBB7E, 0x106E, 0xBBA1, 0xBBC7, 0x10AD,
+ 0xBBC8, 0xBBFE, 0x10D5, 0xBC40, 0xBC7E, 0x110C, 0xBCA1, 0xBCFE, 0x114B,
+ 0xBD40, 0xBD7E, 0x11A9, 0xBDA1, 0xBDFE, 0x11E8, 0xBE40, 0xBE51, 0x1246,
+ 0xBE52, 0xBE52, 0x10D4, 0xBE53, 0xBE7E, 0x1258, 0xBEA1, 0xBEFE, 0x1284,
+ 0xBF40, 0xBF7E, 0x12E2, 0xBFA1, 0xBFFE, 0x1321, 0xC040, 0xC07E, 0x137F,
+ 0xC0A1, 0xC0FE, 0x13BE, 0xC140, 0xC17E, 0x141C, 0xC1A1, 0xC1AA, 0x145B,
+ 0xC1AB, 0xC1FE, 0x1466, 0xC240, 0xC27E, 0x14BA, 0xC2A1, 0xC2CA, 0x14F9,
+ 0xC2CB, 0xC2CB, 0x1465, 0xC2CC, 0xC2FE, 0x1523, 0xC340, 0xC360, 0x1556,
+ 0xC361, 0xC37E, 0x1578, 0xC3A1, 0xC3B8, 0x1596, 0xC3B9, 0xC3B9, 0x15AF,
+ 0xC3BA, 0xC3BA, 0x15AE, 0xC3BB, 0xC3FE, 0x15B0, 0xC440, 0xC455, 0x15F4,
+ 0xC456, 0xC456, 0x1577, 0xC457, 0xC47E, 0x160A, 0xC4A1, 0xC4FE, 0x1632,
+ 0xC540, 0xC57E, 0x1690, 0xC5A1, 0xC5FE, 0x16CF, 0xC640, 0xC67E, 0x172D,
+ 0xC940, 0xC949, 0x176C, 0xC94A, 0xC94A, 0x0274, 0xC94B, 0xC96B, 0x1776,
+ 0xC96C, 0xC97E, 0x1798, 0xC9A1, 0xC9BD, 0x17AB, 0xC9BE, 0xC9BE, 0x1797,
+ 0xC9BF, 0xC9EC, 0x17C8, 0xC9ED, 0xC9FE, 0x17F7, 0xCA40, 0xCA7E, 0x1809,
+ 0xCAA1, 0xCAF6, 0x1848, 0xCAF7, 0xCAF7, 0x17F6, 0xCAF8, 0xCAFE, 0x189E,
+ 0xCB40, 0xCB7E, 0x18A5, 0xCBA1, 0xCBFE, 0x18E4, 0xCC40, 0xCC7E, 0x1942,
+ 0xCCA1, 0xCCFE, 0x1981, 0xCD40, 0xCD7E, 0x19DF, 0xCDA1, 0xCDFE, 0x1A1E,
+ 0xCE40, 0xCE7E, 0x1A7C, 0xCEA1, 0xCEFE, 0x1ABB, 0xCF40, 0xCF7E, 0x1B19,
+ 0xCFA1, 0xCFFE, 0x1B58, 0xD040, 0xD07E, 0x1BB6, 0xD0A1, 0xD0FE, 0x1BF5,
+ 0xD140, 0xD17E, 0x1C53, 0xD1A1, 0xD1FE, 0x1C92, 0xD240, 0xD27E, 0x1CF0,
+ 0xD2A1, 0xD2FE, 0x1D2F, 0xD340, 0xD37E, 0x1D8D, 0xD3A1, 0xD3FE, 0x1DCC,
+ 0xD440, 0xD47E, 0x1E2A, 0xD4A1, 0xD4FE, 0x1E69, 0xD540, 0xD57E, 0x1EC7,
+ 0xD5A1, 0xD5FE, 0x1F06, 0xD640, 0xD67E, 0x1F64, 0xD6A1, 0xD6CB, 0x1FA3,
+ 0xD6CC, 0xD6CC, 0x2254, 0xD6CD, 0xD6FE, 0x1FCF, 0xD740, 0xD779, 0x2001,
+ 0xD77A, 0xD77A, 0x22B9, 0xD77B, 0xD77E, 0x203B, 0xD7A1, 0xD7FE, 0x203F,
+ 0xD840, 0xD87E, 0x209D, 0xD8A1, 0xD8FE, 0x20DC, 0xD940, 0xD97E, 0x213A,
+ 0xD9A1, 0xD9FE, 0x2179, 0xDA40, 0xDA7E, 0x21D7, 0xDAA1, 0xDADE, 0x2216,
+ 0xDADF, 0xDADF, 0x1FCE, 0xDAE0, 0xDAFE, 0x2255, 0xDB40, 0xDB7E, 0x2274,
+ 0xDBA1, 0xDBA6, 0x22B3, 0xDBA7, 0xDBFE, 0x22BA, 0xDC40, 0xDC7E, 0x2312,
+ 0xDCA1, 0xDCFE, 0x2351, 0xDD40, 0xDD7E, 0x23AF, 0xDDA1, 0xDDFB, 0x23EE,
+ 0xDDFC, 0xDDFC, 0x2381, 0xDDFD, 0xDDFE, 0x2449, 0xDE40, 0xDE7E, 0x244B,
+ 0xDEA1, 0xDEFE, 0x248A, 0xDF40, 0xDF7E, 0x24E8, 0xDFA1, 0xDFFE, 0x2527,
+ 0xE040, 0xE07E, 0x2585, 0xE0A1, 0xE0FE, 0x25C4, 0xE140, 0xE17E, 0x2622,
+ 0xE1A1, 0xE1FE, 0x2661, 0xE240, 0xE27E, 0x26BF, 0xE2A1, 0xE2FE, 0x26FE,
+ 0xE340, 0xE37E, 0x275C, 0xE3A1, 0xE3FE, 0x279B, 0xE440, 0xE47E, 0x27F9,
+ 0xE4A1, 0xE4FE, 0x2838, 0xE540, 0xE57E, 0x2896, 0xE5A1, 0xE5FE, 0x28D5,
+ 0xE640, 0xE67E, 0x2933, 0xE6A1, 0xE6FE, 0x2972, 0xE740, 0xE77E, 0x29D0,
+ 0xE7A1, 0xE7FE, 0x2A0F, 0xE840, 0xE87E, 0x2A6D, 0xE8A1, 0xE8A2, 0x2AAC,
+ 0xE8A3, 0xE8FE, 0x2AAF, 0xE940, 0xE975, 0x2B0B, 0xE976, 0xE97E, 0x2B42,
+ 0xE9A1, 0xE9FE, 0x2B4B, 0xEA40, 0xEA7E, 0x2BA9, 0xEAA1, 0xEAFE, 0x2BE8,
+ 0xEB40, 0xEB5A, 0x2C46, 0xEB5B, 0xEB7E, 0x2C62, 0xEBA1, 0xEBF0, 0x2C86,
+ 0xEBF1, 0xEBF1, 0x2AAE, 0xEBF2, 0xEBFE, 0x2CD6, 0xEC40, 0xEC7E, 0x2CE3,
+ 0xECA1, 0xECDD, 0x2D22, 0xECDE, 0xECDE, 0x2B41, 0xECDF, 0xECFE, 0x2D5F,
+ 0xED40, 0xED7E, 0x2D7F, 0xEDA1, 0xEDA9, 0x2DBE, 0xEDAA, 0xEDFE, 0x2DC8,
+ 0xEE40, 0xEE7E, 0x2E1D, 0xEEA1, 0xEEEA, 0x2E5C, 0xEEEB, 0xEEEB, 0x3014,
+ 0xEEEC, 0xEEFE, 0x2EA6, 0xEF40, 0xEF7E, 0x2EB9, 0xEFA1, 0xEFFE, 0x2EF8,
+ 0xF040, 0xF055, 0x2F56, 0xF056, 0xF056, 0x2DC7, 0xF057, 0xF07E, 0x2F6C,
+ 0xF0A1, 0xF0CA, 0x2F94, 0xF0CB, 0xF0CB, 0x2C61, 0xF0CC, 0xF0FE, 0x2FBE,
+ 0xF140, 0xF162, 0x2FF1, 0xF163, 0xF16A, 0x3015, 0xF16B, 0xF16B, 0x3160,
+ 0xF16C, 0xF17E, 0x301D, 0xF1A1, 0xF1FE, 0x3030, 0xF240, 0xF267, 0x308E,
+ 0xF268, 0xF268, 0x31EF, 0xF269, 0xF27E, 0x30B6, 0xF2A1, 0xF2C2, 0x30CC,
+ 0xF2C3, 0xF2FE, 0x30EF, 0xF340, 0xF374, 0x312B, 0xF375, 0xF37E, 0x3161,
+ 0xF3A1, 0xF3FE, 0x316B, 0xF440, 0xF465, 0x31C9, 0xF466, 0xF47E, 0x31F0,
+ 0xF4A1, 0xF4B4, 0x3209, 0xF4B5, 0xF4B5, 0x30EE, 0xF4B6, 0xF4FC, 0x321D,
+ 0xF4FD, 0xF4FE, 0x3265, 0xF540, 0xF57E, 0x3267, 0xF5A1, 0xF5FE, 0x32A6,
+ 0xF640, 0xF662, 0x3304, 0xF663, 0xF663, 0x3264, 0xF664, 0xF67E, 0x3327,
+ 0xF6A1, 0xF6FE, 0x3342, 0xF740, 0xF77E, 0x33A0, 0xF7A1, 0xF7FE, 0x33DF,
+ 0xF840, 0xF87E, 0x343D, 0xF8A1, 0xF8FE, 0x347C, 0xF940, 0xF976, 0x34DA,
+ 0xF977, 0xF97E, 0x3512, 0xF9A1, 0xF9C3, 0x351A, 0xF9C4, 0xF9C4, 0x3511,
+ 0xF9C5, 0xF9C5, 0x353D, 0xF9C6, 0xF9C6, 0x3549, 0xF9C7, 0xF9D1, 0x353E,
+ 0xF9D2, 0xF9D5, 0x354A,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/B5pc-V_0.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/B5pc-V_0.cpp
new file mode 100644
index 0000000000..482c4db05f
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/CNS1/B5pc-V_0.cpp
@@ -0,0 +1,14 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h"
+
+const FX_WORD g_FXCMAP_B5pc_V_0[12 * 3] = {
+ 0xA14B, 0xA14B, 0x354E, 0xA15A, 0xA15A, 0x35AF, 0xA15C, 0xA15C, 0x35B1,
+ 0xA15D, 0xA15E, 0x0082, 0xA161, 0xA162, 0x0086, 0xA165, 0xA166, 0x008A,
+ 0xA169, 0xA16A, 0x008E, 0xA16D, 0xA16E, 0x0092, 0xA171, 0xA172, 0x0096,
+ 0xA175, 0xA176, 0x009A, 0xA179, 0xA17A, 0x009E, 0xA1E3, 0xA1E3, 0x354F,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-H_0.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-H_0.cpp
new file mode 100644
index 0000000000..3d61451403
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-H_0.cpp
@@ -0,0 +1,172 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h"
+
+const FX_WORD g_FXCMAP_CNS_EUC_H_0[157 * 3] = {
+ 0x0020, 0x007E, 0x3550, 0xA1A1, 0xA1FE, 0x0063, 0xA2A1, 0xA2FE, 0x00C1,
+ 0xA3A1, 0xA3CE, 0x011F, 0xA4A1, 0xA4FE, 0x014D, 0xA5A1, 0xA5EC, 0x01AB,
+ 0xA5EE, 0xA5F0, 0x01F7, 0xA6A1, 0xA6BE, 0x01FA, 0xA7A1, 0xA7A1, 0x0253,
+ 0xA7A2, 0xA7A4, 0x0218, 0xA7A5, 0xA7A5, 0x0254, 0xA7A6, 0xA7A6, 0x021B,
+ 0xA7A7, 0xA7A7, 0x025A, 0xA7A8, 0xA7A8, 0x021C, 0xA7A9, 0xA7AC, 0x025B,
+ 0xA7AD, 0xA7AF, 0x021D, 0xA7B0, 0xA7B0, 0x025F, 0xA7B1, 0xA7B1, 0x176E,
+ 0xA7B2, 0xA7B2, 0x0260, 0xA7B3, 0xA7B3, 0x0262, 0xA7B4, 0xA7B4, 0x0220,
+ 0xA7B5, 0xA7B5, 0x0263, 0xA7B6, 0xA7B6, 0x176F, 0xA7B7, 0xA7B7, 0x0221,
+ 0xA7B8, 0xA7B9, 0x0264, 0xA7BA, 0xA7BA, 0x0222, 0xA7BB, 0xA7BB, 0x1770,
+ 0xA7BC, 0xA7BC, 0x0223, 0xA7BD, 0xA7BD, 0x0266, 0xA7BE, 0xA7BE, 0x0279,
+ 0xA7BF, 0xA7BF, 0x1775, 0xA7C0, 0xA7C1, 0x027A, 0xA7C2, 0xA7C2, 0x0224,
+ 0xA7C3, 0xA7C6, 0x027C, 0xA7C7, 0xA7C7, 0x0225, 0xA7C8, 0xA7CB, 0x0282,
+ 0xA7CC, 0xA7CC, 0x1776, 0xA7CD, 0xA7CD, 0x0286, 0xA7CE, 0xA7CE, 0x0226,
+ 0xA7CF, 0xA7D0, 0x0288, 0xA7D1, 0xA7D2, 0x028C, 0xA7D3, 0xA7D5, 0x0227,
+ 0xA7D6, 0xA7D8, 0x028E, 0xA7D9, 0xA7DA, 0x022A, 0xA7DB, 0xA7DB, 0x1777,
+ 0xA7DC, 0xA7DF, 0x02D0, 0xA7E0, 0xA7E0, 0x02D5, 0xA7E1, 0xA7E1, 0x022C,
+ 0xA7E2, 0xA7E5, 0x02D6, 0xA7E6, 0xA7E6, 0x022D, 0xA7E7, 0xA7ED, 0x02DA,
+ 0xA7EE, 0xA7EE, 0x178A, 0xA7EF, 0xA7F2, 0x02E1, 0xA7F3, 0xA7F3, 0x178C,
+ 0xA7F4, 0xA7F8, 0x02E5, 0xA7F9, 0xA7F9, 0x178D, 0xA7FA, 0xA7FD, 0x02EA,
+ 0xA7FE, 0xA7FE, 0x0356, 0xA8A1, 0xA8A6, 0x0357, 0xA8A7, 0xA8A7, 0x035E,
+ 0xA8A8, 0xA8A8, 0x0362, 0xA8A9, 0xA8AA, 0x022E, 0xA8AB, 0xA8B2, 0x0363,
+ 0xA8B3, 0xA8B3, 0x17B2, 0xA8B4, 0xA8B6, 0x036B, 0xA8B7, 0xA8BA, 0x03F6,
+ 0xA8BB, 0xA8BB, 0x1812, 0xA8BC, 0xA8BE, 0x03FA, 0xA8BF, 0xA8C3, 0x03FE,
+ 0xA8C4, 0xA8CC, 0x0405, 0xA8CD, 0xA8CD, 0x1813, 0xA8CE, 0xA8CE, 0x1818,
+ 0xA8CF, 0xA8D2, 0x040F, 0xA8D3, 0xA8D3, 0x1819, 0xA8D4, 0xA8D9, 0x0508,
+ 0xA8DA, 0xA8DA, 0x18E7, 0xA8DB, 0xA8E2, 0x050E, 0xA8E3, 0xA8E3, 0x0230,
+ 0xA8E4, 0xA8E4, 0x051B, 0xA8E5, 0xA8E7, 0x0520, 0xA8E8, 0xA8EB, 0x0696,
+ 0xA8EC, 0xA8EC, 0x0231, 0xA8ED, 0xA8F0, 0x069F, 0xA8F1, 0xA8FB, 0x0826,
+ 0xA8FC, 0xA8FE, 0x09F5, 0xA9A1, 0xA9A1, 0x1E33, 0xA9A2, 0xA9A2, 0x09F8,
+ 0xA9A3, 0xA9A3, 0x1E34, 0xA9A4, 0xA9A5, 0x09F9, 0xA9A6, 0xA9AB, 0x0BE1,
+ 0xA9AC, 0xA9AE, 0x0DBB, 0xA9AF, 0xA9AF, 0x2360, 0xA9B0, 0xA9B0, 0x2612,
+ 0xA9B1, 0xA9B3, 0x0F7B, 0xA9B4, 0xA9B5, 0x1100, 0xA9B6, 0xA9B6, 0x1289,
+ 0xA9B7, 0xA9B8, 0x13B2, 0xA9B9, 0xA9B9, 0x2F0D, 0xC2A1, 0xC2C1, 0x0232,
+ 0xC4A1, 0xC4FE, 0x0253, 0xC5A1, 0xC5FE, 0x02B1, 0xC6A1, 0xC6FE, 0x030F,
+ 0xC7A1, 0xC7FE, 0x036D, 0xC8A1, 0xC8FE, 0x03CB, 0xC9A1, 0xC9FE, 0x0429,
+ 0xCAA1, 0xCAFE, 0x0487, 0xCBA1, 0xCBFE, 0x04E5, 0xCCA1, 0xCCFE, 0x0543,
+ 0xCDA1, 0xCDFE, 0x05A1, 0xCEA1, 0xCEFE, 0x05FF, 0xCFA1, 0xCFFE, 0x065D,
+ 0xD0A1, 0xD0FE, 0x06BB, 0xD1A1, 0xD1FE, 0x0719, 0xD2A1, 0xD2FE, 0x0777,
+ 0xD3A1, 0xD3FE, 0x07D5, 0xD4A1, 0xD4FE, 0x0833, 0xD5A1, 0xD5FE, 0x0891,
+ 0xD6A1, 0xD6FE, 0x08EF, 0xD7A1, 0xD7FE, 0x094D, 0xD8A1, 0xD8FE, 0x09AB,
+ 0xD9A1, 0xD9FE, 0x0A09, 0xDAA1, 0xDAFE, 0x0A67, 0xDBA1, 0xDBFE, 0x0AC5,
+ 0xDCA1, 0xDCFE, 0x0B23, 0xDDA1, 0xDDFE, 0x0B81, 0xDEA1, 0xDEFE, 0x0BDF,
+ 0xDFA1, 0xDFFE, 0x0C3D, 0xE0A1, 0xE0FE, 0x0C9B, 0xE1A1, 0xE1FE, 0x0CF9,
+ 0xE2A1, 0xE2FE, 0x0D57, 0xE3A1, 0xE3FE, 0x0DB5, 0xE4A1, 0xE4FE, 0x0E13,
+ 0xE5A1, 0xE5FE, 0x0E71, 0xE6A1, 0xE6FE, 0x0ECF, 0xE7A1, 0xE7FE, 0x0F2D,
+ 0xE8A1, 0xE8FE, 0x0F8B, 0xE9A1, 0xE9FE, 0x0FE9, 0xEAA1, 0xEAFE, 0x1047,
+ 0xEBA1, 0xEBFE, 0x10A5, 0xECA1, 0xECFE, 0x1103, 0xEDA1, 0xEDFE, 0x1161,
+ 0xEEA1, 0xEEFE, 0x11BF, 0xEFA1, 0xEFFE, 0x121D, 0xF0A1, 0xF0FE, 0x127B,
+ 0xF1A1, 0xF1FE, 0x12D9, 0xF2A1, 0xF2FE, 0x1337, 0xF3A1, 0xF3FE, 0x1395,
+ 0xF4A1, 0xF4FE, 0x13F3, 0xF5A1, 0xF5FE, 0x1451, 0xF6A1, 0xF6FE, 0x14AF,
+ 0xF7A1, 0xF7FE, 0x150D, 0xF8A1, 0xF8FE, 0x156B, 0xF9A1, 0xF9FE, 0x15C9,
+ 0xFAA1, 0xFAFE, 0x1627, 0xFBA1, 0xFBFE, 0x1685, 0xFCA1, 0xFCFE, 0x16E3,
+ 0xFDA1, 0xFDCB, 0x1741,
+};
+
+const FX_WORD g_FXCMAP_CNS_EUC_H_0_DWord[238 * 4] = {
+ 0x8EA1, 0xA1A1, 0xA1FE, 0x0063, 0x8EA1, 0xA2A1, 0xA2FE, 0x00C1, 0x8EA1,
+ 0xA3A1, 0xA3CE, 0x011F, 0x8EA1, 0xA4A1, 0xA4FE, 0x014D, 0x8EA1, 0xA5A1,
+ 0xA5EC, 0x01AB, 0x8EA1, 0xA5EE, 0xA5F0, 0x01F7, 0x8EA1, 0xA6A1, 0xA6BE,
+ 0x01FA, 0x8EA1, 0xA7A1, 0xA7A1, 0x0253, 0x8EA1, 0xA7A2, 0xA7A4, 0x0218,
+ 0x8EA1, 0xA7A5, 0xA7A5, 0x0254, 0x8EA1, 0xA7A6, 0xA7A6, 0x021B, 0x8EA1,
+ 0xA7A7, 0xA7A7, 0x025A, 0x8EA1, 0xA7A8, 0xA7A8, 0x021C, 0x8EA1, 0xA7A9,
+ 0xA7AC, 0x025B, 0x8EA1, 0xA7AD, 0xA7AF, 0x021D, 0x8EA1, 0xA7B0, 0xA7B0,
+ 0x025F, 0x8EA1, 0xA7B1, 0xA7B1, 0x176E, 0x8EA1, 0xA7B2, 0xA7B2, 0x0260,
+ 0x8EA1, 0xA7B3, 0xA7B3, 0x0262, 0x8EA1, 0xA7B4, 0xA7B4, 0x0220, 0x8EA1,
+ 0xA7B5, 0xA7B5, 0x0263, 0x8EA1, 0xA7B6, 0xA7B6, 0x176F, 0x8EA1, 0xA7B7,
+ 0xA7B7, 0x0221, 0x8EA1, 0xA7B8, 0xA7B9, 0x0264, 0x8EA1, 0xA7BA, 0xA7BA,
+ 0x0222, 0x8EA1, 0xA7BB, 0xA7BB, 0x1770, 0x8EA1, 0xA7BC, 0xA7BC, 0x0223,
+ 0x8EA1, 0xA7BD, 0xA7BD, 0x0266, 0x8EA1, 0xA7BE, 0xA7BE, 0x0279, 0x8EA1,
+ 0xA7BF, 0xA7BF, 0x1775, 0x8EA1, 0xA7C0, 0xA7C1, 0x027A, 0x8EA1, 0xA7C2,
+ 0xA7C2, 0x0224, 0x8EA1, 0xA7C3, 0xA7C6, 0x027C, 0x8EA1, 0xA7C7, 0xA7C7,
+ 0x0225, 0x8EA1, 0xA7C8, 0xA7CB, 0x0282, 0x8EA1, 0xA7CC, 0xA7CC, 0x1776,
+ 0x8EA1, 0xA7CD, 0xA7CD, 0x0286, 0x8EA1, 0xA7CE, 0xA7CE, 0x0226, 0x8EA1,
+ 0xA7CF, 0xA7D0, 0x0288, 0x8EA1, 0xA7D1, 0xA7D2, 0x028C, 0x8EA1, 0xA7D3,
+ 0xA7D5, 0x0227, 0x8EA1, 0xA7D6, 0xA7D8, 0x028E, 0x8EA1, 0xA7D9, 0xA7DA,
+ 0x022A, 0x8EA1, 0xA7DB, 0xA7DB, 0x1777, 0x8EA1, 0xA7DC, 0xA7DF, 0x02D0,
+ 0x8EA1, 0xA7E0, 0xA7E0, 0x02D5, 0x8EA1, 0xA7E1, 0xA7E1, 0x022C, 0x8EA1,
+ 0xA7E2, 0xA7E5, 0x02D6, 0x8EA1, 0xA7E6, 0xA7E6, 0x022D, 0x8EA1, 0xA7E7,
+ 0xA7ED, 0x02DA, 0x8EA1, 0xA7EE, 0xA7EE, 0x178A, 0x8EA1, 0xA7EF, 0xA7F2,
+ 0x02E1, 0x8EA1, 0xA7F3, 0xA7F3, 0x178C, 0x8EA1, 0xA7F4, 0xA7F8, 0x02E5,
+ 0x8EA1, 0xA7F9, 0xA7F9, 0x178D, 0x8EA1, 0xA7FA, 0xA7FD, 0x02EA, 0x8EA1,
+ 0xA7FE, 0xA7FE, 0x0356, 0x8EA1, 0xA8A1, 0xA8A6, 0x0357, 0x8EA1, 0xA8A7,
+ 0xA8A7, 0x035E, 0x8EA1, 0xA8A8, 0xA8A8, 0x0362, 0x8EA1, 0xA8A9, 0xA8AA,
+ 0x022E, 0x8EA1, 0xA8AB, 0xA8B2, 0x0363, 0x8EA1, 0xA8B3, 0xA8B3, 0x17B2,
+ 0x8EA1, 0xA8B4, 0xA8B6, 0x036B, 0x8EA1, 0xA8B7, 0xA8BA, 0x03F6, 0x8EA1,
+ 0xA8BB, 0xA8BB, 0x1812, 0x8EA1, 0xA8BC, 0xA8BE, 0x03FA, 0x8EA1, 0xA8BF,
+ 0xA8C3, 0x03FE, 0x8EA1, 0xA8C4, 0xA8CC, 0x0405, 0x8EA1, 0xA8CD, 0xA8CD,
+ 0x1813, 0x8EA1, 0xA8CE, 0xA8CE, 0x1818, 0x8EA1, 0xA8CF, 0xA8D2, 0x040F,
+ 0x8EA1, 0xA8D3, 0xA8D3, 0x1819, 0x8EA1, 0xA8D4, 0xA8D9, 0x0508, 0x8EA1,
+ 0xA8DA, 0xA8DA, 0x18E7, 0x8EA1, 0xA8DB, 0xA8E2, 0x050E, 0x8EA1, 0xA8E3,
+ 0xA8E3, 0x0230, 0x8EA1, 0xA8E4, 0xA8E4, 0x051B, 0x8EA1, 0xA8E5, 0xA8E7,
+ 0x0520, 0x8EA1, 0xA8E8, 0xA8EB, 0x0696, 0x8EA1, 0xA8EC, 0xA8EC, 0x0231,
+ 0x8EA1, 0xA8ED, 0xA8F0, 0x069F, 0x8EA1, 0xA8F1, 0xA8FB, 0x0826, 0x8EA1,
+ 0xA8FC, 0xA8FE, 0x09F5, 0x8EA1, 0xA9A1, 0xA9A1, 0x1E33, 0x8EA1, 0xA9A2,
+ 0xA9A2, 0x09F8, 0x8EA1, 0xA9A3, 0xA9A3, 0x1E34, 0x8EA1, 0xA9A4, 0xA9A5,
+ 0x09F9, 0x8EA1, 0xA9A6, 0xA9AB, 0x0BE1, 0x8EA1, 0xA9AC, 0xA9AE, 0x0DBB,
+ 0x8EA1, 0xA9AF, 0xA9AF, 0x2360, 0x8EA1, 0xA9B0, 0xA9B0, 0x2612, 0x8EA1,
+ 0xA9B1, 0xA9B3, 0x0F7B, 0x8EA1, 0xA9B4, 0xA9B5, 0x1100, 0x8EA1, 0xA9B6,
+ 0xA9B6, 0x1289, 0x8EA1, 0xA9B7, 0xA9B8, 0x13B2, 0x8EA1, 0xA9B9, 0xA9B9,
+ 0x2F0D, 0x8EA1, 0xC2A1, 0xC2C1, 0x0232, 0x8EA1, 0xC4A1, 0xC4FE, 0x0253,
+ 0x8EA1, 0xC5A1, 0xC5FE, 0x02B1, 0x8EA1, 0xC6A1, 0xC6FE, 0x030F, 0x8EA1,
+ 0xC7A1, 0xC7FE, 0x036D, 0x8EA1, 0xC8A1, 0xC8FE, 0x03CB, 0x8EA1, 0xC9A1,
+ 0xC9FE, 0x0429, 0x8EA1, 0xCAA1, 0xCAFE, 0x0487, 0x8EA1, 0xCBA1, 0xCBFE,
+ 0x04E5, 0x8EA1, 0xCCA1, 0xCCFE, 0x0543, 0x8EA1, 0xCDA1, 0xCDFE, 0x05A1,
+ 0x8EA1, 0xCEA1, 0xCEFE, 0x05FF, 0x8EA1, 0xCFA1, 0xCFFE, 0x065D, 0x8EA1,
+ 0xD0A1, 0xD0FE, 0x06BB, 0x8EA1, 0xD1A1, 0xD1FE, 0x0719, 0x8EA1, 0xD2A1,
+ 0xD2FE, 0x0777, 0x8EA1, 0xD3A1, 0xD3FE, 0x07D5, 0x8EA1, 0xD4A1, 0xD4FE,
+ 0x0833, 0x8EA1, 0xD5A1, 0xD5FE, 0x0891, 0x8EA1, 0xD6A1, 0xD6FE, 0x08EF,
+ 0x8EA1, 0xD7A1, 0xD7FE, 0x094D, 0x8EA1, 0xD8A1, 0xD8FE, 0x09AB, 0x8EA1,
+ 0xD9A1, 0xD9FE, 0x0A09, 0x8EA1, 0xDAA1, 0xDAFE, 0x0A67, 0x8EA1, 0xDBA1,
+ 0xDBFE, 0x0AC5, 0x8EA1, 0xDCA1, 0xDCFE, 0x0B23, 0x8EA1, 0xDDA1, 0xDDFE,
+ 0x0B81, 0x8EA1, 0xDEA1, 0xDEFE, 0x0BDF, 0x8EA1, 0xDFA1, 0xDFFE, 0x0C3D,
+ 0x8EA1, 0xE0A1, 0xE0FE, 0x0C9B, 0x8EA1, 0xE1A1, 0xE1FE, 0x0CF9, 0x8EA1,
+ 0xE2A1, 0xE2FE, 0x0D57, 0x8EA1, 0xE3A1, 0xE3FE, 0x0DB5, 0x8EA1, 0xE4A1,
+ 0xE4FE, 0x0E13, 0x8EA1, 0xE5A1, 0xE5FE, 0x0E71, 0x8EA1, 0xE6A1, 0xE6FE,
+ 0x0ECF, 0x8EA1, 0xE7A1, 0xE7FE, 0x0F2D, 0x8EA1, 0xE8A1, 0xE8FE, 0x0F8B,
+ 0x8EA1, 0xE9A1, 0xE9FE, 0x0FE9, 0x8EA1, 0xEAA1, 0xEAFE, 0x1047, 0x8EA1,
+ 0xEBA1, 0xEBFE, 0x10A5, 0x8EA1, 0xECA1, 0xECFE, 0x1103, 0x8EA1, 0xEDA1,
+ 0xEDFE, 0x1161, 0x8EA1, 0xEEA1, 0xEEFE, 0x11BF, 0x8EA1, 0xEFA1, 0xEFFE,
+ 0x121D, 0x8EA1, 0xF0A1, 0xF0FE, 0x127B, 0x8EA1, 0xF1A1, 0xF1FE, 0x12D9,
+ 0x8EA1, 0xF2A1, 0xF2FE, 0x1337, 0x8EA1, 0xF3A1, 0xF3FE, 0x1395, 0x8EA1,
+ 0xF4A1, 0xF4FE, 0x13F3, 0x8EA1, 0xF5A1, 0xF5FE, 0x1451, 0x8EA1, 0xF6A1,
+ 0xF6FE, 0x14AF, 0x8EA1, 0xF7A1, 0xF7FE, 0x150D, 0x8EA1, 0xF8A1, 0xF8FE,
+ 0x156B, 0x8EA1, 0xF9A1, 0xF9FE, 0x15C9, 0x8EA1, 0xFAA1, 0xFAFE, 0x1627,
+ 0x8EA1, 0xFBA1, 0xFBFE, 0x1685, 0x8EA1, 0xFCA1, 0xFCFE, 0x16E3, 0x8EA1,
+ 0xFDA1, 0xFDCB, 0x1741, 0x8EA2, 0xA1A1, 0xA1FE, 0x176C, 0x8EA2, 0xA2A1,
+ 0xA2FE, 0x17CA, 0x8EA2, 0xA3A1, 0xA3FE, 0x1828, 0x8EA2, 0xA4A1, 0xA4FE,
+ 0x1886, 0x8EA2, 0xA5A1, 0xA5FE, 0x18E4, 0x8EA2, 0xA6A1, 0xA6FE, 0x1942,
+ 0x8EA2, 0xA7A1, 0xA7FE, 0x19A0, 0x8EA2, 0xA8A1, 0xA8FE, 0x19FE, 0x8EA2,
+ 0xA9A1, 0xA9FE, 0x1A5C, 0x8EA2, 0xAAA1, 0xAAFE, 0x1ABA, 0x8EA2, 0xABA1,
+ 0xABFE, 0x1B18, 0x8EA2, 0xACA1, 0xACFE, 0x1B76, 0x8EA2, 0xADA1, 0xADFE,
+ 0x1BD4, 0x8EA2, 0xAEA1, 0xAEFE, 0x1C32, 0x8EA2, 0xAFA1, 0xAFFE, 0x1C90,
+ 0x8EA2, 0xB0A1, 0xB0FE, 0x1CEE, 0x8EA2, 0xB1A1, 0xB1FE, 0x1D4C, 0x8EA2,
+ 0xB2A1, 0xB2FE, 0x1DAA, 0x8EA2, 0xB3A1, 0xB3FE, 0x1E08, 0x8EA2, 0xB4A1,
+ 0xB4FE, 0x1E66, 0x8EA2, 0xB5A1, 0xB5FE, 0x1EC4, 0x8EA2, 0xB6A1, 0xB6FE,
+ 0x1F22, 0x8EA2, 0xB7A1, 0xB7FE, 0x1F80, 0x8EA2, 0xB8A1, 0xB8FE, 0x1FDE,
+ 0x8EA2, 0xB9A1, 0xB9FE, 0x203C, 0x8EA2, 0xBAA1, 0xBAFE, 0x209A, 0x8EA2,
+ 0xBBA1, 0xBBFE, 0x20F8, 0x8EA2, 0xBCA1, 0xBCFE, 0x2156, 0x8EA2, 0xBDA1,
+ 0xBDFE, 0x21B4, 0x8EA2, 0xBEA1, 0xBEFE, 0x2212, 0x8EA2, 0xBFA1, 0xBFFE,
+ 0x2270, 0x8EA2, 0xC0A1, 0xC0FE, 0x22CE, 0x8EA2, 0xC1A1, 0xC1FE, 0x232C,
+ 0x8EA2, 0xC2A1, 0xC2FE, 0x238A, 0x8EA2, 0xC3A1, 0xC3FE, 0x23E8, 0x8EA2,
+ 0xC4A1, 0xC4FE, 0x2446, 0x8EA2, 0xC5A1, 0xC5FE, 0x24A4, 0x8EA2, 0xC6A1,
+ 0xC6FE, 0x2502, 0x8EA2, 0xC7A1, 0xC7FE, 0x2560, 0x8EA2, 0xC8A1, 0xC8FE,
+ 0x25BE, 0x8EA2, 0xC9A1, 0xC9FE, 0x261C, 0x8EA2, 0xCAA1, 0xCAFE, 0x267A,
+ 0x8EA2, 0xCBA1, 0xCBFE, 0x26D8, 0x8EA2, 0xCCA1, 0xCCFE, 0x2736, 0x8EA2,
+ 0xCDA1, 0xCDFE, 0x2794, 0x8EA2, 0xCEA1, 0xCEFE, 0x27F2, 0x8EA2, 0xCFA1,
+ 0xCFFE, 0x2850, 0x8EA2, 0xD0A1, 0xD0FE, 0x28AE, 0x8EA2, 0xD1A1, 0xD1FE,
+ 0x290C, 0x8EA2, 0xD2A1, 0xD2FE, 0x296A, 0x8EA2, 0xD3A1, 0xD3FE, 0x29C8,
+ 0x8EA2, 0xD4A1, 0xD4FE, 0x2A26, 0x8EA2, 0xD5A1, 0xD5FE, 0x2A84, 0x8EA2,
+ 0xD6A1, 0xD6FE, 0x2AE2, 0x8EA2, 0xD7A1, 0xD7FE, 0x2B40, 0x8EA2, 0xD8A1,
+ 0xD8FE, 0x2B9E, 0x8EA2, 0xD9A1, 0xD9FE, 0x2BFC, 0x8EA2, 0xDAA1, 0xDAFE,
+ 0x2C5A, 0x8EA2, 0xDBA1, 0xDBFE, 0x2CB8, 0x8EA2, 0xDCA1, 0xDCFE, 0x2D16,
+ 0x8EA2, 0xDDA1, 0xDDFE, 0x2D74, 0x8EA2, 0xDEA1, 0xDEFE, 0x2DD2, 0x8EA2,
+ 0xDFA1, 0xDFFE, 0x2E30, 0x8EA2, 0xE0A1, 0xE0FE, 0x2E8E, 0x8EA2, 0xE1A1,
+ 0xE1FE, 0x2EEC, 0x8EA2, 0xE2A1, 0xE2FE, 0x2F4A, 0x8EA2, 0xE3A1, 0xE3FE,
+ 0x2FA8, 0x8EA2, 0xE4A1, 0xE4FE, 0x3006, 0x8EA2, 0xE5A1, 0xE5FE, 0x3064,
+ 0x8EA2, 0xE6A1, 0xE6FE, 0x30C2, 0x8EA2, 0xE7A1, 0xE7FE, 0x3120, 0x8EA2,
+ 0xE8A1, 0xE8FE, 0x317E, 0x8EA2, 0xE9A1, 0xE9FE, 0x31DC, 0x8EA2, 0xEAA1,
+ 0xEAFE, 0x323A, 0x8EA2, 0xEBA1, 0xEBFE, 0x3298, 0x8EA2, 0xECA1, 0xECFE,
+ 0x32F6, 0x8EA2, 0xEDA1, 0xEDFE, 0x3354, 0x8EA2, 0xEEA1, 0xEEFE, 0x33B2,
+ 0x8EA2, 0xEFA1, 0xEFFE, 0x3410, 0x8EA2, 0xF0A1, 0xF0FE, 0x346E, 0x8EA2,
+ 0xF1A1, 0xF1FE, 0x34CC, 0x8EA2, 0xF2A1, 0xF2C4, 0x352A,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-V_0.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-V_0.cpp
new file mode 100644
index 0000000000..5348785d10
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/CNS1/CNS-EUC-V_0.cpp
@@ -0,0 +1,189 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h"
+
+const FX_WORD g_FXCMAP_CNS_EUC_V_0[180 * 3] = {
+ 0x0020, 0x007E, 0x3550, 0xA1A1, 0xA1AB, 0x0063, 0xA1AC, 0xA1AC, 0x354E,
+ 0xA1AD, 0xA1BA, 0x006F, 0xA1BB, 0xA1BB, 0x007C, 0xA1BC, 0xA1BC, 0x007E,
+ 0xA1BD, 0xA1BD, 0x007E, 0xA1BE, 0xA1BF, 0x0082, 0xA1C0, 0xA1C1, 0x0082,
+ 0xA1C2, 0xA1C3, 0x0086, 0xA1C4, 0xA1C5, 0x0086, 0xA1C6, 0xA1C7, 0x008A,
+ 0xA1C8, 0xA1C9, 0x008A, 0xA1CA, 0xA1CB, 0x008E, 0xA1CC, 0xA1CD, 0x008E,
+ 0xA1CE, 0xA1CF, 0x0092, 0xA1D0, 0xA1D1, 0x0092, 0xA1D2, 0xA1D3, 0x0096,
+ 0xA1D4, 0xA1D5, 0x0096, 0xA1D6, 0xA1D7, 0x009A, 0xA1D8, 0xA1D9, 0x009A,
+ 0xA1DA, 0xA1DB, 0x009E, 0xA1DC, 0xA1FE, 0x009E, 0xA2A1, 0xA2C3, 0x00C1,
+ 0xA2C4, 0xA2C4, 0x354F, 0xA2C5, 0xA2FE, 0x00E5, 0xA3A1, 0xA3CE, 0x011F,
+ 0xA4A1, 0xA4FE, 0x014D, 0xA5A1, 0xA5EC, 0x01AB, 0xA5EE, 0xA5F0, 0x01F7,
+ 0xA6A1, 0xA6BE, 0x01FA, 0xA7A1, 0xA7A1, 0x0253, 0xA7A2, 0xA7A4, 0x0218,
+ 0xA7A5, 0xA7A5, 0x0254, 0xA7A6, 0xA7A6, 0x021B, 0xA7A7, 0xA7A7, 0x025A,
+ 0xA7A8, 0xA7A8, 0x021C, 0xA7A9, 0xA7AC, 0x025B, 0xA7AD, 0xA7AF, 0x021D,
+ 0xA7B0, 0xA7B0, 0x025F, 0xA7B1, 0xA7B1, 0x176E, 0xA7B2, 0xA7B2, 0x0260,
+ 0xA7B3, 0xA7B3, 0x0262, 0xA7B4, 0xA7B4, 0x0220, 0xA7B5, 0xA7B5, 0x0263,
+ 0xA7B6, 0xA7B6, 0x176F, 0xA7B7, 0xA7B7, 0x0221, 0xA7B8, 0xA7B9, 0x0264,
+ 0xA7BA, 0xA7BA, 0x0222, 0xA7BB, 0xA7BB, 0x1770, 0xA7BC, 0xA7BC, 0x0223,
+ 0xA7BD, 0xA7BD, 0x0266, 0xA7BE, 0xA7BE, 0x0279, 0xA7BF, 0xA7BF, 0x1775,
+ 0xA7C0, 0xA7C1, 0x027A, 0xA7C2, 0xA7C2, 0x0224, 0xA7C3, 0xA7C6, 0x027C,
+ 0xA7C7, 0xA7C7, 0x0225, 0xA7C8, 0xA7CB, 0x0282, 0xA7CC, 0xA7CC, 0x1776,
+ 0xA7CD, 0xA7CD, 0x0286, 0xA7CE, 0xA7CE, 0x0226, 0xA7CF, 0xA7D0, 0x0288,
+ 0xA7D1, 0xA7D2, 0x028C, 0xA7D3, 0xA7D5, 0x0227, 0xA7D6, 0xA7D8, 0x028E,
+ 0xA7D9, 0xA7DA, 0x022A, 0xA7DB, 0xA7DB, 0x1777, 0xA7DC, 0xA7DF, 0x02D0,
+ 0xA7E0, 0xA7E0, 0x02D5, 0xA7E1, 0xA7E1, 0x022C, 0xA7E2, 0xA7E5, 0x02D6,
+ 0xA7E6, 0xA7E6, 0x022D, 0xA7E7, 0xA7ED, 0x02DA, 0xA7EE, 0xA7EE, 0x178A,
+ 0xA7EF, 0xA7F2, 0x02E1, 0xA7F3, 0xA7F3, 0x178C, 0xA7F4, 0xA7F8, 0x02E5,
+ 0xA7F9, 0xA7F9, 0x178D, 0xA7FA, 0xA7FD, 0x02EA, 0xA7FE, 0xA7FE, 0x0356,
+ 0xA8A1, 0xA8A6, 0x0357, 0xA8A7, 0xA8A7, 0x035E, 0xA8A8, 0xA8A8, 0x0362,
+ 0xA8A9, 0xA8AA, 0x022E, 0xA8AB, 0xA8B2, 0x0363, 0xA8B3, 0xA8B3, 0x17B2,
+ 0xA8B4, 0xA8B6, 0x036B, 0xA8B7, 0xA8BA, 0x03F6, 0xA8BB, 0xA8BB, 0x1812,
+ 0xA8BC, 0xA8BE, 0x03FA, 0xA8BF, 0xA8C3, 0x03FE, 0xA8C4, 0xA8CC, 0x0405,
+ 0xA8CD, 0xA8CD, 0x1813, 0xA8CE, 0xA8CE, 0x1818, 0xA8CF, 0xA8D2, 0x040F,
+ 0xA8D3, 0xA8D3, 0x1819, 0xA8D4, 0xA8D9, 0x0508, 0xA8DA, 0xA8DA, 0x18E7,
+ 0xA8DB, 0xA8E2, 0x050E, 0xA8E3, 0xA8E3, 0x0230, 0xA8E4, 0xA8E4, 0x051B,
+ 0xA8E5, 0xA8E7, 0x0520, 0xA8E8, 0xA8EB, 0x0696, 0xA8EC, 0xA8EC, 0x0231,
+ 0xA8ED, 0xA8F0, 0x069F, 0xA8F1, 0xA8FB, 0x0826, 0xA8FC, 0xA8FE, 0x09F5,
+ 0xA9A1, 0xA9A1, 0x1E33, 0xA9A2, 0xA9A2, 0x09F8, 0xA9A3, 0xA9A3, 0x1E34,
+ 0xA9A4, 0xA9A5, 0x09F9, 0xA9A6, 0xA9AB, 0x0BE1, 0xA9AC, 0xA9AE, 0x0DBB,
+ 0xA9AF, 0xA9AF, 0x2360, 0xA9B0, 0xA9B0, 0x2612, 0xA9B1, 0xA9B3, 0x0F7B,
+ 0xA9B4, 0xA9B5, 0x1100, 0xA9B6, 0xA9B6, 0x1289, 0xA9B7, 0xA9B8, 0x13B2,
+ 0xA9B9, 0xA9B9, 0x2F0D, 0xC2A1, 0xC2C1, 0x0232, 0xC4A1, 0xC4FE, 0x0253,
+ 0xC5A1, 0xC5FE, 0x02B1, 0xC6A1, 0xC6FE, 0x030F, 0xC7A1, 0xC7FE, 0x036D,
+ 0xC8A1, 0xC8FE, 0x03CB, 0xC9A1, 0xC9FE, 0x0429, 0xCAA1, 0xCAFE, 0x0487,
+ 0xCBA1, 0xCBFE, 0x04E5, 0xCCA1, 0xCCFE, 0x0543, 0xCDA1, 0xCDFE, 0x05A1,
+ 0xCEA1, 0xCEFE, 0x05FF, 0xCFA1, 0xCFFE, 0x065D, 0xD0A1, 0xD0FE, 0x06BB,
+ 0xD1A1, 0xD1FE, 0x0719, 0xD2A1, 0xD2FE, 0x0777, 0xD3A1, 0xD3FE, 0x07D5,
+ 0xD4A1, 0xD4FE, 0x0833, 0xD5A1, 0xD5FE, 0x0891, 0xD6A1, 0xD6FE, 0x08EF,
+ 0xD7A1, 0xD7FE, 0x094D, 0xD8A1, 0xD8FE, 0x09AB, 0xD9A1, 0xD9FE, 0x0A09,
+ 0xDAA1, 0xDAFE, 0x0A67, 0xDBA1, 0xDBFE, 0x0AC5, 0xDCA1, 0xDCFE, 0x0B23,
+ 0xDDA1, 0xDDFE, 0x0B81, 0xDEA1, 0xDEFE, 0x0BDF, 0xDFA1, 0xDFFE, 0x0C3D,
+ 0xE0A1, 0xE0FE, 0x0C9B, 0xE1A1, 0xE1FE, 0x0CF9, 0xE2A1, 0xE2FE, 0x0D57,
+ 0xE3A1, 0xE3FE, 0x0DB5, 0xE4A1, 0xE4FE, 0x0E13, 0xE5A1, 0xE5FE, 0x0E71,
+ 0xE6A1, 0xE6FE, 0x0ECF, 0xE7A1, 0xE7FE, 0x0F2D, 0xE8A1, 0xE8FE, 0x0F8B,
+ 0xE9A1, 0xE9FE, 0x0FE9, 0xEAA1, 0xEAFE, 0x1047, 0xEBA1, 0xEBFE, 0x10A5,
+ 0xECA1, 0xECFE, 0x1103, 0xEDA1, 0xEDFE, 0x1161, 0xEEA1, 0xEEFE, 0x11BF,
+ 0xEFA1, 0xEFFE, 0x121D, 0xF0A1, 0xF0FE, 0x127B, 0xF1A1, 0xF1FE, 0x12D9,
+ 0xF2A1, 0xF2FE, 0x1337, 0xF3A1, 0xF3FE, 0x1395, 0xF4A1, 0xF4FE, 0x13F3,
+ 0xF5A1, 0xF5FE, 0x1451, 0xF6A1, 0xF6FE, 0x14AF, 0xF7A1, 0xF7FE, 0x150D,
+ 0xF8A1, 0xF8FE, 0x156B, 0xF9A1, 0xF9FE, 0x15C9, 0xFAA1, 0xFAFE, 0x1627,
+ 0xFBA1, 0xFBFE, 0x1685, 0xFCA1, 0xFCFE, 0x16E3, 0xFDA1, 0xFDCB, 0x1741,
+};
+
+const FX_WORD g_FXCMAP_CNS_EUC_V_0_DWord[261 * 4] = {
+ 0x8EA1, 0xA1A1, 0xA1AB, 0x0063, 0x8EA1, 0xA1AC, 0xA1AC, 0x354E, 0x8EA1,
+ 0xA1AD, 0xA1BA, 0x006F, 0x8EA1, 0xA1BB, 0xA1BB, 0x007C, 0x8EA1, 0xA1BC,
+ 0xA1BC, 0x007E, 0x8EA1, 0xA1BD, 0xA1BD, 0x007E, 0x8EA1, 0xA1BE, 0xA1BF,
+ 0x0082, 0x8EA1, 0xA1C0, 0xA1C1, 0x0082, 0x8EA1, 0xA1C2, 0xA1C3, 0x0086,
+ 0x8EA1, 0xA1C4, 0xA1C5, 0x0086, 0x8EA1, 0xA1C6, 0xA1C7, 0x008A, 0x8EA1,
+ 0xA1C8, 0xA1C9, 0x008A, 0x8EA1, 0xA1CA, 0xA1CB, 0x008E, 0x8EA1, 0xA1CC,
+ 0xA1CD, 0x008E, 0x8EA1, 0xA1CE, 0xA1CF, 0x0092, 0x8EA1, 0xA1D0, 0xA1D1,
+ 0x0092, 0x8EA1, 0xA1D2, 0xA1D3, 0x0096, 0x8EA1, 0xA1D4, 0xA1D5, 0x0096,
+ 0x8EA1, 0xA1D6, 0xA1D7, 0x009A, 0x8EA1, 0xA1D8, 0xA1D9, 0x009A, 0x8EA1,
+ 0xA1DA, 0xA1DB, 0x009E, 0x8EA1, 0xA1DC, 0xA1FE, 0x009E, 0x8EA1, 0xA2A1,
+ 0xA2C3, 0x00C1, 0x8EA1, 0xA2C4, 0xA2C4, 0x354F, 0x8EA1, 0xA2C5, 0xA2FE,
+ 0x00E5, 0x8EA1, 0xA3A1, 0xA3CE, 0x011F, 0x8EA1, 0xA4A1, 0xA4FE, 0x014D,
+ 0x8EA1, 0xA5A1, 0xA5EC, 0x01AB, 0x8EA1, 0xA5EE, 0xA5F0, 0x01F7, 0x8EA1,
+ 0xA6A1, 0xA6BE, 0x01FA, 0x8EA1, 0xA7A1, 0xA7A1, 0x0253, 0x8EA1, 0xA7A2,
+ 0xA7A4, 0x0218, 0x8EA1, 0xA7A5, 0xA7A5, 0x0254, 0x8EA1, 0xA7A6, 0xA7A6,
+ 0x021B, 0x8EA1, 0xA7A7, 0xA7A7, 0x025A, 0x8EA1, 0xA7A8, 0xA7A8, 0x021C,
+ 0x8EA1, 0xA7A9, 0xA7AC, 0x025B, 0x8EA1, 0xA7AD, 0xA7AF, 0x021D, 0x8EA1,
+ 0xA7B0, 0xA7B0, 0x025F, 0x8EA1, 0xA7B1, 0xA7B1, 0x176E, 0x8EA1, 0xA7B2,
+ 0xA7B2, 0x0260, 0x8EA1, 0xA7B3, 0xA7B3, 0x0262, 0x8EA1, 0xA7B4, 0xA7B4,
+ 0x0220, 0x8EA1, 0xA7B5, 0xA7B5, 0x0263, 0x8EA1, 0xA7B6, 0xA7B6, 0x176F,
+ 0x8EA1, 0xA7B7, 0xA7B7, 0x0221, 0x8EA1, 0xA7B8, 0xA7B9, 0x0264, 0x8EA1,
+ 0xA7BA, 0xA7BA, 0x0222, 0x8EA1, 0xA7BB, 0xA7BB, 0x1770, 0x8EA1, 0xA7BC,
+ 0xA7BC, 0x0223, 0x8EA1, 0xA7BD, 0xA7BD, 0x0266, 0x8EA1, 0xA7BE, 0xA7BE,
+ 0x0279, 0x8EA1, 0xA7BF, 0xA7BF, 0x1775, 0x8EA1, 0xA7C0, 0xA7C1, 0x027A,
+ 0x8EA1, 0xA7C2, 0xA7C2, 0x0224, 0x8EA1, 0xA7C3, 0xA7C6, 0x027C, 0x8EA1,
+ 0xA7C7, 0xA7C7, 0x0225, 0x8EA1, 0xA7C8, 0xA7CB, 0x0282, 0x8EA1, 0xA7CC,
+ 0xA7CC, 0x1776, 0x8EA1, 0xA7CD, 0xA7CD, 0x0286, 0x8EA1, 0xA7CE, 0xA7CE,
+ 0x0226, 0x8EA1, 0xA7CF, 0xA7D0, 0x0288, 0x8EA1, 0xA7D1, 0xA7D2, 0x028C,
+ 0x8EA1, 0xA7D3, 0xA7D5, 0x0227, 0x8EA1, 0xA7D6, 0xA7D8, 0x028E, 0x8EA1,
+ 0xA7D9, 0xA7DA, 0x022A, 0x8EA1, 0xA7DB, 0xA7DB, 0x1777, 0x8EA1, 0xA7DC,
+ 0xA7DF, 0x02D0, 0x8EA1, 0xA7E0, 0xA7E0, 0x02D5, 0x8EA1, 0xA7E1, 0xA7E1,
+ 0x022C, 0x8EA1, 0xA7E2, 0xA7E5, 0x02D6, 0x8EA1, 0xA7E6, 0xA7E6, 0x022D,
+ 0x8EA1, 0xA7E7, 0xA7ED, 0x02DA, 0x8EA1, 0xA7EE, 0xA7EE, 0x178A, 0x8EA1,
+ 0xA7EF, 0xA7F2, 0x02E1, 0x8EA1, 0xA7F3, 0xA7F3, 0x178C, 0x8EA1, 0xA7F4,
+ 0xA7F8, 0x02E5, 0x8EA1, 0xA7F9, 0xA7F9, 0x178D, 0x8EA1, 0xA7FA, 0xA7FD,
+ 0x02EA, 0x8EA1, 0xA7FE, 0xA7FE, 0x0356, 0x8EA1, 0xA8A1, 0xA8A6, 0x0357,
+ 0x8EA1, 0xA8A7, 0xA8A7, 0x035E, 0x8EA1, 0xA8A8, 0xA8A8, 0x0362, 0x8EA1,
+ 0xA8A9, 0xA8AA, 0x022E, 0x8EA1, 0xA8AB, 0xA8B2, 0x0363, 0x8EA1, 0xA8B3,
+ 0xA8B3, 0x17B2, 0x8EA1, 0xA8B4, 0xA8B6, 0x036B, 0x8EA1, 0xA8B7, 0xA8BA,
+ 0x03F6, 0x8EA1, 0xA8BB, 0xA8BB, 0x1812, 0x8EA1, 0xA8BC, 0xA8BE, 0x03FA,
+ 0x8EA1, 0xA8BF, 0xA8C3, 0x03FE, 0x8EA1, 0xA8C4, 0xA8CC, 0x0405, 0x8EA1,
+ 0xA8CD, 0xA8CD, 0x1813, 0x8EA1, 0xA8CE, 0xA8CE, 0x1818, 0x8EA1, 0xA8CF,
+ 0xA8D2, 0x040F, 0x8EA1, 0xA8D3, 0xA8D3, 0x1819, 0x8EA1, 0xA8D4, 0xA8D9,
+ 0x0508, 0x8EA1, 0xA8DA, 0xA8DA, 0x18E7, 0x8EA1, 0xA8DB, 0xA8E2, 0x050E,
+ 0x8EA1, 0xA8E3, 0xA8E3, 0x0230, 0x8EA1, 0xA8E4, 0xA8E4, 0x051B, 0x8EA1,
+ 0xA8E5, 0xA8E7, 0x0520, 0x8EA1, 0xA8E8, 0xA8EB, 0x0696, 0x8EA1, 0xA8EC,
+ 0xA8EC, 0x0231, 0x8EA1, 0xA8ED, 0xA8F0, 0x069F, 0x8EA1, 0xA8F1, 0xA8FB,
+ 0x0826, 0x8EA1, 0xA8FC, 0xA8FE, 0x09F5, 0x8EA1, 0xA9A1, 0xA9A1, 0x1E33,
+ 0x8EA1, 0xA9A2, 0xA9A2, 0x09F8, 0x8EA1, 0xA9A3, 0xA9A3, 0x1E34, 0x8EA1,
+ 0xA9A4, 0xA9A5, 0x09F9, 0x8EA1, 0xA9A6, 0xA9AB, 0x0BE1, 0x8EA1, 0xA9AC,
+ 0xA9AE, 0x0DBB, 0x8EA1, 0xA9AF, 0xA9AF, 0x2360, 0x8EA1, 0xA9B0, 0xA9B0,
+ 0x2612, 0x8EA1, 0xA9B1, 0xA9B3, 0x0F7B, 0x8EA1, 0xA9B4, 0xA9B5, 0x1100,
+ 0x8EA1, 0xA9B6, 0xA9B6, 0x1289, 0x8EA1, 0xA9B7, 0xA9B8, 0x13B2, 0x8EA1,
+ 0xA9B9, 0xA9B9, 0x2F0D, 0x8EA1, 0xC2A1, 0xC2C1, 0x0232, 0x8EA1, 0xC4A1,
+ 0xC4FE, 0x0253, 0x8EA1, 0xC5A1, 0xC5FE, 0x02B1, 0x8EA1, 0xC6A1, 0xC6FE,
+ 0x030F, 0x8EA1, 0xC7A1, 0xC7FE, 0x036D, 0x8EA1, 0xC8A1, 0xC8FE, 0x03CB,
+ 0x8EA1, 0xC9A1, 0xC9FE, 0x0429, 0x8EA1, 0xCAA1, 0xCAFE, 0x0487, 0x8EA1,
+ 0xCBA1, 0xCBFE, 0x04E5, 0x8EA1, 0xCCA1, 0xCCFE, 0x0543, 0x8EA1, 0xCDA1,
+ 0xCDFE, 0x05A1, 0x8EA1, 0xCEA1, 0xCEFE, 0x05FF, 0x8EA1, 0xCFA1, 0xCFFE,
+ 0x065D, 0x8EA1, 0xD0A1, 0xD0FE, 0x06BB, 0x8EA1, 0xD1A1, 0xD1FE, 0x0719,
+ 0x8EA1, 0xD2A1, 0xD2FE, 0x0777, 0x8EA1, 0xD3A1, 0xD3FE, 0x07D5, 0x8EA1,
+ 0xD4A1, 0xD4FE, 0x0833, 0x8EA1, 0xD5A1, 0xD5FE, 0x0891, 0x8EA1, 0xD6A1,
+ 0xD6FE, 0x08EF, 0x8EA1, 0xD7A1, 0xD7FE, 0x094D, 0x8EA1, 0xD8A1, 0xD8FE,
+ 0x09AB, 0x8EA1, 0xD9A1, 0xD9FE, 0x0A09, 0x8EA1, 0xDAA1, 0xDAFE, 0x0A67,
+ 0x8EA1, 0xDBA1, 0xDBFE, 0x0AC5, 0x8EA1, 0xDCA1, 0xDCFE, 0x0B23, 0x8EA1,
+ 0xDDA1, 0xDDFE, 0x0B81, 0x8EA1, 0xDEA1, 0xDEFE, 0x0BDF, 0x8EA1, 0xDFA1,
+ 0xDFFE, 0x0C3D, 0x8EA1, 0xE0A1, 0xE0FE, 0x0C9B, 0x8EA1, 0xE1A1, 0xE1FE,
+ 0x0CF9, 0x8EA1, 0xE2A1, 0xE2FE, 0x0D57, 0x8EA1, 0xE3A1, 0xE3FE, 0x0DB5,
+ 0x8EA1, 0xE4A1, 0xE4FE, 0x0E13, 0x8EA1, 0xE5A1, 0xE5FE, 0x0E71, 0x8EA1,
+ 0xE6A1, 0xE6FE, 0x0ECF, 0x8EA1, 0xE7A1, 0xE7FE, 0x0F2D, 0x8EA1, 0xE8A1,
+ 0xE8FE, 0x0F8B, 0x8EA1, 0xE9A1, 0xE9FE, 0x0FE9, 0x8EA1, 0xEAA1, 0xEAFE,
+ 0x1047, 0x8EA1, 0xEBA1, 0xEBFE, 0x10A5, 0x8EA1, 0xECA1, 0xECFE, 0x1103,
+ 0x8EA1, 0xEDA1, 0xEDFE, 0x1161, 0x8EA1, 0xEEA1, 0xEEFE, 0x11BF, 0x8EA1,
+ 0xEFA1, 0xEFFE, 0x121D, 0x8EA1, 0xF0A1, 0xF0FE, 0x127B, 0x8EA1, 0xF1A1,
+ 0xF1FE, 0x12D9, 0x8EA1, 0xF2A1, 0xF2FE, 0x1337, 0x8EA1, 0xF3A1, 0xF3FE,
+ 0x1395, 0x8EA1, 0xF4A1, 0xF4FE, 0x13F3, 0x8EA1, 0xF5A1, 0xF5FE, 0x1451,
+ 0x8EA1, 0xF6A1, 0xF6FE, 0x14AF, 0x8EA1, 0xF7A1, 0xF7FE, 0x150D, 0x8EA1,
+ 0xF8A1, 0xF8FE, 0x156B, 0x8EA1, 0xF9A1, 0xF9FE, 0x15C9, 0x8EA1, 0xFAA1,
+ 0xFAFE, 0x1627, 0x8EA1, 0xFBA1, 0xFBFE, 0x1685, 0x8EA1, 0xFCA1, 0xFCFE,
+ 0x16E3, 0x8EA1, 0xFDA1, 0xFDCB, 0x1741, 0x8EA2, 0xA1A1, 0xA1FE, 0x176C,
+ 0x8EA2, 0xA2A1, 0xA2FE, 0x17CA, 0x8EA2, 0xA3A1, 0xA3FE, 0x1828, 0x8EA2,
+ 0xA4A1, 0xA4FE, 0x1886, 0x8EA2, 0xA5A1, 0xA5FE, 0x18E4, 0x8EA2, 0xA6A1,
+ 0xA6FE, 0x1942, 0x8EA2, 0xA7A1, 0xA7FE, 0x19A0, 0x8EA2, 0xA8A1, 0xA8FE,
+ 0x19FE, 0x8EA2, 0xA9A1, 0xA9FE, 0x1A5C, 0x8EA2, 0xAAA1, 0xAAFE, 0x1ABA,
+ 0x8EA2, 0xABA1, 0xABFE, 0x1B18, 0x8EA2, 0xACA1, 0xACFE, 0x1B76, 0x8EA2,
+ 0xADA1, 0xADFE, 0x1BD4, 0x8EA2, 0xAEA1, 0xAEFE, 0x1C32, 0x8EA2, 0xAFA1,
+ 0xAFFE, 0x1C90, 0x8EA2, 0xB0A1, 0xB0FE, 0x1CEE, 0x8EA2, 0xB1A1, 0xB1FE,
+ 0x1D4C, 0x8EA2, 0xB2A1, 0xB2FE, 0x1DAA, 0x8EA2, 0xB3A1, 0xB3FE, 0x1E08,
+ 0x8EA2, 0xB4A1, 0xB4FE, 0x1E66, 0x8EA2, 0xB5A1, 0xB5FE, 0x1EC4, 0x8EA2,
+ 0xB6A1, 0xB6FE, 0x1F22, 0x8EA2, 0xB7A1, 0xB7FE, 0x1F80, 0x8EA2, 0xB8A1,
+ 0xB8FE, 0x1FDE, 0x8EA2, 0xB9A1, 0xB9FE, 0x203C, 0x8EA2, 0xBAA1, 0xBAFE,
+ 0x209A, 0x8EA2, 0xBBA1, 0xBBFE, 0x20F8, 0x8EA2, 0xBCA1, 0xBCFE, 0x2156,
+ 0x8EA2, 0xBDA1, 0xBDFE, 0x21B4, 0x8EA2, 0xBEA1, 0xBEFE, 0x2212, 0x8EA2,
+ 0xBFA1, 0xBFFE, 0x2270, 0x8EA2, 0xC0A1, 0xC0FE, 0x22CE, 0x8EA2, 0xC1A1,
+ 0xC1FE, 0x232C, 0x8EA2, 0xC2A1, 0xC2FE, 0x238A, 0x8EA2, 0xC3A1, 0xC3FE,
+ 0x23E8, 0x8EA2, 0xC4A1, 0xC4FE, 0x2446, 0x8EA2, 0xC5A1, 0xC5FE, 0x24A4,
+ 0x8EA2, 0xC6A1, 0xC6FE, 0x2502, 0x8EA2, 0xC7A1, 0xC7FE, 0x2560, 0x8EA2,
+ 0xC8A1, 0xC8FE, 0x25BE, 0x8EA2, 0xC9A1, 0xC9FE, 0x261C, 0x8EA2, 0xCAA1,
+ 0xCAFE, 0x267A, 0x8EA2, 0xCBA1, 0xCBFE, 0x26D8, 0x8EA2, 0xCCA1, 0xCCFE,
+ 0x2736, 0x8EA2, 0xCDA1, 0xCDFE, 0x2794, 0x8EA2, 0xCEA1, 0xCEFE, 0x27F2,
+ 0x8EA2, 0xCFA1, 0xCFFE, 0x2850, 0x8EA2, 0xD0A1, 0xD0FE, 0x28AE, 0x8EA2,
+ 0xD1A1, 0xD1FE, 0x290C, 0x8EA2, 0xD2A1, 0xD2FE, 0x296A, 0x8EA2, 0xD3A1,
+ 0xD3FE, 0x29C8, 0x8EA2, 0xD4A1, 0xD4FE, 0x2A26, 0x8EA2, 0xD5A1, 0xD5FE,
+ 0x2A84, 0x8EA2, 0xD6A1, 0xD6FE, 0x2AE2, 0x8EA2, 0xD7A1, 0xD7FE, 0x2B40,
+ 0x8EA2, 0xD8A1, 0xD8FE, 0x2B9E, 0x8EA2, 0xD9A1, 0xD9FE, 0x2BFC, 0x8EA2,
+ 0xDAA1, 0xDAFE, 0x2C5A, 0x8EA2, 0xDBA1, 0xDBFE, 0x2CB8, 0x8EA2, 0xDCA1,
+ 0xDCFE, 0x2D16, 0x8EA2, 0xDDA1, 0xDDFE, 0x2D74, 0x8EA2, 0xDEA1, 0xDEFE,
+ 0x2DD2, 0x8EA2, 0xDFA1, 0xDFFE, 0x2E30, 0x8EA2, 0xE0A1, 0xE0FE, 0x2E8E,
+ 0x8EA2, 0xE1A1, 0xE1FE, 0x2EEC, 0x8EA2, 0xE2A1, 0xE2FE, 0x2F4A, 0x8EA2,
+ 0xE3A1, 0xE3FE, 0x2FA8, 0x8EA2, 0xE4A1, 0xE4FE, 0x3006, 0x8EA2, 0xE5A1,
+ 0xE5FE, 0x3064, 0x8EA2, 0xE6A1, 0xE6FE, 0x30C2, 0x8EA2, 0xE7A1, 0xE7FE,
+ 0x3120, 0x8EA2, 0xE8A1, 0xE8FE, 0x317E, 0x8EA2, 0xE9A1, 0xE9FE, 0x31DC,
+ 0x8EA2, 0xEAA1, 0xEAFE, 0x323A, 0x8EA2, 0xEBA1, 0xEBFE, 0x3298, 0x8EA2,
+ 0xECA1, 0xECFE, 0x32F6, 0x8EA2, 0xEDA1, 0xEDFE, 0x3354, 0x8EA2, 0xEEA1,
+ 0xEEFE, 0x33B2, 0x8EA2, 0xEFA1, 0xEFFE, 0x3410, 0x8EA2, 0xF0A1, 0xF0FE,
+ 0x346E, 0x8EA2, 0xF1A1, 0xF1FE, 0x34CC, 0x8EA2, 0xF2A1, 0xF2C4, 0x352A,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-H_0.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-H_0.cpp
new file mode 100644
index 0000000000..5f7ccd42ab
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-H_0.cpp
@@ -0,0 +1,95 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h"
+
+const FX_WORD g_FXCMAP_ETen_B5_H_0[254 * 3] = {
+ 0x0020, 0x007E, 0x3550, 0xA140, 0xA158, 0x0063, 0xA159, 0xA15C, 0x35AF,
+ 0xA15D, 0xA17E, 0x0080, 0xA1A1, 0xA1F5, 0x00A2, 0xA1F6, 0xA1F6, 0x00F8,
+ 0xA1F7, 0xA1F7, 0x00F7, 0xA1F8, 0xA1FE, 0x00F9, 0xA240, 0xA27E, 0x0100,
+ 0xA2A1, 0xA2FE, 0x013F, 0xA340, 0xA37E, 0x019D, 0xA3A1, 0xA3BB, 0x01DC,
+ 0xA3BD, 0xA3BF, 0x01F7, 0xA440, 0xA47E, 0x0253, 0xA4A1, 0xA4FE, 0x0292,
+ 0xA540, 0xA57E, 0x02F0, 0xA5A1, 0xA5FE, 0x032F, 0xA640, 0xA67E, 0x038D,
+ 0xA6A1, 0xA6FE, 0x03CC, 0xA740, 0xA77E, 0x042A, 0xA7A1, 0xA7FE, 0x0469,
+ 0xA840, 0xA87E, 0x04C7, 0xA8A1, 0xA8FE, 0x0506, 0xA940, 0xA97E, 0x0564,
+ 0xA9A1, 0xA9FE, 0x05A3, 0xAA40, 0xAA7E, 0x0601, 0xAAA1, 0xAAFE, 0x0640,
+ 0xAB40, 0xAB7E, 0x069E, 0xABA1, 0xABFE, 0x06DD, 0xAC40, 0xAC7E, 0x073B,
+ 0xACA1, 0xACFD, 0x077A, 0xACFE, 0xACFE, 0x097F, 0xAD40, 0xAD7E, 0x07D7,
+ 0xADA1, 0xADFE, 0x0816, 0xAE40, 0xAE7E, 0x0874, 0xAEA1, 0xAEFE, 0x08B3,
+ 0xAF40, 0xAF7E, 0x0911, 0xAFA1, 0xAFCF, 0x0950, 0xAFD0, 0xAFFE, 0x0980,
+ 0xB040, 0xB07E, 0x09AF, 0xB0A1, 0xB0FE, 0x09EE, 0xB140, 0xB17E, 0x0A4C,
+ 0xB1A1, 0xB1FE, 0x0A8B, 0xB240, 0xB27E, 0x0AE9, 0xB2A1, 0xB2FE, 0x0B28,
+ 0xB340, 0xB37E, 0x0B86, 0xB3A1, 0xB3FE, 0x0BC5, 0xB440, 0xB47E, 0x0C23,
+ 0xB4A1, 0xB4FE, 0x0C62, 0xB540, 0xB57E, 0x0CC0, 0xB5A1, 0xB5FE, 0x0CFF,
+ 0xB640, 0xB67E, 0x0D5D, 0xB6A1, 0xB6FE, 0x0D9C, 0xB740, 0xB77E, 0x0DFA,
+ 0xB7A1, 0xB7FE, 0x0E39, 0xB840, 0xB87E, 0x0E97, 0xB8A1, 0xB8FE, 0x0ED6,
+ 0xB940, 0xB97E, 0x0F34, 0xB9A1, 0xB9FE, 0x0F73, 0xBA40, 0xBA7E, 0x0FD1,
+ 0xBAA1, 0xBAFE, 0x1010, 0xBB40, 0xBB7E, 0x106E, 0xBBA1, 0xBBC7, 0x10AD,
+ 0xBBC8, 0xBBFE, 0x10D5, 0xBC40, 0xBC7E, 0x110C, 0xBCA1, 0xBCFE, 0x114B,
+ 0xBD40, 0xBD7E, 0x11A9, 0xBDA1, 0xBDFE, 0x11E8, 0xBE40, 0xBE51, 0x1246,
+ 0xBE52, 0xBE52, 0x10D4, 0xBE53, 0xBE7E, 0x1258, 0xBEA1, 0xBEFE, 0x1284,
+ 0xBF40, 0xBF7E, 0x12E2, 0xBFA1, 0xBFFE, 0x1321, 0xC040, 0xC07E, 0x137F,
+ 0xC0A1, 0xC0FE, 0x13BE, 0xC140, 0xC17E, 0x141C, 0xC1A1, 0xC1AA, 0x145B,
+ 0xC1AB, 0xC1FE, 0x1466, 0xC240, 0xC27E, 0x14BA, 0xC2A1, 0xC2CA, 0x14F9,
+ 0xC2CB, 0xC2CB, 0x1465, 0xC2CC, 0xC2FE, 0x1523, 0xC340, 0xC360, 0x1556,
+ 0xC361, 0xC37E, 0x1578, 0xC3A1, 0xC3B8, 0x1596, 0xC3B9, 0xC3B9, 0x15AF,
+ 0xC3BA, 0xC3BA, 0x15AE, 0xC3BB, 0xC3FE, 0x15B0, 0xC440, 0xC455, 0x15F4,
+ 0xC456, 0xC456, 0x1577, 0xC457, 0xC47E, 0x160A, 0xC4A1, 0xC4FE, 0x1632,
+ 0xC540, 0xC57E, 0x1690, 0xC5A1, 0xC5FE, 0x16CF, 0xC640, 0xC67E, 0x172D,
+ 0xC6A1, 0xC6BE, 0x01FA, 0xC6BF, 0xC6D7, 0x0219, 0xC6D8, 0xC6DE, 0x35B3,
+ 0xC6DF, 0xC6DF, 0x1794, 0xC6E0, 0xC6FE, 0x35BA, 0xC740, 0xC77E, 0x35D9,
+ 0xC7A1, 0xC7FE, 0x3618, 0xC840, 0xC87E, 0x3676, 0xC8A1, 0xC8D3, 0x36B5,
+ 0xC940, 0xC949, 0x176C, 0xC94A, 0xC94A, 0x0274, 0xC94B, 0xC96B, 0x1776,
+ 0xC96C, 0xC97E, 0x1798, 0xC9A1, 0xC9BD, 0x17AB, 0xC9BE, 0xC9BE, 0x1797,
+ 0xC9BF, 0xC9EC, 0x17C8, 0xC9ED, 0xC9FE, 0x17F7, 0xCA40, 0xCA7E, 0x1809,
+ 0xCAA1, 0xCAF6, 0x1848, 0xCAF7, 0xCAF7, 0x17F6, 0xCAF8, 0xCAFE, 0x189E,
+ 0xCB40, 0xCB7E, 0x18A5, 0xCBA1, 0xCBFE, 0x18E4, 0xCC40, 0xCC7E, 0x1942,
+ 0xCCA1, 0xCCFE, 0x1981, 0xCD40, 0xCD7E, 0x19DF, 0xCDA1, 0xCDFE, 0x1A1E,
+ 0xCE40, 0xCE7E, 0x1A7C, 0xCEA1, 0xCEFE, 0x1ABB, 0xCF40, 0xCF7E, 0x1B19,
+ 0xCFA1, 0xCFFE, 0x1B58, 0xD040, 0xD07E, 0x1BB6, 0xD0A1, 0xD0FE, 0x1BF5,
+ 0xD140, 0xD17E, 0x1C53, 0xD1A1, 0xD1FE, 0x1C92, 0xD240, 0xD27E, 0x1CF0,
+ 0xD2A1, 0xD2FE, 0x1D2F, 0xD340, 0xD37E, 0x1D8D, 0xD3A1, 0xD3FE, 0x1DCC,
+ 0xD440, 0xD47E, 0x1E2A, 0xD4A1, 0xD4FE, 0x1E69, 0xD540, 0xD57E, 0x1EC7,
+ 0xD5A1, 0xD5FE, 0x1F06, 0xD640, 0xD67E, 0x1F64, 0xD6A1, 0xD6CB, 0x1FA3,
+ 0xD6CC, 0xD6CC, 0x2254, 0xD6CD, 0xD6FE, 0x1FCF, 0xD740, 0xD779, 0x2001,
+ 0xD77A, 0xD77A, 0x22B9, 0xD77B, 0xD77E, 0x203B, 0xD7A1, 0xD7FE, 0x203F,
+ 0xD840, 0xD87E, 0x209D, 0xD8A1, 0xD8FE, 0x20DC, 0xD940, 0xD97E, 0x213A,
+ 0xD9A1, 0xD9FE, 0x2179, 0xDA40, 0xDA7E, 0x21D7, 0xDAA1, 0xDADE, 0x2216,
+ 0xDADF, 0xDADF, 0x1FCE, 0xDAE0, 0xDAFE, 0x2255, 0xDB40, 0xDB7E, 0x2274,
+ 0xDBA1, 0xDBA6, 0x22B3, 0xDBA7, 0xDBFE, 0x22BA, 0xDC40, 0xDC7E, 0x2312,
+ 0xDCA1, 0xDCFE, 0x2351, 0xDD40, 0xDD7E, 0x23AF, 0xDDA1, 0xDDFB, 0x23EE,
+ 0xDDFC, 0xDDFC, 0x2381, 0xDDFD, 0xDDFE, 0x2449, 0xDE40, 0xDE7E, 0x244B,
+ 0xDEA1, 0xDEFE, 0x248A, 0xDF40, 0xDF7E, 0x24E8, 0xDFA1, 0xDFFE, 0x2527,
+ 0xE040, 0xE07E, 0x2585, 0xE0A1, 0xE0FE, 0x25C4, 0xE140, 0xE17E, 0x2622,
+ 0xE1A1, 0xE1FE, 0x2661, 0xE240, 0xE27E, 0x26BF, 0xE2A1, 0xE2FE, 0x26FE,
+ 0xE340, 0xE37E, 0x275C, 0xE3A1, 0xE3FE, 0x279B, 0xE440, 0xE47E, 0x27F9,
+ 0xE4A1, 0xE4FE, 0x2838, 0xE540, 0xE57E, 0x2896, 0xE5A1, 0xE5FE, 0x28D5,
+ 0xE640, 0xE67E, 0x2933, 0xE6A1, 0xE6FE, 0x2972, 0xE740, 0xE77E, 0x29D0,
+ 0xE7A1, 0xE7FE, 0x2A0F, 0xE840, 0xE87E, 0x2A6D, 0xE8A1, 0xE8A2, 0x2AAC,
+ 0xE8A3, 0xE8FE, 0x2AAF, 0xE940, 0xE975, 0x2B0B, 0xE976, 0xE97E, 0x2B42,
+ 0xE9A1, 0xE9FE, 0x2B4B, 0xEA40, 0xEA7E, 0x2BA9, 0xEAA1, 0xEAFE, 0x2BE8,
+ 0xEB40, 0xEB5A, 0x2C46, 0xEB5B, 0xEB7E, 0x2C62, 0xEBA1, 0xEBF0, 0x2C86,
+ 0xEBF1, 0xEBF1, 0x2AAE, 0xEBF2, 0xEBFE, 0x2CD6, 0xEC40, 0xEC7E, 0x2CE3,
+ 0xECA1, 0xECDD, 0x2D22, 0xECDE, 0xECDE, 0x2B41, 0xECDF, 0xECFE, 0x2D5F,
+ 0xED40, 0xED7E, 0x2D7F, 0xEDA1, 0xEDA9, 0x2DBE, 0xEDAA, 0xEDFE, 0x2DC8,
+ 0xEE40, 0xEE7E, 0x2E1D, 0xEEA1, 0xEEEA, 0x2E5C, 0xEEEB, 0xEEEB, 0x3014,
+ 0xEEEC, 0xEEFE, 0x2EA6, 0xEF40, 0xEF7E, 0x2EB9, 0xEFA1, 0xEFFE, 0x2EF8,
+ 0xF040, 0xF055, 0x2F56, 0xF056, 0xF056, 0x2DC7, 0xF057, 0xF07E, 0x2F6C,
+ 0xF0A1, 0xF0CA, 0x2F94, 0xF0CB, 0xF0CB, 0x2C61, 0xF0CC, 0xF0FE, 0x2FBE,
+ 0xF140, 0xF162, 0x2FF1, 0xF163, 0xF16A, 0x3015, 0xF16B, 0xF16B, 0x3160,
+ 0xF16C, 0xF17E, 0x301D, 0xF1A1, 0xF1FE, 0x3030, 0xF240, 0xF267, 0x308E,
+ 0xF268, 0xF268, 0x31EF, 0xF269, 0xF27E, 0x30B6, 0xF2A1, 0xF2C2, 0x30CC,
+ 0xF2C3, 0xF2FE, 0x30EF, 0xF340, 0xF374, 0x312B, 0xF375, 0xF37E, 0x3161,
+ 0xF3A1, 0xF3FE, 0x316B, 0xF440, 0xF465, 0x31C9, 0xF466, 0xF47E, 0x31F0,
+ 0xF4A1, 0xF4B4, 0x3209, 0xF4B5, 0xF4B5, 0x30EE, 0xF4B6, 0xF4FC, 0x321D,
+ 0xF4FD, 0xF4FE, 0x3265, 0xF540, 0xF57E, 0x3267, 0xF5A1, 0xF5FE, 0x32A6,
+ 0xF640, 0xF662, 0x3304, 0xF663, 0xF663, 0x3264, 0xF664, 0xF67E, 0x3327,
+ 0xF6A1, 0xF6FE, 0x3342, 0xF740, 0xF77E, 0x33A0, 0xF7A1, 0xF7FE, 0x33DF,
+ 0xF840, 0xF87E, 0x343D, 0xF8A1, 0xF8FE, 0x347C, 0xF940, 0xF976, 0x34DA,
+ 0xF977, 0xF97E, 0x3512, 0xF9A1, 0xF9C3, 0x351A, 0xF9C4, 0xF9C4, 0x3511,
+ 0xF9C5, 0xF9C5, 0x353D, 0xF9C6, 0xF9C6, 0x3549, 0xF9C7, 0xF9D1, 0x353E,
+ 0xF9D2, 0xF9D5, 0x354A, 0xF9D6, 0xF9FE, 0x36E8,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-V_0.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-V_0.cpp
new file mode 100644
index 0000000000..3de105a413
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/CNS1/ETen-B5-V_0.cpp
@@ -0,0 +1,15 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h"
+
+const FX_WORD g_FXCMAP_ETen_B5_V_0[13 * 3] = {
+ 0xA14B, 0xA14B, 0x354E, 0xA15A, 0xA15A, 0x35AF, 0xA15C, 0xA15C,
+ 0x35B1, 0xA15D, 0xA15E, 0x0082, 0xA161, 0xA162, 0x0086, 0xA165,
+ 0xA166, 0x008A, 0xA169, 0xA16A, 0x008E, 0xA16D, 0xA16E, 0x0092,
+ 0xA171, 0xA172, 0x0096, 0xA175, 0xA176, 0x009A, 0xA179, 0xA17A,
+ 0x009E, 0xA1E3, 0xA1E3, 0x354F, 0xC6E4, 0xC6E5, 0x3711,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-H_0.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-H_0.cpp
new file mode 100644
index 0000000000..267fee6af8
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-H_0.cpp
@@ -0,0 +1,11 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h"
+
+const FX_WORD g_FXCMAP_ETenms_B5_H_0[1 * 3] = {
+ 0x0020, 0x007E, 0x0001,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-V_0.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-V_0.cpp
new file mode 100644
index 0000000000..4f555fadba
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/CNS1/ETenms-B5-V_0.cpp
@@ -0,0 +1,16 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h"
+
+const FX_WORD g_FXCMAP_ETenms_B5_V_0[18 * 3] = {
+ 0xA14B, 0xA14B, 0x354E, 0xA14C, 0xA14C, 0x006D, 0xA156, 0xA156, 0x0138,
+ 0xA158, 0xA158, 0x007A, 0xA15A, 0xA15A, 0x35AF, 0xA15C, 0xA15C, 0x35B1,
+ 0xA15D, 0xA15E, 0x0082, 0xA161, 0xA162, 0x0086, 0xA165, 0xA166, 0x008A,
+ 0xA169, 0xA16A, 0x008E, 0xA16D, 0xA16E, 0x0092, 0xA171, 0xA172, 0x0096,
+ 0xA175, 0xA176, 0x009A, 0xA179, 0xA17A, 0x009E, 0xA17D, 0xA17E, 0x0082,
+ 0xA1A1, 0xA1A2, 0x0086, 0xA1A3, 0xA1A4, 0x008A, 0xC6E4, 0xC6E5, 0x3711,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-H_5.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-H_5.cpp
new file mode 100644
index 0000000000..67459a505f
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-H_5.cpp
@@ -0,0 +1,414 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h"
+
+const FX_WORD g_FXCMAP_HKscs_B5_H_5[1210 * 3] = {
+ 0x0020, 0x007E, 0x0001, 0x8740, 0x8765, 0x4A15, 0x8767, 0x8779, 0x4A3B,
+ 0x8840, 0x8855, 0x44C9, 0x8856, 0x887E, 0x4961, 0x88A1, 0x88A8, 0x498A,
+ 0x88A9, 0x88AA, 0x499C, 0x8940, 0x8941, 0x4534, 0x8943, 0x8943, 0x4536,
+ 0x8946, 0x8949, 0x4537, 0x894C, 0x894C, 0x453B, 0x894D, 0x894D, 0x43C3,
+ 0x894E, 0x8950, 0x453C, 0x8951, 0x8951, 0x439A, 0x8952, 0x897E, 0x453F,
+ 0x89A1, 0x89A5, 0x456C, 0x89A6, 0x89A6, 0x43A2, 0x89AB, 0x89AB, 0x43EC,
+ 0x89AC, 0x89AC, 0x4571, 0x89AD, 0x89AD, 0x43EB, 0x89AE, 0x89AE, 0x4572,
+ 0x89B0, 0x89B2, 0x4573, 0x89B5, 0x89BF, 0x4576, 0x89C1, 0x89C3, 0x4581,
+ 0x89C5, 0x89CE, 0x4584, 0x89CF, 0x89CF, 0x43BC, 0x89D0, 0x89D8, 0x458E,
+ 0x89D9, 0x89D9, 0x439C, 0x89DA, 0x89DA, 0x4597, 0x89DB, 0x89DB, 0x439E,
+ 0x89DC, 0x89DC, 0x4598, 0x89DD, 0x89DD, 0x439F, 0x89DE, 0x89E0, 0x4599,
+ 0x89E1, 0x89E1, 0x43A1, 0x89E2, 0x89E2, 0x459C, 0x89E3, 0x89E3, 0x43A3,
+ 0x89E4, 0x89E9, 0x459D, 0x89EA, 0x89EB, 0x43A5, 0x89EC, 0x89F9, 0x45A3,
+ 0x89FA, 0x89FA, 0x43A9, 0x89FB, 0x89FE, 0x45B1, 0x8A40, 0x8A40, 0x45B5,
+ 0x8A41, 0x8A41, 0x4309, 0x8A43, 0x8A4C, 0x430B, 0x8A4D, 0x8A4D, 0x45B6,
+ 0x8A4E, 0x8A59, 0x4316, 0x8A5A, 0x8A5A, 0x45B7, 0x8A5B, 0x8A5D, 0x4323,
+ 0x8A5E, 0x8A5E, 0x45B8, 0x8A5F, 0x8A62, 0x4327, 0x8A64, 0x8A70, 0x432C,
+ 0x8A71, 0x8A71, 0x45B9, 0x8A72, 0x8A74, 0x433A, 0x8A76, 0x8A76, 0x433E,
+ 0x8A77, 0x8A77, 0x45BA, 0x8A78, 0x8A79, 0x4340, 0x8A7A, 0x8A7A, 0x45BB,
+ 0x8A7B, 0x8A7B, 0x4343, 0x8A7C, 0x8A7C, 0x45BC, 0x8A7D, 0x8A7D, 0x4345,
+ 0x8A7E, 0x8A7E, 0x45BD, 0x8AA1, 0x8AA7, 0x4347, 0x8AA8, 0x8AA8, 0x45BE,
+ 0x8AA9, 0x8AAA, 0x434F, 0x8AAC, 0x8AB0, 0x4352, 0x8AB2, 0x8AB5, 0x4358,
+ 0x8AB6, 0x8AB6, 0x45BF, 0x8AB7, 0x8AB7, 0x435D, 0x8AB8, 0x8AB8, 0x45C0,
+ 0x8AB9, 0x8AB9, 0x435F, 0x8ABB, 0x8AC7, 0x4361, 0x8AC9, 0x8ACB, 0x436F,
+ 0x8ACC, 0x8ACC, 0x45C1, 0x8ACE, 0x8AD5, 0x4374, 0x8AD6, 0x8AD7, 0x45C2,
+ 0x8AD8, 0x8ADC, 0x437E, 0x8ADF, 0x8AE5, 0x4385, 0x8AE6, 0x8AE6, 0x45C4,
+ 0x8AE7, 0x8AE7, 0x43DB, 0x8AE8, 0x8AF4, 0x45C5, 0x8AF6, 0x8AFE, 0x45D2,
+ 0x8B40, 0x8B40, 0x45DB, 0x8B41, 0x8B42, 0x438C, 0x8B43, 0x8B44, 0x45DC,
+ 0x8B45, 0x8B45, 0x438E, 0x8B46, 0x8B46, 0x45DE, 0x8B47, 0x8B47, 0x438F,
+ 0x8B48, 0x8B48, 0x45DF, 0x8B49, 0x8B49, 0x4390, 0x8B4A, 0x8B4A, 0x45E0,
+ 0x8B4B, 0x8B4B, 0x4391, 0x8B4C, 0x8B4C, 0x45E1, 0x8B4D, 0x8B50, 0x4392,
+ 0x8B51, 0x8B53, 0x45E2, 0x8B55, 0x8B57, 0x45E5, 0x8B58, 0x8B58, 0x4397,
+ 0x8B59, 0x8B59, 0x45E8, 0x8B5A, 0x8B5A, 0x4398, 0x8B5B, 0x8B5B, 0x43C4,
+ 0x8B5C, 0x8B60, 0x45E9, 0x8B61, 0x8B61, 0x43A7, 0x8B62, 0x8B67, 0x45EE,
+ 0x8B68, 0x8B68, 0x43AC, 0x8B69, 0x8B7E, 0x45F4, 0x8BA1, 0x8BBF, 0x460A,
+ 0x8BC0, 0x8BDC, 0x44DF, 0x8BDE, 0x8BFD, 0x44FC, 0x8C40, 0x8C61, 0x49A1,
+ 0x8C62, 0x8C62, 0x4A4E, 0x8C63, 0x8C7E, 0x49C3, 0x8CA1, 0x8CA5, 0x49DF,
+ 0x8CA7, 0x8CC5, 0x49E4, 0x8CC9, 0x8CCC, 0x4A03, 0x8CCE, 0x8CDA, 0x4A07,
+ 0x8CDB, 0x8CDB, 0x4A4F, 0x8CDC, 0x8CDC, 0x4A14, 0x8CDD, 0x8CE4, 0x4A50,
+ 0x8CE6, 0x8CFE, 0x4A58, 0x8D40, 0x8D40, 0x4A71, 0x8D42, 0x8D5F, 0x4A72,
+ 0x8D60, 0x8D61, 0x4629, 0x8D62, 0x8D62, 0x43BA, 0x8D63, 0x8D67, 0x462B,
+ 0x8D68, 0x8D68, 0x43BB, 0x8D69, 0x8D69, 0x43A0, 0x8D6A, 0x8D6A, 0x43BD,
+ 0x8D6B, 0x8D6D, 0x4630, 0x8D6E, 0x8D6E, 0x43BE, 0x8D6F, 0x8D75, 0x4633,
+ 0x8D76, 0x8D76, 0x43BF, 0x8D77, 0x8D79, 0x463A, 0x8D7A, 0x8D7A, 0x43C0,
+ 0x8D7B, 0x8D7B, 0x463D, 0x8D7C, 0x8D7C, 0x43C1, 0x8D7D, 0x8D7E, 0x463E,
+ 0x8DA1, 0x8DA4, 0x4640, 0x8DA5, 0x8DA5, 0x43C2, 0x8DA6, 0x8DA7, 0x4644,
+ 0x8DA8, 0x8DA8, 0x43B9, 0x8DA9, 0x8DA9, 0x43AD, 0x8DAA, 0x8DB5, 0x4646,
+ 0x8DB6, 0x8DB6, 0x43C7, 0x8DB7, 0x8DC2, 0x4652, 0x8DC3, 0x8DC3, 0x43C8,
+ 0x8DC4, 0x8DF9, 0x465E, 0x8DFA, 0x8DFA, 0x43F9, 0x8DFB, 0x8DFE, 0x4694,
+ 0x8E40, 0x8E44, 0x372B, 0x8E45, 0x8E45, 0x4698, 0x8E46, 0x8E68, 0x3730,
+ 0x8E69, 0x8E69, 0x1055, 0x8E6A, 0x8E6A, 0x3754, 0x8E6B, 0x8E6C, 0x4699,
+ 0x8E6D, 0x8E6E, 0x3756, 0x8E6F, 0x8E6F, 0x2DE8, 0x8E70, 0x8E75, 0x3759,
+ 0x8E76, 0x8E76, 0x469B, 0x8E77, 0x8E7A, 0x375F, 0x8E7B, 0x8E7B, 0x469C,
+ 0x8E7C, 0x8E7D, 0x3764, 0x8E7E, 0x8E7E, 0x0121, 0x8EA1, 0x8EA5, 0x3766,
+ 0x8EA6, 0x8EA6, 0x469D, 0x8EA7, 0x8EAA, 0x376B, 0x8EAB, 0x8EAB, 0x106B,
+ 0x8EAC, 0x8EB3, 0x3770, 0x8EB4, 0x8EB4, 0x1326, 0x8EB5, 0x8EB7, 0x3779,
+ 0x8EB8, 0x8EB8, 0x469E, 0x8EB9, 0x8EC8, 0x377D, 0x8EC9, 0x8EC9, 0x469F,
+ 0x8ECA, 0x8ECC, 0x378D, 0x8ECD, 0x8ECD, 0x066B, 0x8ECE, 0x8ECF, 0x3791,
+ 0x8ED0, 0x8ED0, 0x132E, 0x8ED1, 0x8EE4, 0x3794, 0x8EE5, 0x8EE5, 0x46A0,
+ 0x8EE6, 0x8EEE, 0x37A8, 0x8EEF, 0x8EEF, 0x46A1, 0x8EF0, 0x8EF5, 0x37B1,
+ 0x8EF6, 0x8EF6, 0x46A2, 0x8EF7, 0x8EFE, 0x37B8, 0x8F40, 0x8F56, 0x37C0,
+ 0x8F57, 0x8F57, 0x0D35, 0x8F58, 0x8F58, 0x37D8, 0x8F59, 0x8F59, 0x46A3,
+ 0x8F5A, 0x8F5E, 0x37D9, 0x8F5F, 0x8F5F, 0x46A4, 0x8F60, 0x8F66, 0x37DE,
+ 0x8F67, 0x8F67, 0x46A5, 0x8F68, 0x8F68, 0x37E5, 0x8F69, 0x8F69, 0x27C2,
+ 0x8F6A, 0x8F6D, 0x37E7, 0x8F6E, 0x8F6E, 0x22AD, 0x8F6F, 0x8F78, 0x37EC,
+ 0x8F79, 0x8F79, 0x46A6, 0x8F7A, 0x8F7E, 0x37F7, 0x8FA1, 0x8FAF, 0x37FC,
+ 0x8FB0, 0x8FB0, 0x46A7, 0x8FB1, 0x8FC4, 0x380C, 0x8FC5, 0x8FC5, 0x46A8,
+ 0x8FC6, 0x8FC6, 0x3820, 0x8FC7, 0x8FC7, 0x46A9, 0x8FC8, 0x8FC9, 0x3821,
+ 0x8FCA, 0x8FCA, 0x46AA, 0x8FCB, 0x8FCB, 0x134C, 0x8FCC, 0x8FCC, 0x3FF9,
+ 0x8FCD, 0x8FD9, 0x3826, 0x8FDA, 0x8FDA, 0x46AB, 0x8FDB, 0x8FE2, 0x3833,
+ 0x8FE3, 0x8FE3, 0x46AC, 0x8FE4, 0x8FFB, 0x383C, 0x8FFC, 0x8FFC, 0x46AD,
+ 0x8FFD, 0x8FFD, 0x3854, 0x8FFE, 0x8FFE, 0x09CE, 0x9040, 0x9054, 0x3856,
+ 0x9055, 0x9055, 0x46AE, 0x9056, 0x905B, 0x386C, 0x905C, 0x905E, 0x46AF,
+ 0x905F, 0x906C, 0x3873, 0x906D, 0x906D, 0x0BC7, 0x906E, 0x906E, 0x3882,
+ 0x906F, 0x906F, 0x46B2, 0x9070, 0x9079, 0x3883, 0x907A, 0x907A, 0x36E9,
+ 0x907B, 0x907E, 0x388D, 0x90A1, 0x90A5, 0x3891, 0x90A6, 0x90A6, 0x46B3,
+ 0x90A7, 0x90B7, 0x3896, 0x90B8, 0x90B8, 0x46B4, 0x90B9, 0x90DB, 0x38A7,
+ 0x90DC, 0x90DC, 0x1391, 0x90DD, 0x90F0, 0x38CB, 0x90F1, 0x90F1, 0x16A4,
+ 0x90F2, 0x90FE, 0x38E0, 0x9140, 0x9164, 0x38ED, 0x9165, 0x9165, 0x46B5,
+ 0x9166, 0x916D, 0x3912, 0x916E, 0x916E, 0x46B6, 0x916F, 0x917D, 0x391A,
+ 0x917E, 0x917E, 0x46B7, 0x91A1, 0x91A1, 0x3929, 0x91A2, 0x91A2, 0x46B8,
+ 0x91A3, 0x91BE, 0x392A, 0x91BF, 0x91BF, 0x3072, 0x91C0, 0x91C7, 0x3947,
+ 0x91C8, 0x91C8, 0x46B9, 0x91C9, 0x91FE, 0x3950, 0x9240, 0x9243, 0x3986,
+ 0x9244, 0x9244, 0x3988, 0x9245, 0x9263, 0x398B, 0x9264, 0x9264, 0x46BA,
+ 0x9265, 0x926C, 0x39AB, 0x926D, 0x926D, 0x46BB, 0x926E, 0x927E, 0x39B4,
+ 0x92A1, 0x92AE, 0x39C5, 0x92AF, 0x92B0, 0x0119, 0x92B1, 0x92B1, 0x011C,
+ 0x92B2, 0x92B2, 0x011B, 0x92B3, 0x92C7, 0x39D3, 0x92C8, 0x92C8, 0x3FAC,
+ 0x92C9, 0x92D0, 0x39E9, 0x92D1, 0x92D1, 0x297C, 0x92D2, 0x92E4, 0x39F2,
+ 0x92E5, 0x92E5, 0x46BC, 0x92E6, 0x92F1, 0x3A05, 0x92F2, 0x92F2, 0x46BD,
+ 0x92F3, 0x92FE, 0x3A11, 0x9340, 0x9367, 0x3A1D, 0x9368, 0x9368, 0x46BE,
+ 0x9369, 0x937E, 0x3A45, 0x93A1, 0x93A9, 0x3A5B, 0x93AA, 0x93AA, 0x46BF,
+ 0x93AB, 0x93C1, 0x3A64, 0x93C2, 0x93C2, 0x46C0, 0x93C3, 0x93E4, 0x3A7B,
+ 0x93E5, 0x93E5, 0x46C1, 0x93E6, 0x93E7, 0x3A9D, 0x93E8, 0x93E8, 0x46C2,
+ 0x93E9, 0x93EA, 0x3AA0, 0x93EB, 0x93EB, 0x46C3, 0x93EC, 0x93FE, 0x3AA2,
+ 0x9440, 0x9445, 0x3AB5, 0x9446, 0x9446, 0x46C4, 0x9447, 0x9447, 0x1D06,
+ 0x9448, 0x9478, 0x3ABC, 0x9479, 0x9479, 0x46C5, 0x947A, 0x947E, 0x3AEE,
+ 0x94A1, 0x94C9, 0x3AF3, 0x94CA, 0x94CA, 0x29A1, 0x94CB, 0x94CB, 0x46C6,
+ 0x94CC, 0x94FE, 0x3B1E, 0x9540, 0x954C, 0x3B51, 0x954D, 0x954D, 0x46C7,
+ 0x954E, 0x9559, 0x3B5E, 0x955A, 0x955A, 0x46C8, 0x955B, 0x955E, 0x3B6A,
+ 0x955F, 0x955F, 0x46C9, 0x9560, 0x957E, 0x3B6F, 0x95A1, 0x95C5, 0x3B8E,
+ 0x95C6, 0x95C6, 0x46CA, 0x95C7, 0x95D8, 0x3BB3, 0x95D9, 0x95D9, 0x181B,
+ 0x95DA, 0x95FE, 0x3BC6, 0x9640, 0x9643, 0x3BEB, 0x9644, 0x9644, 0x3E2F,
+ 0x9645, 0x9650, 0x3BF0, 0x9651, 0x9651, 0x46CB, 0x9652, 0x9669, 0x3BFD,
+ 0x966A, 0x966A, 0x46CC, 0x966B, 0x967E, 0x3C16, 0x96A1, 0x96D3, 0x3C2A,
+ 0x96D4, 0x96D4, 0x46CD, 0x96D5, 0x96EC, 0x3C5D, 0x96ED, 0x96ED, 0x3C76,
+ 0x96EE, 0x96FB, 0x3C76, 0x96FC, 0x96FC, 0x2B24, 0x96FD, 0x96FE, 0x3C85,
+ 0x9740, 0x977E, 0x3C87, 0x97A1, 0x97FE, 0x3CC6, 0x9840, 0x9843, 0x3D24,
+ 0x9844, 0x9845, 0x46CE, 0x9846, 0x986E, 0x3D2A, 0x986F, 0x986F, 0x46D0,
+ 0x9870, 0x9874, 0x3D54, 0x9875, 0x9876, 0x46D1, 0x9877, 0x9877, 0x3D59,
+ 0x9878, 0x9879, 0x46D3, 0x987A, 0x987A, 0x3D5A, 0x987B, 0x987E, 0x46D5,
+ 0x98A1, 0x98A2, 0x46D9, 0x98A3, 0x98A3, 0x3D5B, 0x98A4, 0x98AE, 0x46DB,
+ 0x98AF, 0x98AF, 0x3D5C, 0x98B0, 0x98B3, 0x46E6, 0x98B4, 0x98B4, 0x43CA,
+ 0x98B5, 0x98B5, 0x46EA, 0x98B6, 0x98B6, 0x3D5D, 0x98B7, 0x98B7, 0x46EB,
+ 0x98B8, 0x98B8, 0x43CC, 0x98B9, 0x98B9, 0x3D5E, 0x98BA, 0x98BA, 0x46EC,
+ 0x98BB, 0x98BB, 0x43FA, 0x98BC, 0x98BC, 0x46ED, 0x98BD, 0x98BE, 0x3D5F,
+ 0x98BF, 0x98C1, 0x46EE, 0x98C2, 0x98C2, 0x3D61, 0x98C3, 0x98C3, 0x46F1,
+ 0x98C4, 0x98C4, 0x3D62, 0x98C5, 0x98C5, 0x46F2, 0x98C6, 0x98C7, 0x3D63,
+ 0x98C8, 0x98D1, 0x46F3, 0x98D2, 0x98D2, 0x43CD, 0x98D3, 0x98D7, 0x46FD,
+ 0x98D8, 0x98D9, 0x43CE, 0x98DA, 0x98DA, 0x4702, 0x98DB, 0x98DB, 0x43D1,
+ 0x98DC, 0x98DE, 0x4703, 0x98DF, 0x98DF, 0x43D4, 0x98E0, 0x98E2, 0x4706,
+ 0x98E3, 0x98E3, 0x3D65, 0x98E4, 0x98E6, 0x4709, 0x98E7, 0x98E7, 0x3D66,
+ 0x98E8, 0x98EC, 0x470C, 0x98ED, 0x98ED, 0x3D67, 0x98EE, 0x98EF, 0x4711,
+ 0x98F0, 0x98F0, 0x3D68, 0x98F1, 0x98F1, 0x4713, 0x98F2, 0x98F2, 0x3D69,
+ 0x98F3, 0x98F3, 0x4714, 0x98F4, 0x98F5, 0x43D5, 0x98F6, 0x98FB, 0x4715,
+ 0x98FC, 0x98FC, 0x3D6A, 0x98FD, 0x98FD, 0x471B, 0x98FE, 0x98FE, 0x43D7,
+ 0x9940, 0x9941, 0x471C, 0x9942, 0x9942, 0x43FC, 0x9943, 0x9943, 0x3D6B,
+ 0x9944, 0x9944, 0x471E, 0x9945, 0x9945, 0x3D6C, 0x9946, 0x9946, 0x471F,
+ 0x9947, 0x9947, 0x43D8, 0x9948, 0x994E, 0x4720, 0x994F, 0x994F, 0x3D6D,
+ 0x9950, 0x9953, 0x4727, 0x9954, 0x9954, 0x43D9, 0x9955, 0x995B, 0x472B,
+ 0x995C, 0x995C, 0x43DA, 0x995D, 0x9963, 0x4732, 0x9964, 0x9964, 0x43DC,
+ 0x9965, 0x9969, 0x4739, 0x996A, 0x996A, 0x3D6E, 0x996B, 0x996D, 0x473E,
+ 0x996E, 0x996E, 0x3D6F, 0x996F, 0x9974, 0x4741, 0x9975, 0x9975, 0x3D70,
+ 0x9976, 0x9977, 0x4747, 0x9978, 0x9978, 0x3D71, 0x9979, 0x997E, 0x4749,
+ 0x99A1, 0x99A1, 0x474F, 0x99A2, 0x99A2, 0x3D72, 0x99A3, 0x99A3, 0x4750,
+ 0x99A4, 0x99A4, 0x43C5, 0x99A5, 0x99A5, 0x4751, 0x99A6, 0x99A6, 0x43C6,
+ 0x99A7, 0x99AD, 0x4752, 0x99AE, 0x99AE, 0x3D73, 0x99AF, 0x99B1, 0x4759,
+ 0x99B2, 0x99B2, 0x43DE, 0x99B3, 0x99B5, 0x475C, 0x99B6, 0x99B6, 0x3D74,
+ 0x99B7, 0x99B9, 0x475F, 0x99BA, 0x99BA, 0x3D75, 0x99BB, 0x99C9, 0x4762,
+ 0x99CA, 0x99CA, 0x43E0, 0x99CB, 0x99CC, 0x4771, 0x99CD, 0x99CD, 0x43E2,
+ 0x99CE, 0x99D2, 0x4773, 0x99D3, 0x99D3, 0x43E3, 0x99D4, 0x99D5, 0x4778,
+ 0x99D6, 0x99D6, 0x43E5, 0x99D7, 0x99DE, 0x477A, 0x99DF, 0x99DF, 0x43DF,
+ 0x99E0, 0x99E1, 0x4782, 0x99E2, 0x99E2, 0x3D76, 0x99E3, 0x99E3, 0x4784,
+ 0x99E4, 0x99E4, 0x43AB, 0x99E5, 0x99E5, 0x4785, 0x99E6, 0x99E6, 0x43E7,
+ 0x99E7, 0x99E7, 0x4786, 0x99E8, 0x99E8, 0x43E9, 0x99E9, 0x99EE, 0x4787,
+ 0x99EF, 0x99EF, 0x43FD, 0x99F0, 0x99F3, 0x478D, 0x99F4, 0x99F4, 0x3D77,
+ 0x99F5, 0x99FE, 0x4791, 0x9A40, 0x9A49, 0x479B, 0x9A4A, 0x9A4A, 0x3D78,
+ 0x9A4B, 0x9A4B, 0x47A5, 0x9A4C, 0x9A4C, 0x3D79, 0x9A4D, 0x9A58, 0x47A6,
+ 0x9A59, 0x9A59, 0x3D7A, 0x9A5A, 0x9A5E, 0x47B2, 0x9A5F, 0x9A5F, 0x43AF,
+ 0x9A60, 0x9A60, 0x47B7, 0x9A61, 0x9A61, 0x3D7B, 0x9A62, 0x9A65, 0x47B8,
+ 0x9A66, 0x9A66, 0x43ED, 0x9A67, 0x9A67, 0x47BC, 0x9A68, 0x9A68, 0x3D7C,
+ 0x9A69, 0x9A69, 0x43EE, 0x9A6A, 0x9A6A, 0x47BD, 0x9A6B, 0x9A6B, 0x43FF,
+ 0x9A6C, 0x9A72, 0x47BE, 0x9A73, 0x9A73, 0x3D7D, 0x9A74, 0x9A74, 0x47C5,
+ 0x9A75, 0x9A75, 0x43F1, 0x9A76, 0x9A7D, 0x47C6, 0x9A7E, 0x9A7E, 0x3D7E,
+ 0x9AA1, 0x9AA2, 0x47CE, 0x9AA3, 0x9AA3, 0x43F3, 0x9AA4, 0x9AA4, 0x47D0,
+ 0x9AA5, 0x9AA5, 0x43F2, 0x9AA6, 0x9AA8, 0x47D1, 0x9AA9, 0x9AA9, 0x43F8,
+ 0x9AAA, 0x9AAA, 0x43F4, 0x9AAB, 0x9AB1, 0x47D4, 0x9AB2, 0x9AB2, 0x3D7F,
+ 0x9AB3, 0x9AB6, 0x47DB, 0x9AB7, 0x9AB7, 0x3D80, 0x9AB8, 0x9AB8, 0x47DF,
+ 0x9AB9, 0x9AB9, 0x3D81, 0x9ABA, 0x9ABA, 0x47E0, 0x9ABB, 0x9ABB, 0x3D82,
+ 0x9ABC, 0x9ABC, 0x47E1, 0x9ABD, 0x9ABD, 0x43B7, 0x9ABE, 0x9AC6, 0x47E2,
+ 0x9AC7, 0x9AC7, 0x3D83, 0x9AC8, 0x9ACF, 0x47EB, 0x9AD0, 0x9AD0, 0x3D84,
+ 0x9AD1, 0x9AD1, 0x47F3, 0x9AD2, 0x9AD2, 0x3D85, 0x9AD3, 0x9AD8, 0x47F4,
+ 0x9AD9, 0x9ADB, 0x3D86, 0x9ADC, 0x9AE1, 0x47FA, 0x9AE2, 0x9AE2, 0x3D89,
+ 0x9AE3, 0x9AE3, 0x4800, 0x9AE4, 0x9AE4, 0x3D8A, 0x9AE5, 0x9AE7, 0x4801,
+ 0x9AE8, 0x9AE8, 0x3D8B, 0x9AE9, 0x9AE9, 0x43B0, 0x9AEA, 0x9AED, 0x4804,
+ 0x9AEE, 0x9AEE, 0x43B2, 0x9AEF, 0x9AF1, 0x4808, 0x9AF2, 0x9AF2, 0x3D8C,
+ 0x9AF3, 0x9AF5, 0x480B, 0x9AF6, 0x9AF6, 0x3D8D, 0x9AF7, 0x9AFA, 0x480E,
+ 0x9AFB, 0x9AFB, 0x3D8E, 0x9AFC, 0x9AFE, 0x4812, 0x9B40, 0x9B45, 0x4815,
+ 0x9B46, 0x9B46, 0x3D8F, 0x9B47, 0x9B49, 0x481B, 0x9B4A, 0x9B4A, 0x3D90,
+ 0x9B4B, 0x9B53, 0x481E, 0x9B54, 0x9B54, 0x3D92, 0x9B55, 0x9B57, 0x4827,
+ 0x9B58, 0x9B58, 0x3D93, 0x9B59, 0x9B59, 0x482A, 0x9B5A, 0x9B5A, 0x3D94,
+ 0x9B5B, 0x9B5B, 0x482B, 0x9B5C, 0x9B5C, 0x3D95, 0x9B5D, 0x9B5D, 0x482C,
+ 0x9B5E, 0x9B5F, 0x3D96, 0x9B60, 0x9B60, 0x482D, 0x9B62, 0x9B6F, 0x482E,
+ 0x9B70, 0x9B73, 0x3D98, 0x9B74, 0x9B75, 0x483C, 0x9B76, 0x9B76, 0x2F50,
+ 0x9B77, 0x9B77, 0x3D9D, 0x9B78, 0x9B78, 0x1725, 0x9B79, 0x9B7A, 0x483E,
+ 0x9B7B, 0x9B7B, 0x32ED, 0x9B7C, 0x9B7C, 0x3DA0, 0x9B7D, 0x9B7D, 0x4840,
+ 0x9B7E, 0x9B7E, 0x3DA1, 0x9BA1, 0x9BA1, 0x3DA2, 0x9BA2, 0x9BA2, 0x4841,
+ 0x9BA3, 0x9BA4, 0x3DA3, 0x9BA5, 0x9BA6, 0x4842, 0x9BA7, 0x9BAA, 0x3DA5,
+ 0x9BAB, 0x9BAB, 0x4844, 0x9BAC, 0x9BAC, 0x3DA9, 0x9BAD, 0x9BAE, 0x4845,
+ 0x9BAF, 0x9BAF, 0x3DAA, 0x9BB0, 0x9BB1, 0x4847, 0x9BB2, 0x9BB9, 0x3DAB,
+ 0x9BBA, 0x9BBD, 0x4849, 0x9BBE, 0x9BBE, 0x3DB3, 0x9BBF, 0x9BBF, 0x484D,
+ 0x9BC0, 0x9BC5, 0x3DB4, 0x9BC6, 0x9BC6, 0x2AD9, 0x9BC7, 0x9BC9, 0x484E,
+ 0x9BCA, 0x9BCA, 0x3DBB, 0x9BCB, 0x9BCB, 0x4851, 0x9BCC, 0x9BCC, 0x3DBC,
+ 0x9BCD, 0x9BCD, 0x4852, 0x9BCE, 0x9BCE, 0x43D0, 0x9BCF, 0x9BCF, 0x4853,
+ 0x9BD0, 0x9BD1, 0x3DBD, 0x9BD2, 0x9BD2, 0x4854, 0x9BD3, 0x9BD3, 0x3DBF,
+ 0x9BD4, 0x9BD4, 0x4855, 0x9BD5, 0x9BD5, 0x3DC0, 0x9BD6, 0x9BD7, 0x4856,
+ 0x9BD8, 0x9BDA, 0x3DC1, 0x9BDB, 0x9BDC, 0x4858, 0x9BDD, 0x9BDD, 0x3DC4,
+ 0x9BDE, 0x9BDE, 0x1C14, 0x9BDF, 0x9BDF, 0x3DC5, 0x9BE0, 0x9BE0, 0x485A,
+ 0x9BE1, 0x9BE1, 0x3DC6, 0x9BE2, 0x9BE2, 0x485B, 0x9BE3, 0x9BE3, 0x3DC7,
+ 0x9BE4, 0x9BE6, 0x485C, 0x9BE7, 0x9BE7, 0x3DC8, 0x9BE8, 0x9BE8, 0x485F,
+ 0x9BE9, 0x9BEB, 0x3DC9, 0x9BEC, 0x9BEC, 0x41FA, 0x9BED, 0x9BED, 0x4860,
+ 0x9BEE, 0x9BEF, 0x3DCD, 0x9BF0, 0x9BF2, 0x4861, 0x9BF3, 0x9BF3, 0x3DCF,
+ 0x9BF4, 0x9BF5, 0x4864, 0x9BF6, 0x9BF6, 0x12E9, 0x9BF7, 0x9BF7, 0x4866,
+ 0x9BF8, 0x9BF9, 0x3DD1, 0x9BFA, 0x9BFA, 0x4867, 0x9BFB, 0x9BFC, 0x3DD3,
+ 0x9BFD, 0x9BFE, 0x4868, 0x9C40, 0x9C41, 0x3DD5, 0x9C42, 0x9C42, 0x2CAE,
+ 0x9C43, 0x9C43, 0x486A, 0x9C44, 0x9C46, 0x3DD8, 0x9C47, 0x9C47, 0x486B,
+ 0x9C48, 0x9C48, 0x3DDB, 0x9C49, 0x9C49, 0x486C, 0x9C4A, 0x9C4A, 0x3DDC,
+ 0x9C4B, 0x9C4C, 0x486D, 0x9C4D, 0x9C52, 0x3DDD, 0x9C53, 0x9C53, 0x1A64,
+ 0x9C54, 0x9C54, 0x486F, 0x9C55, 0x9C55, 0x3DE4, 0x9C56, 0x9C56, 0x4870,
+ 0x9C57, 0x9C5B, 0x3DE5, 0x9C5C, 0x9C5C, 0x4871, 0x9C5D, 0x9C5D, 0x3DEA,
+ 0x9C5E, 0x9C5F, 0x4872, 0x9C60, 0x9C60, 0x3DEB, 0x9C61, 0x9C61, 0x4874,
+ 0x9C62, 0x9C62, 0x1404, 0x9C63, 0x9C63, 0x4875, 0x9C64, 0x9C66, 0x3DED,
+ 0x9C67, 0x9C67, 0x4876, 0x9C68, 0x9C68, 0x2324, 0x9C69, 0x9C69, 0x4877,
+ 0x9C6A, 0x9C6A, 0x3DF1, 0x9C6B, 0x9C6B, 0x346A, 0x9C6C, 0x9C6C, 0x4878,
+ 0x9C6D, 0x9C6D, 0x3DF2, 0x9C6E, 0x9C6E, 0x4879, 0x9C6F, 0x9C72, 0x3DF3,
+ 0x9C73, 0x9C74, 0x487A, 0x9C75, 0x9C76, 0x3DF7, 0x9C77, 0x9C77, 0x2291,
+ 0x9C78, 0x9C78, 0x487C, 0x9C79, 0x9C79, 0x3DFA, 0x9C7A, 0x9C7A, 0x487D,
+ 0x9C7B, 0x9C7C, 0x3DFB, 0x9C7D, 0x9C7D, 0x487E, 0x9C7E, 0x9C7E, 0x3DFD,
+ 0x9CA1, 0x9CA2, 0x3DFE, 0x9CA3, 0x9CA4, 0x487F, 0x9CA5, 0x9CA5, 0x3E00,
+ 0x9CA6, 0x9CA7, 0x4881, 0x9CA8, 0x9CA9, 0x3E01, 0x9CAA, 0x9CAA, 0x4883,
+ 0x9CAB, 0x9CAB, 0x3E03, 0x9CAC, 0x9CAC, 0x4884, 0x9CAD, 0x9CAE, 0x3E04,
+ 0x9CAF, 0x9CB0, 0x4885, 0x9CB1, 0x9CBA, 0x3E06, 0x9CBB, 0x9CBB, 0x4887,
+ 0x9CBC, 0x9CBC, 0x1787, 0x9CBD, 0x9CBD, 0x095F, 0x9CBE, 0x9CC2, 0x3E12,
+ 0x9CC3, 0x9CC5, 0x4888, 0x9CC6, 0x9CCD, 0x3E17, 0x9CCE, 0x9CCE, 0x488B,
+ 0x9CCF, 0x9CCF, 0x3E1F, 0x9CD0, 0x9CD0, 0x1E99, 0x9CD1, 0x9CD3, 0x3E21,
+ 0x9CD4, 0x9CD7, 0x488C, 0x9CD8, 0x9CDA, 0x3E24, 0x9CDB, 0x9CDB, 0x4890,
+ 0x9CDC, 0x9CE5, 0x3E27, 0x9CE6, 0x9CE6, 0x4891, 0x9CE7, 0x9CE9, 0x3E31,
+ 0x9CEA, 0x9CEA, 0x4892, 0x9CEB, 0x9CEC, 0x3E34, 0x9CED, 0x9CED, 0x4893,
+ 0x9CEE, 0x9CF9, 0x3E36, 0x9CFA, 0x9CFC, 0x4894, 0x9CFD, 0x9CFD, 0x3E42,
+ 0x9CFE, 0x9CFE, 0x4897, 0x9D40, 0x9D40, 0x43E8, 0x9D41, 0x9D45, 0x4898,
+ 0x9D46, 0x9D46, 0x3E43, 0x9D47, 0x9D48, 0x489D, 0x9D49, 0x9D49, 0x3E44,
+ 0x9D4A, 0x9D4B, 0x489F, 0x9D4C, 0x9D4D, 0x3E46, 0x9D4E, 0x9D4E, 0x48A1,
+ 0x9D4F, 0x9D4F, 0x3E48, 0x9D50, 0x9D50, 0x48A2, 0x9D51, 0x9D51, 0x3E49,
+ 0x9D52, 0x9D54, 0x48A3, 0x9D55, 0x9D55, 0x3E4A, 0x9D56, 0x9D56, 0x48A6,
+ 0x9D57, 0x9D57, 0x25C1, 0x9D58, 0x9D59, 0x48A7, 0x9D5A, 0x9D5A, 0x0D0C,
+ 0x9D5B, 0x9D60, 0x48A9, 0x9D61, 0x9D61, 0x43C9, 0x9D62, 0x9D62, 0x3E4C,
+ 0x9D63, 0x9D63, 0x48AF, 0x9D64, 0x9D64, 0x3E4D, 0x9D65, 0x9D77, 0x48B0,
+ 0x9D78, 0x9D78, 0x43F5, 0x9D79, 0x9D79, 0x3E4E, 0x9D7A, 0x9D7D, 0x48C3,
+ 0x9D7E, 0x9D7E, 0x3E4F, 0x9DA1, 0x9DA4, 0x48C7, 0x9DA5, 0x9DA8, 0x3E50,
+ 0x9DA9, 0x9DA9, 0x48CB, 0x9DAA, 0x9DAA, 0x3E54, 0x9DAB, 0x9DAB, 0x48CC,
+ 0x9DAC, 0x9DAD, 0x3E55, 0x9DAE, 0x9DAF, 0x48CD, 0x9DB0, 0x9DB0, 0x3E58,
+ 0x9DB1, 0x9DB2, 0x48CF, 0x9DB3, 0x9DB3, 0x3E59, 0x9DB4, 0x9DB4, 0x48D1,
+ 0x9DB5, 0x9DB5, 0x3E5A, 0x9DB6, 0x9DB6, 0x48D2, 0x9DB7, 0x9DB7, 0x3E5B,
+ 0x9DB8, 0x9DBB, 0x48D3, 0x9DBC, 0x9DBD, 0x3E5C, 0x9DBE, 0x9DBE, 0x48D7,
+ 0x9DBF, 0x9DC0, 0x3E5E, 0x9DC1, 0x9DC2, 0x48D8, 0x9DC3, 0x9DC3, 0x3E60,
+ 0x9DC4, 0x9DC4, 0x05E6, 0x9DC5, 0x9DC6, 0x48DA, 0x9DC7, 0x9DC8, 0x3E62,
+ 0x9DC9, 0x9DC9, 0x48DC, 0x9DCA, 0x9DCA, 0x3E64, 0x9DCB, 0x9DCC, 0x48DD,
+ 0x9DCD, 0x9DD1, 0x3E65, 0x9DD2, 0x9DD2, 0x48DF, 0x9DD3, 0x9DD5, 0x3E6A,
+ 0x9DD6, 0x9DD9, 0x48E0, 0x9DDA, 0x9DFB, 0x3E6D, 0x9DFC, 0x9DFC, 0x48E4,
+ 0x9DFD, 0x9DFE, 0x3E8F, 0x9E40, 0x9E42, 0x3E91, 0x9E43, 0x9E43, 0x48E5,
+ 0x9E44, 0x9E5E, 0x3E95, 0x9E5F, 0x9E5F, 0x48E6, 0x9E60, 0x9E62, 0x3EB1,
+ 0x9E63, 0x9E63, 0x48E7, 0x9E64, 0x9E65, 0x3EB4, 0x9E66, 0x9E67, 0x48E8,
+ 0x9E68, 0x9E68, 0x3EB6, 0x9E69, 0x9E69, 0x48EA, 0x9E6A, 0x9E6A, 0x3EB7,
+ 0x9E6B, 0x9E70, 0x48EB, 0x9E71, 0x9E71, 0x3EB8, 0x9E72, 0x9E72, 0x48F1,
+ 0x9E73, 0x9E73, 0x3EB9, 0x9E74, 0x9E76, 0x48F2, 0x9E77, 0x9E78, 0x3EBA,
+ 0x9E79, 0x9E79, 0x48F5, 0x9E7A, 0x9E7A, 0x3EBC, 0x9E7B, 0x9E7B, 0x48F6,
+ 0x9E7C, 0x9E7C, 0x3EBD, 0x9E7D, 0x9E7D, 0x48F7, 0x9E7E, 0x9E7E, 0x3EBE,
+ 0x9EA1, 0x9EA2, 0x3EBF, 0x9EA3, 0x9EA3, 0x48F8, 0x9EA4, 0x9EA6, 0x3EC1,
+ 0x9EA7, 0x9EA8, 0x48F9, 0x9EA9, 0x9EA9, 0x0728, 0x9EAA, 0x9EAA, 0x3EC5,
+ 0x9EAB, 0x9EAB, 0x48FB, 0x9EAC, 0x9EAD, 0x3EC6, 0x9EAE, 0x9EAE, 0x48FC,
+ 0x9EAF, 0x9EB1, 0x3EC8, 0x9EB2, 0x9EB3, 0x48FD, 0x9EB4, 0x9EB4, 0x3ECB,
+ 0x9EB5, 0x9EB5, 0x48FF, 0x9EB6, 0x9EB7, 0x3ECC, 0x9EB8, 0x9EB8, 0x4900,
+ 0x9EB9, 0x9EB9, 0x3ECE, 0x9EBA, 0x9EBB, 0x4901, 0x9EBC, 0x9EBC, 0x3ECF,
+ 0x9EBD, 0x9EBE, 0x4903, 0x9EBF, 0x9EC0, 0x3ED0, 0x9EC1, 0x9EC3, 0x4905,
+ 0x9EC4, 0x9EC5, 0x3ED2, 0x9EC6, 0x9EC6, 0x4908, 0x9EC7, 0x9ECA, 0x3ED4,
+ 0x9ECB, 0x9ECC, 0x4909, 0x9ECD, 0x9ECD, 0x3ED9, 0x9ECE, 0x9ECF, 0x490B,
+ 0x9ED0, 0x9ED1, 0x3EDA, 0x9ED2, 0x9ED2, 0x490D, 0x9ED3, 0x9ED3, 0x3EDC,
+ 0x9ED4, 0x9ED5, 0x490E, 0x9ED6, 0x9ED7, 0x3EDD, 0x9ED8, 0x9ED9, 0x4910,
+ 0x9EDA, 0x9EEE, 0x3EDF, 0x9EEF, 0x9EEF, 0x24B6, 0x9EF0, 0x9EF1, 0x3EF5,
+ 0x9EF2, 0x9EF2, 0x4912, 0x9EF3, 0x9EF5, 0x3EF7, 0x9EF6, 0x9EF8, 0x4913,
+ 0x9EF9, 0x9EFA, 0x3EFA, 0x9EFB, 0x9EFB, 0x4916, 0x9EFC, 0x9EFC, 0x3EFC,
+ 0x9EFD, 0x9EFD, 0x1806, 0x9EFE, 0x9EFE, 0x3EFE, 0x9F40, 0x9F42, 0x3EFF,
+ 0x9F43, 0x9F43, 0x4917, 0x9F44, 0x9F47, 0x3F02, 0x9F48, 0x9F48, 0x4918,
+ 0x9F49, 0x9F4A, 0x3F06, 0x9F4B, 0x9F4C, 0x4919, 0x9F4D, 0x9F5F, 0x3F08,
+ 0x9F60, 0x9F60, 0x3511, 0x9F61, 0x9F65, 0x3F1C, 0x9F66, 0x9F66, 0x3945,
+ 0x9F67, 0x9F68, 0x491B, 0x9F69, 0x9F6F, 0x3F23, 0x9F70, 0x9F70, 0x491D,
+ 0x9F71, 0x9F7E, 0x3F2A, 0x9FA1, 0x9FB4, 0x3F38, 0x9FB5, 0x9FB5, 0x491E,
+ 0x9FB6, 0x9FBA, 0x3F4C, 0x9FBB, 0x9FBB, 0x491F, 0x9FBC, 0x9FBE, 0x3F51,
+ 0x9FBF, 0x9FBF, 0x4920, 0x9FC0, 0x9FC0, 0x3F54, 0x9FC1, 0x9FC1, 0x4921,
+ 0x9FC2, 0x9FCA, 0x3F55, 0x9FCB, 0x9FCB, 0x0F82, 0x9FCC, 0x9FCC, 0x4922,
+ 0x9FCD, 0x9FD3, 0x3F60, 0x9FD4, 0x9FD4, 0x4923, 0x9FD5, 0x9FD7, 0x3F68,
+ 0x9FD8, 0x9FD8, 0x3A3E, 0x9FD9, 0x9FE3, 0x3F6C, 0x9FE4, 0x9FE4, 0x4924,
+ 0x9FE5, 0x9FF8, 0x3F77, 0x9FF9, 0x9FF9, 0x4925, 0x9FFA, 0x9FFE, 0x3F8B,
+ 0xA040, 0xA040, 0x4926, 0xA041, 0xA046, 0x3F90, 0xA047, 0xA047, 0x4927,
+ 0xA048, 0xA054, 0x3F96, 0xA055, 0xA055, 0x4928, 0xA056, 0xA062, 0x3FA3,
+ 0xA063, 0xA063, 0x3811, 0xA064, 0xA06C, 0x3FB1, 0xA06D, 0xA06D, 0x4929,
+ 0xA06E, 0xA076, 0x3FBA, 0xA077, 0xA077, 0x05F2, 0xA078, 0xA07A, 0x3FC4,
+ 0xA07B, 0xA07B, 0x492A, 0xA07C, 0xA07E, 0x3FC7, 0xA0A1, 0xA0A1, 0x3FCA,
+ 0xA0A2, 0xA0A2, 0x492B, 0xA0A3, 0xA0A6, 0x3FCB, 0xA0A7, 0xA0A7, 0x492C,
+ 0xA0A8, 0xA0C4, 0x3FCF, 0xA0C5, 0xA0C5, 0x492D, 0xA0C6, 0xA0CF, 0x3FEC,
+ 0xA0D0, 0xA0D0, 0x492E, 0xA0D1, 0xA0D4, 0x3FF6, 0xA0D5, 0xA0D5, 0x3AEE,
+ 0xA0D6, 0xA0DE, 0x3FFB, 0xA0DF, 0xA0DF, 0x247D, 0xA0E0, 0xA0E2, 0x4005,
+ 0xA0E3, 0xA0E3, 0x492F, 0xA0E4, 0xA0E4, 0x3AC9, 0xA0E5, 0xA0E6, 0x4009,
+ 0xA0E7, 0xA0ED, 0x4930, 0xA0EE, 0xA0EE, 0x43B4, 0xA0EF, 0xA0F1, 0x4937,
+ 0xA0F2, 0xA0F2, 0x43B8, 0xA0F3, 0xA0FE, 0x493A, 0xA140, 0xA158, 0x0063,
+ 0xA159, 0xA15C, 0x35AF, 0xA15D, 0xA17E, 0x0080, 0xA1A1, 0xA1F5, 0x00A2,
+ 0xA1F6, 0xA1F6, 0x00F8, 0xA1F7, 0xA1F7, 0x00F7, 0xA1F8, 0xA1FE, 0x00F9,
+ 0xA240, 0xA27E, 0x0100, 0xA2A1, 0xA2FE, 0x013F, 0xA340, 0xA37E, 0x019D,
+ 0xA3A1, 0xA3BB, 0x01DC, 0xA3BD, 0xA3BF, 0x01F7, 0xA440, 0xA47E, 0x0253,
+ 0xA4A1, 0xA4FE, 0x0292, 0xA540, 0xA57E, 0x02F0, 0xA5A1, 0xA5FE, 0x032F,
+ 0xA640, 0xA67E, 0x038D, 0xA6A1, 0xA6FE, 0x03CC, 0xA740, 0xA77E, 0x042A,
+ 0xA7A1, 0xA7FE, 0x0469, 0xA840, 0xA87E, 0x04C7, 0xA8A1, 0xA8FE, 0x0506,
+ 0xA940, 0xA97E, 0x0564, 0xA9A1, 0xA9FE, 0x05A3, 0xAA40, 0xAA7E, 0x0601,
+ 0xAAA1, 0xAAFE, 0x0640, 0xAB40, 0xAB7E, 0x069E, 0xABA1, 0xABFE, 0x06DD,
+ 0xAC40, 0xAC7E, 0x073B, 0xACA1, 0xACFD, 0x077A, 0xACFE, 0xACFE, 0x097F,
+ 0xAD40, 0xAD7E, 0x07D7, 0xADA1, 0xADFE, 0x0816, 0xAE40, 0xAE7E, 0x0874,
+ 0xAEA1, 0xAEFE, 0x08B3, 0xAF40, 0xAF7E, 0x0911, 0xAFA1, 0xAFCF, 0x0950,
+ 0xAFD0, 0xAFFE, 0x0980, 0xB040, 0xB07E, 0x09AF, 0xB0A1, 0xB0FE, 0x09EE,
+ 0xB140, 0xB17E, 0x0A4C, 0xB1A1, 0xB1FE, 0x0A8B, 0xB240, 0xB27E, 0x0AE9,
+ 0xB2A1, 0xB2FE, 0x0B28, 0xB340, 0xB37E, 0x0B86, 0xB3A1, 0xB3FE, 0x0BC5,
+ 0xB440, 0xB47E, 0x0C23, 0xB4A1, 0xB4FE, 0x0C62, 0xB540, 0xB57E, 0x0CC0,
+ 0xB5A1, 0xB5FE, 0x0CFF, 0xB640, 0xB67E, 0x0D5D, 0xB6A1, 0xB6FE, 0x0D9C,
+ 0xB740, 0xB77E, 0x0DFA, 0xB7A1, 0xB7FE, 0x0E39, 0xB840, 0xB87E, 0x0E97,
+ 0xB8A1, 0xB8FE, 0x0ED6, 0xB940, 0xB97E, 0x0F34, 0xB9A1, 0xB9FE, 0x0F73,
+ 0xBA40, 0xBA7E, 0x0FD1, 0xBAA1, 0xBAFE, 0x1010, 0xBB40, 0xBB7E, 0x106E,
+ 0xBBA1, 0xBBC7, 0x10AD, 0xBBC8, 0xBBFE, 0x10D5, 0xBC40, 0xBC7E, 0x110C,
+ 0xBCA1, 0xBCFE, 0x114B, 0xBD40, 0xBD7E, 0x11A9, 0xBDA1, 0xBDFE, 0x11E8,
+ 0xBE40, 0xBE51, 0x1246, 0xBE52, 0xBE52, 0x10D4, 0xBE53, 0xBE7E, 0x1258,
+ 0xBEA1, 0xBEFE, 0x1284, 0xBF40, 0xBF7E, 0x12E2, 0xBFA1, 0xBFFE, 0x1321,
+ 0xC040, 0xC07E, 0x137F, 0xC0A1, 0xC0FE, 0x13BE, 0xC140, 0xC17E, 0x141C,
+ 0xC1A1, 0xC1AA, 0x145B, 0xC1AB, 0xC1FE, 0x1466, 0xC240, 0xC27E, 0x14BA,
+ 0xC2A1, 0xC2CA, 0x14F9, 0xC2CB, 0xC2CB, 0x1465, 0xC2CC, 0xC2FE, 0x1523,
+ 0xC340, 0xC360, 0x1556, 0xC361, 0xC37E, 0x1578, 0xC3A1, 0xC3B8, 0x1596,
+ 0xC3B9, 0xC3B9, 0x15AF, 0xC3BA, 0xC3BA, 0x15AE, 0xC3BB, 0xC3FE, 0x15B0,
+ 0xC440, 0xC455, 0x15F4, 0xC456, 0xC456, 0x1577, 0xC457, 0xC47E, 0x160A,
+ 0xC4A1, 0xC4FE, 0x1632, 0xC540, 0xC57E, 0x1690, 0xC5A1, 0xC5FE, 0x16CF,
+ 0xC640, 0xC67E, 0x172D, 0xC6A1, 0xC6BE, 0x01FA, 0xC6BF, 0xC6CE, 0x0219,
+ 0xC6D0, 0xC6D2, 0x022A, 0xC6D4, 0xC6D4, 0x022E, 0xC6D6, 0xC6D6, 0x0230,
+ 0xC6D8, 0xC6DD, 0x35B3, 0xC6E0, 0xC6FE, 0x35BA, 0xC740, 0xC77E, 0x35D9,
+ 0xC7A1, 0xC7FE, 0x3618, 0xC840, 0xC87E, 0x3676, 0xC8A1, 0xC8A4, 0x36B5,
+ 0xC8CD, 0xC8D3, 0x36E1, 0xC8D4, 0xC8D6, 0x44C6, 0xC8D7, 0xC8DF, 0x451C,
+ 0xC8E0, 0xC8E0, 0x499E, 0xC8E1, 0xC8E8, 0x4525, 0xC8E9, 0xC8E9, 0x499F,
+ 0xC8EA, 0xC8F0, 0x452D, 0xC8F1, 0xC8F1, 0x49A0, 0xC8F5, 0xC8FE, 0x4992,
+ 0xC940, 0xC949, 0x176C, 0xC94A, 0xC94A, 0x0274, 0xC94B, 0xC96B, 0x1776,
+ 0xC96C, 0xC97E, 0x1798, 0xC9A1, 0xC9BD, 0x17AB, 0xC9BE, 0xC9BE, 0x1797,
+ 0xC9BF, 0xC9EC, 0x17C8, 0xC9ED, 0xC9FE, 0x17F7, 0xCA40, 0xCA7E, 0x1809,
+ 0xCAA1, 0xCAF6, 0x1848, 0xCAF7, 0xCAF7, 0x17F6, 0xCAF8, 0xCAFE, 0x189E,
+ 0xCB40, 0xCB7E, 0x18A5, 0xCBA1, 0xCBFE, 0x18E4, 0xCC40, 0xCC7E, 0x1942,
+ 0xCCA1, 0xCCFE, 0x1981, 0xCD40, 0xCD7E, 0x19DF, 0xCDA1, 0xCDFE, 0x1A1E,
+ 0xCE40, 0xCE7E, 0x1A7C, 0xCEA1, 0xCEFE, 0x1ABB, 0xCF40, 0xCF7E, 0x1B19,
+ 0xCFA1, 0xCFFE, 0x1B58, 0xD040, 0xD07E, 0x1BB6, 0xD0A1, 0xD0FE, 0x1BF5,
+ 0xD140, 0xD17E, 0x1C53, 0xD1A1, 0xD1FE, 0x1C92, 0xD240, 0xD27E, 0x1CF0,
+ 0xD2A1, 0xD2FE, 0x1D2F, 0xD340, 0xD37E, 0x1D8D, 0xD3A1, 0xD3FE, 0x1DCC,
+ 0xD440, 0xD47E, 0x1E2A, 0xD4A1, 0xD4FE, 0x1E69, 0xD540, 0xD57E, 0x1EC7,
+ 0xD5A1, 0xD5FE, 0x1F06, 0xD640, 0xD67E, 0x1F64, 0xD6A1, 0xD6CB, 0x1FA3,
+ 0xD6CC, 0xD6CC, 0x2254, 0xD6CD, 0xD6FE, 0x1FCF, 0xD740, 0xD779, 0x2001,
+ 0xD77A, 0xD77A, 0x22B9, 0xD77B, 0xD77E, 0x203B, 0xD7A1, 0xD7FE, 0x203F,
+ 0xD840, 0xD87E, 0x209D, 0xD8A1, 0xD8FE, 0x20DC, 0xD940, 0xD97E, 0x213A,
+ 0xD9A1, 0xD9FE, 0x2179, 0xDA40, 0xDA7E, 0x21D7, 0xDAA1, 0xDADE, 0x2216,
+ 0xDADF, 0xDADF, 0x1FCE, 0xDAE0, 0xDAFE, 0x2255, 0xDB40, 0xDB7E, 0x2274,
+ 0xDBA1, 0xDBA6, 0x22B3, 0xDBA7, 0xDBFE, 0x22BA, 0xDC40, 0xDC7E, 0x2312,
+ 0xDCA1, 0xDCFE, 0x2351, 0xDD40, 0xDD7E, 0x23AF, 0xDDA1, 0xDDFB, 0x23EE,
+ 0xDDFC, 0xDDFC, 0x2381, 0xDDFD, 0xDDFE, 0x2449, 0xDE40, 0xDE7E, 0x244B,
+ 0xDEA1, 0xDEFE, 0x248A, 0xDF40, 0xDF7E, 0x24E8, 0xDFA1, 0xDFFE, 0x2527,
+ 0xE040, 0xE07E, 0x2585, 0xE0A1, 0xE0FE, 0x25C4, 0xE140, 0xE17E, 0x2622,
+ 0xE1A1, 0xE1FE, 0x2661, 0xE240, 0xE27E, 0x26BF, 0xE2A1, 0xE2FE, 0x26FE,
+ 0xE340, 0xE37E, 0x275C, 0xE3A1, 0xE3FE, 0x279B, 0xE440, 0xE47E, 0x27F9,
+ 0xE4A1, 0xE4FE, 0x2838, 0xE540, 0xE57E, 0x2896, 0xE5A1, 0xE5FE, 0x28D5,
+ 0xE640, 0xE67E, 0x2933, 0xE6A1, 0xE6FE, 0x2972, 0xE740, 0xE77E, 0x29D0,
+ 0xE7A1, 0xE7FE, 0x2A0F, 0xE840, 0xE87E, 0x2A6D, 0xE8A1, 0xE8A2, 0x2AAC,
+ 0xE8A3, 0xE8FE, 0x2AAF, 0xE940, 0xE975, 0x2B0B, 0xE976, 0xE97E, 0x2B42,
+ 0xE9A1, 0xE9FE, 0x2B4B, 0xEA40, 0xEA7E, 0x2BA9, 0xEAA1, 0xEAFE, 0x2BE8,
+ 0xEB40, 0xEB5A, 0x2C46, 0xEB5B, 0xEB7E, 0x2C62, 0xEBA1, 0xEBF0, 0x2C86,
+ 0xEBF1, 0xEBF1, 0x2AAE, 0xEBF2, 0xEBFE, 0x2CD6, 0xEC40, 0xEC7E, 0x2CE3,
+ 0xECA1, 0xECDD, 0x2D22, 0xECDE, 0xECDE, 0x2B41, 0xECDF, 0xECFE, 0x2D5F,
+ 0xED40, 0xED7E, 0x2D7F, 0xEDA1, 0xEDA9, 0x2DBE, 0xEDAA, 0xEDFE, 0x2DC8,
+ 0xEE40, 0xEE7E, 0x2E1D, 0xEEA1, 0xEEEA, 0x2E5C, 0xEEEB, 0xEEEB, 0x3014,
+ 0xEEEC, 0xEEFE, 0x2EA6, 0xEF40, 0xEF7E, 0x2EB9, 0xEFA1, 0xEFFE, 0x2EF8,
+ 0xF040, 0xF055, 0x2F56, 0xF056, 0xF056, 0x2DC7, 0xF057, 0xF07E, 0x2F6C,
+ 0xF0A1, 0xF0CA, 0x2F94, 0xF0CB, 0xF0CB, 0x2C61, 0xF0CC, 0xF0FE, 0x2FBE,
+ 0xF140, 0xF162, 0x2FF1, 0xF163, 0xF16A, 0x3015, 0xF16B, 0xF16B, 0x3160,
+ 0xF16C, 0xF17E, 0x301D, 0xF1A1, 0xF1FE, 0x3030, 0xF240, 0xF267, 0x308E,
+ 0xF268, 0xF268, 0x31EF, 0xF269, 0xF27E, 0x30B6, 0xF2A1, 0xF2C2, 0x30CC,
+ 0xF2C3, 0xF2FE, 0x30EF, 0xF340, 0xF374, 0x312B, 0xF375, 0xF37E, 0x3161,
+ 0xF3A1, 0xF3FE, 0x316B, 0xF440, 0xF465, 0x31C9, 0xF466, 0xF47E, 0x31F0,
+ 0xF4A1, 0xF4B4, 0x3209, 0xF4B5, 0xF4B5, 0x30EE, 0xF4B6, 0xF4FC, 0x321D,
+ 0xF4FD, 0xF4FE, 0x3265, 0xF540, 0xF57E, 0x3267, 0xF5A1, 0xF5FE, 0x32A6,
+ 0xF640, 0xF662, 0x3304, 0xF663, 0xF663, 0x3264, 0xF664, 0xF67E, 0x3327,
+ 0xF6A1, 0xF6FE, 0x3342, 0xF740, 0xF77E, 0x33A0, 0xF7A1, 0xF7FE, 0x33DF,
+ 0xF840, 0xF87E, 0x343D, 0xF8A1, 0xF8FE, 0x347C, 0xF940, 0xF976, 0x34DA,
+ 0xF977, 0xF97E, 0x3512, 0xF9A1, 0xF9C3, 0x351A, 0xF9C4, 0xF9C4, 0x3511,
+ 0xF9C5, 0xF9C5, 0x353D, 0xF9C6, 0xF9C6, 0x3549, 0xF9C7, 0xF9D1, 0x353E,
+ 0xF9D2, 0xF9D5, 0x354A, 0xF9D6, 0xF9FE, 0x36E8, 0xFA40, 0xFA5E, 0x400B,
+ 0xFA5F, 0xFA5F, 0x083A, 0xFA60, 0xFA65, 0x402B, 0xFA66, 0xFA66, 0x09FD,
+ 0xFA67, 0xFA7E, 0x4032, 0xFAA1, 0xFAA8, 0x404A, 0xFAA9, 0xFAAA, 0x4946,
+ 0xFAAB, 0xFABC, 0x4054, 0xFABD, 0xFABD, 0x030D, 0xFABE, 0xFAC4, 0x4067,
+ 0xFAC5, 0xFAC5, 0x016B, 0xFAC6, 0xFAD4, 0x406F, 0xFAD5, 0xFAD5, 0x0860,
+ 0xFAD6, 0xFAFE, 0x407F, 0xFB40, 0xFB47, 0x40A8, 0xFB48, 0xFB48, 0x3E82,
+ 0xFB49, 0xFB52, 0x40B1, 0xFB53, 0xFB53, 0x4948, 0xFB54, 0xFB6D, 0x40BC,
+ 0xFB6E, 0xFB6E, 0x4949, 0xFB6F, 0xFB7E, 0x40D7, 0xFBA1, 0xFBA2, 0x40E7,
+ 0xFBA3, 0xFBA3, 0x494A, 0xFBA4, 0xFBB7, 0x40EA, 0xFBB8, 0xFBB8, 0x0C23,
+ 0xFBB9, 0xFBBE, 0x40FF, 0xFBBF, 0xFBBF, 0x494B, 0xFBC0, 0xFBCC, 0x4105,
+ 0xFBCD, 0xFBCD, 0x494C, 0xFBCE, 0xFBF2, 0x4112, 0xFBF3, 0xFBF3, 0x17E4,
+ 0xFBF4, 0xFBF8, 0x4138, 0xFBF9, 0xFBF9, 0x3E8E, 0xFBFA, 0xFBFE, 0x413E,
+ 0xFC40, 0xFC49, 0x4143, 0xFC4A, 0xFC4A, 0x494D, 0xFC4B, 0xFC4E, 0x414D,
+ 0xFC4F, 0xFC4F, 0x212F, 0xFC50, 0xFC51, 0x4151, 0xFC52, 0xFC52, 0x494E,
+ 0xFC53, 0xFC62, 0x4153, 0xFC63, 0xFC63, 0x494F, 0xFC64, 0xFC6B, 0x4163,
+ 0xFC6C, 0xFC6C, 0x4001, 0xFC6D, 0xFC6D, 0x4950, 0xFC6E, 0xFC74, 0x416D,
+ 0xFC75, 0xFC75, 0x4951, 0xFC76, 0xFC7E, 0x4174, 0xFCA1, 0xFCB8, 0x417D,
+ 0xFCB9, 0xFCB9, 0x115F, 0xFCBA, 0xFCBB, 0x4195, 0xFCBC, 0xFCBD, 0x4952,
+ 0xFCBE, 0xFCCB, 0x4198, 0xFCCC, 0xFCCC, 0x4954, 0xFCCD, 0xFCE1, 0x41A7,
+ 0xFCE2, 0xFCE2, 0x0C79, 0xFCE3, 0xFCE3, 0x4955, 0xFCE4, 0xFCED, 0x41BD,
+ 0xFCEE, 0xFCEE, 0x4956, 0xFCEF, 0xFCF0, 0x41C7, 0xFCF1, 0xFCF1, 0x04C3,
+ 0xFCF2, 0xFCFE, 0x41CA, 0xFD40, 0xFD48, 0x41D7, 0xFD49, 0xFD49, 0x4957,
+ 0xFD4A, 0xFD69, 0x41E0, 0xFD6A, 0xFD6A, 0x4958, 0xFD6B, 0xFD7E, 0x4201,
+ 0xFDA1, 0xFDB6, 0x4215, 0xFDB7, 0xFDB7, 0x18BD, 0xFDB8, 0xFDB8, 0x0CBD,
+ 0xFDB9, 0xFDBA, 0x422D, 0xFDBB, 0xFDBB, 0x0CA5, 0xFDBC, 0xFDE2, 0x4230,
+ 0xFDE3, 0xFDE3, 0x4959, 0xFDE4, 0xFDF0, 0x4258, 0xFDF1, 0xFDF1, 0x0CCE,
+ 0xFDF2, 0xFDF2, 0x495A, 0xFDF3, 0xFDFE, 0x4266, 0xFE40, 0xFE51, 0x4272,
+ 0xFE52, 0xFE52, 0x3D70, 0xFE53, 0xFE6C, 0x4285, 0xFE6D, 0xFE6D, 0x495B,
+ 0xFE6E, 0xFE6E, 0x429F, 0xFE6F, 0xFE6F, 0x0E84, 0xFE70, 0xFE77, 0x42A1,
+ 0xFE78, 0xFE78, 0x495C, 0xFE79, 0xFE7E, 0x42A9, 0xFEA1, 0xFEA9, 0x42AF,
+ 0xFEAA, 0xFEAA, 0x0120, 0xFEAB, 0xFEDC, 0x42B8, 0xFEDD, 0xFEDD, 0x1BA8,
+ 0xFEDE, 0xFEDF, 0x495D, 0xFEE0, 0xFEEC, 0x42EB, 0xFEED, 0xFEEE, 0x495F,
+ 0xFEEF, 0xFEFE, 0x42F8,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-V_5.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-V_5.cpp
new file mode 100644
index 0000000000..d9cbab8826
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/CNS1/HKscs-B5-V_5.cpp
@@ -0,0 +1,15 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h"
+
+const FX_WORD g_FXCMAP_HKscs_B5_V_5[13 * 3] = {
+ 0xA14B, 0xA14B, 0x354E, 0xA15A, 0xA15A, 0x35AF, 0xA15C, 0xA15C,
+ 0x35B1, 0xA15D, 0xA15E, 0x0082, 0xA161, 0xA162, 0x0086, 0xA165,
+ 0xA166, 0x008A, 0xA169, 0xA16A, 0x008E, 0xA16D, 0xA16E, 0x0092,
+ 0xA171, 0xA172, 0x0096, 0xA175, 0xA176, 0x009A, 0xA179, 0xA17A,
+ 0x009E, 0xA1E3, 0xA1E3, 0x354F, 0xC6E4, 0xC6E5, 0x3711,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-H_3.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-H_3.cpp
new file mode 100644
index 0000000000..f02c9dc655
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-H_3.cpp
@@ -0,0 +1,5483 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h"
+
+const FX_WORD g_FXCMAP_UniCNS_UCS2_H_3[16418 * 3] = {
+ 0x0020, 0x007E, 0x0001, 0x00A2, 0x00A3, 0x0106, 0x00A5, 0x00A5, 0x0104,
+ 0x00A7, 0x00A7, 0x00B2, 0x00A8, 0x00A8, 0x35B3, 0x00AC, 0x00AC, 0x36E1,
+ 0x00B0, 0x00B0, 0x0118, 0x00B1, 0x00B1, 0x00D4, 0x00B7, 0x00B7, 0x0073,
+ 0x00C0, 0x00C0, 0x4964, 0x00C1, 0x00C1, 0x4962, 0x00C8, 0x00C8, 0x4968,
+ 0x00C9, 0x00C9, 0x4966, 0x00CA, 0x00CA, 0x4971, 0x00D2, 0x00D2, 0x496C,
+ 0x00D3, 0x00D3, 0x496A, 0x00D7, 0x00D7, 0x00D2, 0x00E0, 0x00E0, 0x4975,
+ 0x00E1, 0x00E1, 0x4973, 0x00E8, 0x00E8, 0x497A, 0x00E9, 0x00E9, 0x4978,
+ 0x00EA, 0x00EA, 0x4990, 0x00EC, 0x00EC, 0x497E, 0x00ED, 0x00ED, 0x497C,
+ 0x00F2, 0x00F2, 0x4982, 0x00F3, 0x00F3, 0x4980, 0x00F7, 0x00F7, 0x00D3,
+ 0x00F8, 0x00F8, 0x4998, 0x00F9, 0x00F9, 0x4986, 0x00FA, 0x00FA, 0x4984,
+ 0x00FC, 0x00FC, 0x498B, 0x0100, 0x0100, 0x4961, 0x0101, 0x0101, 0x4972,
+ 0x0112, 0x0112, 0x4965, 0x0113, 0x0113, 0x4977, 0x011A, 0x011A, 0x4967,
+ 0x011B, 0x011B, 0x4979, 0x012B, 0x012B, 0x497B, 0x014B, 0x014B, 0x4999,
+ 0x014C, 0x014C, 0x4969, 0x014D, 0x014D, 0x497F, 0x0153, 0x0153, 0x4997,
+ 0x016B, 0x016B, 0x4983, 0x01CD, 0x01CD, 0x4963, 0x01CE, 0x01CE, 0x4974,
+ 0x01D0, 0x01D0, 0x497D, 0x01D1, 0x01D1, 0x496B, 0x01D2, 0x01D2, 0x4981,
+ 0x01D4, 0x01D4, 0x4985, 0x01D6, 0x01D6, 0x4987, 0x01D8, 0x01D8, 0x4988,
+ 0x01DA, 0x01DA, 0x4989, 0x01DC, 0x01DC, 0x498A, 0x0250, 0x0250, 0x4993,
+ 0x0251, 0x0251, 0x4976, 0x0254, 0x0254, 0x4995, 0x025B, 0x025B, 0x4994,
+ 0x0261, 0x0261, 0x4991, 0x026A, 0x026A, 0x499B, 0x0275, 0x0275, 0x4996,
+ 0x0283, 0x0283, 0x4992, 0x028A, 0x028A, 0x499A, 0x02C6, 0x02C6, 0x35B4,
+ 0x02C7, 0x02C7, 0x01F8, 0x02CA, 0x02CA, 0x01F7, 0x02CB, 0x02CB, 0x01F9,
+ 0x02D9, 0x02D9, 0x01F6, 0x0308, 0x0308, 0x35B3, 0x0391, 0x03A1, 0x01A1,
+ 0x03A3, 0x03A9, 0x01B2, 0x03B1, 0x03C1, 0x01B9, 0x03C3, 0x03C9, 0x01CA,
+ 0x0401, 0x0401, 0x3670, 0x0410, 0x0415, 0x366A, 0x0416, 0x0435, 0x3671,
+ 0x0436, 0x044F, 0x3692, 0x0451, 0x0451, 0x3691, 0x1EBE, 0x1EBE, 0x496E,
+ 0x1EBF, 0x1EBF, 0x498D, 0x1EC0, 0x1EC0, 0x4970, 0x1EC1, 0x1EC1, 0x498F,
+ 0x2013, 0x2013, 0x0079, 0x2014, 0x2014, 0x007B, 0x2018, 0x2019, 0x00A6,
+ 0x201C, 0x201D, 0x00A8, 0x2022, 0x2022, 0x0068, 0x2025, 0x2025, 0x006F,
+ 0x2026, 0x2026, 0x006E, 0x2032, 0x2032, 0x00AD, 0x2035, 0x2035, 0x00AC,
+ 0x203B, 0x203B, 0x00B1, 0x203E, 0x203E, 0x00C3, 0x20AC, 0x20AC, 0x44C1,
+ 0x2103, 0x2103, 0x010A, 0x2105, 0x2105, 0x00C2, 0x2109, 0x2109, 0x010B,
+ 0x2116, 0x2116, 0x36E6, 0x2121, 0x2121, 0x36E7, 0x2160, 0x2169, 0x0157,
+ 0x2170, 0x2179, 0x020E, 0x2190, 0x2190, 0x00F8, 0x2191, 0x2191, 0x00F5,
+ 0x2192, 0x2192, 0x00F7, 0x2193, 0x2193, 0x00F6, 0x2196, 0x2197, 0x00F9,
+ 0x2198, 0x2198, 0x00FC, 0x2199, 0x2199, 0x00FB, 0x21B8, 0x21B9, 0x36AD,
+ 0x21E7, 0x21E7, 0x36AC, 0x221A, 0x221A, 0x00D5, 0x221E, 0x221E, 0x00DC,
+ 0x221F, 0x221F, 0x00E9, 0x2220, 0x2220, 0x00E8, 0x2223, 0x2223, 0x00FE,
+ 0x2225, 0x2225, 0x00FD, 0x2229, 0x222A, 0x00E5, 0x222B, 0x222B, 0x00ED,
+ 0x222E, 0x222E, 0x00EE, 0x2234, 0x2234, 0x00F0, 0x2235, 0x2235, 0x00EF,
+ 0x223C, 0x223C, 0x00E4, 0x2252, 0x2252, 0x00DD, 0x2260, 0x2260, 0x00DB,
+ 0x2261, 0x2261, 0x00DE, 0x2266, 0x2267, 0x00D9, 0x22A5, 0x22A5, 0x00E7,
+ 0x22BF, 0x22BF, 0x00EA, 0x2400, 0x241F, 0x0232, 0x2421, 0x2421, 0x0252,
+ 0x2460, 0x2469, 0x01FA, 0x2474, 0x247D, 0x0204, 0x2500, 0x2500, 0x0137,
+ 0x2502, 0x2502, 0x0138, 0x250C, 0x250C, 0x013A, 0x2510, 0x2510, 0x013B,
+ 0x2514, 0x2514, 0x013C, 0x2518, 0x2518, 0x013D, 0x251C, 0x251C, 0x0135,
+ 0x2524, 0x2524, 0x0134, 0x252C, 0x252C, 0x0133, 0x2534, 0x2534, 0x0132,
+ 0x253C, 0x253C, 0x0131, 0x2550, 0x2550, 0x0142, 0x2551, 0x2551, 0x370A,
+ 0x2552, 0x2552, 0x36F8, 0x2553, 0x2553, 0x3701, 0x2554, 0x2554, 0x36EF,
+ 0x2555, 0x2555, 0x36FA, 0x2556, 0x2556, 0x3703, 0x2557, 0x2557, 0x36F1,
+ 0x2558, 0x2558, 0x36FE, 0x2559, 0x2559, 0x3707, 0x255A, 0x255A, 0x36F5,
+ 0x255B, 0x255B, 0x3700, 0x255C, 0x255C, 0x3709, 0x255D, 0x255D, 0x36F7,
+ 0x255E, 0x255E, 0x0143, 0x255F, 0x255F, 0x3704, 0x2560, 0x2560, 0x36F2,
+ 0x2561, 0x2561, 0x0145, 0x2562, 0x2562, 0x3706, 0x2563, 0x2563, 0x36F4,
+ 0x2564, 0x2564, 0x36F9, 0x2565, 0x2565, 0x3702, 0x2566, 0x2566, 0x36F0,
+ 0x2567, 0x2567, 0x36FF, 0x2568, 0x2568, 0x3708, 0x2569, 0x2569, 0x36F6,
+ 0x256A, 0x256A, 0x0144, 0x256B, 0x256B, 0x3705, 0x256C, 0x256C, 0x36F3,
+ 0x256D, 0x256E, 0x013E, 0x256F, 0x256F, 0x0141, 0x2570, 0x2570, 0x0140,
+ 0x2571, 0x2573, 0x014A, 0x2581, 0x2588, 0x0122, 0x2589, 0x2589, 0x0130,
+ 0x258A, 0x258A, 0x012F, 0x258B, 0x258B, 0x012E, 0x258C, 0x258C, 0x012D,
+ 0x258D, 0x258D, 0x012C, 0x258E, 0x258E, 0x012B, 0x258F, 0x258F, 0x012A,
+ 0x2593, 0x2593, 0x3710, 0x2594, 0x2594, 0x0136, 0x2595, 0x2595, 0x0139,
+ 0x25A0, 0x25A0, 0x00BE, 0x25A1, 0x25A1, 0x00BD, 0x25B2, 0x25B2, 0x00B7,
+ 0x25B3, 0x25B3, 0x00B6, 0x25BC, 0x25BC, 0x00C0, 0x25BD, 0x25BD, 0x00BF,
+ 0x25C6, 0x25C6, 0x00BC, 0x25C7, 0x25C7, 0x00BB, 0x25CB, 0x25CB, 0x00B4,
+ 0x25CE, 0x25CE, 0x00B8, 0x25CF, 0x25CF, 0x00B5, 0x25E2, 0x25E3, 0x0146,
+ 0x25E4, 0x25E4, 0x0149, 0x25E5, 0x25E5, 0x0148, 0x2605, 0x2605, 0x00BA,
+ 0x2606, 0x2606, 0x00B9, 0x2609, 0x2609, 0x00F4, 0x2640, 0x2640, 0x00F1,
+ 0x2641, 0x2641, 0x00F3, 0x2642, 0x2642, 0x00F2, 0x273D, 0x273D, 0x35C0,
+ 0x2E80, 0x2E80, 0x44C8, 0x2E84, 0x2E84, 0x451C, 0x2E86, 0x2E88, 0x451D,
+ 0x2E8A, 0x2E8A, 0x4520, 0x2E8C, 0x2E8D, 0x4521, 0x2E95, 0x2E95, 0x4523,
+ 0x2E9C, 0x2E9C, 0x4524, 0x2E9D, 0x2E9D, 0x02DC, 0x2EA5, 0x2EA5, 0x4525,
+ 0x2EA7, 0x2EA7, 0x4526, 0x2EAA, 0x2EAA, 0x4527, 0x2EAC, 0x2EAC, 0x4528,
+ 0x2EAE, 0x2EAE, 0x4529, 0x2EB6, 0x2EB6, 0x452A, 0x2EBC, 0x2EBC, 0x452B,
+ 0x2EBE, 0x2EBE, 0x452C, 0x2EC6, 0x2EC6, 0x0509, 0x2ECA, 0x2ECA, 0x452D,
+ 0x2ECC, 0x2ECD, 0x452E, 0x2ECF, 0x2ECF, 0x4530, 0x2ED6, 0x2ED7, 0x4531,
+ 0x2EDE, 0x2EDE, 0x4533, 0x2EE3, 0x2EE3, 0x09F6, 0x2F33, 0x2F33, 0x0227,
+ 0x3000, 0x3000, 0x0063, 0x3001, 0x3002, 0x0065, 0x3003, 0x3003, 0x00B3,
+ 0x3005, 0x3007, 0x35BA, 0x3008, 0x3009, 0x0094, 0x300A, 0x300B, 0x0090,
+ 0x300C, 0x300D, 0x0098, 0x300E, 0x300F, 0x009C, 0x3010, 0x3011, 0x008C,
+ 0x3012, 0x3012, 0x0105, 0x3014, 0x3015, 0x0088, 0x301D, 0x301E, 0x00AA,
+ 0x3021, 0x3029, 0x0161, 0x3041, 0x3093, 0x35C1, 0x309B, 0x309C, 0x44C6,
+ 0x309D, 0x309E, 0x35B7, 0x30A1, 0x30F6, 0x3614, 0x30FC, 0x30FC, 0x35BD,
+ 0x30FD, 0x30FE, 0x35B5, 0x3105, 0x3129, 0x01D1, 0x3231, 0x3231, 0x36E5,
+ 0x32A3, 0x32A3, 0x00C1, 0x338E, 0x338F, 0x0115, 0x339C, 0x339E, 0x0110,
+ 0x33A1, 0x33A1, 0x0114, 0x33C4, 0x33C4, 0x0117, 0x33CE, 0x33CE, 0x0113,
+ 0x33D1, 0x33D1, 0x00EC, 0x33D2, 0x33D2, 0x00EB, 0x33D5, 0x33D5, 0x010F,
+ 0x3435, 0x3435, 0x39BD, 0x3440, 0x3440, 0x3C67, 0x344C, 0x344C, 0x4593,
+ 0x3464, 0x3464, 0x3A85, 0x3473, 0x3473, 0x3DC5, 0x347A, 0x347A, 0x4033,
+ 0x347D, 0x347D, 0x4597, 0x347E, 0x347E, 0x46A3, 0x3493, 0x3493, 0x439E,
+ 0x3496, 0x3496, 0x37DC, 0x34A5, 0x34A5, 0x4598, 0x34AF, 0x34AF, 0x3C7F,
+ 0x34BC, 0x34BC, 0x4380, 0x34C1, 0x34C1, 0x44FB, 0x34C8, 0x34C8, 0x3D00,
+ 0x34DF, 0x34DF, 0x3EA4, 0x34E4, 0x34E4, 0x3E54, 0x34FB, 0x34FB, 0x3DCA,
+ 0x3506, 0x3506, 0x4336, 0x353E, 0x353E, 0x44E7, 0x3551, 0x3551, 0x45A1,
+ 0x3553, 0x3553, 0x43A5, 0x3561, 0x3561, 0x40D8, 0x356D, 0x356D, 0x45A4,
+ 0x3570, 0x3570, 0x3B2F, 0x3572, 0x3572, 0x45A5, 0x3577, 0x3577, 0x3ECB,
+ 0x3578, 0x3578, 0x4379, 0x3584, 0x3584, 0x39FB, 0x3597, 0x3597, 0x3B2D,
+ 0x3598, 0x3598, 0x45B0, 0x35A1, 0x35A1, 0x40E2, 0x35A5, 0x35A5, 0x45B1,
+ 0x35AD, 0x35AD, 0x3EFC, 0x35BF, 0x35BF, 0x45B2, 0x35C1, 0x35C1, 0x4580,
+ 0x35C5, 0x35C5, 0x45B4, 0x35C7, 0x35C7, 0x459F, 0x35CA, 0x35CA, 0x3E43,
+ 0x35CE, 0x35CE, 0x3E81, 0x35D2, 0x35D2, 0x3FC9, 0x35D6, 0x35D6, 0x3FB5,
+ 0x35DB, 0x35DB, 0x470D, 0x35DD, 0x35DD, 0x43AC, 0x35F1, 0x35F1, 0x4696,
+ 0x35F2, 0x35F2, 0x4627, 0x35F3, 0x35F3, 0x3F6C, 0x35FB, 0x35FB, 0x45C8,
+ 0x35FE, 0x35FE, 0x3F6A, 0x3609, 0x3609, 0x45F5, 0x3618, 0x3618, 0x4871,
+ 0x361A, 0x361A, 0x461A, 0x3623, 0x3623, 0x40C6, 0x362D, 0x362D, 0x3E86,
+ 0x3635, 0x3635, 0x492E, 0x3639, 0x3639, 0x4165, 0x363E, 0x363E, 0x3A08,
+ 0x3647, 0x3647, 0x4806, 0x3648, 0x3648, 0x3806, 0x3649, 0x3649, 0x4013,
+ 0x364E, 0x364E, 0x4698, 0x365F, 0x365F, 0x3DF3, 0x367A, 0x367A, 0x3EE3,
+ 0x3681, 0x3681, 0x45A6, 0x369A, 0x369A, 0x3C71, 0x36A5, 0x36A5, 0x4902,
+ 0x36AA, 0x36AA, 0x3B30, 0x36AC, 0x36AC, 0x4900, 0x36B0, 0x36B0, 0x3CDF,
+ 0x36B1, 0x36B1, 0x40CD, 0x36B5, 0x36B5, 0x3BC2, 0x36B9, 0x36B9, 0x4887,
+ 0x36BC, 0x36BC, 0x3CFF, 0x36C1, 0x36C1, 0x37C5, 0x36C3, 0x36C3, 0x40E5,
+ 0x36C4, 0x36C4, 0x3905, 0x36C5, 0x36C5, 0x4296, 0x36C7, 0x36C7, 0x3D3A,
+ 0x36C8, 0x36C8, 0x4820, 0x36D3, 0x36D3, 0x3A38, 0x36D4, 0x36D4, 0x3BB3,
+ 0x36D6, 0x36D6, 0x3D0C, 0x36DD, 0x36DD, 0x3A36, 0x36E1, 0x36E1, 0x397C,
+ 0x36E2, 0x36E2, 0x3CDD, 0x36E5, 0x36E5, 0x4216, 0x36E6, 0x36E6, 0x40FC,
+ 0x36F5, 0x36F5, 0x3A18, 0x3701, 0x3701, 0x3A34, 0x3703, 0x3703, 0x460F,
+ 0x3708, 0x3708, 0x40FF, 0x370A, 0x370A, 0x3CD5, 0x370D, 0x370D, 0x4238,
+ 0x371C, 0x371C, 0x3DFE, 0x3722, 0x3722, 0x3979, 0x3723, 0x3723, 0x3980,
+ 0x3725, 0x3725, 0x3849, 0x372C, 0x372C, 0x3C8C, 0x372D, 0x372D, 0x3D37,
+ 0x3730, 0x3730, 0x495C, 0x3732, 0x3732, 0x4106, 0x3733, 0x3733, 0x3997,
+ 0x373A, 0x373A, 0x3E56, 0x3740, 0x3740, 0x4202, 0x3743, 0x3743, 0x4036,
+ 0x3762, 0x3762, 0x3DB6, 0x376F, 0x376F, 0x47CB, 0x3797, 0x3797, 0x45ED,
+ 0x37A0, 0x37A0, 0x3A28, 0x37B9, 0x37B9, 0x43B7, 0x37BE, 0x37BE, 0x393E,
+ 0x37F2, 0x37F2, 0x3BA1, 0x37F8, 0x37F8, 0x42D2, 0x37FB, 0x37FB, 0x3EF5,
+ 0x380F, 0x380F, 0x462C, 0x3819, 0x3819, 0x39AF, 0x3820, 0x3820, 0x462F,
+ 0x382D, 0x382D, 0x412E, 0x3836, 0x3836, 0x4133, 0x3838, 0x3838, 0x43BB,
+ 0x3863, 0x3863, 0x46C3, 0x38A0, 0x38A0, 0x4145, 0x38C3, 0x38C3, 0x3912,
+ 0x38CC, 0x38CC, 0x4076, 0x38D1, 0x38D1, 0x3A95, 0x38FA, 0x38FA, 0x44EB,
+ 0x3908, 0x3908, 0x4632, 0x3914, 0x3914, 0x43BE, 0x3927, 0x3927, 0x3C31,
+ 0x3932, 0x3932, 0x4182, 0x393F, 0x393F, 0x4633, 0x394D, 0x394D, 0x4634,
+ 0x3963, 0x3963, 0x4163, 0x3980, 0x3980, 0x3874, 0x3989, 0x3989, 0x4638,
+ 0x398A, 0x398A, 0x3CE8, 0x3992, 0x3992, 0x4376, 0x3999, 0x3999, 0x39BA,
+ 0x399B, 0x399B, 0x3DB3, 0x39A1, 0x39A1, 0x3E19, 0x39A4, 0x39A4, 0x3E0F,
+ 0x39B8, 0x39B8, 0x463B, 0x39DC, 0x39DC, 0x3ECE, 0x39E2, 0x39E2, 0x46C8,
+ 0x39E5, 0x39E5, 0x393B, 0x39EC, 0x39EC, 0x4310, 0x39F8, 0x39F8, 0x463E,
+ 0x39FB, 0x39FB, 0x4345, 0x39FE, 0x39FE, 0x4368, 0x3A01, 0x3A01, 0x41E0,
+ 0x3A03, 0x3A03, 0x4640, 0x3A06, 0x3A06, 0x4377, 0x3A17, 0x3A17, 0x4190,
+ 0x3A18, 0x3A18, 0x438F, 0x3A29, 0x3A29, 0x3A5E, 0x3A2A, 0x3A2A, 0x3EDF,
+ 0x3A34, 0x3A34, 0x4319, 0x3A4B, 0x3A4B, 0x4644, 0x3A52, 0x3A52, 0x3ED3,
+ 0x3A57, 0x3A57, 0x419E, 0x3A5C, 0x3A5C, 0x3FC4, 0x3A5E, 0x3A5E, 0x3B07,
+ 0x3A66, 0x3A66, 0x419C, 0x3A67, 0x3A67, 0x4333, 0x3A97, 0x3A97, 0x4647,
+ 0x3AAB, 0x3AAB, 0x4091, 0x3ABD, 0x3ABD, 0x4649, 0x3ADE, 0x3ADE, 0x414C,
+ 0x3AE0, 0x3AE0, 0x3A7A, 0x3AF0, 0x3AF0, 0x46B2, 0x3AF2, 0x3AF2, 0x464C,
+ 0x3AFB, 0x3AFB, 0x3AF2, 0x3B0E, 0x3B0E, 0x38E8, 0x3B19, 0x3B19, 0x46C5,
+ 0x3B22, 0x3B22, 0x464E, 0x3B2B, 0x3B2B, 0x4956, 0x3B39, 0x3B39, 0x474B,
+ 0x3B42, 0x3B42, 0x4650, 0x3B58, 0x3B58, 0x4652, 0x3B60, 0x3B60, 0x393A,
+ 0x3B71, 0x3B71, 0x4656, 0x3B72, 0x3B72, 0x4655, 0x3B7B, 0x3B7B, 0x4657,
+ 0x3B7C, 0x3B7C, 0x385A, 0x3B80, 0x3B80, 0x41E2, 0x3B96, 0x3B96, 0x3A9C,
+ 0x3B99, 0x3B99, 0x3A98, 0x3BA1, 0x3BA1, 0x41E9, 0x3BBC, 0x3BBC, 0x43C8,
+ 0x3BBE, 0x3BBE, 0x3DB1, 0x3BC2, 0x3BC2, 0x4134, 0x3BC4, 0x3BC4, 0x3AA0,
+ 0x3BD7, 0x3BD7, 0x3AAC, 0x3BDD, 0x3BDD, 0x465F, 0x3BEC, 0x3BEC, 0x4664,
+ 0x3BF2, 0x3BF2, 0x4666, 0x3BF3, 0x3BF3, 0x41F3, 0x3BF4, 0x3BF4, 0x3A6E,
+ 0x3C0D, 0x3C0D, 0x41F7, 0x3C11, 0x3C11, 0x3E40, 0x3C15, 0x3C15, 0x3998,
+ 0x3C54, 0x3C54, 0x3E00, 0x3CCB, 0x3CCB, 0x4670, 0x3CCD, 0x3CCD, 0x3CE5,
+ 0x3CD1, 0x3CD1, 0x4003, 0x3CD6, 0x3CD6, 0x3CF7, 0x3CDC, 0x3CDC, 0x404E,
+ 0x3CEB, 0x3CEB, 0x4217, 0x3CEF, 0x3CEF, 0x4675, 0x3D13, 0x3D13, 0x3773,
+ 0x3D1D, 0x3D1D, 0x393C, 0x3D32, 0x3D32, 0x4957, 0x3D3B, 0x3D3B, 0x4245,
+ 0x3D46, 0x3D46, 0x4685, 0x3D4C, 0x3D4C, 0x3CEB, 0x3D4E, 0x3D4E, 0x4242,
+ 0x3D51, 0x3D51, 0x38EA, 0x3D5F, 0x3D5F, 0x4159, 0x3D62, 0x3D62, 0x3C5E,
+ 0x3D69, 0x3D69, 0x3CEA, 0x3D6A, 0x3D6A, 0x4689, 0x3D6F, 0x3D6F, 0x3CFC,
+ 0x3D75, 0x3D75, 0x468A, 0x3D7D, 0x3D7D, 0x3C2F, 0x3D85, 0x3D85, 0x494B,
+ 0x3D8A, 0x3D8A, 0x468D, 0x3D8F, 0x3D8F, 0x3ABD, 0x3D91, 0x3D91, 0x468F,
+ 0x3DA5, 0x3DA5, 0x3D56, 0x3DAD, 0x3DAD, 0x4699, 0x3DB4, 0x3DB4, 0x40A6,
+ 0x3DBF, 0x3DBF, 0x37D0, 0x3DC6, 0x3DC6, 0x48DE, 0x3DC7, 0x3DC7, 0x4164,
+ 0x3DCC, 0x3DCC, 0x3D6F, 0x3DCD, 0x3DCD, 0x3AF3, 0x3DD3, 0x3DD3, 0x37E1,
+ 0x3DDB, 0x3DDB, 0x3FFF, 0x3DE7, 0x3DE7, 0x3999, 0x3DE8, 0x3DE8, 0x425D,
+ 0x3DEB, 0x3DEB, 0x3E5A, 0x3DF3, 0x3DF3, 0x46D4, 0x3DF7, 0x3DF7, 0x48AB,
+ 0x3DFC, 0x3DFC, 0x462B, 0x3DFD, 0x3DFD, 0x3C14, 0x3E06, 0x3E06, 0x491D,
+ 0x3E40, 0x3E40, 0x4169, 0x3E43, 0x3E43, 0x436D, 0x3E48, 0x3E48, 0x4595,
+ 0x3E55, 0x3E55, 0x427F, 0x3E74, 0x3E74, 0x3EE2, 0x3EA8, 0x3EA8, 0x4304,
+ 0x3EA9, 0x3EA9, 0x46ED, 0x3EAA, 0x3EAA, 0x4075, 0x3EAD, 0x3EAD, 0x3B9D,
+ 0x3EB1, 0x3EB1, 0x3AD8, 0x3EB8, 0x3EB8, 0x3A4B, 0x3EBF, 0x3EBF, 0x3B0B,
+ 0x3EC2, 0x3EC2, 0x3BD8, 0x3EC7, 0x3EC7, 0x3975, 0x3ECA, 0x3ECA, 0x46F1,
+ 0x3ECC, 0x3ECC, 0x3BE2, 0x3ED0, 0x3ED0, 0x3854, 0x3ED1, 0x3ED1, 0x46F2,
+ 0x3ED6, 0x3ED6, 0x3CAD, 0x3ED7, 0x3ED7, 0x429F, 0x3EDA, 0x3EDA, 0x3D02,
+ 0x3EDE, 0x3EDE, 0x39F2, 0x3EE1, 0x3EE1, 0x3CA8, 0x3EE2, 0x3EE2, 0x46F6,
+ 0x3EE7, 0x3EE7, 0x3BDC, 0x3EE9, 0x3EE9, 0x3CA4, 0x3EEB, 0x3EEB, 0x396A,
+ 0x3EF0, 0x3EF0, 0x46F7, 0x3EF3, 0x3EF3, 0x3ADD, 0x3EF4, 0x3EF4, 0x46F8,
+ 0x3EFA, 0x3EFA, 0x46F9, 0x3EFC, 0x3EFC, 0x3BE8, 0x3EFF, 0x3EFF, 0x3AF5,
+ 0x3F00, 0x3F00, 0x3C0D, 0x3F04, 0x3F04, 0x42C3, 0x3F06, 0x3F06, 0x3AD7,
+ 0x3F0E, 0x3F0E, 0x46FB, 0x3F53, 0x3F53, 0x46FC, 0x3F58, 0x3F58, 0x3AE9,
+ 0x3F59, 0x3F59, 0x4089, 0x3F63, 0x3F63, 0x3AE6, 0x3F7C, 0x3F7C, 0x4700,
+ 0x3F93, 0x3F93, 0x45CD, 0x3FC0, 0x3FC0, 0x43CF, 0x3FD7, 0x3FD7, 0x43D1,
+ 0x3FDC, 0x3FDC, 0x4704, 0x3FE5, 0x3FE5, 0x46DF, 0x3FED, 0x3FED, 0x4335,
+ 0x3FF9, 0x3FF9, 0x45D7, 0x3FFA, 0x3FFA, 0x4354, 0x4004, 0x4004, 0x410E,
+ 0x401D, 0x401D, 0x4709, 0x4039, 0x4039, 0x470B, 0x4045, 0x4045, 0x470C,
+ 0x4053, 0x4053, 0x45B6, 0x4057, 0x4057, 0x399D, 0x4062, 0x4062, 0x3BCB,
+ 0x4065, 0x4065, 0x3FD3, 0x406A, 0x406A, 0x470F, 0x406F, 0x406F, 0x4710,
+ 0x40A8, 0x40A8, 0x43D5, 0x40BB, 0x40BB, 0x45C0, 0x40BF, 0x40BF, 0x3EEC,
+ 0x40C8, 0x40C8, 0x3B0E, 0x40D8, 0x40D8, 0x41AB, 0x40DF, 0x40DF, 0x3E17,
+ 0x40FA, 0x40FA, 0x3EBE, 0x4103, 0x4103, 0x43D7, 0x4104, 0x4104, 0x425C,
+ 0x4109, 0x4109, 0x471C, 0x410E, 0x410E, 0x3B1B, 0x4132, 0x4132, 0x3B25,
+ 0x4167, 0x4167, 0x471F, 0x416C, 0x416C, 0x38AE, 0x416E, 0x416E, 0x3B23,
+ 0x417F, 0x417F, 0x3B82, 0x4190, 0x4190, 0x46C0, 0x41B2, 0x41B2, 0x4720,
+ 0x41C4, 0x41C4, 0x4723, 0x41CA, 0x41CA, 0x373F, 0x41CF, 0x41CF, 0x4726,
+ 0x41DB, 0x41DB, 0x37BF, 0x41EF, 0x41EF, 0x3743, 0x41F9, 0x41F9, 0x3B3E,
+ 0x4211, 0x4211, 0x3B41, 0x4240, 0x4240, 0x37F1, 0x4260, 0x4260, 0x472B,
+ 0x426A, 0x426A, 0x3B55, 0x427A, 0x427A, 0x472C, 0x428C, 0x428C, 0x472F,
+ 0x4294, 0x4294, 0x4731, 0x42B5, 0x42B5, 0x4010, 0x42B9, 0x42B9, 0x38A6,
+ 0x42BC, 0x42BC, 0x3C8A, 0x42F4, 0x42F4, 0x3BB9, 0x42FB, 0x42FB, 0x3CEE,
+ 0x42FC, 0x42FC, 0x41E6, 0x432B, 0x432B, 0x377D, 0x436E, 0x436E, 0x46CA,
+ 0x4397, 0x4397, 0x473B, 0x43BA, 0x43BA, 0x435F, 0x43C1, 0x43C1, 0x4695,
+ 0x43D9, 0x43D9, 0x433E, 0x43DF, 0x43DF, 0x3E49, 0x43ED, 0x43ED, 0x4745,
+ 0x43F2, 0x43F2, 0x3E48, 0x4401, 0x4401, 0x474A, 0x4402, 0x4402, 0x3B73,
+ 0x4413, 0x4413, 0x474F, 0x4425, 0x4425, 0x4751, 0x442D, 0x442D, 0x4752,
+ 0x447A, 0x447A, 0x37AF, 0x448F, 0x448F, 0x4758, 0x449F, 0x449F, 0x3AE2,
+ 0x44A0, 0x44A0, 0x37ED, 0x44A2, 0x44A2, 0x4079, 0x44B0, 0x44B0, 0x475C,
+ 0x44B7, 0x44B7, 0x3FA1, 0x44C0, 0x44C0, 0x3C07, 0x44C5, 0x44C5, 0x4210,
+ 0x44CE, 0x44CE, 0x3D23, 0x44DD, 0x44DD, 0x39DD, 0x44DF, 0x44DF, 0x3D22,
+ 0x44E4, 0x44E4, 0x37E2, 0x44E9, 0x44E9, 0x41CF, 0x44EA, 0x44EA, 0x3B71,
+ 0x44EB, 0x44EB, 0x3CF2, 0x44EC, 0x44EC, 0x3EB4, 0x44F4, 0x44F4, 0x3992,
+ 0x4503, 0x4503, 0x469F, 0x4504, 0x4504, 0x4763, 0x4509, 0x4509, 0x3E50,
+ 0x450B, 0x450B, 0x37D4, 0x4516, 0x4516, 0x37F9, 0x451D, 0x451D, 0x3767,
+ 0x4527, 0x4527, 0x37F7, 0x452E, 0x452E, 0x3CD3, 0x4533, 0x4533, 0x3C51,
+ 0x453B, 0x453B, 0x476A, 0x453D, 0x453D, 0x38C4, 0x453F, 0x453F, 0x3E12,
+ 0x4543, 0x4543, 0x37F3, 0x4551, 0x4551, 0x3AE4, 0x4552, 0x4552, 0x40B3,
+ 0x4555, 0x4555, 0x423E, 0x455C, 0x455C, 0x378B, 0x4562, 0x4562, 0x4940,
+ 0x456A, 0x456A, 0x3804, 0x4577, 0x4577, 0x476E, 0x4585, 0x4585, 0x38C5,
+ 0x45E9, 0x45E9, 0x3EE4, 0x4606, 0x4606, 0x4773, 0x460F, 0x460F, 0x3815,
+ 0x4615, 0x4615, 0x3843, 0x4617, 0x4617, 0x4774, 0x465B, 0x465B, 0x381D,
+ 0x467A, 0x467A, 0x39E9, 0x4680, 0x4680, 0x3D01, 0x46CF, 0x46CF, 0x3BA0,
+ 0x46D0, 0x46D0, 0x3DFA, 0x46F5, 0x46F5, 0x3B9F, 0x4713, 0x4713, 0x3833,
+ 0x4718, 0x4718, 0x3DC7, 0x474E, 0x474E, 0x3EBC, 0x477C, 0x477C, 0x3DCD,
+ 0x4798, 0x4798, 0x4781, 0x47A6, 0x47A6, 0x40A3, 0x47B6, 0x47B6, 0x3EEA,
+ 0x47D5, 0x47D5, 0x431A, 0x47ED, 0x47ED, 0x4783, 0x47F4, 0x47F4, 0x432F,
+ 0x4800, 0x4800, 0x461E, 0x480B, 0x480B, 0x4352, 0x4837, 0x4837, 0x4787,
+ 0x485D, 0x485D, 0x410F, 0x4871, 0x4871, 0x3D03, 0x489B, 0x489B, 0x3BBD,
+ 0x48AD, 0x48AD, 0x4791, 0x48AE, 0x48AE, 0x494D, 0x48D0, 0x48D0, 0x3DA7,
+ 0x48DD, 0x48DD, 0x4120, 0x48ED, 0x48ED, 0x4288, 0x48F3, 0x48F3, 0x3EC1,
+ 0x48FA, 0x48FA, 0x3E44, 0x4906, 0x4906, 0x3BC7, 0x4911, 0x4911, 0x4584,
+ 0x491E, 0x491E, 0x4794, 0x4925, 0x4925, 0x3C0F, 0x492A, 0x492A, 0x46AE,
+ 0x492D, 0x492D, 0x46CD, 0x4935, 0x4935, 0x3CC3, 0x493C, 0x493C, 0x3BF8,
+ 0x493E, 0x493E, 0x3D06, 0x4945, 0x4945, 0x47A3, 0x4951, 0x4951, 0x47A4,
+ 0x4953, 0x4953, 0x42AD, 0x4965, 0x4965, 0x3899, 0x496A, 0x496A, 0x47A9,
+ 0x4972, 0x4972, 0x3A24, 0x4989, 0x4989, 0x379B, 0x49A1, 0x49A1, 0x38B7,
+ 0x49A7, 0x49A7, 0x47AE, 0x49DF, 0x49DF, 0x38AA, 0x49E5, 0x49E5, 0x47B1,
+ 0x49E7, 0x49E7, 0x4621, 0x4A0F, 0x4A0F, 0x38C3, 0x4A1D, 0x4A1D, 0x3BEC,
+ 0x4A24, 0x4A24, 0x47B2, 0x4A35, 0x4A35, 0x47B4, 0x4A96, 0x4A96, 0x3CE7,
+ 0x4AB4, 0x4AB4, 0x4361, 0x4AB8, 0x4AB8, 0x3DA8, 0x4AD1, 0x4AD1, 0x38E3,
+ 0x4AE4, 0x4AE4, 0x47B7, 0x4AFF, 0x4AFF, 0x38F2, 0x4B19, 0x4B19, 0x47B9,
+ 0x4B2C, 0x4B2C, 0x461F, 0x4B37, 0x4B37, 0x41A9, 0x4B6F, 0x4B6F, 0x3C16,
+ 0x4B70, 0x4B70, 0x47C0, 0x4B72, 0x4B72, 0x38FC, 0x4B7B, 0x4B7B, 0x3C8D,
+ 0x4B7E, 0x4B7E, 0x400A, 0x4B8E, 0x4B8E, 0x39F7, 0x4B90, 0x4B90, 0x3C20,
+ 0x4B93, 0x4B93, 0x3A8C, 0x4B96, 0x4B96, 0x3942, 0x4B97, 0x4B97, 0x3C24,
+ 0x4B9D, 0x4B9D, 0x47C2, 0x4BBD, 0x4BBD, 0x3C23, 0x4BBE, 0x4BBE, 0x3954,
+ 0x4BC0, 0x4BC0, 0x3DDC, 0x4C04, 0x4C04, 0x3FBB, 0x4C07, 0x4C07, 0x3FB7,
+ 0x4C0E, 0x4C0E, 0x390C, 0x4C3B, 0x4C3B, 0x3F3C, 0x4C3E, 0x4C3E, 0x457B,
+ 0x4C5B, 0x4C5B, 0x3ED9, 0x4C6D, 0x4C6D, 0x47C9, 0x4C7D, 0x4C7D, 0x3E66,
+ 0x4CA4, 0x4CA4, 0x48BE, 0x4CAE, 0x4CAE, 0x3C42, 0x4CB0, 0x4CB0, 0x3C45,
+ 0x4CB7, 0x4CB7, 0x3E21, 0x4CCD, 0x4CCD, 0x4578, 0x4CE1, 0x4CE1, 0x3EF3,
+ 0x4CED, 0x4CED, 0x40AB, 0x4D09, 0x4D09, 0x3ED6, 0x4D10, 0x4D10, 0x4117,
+ 0x4D34, 0x4D34, 0x3935, 0x4D91, 0x4D91, 0x43F5, 0x4D9C, 0x4D9C, 0x48C4,
+ 0x4E00, 0x4E00, 0x0253, 0x4E01, 0x4E01, 0x0255, 0x4E03, 0x4E03, 0x0256,
+ 0x4E04, 0x4E04, 0x48FE, 0x4E07, 0x4E07, 0x1771, 0x4E08, 0x4E08, 0x0269,
+ 0x4E09, 0x4E09, 0x0267, 0x4E0A, 0x4E0A, 0x026A, 0x4E0B, 0x4E0B, 0x0268,
+ 0x4E0C, 0x4E0C, 0x1772, 0x4E0D, 0x4E0D, 0x0294, 0x4E0E, 0x4E0E, 0x177A,
+ 0x4E0F, 0x4E0F, 0x1778, 0x4E10, 0x4E10, 0x0293, 0x4E11, 0x4E11, 0x0292,
+ 0x4E14, 0x4E14, 0x02F2, 0x4E15, 0x4E15, 0x02F1, 0x4E16, 0x4E16, 0x02F0,
+ 0x4E18, 0x4E18, 0x02F3, 0x4E19, 0x4E19, 0x02EF, 0x4E1A, 0x4E1A, 0x48FD,
+ 0x4E1C, 0x4E1C, 0x48E0, 0x4E1E, 0x4E1F, 0x036E, 0x4E21, 0x4E21, 0x3D6D,
+ 0x4E24, 0x4E24, 0x458D, 0x4E26, 0x4E26, 0x0528, 0x4E28, 0x4E28, 0x0218,
+ 0x4E2A, 0x4E2A, 0x3F57, 0x4E2B, 0x4E2B, 0x026B, 0x4E2C, 0x4E2C, 0x44F3,
+ 0x4E2D, 0x4E2D, 0x0295, 0x4E2E, 0x4E2E, 0x177B, 0x4E30, 0x4E30, 0x0296,
+ 0x4E31, 0x4E31, 0x178E, 0x4E32, 0x4E32, 0x0415, 0x4E33, 0x4E33, 0x18F4,
+ 0x4E36, 0x4E36, 0x0219, 0x4E37, 0x4E37, 0x4517, 0x4E38, 0x4E38, 0x026C,
+ 0x4E39, 0x4E39, 0x0297, 0x4E3B, 0x4E3B, 0x02F4, 0x4E3C, 0x4E3C, 0x178F,
+ 0x4E3D, 0x4E3D, 0x4537, 0x4E3F, 0x4E3F, 0x021A, 0x4E41, 0x4E41, 0x36AF,
+ 0x4E42, 0x4E42, 0x176C, 0x4E43, 0x4E43, 0x0257, 0x4E45, 0x4E45, 0x026E,
+ 0x4E47, 0x4E47, 0x1773, 0x4E48, 0x4E48, 0x026F, 0x4E49, 0x4E49, 0x408E,
+ 0x4E4B, 0x4E4B, 0x0298, 0x4E4D, 0x4E4D, 0x02F5, 0x4E4E, 0x4E4E, 0x02F7,
+ 0x4E4F, 0x4E4F, 0x02F6, 0x4E52, 0x4E53, 0x0370, 0x4E56, 0x4E56, 0x0529,
+ 0x4E58, 0x4E58, 0x0831, 0x4E59, 0x4E59, 0x0254, 0x4E5A, 0x4E5A, 0x36B1,
+ 0x4E5B, 0x4E5B, 0x44E5, 0x4E5C, 0x4E5C, 0x176D, 0x4E5D, 0x4E5D, 0x0258,
+ 0x4E5E, 0x4E5E, 0x0271, 0x4E5F, 0x4E5F, 0x0270, 0x4E69, 0x4E69, 0x0372,
+ 0x4E6A, 0x4E6A, 0x3DE5, 0x4E73, 0x4E73, 0x052A, 0x4E78, 0x4E78, 0x3D8E,
+ 0x4E7E, 0x4E7E, 0x09FB, 0x4E7F, 0x4E7F, 0x1E35, 0x4E80, 0x4E80, 0x458E,
+ 0x4E81, 0x4E81, 0x43BC, 0x4E82, 0x4E82, 0x0DBE, 0x4E83, 0x4E84, 0x2361,
+ 0x4E85, 0x4E85, 0x021B, 0x4E86, 0x4E86, 0x0259, 0x4E87, 0x4E87, 0x458F,
+ 0x4E88, 0x4E88, 0x029A, 0x4E89, 0x4E89, 0x459C, 0x4E8B, 0x4E8B, 0x052B,
+ 0x4E8C, 0x4E8C, 0x025A, 0x4E8D, 0x4E8D, 0x1774, 0x4E8E, 0x4E8E, 0x0272,
+ 0x4E91, 0x4E91, 0x029B, 0x4E92, 0x4E92, 0x029D, 0x4E93, 0x4E93, 0x177C,
+ 0x4E94, 0x4E94, 0x029E, 0x4E95, 0x4E95, 0x029C, 0x4E98, 0x4E98, 0x39C4,
+ 0x4E99, 0x4E99, 0x0373, 0x4E9A, 0x4E9A, 0x48D5, 0x4E9B, 0x4E9B, 0x052C,
+ 0x4E9E, 0x4E9E, 0x052D, 0x4E9F, 0x4E9F, 0x06A3, 0x4EA0, 0x4EA0, 0x021C,
+ 0x4EA1, 0x4EA1, 0x0273, 0x4EA2, 0x4EA2, 0x029F, 0x4EA4, 0x4EA4, 0x0374,
+ 0x4EA5, 0x4EA5, 0x0376, 0x4EA6, 0x4EA6, 0x0375, 0x4EA8, 0x4EA8, 0x0416,
+ 0x4EAB, 0x4EAC, 0x052E, 0x4EAD, 0x4EAE, 0x06A4, 0x4EB3, 0x4EB3, 0x0832,
+ 0x4EB6, 0x4EB6, 0x2363, 0x4EB7, 0x4EB7, 0x413C, 0x4EB9, 0x4EB9, 0x3377,
+ 0x4EBA, 0x4EBA, 0x025B, 0x4EBB, 0x4EBB, 0x44E6, 0x4EBC, 0x4EBC, 0x39B1,
+ 0x4EBF, 0x4EBF, 0x4590, 0x4EC0, 0x4EC0, 0x02A1, 0x4EC1, 0x4EC1, 0x02A0,
+ 0x4EC2, 0x4EC2, 0x177D, 0x4EC3, 0x4EC3, 0x02A2, 0x4EC4, 0x4EC4, 0x02A8,
+ 0x4EC6, 0x4EC7, 0x02A3, 0x4EC8, 0x4EC8, 0x177F, 0x4EC9, 0x4EC9, 0x177E,
+ 0x4ECA, 0x4ECB, 0x02A6, 0x4ECD, 0x4ECD, 0x02A5, 0x4ECE, 0x4ECE, 0x3F62,
+ 0x4ED4, 0x4ED7, 0x02FA, 0x4ED8, 0x4ED8, 0x02F9, 0x4ED9, 0x4ED9, 0x0300,
+ 0x4EDA, 0x4EDA, 0x1795, 0x4EDC, 0x4EDC, 0x1791, 0x4EDD, 0x4EDD, 0x1794,
+ 0x4EDE, 0x4EDE, 0x0301, 0x4EDF, 0x4EDF, 0x0311, 0x4EE1, 0x4EE1, 0x1793,
+ 0x4EE3, 0x4EE4, 0x02FE, 0x4EE5, 0x4EE5, 0x02F8, 0x4EE8, 0x4EE8, 0x1790,
+ 0x4EE9, 0x4EE9, 0x1792, 0x4EEA, 0x4EEA, 0x48CB, 0x4EEB, 0x4EEB, 0x4591,
+ 0x4EEE, 0x4EEE, 0x3D76, 0x4EF0, 0x4EF0, 0x0383, 0x4EF1, 0x4EF1, 0x17BA,
+ 0x4EF2, 0x4EF2, 0x0380, 0x4EF3, 0x4EF3, 0x0384, 0x4EF4, 0x4EF4, 0x17C4,
+ 0x4EF5, 0x4EF5, 0x17B8, 0x4EF6, 0x4EF6, 0x0381, 0x4EF7, 0x4EF7, 0x17BC,
+ 0x4EF8, 0x4EF8, 0x39AD, 0x4EFB, 0x4EFB, 0x0382, 0x4EFD, 0x4EFD, 0x0385,
+ 0x4EFF, 0x4EFF, 0x0377, 0x4F00, 0x4F00, 0x17BB, 0x4F01, 0x4F01, 0x0386,
+ 0x4F02, 0x4F02, 0x17BF, 0x4F03, 0x4F03, 0x39C8, 0x4F04, 0x4F04, 0x17C3,
+ 0x4F05, 0x4F05, 0x17C0, 0x4F08, 0x4F08, 0x17BD, 0x4F09, 0x4F09, 0x0378,
+ 0x4F0A, 0x4F0A, 0x037A, 0x4F0B, 0x4F0B, 0x0387, 0x4F0D, 0x4F0D, 0x037C,
+ 0x4F0E, 0x4F0E, 0x17B5, 0x4F0F, 0x4F0F, 0x037F, 0x4F10, 0x4F11, 0x037D,
+ 0x4F12, 0x4F12, 0x17C5, 0x4F13, 0x4F13, 0x17C2, 0x4F14, 0x4F14, 0x17B9,
+ 0x4F15, 0x4F15, 0x037B, 0x4F18, 0x4F18, 0x17B6, 0x4F19, 0x4F19, 0x0379,
+ 0x4F1A, 0x4F1A, 0x453C, 0x4F1D, 0x4F1D, 0x17BE, 0x4F22, 0x4F22, 0x17C1,
+ 0x4F28, 0x4F28, 0x453D, 0x4F29, 0x4F29, 0x39BE, 0x4F2C, 0x4F2C, 0x17B7,
+ 0x4F2D, 0x4F2D, 0x182F, 0x4F2F, 0x4F2F, 0x042C, 0x4F30, 0x4F30, 0x041F,
+ 0x4F32, 0x4F32, 0x393D, 0x4F33, 0x4F33, 0x1830, 0x4F34, 0x4F34, 0x041C,
+ 0x4F36, 0x4F36, 0x042E, 0x4F37, 0x4F37, 0x4592, 0x4F38, 0x4F38, 0x0424,
+ 0x4F39, 0x4F39, 0x3F65, 0x4F3A, 0x4F3A, 0x0423, 0x4F3B, 0x4F3B, 0x1824,
+ 0x4F3C, 0x4F3C, 0x0427, 0x4F3D, 0x4F3D, 0x0422, 0x4F3E, 0x4F3E, 0x1829,
+ 0x4F3F, 0x4F3F, 0x1831, 0x4F41, 0x4F41, 0x182D, 0x4F42, 0x4F42, 0x39CB,
+ 0x4F43, 0x4F43, 0x0425, 0x4F45, 0x4F45, 0x3B8F, 0x4F46, 0x4F46, 0x0428,
+ 0x4F47, 0x4F47, 0x0419, 0x4F48, 0x4F48, 0x0431, 0x4F49, 0x4F49, 0x1826,
+ 0x4F4B, 0x4F4B, 0x39B4, 0x4F4C, 0x4F4C, 0x1900, 0x4F4D, 0x4F4D, 0x0417,
+ 0x4F4E, 0x4F4E, 0x042D, 0x4F4F, 0x4F4F, 0x0418, 0x4F50, 0x4F51, 0x0420,
+ 0x4F52, 0x4F52, 0x182B, 0x4F53, 0x4F53, 0x1827, 0x4F54, 0x4F54, 0x0426,
+ 0x4F55, 0x4F55, 0x041E, 0x4F56, 0x4F56, 0x1823, 0x4F57, 0x4F57, 0x041A,
+ 0x4F58, 0x4F58, 0x182E, 0x4F59, 0x4F59, 0x042F, 0x4F5A, 0x4F5A, 0x0432,
+ 0x4F5B, 0x4F5B, 0x041D, 0x4F5C, 0x4F5C, 0x042A, 0x4F5D, 0x4F5D, 0x0430,
+ 0x4F5E, 0x4F5E, 0x041B, 0x4F5F, 0x4F5F, 0x182C, 0x4F60, 0x4F60, 0x042B,
+ 0x4F61, 0x4F61, 0x1832, 0x4F62, 0x4F62, 0x1825, 0x4F63, 0x4F63, 0x0429,
+ 0x4F64, 0x4F64, 0x1828, 0x4F67, 0x4F67, 0x182A, 0x4F69, 0x4F69, 0x053D,
+ 0x4F6A, 0x4F6A, 0x1902, 0x4F6B, 0x4F6B, 0x190E, 0x4F6C, 0x4F6C, 0x0535,
+ 0x4F6E, 0x4F6E, 0x190F, 0x4F6F, 0x4F6F, 0x0530, 0x4F70, 0x4F70, 0x053A,
+ 0x4F72, 0x4F72, 0x3C72, 0x4F73, 0x4F73, 0x0533, 0x4F74, 0x4F74, 0x18FC,
+ 0x4F75, 0x4F75, 0x053B, 0x4F76, 0x4F76, 0x18FB, 0x4F77, 0x4F77, 0x18FF,
+ 0x4F78, 0x4F78, 0x1906, 0x4F79, 0x4F79, 0x1904, 0x4F7A, 0x4F7A, 0x0543,
+ 0x4F7B, 0x4F7B, 0x053E, 0x4F7C, 0x4F7C, 0x18F6, 0x4F7D, 0x4F7D, 0x18F8,
+ 0x4F7E, 0x4F7E, 0x0540, 0x4F7F, 0x4F7F, 0x0534, 0x4F80, 0x4F80, 0x18F9,
+ 0x4F81, 0x4F81, 0x1905, 0x4F82, 0x4F82, 0x190C, 0x4F83, 0x4F83, 0x0539,
+ 0x4F84, 0x4F84, 0x18FE, 0x4F85, 0x4F85, 0x18F7, 0x4F86, 0x4F86, 0x0538,
+ 0x4F87, 0x4F87, 0x18FA, 0x4F88, 0x4F88, 0x053C, 0x4F89, 0x4F89, 0x18FD,
+ 0x4F8A, 0x4F8A, 0x39B5, 0x4F8B, 0x4F8B, 0x0537, 0x4F8D, 0x4F8D, 0x0532,
+ 0x4F8F, 0x4F8F, 0x0541, 0x4F90, 0x4F90, 0x1907, 0x4F91, 0x4F91, 0x0542,
+ 0x4F92, 0x4F92, 0x190B, 0x4F94, 0x4F94, 0x1909, 0x4F95, 0x4F95, 0x190D,
+ 0x4F96, 0x4F96, 0x053F, 0x4F97, 0x4F97, 0x1901, 0x4F98, 0x4F98, 0x18F5,
+ 0x4F9A, 0x4F9A, 0x1903, 0x4F9B, 0x4F9B, 0x0536, 0x4F9C, 0x4F9C, 0x1908,
+ 0x4F9D, 0x4F9D, 0x0531, 0x4F9E, 0x4F9E, 0x190A, 0x4FA2, 0x4FA2, 0x39C7,
+ 0x4FA8, 0x4FA8, 0x453E, 0x4FAB, 0x4FAB, 0x4022, 0x4FAE, 0x4FAE, 0x06B4,
+ 0x4FAF, 0x4FAF, 0x06A8, 0x4FB0, 0x4FB0, 0x3D4A, 0x4FB2, 0x4FB2, 0x1A5D,
+ 0x4FB3, 0x4FB3, 0x1A65, 0x4FB5, 0x4FB5, 0x06A7, 0x4FB6, 0x4FB6, 0x06AF,
+ 0x4FB7, 0x4FB7, 0x06BB, 0x4FB9, 0x4FB9, 0x1A6B, 0x4FBA, 0x4FBA, 0x1A69,
+ 0x4FBB, 0x4FBB, 0x1A64, 0x4FBD, 0x4FBD, 0x4594, 0x4FBF, 0x4FBF, 0x06A9,
+ 0x4FC0, 0x4FC0, 0x1A6A, 0x4FC1, 0x4FC1, 0x1A60, 0x4FC2, 0x4FC2, 0x06B7,
+ 0x4FC3, 0x4FC3, 0x06AE, 0x4FC4, 0x4FC4, 0x06B6, 0x4FC5, 0x4FC5, 0x1A5B,
+ 0x4FC7, 0x4FC7, 0x1A67, 0x4FC8, 0x4FC8, 0x46E8, 0x4FC9, 0x4FC9, 0x1A5E,
+ 0x4FCA, 0x4FCA, 0x06B2, 0x4FCB, 0x4FCB, 0x1A5F, 0x4FCC, 0x4FCC, 0x39CF,
+ 0x4FCD, 0x4FCD, 0x1A5A, 0x4FCE, 0x4FCE, 0x06B9, 0x4FCF, 0x4FCF, 0x06AC,
+ 0x4FD0, 0x4FD0, 0x06B5, 0x4FD1, 0x4FD1, 0x06AB, 0x4FD3, 0x4FD3, 0x1A5C,
+ 0x4FD4, 0x4FD4, 0x1A61, 0x4FD6, 0x4FD6, 0x1A68, 0x4FD7, 0x4FD7, 0x06B3,
+ 0x4FD8, 0x4FD8, 0x06B0, 0x4FD9, 0x4FD9, 0x1A63, 0x4FDA, 0x4FDA, 0x06B8,
+ 0x4FDB, 0x4FDB, 0x1A66, 0x4FDC, 0x4FDC, 0x1A62, 0x4FDD, 0x4FDD, 0x06AD,
+ 0x4FDE, 0x4FDE, 0x06BA, 0x4FDF, 0x4FDF, 0x06B1, 0x4FE0, 0x4FE0, 0x06AA,
+ 0x4FE1, 0x4FE1, 0x06A6, 0x4FE4, 0x4FE4, 0x3C66, 0x4FE5, 0x4FE5, 0x39D0,
+ 0x4FEC, 0x4FEC, 0x1A6C, 0x4FEE, 0x4FEE, 0x084C, 0x4FEF, 0x4FEF, 0x0836,
+ 0x4FF1, 0x4FF1, 0x0846, 0x4FF2, 0x4FF2, 0x3F28, 0x4FF3, 0x4FF3, 0x084B,
+ 0x4FF4, 0x4FF4, 0x1C24, 0x4FF5, 0x4FF5, 0x1C23, 0x4FF6, 0x4FF7, 0x1C28,
+ 0x4FF8, 0x4FF8, 0x0839, 0x4FF9, 0x4FF9, 0x37B3, 0x4FFA, 0x4FFA, 0x0842,
+ 0x4FFD, 0x4FFD, 0x3F26, 0x4FFE, 0x4FFE, 0x084F, 0x5000, 0x5000, 0x0843,
+ 0x5003, 0x5003, 0x4596, 0x5005, 0x5005, 0x1C1D, 0x5006, 0x5006, 0x083C,
+ 0x5007, 0x5007, 0x1C1E, 0x5008, 0x5008, 0x4024, 0x5009, 0x5009, 0x0851,
+ 0x500B, 0x500B, 0x0848, 0x500C, 0x500D, 0x0833, 0x500E, 0x500E, 0x1C31,
+ 0x500F, 0x500F, 0x0A0C, 0x5011, 0x5011, 0x0841, 0x5012, 0x5012, 0x0840,
+ 0x5013, 0x5013, 0x1C1F, 0x5014, 0x5014, 0x0844, 0x5015, 0x5015, 0x1E45,
+ 0x5016, 0x5016, 0x083B, 0x5017, 0x5017, 0x1C2A, 0x5018, 0x5018, 0x084A,
+ 0x5019, 0x5019, 0x0849, 0x501A, 0x501A, 0x083F, 0x501B, 0x501B, 0x1C22,
+ 0x501C, 0x501C, 0x1C2B, 0x501E, 0x501E, 0x1C1C, 0x501F, 0x501F, 0x083E,
+ 0x5020, 0x5020, 0x1C2C, 0x5021, 0x5021, 0x0847, 0x5022, 0x5022, 0x1C20,
+ 0x5023, 0x5023, 0x0835, 0x5025, 0x5025, 0x0838, 0x5026, 0x5026, 0x0837,
+ 0x5027, 0x5027, 0x1C2D, 0x5028, 0x5028, 0x0845, 0x5029, 0x5029, 0x083A,
+ 0x502A, 0x502A, 0x084E, 0x502B, 0x502B, 0x0850, 0x502C, 0x502C, 0x1C27,
+ 0x502D, 0x502D, 0x084D, 0x502E, 0x502E, 0x39CC, 0x502F, 0x502F, 0x1C2F,
+ 0x5030, 0x5030, 0x1C21, 0x5031, 0x5031, 0x1C30, 0x5033, 0x5033, 0x1C25,
+ 0x5034, 0x5034, 0x3910, 0x5035, 0x5035, 0x1C2E, 0x5037, 0x5037, 0x1C26,
+ 0x503C, 0x503C, 0x083D, 0x5040, 0x5040, 0x1E4D, 0x5041, 0x5041, 0x1E41,
+ 0x5043, 0x5043, 0x0A00, 0x5045, 0x5045, 0x1E46, 0x5046, 0x5046, 0x1E4C,
+ 0x5047, 0x5047, 0x09FF, 0x5048, 0x5048, 0x1E3F, 0x5049, 0x5049, 0x0A03,
+ 0x504A, 0x504A, 0x1E43, 0x504B, 0x504B, 0x1E3C, 0x504C, 0x504C, 0x0A01,
+ 0x504D, 0x504D, 0x1E40, 0x504E, 0x504E, 0x0A06, 0x504F, 0x504F, 0x0A0B,
+ 0x5051, 0x5051, 0x1E51, 0x5053, 0x5053, 0x1E3B, 0x5055, 0x5055, 0x0A07,
+ 0x5056, 0x5056, 0x3F2C, 0x5057, 0x5057, 0x1E50, 0x5058, 0x5058, 0x39D1,
+ 0x505A, 0x505A, 0x0A02, 0x505B, 0x505B, 0x1E42, 0x505C, 0x505C, 0x09FE,
+ 0x505D, 0x505D, 0x1E3D, 0x505E, 0x505E, 0x1E39, 0x505F, 0x505F, 0x1E47,
+ 0x5060, 0x5060, 0x1E3A, 0x5061, 0x5061, 0x1E38, 0x5062, 0x5062, 0x1E44,
+ 0x5063, 0x5064, 0x1E4A, 0x5065, 0x5065, 0x0A04, 0x5066, 0x5066, 0x3DC9,
+ 0x5068, 0x5068, 0x20B8, 0x5069, 0x5069, 0x1E48, 0x506A, 0x506A, 0x1E37,
+ 0x506B, 0x506B, 0x1E49, 0x506C, 0x506C, 0x39CD, 0x506D, 0x506D, 0x0A0E,
+ 0x506E, 0x506E, 0x1E4E, 0x506F, 0x506F, 0x0A0D, 0x5070, 0x5070, 0x1E36,
+ 0x5072, 0x5072, 0x1E3E, 0x5073, 0x5073, 0x1E4F, 0x5074, 0x5074, 0x0A09,
+ 0x5075, 0x5075, 0x0A08, 0x5076, 0x5076, 0x0A05, 0x5077, 0x5077, 0x0A0A,
+ 0x507A, 0x507A, 0x09FC, 0x507D, 0x507D, 0x09FD, 0x5080, 0x5080, 0x0BEC,
+ 0x5081, 0x5081, 0x39CE, 0x5082, 0x5082, 0x20BB, 0x5083, 0x5083, 0x20B4,
+ 0x5085, 0x5085, 0x0BE9, 0x5087, 0x5087, 0x20BC, 0x5088, 0x5088, 0x439C,
+ 0x508B, 0x508B, 0x20B2, 0x508C, 0x508C, 0x20B5, 0x508D, 0x508D, 0x0BE8,
+ 0x508E, 0x508E, 0x20B6, 0x5090, 0x5090, 0x41EC, 0x5091, 0x5091, 0x0BEB,
+ 0x5092, 0x5092, 0x20BA, 0x5094, 0x5094, 0x20B0, 0x5095, 0x5095, 0x20AF,
+ 0x5096, 0x5096, 0x0BED, 0x5098, 0x5098, 0x0BEE, 0x5099, 0x5099, 0x0BEA,
+ 0x509A, 0x509A, 0x0BEF, 0x509B, 0x509B, 0x20AE, 0x509C, 0x509C, 0x20B9,
+ 0x509D, 0x509D, 0x20B7, 0x509E, 0x509E, 0x20B1, 0x50A2, 0x50A2, 0x0BE7,
+ 0x50A3, 0x50A3, 0x20B3, 0x50A6, 0x50A6, 0x3F3F, 0x50AC, 0x50AC, 0x0DC5,
+ 0x50AD, 0x50AD, 0x0DBF, 0x50AE, 0x50AE, 0x2367, 0x50AF, 0x50AF, 0x0DC8,
+ 0x50B0, 0x50B0, 0x236D, 0x50B1, 0x50B1, 0x2370, 0x50B2, 0x50B3, 0x0DC1,
+ 0x50B4, 0x50B4, 0x236A, 0x50B5, 0x50B5, 0x0DC0, 0x50B6, 0x50B6, 0x2373,
+ 0x50B7, 0x50B7, 0x0DC6, 0x50B8, 0x50B8, 0x2374, 0x50BA, 0x50BA, 0x236F,
+ 0x50BB, 0x50BB, 0x0DC7, 0x50BD, 0x50BD, 0x2364, 0x50BE, 0x50BE, 0x0DC4,
+ 0x50BF, 0x50BF, 0x2365, 0x50C1, 0x50C1, 0x236E, 0x50C2, 0x50C2, 0x236C,
+ 0x50C4, 0x50C4, 0x2368, 0x50C5, 0x50C5, 0x0DC3, 0x50C6, 0x50C6, 0x2366,
+ 0x50C7, 0x50C7, 0x0DC9, 0x50C8, 0x50C8, 0x236B, 0x50C9, 0x50C9, 0x2372,
+ 0x50CA, 0x50CA, 0x2369, 0x50CB, 0x50CB, 0x2371, 0x50CD, 0x50CD, 0x39C5,
+ 0x50CE, 0x50CE, 0x0F88, 0x50CF, 0x50CF, 0x0F85, 0x50D0, 0x50D0, 0x38D1,
+ 0x50D1, 0x50D1, 0x0F86, 0x50D3, 0x50D3, 0x261C, 0x50D4, 0x50D4, 0x2614,
+ 0x50D5, 0x50D5, 0x0F84, 0x50D6, 0x50D6, 0x0F81, 0x50D7, 0x50D7, 0x2615,
+ 0x50D9, 0x50D9, 0x3FCE, 0x50DA, 0x50DA, 0x0F83, 0x50DB, 0x50DB, 0x2618,
+ 0x50DD, 0x50DD, 0x261A, 0x50DE, 0x50DE, 0x4031, 0x50DF, 0x50DF, 0x3AFD,
+ 0x50E0, 0x50E0, 0x2621, 0x50E1, 0x50E1, 0x4171, 0x50E3, 0x50E3, 0x2620,
+ 0x50E4, 0x50E4, 0x261B, 0x50E5, 0x50E5, 0x0F80, 0x50E6, 0x50E6, 0x2613,
+ 0x50E7, 0x50E7, 0x0F7E, 0x50E8, 0x50E8, 0x2616, 0x50E9, 0x50E9, 0x0F89,
+ 0x50EA, 0x50EA, 0x2619, 0x50EC, 0x50EC, 0x261D, 0x50ED, 0x50ED, 0x0F82,
+ 0x50EE, 0x50EE, 0x0F7F, 0x50EF, 0x50EF, 0x261F, 0x50F0, 0x50F0, 0x261E,
+ 0x50F1, 0x50F1, 0x0F87, 0x50F3, 0x50F3, 0x2617, 0x50F4, 0x50F4, 0x3CE9,
+ 0x50F5, 0x50F5, 0x1105, 0x50F6, 0x50F6, 0x2883, 0x50F8, 0x50F8, 0x2880,
+ 0x50F9, 0x50F9, 0x1106, 0x50FB, 0x50FB, 0x1104, 0x50FC, 0x50FC, 0x39D2,
+ 0x50FD, 0x50FD, 0x2887, 0x50FE, 0x50FE, 0x2884, 0x50FF, 0x50FF, 0x287D,
+ 0x5100, 0x5100, 0x1103, 0x5101, 0x5101, 0x4032, 0x5102, 0x5102, 0x1107,
+ 0x5103, 0x5103, 0x287E, 0x5104, 0x5104, 0x1102, 0x5105, 0x5105, 0x110A,
+ 0x5106, 0x5107, 0x2881, 0x5108, 0x5109, 0x1108, 0x510A, 0x510A, 0x2888,
+ 0x510B, 0x510C, 0x2885, 0x510D, 0x510D, 0x39C6, 0x510E, 0x510E, 0x4034,
+ 0x5110, 0x5110, 0x128D, 0x5111, 0x5111, 0x2B04, 0x5112, 0x5112, 0x128A,
+ 0x5113, 0x5113, 0x2B01, 0x5114, 0x5114, 0x128C, 0x5115, 0x5115, 0x128E,
+ 0x5117, 0x5117, 0x2B02, 0x5118, 0x5118, 0x128B, 0x511A, 0x511A, 0x2B03,
+ 0x511C, 0x511C, 0x2B00, 0x511F, 0x511F, 0x13B5, 0x5120, 0x5120, 0x2D3E,
+ 0x5121, 0x5121, 0x13B6, 0x5122, 0x5122, 0x2D3C, 0x5124, 0x5124, 0x2D3D,
+ 0x5125, 0x5125, 0x2D3B, 0x5126, 0x5126, 0x2D3A, 0x5129, 0x5129, 0x2D3F,
+ 0x512A, 0x512A, 0x13B4, 0x512B, 0x512B, 0x39AE, 0x512D, 0x512E, 0x2F0F,
+ 0x5130, 0x5130, 0x287F, 0x5131, 0x5131, 0x2F0E, 0x5132, 0x5132, 0x13B7,
+ 0x5133, 0x5133, 0x1575, 0x5134, 0x5135, 0x307A, 0x5137, 0x5138, 0x1668,
+ 0x5139, 0x5139, 0x32C6, 0x513A, 0x513A, 0x32C5, 0x513B, 0x513B, 0x16BC,
+ 0x513C, 0x513C, 0x16BB, 0x513D, 0x513D, 0x340E, 0x513F, 0x513F, 0x025C,
+ 0x5140, 0x5140, 0x0274, 0x5141, 0x5141, 0x02AA, 0x5143, 0x5143, 0x02A9,
+ 0x5144, 0x5144, 0x0303, 0x5145, 0x5145, 0x0302, 0x5146, 0x5146, 0x038A,
+ 0x5147, 0x5147, 0x0389, 0x5148, 0x5148, 0x038B, 0x5149, 0x5149, 0x0388,
+ 0x514B, 0x514B, 0x0434, 0x514C, 0x514C, 0x0433, 0x514D, 0x514D, 0x0435,
+ 0x5152, 0x5152, 0x0545, 0x5154, 0x5154, 0x0544, 0x5155, 0x5155, 0x0546,
+ 0x5156, 0x5156, 0x439A, 0x5157, 0x5157, 0x06BC, 0x5159, 0x5159, 0x0119,
+ 0x515A, 0x515A, 0x1C32, 0x515B, 0x515B, 0x011A, 0x515C, 0x515C, 0x0A0F,
+ 0x515D, 0x515D, 0x011C, 0x515E, 0x515E, 0x011B, 0x515F, 0x515F, 0x20BD,
+ 0x5160, 0x5160, 0x403A, 0x5161, 0x5161, 0x011D, 0x5162, 0x5162, 0x0F8A,
+ 0x5163, 0x5163, 0x011E, 0x5165, 0x5165, 0x025D, 0x5167, 0x5167, 0x02AB,
+ 0x5168, 0x5168, 0x038C, 0x5169, 0x5169, 0x0547, 0x516A, 0x516A, 0x403C,
+ 0x516B, 0x516B, 0x025E, 0x516C, 0x516C, 0x02AE, 0x516D, 0x516E, 0x02AC,
+ 0x5171, 0x5171, 0x038D, 0x5174, 0x5174, 0x453F, 0x5175, 0x5175, 0x0436,
+ 0x5176, 0x5176, 0x0549, 0x5177, 0x5177, 0x0548, 0x5178, 0x5178, 0x054A,
+ 0x5179, 0x5179, 0x3ACE, 0x517C, 0x517C, 0x0852, 0x5180, 0x5180, 0x128F,
+ 0x5182, 0x5182, 0x021D, 0x5186, 0x5186, 0x439F, 0x5187, 0x5187, 0x1779,
+ 0x5188, 0x5188, 0x36B6, 0x5189, 0x518A, 0x0304, 0x518D, 0x518D, 0x038E,
+ 0x518F, 0x518F, 0x1833, 0x5191, 0x5191, 0x06BE, 0x5192, 0x5192, 0x06BD,
+ 0x5193, 0x5193, 0x1C34, 0x5194, 0x5194, 0x1C33, 0x5195, 0x5195, 0x0A10,
+ 0x5196, 0x5196, 0x021E, 0x5197, 0x5197, 0x02AF, 0x5198, 0x5198, 0x1780,
+ 0x519A, 0x519A, 0x3EA3, 0x519C, 0x519C, 0x4540, 0x519E, 0x519E, 0x1910,
+ 0x51A0, 0x51A0, 0x06BF, 0x51A2, 0x51A2, 0x0855, 0x51A4, 0x51A5, 0x0853,
+ 0x51A7, 0x51A7, 0x3EA6, 0x51A8, 0x51A8, 0x39DA, 0x51AA, 0x51AA, 0x1290,
+ 0x51AB, 0x51AB, 0x021F, 0x51AC, 0x51AC, 0x0306, 0x51B0, 0x51B0, 0x038F,
+ 0x51B1, 0x51B1, 0x17C6, 0x51B2, 0x51B2, 0x4048, 0x51B3, 0x51B3, 0x4051,
+ 0x51B4, 0x51B4, 0x3D7C, 0x51B5, 0x51B5, 0x4012, 0x51B6, 0x51B7, 0x0437,
+ 0x51B8, 0x51B8, 0x4049, 0x51B9, 0x51B9, 0x1834, 0x51BC, 0x51BC, 0x1911,
+ 0x51BD, 0x51BD, 0x054B, 0x51BE, 0x51BE, 0x1912, 0x51C3, 0x51C3, 0x39DB,
+ 0x51C4, 0x51C5, 0x1C36, 0x51C6, 0x51C6, 0x0858, 0x51C7, 0x51C7, 0x422A,
+ 0x51C8, 0x51C8, 0x1C38, 0x51C9, 0x51C9, 0x404B, 0x51CA, 0x51CA, 0x1C35,
+ 0x51CB, 0x51CB, 0x0859, 0x51CC, 0x51CC, 0x0857, 0x51CD, 0x51CD, 0x0856,
+ 0x51CE, 0x51CE, 0x1C39, 0x51CF, 0x51CF, 0x404C, 0x51D0, 0x51D0, 0x1E52,
+ 0x51D1, 0x51D1, 0x404D, 0x51D2, 0x51D2, 0x3DAD, 0x51D3, 0x51D3, 0x404F,
+ 0x51D4, 0x51D4, 0x20BE, 0x51D7, 0x51D7, 0x2375, 0x51D8, 0x51D8, 0x2622,
+ 0x51DB, 0x51DB, 0x459A, 0x51DC, 0x51DC, 0x110B, 0x51DD, 0x51DD, 0x1291,
+ 0x51DE, 0x51DE, 0x2B05, 0x51DF, 0x51DF, 0x424F, 0x51E0, 0x51E0, 0x025F,
+ 0x51E1, 0x51E1, 0x026D, 0x51E2, 0x51E2, 0x4052, 0x51E4, 0x51E4, 0x4541,
+ 0x51ED, 0x51ED, 0x4054, 0x51F0, 0x51F0, 0x0A11, 0x51F1, 0x51F1, 0x0BF1,
+ 0x51F3, 0x51F3, 0x0F8B, 0x51F4, 0x51F4, 0x4178, 0x51F5, 0x51F5, 0x176E,
+ 0x51F6, 0x51F6, 0x02B0, 0x51F8, 0x51F8, 0x0309, 0x51F9, 0x51FA, 0x0307,
+ 0x51FC, 0x51FC, 0x459B, 0x51FD, 0x51FD, 0x054C, 0x51FE, 0x51FE, 0x3F0A,
+ 0x5200, 0x5201, 0x0260, 0x5202, 0x5202, 0x36B3, 0x5203, 0x5203, 0x0275,
+ 0x5205, 0x5205, 0x43A1, 0x5206, 0x5208, 0x02B1, 0x5209, 0x5209, 0x1797,
+ 0x520A, 0x520A, 0x030A, 0x520B, 0x520B, 0x4059, 0x520C, 0x520C, 0x1796,
+ 0x520E, 0x520E, 0x0393, 0x5210, 0x5210, 0x17C8, 0x5211, 0x5212, 0x0391,
+ 0x5213, 0x5213, 0x17C7, 0x5216, 0x5216, 0x0394, 0x5217, 0x5217, 0x0390,
+ 0x521C, 0x521C, 0x1835, 0x521D, 0x521D, 0x068B, 0x521E, 0x521E, 0x1836,
+ 0x521F, 0x521F, 0x3F60, 0x5220, 0x5220, 0x4930, 0x5221, 0x5221, 0x1837,
+ 0x5224, 0x5224, 0x043A, 0x5225, 0x5225, 0x0439, 0x5226, 0x5226, 0x405A,
+ 0x5227, 0x5227, 0x43A2, 0x5228, 0x5228, 0x043D, 0x5229, 0x522A, 0x043B,
+ 0x522E, 0x522E, 0x0552, 0x5230, 0x5230, 0x0551, 0x5231, 0x5231, 0x1917,
+ 0x5232, 0x5233, 0x1914, 0x5234, 0x5234, 0x3EFB, 0x5235, 0x5235, 0x1913,
+ 0x5236, 0x5236, 0x0553, 0x5237, 0x5237, 0x054F, 0x5238, 0x5238, 0x054E,
+ 0x523A, 0x523A, 0x0550, 0x523B, 0x523B, 0x054D, 0x523C, 0x523C, 0x405B,
+ 0x5241, 0x5241, 0x0554, 0x5243, 0x5243, 0x06C1, 0x5244, 0x5244, 0x1A6D,
+ 0x5246, 0x5246, 0x1916, 0x5247, 0x5247, 0x06C6, 0x5249, 0x5249, 0x1A6E,
+ 0x524A, 0x524A, 0x06C2, 0x524B, 0x524B, 0x06C5, 0x524C, 0x524C, 0x06C4,
+ 0x524D, 0x524D, 0x06C3, 0x524E, 0x524E, 0x06C0, 0x5252, 0x5252, 0x1C3C,
+ 0x5254, 0x5254, 0x085C, 0x5255, 0x5255, 0x1C3F, 0x5256, 0x5256, 0x085A,
+ 0x5257, 0x5257, 0x405D, 0x5259, 0x5259, 0x39E4, 0x525A, 0x525A, 0x1C3B,
+ 0x525B, 0x525B, 0x085D, 0x525C, 0x525C, 0x085B, 0x525D, 0x525D, 0x085E,
+ 0x525E, 0x525F, 0x1C3D, 0x5260, 0x5260, 0x3F29, 0x5261, 0x5261, 0x1C3A,
+ 0x5262, 0x5262, 0x1C40, 0x5268, 0x5268, 0x4619, 0x5269, 0x5269, 0x0BF5,
+ 0x526A, 0x526A, 0x0A12, 0x526B, 0x526B, 0x1E53, 0x526C, 0x526C, 0x1E55,
+ 0x526D, 0x526D, 0x1E54, 0x526E, 0x526E, 0x1E56, 0x526F, 0x526F, 0x0A13,
+ 0x5272, 0x5272, 0x0BF2, 0x5273, 0x5273, 0x3F43, 0x5274, 0x5275, 0x0BF3,
+ 0x5277, 0x5277, 0x0DCB, 0x5278, 0x5278, 0x2377, 0x5279, 0x5279, 0x43A3,
+ 0x527A, 0x527A, 0x2376, 0x527B, 0x527C, 0x2378, 0x527D, 0x527D, 0x0DCC,
+ 0x527F, 0x527F, 0x0DCA, 0x5280, 0x5281, 0x2623, 0x5282, 0x5282, 0x0F8D,
+ 0x5283, 0x5283, 0x0F8C, 0x5284, 0x5284, 0x2776, 0x5287, 0x5289, 0x110C,
+ 0x528A, 0x528A, 0x1110, 0x528B, 0x528C, 0x2889, 0x528D, 0x528D, 0x110F,
+ 0x528F, 0x528F, 0x3DBF, 0x5290, 0x5290, 0x459D, 0x5291, 0x5291, 0x1292,
+ 0x5293, 0x5293, 0x1293, 0x5294, 0x5294, 0x405E, 0x5296, 0x5296, 0x307C,
+ 0x5297, 0x5297, 0x32C8, 0x5298, 0x5298, 0x32C7, 0x5299, 0x5299, 0x340F,
+ 0x529A, 0x529A, 0x3F68, 0x529B, 0x529B, 0x0262, 0x529F, 0x529F, 0x030C,
+ 0x52A0, 0x52A0, 0x030B, 0x52A1, 0x52A1, 0x4542, 0x52A3, 0x52A3, 0x0395,
+ 0x52A4, 0x52A4, 0x39E5, 0x52A6, 0x52A6, 0x17C9, 0x52A8, 0x52A8, 0x4543,
+ 0x52A9, 0x52AA, 0x043F, 0x52AB, 0x52AB, 0x043E, 0x52AC, 0x52AC, 0x0441,
+ 0x52AD, 0x52AE, 0x1838, 0x52B5, 0x52B5, 0x405C, 0x52B9, 0x52B9, 0x405F,
+ 0x52BB, 0x52BB, 0x0556, 0x52BC, 0x52BC, 0x1918, 0x52BE, 0x52BE, 0x0555,
+ 0x52C0, 0x52C0, 0x1A6F, 0x52C1, 0x52C1, 0x06CA, 0x52C2, 0x52C2, 0x1A70,
+ 0x52C3, 0x52C3, 0x06C9, 0x52C5, 0x52C5, 0x4060, 0x52C7, 0x52C7, 0x06C7,
+ 0x52C9, 0x52C9, 0x06C8, 0x52CC, 0x52CC, 0x3EE1, 0x52CD, 0x52CD, 0x1C41,
+ 0x52D0, 0x52D0, 0x4109, 0x52D1, 0x52D1, 0x3F2A, 0x52D2, 0x52D2, 0x0A14,
+ 0x52D3, 0x52D3, 0x1E58, 0x52D5, 0x52D5, 0x0A17, 0x52D6, 0x52D6, 0x1E57,
+ 0x52D7, 0x52D7, 0x0ACF, 0x52D8, 0x52D8, 0x0A16, 0x52D9, 0x52D9, 0x0A15,
+ 0x52DB, 0x52DB, 0x0BF8, 0x52DD, 0x52DD, 0x0BF7, 0x52DE, 0x52DE, 0x0BF6,
+ 0x52DF, 0x52DF, 0x0DCD, 0x52E0, 0x52E0, 0x4063, 0x52E1, 0x52E1, 0x39E7,
+ 0x52E2, 0x52E3, 0x0DD0, 0x52E4, 0x52E4, 0x0DCF, 0x52E6, 0x52E6, 0x0DCE,
+ 0x52E9, 0x52E9, 0x2625, 0x52EB, 0x52EB, 0x2626, 0x52EF, 0x52EF, 0x288C,
+ 0x52F0, 0x52F0, 0x1111, 0x52F1, 0x52F1, 0x288B, 0x52F3, 0x52F3, 0x1294,
+ 0x52F4, 0x52F4, 0x2D40, 0x52F5, 0x52F5, 0x13B8, 0x52F7, 0x52F7, 0x307D,
+ 0x52F8, 0x52F8, 0x1609, 0x52F9, 0x52F9, 0x0220, 0x52FA, 0x52FA, 0x0276,
+ 0x52FB, 0x52FB, 0x02B4, 0x52FC, 0x52FC, 0x1781, 0x52FE, 0x52FF, 0x02B5,
+ 0x5301, 0x5301, 0x3D79, 0x5305, 0x5306, 0x030D, 0x5308, 0x5308, 0x0396,
+ 0x5309, 0x5309, 0x183A, 0x530A, 0x530B, 0x1919, 0x530D, 0x530D, 0x06CB,
+ 0x530E, 0x530E, 0x1C42, 0x530F, 0x530F, 0x0A19, 0x5310, 0x5310, 0x0A18,
+ 0x5311, 0x5311, 0x20C0, 0x5312, 0x5312, 0x20BF, 0x5315, 0x5315, 0x0263,
+ 0x5316, 0x5316, 0x02B7, 0x5317, 0x5317, 0x030F, 0x5319, 0x5319, 0x0A1A,
+ 0x531A, 0x531A, 0x176F, 0x531C, 0x531C, 0x1798, 0x531D, 0x531D, 0x0310,
+ 0x531F, 0x531F, 0x17CB, 0x5320, 0x5320, 0x0398, 0x5321, 0x5321, 0x0397,
+ 0x5322, 0x5322, 0x17CA, 0x5323, 0x5323, 0x0442, 0x5327, 0x5327, 0x459E,
+ 0x532A, 0x532A, 0x085F, 0x532C, 0x532C, 0x3F36, 0x532D, 0x532D, 0x1E59,
+ 0x532F, 0x532F, 0x0DD2, 0x5330, 0x5330, 0x2627, 0x5331, 0x5331, 0x0F8E,
+ 0x5332, 0x5332, 0x3FD0, 0x5333, 0x5333, 0x406D, 0x5334, 0x5334, 0x2B06,
+ 0x5337, 0x5337, 0x31C7, 0x5338, 0x5338, 0x0221, 0x5339, 0x5339, 0x02B8,
+ 0x533B, 0x533B, 0x4544, 0x533C, 0x533C, 0x191B, 0x533D, 0x533D, 0x1A71,
+ 0x533E, 0x533E, 0x0A1D, 0x533F, 0x5340, 0x0A1B, 0x5341, 0x5341, 0x0264,
+ 0x5342, 0x5342, 0x4947, 0x5343, 0x5343, 0x0277, 0x5344, 0x5344, 0x016B,
+ 0x5345, 0x5345, 0x02BB, 0x5347, 0x5347, 0x02BA, 0x5348, 0x5348, 0x02B9,
+ 0x5349, 0x5349, 0x0313, 0x534A, 0x534A, 0x0312, 0x534C, 0x534C, 0x1799,
+ 0x534D, 0x534D, 0x17CC, 0x534E, 0x534E, 0x4545, 0x5351, 0x5351, 0x055A,
+ 0x5352, 0x5352, 0x0557, 0x5353, 0x5353, 0x0559, 0x5354, 0x5354, 0x0558,
+ 0x5357, 0x5357, 0x06CC, 0x535A, 0x535A, 0x0BF9, 0x535C, 0x535C, 0x0265,
+ 0x535D, 0x535D, 0x4501, 0x535E, 0x535E, 0x02BC, 0x535F, 0x535F, 0x43A7,
+ 0x5360, 0x5360, 0x0315, 0x5361, 0x5361, 0x0314, 0x5363, 0x5363, 0x183B,
+ 0x5364, 0x5364, 0x480A, 0x5366, 0x5366, 0x055B, 0x5367, 0x5367, 0x3ECD,
+ 0x5369, 0x5369, 0x0222, 0x536C, 0x536C, 0x1782, 0x536D, 0x536D, 0x407A,
+ 0x536E, 0x536E, 0x0317, 0x536F, 0x536F, 0x0316, 0x5370, 0x5371, 0x0399,
+ 0x5372, 0x5372, 0x183C, 0x5373, 0x5373, 0x0443, 0x5374, 0x5374, 0x407B,
+ 0x5375, 0x5375, 0x0444, 0x5377, 0x5379, 0x055C, 0x537B, 0x537B, 0x06CD,
+ 0x537C, 0x537C, 0x1A72, 0x537D, 0x537D, 0x4901, 0x537E, 0x537E, 0x407D,
+ 0x537F, 0x537F, 0x0860, 0x5382, 0x5382, 0x1770, 0x5384, 0x5384, 0x02BD,
+ 0x538A, 0x538A, 0x17CD, 0x538E, 0x538F, 0x183D, 0x5392, 0x5392, 0x191C,
+ 0x5393, 0x5393, 0x4082, 0x5394, 0x5394, 0x191D, 0x5396, 0x5396, 0x1A74,
+ 0x5397, 0x5397, 0x1A73, 0x5398, 0x5398, 0x1A76, 0x5399, 0x5399, 0x1A75,
+ 0x539A, 0x539A, 0x06CE, 0x539C, 0x539C, 0x1E5A, 0x539D, 0x539D, 0x0862,
+ 0x539E, 0x539E, 0x1C43, 0x539F, 0x539F, 0x0861, 0x53A0, 0x53A0, 0x4084,
+ 0x53A2, 0x53A2, 0x3E2B, 0x53A4, 0x53A4, 0x20C1, 0x53A5, 0x53A5, 0x0BFA,
+ 0x53A6, 0x53A6, 0x413B, 0x53A7, 0x53A7, 0x20C2, 0x53A8, 0x53A8, 0x413E,
+ 0x53A9, 0x53A9, 0x45A0, 0x53AA, 0x53AA, 0x3FC6, 0x53AB, 0x53AB, 0x4085,
+ 0x53AC, 0x53AC, 0x2628, 0x53AD, 0x53AD, 0x0F8F, 0x53AE, 0x53AE, 0x4086,
+ 0x53B0, 0x53B0, 0x45A2, 0x53B2, 0x53B2, 0x1112, 0x53B4, 0x53B4, 0x307E,
+ 0x53B6, 0x53B6, 0x0223, 0x53B9, 0x53B9, 0x1783, 0x53BB, 0x53BB, 0x0318,
+ 0x53C1, 0x53C1, 0x408B, 0x53C2, 0x53C2, 0x43A6, 0x53C3, 0x53C3, 0x0A1E,
+ 0x53C5, 0x53C5, 0x408C, 0x53C8, 0x53C8, 0x0266, 0x53C9, 0x53C9, 0x0278,
+ 0x53CA, 0x53CA, 0x02BF, 0x53CB, 0x53CB, 0x02BE, 0x53CC, 0x53CC, 0x38B6,
+ 0x53CD, 0x53CD, 0x02C0, 0x53D0, 0x53D0, 0x39FA, 0x53D1, 0x53D1, 0x4546,
+ 0x53D2, 0x53D2, 0x3E3D, 0x53D4, 0x53D4, 0x0560, 0x53D6, 0x53D6, 0x055F,
+ 0x53D7, 0x53D7, 0x0561, 0x53D8, 0x53D8, 0x4547, 0x53D9, 0x53D9, 0x4090,
+ 0x53DA, 0x53DA, 0x3F39, 0x53DB, 0x53DB, 0x06CF, 0x53DF, 0x53DF, 0x0863,
+ 0x53E0, 0x53E0, 0x4093, 0x53E1, 0x53E1, 0x2B07, 0x53E2, 0x53E2, 0x14C9,
+ 0x53E3, 0x53E3, 0x0279, 0x53E4, 0x53E4, 0x031A, 0x53E5, 0x53E5, 0x0329,
+ 0x53E6, 0x53E6, 0x0324, 0x53E8, 0x53E8, 0x031F, 0x53E9, 0x53E9, 0x031E,
+ 0x53EA, 0x53EA, 0x0325, 0x53EB, 0x53EB, 0x0323, 0x53EC, 0x53EC, 0x031C,
+ 0x53ED, 0x53ED, 0x032A, 0x53EE, 0x53EE, 0x031D, 0x53EF, 0x53EF, 0x0319,
+ 0x53F0, 0x53F0, 0x0328, 0x53F1, 0x53F1, 0x0327, 0x53F2, 0x53F2, 0x0326,
+ 0x53F3, 0x53F3, 0x031B, 0x53F5, 0x53F5, 0x0322, 0x53F6, 0x53F6, 0x4096,
+ 0x53F7, 0x53F7, 0x3808, 0x53F8, 0x53F8, 0x0321, 0x53FB, 0x53FB, 0x032B,
+ 0x53FC, 0x53FC, 0x0320, 0x53FE, 0x53FE, 0x40C1, 0x5401, 0x5401, 0x03A0,
+ 0x5403, 0x5403, 0x03A6, 0x5404, 0x5404, 0x03A2, 0x5406, 0x5406, 0x03A8,
+ 0x5407, 0x5407, 0x17CE, 0x5408, 0x5408, 0x03A5, 0x5409, 0x5409, 0x039B,
+ 0x540A, 0x540A, 0x039E, 0x540B, 0x540B, 0x03A1, 0x540C, 0x540C, 0x039D,
+ 0x540D, 0x540D, 0x03A4, 0x540E, 0x540E, 0x03A7, 0x540F, 0x540F, 0x039C,
+ 0x5410, 0x5410, 0x039F, 0x5411, 0x5411, 0x03A3, 0x5412, 0x5412, 0x03A9,
+ 0x5413, 0x5413, 0x4098, 0x5414, 0x5414, 0x3C77, 0x5416, 0x5416, 0x3E7F,
+ 0x5418, 0x5418, 0x1847, 0x5419, 0x5419, 0x1844, 0x541A, 0x541A, 0x3E64,
+ 0x541B, 0x541B, 0x0451, 0x541C, 0x541C, 0x1845, 0x541D, 0x541D, 0x0445,
+ 0x541E, 0x541E, 0x0447, 0x541F, 0x541F, 0x045F, 0x5420, 0x5420, 0x045A,
+ 0x5421, 0x5421, 0x4203, 0x5423, 0x5423, 0x45A3, 0x5424, 0x5424, 0x184C,
+ 0x5425, 0x5425, 0x1846, 0x5426, 0x5426, 0x0449, 0x5427, 0x5427, 0x044B,
+ 0x5428, 0x5428, 0x184B, 0x5429, 0x5429, 0x0452, 0x542A, 0x542A, 0x1841,
+ 0x542B, 0x542B, 0x045E, 0x542C, 0x542C, 0x0460, 0x542D, 0x542D, 0x0446,
+ 0x542E, 0x542E, 0x0457, 0x542F, 0x542F, 0x40AC, 0x5430, 0x5430, 0x183F,
+ 0x5431, 0x5431, 0x045D, 0x5432, 0x5432, 0x3E75, 0x5433, 0x5433, 0x044E,
+ 0x5435, 0x5436, 0x0458, 0x5437, 0x5437, 0x1840, 0x5438, 0x5438, 0x0456,
+ 0x5439, 0x5439, 0x0454, 0x543B, 0x543B, 0x0455, 0x543C, 0x543C, 0x045B,
+ 0x543D, 0x543D, 0x1848, 0x543E, 0x543E, 0x0448, 0x5440, 0x5440, 0x045C,
+ 0x5441, 0x5441, 0x184A, 0x5442, 0x5442, 0x0450, 0x5443, 0x5443, 0x044D,
+ 0x5445, 0x5445, 0x1843, 0x5446, 0x5446, 0x044C, 0x5447, 0x5447, 0x184D,
+ 0x5448, 0x5448, 0x044F, 0x544A, 0x544A, 0x0453, 0x544B, 0x544B, 0x3ED1,
+ 0x544D, 0x544D, 0x3EA7, 0x544E, 0x544E, 0x044A, 0x544F, 0x544F, 0x1849,
+ 0x5454, 0x5454, 0x1842, 0x5460, 0x5460, 0x192E, 0x5461, 0x5461, 0x192D,
+ 0x5462, 0x5462, 0x0573, 0x5463, 0x5463, 0x1930, 0x5464, 0x5464, 0x1932,
+ 0x5465, 0x5465, 0x1927, 0x5466, 0x5466, 0x192A, 0x5467, 0x5467, 0x1931,
+ 0x5468, 0x5468, 0x0574, 0x5469, 0x5469, 0x3F32, 0x546A, 0x546A, 0x3D83,
+ 0x546B, 0x546B, 0x1924, 0x546C, 0x546C, 0x1928, 0x546D, 0x546D, 0x409D,
+ 0x546F, 0x546F, 0x192C, 0x5470, 0x5470, 0x1A85, 0x5471, 0x5471, 0x056F,
+ 0x5472, 0x5472, 0x1A89, 0x5473, 0x5473, 0x0562, 0x5474, 0x5474, 0x1929,
+ 0x5475, 0x5475, 0x0563, 0x5476, 0x5476, 0x0570, 0x5477, 0x5477, 0x0569,
+ 0x5478, 0x5478, 0x0565, 0x547A, 0x547A, 0x1925, 0x547B, 0x547B, 0x0568,
+ 0x547C, 0x547C, 0x056D, 0x547D, 0x547D, 0x0576, 0x547E, 0x547E, 0x1926,
+ 0x547F, 0x547F, 0x191F, 0x5480, 0x5480, 0x0567, 0x5481, 0x5481, 0x1920,
+ 0x5482, 0x5482, 0x1922, 0x5484, 0x5484, 0x056A, 0x5485, 0x5485, 0x46D9,
+ 0x5486, 0x5486, 0x056C, 0x5487, 0x5487, 0x191E, 0x5488, 0x5488, 0x1923,
+ 0x548B, 0x548B, 0x0575, 0x548C, 0x548C, 0x0571, 0x548D, 0x548D, 0x192B,
+ 0x548E, 0x548E, 0x0577, 0x548F, 0x548F, 0x40A1, 0x5490, 0x5490, 0x056E,
+ 0x5491, 0x5491, 0x1921, 0x5492, 0x5492, 0x056B, 0x5493, 0x5493, 0x45A7,
+ 0x5494, 0x5494, 0x3E98, 0x5495, 0x5495, 0x0566, 0x5496, 0x5496, 0x0564,
+ 0x5497, 0x5497, 0x3E8A, 0x5498, 0x5498, 0x192F, 0x549A, 0x549A, 0x0572,
+ 0x549C, 0x549C, 0x3F66, 0x549E, 0x549E, 0x47ED, 0x54A0, 0x54A0, 0x1A84,
+ 0x54A1, 0x54A1, 0x1A78, 0x54A2, 0x54A2, 0x1A87, 0x54A3, 0x54A3, 0x45A8,
+ 0x54A4, 0x54A4, 0x40A2, 0x54A5, 0x54A5, 0x1A7A, 0x54A6, 0x54A6, 0x06D6,
+ 0x54A7, 0x54A7, 0x06E4, 0x54A8, 0x54A8, 0x06D2, 0x54A9, 0x54A9, 0x06E3,
+ 0x54AA, 0x54AA, 0x06DB, 0x54AB, 0x54AB, 0x06E0, 0x54AC, 0x54AC, 0x06D0,
+ 0x54AD, 0x54AD, 0x1A79, 0x54AE, 0x54AE, 0x1A7F, 0x54AF, 0x54AF, 0x06DF,
+ 0x54B0, 0x54B0, 0x1A8B, 0x54B1, 0x54B1, 0x06E1, 0x54B2, 0x54B2, 0x3744,
+ 0x54B3, 0x54B3, 0x06D7, 0x54B4, 0x54B4, 0x45A9, 0x54B6, 0x54B6, 0x1A81,
+ 0x54B7, 0x54B7, 0x1A7E, 0x54B8, 0x54B8, 0x06D5, 0x54B9, 0x54B9, 0x45AA,
+ 0x54BA, 0x54BA, 0x1A77, 0x54BB, 0x54BB, 0x06E2, 0x54BC, 0x54BC, 0x1A86,
+ 0x54BD, 0x54BD, 0x06DA, 0x54BE, 0x54BE, 0x1A88, 0x54BF, 0x54BF, 0x06E5,
+ 0x54C0, 0x54C0, 0x06D1, 0x54C1, 0x54C1, 0x06DC, 0x54C2, 0x54C2, 0x06D9,
+ 0x54C3, 0x54C3, 0x1A7C, 0x54C4, 0x54C4, 0x06DD, 0x54C5, 0x54C6, 0x1A82,
+ 0x54C7, 0x54C7, 0x06D8, 0x54C8, 0x54C8, 0x06DE, 0x54C9, 0x54C9, 0x06D4,
+ 0x54CB, 0x54CB, 0x39A3, 0x54CC, 0x54CC, 0x43A8, 0x54CD, 0x54CD, 0x3A00,
+ 0x54CE, 0x54CE, 0x06D3, 0x54CF, 0x54CF, 0x1A7B, 0x54D0, 0x54D0, 0x45AB,
+ 0x54D6, 0x54D6, 0x1A80, 0x54DA, 0x54DA, 0x4923, 0x54DE, 0x54DE, 0x1A8A,
+ 0x54E0, 0x54E0, 0x1C57, 0x54E1, 0x54E1, 0x0870, 0x54E2, 0x54E2, 0x1C45,
+ 0x54E3, 0x54E3, 0x4341, 0x54E4, 0x54E4, 0x1C4A, 0x54E5, 0x54E5, 0x0869,
+ 0x54E6, 0x54E6, 0x0874, 0x54E7, 0x54E7, 0x1C48, 0x54E8, 0x54E8, 0x0864,
+ 0x54E9, 0x54E9, 0x086E, 0x54EA, 0x54EA, 0x0873, 0x54EB, 0x54EB, 0x1C4F,
+ 0x54ED, 0x54ED, 0x086F, 0x54EE, 0x54EE, 0x0872, 0x54EF, 0x54EF, 0x45AC,
+ 0x54F1, 0x54F1, 0x1C52, 0x54F2, 0x54F2, 0x086A, 0x54F3, 0x54F3, 0x1C49,
+ 0x54F7, 0x54F8, 0x1C55, 0x54FA, 0x54FA, 0x086C, 0x54FB, 0x54FB, 0x1C54,
+ 0x54FC, 0x54FC, 0x0868, 0x54FD, 0x54FD, 0x0877, 0x54FF, 0x54FF, 0x1C4C,
+ 0x5501, 0x5501, 0x0866, 0x5502, 0x5502, 0x3CCC, 0x5503, 0x5503, 0x1C59,
+ 0x5504, 0x5504, 0x1C4D, 0x5505, 0x5505, 0x1C51, 0x5506, 0x5506, 0x086B,
+ 0x5507, 0x5507, 0x0876, 0x5508, 0x5508, 0x1C4E, 0x5509, 0x5509, 0x0871,
+ 0x550A, 0x550A, 0x1C53, 0x550B, 0x550B, 0x1C5A, 0x550C, 0x550C, 0x1E69,
+ 0x550D, 0x550D, 0x3A73, 0x550E, 0x550E, 0x1C58, 0x550F, 0x550F, 0x0878,
+ 0x5510, 0x5510, 0x0865, 0x5511, 0x5511, 0x1C50, 0x5512, 0x5512, 0x1C47,
+ 0x5513, 0x5513, 0x3EA9, 0x5514, 0x5514, 0x086D, 0x5517, 0x5517, 0x1C46,
+ 0x5518, 0x5518, 0x45AD, 0x551A, 0x551A, 0x1C4B, 0x551E, 0x551E, 0x3EA8,
+ 0x5523, 0x5523, 0x45AE, 0x5525, 0x5525, 0x4309, 0x5526, 0x5526, 0x1C44,
+ 0x5527, 0x5527, 0x0875, 0x5528, 0x5528, 0x45AF, 0x552A, 0x552A, 0x1E61,
+ 0x552B, 0x552B, 0x409A, 0x552C, 0x552C, 0x0A31, 0x552D, 0x552D, 0x1E6F,
+ 0x552E, 0x552E, 0x0A2F, 0x552F, 0x552F, 0x0A2C, 0x5530, 0x5530, 0x1E66,
+ 0x5531, 0x5531, 0x0A28, 0x5532, 0x5532, 0x1E6A, 0x5533, 0x5533, 0x0A33,
+ 0x5534, 0x5534, 0x1E60, 0x5535, 0x5535, 0x1E65, 0x5536, 0x5536, 0x1E64,
+ 0x5537, 0x5537, 0x0867, 0x5538, 0x5538, 0x0A2E, 0x5539, 0x5539, 0x1E6D,
+ 0x553B, 0x553B, 0x1E70, 0x553C, 0x553C, 0x1E5D, 0x553E, 0x553E, 0x0C0C,
+ 0x553F, 0x553F, 0x43A9, 0x5540, 0x5540, 0x1E71, 0x5541, 0x5541, 0x0A34,
+ 0x5543, 0x5543, 0x0A26, 0x5544, 0x5544, 0x0A23, 0x5545, 0x5545, 0x1E68,
+ 0x5546, 0x5546, 0x0A20, 0x5547, 0x5547, 0x40AA, 0x5548, 0x5548, 0x1E6E,
+ 0x5549, 0x5549, 0x4068, 0x554A, 0x554A, 0x0A27, 0x554B, 0x554B, 0x1E72,
+ 0x554D, 0x554D, 0x1E5E, 0x554E, 0x554E, 0x1E6C, 0x554F, 0x554F, 0x0A2A,
+ 0x5550, 0x5550, 0x1E5F, 0x5551, 0x5551, 0x1E62, 0x5552, 0x5552, 0x1E67,
+ 0x5553, 0x5553, 0x43AE, 0x5555, 0x5555, 0x0A2B, 0x5556, 0x5556, 0x0A29,
+ 0x5557, 0x5557, 0x0A35, 0x555C, 0x555C, 0x0A30, 0x555D, 0x555D, 0x40A0,
+ 0x555E, 0x555E, 0x0A24, 0x555F, 0x555F, 0x0ABC, 0x5561, 0x5561, 0x0A25,
+ 0x5562, 0x5562, 0x1E63, 0x5563, 0x5563, 0x0A32, 0x5564, 0x5564, 0x0A2D,
+ 0x5565, 0x5565, 0x1E6B, 0x5566, 0x5566, 0x0A22, 0x5569, 0x5569, 0x3E9F,
+ 0x556A, 0x556A, 0x0A21, 0x556B, 0x556B, 0x3B2E, 0x5571, 0x5571, 0x3BC6,
+ 0x5572, 0x5572, 0x3E8B, 0x5573, 0x5573, 0x3F24, 0x5575, 0x5576, 0x1E5B,
+ 0x5577, 0x5577, 0x20C7, 0x5579, 0x5579, 0x435D, 0x557B, 0x557B, 0x0BFB,
+ 0x557C, 0x557C, 0x0BFE, 0x557D, 0x557D, 0x20D2, 0x557E, 0x557E, 0x0C12,
+ 0x557F, 0x557F, 0x20D5, 0x5580, 0x5580, 0x0BFC, 0x5581, 0x5581, 0x20CE,
+ 0x5582, 0x5582, 0x0C02, 0x5583, 0x5583, 0x0C08, 0x5584, 0x5584, 0x0D1B,
+ 0x5586, 0x5586, 0x40AE, 0x5587, 0x5587, 0x0C06, 0x5588, 0x5588, 0x20CB,
+ 0x5589, 0x5589, 0x0C13, 0x558A, 0x558A, 0x0BFF, 0x558B, 0x558B, 0x0C07,
+ 0x558C, 0x558C, 0x20D3, 0x558D, 0x558D, 0x2387, 0x558E, 0x558E, 0x20D8,
+ 0x558F, 0x558F, 0x20CC, 0x5590, 0x5590, 0x430E, 0x5591, 0x5591, 0x20C3,
+ 0x5592, 0x5592, 0x20D0, 0x5593, 0x5593, 0x20CA, 0x5594, 0x5594, 0x0C05,
+ 0x5595, 0x5595, 0x20D6, 0x5598, 0x5598, 0x0C01, 0x5599, 0x5599, 0x0C15,
+ 0x559A, 0x559A, 0x0C0E, 0x559C, 0x559C, 0x0C03, 0x559D, 0x559D, 0x0C00,
+ 0x559F, 0x559F, 0x0C0B, 0x55A1, 0x55A1, 0x20D7, 0x55A2, 0x55A2, 0x20C9,
+ 0x55A3, 0x55A3, 0x20CF, 0x55A4, 0x55A4, 0x20D1, 0x55A5, 0x55A5, 0x20C5,
+ 0x55A6, 0x55A6, 0x20D4, 0x55A7, 0x55A7, 0x0BFD, 0x55A8, 0x55A8, 0x20C4,
+ 0x55A9, 0x55A9, 0x40AF, 0x55AA, 0x55AA, 0x0C04, 0x55AB, 0x55AB, 0x0C14,
+ 0x55AC, 0x55AC, 0x0C10, 0x55AD, 0x55AD, 0x20C6, 0x55AE, 0x55AE, 0x0C0A,
+ 0x55B0, 0x55B0, 0x38F5, 0x55B1, 0x55B1, 0x0C11, 0x55B2, 0x55B2, 0x0C0D,
+ 0x55B3, 0x55B3, 0x0C09, 0x55B4, 0x55B4, 0x39FE, 0x55B5, 0x55B5, 0x20CD,
+ 0x55B9, 0x55B9, 0x43AA, 0x55BA, 0x55BA, 0x3E89, 0x55BB, 0x55BB, 0x0C0F,
+ 0x55BC, 0x55BC, 0x3DC3, 0x55BF, 0x55BF, 0x2385, 0x55C0, 0x55C0, 0x2381,
+ 0x55C1, 0x55C1, 0x3E4F, 0x55C2, 0x55C2, 0x2390, 0x55C3, 0x55C3, 0x237A,
+ 0x55C4, 0x55C4, 0x2383, 0x55C5, 0x55C6, 0x0DE0, 0x55C7, 0x55C7, 0x0DD9,
+ 0x55C8, 0x55C8, 0x238C, 0x55C9, 0x55C9, 0x0DE3, 0x55CA, 0x55CA, 0x237F,
+ 0x55CB, 0x55CB, 0x237E, 0x55CC, 0x55CC, 0x237C, 0x55CD, 0x55CD, 0x238E,
+ 0x55CE, 0x55CE, 0x0DD7, 0x55CF, 0x55CF, 0x2388, 0x55D0, 0x55D0, 0x237D,
+ 0x55D1, 0x55D1, 0x0DDA, 0x55D2, 0x55D2, 0x2386, 0x55D3, 0x55D3, 0x0DD5,
+ 0x55D4, 0x55D4, 0x2382, 0x55D5, 0x55D5, 0x2389, 0x55D6, 0x55D6, 0x238B,
+ 0x55D7, 0x55D7, 0x45B3, 0x55D8, 0x55D8, 0x43AB, 0x55D9, 0x55D9, 0x238F,
+ 0x55DA, 0x55DA, 0x0DDE, 0x55DB, 0x55DB, 0x237B, 0x55DC, 0x55DC, 0x0DD8,
+ 0x55DD, 0x55DD, 0x2380, 0x55DE, 0x55DE, 0x3E94, 0x55DF, 0x55DF, 0x0DD3,
+ 0x55E1, 0x55E1, 0x0DDF, 0x55E2, 0x55E2, 0x238A, 0x55E3, 0x55E4, 0x0DDB,
+ 0x55E5, 0x55E5, 0x0DE2, 0x55E6, 0x55E6, 0x0DD6, 0x55E7, 0x55E7, 0x011F,
+ 0x55E8, 0x55E8, 0x0DD4, 0x55E9, 0x55E9, 0x2384, 0x55EA, 0x55EA, 0x3E7C,
+ 0x55EC, 0x55EC, 0x37D2, 0x55EF, 0x55EF, 0x0DDD, 0x55F0, 0x55F0, 0x3E88,
+ 0x55F1, 0x55F1, 0x3E83, 0x55F2, 0x55F2, 0x238D, 0x55F5, 0x55F5, 0x4786,
+ 0x55F6, 0x55F6, 0x0F9F, 0x55F7, 0x55F7, 0x0F9A, 0x55F9, 0x55F9, 0x2637,
+ 0x55FA, 0x55FA, 0x2633, 0x55FB, 0x55FB, 0x4626, 0x55FC, 0x55FC, 0x262D,
+ 0x55FD, 0x55FD, 0x0F94, 0x55FE, 0x55FE, 0x0F90, 0x55FF, 0x55FF, 0x2636,
+ 0x5600, 0x5600, 0x0F91, 0x5601, 0x5601, 0x2630, 0x5602, 0x5602, 0x2632,
+ 0x5604, 0x5604, 0x2635, 0x5605, 0x5605, 0x3E82, 0x5606, 0x5606, 0x0F96,
+ 0x5608, 0x5608, 0x0F9D, 0x5609, 0x5609, 0x0F97, 0x560C, 0x560C, 0x262B,
+ 0x560D, 0x560E, 0x0F98, 0x560F, 0x560F, 0x262E, 0x5610, 0x5610, 0x0F9E,
+ 0x5611, 0x5611, 0x3F4D, 0x5612, 0x5612, 0x262C, 0x5613, 0x5613, 0x2631,
+ 0x5614, 0x5614, 0x0F95, 0x5615, 0x5615, 0x262A, 0x5616, 0x5616, 0x0F9B,
+ 0x5617, 0x5617, 0x0F93, 0x561B, 0x561B, 0x0F92, 0x561C, 0x561C, 0x262F,
+ 0x561D, 0x561D, 0x2634, 0x561E, 0x561E, 0x3E68, 0x561F, 0x561F, 0x0F9C,
+ 0x5620, 0x5620, 0x3F7D, 0x5621, 0x5621, 0x43AD, 0x5622, 0x5622, 0x3E67,
+ 0x5623, 0x5623, 0x4707, 0x5625, 0x5625, 0x3E78, 0x5627, 0x5627, 0x2629,
+ 0x5629, 0x5629, 0x1119, 0x562A, 0x562A, 0x289D, 0x562C, 0x562C, 0x289A,
+ 0x562D, 0x562D, 0x3E63, 0x562E, 0x562E, 0x1113, 0x562F, 0x5630, 0x111F,
+ 0x5632, 0x5632, 0x1116, 0x5633, 0x5633, 0x2898, 0x5634, 0x5634, 0x1118,
+ 0x5635, 0x5635, 0x2890, 0x5636, 0x5636, 0x111E, 0x5637, 0x5637, 0x40B7,
+ 0x5638, 0x5638, 0x289C, 0x5639, 0x5639, 0x1115, 0x563A, 0x563A, 0x289E,
+ 0x563B, 0x563B, 0x1114, 0x563D, 0x563D, 0x2899, 0x563E, 0x563E, 0x289B,
+ 0x563F, 0x563F, 0x1117, 0x5640, 0x5640, 0x2897, 0x5641, 0x5641, 0x2891,
+ 0x5642, 0x5642, 0x288E, 0x5643, 0x5643, 0x3E7E, 0x5645, 0x5645, 0x20C8,
+ 0x5646, 0x5646, 0x2894, 0x5648, 0x5648, 0x288D, 0x5649, 0x5649, 0x2893,
+ 0x564A, 0x564A, 0x2892, 0x564C, 0x564C, 0x288F, 0x564D, 0x564D, 0x40BC,
+ 0x564E, 0x564E, 0x111B, 0x564F, 0x564F, 0x40BD, 0x5650, 0x5650, 0x47CF,
+ 0x5652, 0x5652, 0x45C2, 0x5653, 0x5653, 0x111A, 0x5654, 0x5654, 0x43AF,
+ 0x5657, 0x5657, 0x111C, 0x5658, 0x5658, 0x2895, 0x5659, 0x5659, 0x1295,
+ 0x565A, 0x565A, 0x2896, 0x565D, 0x565D, 0x3EF9, 0x565E, 0x565E, 0x2B10,
+ 0x5660, 0x5660, 0x2B09, 0x5661, 0x5661, 0x3812, 0x5662, 0x5662, 0x12A1,
+ 0x5663, 0x5663, 0x2B0D, 0x5664, 0x5664, 0x1299, 0x5665, 0x5665, 0x129D,
+ 0x5666, 0x5666, 0x2B0C, 0x5668, 0x5668, 0x129C, 0x5669, 0x5669, 0x1298,
+ 0x566A, 0x566A, 0x129B, 0x566B, 0x566B, 0x1296, 0x566C, 0x566C, 0x12A0,
+ 0x566D, 0x566D, 0x2B0E, 0x566E, 0x566E, 0x2B0A, 0x566F, 0x566F, 0x129F,
+ 0x5670, 0x5670, 0x2B08, 0x5671, 0x5671, 0x129E, 0x5672, 0x5672, 0x2B0F,
+ 0x5673, 0x5673, 0x2B0B, 0x5674, 0x5674, 0x111D, 0x5676, 0x5676, 0x12A2,
+ 0x5677, 0x5677, 0x2B11, 0x5678, 0x5678, 0x129A, 0x5679, 0x5679, 0x1297,
+ 0x567A, 0x567A, 0x3D85, 0x567B, 0x567B, 0x3EB7, 0x567C, 0x567C, 0x3EED,
+ 0x567E, 0x567E, 0x2D47, 0x567F, 0x567F, 0x2D49, 0x5680, 0x5680, 0x13BA,
+ 0x5681, 0x5681, 0x2D4A, 0x5682, 0x5682, 0x2D48, 0x5683, 0x5683, 0x2D46,
+ 0x5684, 0x5684, 0x2D45, 0x5685, 0x5685, 0x13BC, 0x5686, 0x5686, 0x2D44,
+ 0x5687, 0x5687, 0x13BD, 0x5689, 0x5689, 0x4628, 0x568A, 0x568A, 0x3949,
+ 0x568B, 0x568B, 0x3E4C, 0x568C, 0x568D, 0x2D42, 0x568E, 0x568E, 0x13B9,
+ 0x568F, 0x568F, 0x13BE, 0x5690, 0x5690, 0x13BB, 0x5692, 0x5692, 0x39A6,
+ 0x5693, 0x5693, 0x2D41, 0x5695, 0x5695, 0x14CA, 0x5697, 0x5697, 0x2F13,
+ 0x5698, 0x5698, 0x2F11, 0x5699, 0x5699, 0x2F16, 0x569A, 0x569A, 0x2F14,
+ 0x569C, 0x569C, 0x2F12, 0x569D, 0x569D, 0x2F15, 0x569E, 0x569E, 0x39A4,
+ 0x569F, 0x569F, 0x3948, 0x56A1, 0x56A1, 0x436B, 0x56A4, 0x56A4, 0x3CC8,
+ 0x56A5, 0x56A5, 0x1576, 0x56A6, 0x56A7, 0x3081, 0x56A8, 0x56A8, 0x1577,
+ 0x56AA, 0x56AA, 0x3083, 0x56AB, 0x56AB, 0x307F, 0x56AC, 0x56AC, 0x3084,
+ 0x56AD, 0x56AD, 0x3080, 0x56AE, 0x56AE, 0x14CB, 0x56AF, 0x56AF, 0x45F7,
+ 0x56B1, 0x56B1, 0x463F, 0x56B2, 0x56B2, 0x31C8, 0x56B3, 0x56B3, 0x31CA,
+ 0x56B4, 0x56B4, 0x160C, 0x56B5, 0x56B5, 0x31C9, 0x56B6, 0x56B6, 0x160B,
+ 0x56B7, 0x56B7, 0x160A, 0x56B9, 0x56B9, 0x486F, 0x56BC, 0x56BC, 0x160D,
+ 0x56BD, 0x56BE, 0x32CA, 0x56BF, 0x56BF, 0x3E5D, 0x56C0, 0x56C0, 0x166B,
+ 0x56C1, 0x56C1, 0x166A, 0x56C2, 0x56C2, 0x166C, 0x56C3, 0x56C3, 0x32C9,
+ 0x56C5, 0x56C5, 0x3379, 0x56C6, 0x56C6, 0x3378, 0x56C8, 0x56C8, 0x16BD,
+ 0x56C9, 0x56C9, 0x16BF, 0x56CA, 0x56CA, 0x16BE, 0x56CB, 0x56CB, 0x337A,
+ 0x56CC, 0x56CC, 0x16F6, 0x56CD, 0x56CD, 0x3481, 0x56D1, 0x56D1, 0x171F,
+ 0x56D3, 0x56D3, 0x3480, 0x56D4, 0x56D4, 0x34C9, 0x56D6, 0x56D6, 0x488A,
+ 0x56D7, 0x56D7, 0x1775, 0x56DA, 0x56DA, 0x032D, 0x56DB, 0x56DB, 0x032C,
+ 0x56DD, 0x56DD, 0x03AC, 0x56DE, 0x56DE, 0x03AB, 0x56DF, 0x56DF, 0x17D0,
+ 0x56E0, 0x56E0, 0x03AA, 0x56E1, 0x56E1, 0x17CF, 0x56E2, 0x56E2, 0x4548,
+ 0x56E4, 0x56E4, 0x0463, 0x56E5, 0x56E5, 0x1850, 0x56E7, 0x56E7, 0x184F,
+ 0x56EA, 0x56EA, 0x0461, 0x56EB, 0x56EB, 0x0464, 0x56ED, 0x56ED, 0x40C4,
+ 0x56EE, 0x56EE, 0x184E, 0x56EF, 0x56EF, 0x40C3, 0x56F0, 0x56F0, 0x0462,
+ 0x56F1, 0x56F1, 0x40BF, 0x56F7, 0x56F7, 0x1933, 0x56F9, 0x56F9, 0x1934,
+ 0x56FA, 0x56FA, 0x0578, 0x56FD, 0x56FD, 0x3D64, 0x56FF, 0x56FF, 0x06E6,
+ 0x5700, 0x5700, 0x40C2, 0x5701, 0x5702, 0x1C5B, 0x5703, 0x5704, 0x0879,
+ 0x5707, 0x5707, 0x1E74, 0x5708, 0x5708, 0x0A36, 0x5709, 0x5709, 0x0A38,
+ 0x570A, 0x570A, 0x1E73, 0x570B, 0x570B, 0x0A37, 0x570C, 0x570C, 0x20D9,
+ 0x570D, 0x570D, 0x0C16, 0x5712, 0x5713, 0x0DE4, 0x5714, 0x5714, 0x2391,
+ 0x5715, 0x5715, 0x3E36, 0x5716, 0x5716, 0x0FA1, 0x5718, 0x5718, 0x0FA0,
+ 0x571A, 0x571A, 0x289F, 0x571B, 0x571B, 0x2B13, 0x571C, 0x571C, 0x2B12,
+ 0x571D, 0x571D, 0x3A02, 0x571E, 0x571E, 0x3505, 0x571F, 0x571F, 0x027A,
+ 0x5720, 0x5720, 0x1784, 0x5722, 0x5723, 0x179A, 0x5728, 0x5728, 0x03AF,
+ 0x5729, 0x5729, 0x03B3, 0x572A, 0x572A, 0x17D2, 0x572C, 0x572C, 0x03B1,
+ 0x572D, 0x572D, 0x03B0, 0x572E, 0x572E, 0x17D1, 0x572F, 0x572F, 0x03B2,
+ 0x5730, 0x5730, 0x03AE, 0x5732, 0x5732, 0x3AF9, 0x5733, 0x5733, 0x03AD,
+ 0x5734, 0x5734, 0x17D3, 0x573B, 0x573B, 0x046E, 0x573E, 0x573E, 0x046B,
+ 0x573F, 0x573F, 0x4855, 0x5740, 0x5740, 0x0467, 0x5741, 0x5741, 0x1851,
+ 0x5742, 0x5742, 0x40CC, 0x5743, 0x5743, 0x40DE, 0x5745, 0x5745, 0x1852,
+ 0x5746, 0x5746, 0x40C8, 0x5747, 0x5747, 0x0469, 0x5749, 0x5749, 0x1854,
+ 0x574A, 0x574A, 0x0465, 0x574B, 0x574B, 0x1855, 0x574C, 0x574C, 0x1853,
+ 0x574D, 0x574D, 0x0468, 0x574E, 0x574E, 0x046A, 0x574F, 0x574F, 0x046D,
+ 0x5750, 0x5750, 0x046C, 0x5751, 0x5751, 0x0466, 0x5752, 0x5752, 0x1856,
+ 0x5754, 0x5754, 0x4785, 0x5757, 0x5757, 0x47E6, 0x575B, 0x575B, 0x3982,
+ 0x575F, 0x575F, 0x3FBF, 0x5761, 0x5761, 0x057D, 0x5762, 0x5762, 0x1941,
+ 0x5764, 0x5764, 0x057F, 0x5766, 0x5766, 0x057E, 0x5767, 0x5767, 0x3F2B,
+ 0x5768, 0x5768, 0x1942, 0x5769, 0x5769, 0x057C, 0x576A, 0x576A, 0x057B,
+ 0x576B, 0x576B, 0x1938, 0x576D, 0x576D, 0x1937, 0x576F, 0x576F, 0x1935,
+ 0x5770, 0x5770, 0x193A, 0x5771, 0x5771, 0x1939, 0x5772, 0x5772, 0x1936,
+ 0x5773, 0x5774, 0x193F, 0x5775, 0x5775, 0x193D, 0x5776, 0x5776, 0x193B,
+ 0x5777, 0x5777, 0x057A, 0x577A, 0x577A, 0x3F5F, 0x577B, 0x577B, 0x193E,
+ 0x577C, 0x577C, 0x0580, 0x577D, 0x577D, 0x1943, 0x577E, 0x577E, 0x46DC,
+ 0x577F, 0x577F, 0x3A07, 0x5780, 0x5780, 0x193C, 0x5782, 0x5782, 0x06E7,
+ 0x5783, 0x5783, 0x0579, 0x5788, 0x5788, 0x484B, 0x578A, 0x578A, 0x3C7B,
+ 0x578B, 0x578B, 0x06E8, 0x578C, 0x578C, 0x1A90, 0x578D, 0x578D, 0x3A06,
+ 0x578F, 0x578F, 0x1A96, 0x5790, 0x5790, 0x4166, 0x5793, 0x5793, 0x06EE,
+ 0x5794, 0x5794, 0x1A94, 0x5795, 0x5795, 0x1A9A, 0x5797, 0x5797, 0x1A91,
+ 0x5798, 0x5798, 0x1A95, 0x5799, 0x5799, 0x1A97, 0x579A, 0x579A, 0x1A99,
+ 0x579B, 0x579B, 0x1A93, 0x579C, 0x579C, 0x4608, 0x579D, 0x579D, 0x1A92,
+ 0x579E, 0x579F, 0x1A8D, 0x57A0, 0x57A0, 0x06E9, 0x57A1, 0x57A1, 0x4864,
+ 0x57A2, 0x57A2, 0x06EB, 0x57A3, 0x57A3, 0x06EA, 0x57A4, 0x57A4, 0x1A8F,
+ 0x57A5, 0x57A5, 0x1A98, 0x57A7, 0x57A7, 0x4914, 0x57AA, 0x57AA, 0x4905,
+ 0x57AE, 0x57AE, 0x06ED, 0x57B4, 0x57B4, 0x4741, 0x57B5, 0x57B5, 0x1A8C,
+ 0x57B6, 0x57B6, 0x1C66, 0x57B8, 0x57B8, 0x1C65, 0x57B9, 0x57B9, 0x1C6A,
+ 0x57BA, 0x57BA, 0x1C61, 0x57BB, 0x57BB, 0x3C79, 0x57BC, 0x57BC, 0x1C64,
+ 0x57BD, 0x57BD, 0x1C63, 0x57BE, 0x57BE, 0x372C, 0x57BF, 0x57BF, 0x1C67,
+ 0x57C1, 0x57C1, 0x1C6B, 0x57C2, 0x57C2, 0x087B, 0x57C3, 0x57C3, 0x087E,
+ 0x57C4, 0x57C4, 0x3B5B, 0x57C6, 0x57C6, 0x1C62, 0x57C7, 0x57C7, 0x1C68,
+ 0x57C8, 0x57C8, 0x3D0B, 0x57CB, 0x57CB, 0x087D, 0x57CC, 0x57CC, 0x1C5D,
+ 0x57CE, 0x57CE, 0x06EC, 0x57CF, 0x57CF, 0x1E82, 0x57D0, 0x57D0, 0x1C69,
+ 0x57D2, 0x57D2, 0x1C60, 0x57D4, 0x57D4, 0x087C, 0x57D5, 0x57D5, 0x1C5F,
+ 0x57D7, 0x57D7, 0x3C7D, 0x57DC, 0x57DC, 0x1E79, 0x57DD, 0x57DD, 0x3A05,
+ 0x57DE, 0x57DE, 0x3F01, 0x57DF, 0x57DF, 0x0A39, 0x57E0, 0x57E0, 0x0A3D,
+ 0x57E1, 0x57E1, 0x1E89, 0x57E2, 0x57E2, 0x1E77, 0x57E3, 0x57E3, 0x1E85,
+ 0x57E4, 0x57E4, 0x0A3E, 0x57E5, 0x57E5, 0x1E87, 0x57E6, 0x57E6, 0x40CF,
+ 0x57E7, 0x57E7, 0x1E8D, 0x57E9, 0x57E9, 0x1E91, 0x57EC, 0x57EC, 0x1E88,
+ 0x57ED, 0x57ED, 0x1E7C, 0x57EE, 0x57EE, 0x1E84, 0x57EF, 0x57EF, 0x4754,
+ 0x57F0, 0x57F0, 0x1E92, 0x57F1, 0x57F1, 0x1E90, 0x57F2, 0x57F2, 0x1E86,
+ 0x57F3, 0x57F3, 0x1E81, 0x57F4, 0x57F4, 0x1E7A, 0x57F5, 0x57F5, 0x20E1,
+ 0x57F6, 0x57F6, 0x1E78, 0x57F7, 0x57F7, 0x0A42, 0x57F8, 0x57F8, 0x1E7F,
+ 0x57F9, 0x57F9, 0x0A43, 0x57FA, 0x57FA, 0x0A3F, 0x57FB, 0x57FB, 0x1E75,
+ 0x57FC, 0x57FC, 0x1E8B, 0x57FD, 0x57FD, 0x1E7D, 0x57FE, 0x57FE, 0x408F,
+ 0x5800, 0x5800, 0x1E7B, 0x5801, 0x5801, 0x1E8E, 0x5802, 0x5802, 0x0A40,
+ 0x5803, 0x5803, 0x40D1, 0x5804, 0x5804, 0x1E94, 0x5805, 0x5805, 0x0A3A,
+ 0x5806, 0x5806, 0x0A3C, 0x5807, 0x5807, 0x1E83, 0x5808, 0x5808, 0x1E7E,
+ 0x5809, 0x5809, 0x087F, 0x580A, 0x580A, 0x0A3B, 0x580B, 0x580B, 0x1E80,
+ 0x580C, 0x580C, 0x1E8F, 0x580D, 0x580D, 0x1E93, 0x580E, 0x580E, 0x1E8A,
+ 0x5810, 0x5810, 0x1E8C, 0x5812, 0x5812, 0x3D0A, 0x5814, 0x5814, 0x1E76,
+ 0x5819, 0x5819, 0x20DC, 0x581B, 0x581B, 0x20E5, 0x581C, 0x581C, 0x20E4,
+ 0x581D, 0x581D, 0x0C1E, 0x581E, 0x581E, 0x20DD, 0x5820, 0x5820, 0x0C1F,
+ 0x5821, 0x5821, 0x0C1D, 0x5822, 0x5822, 0x3C28, 0x5823, 0x5823, 0x20DF,
+ 0x5824, 0x5824, 0x0C1A, 0x5825, 0x5825, 0x20E3, 0x5826, 0x5826, 0x40D4,
+ 0x5827, 0x5827, 0x20DE, 0x5828, 0x5828, 0x20E0, 0x5829, 0x5829, 0x20DA,
+ 0x582A, 0x582A, 0x0C18, 0x582C, 0x582C, 0x20ED, 0x582D, 0x582D, 0x20EC,
+ 0x582E, 0x582E, 0x20E9, 0x582F, 0x582F, 0x0C17, 0x5830, 0x5831, 0x0C1B,
+ 0x5832, 0x5832, 0x1C5E, 0x5833, 0x5833, 0x20E6, 0x5834, 0x5834, 0x0C19,
+ 0x5835, 0x5835, 0x0A41, 0x5836, 0x5836, 0x20E8, 0x5837, 0x5837, 0x20DB,
+ 0x5838, 0x5838, 0x20EB, 0x5839, 0x5839, 0x20EA, 0x583A, 0x583A, 0x3D72,
+ 0x583B, 0x583B, 0x20EE, 0x583D, 0x583D, 0x239F, 0x583F, 0x583F, 0x20E7,
+ 0x5840, 0x5840, 0x3D82, 0x5844, 0x5844, 0x47BB, 0x5847, 0x5847, 0x3AC2,
+ 0x5848, 0x5848, 0x20E2, 0x5849, 0x5849, 0x2397, 0x584A, 0x584A, 0x0DEF,
+ 0x584B, 0x584B, 0x0DF2, 0x584C, 0x584C, 0x0DED, 0x584D, 0x584D, 0x2396,
+ 0x584E, 0x584E, 0x239A, 0x584F, 0x584F, 0x2395, 0x5851, 0x5851, 0x0DE7,
+ 0x5852, 0x5852, 0x0DF1, 0x5853, 0x5853, 0x2392, 0x5854, 0x5854, 0x0DEB,
+ 0x5855, 0x5855, 0x2399, 0x5857, 0x5857, 0x0DE9, 0x5858, 0x5858, 0x0DE8,
+ 0x5859, 0x5859, 0x239C, 0x585A, 0x585A, 0x0DEA, 0x585B, 0x585B, 0x239E,
+ 0x585C, 0x585C, 0x4949, 0x585D, 0x585D, 0x239B, 0x585E, 0x585E, 0x0DE6,
+ 0x585F, 0x585F, 0x43DF, 0x5862, 0x5862, 0x0DF0, 0x5863, 0x5863, 0x23A0,
+ 0x5864, 0x5864, 0x2394, 0x5865, 0x5865, 0x239D, 0x5868, 0x5868, 0x2393,
+ 0x5869, 0x5869, 0x3D65, 0x586B, 0x586B, 0x0DEC, 0x586C, 0x586C, 0x399A,
+ 0x586D, 0x586D, 0x0DEE, 0x586F, 0x586F, 0x2398, 0x5871, 0x5871, 0x23A1,
+ 0x5872, 0x5872, 0x3C26, 0x5873, 0x5873, 0x4355, 0x5874, 0x5874, 0x263F,
+ 0x5875, 0x5875, 0x0FA2, 0x5876, 0x5876, 0x2645, 0x5879, 0x5879, 0x0FA7,
+ 0x587A, 0x587A, 0x2641, 0x587B, 0x587B, 0x2648, 0x587C, 0x587C, 0x2639,
+ 0x587D, 0x587D, 0x0FA9, 0x587E, 0x587E, 0x0FA3, 0x587F, 0x587F, 0x263E,
+ 0x5880, 0x5880, 0x1121, 0x5881, 0x5881, 0x263D, 0x5882, 0x5882, 0x2646,
+ 0x5883, 0x5883, 0x0FA4, 0x5885, 0x5885, 0x0FA8, 0x5886, 0x5886, 0x263C,
+ 0x5887, 0x5887, 0x2642, 0x5888, 0x5888, 0x2647, 0x5889, 0x5889, 0x2638,
+ 0x588A, 0x588A, 0x0FA6, 0x588B, 0x588B, 0x2640, 0x588E, 0x588E, 0x2644,
+ 0x588F, 0x588F, 0x264A, 0x5890, 0x5890, 0x263A, 0x5891, 0x5891, 0x2643,
+ 0x5893, 0x5893, 0x0FA5, 0x5894, 0x5894, 0x2649, 0x5898, 0x5898, 0x263B,
+ 0x5899, 0x5899, 0x4618, 0x589A, 0x589A, 0x4903, 0x589C, 0x589C, 0x1125,
+ 0x589D, 0x589D, 0x28A1, 0x589E, 0x589E, 0x1123, 0x589F, 0x589F, 0x1122,
+ 0x58A0, 0x58A0, 0x28A3, 0x58A1, 0x58A1, 0x28A8, 0x58A3, 0x58A3, 0x28A4,
+ 0x58A5, 0x58A5, 0x28A7, 0x58A6, 0x58A6, 0x1128, 0x58A7, 0x58A7, 0x3EEB,
+ 0x58A8, 0x58A8, 0x1288, 0x58A9, 0x58A9, 0x1127, 0x58AA, 0x58AA, 0x40D7,
+ 0x58AB, 0x58AB, 0x28A0, 0x58AC, 0x58AC, 0x28A6, 0x58AE, 0x58AE, 0x1126,
+ 0x58AF, 0x58AF, 0x28A5, 0x58B0, 0x58B0, 0x37A4, 0x58B1, 0x58B1, 0x28A2,
+ 0x58B3, 0x58B3, 0x1124, 0x58B5, 0x58B5, 0x4840, 0x58B6, 0x58B6, 0x3DFD,
+ 0x58BA, 0x58BA, 0x2B18, 0x58BB, 0x58BB, 0x36EB, 0x58BC, 0x58BC, 0x2B1A,
+ 0x58BD, 0x58BD, 0x2B15, 0x58BE, 0x58BE, 0x12A4, 0x58BF, 0x58BF, 0x2B17,
+ 0x58C1, 0x58C1, 0x12A3, 0x58C2, 0x58C2, 0x2B19, 0x58C5, 0x58C5, 0x12A6,
+ 0x58C6, 0x58C6, 0x2B1B, 0x58C7, 0x58C7, 0x12A5, 0x58C8, 0x58C8, 0x2B14,
+ 0x58C9, 0x58C9, 0x2B16, 0x58CB, 0x58CB, 0x3A09, 0x58CE, 0x58CE, 0x13C2,
+ 0x58CF, 0x58CF, 0x2D4D, 0x58D1, 0x58D1, 0x13C1, 0x58D2, 0x58D2, 0x2D4E,
+ 0x58D3, 0x58D3, 0x13C0, 0x58D4, 0x58D4, 0x2D4C, 0x58D5, 0x58D5, 0x13BF,
+ 0x58D6, 0x58D6, 0x2D4B, 0x58D8, 0x58D8, 0x14CD, 0x58D9, 0x58D9, 0x14CC,
+ 0x58DA, 0x58DA, 0x3085, 0x58DB, 0x58DB, 0x3087, 0x58DC, 0x58DC, 0x40DA,
+ 0x58DD, 0x58DD, 0x3086, 0x58DE, 0x58DF, 0x1578, 0x58E0, 0x58E0, 0x40D9,
+ 0x58E2, 0x58E2, 0x157A, 0x58E3, 0x58E3, 0x31CB, 0x58E4, 0x58E4, 0x160E,
+ 0x58E7, 0x58E7, 0x3411, 0x58E8, 0x58E8, 0x3410, 0x58E9, 0x58E9, 0x1720,
+ 0x58EB, 0x58EB, 0x027B, 0x58EC, 0x58EC, 0x02C1, 0x58EF, 0x58EF, 0x046F,
+ 0x58F0, 0x58F0, 0x4549, 0x58F2, 0x58F2, 0x3D68, 0x58F3, 0x58F3, 0x3C7A,
+ 0x58F4, 0x58F4, 0x1A9B, 0x58F9, 0x58FA, 0x0C20, 0x58FB, 0x58FB, 0x40DC,
+ 0x58FC, 0x58FC, 0x23A2, 0x58FD, 0x58FD, 0x0FAA, 0x58FE, 0x58FE, 0x264B,
+ 0x58FF, 0x58FF, 0x28A9, 0x5902, 0x5902, 0x0224, 0x5903, 0x5903, 0x1785,
+ 0x5904, 0x5904, 0x454A, 0x5905, 0x5905, 0x4599, 0x5906, 0x5906, 0x1857,
+ 0x5907, 0x5907, 0x454B, 0x590A, 0x590A, 0x0224, 0x590C, 0x590C, 0x1944,
+ 0x590D, 0x590D, 0x1A9C, 0x590E, 0x590E, 0x1C6C, 0x590F, 0x590F, 0x0880,
+ 0x5911, 0x5911, 0x4274, 0x5912, 0x5912, 0x3088, 0x5914, 0x5914, 0x166D,
+ 0x5915, 0x5915, 0x027C, 0x5916, 0x5916, 0x032E, 0x5917, 0x5917, 0x179C,
+ 0x5919, 0x591A, 0x03B4, 0x591C, 0x591C, 0x0581, 0x591F, 0x591F, 0x40E3,
+ 0x5920, 0x5920, 0x0A44, 0x5922, 0x5922, 0x0FAC, 0x5924, 0x5924, 0x0FAD,
+ 0x5925, 0x5925, 0x0FAB, 0x5927, 0x5927, 0x027D, 0x5929, 0x5929, 0x02C2,
+ 0x592A, 0x592A, 0x02C4, 0x592B, 0x592B, 0x02C3, 0x592C, 0x592C, 0x1786,
+ 0x592D, 0x592D, 0x02C5, 0x592E, 0x592E, 0x032F, 0x592F, 0x592F, 0x179D,
+ 0x5931, 0x5931, 0x0330, 0x5932, 0x5932, 0x454C, 0x5934, 0x5934, 0x454D,
+ 0x5937, 0x5938, 0x03B6, 0x593C, 0x593C, 0x17D4, 0x593E, 0x593E, 0x0470,
+ 0x5940, 0x5940, 0x1858, 0x5944, 0x5944, 0x0585, 0x5945, 0x5945, 0x1945,
+ 0x5947, 0x5948, 0x0583, 0x5949, 0x5949, 0x0582, 0x594A, 0x594A, 0x1C6D,
+ 0x594E, 0x594E, 0x06F2, 0x594F, 0x594F, 0x06F1, 0x5950, 0x5950, 0x06F3,
+ 0x5951, 0x5951, 0x06F0, 0x5953, 0x5953, 0x1A9D, 0x5954, 0x5954, 0x0586,
+ 0x5955, 0x5955, 0x06EF, 0x5957, 0x5958, 0x0881, 0x595A, 0x595A, 0x0883,
+ 0x595C, 0x595C, 0x1E95, 0x5960, 0x5960, 0x0C22, 0x5961, 0x5961, 0x20EF,
+ 0x5962, 0x5962, 0x0A45, 0x5965, 0x5965, 0x4852, 0x5967, 0x5967, 0x0DF3,
+ 0x5969, 0x5969, 0x0FAF, 0x596A, 0x596A, 0x0FAE, 0x596B, 0x596B, 0x264C,
+ 0x596D, 0x596D, 0x1129, 0x596E, 0x596E, 0x12A7, 0x5970, 0x5970, 0x2F17,
+ 0x5971, 0x5971, 0x337B, 0x5972, 0x5972, 0x3412, 0x5973, 0x5973, 0x027E,
+ 0x5974, 0x5974, 0x0331, 0x5975, 0x5975, 0x3E6A, 0x5976, 0x5976, 0x0332,
+ 0x5977, 0x5977, 0x17DA, 0x5978, 0x5978, 0x03B9, 0x5979, 0x5979, 0x03BC,
+ 0x597B, 0x597B, 0x17D8, 0x597C, 0x597C, 0x17D6, 0x597D, 0x597D, 0x03BB,
+ 0x597E, 0x597E, 0x17D9, 0x597F, 0x597F, 0x17DB, 0x5980, 0x5980, 0x17D5,
+ 0x5981, 0x5981, 0x03BE, 0x5982, 0x5982, 0x03BD, 0x5983, 0x5983, 0x03BA,
+ 0x5984, 0x5984, 0x03B8, 0x5985, 0x5985, 0x17D7, 0x5989, 0x5989, 0x3D30,
+ 0x598A, 0x598A, 0x047B, 0x598D, 0x598D, 0x0478, 0x598E, 0x598E, 0x185D,
+ 0x598F, 0x598F, 0x1860, 0x5990, 0x5990, 0x185F, 0x5992, 0x5992, 0x0472,
+ 0x5993, 0x5993, 0x047A, 0x5994, 0x5994, 0x3C99, 0x5996, 0x5996, 0x0477,
+ 0x5997, 0x5997, 0x185C, 0x5998, 0x5998, 0x185A, 0x5999, 0x5999, 0x0476,
+ 0x599A, 0x599A, 0x3BB0, 0x599D, 0x599D, 0x0471, 0x599E, 0x599E, 0x0474,
+ 0x599F, 0x599F, 0x3DAF, 0x59A0, 0x59A0, 0x185B, 0x59A1, 0x59A1, 0x1862,
+ 0x59A2, 0x59A2, 0x185E, 0x59A3, 0x59A3, 0x0475, 0x59A4, 0x59A4, 0x0479,
+ 0x59A5, 0x59A5, 0x047C, 0x59A6, 0x59A6, 0x1859, 0x59A7, 0x59A7, 0x1861,
+ 0x59A8, 0x59A8, 0x0473, 0x59AC, 0x59AC, 0x3D81, 0x59AE, 0x59AE, 0x058B,
+ 0x59AF, 0x59AF, 0x0593, 0x59B0, 0x59B0, 0x3CD8, 0x59B1, 0x59B1, 0x1951,
+ 0x59B2, 0x59B2, 0x194A, 0x59B3, 0x59B3, 0x0594, 0x59B4, 0x59B4, 0x1955,
+ 0x59B5, 0x59B5, 0x1946, 0x59B6, 0x59B6, 0x194D, 0x59B7, 0x59B7, 0x3F2D,
+ 0x59B8, 0x59B8, 0x3A10, 0x59B9, 0x59B9, 0x058A, 0x59BA, 0x59BA, 0x1947,
+ 0x59BB, 0x59BB, 0x0588, 0x59BC, 0x59BC, 0x194E, 0x59BD, 0x59BD, 0x1952,
+ 0x59BE, 0x59BE, 0x0587, 0x59C0, 0x59C0, 0x1953, 0x59C1, 0x59C1, 0x194C,
+ 0x59C3, 0x59C3, 0x194F, 0x59C4, 0x59C4, 0x3D04, 0x59C5, 0x59C5, 0x0596,
+ 0x59C6, 0x59C6, 0x058D, 0x59C7, 0x59C7, 0x1956, 0x59C8, 0x59C8, 0x1954,
+ 0x59C9, 0x59C9, 0x40EC, 0x59CA, 0x59CA, 0x0592, 0x59CB, 0x59CB, 0x0590,
+ 0x59CC, 0x59CC, 0x194B, 0x59CD, 0x59CD, 0x058F, 0x59CE, 0x59CE, 0x1949,
+ 0x59CF, 0x59CF, 0x1948, 0x59D0, 0x59D0, 0x058E, 0x59D1, 0x59D1, 0x058C,
+ 0x59D2, 0x59D2, 0x0595, 0x59D3, 0x59D3, 0x0591, 0x59D4, 0x59D4, 0x0589,
+ 0x59D6, 0x59D6, 0x1950, 0x59D8, 0x59D8, 0x06F5, 0x59D9, 0x59D9, 0x40F1,
+ 0x59DA, 0x59DA, 0x06FC, 0x59DB, 0x59DB, 0x1AAB, 0x59DC, 0x59DC, 0x06F4,
+ 0x59DD, 0x59DD, 0x1AA3, 0x59DE, 0x59DE, 0x1A9F, 0x59E0, 0x59E0, 0x1AAF,
+ 0x59E1, 0x59E1, 0x1A9E, 0x59E3, 0x59E3, 0x06F7, 0x59E4, 0x59E4, 0x1AA8,
+ 0x59E5, 0x59E5, 0x06FA, 0x59E6, 0x59E6, 0x06FD, 0x59E8, 0x59E8, 0x06F8,
+ 0x59E9, 0x59E9, 0x1AAC, 0x59EA, 0x59EA, 0x06FB, 0x59EB, 0x59EB, 0x3D59,
+ 0x59EC, 0x59EC, 0x088A, 0x59ED, 0x59ED, 0x1AB2, 0x59EE, 0x59EE, 0x1AA0,
+ 0x59EF, 0x59EF, 0x3D38, 0x59F0, 0x59F0, 0x3BB2, 0x59F1, 0x59F1, 0x1AA2,
+ 0x59F2, 0x59F2, 0x1AA9, 0x59F3, 0x59F3, 0x1AAD, 0x59F4, 0x59F4, 0x1AB1,
+ 0x59F5, 0x59F5, 0x1AAE, 0x59F6, 0x59F6, 0x1AA7, 0x59F7, 0x59F7, 0x1AAA,
+ 0x59F8, 0x59F8, 0x3E4A, 0x59F9, 0x59F9, 0x40F8, 0x59FA, 0x59FA, 0x1AA4,
+ 0x59FB, 0x59FB, 0x06FF, 0x59FC, 0x59FC, 0x1AA6, 0x59FD, 0x59FD, 0x1AA5,
+ 0x59FE, 0x59FE, 0x1AB0, 0x59FF, 0x59FF, 0x06F6, 0x5A00, 0x5A00, 0x1AA1,
+ 0x5A01, 0x5A01, 0x06FE, 0x5A02, 0x5A02, 0x3B8D, 0x5A03, 0x5A03, 0x06F9,
+ 0x5A09, 0x5A09, 0x0890, 0x5A0A, 0x5A0A, 0x1C75, 0x5A0B, 0x5A0B, 0x3C89,
+ 0x5A0C, 0x5A0C, 0x088F, 0x5A0D, 0x5A0D, 0x3B38, 0x5A0F, 0x5A0F, 0x1C73,
+ 0x5A11, 0x5A11, 0x0884, 0x5A12, 0x5A12, 0x3A13, 0x5A13, 0x5A13, 0x0889,
+ 0x5A15, 0x5A15, 0x1C72, 0x5A16, 0x5A16, 0x1C6F, 0x5A17, 0x5A17, 0x1C74,
+ 0x5A18, 0x5A18, 0x0885, 0x5A19, 0x5A19, 0x1C6E, 0x5A1B, 0x5A1B, 0x0888,
+ 0x5A1C, 0x5A1C, 0x0886, 0x5A1E, 0x5A1E, 0x1C76, 0x5A1F, 0x5A1F, 0x0887,
+ 0x5A20, 0x5A20, 0x088B, 0x5A21, 0x5A21, 0x3A1B, 0x5A23, 0x5A23, 0x088C,
+ 0x5A24, 0x5A24, 0x40E8, 0x5A25, 0x5A25, 0x088E, 0x5A27, 0x5A27, 0x3DE1,
+ 0x5A29, 0x5A29, 0x088D, 0x5A2A, 0x5A2A, 0x3B3B, 0x5A2B, 0x5A2B, 0x3D40,
+ 0x5A2C, 0x5A2C, 0x3A0F, 0x5A2D, 0x5A2E, 0x1C70, 0x5A33, 0x5A33, 0x1C77,
+ 0x5A35, 0x5A35, 0x1E9C, 0x5A36, 0x5A36, 0x0A46, 0x5A37, 0x5A37, 0x20FD,
+ 0x5A38, 0x5A38, 0x1E9B, 0x5A39, 0x5A39, 0x1EAE, 0x5A3C, 0x5A3C, 0x0A4C,
+ 0x5A3D, 0x5A3D, 0x3AC0, 0x5A3E, 0x5A3E, 0x1EAC, 0x5A40, 0x5A40, 0x0A4B,
+ 0x5A41, 0x5A41, 0x0A47, 0x5A42, 0x5A42, 0x1EB5, 0x5A43, 0x5A43, 0x1EA5,
+ 0x5A44, 0x5A44, 0x1EA8, 0x5A45, 0x5A45, 0x3917, 0x5A46, 0x5A46, 0x0A4F,
+ 0x5A47, 0x5A47, 0x1EB2, 0x5A48, 0x5A48, 0x1EAA, 0x5A49, 0x5A49, 0x0A48,
+ 0x5A4A, 0x5A4A, 0x0A50, 0x5A4C, 0x5A4C, 0x1EAF, 0x5A4D, 0x5A4D, 0x1EAD,
+ 0x5A50, 0x5A50, 0x1E9E, 0x5A51, 0x5A51, 0x1EB3, 0x5A52, 0x5A52, 0x1EA7,
+ 0x5A53, 0x5A53, 0x1EA2, 0x5A54, 0x5A54, 0x4603, 0x5A55, 0x5A55, 0x1E98,
+ 0x5A56, 0x5A56, 0x1EB4, 0x5A57, 0x5A57, 0x1EA4, 0x5A58, 0x5A58, 0x1E97,
+ 0x5A59, 0x5A59, 0x3B34, 0x5A5A, 0x5A5A, 0x0A4E, 0x5A5B, 0x5A5B, 0x1EA9,
+ 0x5A5C, 0x5A5C, 0x1EB6, 0x5A5D, 0x5A5D, 0x1EA6, 0x5A5E, 0x5A5E, 0x1E9A,
+ 0x5A5F, 0x5A5F, 0x1E9F, 0x5A60, 0x5A60, 0x1E96, 0x5A61, 0x5A61, 0x3D33,
+ 0x5A62, 0x5A62, 0x0A4D, 0x5A63, 0x5A63, 0x40FB, 0x5A64, 0x5A64, 0x1EA3,
+ 0x5A65, 0x5A65, 0x1EA0, 0x5A66, 0x5A66, 0x0A49, 0x5A67, 0x5A67, 0x1E99,
+ 0x5A68, 0x5A68, 0x39B7, 0x5A69, 0x5A69, 0x1EB1, 0x5A6A, 0x5A6A, 0x0A4A,
+ 0x5A6B, 0x5A6B, 0x3A42, 0x5A6C, 0x5A6C, 0x1EA1, 0x5A6D, 0x5A6D, 0x1E9D,
+ 0x5A6E, 0x5A6E, 0x3D3F, 0x5A70, 0x5A70, 0x1EB0, 0x5A71, 0x5A71, 0x3D34,
+ 0x5A77, 0x5A77, 0x0C23, 0x5A78, 0x5A78, 0x20F6, 0x5A79, 0x5A79, 0x3CE1,
+ 0x5A7A, 0x5A7A, 0x20F3, 0x5A7B, 0x5A7B, 0x2104, 0x5A7C, 0x5A7C, 0x20F8,
+ 0x5A7D, 0x5A7D, 0x2105, 0x5A7E, 0x5A7E, 0x3A11, 0x5A7F, 0x5A7F, 0x0C25,
+ 0x5A81, 0x5A81, 0x3A1D, 0x5A82, 0x5A82, 0x3D31, 0x5A83, 0x5A83, 0x2101,
+ 0x5A84, 0x5A84, 0x20FE, 0x5A86, 0x5A86, 0x3B81, 0x5A88, 0x5A88, 0x4263,
+ 0x5A8A, 0x5A8A, 0x20FF, 0x5A8B, 0x5A8B, 0x2102, 0x5A8C, 0x5A8C, 0x2106,
+ 0x5A8E, 0x5A8E, 0x1EAB, 0x5A8F, 0x5A8F, 0x2108, 0x5A90, 0x5A90, 0x23B6,
+ 0x5A91, 0x5A91, 0x4235, 0x5A92, 0x5A92, 0x0C26, 0x5A93, 0x5A93, 0x2109,
+ 0x5A94, 0x5A94, 0x20F1, 0x5A95, 0x5A95, 0x20FB, 0x5A96, 0x5A96, 0x4100,
+ 0x5A97, 0x5A97, 0x2100, 0x5A99, 0x5A99, 0x3A0A, 0x5A9A, 0x5A9A, 0x0C24,
+ 0x5A9B, 0x5A9B, 0x0C27, 0x5A9C, 0x5A9C, 0x2107, 0x5A9D, 0x5A9D, 0x210A,
+ 0x5A9E, 0x5A9E, 0x20F5, 0x5A9F, 0x5A9F, 0x20F2, 0x5AA0, 0x5AA0, 0x4172,
+ 0x5AA1, 0x5AA1, 0x3CDC, 0x5AA2, 0x5AA2, 0x20F4, 0x5AA5, 0x5AA5, 0x20F9,
+ 0x5AA6, 0x5AA6, 0x20F7, 0x5AA7, 0x5AA7, 0x0C28, 0x5AA9, 0x5AA9, 0x2103,
+ 0x5AAB, 0x5AAB, 0x40FA, 0x5AAC, 0x5AAC, 0x20FA, 0x5AAE, 0x5AAE, 0x20FC,
+ 0x5AAF, 0x5AAF, 0x20F0, 0x5AB0, 0x5AB0, 0x23AA, 0x5AB1, 0x5AB1, 0x23A8,
+ 0x5AB2, 0x5AB2, 0x0DFC, 0x5AB3, 0x5AB3, 0x0DFA, 0x5AB4, 0x5AB4, 0x23B2,
+ 0x5AB5, 0x5AB5, 0x23A9, 0x5AB6, 0x5AB6, 0x23B3, 0x5AB7, 0x5AB7, 0x23AF,
+ 0x5AB8, 0x5AB8, 0x23A7, 0x5AB9, 0x5AB9, 0x23B5, 0x5ABA, 0x5ABA, 0x23A6,
+ 0x5ABB, 0x5ABB, 0x23AD, 0x5ABC, 0x5ABC, 0x0DF9, 0x5ABD, 0x5ABD, 0x0DF8,
+ 0x5ABE, 0x5ABE, 0x0DF7, 0x5ABF, 0x5ABF, 0x23AB, 0x5AC0, 0x5AC0, 0x23B0,
+ 0x5AC1, 0x5AC1, 0x0DF4, 0x5AC2, 0x5AC2, 0x0DFB, 0x5AC3, 0x5AC3, 0x3896,
+ 0x5AC4, 0x5AC4, 0x23A4, 0x5AC6, 0x5AC6, 0x23AE, 0x5AC7, 0x5AC7, 0x23A3,
+ 0x5AC8, 0x5AC8, 0x23AC, 0x5AC9, 0x5AC9, 0x0DF5, 0x5ACA, 0x5ACA, 0x23B1,
+ 0x5ACB, 0x5ACB, 0x23A5, 0x5ACC, 0x5ACC, 0x0DF6, 0x5ACD, 0x5ACD, 0x23B4,
+ 0x5ACE, 0x5ACE, 0x3C88, 0x5ACF, 0x5ACF, 0x43B5, 0x5AD3, 0x5AD3, 0x4102,
+ 0x5AD5, 0x5AD5, 0x2650, 0x5AD6, 0x5AD6, 0x0FB4, 0x5AD7, 0x5AD7, 0x0FB3,
+ 0x5AD8, 0x5AD8, 0x0FB5, 0x5AD9, 0x5AD9, 0x265C, 0x5ADA, 0x5ADA, 0x2652,
+ 0x5ADB, 0x5ADB, 0x2658, 0x5ADC, 0x5ADC, 0x264D, 0x5ADD, 0x5ADD, 0x265B,
+ 0x5ADE, 0x5ADE, 0x265A, 0x5ADF, 0x5ADF, 0x265E, 0x5AE0, 0x5AE0, 0x2657,
+ 0x5AE1, 0x5AE1, 0x0FB0, 0x5AE2, 0x5AE2, 0x2656, 0x5AE3, 0x5AE3, 0x0FB6,
+ 0x5AE4, 0x5AE4, 0x3B86, 0x5AE5, 0x5AE5, 0x264F, 0x5AE6, 0x5AE6, 0x0FB1,
+ 0x5AE8, 0x5AE8, 0x265D, 0x5AE9, 0x5AE9, 0x0FB2, 0x5AEA, 0x5AEA, 0x2651,
+ 0x5AEB, 0x5AEB, 0x2654, 0x5AEC, 0x5AEC, 0x2659, 0x5AED, 0x5AED, 0x2653,
+ 0x5AEE, 0x5AEE, 0x264E, 0x5AF0, 0x5AF0, 0x3EE7, 0x5AF2, 0x5AF2, 0x37F5,
+ 0x5AF3, 0x5AF3, 0x2655, 0x5AF4, 0x5AF4, 0x28AB, 0x5AF5, 0x5AF5, 0x112D,
+ 0x5AF6, 0x5AF6, 0x28AE, 0x5AF7, 0x5AF7, 0x28AD, 0x5AF8, 0x5AF8, 0x28B0,
+ 0x5AF9, 0x5AF9, 0x28B2, 0x5AFA, 0x5AFA, 0x36EE, 0x5AFB, 0x5AFB, 0x112B,
+ 0x5AFD, 0x5AFD, 0x28AC, 0x5AFE, 0x5AFE, 0x3C1D, 0x5AFF, 0x5AFF, 0x28AA,
+ 0x5B01, 0x5B01, 0x28B3, 0x5B02, 0x5B02, 0x28B1, 0x5B03, 0x5B03, 0x28AF,
+ 0x5B05, 0x5B05, 0x28B5, 0x5B07, 0x5B07, 0x28B4, 0x5B08, 0x5B08, 0x112F,
+ 0x5B09, 0x5B09, 0x112A, 0x5B0B, 0x5B0B, 0x112C, 0x5B0C, 0x5B0C, 0x112E,
+ 0x5B0D, 0x5B0D, 0x48FF, 0x5B0F, 0x5B0F, 0x28B6, 0x5B10, 0x5B10, 0x2B22,
+ 0x5B11, 0x5B11, 0x3BF6, 0x5B13, 0x5B13, 0x2B21, 0x5B14, 0x5B14, 0x2B20,
+ 0x5B16, 0x5B16, 0x2B23, 0x5B17, 0x5B17, 0x2B1C, 0x5B19, 0x5B19, 0x2B1D,
+ 0x5B1A, 0x5B1A, 0x2B25, 0x5B1B, 0x5B1B, 0x2B1E, 0x5B1D, 0x5B1D, 0x12A8,
+ 0x5B1E, 0x5B1E, 0x2B27, 0x5B1F, 0x5B1F, 0x4941, 0x5B20, 0x5B20, 0x2B26,
+ 0x5B21, 0x5B21, 0x2B1F, 0x5B23, 0x5B23, 0x2D52, 0x5B24, 0x5B24, 0x13C5,
+ 0x5B25, 0x5B25, 0x2D50, 0x5B26, 0x5B26, 0x2D55, 0x5B27, 0x5B27, 0x2D54,
+ 0x5B28, 0x5B28, 0x2B24, 0x5B2A, 0x5B2A, 0x13C4, 0x5B2B, 0x5B2B, 0x3B84,
+ 0x5B2C, 0x5B2C, 0x2D53, 0x5B2D, 0x5B2D, 0x2D4F, 0x5B2E, 0x5B2E, 0x2D57,
+ 0x5B2F, 0x5B2F, 0x2D56, 0x5B30, 0x5B30, 0x13C3, 0x5B32, 0x5B32, 0x2D51,
+ 0x5B34, 0x5B34, 0x12A9, 0x5B38, 0x5B38, 0x14CE, 0x5B3C, 0x5B3C, 0x2F18,
+ 0x5B3D, 0x5B3F, 0x3089, 0x5B40, 0x5B40, 0x160F, 0x5B41, 0x5B41, 0x38C8,
+ 0x5B43, 0x5B43, 0x1610, 0x5B44, 0x5B44, 0x3A44, 0x5B45, 0x5B45, 0x31CC,
+ 0x5B46, 0x5B46, 0x42B2, 0x5B47, 0x5B47, 0x32CD, 0x5B48, 0x5B48, 0x32CC,
+ 0x5B4A, 0x5B4A, 0x38CD, 0x5B4B, 0x5B4C, 0x337C, 0x5B4D, 0x5B4D, 0x3413,
+ 0x5B4E, 0x5B4E, 0x3482, 0x5B4F, 0x5B4F, 0x3A31, 0x5B50, 0x5B51, 0x027F,
+ 0x5B53, 0x5B53, 0x0281, 0x5B54, 0x5B54, 0x02C6, 0x5B55, 0x5B55, 0x0333,
+ 0x5B56, 0x5B56, 0x17DC, 0x5B57, 0x5B58, 0x03BF, 0x5B5A, 0x5B5B, 0x047F,
+ 0x5B5C, 0x5B5C, 0x047E, 0x5B5D, 0x5B5D, 0x047D, 0x5B5F, 0x5B5F, 0x0597,
+ 0x5B62, 0x5B62, 0x1957, 0x5B63, 0x5B63, 0x0599, 0x5B64, 0x5B64, 0x0598,
+ 0x5B65, 0x5B65, 0x1958, 0x5B66, 0x5B66, 0x454E, 0x5B68, 0x5B68, 0x461D,
+ 0x5B69, 0x5B69, 0x0700, 0x5B6B, 0x5B6B, 0x0891, 0x5B6C, 0x5B6C, 0x1C78,
+ 0x5B6D, 0x5B6D, 0x3E5F, 0x5B6E, 0x5B6E, 0x1EB8, 0x5B70, 0x5B70, 0x0A51,
+ 0x5B71, 0x5B71, 0x0C2A, 0x5B72, 0x5B72, 0x1EB7, 0x5B73, 0x5B73, 0x0C29,
+ 0x5B74, 0x5B74, 0x3732, 0x5B75, 0x5B75, 0x0FB7, 0x5B76, 0x5B76, 0x410A,
+ 0x5B77, 0x5B77, 0x265F, 0x5B78, 0x5B78, 0x12AA, 0x5B7A, 0x5B7A, 0x13C6,
+ 0x5B7B, 0x5B7B, 0x2D58, 0x5B7C, 0x5B7C, 0x410C, 0x5B7D, 0x5B7D, 0x1611,
+ 0x5B7F, 0x5B7F, 0x16C0, 0x5B80, 0x5B80, 0x0225, 0x5B81, 0x5B81, 0x179E,
+ 0x5B82, 0x5B82, 0x4044, 0x5B83, 0x5B83, 0x0334, 0x5B84, 0x5B84, 0x179F,
+ 0x5B85, 0x5B85, 0x03C3, 0x5B87, 0x5B88, 0x03C1, 0x5B89, 0x5B89, 0x03C4,
+ 0x5B8B, 0x5B8B, 0x0482, 0x5B8C, 0x5B8C, 0x0481, 0x5B8E, 0x5B8E, 0x1863,
+ 0x5B8F, 0x5B8F, 0x0483, 0x5B90, 0x5B90, 0x48E9, 0x5B92, 0x5B92, 0x1864,
+ 0x5B93, 0x5B93, 0x1959, 0x5B95, 0x5B95, 0x195A, 0x5B97, 0x5B97, 0x059A,
+ 0x5B98, 0x5B98, 0x059C, 0x5B99, 0x5B99, 0x059E, 0x5B9A, 0x5B9A, 0x059B,
+ 0x5B9B, 0x5B9B, 0x059F, 0x5B9C, 0x5B9C, 0x059D, 0x5B9D, 0x5B9D, 0x4116,
+ 0x5B9E, 0x5B9F, 0x454F, 0x5BA2, 0x5BA2, 0x0704, 0x5BA3, 0x5BA3, 0x0701,
+ 0x5BA4, 0x5BA4, 0x0703, 0x5BA5, 0x5BA5, 0x0705, 0x5BA6, 0x5BA6, 0x0702,
+ 0x5BA7, 0x5BA7, 0x1C79, 0x5BA8, 0x5BA8, 0x1AB3, 0x5BAA, 0x5BAA, 0x417B,
+ 0x5BAC, 0x5BAC, 0x1C7B, 0x5BAD, 0x5BAD, 0x1C7A, 0x5BAE, 0x5BAE, 0x0897,
+ 0x5BB0, 0x5BB0, 0x0893, 0x5BB3, 0x5BB3, 0x0894, 0x5BB4, 0x5BB4, 0x0896,
+ 0x5BB5, 0x5BB5, 0x0898, 0x5BB6, 0x5BB6, 0x0895, 0x5BB8, 0x5BB8, 0x089A,
+ 0x5BB9, 0x5BB9, 0x0899, 0x5BBF, 0x5BBF, 0x0A56, 0x5BC0, 0x5BC0, 0x1EBA,
+ 0x5BC1, 0x5BC1, 0x1EB9, 0x5BC2, 0x5BC2, 0x0A55, 0x5BC3, 0x5BC3, 0x3F25,
+ 0x5BC4, 0x5BC4, 0x0A54, 0x5BC5, 0x5BC5, 0x0A53, 0x5BC6, 0x5BC6, 0x0A57,
+ 0x5BC7, 0x5BC7, 0x0A52, 0x5BCA, 0x5BCA, 0x2110, 0x5BCB, 0x5BCB, 0x210D,
+ 0x5BCC, 0x5BCC, 0x0C2C, 0x5BCD, 0x5BCD, 0x210C, 0x5BCE, 0x5BCE, 0x2111,
+ 0x5BD0, 0x5BD0, 0x0C2E, 0x5BD1, 0x5BD1, 0x210F, 0x5BD2, 0x5BD2, 0x0C2B,
+ 0x5BD3, 0x5BD3, 0x0C2D, 0x5BD4, 0x5BD4, 0x210E, 0x5BD5, 0x5BD5, 0x4111,
+ 0x5BD6, 0x5BD6, 0x23B7, 0x5BD7, 0x5BD7, 0x42BB, 0x5BD8, 0x5BD9, 0x23B8,
+ 0x5BDE, 0x5BDE, 0x0FB8, 0x5BDF, 0x5BDF, 0x0FC0, 0x5BE0, 0x5BE0, 0x2660,
+ 0x5BE1, 0x5BE1, 0x0FBA, 0x5BE2, 0x5BE2, 0x0FBE, 0x5BE3, 0x5BE3, 0x2661,
+ 0x5BE4, 0x5BE4, 0x0FBF, 0x5BE5, 0x5BE6, 0x0FBB, 0x5BE7, 0x5BE7, 0x0FB9,
+ 0x5BE8, 0x5BE8, 0x0FBD, 0x5BE9, 0x5BE9, 0x1132, 0x5BEA, 0x5BEA, 0x210B,
+ 0x5BEB, 0x5BEB, 0x1133, 0x5BEC, 0x5BEC, 0x1131, 0x5BEE, 0x5BEE, 0x1130,
+ 0x5BEF, 0x5BEF, 0x2B28, 0x5BF0, 0x5BF0, 0x12AB, 0x5BF1, 0x5BF2, 0x2D59,
+ 0x5BF3, 0x5BF3, 0x4115, 0x5BF5, 0x5BF5, 0x157B, 0x5BF6, 0x5BF6, 0x1612,
+ 0x5BF8, 0x5BF8, 0x0282, 0x5BFA, 0x5BFA, 0x03C5, 0x5BFF, 0x5BFF, 0x40DD,
+ 0x5C01, 0x5C01, 0x0706, 0x5C03, 0x5C03, 0x1C7C, 0x5C04, 0x5C04, 0x089B,
+ 0x5C05, 0x5C05, 0x4118, 0x5C07, 0x5C07, 0x0A5A, 0x5C08, 0x5C08, 0x0A59,
+ 0x5C09, 0x5C09, 0x0A58, 0x5C0A, 0x5C0B, 0x0C2F, 0x5C0C, 0x5C0C, 0x2112,
+ 0x5C0D, 0x5C0D, 0x0FC1, 0x5C0E, 0x5C0E, 0x12AC, 0x5C0F, 0x5C0F, 0x0283,
+ 0x5C10, 0x5C10, 0x1787, 0x5C11, 0x5C11, 0x02C7, 0x5C12, 0x5C12, 0x17A0,
+ 0x5C13, 0x5C13, 0x411A, 0x5C14, 0x5C14, 0x411C, 0x5C15, 0x5C15, 0x17DD,
+ 0x5C16, 0x5C16, 0x03C6, 0x5C1A, 0x5C1A, 0x05A0, 0x5C1C, 0x5C1C, 0x45EA,
+ 0x5C1E, 0x5C1E, 0x3A29, 0x5C1F, 0x5C1F, 0x23BA, 0x5C20, 0x5C20, 0x3D89,
+ 0x5C22, 0x5C22, 0x0284, 0x5C23, 0x5C23, 0x44E8, 0x5C24, 0x5C24, 0x02C8,
+ 0x5C25, 0x5C25, 0x17DE, 0x5C28, 0x5C28, 0x1865, 0x5C2A, 0x5C2A, 0x1866,
+ 0x5C2C, 0x5C2C, 0x0484, 0x5C30, 0x5C30, 0x2113, 0x5C31, 0x5C31, 0x0C31,
+ 0x5C33, 0x5C33, 0x23BB, 0x5C37, 0x5C37, 0x13C7, 0x5C38, 0x5C38, 0x0285,
+ 0x5C39, 0x5C39, 0x0299, 0x5C3A, 0x5C3A, 0x02C9, 0x5C3B, 0x5C3B, 0x17A1,
+ 0x5C3C, 0x5C3C, 0x0335, 0x5C3E, 0x5C3E, 0x0488, 0x5C3F, 0x5C3F, 0x0487,
+ 0x5C40, 0x5C41, 0x0485, 0x5C44, 0x5C44, 0x195B, 0x5C45, 0x5C46, 0x05A2,
+ 0x5C47, 0x5C47, 0x195C, 0x5C48, 0x5C48, 0x05A1, 0x5C49, 0x5C49, 0x411F,
+ 0x5C4A, 0x5C4A, 0x3F5C, 0x5C4B, 0x5C4B, 0x070A, 0x5C4C, 0x5C4C, 0x1AB4,
+ 0x5C4D, 0x5C4D, 0x0709, 0x5C4E, 0x5C4F, 0x0707, 0x5C50, 0x5C50, 0x089E,
+ 0x5C51, 0x5C51, 0x089C, 0x5C53, 0x5C53, 0x3F02, 0x5C54, 0x5C54, 0x1C7E,
+ 0x5C55, 0x5C55, 0x089D, 0x5C56, 0x5C56, 0x1C7D, 0x5C58, 0x5C58, 0x0892,
+ 0x5C59, 0x5C59, 0x1EBB, 0x5C5C, 0x5C5D, 0x0A5C, 0x5C5E, 0x5C5E, 0x3D67,
+ 0x5C60, 0x5C60, 0x0A5B, 0x5C62, 0x5C62, 0x0FC2, 0x5C63, 0x5C63, 0x2662,
+ 0x5C64, 0x5C65, 0x1134, 0x5C67, 0x5C67, 0x28B7, 0x5C68, 0x5C68, 0x13C8,
+ 0x5C69, 0x5C6A, 0x2F19, 0x5C6C, 0x5C6C, 0x166E, 0x5C6D, 0x5C6D, 0x3483,
+ 0x5C6E, 0x5C6E, 0x1776, 0x5C6F, 0x5C6F, 0x02CA, 0x5C71, 0x5C71, 0x0286,
+ 0x5C73, 0x5C73, 0x17A3, 0x5C74, 0x5C74, 0x17A2, 0x5C79, 0x5C79, 0x03C7,
+ 0x5C7A, 0x5C7B, 0x17E0, 0x5C7C, 0x5C7C, 0x17DF, 0x5C7E, 0x5C7E, 0x17E2,
+ 0x5C85, 0x5C85, 0x4121, 0x5C86, 0x5C86, 0x186E, 0x5C88, 0x5C88, 0x1869,
+ 0x5C89, 0x5C89, 0x186B, 0x5C8A, 0x5C8A, 0x186D, 0x5C8B, 0x5C8B, 0x186A,
+ 0x5C8C, 0x5C8C, 0x048C, 0x5C8D, 0x5C8D, 0x1867, 0x5C8F, 0x5C8F, 0x1868,
+ 0x5C90, 0x5C91, 0x0489, 0x5C92, 0x5C92, 0x186C, 0x5C93, 0x5C93, 0x186F,
+ 0x5C94, 0x5C94, 0x048B, 0x5C95, 0x5C95, 0x1870, 0x5C99, 0x5C99, 0x468C,
+ 0x5C9A, 0x5C9A, 0x4551, 0x5C9C, 0x5C9C, 0x495A, 0x5C9D, 0x5C9D, 0x196A,
+ 0x5C9E, 0x5C9E, 0x3A2A, 0x5C9F, 0x5C9F, 0x1964, 0x5CA0, 0x5CA0, 0x195F,
+ 0x5CA1, 0x5CA1, 0x05A5, 0x5CA2, 0x5CA2, 0x1967, 0x5CA3, 0x5CA3, 0x1965,
+ 0x5CA4, 0x5CA4, 0x195E, 0x5CA5, 0x5CA5, 0x196B, 0x5CA6, 0x5CA6, 0x196E,
+ 0x5CA7, 0x5CA7, 0x1969, 0x5CA8, 0x5CA8, 0x1962, 0x5CA9, 0x5CA9, 0x05A7,
+ 0x5CAA, 0x5CAA, 0x1968, 0x5CAB, 0x5CAB, 0x05A8, 0x5CAC, 0x5CAC, 0x1963,
+ 0x5CAD, 0x5CAD, 0x1966, 0x5CAE, 0x5CAE, 0x195D, 0x5CAF, 0x5CAF, 0x1961,
+ 0x5CB0, 0x5CB0, 0x196D, 0x5CB1, 0x5CB1, 0x05A9, 0x5CB3, 0x5CB3, 0x05AA,
+ 0x5CB5, 0x5CB5, 0x1960, 0x5CB6, 0x5CB6, 0x196C, 0x5CB7, 0x5CB7, 0x05A4,
+ 0x5CB8, 0x5CB8, 0x05A6, 0x5CBA, 0x5CBA, 0x412B, 0x5CC1, 0x5CC1, 0x43B8,
+ 0x5CC2, 0x5CC2, 0x3D4C, 0x5CC6, 0x5CC6, 0x1AC5, 0x5CC7, 0x5CC7, 0x1ABE,
+ 0x5CC8, 0x5CC8, 0x1AC4, 0x5CC9, 0x5CC9, 0x1ABD, 0x5CCA, 0x5CCA, 0x1ABF,
+ 0x5CCB, 0x5CCB, 0x1AB9, 0x5CCC, 0x5CCC, 0x1AB7, 0x5CCE, 0x5CCE, 0x1AC6,
+ 0x5CCF, 0x5CCF, 0x1AC3, 0x5CD0, 0x5CD0, 0x1AB5, 0x5CD1, 0x5CD1, 0x3F13,
+ 0x5CD2, 0x5CD2, 0x070C, 0x5CD3, 0x5CD4, 0x1AC1, 0x5CD6, 0x5CD6, 0x1AC0,
+ 0x5CD7, 0x5CD7, 0x1AB8, 0x5CD8, 0x5CD8, 0x1AB6, 0x5CD9, 0x5CD9, 0x070B,
+ 0x5CDA, 0x5CDA, 0x1ABC, 0x5CDB, 0x5CDB, 0x1ABA, 0x5CDE, 0x5CDE, 0x1ABB,
+ 0x5CDF, 0x5CDF, 0x1AC7, 0x5CE5, 0x5CE5, 0x4637, 0x5CE8, 0x5CE8, 0x08A3,
+ 0x5CE9, 0x5CE9, 0x4122, 0x5CEA, 0x5CEA, 0x08A2, 0x5CEC, 0x5CEC, 0x1C7F,
+ 0x5CED, 0x5CED, 0x089F, 0x5CEE, 0x5CEE, 0x1C81, 0x5CEF, 0x5CEF, 0x4123,
+ 0x5CF0, 0x5CF0, 0x08A4, 0x5CF1, 0x5CF1, 0x1C82, 0x5CF4, 0x5CF4, 0x08A7,
+ 0x5CF6, 0x5CF6, 0x08A5, 0x5CF7, 0x5CF7, 0x1C83, 0x5CF8, 0x5CF8, 0x1AC8,
+ 0x5CF9, 0x5CF9, 0x1C85, 0x5CFB, 0x5CFB, 0x08A1, 0x5CFD, 0x5CFD, 0x08A0,
+ 0x5CFF, 0x5CFF, 0x1C80, 0x5D00, 0x5D00, 0x1C84, 0x5D01, 0x5D01, 0x08A6,
+ 0x5D06, 0x5D06, 0x0A5F, 0x5D07, 0x5D07, 0x0A5E, 0x5D0B, 0x5D0B, 0x1EBD,
+ 0x5D0C, 0x5D0C, 0x1EC1, 0x5D0D, 0x5D0D, 0x1EC3, 0x5D0E, 0x5D0E, 0x0A60,
+ 0x5D0F, 0x5D0F, 0x1EC6, 0x5D10, 0x5D10, 0x4127, 0x5D11, 0x5D11, 0x0A64,
+ 0x5D12, 0x5D12, 0x1EC8, 0x5D14, 0x5D14, 0x0A66, 0x5D15, 0x5D15, 0x43B9,
+ 0x5D16, 0x5D16, 0x0A62, 0x5D17, 0x5D17, 0x0A6A, 0x5D18, 0x5D18, 0x4128,
+ 0x5D19, 0x5D19, 0x0A67, 0x5D1A, 0x5D1A, 0x1EBF, 0x5D1B, 0x5D1B, 0x0A61,
+ 0x5D1D, 0x5D1D, 0x1EBE, 0x5D1E, 0x5D1E, 0x1EBC, 0x5D1F, 0x5D1F, 0x1ECA,
+ 0x5D20, 0x5D20, 0x1EC0, 0x5D22, 0x5D22, 0x0A63, 0x5D23, 0x5D23, 0x1EC9,
+ 0x5D24, 0x5D24, 0x0A68, 0x5D25, 0x5D25, 0x1EC5, 0x5D26, 0x5D26, 0x1EC4,
+ 0x5D27, 0x5D27, 0x0A69, 0x5D28, 0x5D28, 0x1EC2, 0x5D29, 0x5D29, 0x0A65,
+ 0x5D2C, 0x5D2C, 0x3DF7, 0x5D2E, 0x5D2E, 0x1ECB, 0x5D2F, 0x5D2F, 0x46D3,
+ 0x5D30, 0x5D30, 0x1EC7, 0x5D31, 0x5D31, 0x2122, 0x5D32, 0x5D32, 0x2129,
+ 0x5D33, 0x5D33, 0x211E, 0x5D34, 0x5D34, 0x0C34, 0x5D35, 0x5D35, 0x211A,
+ 0x5D36, 0x5D36, 0x212A, 0x5D37, 0x5D37, 0x2114, 0x5D38, 0x5D38, 0x2127,
+ 0x5D39, 0x5D39, 0x2125, 0x5D3A, 0x5D3A, 0x211F, 0x5D3C, 0x5D3C, 0x2128,
+ 0x5D3D, 0x5D3D, 0x2121, 0x5D3E, 0x5D3E, 0x4629, 0x5D3F, 0x5D3F, 0x2119,
+ 0x5D40, 0x5D40, 0x212B, 0x5D41, 0x5D41, 0x2117, 0x5D42, 0x5D42, 0x2124,
+ 0x5D43, 0x5D43, 0x2115, 0x5D45, 0x5D45, 0x212C, 0x5D46, 0x5D46, 0x4129,
+ 0x5D47, 0x5D47, 0x0C35, 0x5D48, 0x5D48, 0x462A, 0x5D49, 0x5D49, 0x2126,
+ 0x5D4A, 0x5D4A, 0x23BE, 0x5D4B, 0x5D4B, 0x2118, 0x5D4C, 0x5D4C, 0x0C32,
+ 0x5D4E, 0x5D4E, 0x211C, 0x5D50, 0x5D50, 0x0C33, 0x5D51, 0x5D51, 0x211B,
+ 0x5D52, 0x5D52, 0x2120, 0x5D55, 0x5D55, 0x211D, 0x5D56, 0x5D56, 0x43BA,
+ 0x5D57, 0x5D57, 0x3FCA, 0x5D59, 0x5D59, 0x2123, 0x5D5B, 0x5D5B, 0x3DD5,
+ 0x5D5E, 0x5D5E, 0x23C2, 0x5D62, 0x5D62, 0x23C5, 0x5D63, 0x5D63, 0x23BD,
+ 0x5D65, 0x5D65, 0x23BF, 0x5D67, 0x5D67, 0x23C4, 0x5D68, 0x5D68, 0x23C3,
+ 0x5D69, 0x5D69, 0x0DFD, 0x5D6B, 0x5D6B, 0x2116, 0x5D6C, 0x5D6C, 0x23C1,
+ 0x5D6F, 0x5D6F, 0x0DFE, 0x5D70, 0x5D70, 0x46E4, 0x5D71, 0x5D71, 0x23BC,
+ 0x5D72, 0x5D72, 0x23C0, 0x5D74, 0x5D74, 0x3EEF, 0x5D77, 0x5D77, 0x2669,
+ 0x5D79, 0x5D79, 0x2670, 0x5D7A, 0x5D7A, 0x2667, 0x5D7C, 0x5D7C, 0x266E,
+ 0x5D7D, 0x5D7D, 0x2665, 0x5D7E, 0x5D7E, 0x266D, 0x5D7F, 0x5D7F, 0x2671,
+ 0x5D80, 0x5D80, 0x2664, 0x5D81, 0x5D81, 0x2668, 0x5D82, 0x5D82, 0x2663,
+ 0x5D84, 0x5D84, 0x0FC3, 0x5D85, 0x5D85, 0x3E34, 0x5D86, 0x5D86, 0x2666,
+ 0x5D87, 0x5D87, 0x0FC4, 0x5D88, 0x5D88, 0x266C, 0x5D89, 0x5D89, 0x266B,
+ 0x5D8A, 0x5D8A, 0x266A, 0x5D8B, 0x5D8B, 0x4124, 0x5D8D, 0x5D8D, 0x266F,
+ 0x5D8E, 0x5D8E, 0x3F0C, 0x5D92, 0x5D92, 0x28BB, 0x5D93, 0x5D93, 0x28BD,
+ 0x5D94, 0x5D94, 0x1137, 0x5D95, 0x5D95, 0x28BE, 0x5D97, 0x5D97, 0x28B9,
+ 0x5D99, 0x5D99, 0x28B8, 0x5D9A, 0x5D9A, 0x28C2, 0x5D9C, 0x5D9C, 0x28C0,
+ 0x5D9D, 0x5D9D, 0x1136, 0x5D9E, 0x5D9E, 0x28C3, 0x5D9F, 0x5D9F, 0x28BA,
+ 0x5DA0, 0x5DA0, 0x28BF, 0x5DA1, 0x5DA1, 0x28C1, 0x5DA2, 0x5DA2, 0x28BC,
+ 0x5DA4, 0x5DA4, 0x462D, 0x5DA7, 0x5DA7, 0x2B2C, 0x5DA8, 0x5DA8, 0x2B31,
+ 0x5DA9, 0x5DA9, 0x2B2B, 0x5DAA, 0x5DAA, 0x2B30, 0x5DAB, 0x5DAB, 0x3E39,
+ 0x5DAC, 0x5DAC, 0x2B29, 0x5DAD, 0x5DAD, 0x2B33, 0x5DAE, 0x5DAE, 0x2B2F,
+ 0x5DAF, 0x5DAF, 0x2B34, 0x5DB0, 0x5DB0, 0x2B2E, 0x5DB1, 0x5DB1, 0x2B2A,
+ 0x5DB2, 0x5DB2, 0x2B32, 0x5DB4, 0x5DB4, 0x2B35, 0x5DB5, 0x5DB5, 0x2B2D,
+ 0x5DB6, 0x5DB6, 0x4158, 0x5DB7, 0x5DB7, 0x2D5B, 0x5DB8, 0x5DB8, 0x13CC,
+ 0x5DB9, 0x5DB9, 0x462E, 0x5DBA, 0x5DBA, 0x13CA, 0x5DBC, 0x5DBC, 0x13C9,
+ 0x5DBD, 0x5DBD, 0x13CB, 0x5DC0, 0x5DC0, 0x2F1B, 0x5DC1, 0x5DC1, 0x3BFF,
+ 0x5DC2, 0x5DC2, 0x3023, 0x5DC3, 0x5DC3, 0x308C, 0x5DC6, 0x5DC7, 0x31CD,
+ 0x5DC9, 0x5DC9, 0x1613, 0x5DCB, 0x5DCB, 0x32CE, 0x5DCD, 0x5DCD, 0x166F,
+ 0x5DCF, 0x5DCF, 0x32CF, 0x5DD1, 0x5DD1, 0x337F, 0x5DD2, 0x5DD2, 0x16C2,
+ 0x5DD4, 0x5DD4, 0x16C1, 0x5DD5, 0x5DD5, 0x337E, 0x5DD6, 0x5DD6, 0x16F7,
+ 0x5DD7, 0x5DD7, 0x412C, 0x5DD8, 0x5DD8, 0x3414, 0x5DDB, 0x5DDB, 0x0226,
+ 0x5DDD, 0x5DDD, 0x0287, 0x5DDE, 0x5DDE, 0x03C8, 0x5DDF, 0x5DDF, 0x17E3,
+ 0x5DE0, 0x5DE0, 0x1871, 0x5DE1, 0x5DE1, 0x051A, 0x5DE2, 0x5DE2, 0x0A6B,
+ 0x5DE5, 0x5DE5, 0x0288, 0x5DE6, 0x5DE6, 0x0338, 0x5DE7, 0x5DE7, 0x0337,
+ 0x5DE8, 0x5DE8, 0x0336, 0x5DEB, 0x5DEB, 0x048D, 0x5DEE, 0x5DEE, 0x08A8,
+ 0x5DF0, 0x5DF0, 0x23C6, 0x5DF1, 0x5DF3, 0x0289, 0x5DF4, 0x5DF4, 0x02CB,
+ 0x5DF5, 0x5DF5, 0x3F61, 0x5DF7, 0x5DF7, 0x070D, 0x5DF9, 0x5DF9, 0x1AC9,
+ 0x5DFD, 0x5DFD, 0x0C36, 0x5DFE, 0x5DFE, 0x028C, 0x5DFF, 0x5DFF, 0x1788,
+ 0x5E02, 0x5E03, 0x0339, 0x5E04, 0x5E04, 0x17A4, 0x5E06, 0x5E06, 0x03C9,
+ 0x5E09, 0x5E09, 0x4140, 0x5E0A, 0x5E0A, 0x1872, 0x5E0B, 0x5E0B, 0x3D8A,
+ 0x5E0C, 0x5E0C, 0x048E, 0x5E0E, 0x5E0E, 0x1873, 0x5E11, 0x5E11, 0x05B0,
+ 0x5E12, 0x5E12, 0x3F2E, 0x5E14, 0x5E14, 0x1970, 0x5E15, 0x5E15, 0x05AE,
+ 0x5E16, 0x5E16, 0x05AD, 0x5E17, 0x5E17, 0x196F, 0x5E18, 0x5E18, 0x05AB,
+ 0x5E19, 0x5E19, 0x1971, 0x5E1A, 0x5E1A, 0x05AC, 0x5E1B, 0x5E1B, 0x05AF,
+ 0x5E1D, 0x5E1D, 0x070E, 0x5E1F, 0x5E1F, 0x0710, 0x5E20, 0x5E20, 0x1ACD,
+ 0x5E21, 0x5E23, 0x1ACA, 0x5E24, 0x5E24, 0x1ACE, 0x5E25, 0x5E25, 0x070F,
+ 0x5E28, 0x5E28, 0x1C87, 0x5E29, 0x5E29, 0x1C86, 0x5E2B, 0x5E2B, 0x08AA,
+ 0x5E2D, 0x5E2D, 0x08A9, 0x5E2E, 0x5E2E, 0x4135, 0x5E33, 0x5E33, 0x0A6E,
+ 0x5E34, 0x5E34, 0x1ECD, 0x5E36, 0x5E36, 0x0A6D, 0x5E37, 0x5E37, 0x0A6F,
+ 0x5E38, 0x5E38, 0x0A6C, 0x5E3D, 0x5E3D, 0x0C38, 0x5E3E, 0x5E3E, 0x1ECC,
+ 0x5E40, 0x5E40, 0x0C39, 0x5E41, 0x5E41, 0x212E, 0x5E42, 0x5E42, 0x43A0,
+ 0x5E43, 0x5E43, 0x0C3A, 0x5E44, 0x5E44, 0x212D, 0x5E45, 0x5E45, 0x0C37,
+ 0x5E48, 0x5E48, 0x3A2C, 0x5E4A, 0x5E4A, 0x23C9, 0x5E4B, 0x5E4B, 0x23CB,
+ 0x5E4C, 0x5E4C, 0x0DFF, 0x5E4D, 0x5E4D, 0x23CA, 0x5E4E, 0x5E4E, 0x23C8,
+ 0x5E4F, 0x5E4F, 0x23C7, 0x5E53, 0x5E53, 0x2674, 0x5E54, 0x5E54, 0x0FC9,
+ 0x5E55, 0x5E55, 0x0FC7, 0x5E57, 0x5E57, 0x0FC8, 0x5E58, 0x5E59, 0x2672,
+ 0x5E5B, 0x5E5B, 0x0FC5, 0x5E5C, 0x5E5C, 0x28C7, 0x5E5D, 0x5E5D, 0x28C5,
+ 0x5E5E, 0x5E5E, 0x3A2B, 0x5E5F, 0x5E5F, 0x1139, 0x5E60, 0x5E60, 0x28C6,
+ 0x5E61, 0x5E61, 0x113A, 0x5E62, 0x5E62, 0x1138, 0x5E63, 0x5E63, 0x0FC6,
+ 0x5E66, 0x5E66, 0x2B38, 0x5E67, 0x5E68, 0x2B36, 0x5E69, 0x5E69, 0x28C4,
+ 0x5E6A, 0x5E6A, 0x2D5D, 0x5E6B, 0x5E6B, 0x13CD, 0x5E6C, 0x5E6C, 0x2D5C,
+ 0x5E6D, 0x5E6E, 0x2F1C, 0x5E6F, 0x5E6F, 0x2B39, 0x5E70, 0x5E70, 0x308D,
+ 0x5E72, 0x5E72, 0x028D, 0x5E73, 0x5E73, 0x033B, 0x5E74, 0x5E74, 0x03CB,
+ 0x5E75, 0x5E75, 0x17E4, 0x5E76, 0x5E76, 0x03CA, 0x5E78, 0x5E78, 0x05B1,
+ 0x5E79, 0x5E79, 0x0E00, 0x5E7A, 0x5E7A, 0x0227, 0x5E7B, 0x5E7B, 0x02CC,
+ 0x5E7C, 0x5E7C, 0x033C, 0x5E7D, 0x5E7D, 0x0711, 0x5E7E, 0x5E7E, 0x0C3B,
+ 0x5E7F, 0x5E7F, 0x0228, 0x5E80, 0x5E80, 0x17A5, 0x5E82, 0x5E82, 0x17A6,
+ 0x5E83, 0x5E83, 0x4108, 0x5E84, 0x5E84, 0x17E5, 0x5E86, 0x5E86, 0x4552,
+ 0x5E87, 0x5E87, 0x0490, 0x5E88, 0x5E88, 0x1877, 0x5E89, 0x5E89, 0x1875,
+ 0x5E8A, 0x5E8A, 0x0491, 0x5E8B, 0x5E8B, 0x1874, 0x5E8C, 0x5E8C, 0x1876,
+ 0x5E8D, 0x5E8D, 0x1878, 0x5E8F, 0x5E8F, 0x048F, 0x5E95, 0x5E96, 0x05B5,
+ 0x5E97, 0x5E97, 0x05B3, 0x5E9A, 0x5E9A, 0x05B2, 0x5E9B, 0x5E9B, 0x1AD2,
+ 0x5E9C, 0x5E9C, 0x05B4, 0x5EA0, 0x5EA0, 0x0712, 0x5EA2, 0x5EA2, 0x1AD1,
+ 0x5EA3, 0x5EA3, 0x1AD3, 0x5EA4, 0x5EA4, 0x1AD0, 0x5EA5, 0x5EA5, 0x1AD4,
+ 0x5EA6, 0x5EA6, 0x0713, 0x5EA7, 0x5EA7, 0x08AD, 0x5EA8, 0x5EA8, 0x1C88,
+ 0x5EAA, 0x5EAA, 0x1C8A, 0x5EAB, 0x5EAB, 0x08AB, 0x5EAC, 0x5EAC, 0x1C8B,
+ 0x5EAD, 0x5EAD, 0x08AC, 0x5EAE, 0x5EAE, 0x1C89, 0x5EB0, 0x5EB0, 0x1ACF,
+ 0x5EB1, 0x5EB1, 0x1ECE, 0x5EB2, 0x5EB3, 0x1ED1, 0x5EB4, 0x5EB4, 0x1ECF,
+ 0x5EB5, 0x5EB5, 0x0A73, 0x5EB6, 0x5EB6, 0x0A72, 0x5EB7, 0x5EB8, 0x0A70,
+ 0x5EB9, 0x5EB9, 0x1ED0, 0x5EBD, 0x5EBD, 0x43BD, 0x5EBE, 0x5EBE, 0x0A74,
+ 0x5EC1, 0x5EC2, 0x0C3D, 0x5EC4, 0x5EC4, 0x0C3F, 0x5EC5, 0x5EC5, 0x23CC,
+ 0x5EC6, 0x5EC6, 0x23CE, 0x5EC7, 0x5EC7, 0x23D0, 0x5EC8, 0x5EC8, 0x0E02,
+ 0x5EC9, 0x5EC9, 0x0E01, 0x5ECA, 0x5ECA, 0x0C3C, 0x5ECB, 0x5ECB, 0x23CF,
+ 0x5ECC, 0x5ECC, 0x23CD, 0x5ECD, 0x5ECD, 0x3A30, 0x5ECE, 0x5ECE, 0x2678,
+ 0x5ED0, 0x5ED0, 0x413D, 0x5ED1, 0x5ED1, 0x2676, 0x5ED2, 0x5ED2, 0x267C,
+ 0x5ED3, 0x5ED3, 0x0FCA, 0x5ED4, 0x5ED4, 0x267D, 0x5ED5, 0x5ED5, 0x267A,
+ 0x5ED6, 0x5ED6, 0x0FCB, 0x5ED7, 0x5ED7, 0x2677, 0x5ED8, 0x5ED8, 0x2675,
+ 0x5ED9, 0x5ED9, 0x267B, 0x5EDA, 0x5EDA, 0x113C, 0x5EDB, 0x5EDB, 0x28C9,
+ 0x5EDC, 0x5EDC, 0x2679, 0x5EDD, 0x5EDD, 0x113E, 0x5EDE, 0x5EDE, 0x28CA,
+ 0x5EDF, 0x5EDF, 0x113D, 0x5EE0, 0x5EE0, 0x1140, 0x5EE1, 0x5EE1, 0x28CB,
+ 0x5EE2, 0x5EE2, 0x113B, 0x5EE3, 0x5EE3, 0x113F, 0x5EE5, 0x5EE5, 0x2B3E,
+ 0x5EE6, 0x5EE6, 0x2B3C, 0x5EE7, 0x5EE7, 0x2B3B, 0x5EE8, 0x5EE8, 0x2B3D,
+ 0x5EE9, 0x5EE9, 0x2B3A, 0x5EEC, 0x5EEC, 0x157D, 0x5EEE, 0x5EEF, 0x31CF,
+ 0x5EF1, 0x5EF1, 0x32D0, 0x5EF2, 0x5EF2, 0x3380, 0x5EF3, 0x5EF3, 0x1742,
+ 0x5EF4, 0x5EF4, 0x0229, 0x5EF6, 0x5EF6, 0x05B7, 0x5EF7, 0x5EF7, 0x0492,
+ 0x5EF8, 0x5EF8, 0x386F, 0x5EF9, 0x5EF9, 0x4143, 0x5EFA, 0x5EFA, 0x0714,
+ 0x5EFB, 0x5EFB, 0x4144, 0x5EFC, 0x5EFC, 0x4146, 0x5EFE, 0x5EFE, 0x028E,
+ 0x5EFF, 0x5EFF, 0x02CD, 0x5F01, 0x5F01, 0x033D, 0x5F02, 0x5F02, 0x17E6,
+ 0x5F04, 0x5F04, 0x0493, 0x5F05, 0x5F05, 0x1879, 0x5F07, 0x5F07, 0x1AD5,
+ 0x5F08, 0x5F08, 0x0715, 0x5F0A, 0x5F0A, 0x0FCC, 0x5F0B, 0x5F0B, 0x028F,
+ 0x5F0C, 0x5F0C, 0x3A3E, 0x5F0D, 0x5F0D, 0x4149, 0x5F0E, 0x5F0E, 0x3A3F,
+ 0x5F0F, 0x5F0F, 0x03CC, 0x5F12, 0x5F12, 0x0E03, 0x5F13, 0x5F13, 0x0290,
+ 0x5F14, 0x5F15, 0x02CE, 0x5F17, 0x5F17, 0x033F, 0x5F18, 0x5F18, 0x033E,
+ 0x5F1A, 0x5F1A, 0x17E7, 0x5F1B, 0x5F1B, 0x03CD, 0x5F1D, 0x5F1D, 0x187A,
+ 0x5F1F, 0x5F1F, 0x0494, 0x5F22, 0x5F24, 0x1973, 0x5F25, 0x5F25, 0x4630,
+ 0x5F26, 0x5F27, 0x05B8, 0x5F28, 0x5F28, 0x1972, 0x5F29, 0x5F29, 0x05BA,
+ 0x5F2D, 0x5F2D, 0x0716, 0x5F2E, 0x5F2E, 0x1AD6, 0x5F30, 0x5F30, 0x1C8D,
+ 0x5F31, 0x5F31, 0x08AE, 0x5F33, 0x5F33, 0x1C8C, 0x5F35, 0x5F35, 0x0A75,
+ 0x5F36, 0x5F36, 0x1ED3, 0x5F37, 0x5F37, 0x0A76, 0x5F38, 0x5F38, 0x1ED4,
+ 0x5F3A, 0x5F3A, 0x414E, 0x5F3C, 0x5F3C, 0x0C40, 0x5F40, 0x5F40, 0x23D1,
+ 0x5F43, 0x5F43, 0x267F, 0x5F44, 0x5F44, 0x267E, 0x5F46, 0x5F46, 0x0FCD,
+ 0x5F48, 0x5F48, 0x1141, 0x5F49, 0x5F49, 0x28CC, 0x5F4A, 0x5F4A, 0x12AD,
+ 0x5F4B, 0x5F4B, 0x2B3F, 0x5F4C, 0x5F4C, 0x13CE, 0x5F4D, 0x5F4D, 0x3BA5,
+ 0x5F4E, 0x5F4E, 0x16C3, 0x5F4F, 0x5F4F, 0x3416, 0x5F50, 0x5F50, 0x022A,
+ 0x5F51, 0x5F51, 0x44E9, 0x5F54, 0x5F54, 0x1976, 0x5F56, 0x5F56, 0x1AD7,
+ 0x5F57, 0x5F57, 0x0A77, 0x5F58, 0x5F58, 0x212F, 0x5F59, 0x5F59, 0x0E04,
+ 0x5F5C, 0x5F5C, 0x3D5A, 0x5F5D, 0x5F5D, 0x14CF, 0x5F61, 0x5F61, 0x022B,
+ 0x5F62, 0x5F62, 0x0496, 0x5F63, 0x5F63, 0x4152, 0x5F64, 0x5F64, 0x0495,
+ 0x5F65, 0x5F65, 0x0717, 0x5F67, 0x5F67, 0x1C8E, 0x5F69, 0x5F69, 0x0A79,
+ 0x5F6A, 0x5F6A, 0x0B89, 0x5F6B, 0x5F6B, 0x0A7A, 0x5F6C, 0x5F6C, 0x0A78,
+ 0x5F6D, 0x5F6D, 0x0C41, 0x5F6F, 0x5F6F, 0x2680, 0x5F70, 0x5F70, 0x0FCE,
+ 0x5F71, 0x5F71, 0x1142, 0x5F72, 0x5F72, 0x4154, 0x5F73, 0x5F73, 0x1777,
+ 0x5F74, 0x5F74, 0x17E8, 0x5F76, 0x5F76, 0x187C, 0x5F77, 0x5F77, 0x0497,
+ 0x5F78, 0x5F78, 0x187B, 0x5F79, 0x5F79, 0x0498, 0x5F7B, 0x5F7B, 0x4058,
+ 0x5F7C, 0x5F7C, 0x05BE, 0x5F7D, 0x5F7D, 0x1979, 0x5F7E, 0x5F7E, 0x1978,
+ 0x5F7F, 0x5F7F, 0x05BD, 0x5F80, 0x5F81, 0x05BB, 0x5F82, 0x5F82, 0x1977,
+ 0x5F83, 0x5F83, 0x4631, 0x5F85, 0x5F85, 0x0719, 0x5F86, 0x5F86, 0x1AD8,
+ 0x5F87, 0x5F87, 0x071C, 0x5F88, 0x5F88, 0x0718, 0x5F89, 0x5F89, 0x071E,
+ 0x5F8A, 0x5F8B, 0x071A, 0x5F8C, 0x5F8C, 0x071D, 0x5F90, 0x5F90, 0x08B1,
+ 0x5F91, 0x5F91, 0x08B0, 0x5F92, 0x5F92, 0x08AF, 0x5F96, 0x5F96, 0x1ED6,
+ 0x5F97, 0x5F97, 0x0A7B, 0x5F98, 0x5F98, 0x0A7E, 0x5F99, 0x5F99, 0x0A7C,
+ 0x5F9B, 0x5F9B, 0x1ED5, 0x5F9C, 0x5F9C, 0x0A81, 0x5F9E, 0x5F9E, 0x0A7D,
+ 0x5F9F, 0x5F9F, 0x1ED7, 0x5FA0, 0x5FA0, 0x0A80, 0x5FA1, 0x5FA1, 0x0A7F,
+ 0x5FA4, 0x5FA4, 0x402C, 0x5FA5, 0x5FA5, 0x2131, 0x5FA6, 0x5FA6, 0x2130,
+ 0x5FA7, 0x5FA7, 0x4157, 0x5FA8, 0x5FA8, 0x0C44, 0x5FA9, 0x5FAA, 0x0C42,
+ 0x5FAB, 0x5FAB, 0x2132, 0x5FAC, 0x5FAC, 0x0E05, 0x5FAD, 0x5FAD, 0x23D3,
+ 0x5FAE, 0x5FAE, 0x0E06, 0x5FAF, 0x5FAF, 0x23D2, 0x5FB1, 0x5FB1, 0x3D98,
+ 0x5FB2, 0x5FB2, 0x28CD, 0x5FB5, 0x5FB5, 0x1144, 0x5FB6, 0x5FB6, 0x2681,
+ 0x5FB7, 0x5FB7, 0x1143, 0x5FB9, 0x5FB9, 0x0FCF, 0x5FBA, 0x5FBA, 0x3F9F,
+ 0x5FBB, 0x5FBB, 0x2B41, 0x5FBC, 0x5FBC, 0x2B40, 0x5FBD, 0x5FBD, 0x13CF,
+ 0x5FBE, 0x5FBE, 0x2D5E, 0x5FBF, 0x5FBF, 0x308E, 0x5FC0, 0x5FC1, 0x31D1,
+ 0x5FC3, 0x5FC3, 0x02D0, 0x5FC4, 0x5FC4, 0x44EA, 0x5FC5, 0x5FC5, 0x0340,
+ 0x5FC9, 0x5FC9, 0x17A7, 0x5FCC, 0x5FCC, 0x049A, 0x5FCD, 0x5FCD, 0x049C,
+ 0x5FCF, 0x5FCF, 0x17EB, 0x5FD0, 0x5FD0, 0x187F, 0x5FD1, 0x5FD1, 0x187E,
+ 0x5FD2, 0x5FD2, 0x187D, 0x5FD4, 0x5FD4, 0x17EA, 0x5FD5, 0x5FD5, 0x17E9,
+ 0x5FD6, 0x5FD6, 0x03CF, 0x5FD7, 0x5FD7, 0x049B, 0x5FD8, 0x5FD8, 0x0499,
+ 0x5FD9, 0x5FD9, 0x03CE, 0x5FDB, 0x5FDB, 0x3A4A, 0x5FDD, 0x5FDD, 0x05BF,
+ 0x5FDE, 0x5FDE, 0x197A, 0x5FDF, 0x5FDF, 0x41AF, 0x5FE0, 0x5FE0, 0x05C0,
+ 0x5FE1, 0x5FE1, 0x1884, 0x5FE3, 0x5FE3, 0x1886, 0x5FE4, 0x5FE4, 0x1885,
+ 0x5FE5, 0x5FE5, 0x197B, 0x5FE8, 0x5FE8, 0x1881, 0x5FEA, 0x5FEA, 0x04A0,
+ 0x5FEB, 0x5FEB, 0x049E, 0x5FED, 0x5FED, 0x1880, 0x5FEE, 0x5FEE, 0x1882,
+ 0x5FEF, 0x5FEF, 0x1888, 0x5FF1, 0x5FF1, 0x049D, 0x5FF3, 0x5FF3, 0x1883,
+ 0x5FF4, 0x5FF4, 0x188C, 0x5FF5, 0x5FF5, 0x05C2, 0x5FF7, 0x5FF7, 0x1889,
+ 0x5FF8, 0x5FF8, 0x049F, 0x5FFA, 0x5FFA, 0x1887, 0x5FFB, 0x5FFB, 0x188A,
+ 0x5FFD, 0x5FFD, 0x05C1, 0x5FFF, 0x5FFF, 0x05C3, 0x6000, 0x6000, 0x188B,
+ 0x6009, 0x6009, 0x198F, 0x600A, 0x600A, 0x1982, 0x600B, 0x600B, 0x1980,
+ 0x600C, 0x600C, 0x198E, 0x600D, 0x600D, 0x1989, 0x600E, 0x600E, 0x0723,
+ 0x600F, 0x600F, 0x05C4, 0x6010, 0x6010, 0x198A, 0x6011, 0x6011, 0x198D,
+ 0x6012, 0x6012, 0x071F, 0x6013, 0x6013, 0x198C, 0x6014, 0x6014, 0x05C5,
+ 0x6015, 0x6015, 0x05CA, 0x6016, 0x6016, 0x05C8, 0x6017, 0x6017, 0x1983,
+ 0x6019, 0x6019, 0x197E, 0x601A, 0x601A, 0x1985, 0x601B, 0x601B, 0x05CF,
+ 0x601C, 0x601C, 0x1990, 0x601D, 0x601D, 0x0720, 0x601E, 0x601E, 0x1986,
+ 0x6020, 0x6020, 0x0721, 0x6021, 0x6021, 0x05CB, 0x6022, 0x6022, 0x1988,
+ 0x6023, 0x6023, 0x4185, 0x6024, 0x6024, 0x1AE7, 0x6025, 0x6025, 0x0722,
+ 0x6026, 0x6026, 0x197D, 0x6027, 0x6027, 0x05CC, 0x6028, 0x6028, 0x0724,
+ 0x6029, 0x6029, 0x05CD, 0x602A, 0x602A, 0x05C9, 0x602B, 0x602B, 0x05CE,
+ 0x602C, 0x602C, 0x1987, 0x602D, 0x602D, 0x197C, 0x602E, 0x602E, 0x198B,
+ 0x602F, 0x602F, 0x05C6, 0x6031, 0x6031, 0x4161, 0x6032, 0x6032, 0x197F,
+ 0x6033, 0x6033, 0x1984, 0x6034, 0x6034, 0x1981, 0x6035, 0x6035, 0x05C7,
+ 0x6037, 0x6037, 0x1AD9, 0x6039, 0x6039, 0x1ADA, 0x603B, 0x603B, 0x4553,
+ 0x6040, 0x6040, 0x1AE4, 0x6041, 0x6041, 0x1C92, 0x6042, 0x6042, 0x1AE5,
+ 0x6043, 0x6043, 0x072A, 0x6044, 0x6044, 0x1AE8, 0x6045, 0x6045, 0x1ADE,
+ 0x6046, 0x6046, 0x0729, 0x6047, 0x6047, 0x1AE0, 0x6049, 0x6049, 0x1AE1,
+ 0x604A, 0x604A, 0x4074, 0x604C, 0x604C, 0x1AE3, 0x604D, 0x604D, 0x0725,
+ 0x6050, 0x6050, 0x08B5, 0x6052, 0x6052, 0x36EC, 0x6053, 0x6053, 0x1ADF,
+ 0x6054, 0x6054, 0x1ADB, 0x6055, 0x6055, 0x08B6, 0x6058, 0x6058, 0x1AE9,
+ 0x6059, 0x6059, 0x08B2, 0x605A, 0x605A, 0x1C90, 0x605B, 0x605B, 0x1AE2,
+ 0x605D, 0x605D, 0x1C8F, 0x605E, 0x605E, 0x1ADD, 0x605F, 0x605F, 0x1AE6,
+ 0x6062, 0x6062, 0x0728, 0x6063, 0x6063, 0x08B3, 0x6064, 0x6064, 0x072E,
+ 0x6065, 0x6065, 0x08B4, 0x6066, 0x6066, 0x1AEA, 0x6067, 0x6067, 0x1C91,
+ 0x6068, 0x6068, 0x0727, 0x6069, 0x6069, 0x08B8, 0x606A, 0x606A, 0x072D,
+ 0x606B, 0x606B, 0x072C, 0x606C, 0x606C, 0x072B, 0x606D, 0x606D, 0x08B7,
+ 0x606E, 0x606E, 0x1AEB, 0x606F, 0x606F, 0x08B9, 0x6070, 0x6070, 0x0726,
+ 0x6072, 0x6072, 0x1ADC, 0x6075, 0x6075, 0x3A56, 0x6077, 0x6077, 0x4005,
+ 0x607E, 0x607E, 0x3A47, 0x607F, 0x607F, 0x0A82, 0x6080, 0x6080, 0x1C95,
+ 0x6081, 0x6081, 0x1C97, 0x6083, 0x6083, 0x1C99, 0x6084, 0x6084, 0x08BA,
+ 0x6085, 0x6085, 0x08C0, 0x6086, 0x6086, 0x1EDA, 0x6087, 0x6087, 0x1C9D,
+ 0x6088, 0x6088, 0x1C94, 0x6089, 0x6089, 0x0A84, 0x608A, 0x608A, 0x1ED8,
+ 0x608C, 0x608C, 0x08BF, 0x608D, 0x608D, 0x08BD, 0x608E, 0x608E, 0x1C9F,
+ 0x6090, 0x6090, 0x1ED9, 0x6092, 0x6092, 0x1C96, 0x6094, 0x6094, 0x08BE,
+ 0x6095, 0x6095, 0x1C9A, 0x6096, 0x6096, 0x08C1, 0x6097, 0x6097, 0x1C9C,
+ 0x609A, 0x609A, 0x08BC, 0x609B, 0x609B, 0x1C9B, 0x609C, 0x609C, 0x1C9E,
+ 0x609D, 0x609D, 0x1C98, 0x609E, 0x609E, 0x416A, 0x609F, 0x609F, 0x08BB,
+ 0x60A0, 0x60A0, 0x0A85, 0x60A2, 0x60A2, 0x1C93, 0x60A3, 0x60A3, 0x0A83,
+ 0x60A4, 0x60A4, 0x4001, 0x60A7, 0x60A7, 0x3ADC, 0x60A8, 0x60A8, 0x0A86,
+ 0x60B0, 0x60B0, 0x1EDC, 0x60B1, 0x60B1, 0x1EE5, 0x60B2, 0x60B2, 0x0C47,
+ 0x60B3, 0x60B3, 0x416C, 0x60B4, 0x60B4, 0x0A88, 0x60B5, 0x60B5, 0x0A8D,
+ 0x60B6, 0x60B6, 0x0C48, 0x60B7, 0x60B7, 0x1EE7, 0x60B8, 0x60B8, 0x0A94,
+ 0x60B9, 0x60B9, 0x2134, 0x60BA, 0x60BA, 0x1EDD, 0x60BB, 0x60BB, 0x0A8C,
+ 0x60BC, 0x60BC, 0x0A8F, 0x60BD, 0x60BD, 0x0A8A, 0x60BE, 0x60BE, 0x1EDB,
+ 0x60BF, 0x60BF, 0x1EE9, 0x60C0, 0x60C0, 0x1EEC, 0x60C1, 0x60C1, 0x2143,
+ 0x60C3, 0x60C3, 0x1EEA, 0x60C4, 0x60C4, 0x2138, 0x60C5, 0x60C5, 0x0A8B,
+ 0x60C6, 0x60C6, 0x0A92, 0x60C7, 0x60C7, 0x0A96, 0x60C8, 0x60C8, 0x1EE4,
+ 0x60C9, 0x60C9, 0x2133, 0x60CA, 0x60CA, 0x1EE8, 0x60CB, 0x60CB, 0x0A87,
+ 0x60CC, 0x60CC, 0x2135, 0x60CD, 0x60CD, 0x1EEB, 0x60CE, 0x60CE, 0x2137,
+ 0x60CF, 0x60CF, 0x1EE0, 0x60D1, 0x60D1, 0x0C45, 0x60D3, 0x60D4, 0x1EDE,
+ 0x60D5, 0x60D5, 0x0A91, 0x60D7, 0x60D7, 0x4635, 0x60D8, 0x60D8, 0x0A90,
+ 0x60D9, 0x60D9, 0x1EE2, 0x60DA, 0x60DA, 0x0A95, 0x60DB, 0x60DB, 0x1EE6,
+ 0x60DC, 0x60DC, 0x0A8E, 0x60DD, 0x60DD, 0x1EE3, 0x60DE, 0x60DE, 0x3DCC,
+ 0x60DF, 0x60DF, 0x0A93, 0x60E0, 0x60E0, 0x0C49, 0x60E1, 0x60E1, 0x0C46,
+ 0x60E2, 0x60E2, 0x2136, 0x60E3, 0x60E3, 0x3D75, 0x60E4, 0x60E4, 0x1EE1,
+ 0x60E6, 0x60E6, 0x0A89, 0x60E7, 0x60E7, 0x3D84, 0x60E8, 0x60E8, 0x3D7B,
+ 0x60E9, 0x60E9, 0x4009, 0x60F0, 0x60F0, 0x0C4E, 0x60F1, 0x60F1, 0x0C52,
+ 0x60F2, 0x60F2, 0x213A, 0x60F3, 0x60F3, 0x0E0B, 0x60F4, 0x60F4, 0x0C50,
+ 0x60F5, 0x60F5, 0x213E, 0x60F6, 0x60F6, 0x0C54, 0x60F7, 0x60F7, 0x23D4,
+ 0x60F8, 0x60F8, 0x2140, 0x60F9, 0x60F9, 0x0E0D, 0x60FA, 0x60FA, 0x0C4C,
+ 0x60FB, 0x60FB, 0x0C4F, 0x60FC, 0x60FC, 0x2141, 0x60FD, 0x60FD, 0x3FA8,
+ 0x60FE, 0x60FE, 0x2142, 0x60FF, 0x60FF, 0x2148, 0x6100, 0x6100, 0x0C56,
+ 0x6101, 0x6101, 0x0E0E, 0x6103, 0x6103, 0x2144, 0x6104, 0x6104, 0x2149,
+ 0x6105, 0x6105, 0x213D, 0x6106, 0x6106, 0x0E18, 0x6107, 0x6107, 0x3C35,
+ 0x6108, 0x6108, 0x0E0F, 0x6109, 0x6109, 0x0C55, 0x610A, 0x610A, 0x213B,
+ 0x610B, 0x610B, 0x214A, 0x610C, 0x610C, 0x3C87, 0x610D, 0x610D, 0x0E17,
+ 0x610E, 0x610E, 0x0C53, 0x610F, 0x610F, 0x0E08, 0x6110, 0x6110, 0x2147,
+ 0x6112, 0x6112, 0x0C57, 0x6113, 0x6113, 0x213F, 0x6114, 0x6114, 0x2139,
+ 0x6115, 0x6115, 0x0C4D, 0x6116, 0x6116, 0x213C, 0x6118, 0x6118, 0x2145,
+ 0x6119, 0x6119, 0x3EF6, 0x611A, 0x611A, 0x0E07, 0x611B, 0x611B, 0x0E0C,
+ 0x611C, 0x611C, 0x0C4A, 0x611D, 0x611D, 0x2146, 0x611F, 0x611F, 0x0E0A,
+ 0x6123, 0x6123, 0x0C4B, 0x6127, 0x6127, 0x0E16, 0x6128, 0x6128, 0x2683,
+ 0x6129, 0x6129, 0x23DF, 0x612B, 0x612B, 0x23D7, 0x612C, 0x612C, 0x2682,
+ 0x612E, 0x612E, 0x23DB, 0x612F, 0x612F, 0x23DD, 0x6130, 0x6130, 0x3F37,
+ 0x6132, 0x6132, 0x23DA, 0x6134, 0x6134, 0x0E15, 0x6136, 0x6136, 0x23D9,
+ 0x6137, 0x6137, 0x0E19, 0x613B, 0x613B, 0x2692, 0x613D, 0x613D, 0x4636,
+ 0x613E, 0x613E, 0x0E14, 0x613F, 0x613F, 0x0FD1, 0x6140, 0x6140, 0x23E0,
+ 0x6141, 0x6141, 0x2684, 0x6142, 0x6142, 0x4174, 0x6144, 0x6144, 0x0E12,
+ 0x6145, 0x6145, 0x23D8, 0x6146, 0x6146, 0x23DC, 0x6147, 0x6147, 0x0FD0,
+ 0x6148, 0x6148, 0x0E09, 0x6149, 0x614A, 0x23D5, 0x614B, 0x614B, 0x0FD2,
+ 0x614C, 0x614C, 0x0E11, 0x614D, 0x614D, 0x0E13, 0x614E, 0x614E, 0x0E10,
+ 0x614F, 0x614F, 0x23DE, 0x6150, 0x6150, 0x3C32, 0x6152, 0x6153, 0x2688,
+ 0x6154, 0x6154, 0x268E, 0x6155, 0x6155, 0x1149, 0x6156, 0x6156, 0x2695,
+ 0x6158, 0x6158, 0x0FD8, 0x6159, 0x6159, 0x3FBA, 0x615A, 0x615A, 0x0FD7,
+ 0x615B, 0x615B, 0x2690, 0x615C, 0x615C, 0x4186, 0x615D, 0x615D, 0x1148,
+ 0x615E, 0x615E, 0x2685, 0x615F, 0x615F, 0x0FD6, 0x6160, 0x6160, 0x494C,
+ 0x6161, 0x6161, 0x2694, 0x6162, 0x6163, 0x0FD4, 0x6164, 0x6164, 0x4173,
+ 0x6165, 0x6165, 0x2691, 0x6166, 0x6166, 0x28DE, 0x6167, 0x6167, 0x1146,
+ 0x6168, 0x6168, 0x0C51, 0x616A, 0x616A, 0x2693, 0x616B, 0x616B, 0x114D,
+ 0x616C, 0x616C, 0x268B, 0x616E, 0x616E, 0x1147, 0x616F, 0x616F, 0x3FC0,
+ 0x6170, 0x6170, 0x114C, 0x6171, 0x6171, 0x2686, 0x6172, 0x6172, 0x268A,
+ 0x6173, 0x6173, 0x2687, 0x6174, 0x6174, 0x268D, 0x6175, 0x6175, 0x0FD9,
+ 0x6176, 0x6176, 0x1145, 0x6177, 0x6177, 0x0FD3, 0x6179, 0x6179, 0x28D0,
+ 0x617A, 0x617A, 0x268F, 0x617C, 0x617C, 0x114B, 0x617D, 0x617D, 0x3FBD,
+ 0x617E, 0x617E, 0x114E, 0x6180, 0x6180, 0x268C, 0x6181, 0x6181, 0x4177,
+ 0x6182, 0x6182, 0x114A, 0x6183, 0x6183, 0x28CF, 0x6187, 0x6187, 0x417A,
+ 0x6189, 0x6189, 0x28D4, 0x618A, 0x618A, 0x12B1, 0x618B, 0x618B, 0x28CE,
+ 0x618C, 0x618C, 0x2B4D, 0x618D, 0x618D, 0x28DD, 0x618E, 0x618E, 0x1152,
+ 0x6190, 0x6190, 0x1150, 0x6191, 0x6191, 0x12AF, 0x6192, 0x6192, 0x28DA,
+ 0x6193, 0x6193, 0x28D6, 0x6194, 0x6194, 0x1156, 0x6195, 0x6195, 0x3DE0,
+ 0x6196, 0x6196, 0x2B44, 0x6198, 0x6198, 0x3A55, 0x6199, 0x6199, 0x3A54,
+ 0x619A, 0x619A, 0x1154, 0x619B, 0x619B, 0x28D5, 0x619C, 0x619C, 0x4002,
+ 0x619D, 0x619D, 0x2B42, 0x619F, 0x619F, 0x28D9, 0x61A1, 0x61A1, 0x28DC,
+ 0x61A2, 0x61A2, 0x28D3, 0x61A4, 0x61A4, 0x1155, 0x61A7, 0x61A7, 0x114F,
+ 0x61A8, 0x61A8, 0x2B43, 0x61A9, 0x61A9, 0x12B0, 0x61AA, 0x61AA, 0x28DB,
+ 0x61AB, 0x61AB, 0x1151, 0x61AC, 0x61AC, 0x1153, 0x61AD, 0x61AD, 0x28D8,
+ 0x61AE, 0x61AE, 0x1157, 0x61AF, 0x61AF, 0x28D7, 0x61B0, 0x61B0, 0x28D2,
+ 0x61B1, 0x61B1, 0x28D1, 0x61B2, 0x61B2, 0x12AE, 0x61B3, 0x61B3, 0x28DF,
+ 0x61B4, 0x61B4, 0x2B46, 0x61B5, 0x61B5, 0x2D60, 0x61B6, 0x61B6, 0x12B3,
+ 0x61B7, 0x61B7, 0x4639, 0x61B8, 0x61B8, 0x2B4C, 0x61B9, 0x61B9, 0x43BF,
+ 0x61BA, 0x61BA, 0x2B4A, 0x61BC, 0x61BC, 0x2D61, 0x61BE, 0x61BE, 0x12B4,
+ 0x61BF, 0x61BF, 0x2B4B, 0x61C0, 0x61C0, 0x3A50, 0x61C1, 0x61C1, 0x2B48,
+ 0x61C2, 0x61C2, 0x13D1, 0x61C3, 0x61C3, 0x2D5F, 0x61C5, 0x61C5, 0x2B45,
+ 0x61C6, 0x61C6, 0x2B47, 0x61C7, 0x61C7, 0x13D2, 0x61C8, 0x61C8, 0x12B6,
+ 0x61C9, 0x61C9, 0x13D0, 0x61CA, 0x61CA, 0x12B5, 0x61CB, 0x61CB, 0x13D4,
+ 0x61CC, 0x61CC, 0x2B49, 0x61CD, 0x61CD, 0x12B2, 0x61CF, 0x61CF, 0x463A,
+ 0x61D0, 0x61D0, 0x4181, 0x61D3, 0x61D3, 0x417E, 0x61D6, 0x61D6, 0x2F26,
+ 0x61D8, 0x61D8, 0x2F1E, 0x61DA, 0x61DA, 0x38B1, 0x61DE, 0x61DE, 0x2D67,
+ 0x61DF, 0x61DF, 0x2F1F, 0x61E0, 0x61E0, 0x2D63, 0x61E2, 0x61E2, 0x3FC5,
+ 0x61E3, 0x61E3, 0x14D0, 0x61E4, 0x61E4, 0x2D65, 0x61E5, 0x61E5, 0x2D64,
+ 0x61E6, 0x61E6, 0x13D3, 0x61E7, 0x61E7, 0x2D62, 0x61E8, 0x61E8, 0x2D66,
+ 0x61E9, 0x61E9, 0x2F27, 0x61EA, 0x61EA, 0x2F23, 0x61EB, 0x61EB, 0x2F25,
+ 0x61ED, 0x61EE, 0x2F20, 0x61F0, 0x61F0, 0x2F24, 0x61F1, 0x61F1, 0x2F22,
+ 0x61F2, 0x61F2, 0x157E, 0x61F5, 0x61F5, 0x1581, 0x61F6, 0x61F6, 0x1580,
+ 0x61F7, 0x61F7, 0x157F, 0x61F8, 0x61F8, 0x1614, 0x61F9, 0x61F9, 0x31D3,
+ 0x61FA, 0x61FA, 0x1615, 0x61FB, 0x61FB, 0x308F, 0x61FC, 0x61FC, 0x1670,
+ 0x61FD, 0x61FD, 0x32D1, 0x61FE, 0x61FE, 0x1671, 0x61FF, 0x61FF, 0x16C4,
+ 0x6200, 0x6200, 0x16F8, 0x6201, 0x6201, 0x3417, 0x6203, 0x6204, 0x3418,
+ 0x6207, 0x6207, 0x3533, 0x6208, 0x6208, 0x02D1, 0x6209, 0x6209, 0x17A8,
+ 0x620A, 0x620A, 0x0341, 0x620C, 0x620D, 0x03D1, 0x620E, 0x620E, 0x03D0,
+ 0x6210, 0x6210, 0x03D3, 0x6211, 0x6211, 0x04A2, 0x6212, 0x6212, 0x04A1,
+ 0x6214, 0x6214, 0x1991, 0x6215, 0x6215, 0x05D1, 0x6216, 0x6216, 0x05D0,
+ 0x6219, 0x6219, 0x1CA0, 0x621A, 0x621B, 0x0A97, 0x621F, 0x621F, 0x0C58,
+ 0x6220, 0x6220, 0x23E1, 0x6221, 0x6222, 0x0E1A, 0x6223, 0x6223, 0x23E3,
+ 0x6224, 0x6224, 0x23E5, 0x6225, 0x6225, 0x23E4, 0x6227, 0x6227, 0x2697,
+ 0x6229, 0x6229, 0x2696, 0x622A, 0x622A, 0x0FDA, 0x622B, 0x622B, 0x2698,
+ 0x622C, 0x622C, 0x463C, 0x622D, 0x622D, 0x28E0, 0x622E, 0x622E, 0x1158,
+ 0x6230, 0x6230, 0x12B7, 0x6232, 0x6232, 0x13D5, 0x6233, 0x6233, 0x14D1,
+ 0x6234, 0x6234, 0x13D6, 0x6236, 0x6236, 0x02D2, 0x6237, 0x6237, 0x451A,
+ 0x6239, 0x6239, 0x3FC2, 0x623A, 0x623A, 0x188D, 0x623D, 0x623D, 0x1992,
+ 0x623E, 0x623E, 0x05D3, 0x623F, 0x623F, 0x05D2, 0x6240, 0x6240, 0x05D4,
+ 0x6241, 0x6241, 0x072F, 0x6242, 0x6243, 0x1AEC, 0x6246, 0x6246, 0x1CA1,
+ 0x6247, 0x6247, 0x08C2, 0x6248, 0x6248, 0x0A99, 0x6249, 0x6249, 0x0C59,
+ 0x624A, 0x624A, 0x214B, 0x624B, 0x624B, 0x02D3, 0x624C, 0x624C, 0x44EC,
+ 0x624D, 0x624D, 0x0291, 0x624E, 0x624E, 0x02D4, 0x6250, 0x6250, 0x17A9,
+ 0x6251, 0x6251, 0x0345, 0x6252, 0x6252, 0x0344, 0x6253, 0x6254, 0x0342,
+ 0x6258, 0x6258, 0x03D6, 0x6259, 0x6259, 0x17F2, 0x625A, 0x625A, 0x17F4,
+ 0x625B, 0x625B, 0x03D5, 0x625C, 0x625C, 0x17EC, 0x625E, 0x625E, 0x17ED,
+ 0x6260, 0x6260, 0x17F3, 0x6261, 0x6261, 0x17EF, 0x6262, 0x6262, 0x17F1,
+ 0x6263, 0x6263, 0x03D4, 0x6264, 0x6264, 0x17EE, 0x6265, 0x6265, 0x17F5,
+ 0x6266, 0x6266, 0x17F0, 0x6268, 0x6268, 0x3F15, 0x626D, 0x626D, 0x04A9,
+ 0x626E, 0x626E, 0x04B2, 0x626F, 0x626F, 0x04B0, 0x6270, 0x6270, 0x1897,
+ 0x6271, 0x6271, 0x1894, 0x6272, 0x6272, 0x189C, 0x6273, 0x6273, 0x04AE,
+ 0x6274, 0x6274, 0x189D, 0x6276, 0x6276, 0x04A7, 0x6277, 0x6277, 0x189A,
+ 0x6279, 0x6279, 0x04AD, 0x627A, 0x627A, 0x1896, 0x627B, 0x627B, 0x1895,
+ 0x627C, 0x627C, 0x04AB, 0x627D, 0x627D, 0x189B, 0x627E, 0x627E, 0x04AC,
+ 0x627F, 0x627F, 0x05D5, 0x6280, 0x6280, 0x04A6, 0x6281, 0x6281, 0x1898,
+ 0x6282, 0x6282, 0x3F86, 0x6283, 0x6283, 0x188E, 0x6284, 0x6284, 0x04A3,
+ 0x6285, 0x6285, 0x3F50, 0x6286, 0x6286, 0x04B6, 0x6287, 0x6287, 0x1893,
+ 0x6288, 0x6288, 0x1899, 0x6289, 0x6289, 0x04A8, 0x628A, 0x628A, 0x04AA,
+ 0x628C, 0x628C, 0x188F, 0x628E, 0x628F, 0x1890, 0x6290, 0x6290, 0x43C0,
+ 0x6291, 0x6291, 0x04B5, 0x6292, 0x6292, 0x04AF, 0x6293, 0x6293, 0x04B4,
+ 0x6294, 0x6294, 0x1892, 0x6295, 0x6295, 0x04B3, 0x6296, 0x6296, 0x04A5,
+ 0x6297, 0x6297, 0x04A4, 0x6298, 0x6298, 0x04B1, 0x629D, 0x629D, 0x3E96,
+ 0x62A4, 0x62A4, 0x3A69, 0x62A6, 0x62A6, 0x3FC1, 0x62A8, 0x62A8, 0x05E3,
+ 0x62A9, 0x62A9, 0x199E, 0x62AA, 0x62AA, 0x1997, 0x62AB, 0x62AB, 0x05DE,
+ 0x62AC, 0x62AC, 0x05F1, 0x62AD, 0x62AD, 0x1993, 0x62AE, 0x62AE, 0x199A,
+ 0x62AF, 0x62AF, 0x199C, 0x62B0, 0x62B0, 0x199F, 0x62B1, 0x62B1, 0x05EC,
+ 0x62B3, 0x62B3, 0x199B, 0x62B4, 0x62B4, 0x1994, 0x62B5, 0x62B5, 0x05EA,
+ 0x62B6, 0x62B6, 0x1998, 0x62B8, 0x62B8, 0x19A0, 0x62B9, 0x62B9, 0x05DB,
+ 0x62BB, 0x62BB, 0x199D, 0x62BC, 0x62BC, 0x05E5, 0x62BD, 0x62BD, 0x05E4,
+ 0x62BE, 0x62BE, 0x1996, 0x62BF, 0x62BF, 0x05D9, 0x62C2, 0x62C2, 0x05DA,
+ 0x62C3, 0x62C3, 0x3D8F, 0x62C4, 0x62C4, 0x05D8, 0x62C5, 0x62C5, 0x418A,
+ 0x62C6, 0x62C6, 0x05F0, 0x62C7, 0x62C7, 0x05E8, 0x62C8, 0x62C8, 0x05E2,
+ 0x62C9, 0x62C9, 0x05D6, 0x62CA, 0x62CA, 0x1999, 0x62CB, 0x62CB, 0x05E1,
+ 0x62CC, 0x62CC, 0x05D7, 0x62CD, 0x62CD, 0x05E9, 0x62CE, 0x62CE, 0x05F2,
+ 0x62CF, 0x62CF, 0x1AEE, 0x62D0, 0x62D0, 0x05E6, 0x62D1, 0x62D1, 0x1995,
+ 0x62D2, 0x62D2, 0x05DC, 0x62D3, 0x62D4, 0x05DF, 0x62D5, 0x62D5, 0x418C,
+ 0x62D6, 0x62D7, 0x05EE, 0x62D8, 0x62D8, 0x05ED, 0x62D9, 0x62D9, 0x05E7,
+ 0x62DA, 0x62DA, 0x05EB, 0x62DB, 0x62DB, 0x05DD, 0x62DC, 0x62DC, 0x0730,
+ 0x62DF, 0x62DF, 0x401C, 0x62E5, 0x62E5, 0x463D, 0x62EB, 0x62EB, 0x1AF4,
+ 0x62EC, 0x62EC, 0x073C, 0x62ED, 0x62ED, 0x0734, 0x62EE, 0x62EE, 0x0736,
+ 0x62EF, 0x62EF, 0x073B, 0x62F0, 0x62F0, 0x1B00, 0x62F1, 0x62F1, 0x0739,
+ 0x62F2, 0x62F2, 0x1CA2, 0x62F3, 0x62F3, 0x08C3, 0x62F4, 0x62F4, 0x073E,
+ 0x62F5, 0x62F5, 0x1AF1, 0x62F6, 0x62F6, 0x1AF9, 0x62F7, 0x62F7, 0x073A,
+ 0x62F8, 0x62F8, 0x1AF8, 0x62F9, 0x62F9, 0x1AF5, 0x62FA, 0x62FA, 0x1AFD,
+ 0x62FB, 0x62FB, 0x1AFF, 0x62FC, 0x62FC, 0x0733, 0x62FD, 0x62FD, 0x0737,
+ 0x62FE, 0x62FE, 0x073D, 0x62FF, 0x62FF, 0x08C5, 0x6300, 0x6300, 0x1AFA,
+ 0x6301, 0x6301, 0x0735, 0x6302, 0x6302, 0x0740, 0x6303, 0x6303, 0x1AF3,
+ 0x6307, 0x6307, 0x0738, 0x6308, 0x6308, 0x08C4, 0x6309, 0x6309, 0x0732,
+ 0x630B, 0x630B, 0x1AF0, 0x630C, 0x630C, 0x1AF7, 0x630D, 0x630D, 0x1AEF,
+ 0x630E, 0x630E, 0x1AF2, 0x630F, 0x630F, 0x1AF6, 0x6310, 0x6310, 0x1CA3,
+ 0x6311, 0x6311, 0x073F, 0x6313, 0x6314, 0x1AFB, 0x6315, 0x6315, 0x1AFE,
+ 0x6316, 0x6316, 0x0731, 0x6318, 0x6318, 0x43C1, 0x6328, 0x6328, 0x08D3,
+ 0x6329, 0x6329, 0x1CAF, 0x632A, 0x632B, 0x08D1, 0x632C, 0x632C, 0x1CA5,
+ 0x632D, 0x632D, 0x1CB5, 0x632E, 0x632E, 0x3EDD, 0x632F, 0x632F, 0x08C8,
+ 0x6331, 0x6331, 0x3A65, 0x6332, 0x6332, 0x1EED, 0x6333, 0x6333, 0x1CB7,
+ 0x6334, 0x6334, 0x1CB1, 0x6335, 0x6335, 0x3F16, 0x6336, 0x6336, 0x1CA8,
+ 0x6337, 0x6337, 0x3A63, 0x6338, 0x6338, 0x1CBA, 0x6339, 0x6339, 0x1CAB,
+ 0x633A, 0x633A, 0x08CE, 0x633B, 0x633B, 0x1F04, 0x633C, 0x633C, 0x1CAE,
+ 0x633D, 0x633D, 0x08D0, 0x633E, 0x633E, 0x08C7, 0x6340, 0x6340, 0x1CBC,
+ 0x6341, 0x6341, 0x1CB0, 0x6342, 0x6342, 0x08CA, 0x6343, 0x6343, 0x1CA9,
+ 0x6344, 0x6345, 0x1CA6, 0x6346, 0x6346, 0x08CB, 0x6347, 0x6347, 0x1CB6,
+ 0x6348, 0x6348, 0x1CBD, 0x6349, 0x6349, 0x08CD, 0x634A, 0x634A, 0x1CAD,
+ 0x634B, 0x634B, 0x1CAC, 0x634C, 0x634C, 0x08D5, 0x634D, 0x634D, 0x08D4,
+ 0x634E, 0x634E, 0x08C6, 0x634F, 0x634F, 0x08CC, 0x6350, 0x6350, 0x08CF,
+ 0x6351, 0x6351, 0x1CB9, 0x6354, 0x6354, 0x1CB3, 0x6355, 0x6355, 0x08C9,
+ 0x6356, 0x6356, 0x1CA4, 0x6357, 0x6357, 0x1CBB, 0x6358, 0x6358, 0x1CB2,
+ 0x6359, 0x6359, 0x1CB4, 0x635A, 0x635A, 0x1CB8, 0x6364, 0x6364, 0x3FC7,
+ 0x6365, 0x6365, 0x1EEE, 0x6367, 0x6367, 0x0AA1, 0x6368, 0x6368, 0x0AB5,
+ 0x6369, 0x6369, 0x0AB4, 0x636B, 0x636B, 0x0AA9, 0x636C, 0x636C, 0x418E,
+ 0x636D, 0x636D, 0x1F00, 0x636E, 0x636E, 0x1EFC, 0x636F, 0x636F, 0x1EF9,
+ 0x6370, 0x6370, 0x1F0B, 0x6371, 0x6371, 0x0AA4, 0x6372, 0x6372, 0x0A9C,
+ 0x6375, 0x6375, 0x1EFE, 0x6376, 0x6376, 0x0C69, 0x6377, 0x6377, 0x0AA0,
+ 0x6378, 0x6378, 0x1F06, 0x6379, 0x6379, 0x4367, 0x637A, 0x637A, 0x0AB6,
+ 0x637B, 0x637B, 0x0AB3, 0x637C, 0x637C, 0x1F02, 0x637D, 0x637D, 0x1EF1,
+ 0x637F, 0x637F, 0x3F4B, 0x6380, 0x6380, 0x0AB2, 0x6381, 0x6381, 0x1F08,
+ 0x6382, 0x6382, 0x1EF0, 0x6383, 0x6383, 0x0AA7, 0x6384, 0x6384, 0x0AAB,
+ 0x6385, 0x6385, 0x1F07, 0x6387, 0x6387, 0x1EFA, 0x6388, 0x6388, 0x0AAC,
+ 0x6389, 0x6389, 0x0AA6, 0x638A, 0x638A, 0x1EEF, 0x638B, 0x638B, 0x4188,
+ 0x638C, 0x638C, 0x0C5B, 0x638D, 0x638D, 0x1F0A, 0x638E, 0x638E, 0x1EF8,
+ 0x638F, 0x638F, 0x0AB1, 0x6390, 0x6390, 0x1EFB, 0x6391, 0x6391, 0x1F09,
+ 0x6392, 0x6392, 0x0AB0, 0x6394, 0x6394, 0x214C, 0x6396, 0x6396, 0x0A9D,
+ 0x6397, 0x6397, 0x1EF6, 0x6398, 0x6398, 0x0AA2, 0x6399, 0x6399, 0x0AAD,
+ 0x639B, 0x639B, 0x0AA8, 0x639C, 0x639C, 0x1EFF, 0x639D, 0x639D, 0x1EF5,
+ 0x639E, 0x639E, 0x1EF3, 0x639F, 0x639F, 0x1F05, 0x63A0, 0x63A0, 0x0A9A,
+ 0x63A1, 0x63A1, 0x0AAE, 0x63A2, 0x63A2, 0x0A9E, 0x63A3, 0x63A3, 0x0C5A,
+ 0x63A4, 0x63A4, 0x1F03, 0x63A5, 0x63A5, 0x0A9F, 0x63A7, 0x63A7, 0x0A9B,
+ 0x63A8, 0x63A8, 0x0AAA, 0x63A9, 0x63A9, 0x0AA5, 0x63AA, 0x63AA, 0x0AA3,
+ 0x63AB, 0x63AB, 0x1EF7, 0x63AC, 0x63AC, 0x0AAF, 0x63AD, 0x63AD, 0x1EF4,
+ 0x63AE, 0x63AE, 0x1F01, 0x63AF, 0x63AF, 0x1EFD, 0x63B0, 0x63B0, 0x214E,
+ 0x63B1, 0x63B1, 0x214D, 0x63B9, 0x63B9, 0x3E9D, 0x63BD, 0x63BD, 0x1EF2,
+ 0x63BE, 0x63BE, 0x215E, 0x63C0, 0x63C0, 0x0C5D, 0x63C1, 0x63C1, 0x46A8,
+ 0x63C2, 0x63C2, 0x2164, 0x63C3, 0x63C3, 0x2153, 0x63C4, 0x63C4, 0x2161,
+ 0x63C5, 0x63C5, 0x23E6, 0x63C6, 0x63C6, 0x0C60, 0x63C7, 0x63C7, 0x2165,
+ 0x63C8, 0x63C8, 0x2168, 0x63C9, 0x63C9, 0x0C5F, 0x63CA, 0x63CA, 0x2156,
+ 0x63CB, 0x63CB, 0x2167, 0x63CC, 0x63CC, 0x2166, 0x63CD, 0x63CD, 0x0C61,
+ 0x63CE, 0x63CE, 0x214F, 0x63CF, 0x63CF, 0x0C5C, 0x63D0, 0x63D0, 0x0C64,
+ 0x63D1, 0x63D1, 0x3A66, 0x63D2, 0x63D2, 0x0C62, 0x63D3, 0x63D3, 0x2163,
+ 0x63D5, 0x63D5, 0x2159, 0x63D6, 0x63D6, 0x0C66, 0x63D7, 0x63D7, 0x216A,
+ 0x63D8, 0x63D8, 0x2162, 0x63D9, 0x63D9, 0x216B, 0x63DA, 0x63DA, 0x0C6E,
+ 0x63DB, 0x63DB, 0x0C6C, 0x63DC, 0x63DC, 0x2160, 0x63DD, 0x63DD, 0x215F,
+ 0x63DE, 0x63DE, 0x3E60, 0x63DF, 0x63DF, 0x215D, 0x63E0, 0x63E0, 0x2157,
+ 0x63E1, 0x63E1, 0x0C65, 0x63E2, 0x63E2, 0x4641, 0x63E3, 0x63E3, 0x0C63,
+ 0x63E4, 0x63E4, 0x1CAA, 0x63E5, 0x63E5, 0x2150, 0x63E6, 0x63E6, 0x489F,
+ 0x63E7, 0x63E7, 0x2404, 0x63E8, 0x63E8, 0x2151, 0x63E9, 0x63E9, 0x0C5E,
+ 0x63EA, 0x63EA, 0x0C6B, 0x63EB, 0x63EB, 0x23E8, 0x63ED, 0x63EE, 0x0C67,
+ 0x63EF, 0x63EF, 0x2152, 0x63F0, 0x63F0, 0x2169, 0x63F1, 0x63F1, 0x23E7,
+ 0x63F2, 0x63F2, 0x215A, 0x63F3, 0x63F3, 0x2155, 0x63F4, 0x63F4, 0x0C6A,
+ 0x63F5, 0x63F5, 0x215B, 0x63F6, 0x63F6, 0x2158, 0x63F8, 0x63F8, 0x4192,
+ 0x63F9, 0x63F9, 0x0C6F, 0x63FB, 0x63FB, 0x4642, 0x63FC, 0x63FC, 0x3E9C,
+ 0x63FE, 0x63FE, 0x3E9E, 0x6406, 0x6406, 0x0E2A, 0x6407, 0x6407, 0x4643,
+ 0x6409, 0x6409, 0x23EB, 0x640A, 0x640A, 0x23FE, 0x640B, 0x640B, 0x2403,
+ 0x640C, 0x640C, 0x23F7, 0x640D, 0x640D, 0x0E26, 0x640E, 0x640E, 0x2408,
+ 0x640F, 0x640F, 0x0E23, 0x6410, 0x6410, 0x23E9, 0x6412, 0x6412, 0x23EA,
+ 0x6413, 0x6413, 0x0E1C, 0x6414, 0x6414, 0x0E25, 0x6415, 0x6415, 0x23F1,
+ 0x6416, 0x6417, 0x0E28, 0x6418, 0x6418, 0x23F2, 0x641A, 0x641A, 0x23FF,
+ 0x641B, 0x641B, 0x2405, 0x641C, 0x641C, 0x0E24, 0x641E, 0x641E, 0x0E1E,
+ 0x641F, 0x641F, 0x23F0, 0x6420, 0x6420, 0x23EC, 0x6421, 0x6421, 0x2407,
+ 0x6422, 0x6423, 0x23F5, 0x6424, 0x6424, 0x23ED, 0x6425, 0x6425, 0x2401,
+ 0x6426, 0x6426, 0x23F8, 0x6427, 0x6427, 0x2402, 0x6428, 0x6428, 0x23FA,
+ 0x642A, 0x642A, 0x0E1F, 0x642B, 0x642B, 0x2699, 0x642C, 0x642C, 0x0E22,
+ 0x642D, 0x642D, 0x0E20, 0x642E, 0x642E, 0x2406, 0x642F, 0x642F, 0x23FD,
+ 0x6430, 0x6430, 0x23F9, 0x6432, 0x6432, 0x45D9, 0x6433, 0x6433, 0x23EE,
+ 0x6434, 0x6434, 0x0FE4, 0x6435, 0x6435, 0x23FC, 0x6436, 0x6436, 0x0E27,
+ 0x6437, 0x6437, 0x23F4, 0x6438, 0x6438, 0x4191, 0x6439, 0x6439, 0x23F3,
+ 0x643A, 0x643A, 0x419D, 0x643B, 0x643B, 0x3A6B, 0x643D, 0x643D, 0x0E21,
+ 0x643E, 0x643E, 0x0E1D, 0x643F, 0x643F, 0x26AE, 0x6440, 0x6440, 0x2400,
+ 0x6441, 0x6441, 0x23FB, 0x6443, 0x6443, 0x23EF, 0x644B, 0x644B, 0x26A9,
+ 0x644D, 0x644D, 0x269A, 0x644E, 0x644E, 0x26A5, 0x6450, 0x6450, 0x26AC,
+ 0x6451, 0x6451, 0x0FE2, 0x6452, 0x6452, 0x0C6D, 0x6453, 0x6453, 0x26AA,
+ 0x6454, 0x6454, 0x0FDD, 0x6458, 0x6458, 0x0FDC, 0x6459, 0x6459, 0x26B1,
+ 0x645A, 0x645A, 0x43C2, 0x645B, 0x645B, 0x269B, 0x645C, 0x645C, 0x26A8,
+ 0x645D, 0x645D, 0x269C, 0x645E, 0x645E, 0x26A7, 0x645F, 0x645F, 0x0FE0,
+ 0x6460, 0x6460, 0x26AB, 0x6461, 0x6461, 0x215C, 0x6465, 0x6465, 0x26B2,
+ 0x6466, 0x6466, 0x26A3, 0x6467, 0x6467, 0x0FE3, 0x6468, 0x6468, 0x28EE,
+ 0x6469, 0x6469, 0x1159, 0x646B, 0x646B, 0x26B0, 0x646C, 0x646C, 0x26AF,
+ 0x646D, 0x646D, 0x0FE5, 0x646E, 0x646E, 0x28E1, 0x646F, 0x646F, 0x115A,
+ 0x6470, 0x6470, 0x28E2, 0x6471, 0x6471, 0x3A5B, 0x6472, 0x6473, 0x269F,
+ 0x6474, 0x6474, 0x269D, 0x6475, 0x6475, 0x26A2, 0x6476, 0x6476, 0x269E,
+ 0x6477, 0x6477, 0x26B3, 0x6478, 0x6478, 0x0FDF, 0x6479, 0x6479, 0x115B,
+ 0x647A, 0x647A, 0x0FE1, 0x647B, 0x647B, 0x0FE6, 0x647C, 0x647C, 0x436C,
+ 0x647D, 0x647D, 0x26A1, 0x647F, 0x647F, 0x26AD, 0x6482, 0x6482, 0x26A6,
+ 0x6485, 0x6485, 0x28E5, 0x6487, 0x6487, 0x0FDB, 0x6488, 0x6488, 0x115E,
+ 0x6489, 0x6489, 0x2B54, 0x648A, 0x648A, 0x28EA, 0x648B, 0x648B, 0x28E9,
+ 0x648C, 0x648C, 0x28EB, 0x648D, 0x648D, 0x4323, 0x648F, 0x648F, 0x28E8,
+ 0x6490, 0x6490, 0x115F, 0x6491, 0x6491, 0x43C3, 0x6492, 0x6492, 0x1165,
+ 0x6493, 0x6493, 0x1162, 0x6495, 0x6495, 0x1163, 0x6496, 0x6496, 0x28E3,
+ 0x6497, 0x6497, 0x28E6, 0x6498, 0x6498, 0x28F0, 0x6499, 0x6499, 0x116B,
+ 0x649A, 0x649A, 0x1169, 0x649C, 0x649C, 0x28E7, 0x649D, 0x649D, 0x2154,
+ 0x649E, 0x649E, 0x115C, 0x649F, 0x649F, 0x28ED, 0x64A0, 0x64A0, 0x28E4,
+ 0x64A2, 0x64A2, 0x116C, 0x64A3, 0x64A3, 0x28EC, 0x64A4, 0x64A4, 0x0FDE,
+ 0x64A5, 0x64A5, 0x1161, 0x64A6, 0x64A6, 0x26A4, 0x64A9, 0x64A9, 0x1164,
+ 0x64AB, 0x64AB, 0x1168, 0x64AC, 0x64AC, 0x116A, 0x64AD, 0x64AD, 0x1167,
+ 0x64AE, 0x64AE, 0x1166, 0x64AF, 0x64AF, 0x42E1, 0x64B0, 0x64B0, 0x1160,
+ 0x64B1, 0x64B1, 0x28EF, 0x64B2, 0x64B2, 0x115D, 0x64B3, 0x64B3, 0x116D,
+ 0x64B4, 0x64B4, 0x4340, 0x64B6, 0x64B6, 0x3A64, 0x64BB, 0x64BC, 0x12BB,
+ 0x64BD, 0x64BD, 0x2B53, 0x64BE, 0x64BE, 0x12C5, 0x64BF, 0x64BF, 0x12C2,
+ 0x64C0, 0x64C0, 0x4645, 0x64C1, 0x64C1, 0x12B9, 0x64C2, 0x64C2, 0x12C0,
+ 0x64C3, 0x64C3, 0x2B55, 0x64C4, 0x64C4, 0x12BE, 0x64C5, 0x64C5, 0x12B8,
+ 0x64C7, 0x64C7, 0x12BF, 0x64C9, 0x64C9, 0x2B52, 0x64CA, 0x64CA, 0x13D8,
+ 0x64CB, 0x64CB, 0x12BA, 0x64CD, 0x64CD, 0x12C1, 0x64CE, 0x64CE, 0x13D7,
+ 0x64CF, 0x64CF, 0x2B51, 0x64D0, 0x64D0, 0x2B50, 0x64D2, 0x64D2, 0x12C3,
+ 0x64D3, 0x64D3, 0x3F03, 0x64D4, 0x64D4, 0x12C4, 0x64D6, 0x64D6, 0x2B4F,
+ 0x64D7, 0x64D7, 0x2B4E, 0x64D8, 0x64D8, 0x13D9, 0x64D9, 0x64D9, 0x2B58,
+ 0x64DA, 0x64DA, 0x12BD, 0x64DB, 0x64DB, 0x2B56, 0x64DD, 0x64DD, 0x431E,
+ 0x64E0, 0x64E0, 0x13DA, 0x64E1, 0x64E1, 0x4199, 0x64E2, 0x64E2, 0x13DF,
+ 0x64E3, 0x64E3, 0x2D6A, 0x64E4, 0x64E4, 0x2D6C, 0x64E5, 0x64E5, 0x419A,
+ 0x64E6, 0x64E6, 0x13DC, 0x64E7, 0x64E7, 0x37A8, 0x64E8, 0x64E8, 0x2D6D,
+ 0x64E9, 0x64E9, 0x2D69, 0x64EA, 0x64EA, 0x434A, 0x64EB, 0x64EB, 0x2D6B,
+ 0x64EC, 0x64EC, 0x13DD, 0x64ED, 0x64ED, 0x13E0, 0x64EF, 0x64EF, 0x2D68,
+ 0x64F0, 0x64F0, 0x13DB, 0x64F1, 0x64F1, 0x13DE, 0x64F2, 0x64F2, 0x14D3,
+ 0x64F3, 0x64F3, 0x2B57, 0x64F4, 0x64F4, 0x14D2, 0x64F7, 0x64F7, 0x14D8,
+ 0x64F8, 0x64F8, 0x2F2B, 0x64FA, 0x64FB, 0x14D6, 0x64FC, 0x64FC, 0x2F2E,
+ 0x64FD, 0x64FD, 0x2F2A, 0x64FE, 0x64FE, 0x14D4, 0x64FF, 0x64FF, 0x2F28,
+ 0x6500, 0x6500, 0x1582, 0x6501, 0x6501, 0x2F2C, 0x6503, 0x6503, 0x2F2D,
+ 0x6504, 0x6504, 0x2F29, 0x6506, 0x6506, 0x14D5, 0x6507, 0x6507, 0x3090,
+ 0x6509, 0x6509, 0x3093, 0x650A, 0x650A, 0x4536, 0x650C, 0x650C, 0x3094,
+ 0x650D, 0x650D, 0x3092, 0x650E, 0x650E, 0x3095, 0x650F, 0x650F, 0x1583,
+ 0x6510, 0x6510, 0x3091, 0x6511, 0x6511, 0x3AA9, 0x6513, 0x6513, 0x31D7,
+ 0x6514, 0x6514, 0x1617, 0x6515, 0x6515, 0x31D6, 0x6516, 0x6516, 0x31D5,
+ 0x6517, 0x6517, 0x31D4, 0x6518, 0x6518, 0x1616, 0x6519, 0x6519, 0x1618,
+ 0x651B, 0x651B, 0x32D2, 0x651C, 0x651C, 0x1673, 0x651D, 0x651D, 0x1672,
+ 0x651E, 0x651E, 0x4187, 0x651F, 0x651F, 0x3EC0, 0x6520, 0x6520, 0x3382,
+ 0x6521, 0x6521, 0x3381, 0x6522, 0x6522, 0x3384, 0x6523, 0x6523, 0x16F9,
+ 0x6524, 0x6524, 0x16C5, 0x6525, 0x6525, 0x341B, 0x6526, 0x6526, 0x3383,
+ 0x6529, 0x6529, 0x341A, 0x652A, 0x652A, 0x16FB, 0x652B, 0x652B, 0x16FA,
+ 0x652C, 0x652C, 0x1721, 0x652D, 0x652D, 0x3484, 0x652E, 0x652E, 0x34CA,
+ 0x652F, 0x652F, 0x02D5, 0x6530, 0x6530, 0x3E62, 0x6532, 0x6532, 0x216C,
+ 0x6533, 0x6533, 0x2B59, 0x6534, 0x6534, 0x022C, 0x6535, 0x6535, 0x44ED,
+ 0x6536, 0x6536, 0x03D7, 0x6537, 0x6537, 0x17F6, 0x6538, 0x6538, 0x04B9,
+ 0x6539, 0x6539, 0x04B7, 0x653B, 0x653B, 0x04B8, 0x653D, 0x653D, 0x19A1,
+ 0x653E, 0x653E, 0x05F3, 0x653F, 0x653F, 0x0741, 0x6541, 0x6541, 0x1B01,
+ 0x6543, 0x6543, 0x1B02, 0x6545, 0x6545, 0x0742, 0x6546, 0x6546, 0x1CBF,
+ 0x6548, 0x6549, 0x08D6, 0x654A, 0x654A, 0x1CBE, 0x654D, 0x654D, 0x419F,
+ 0x654F, 0x654F, 0x0ABD, 0x6551, 0x6551, 0x0AB9, 0x6553, 0x6553, 0x1F0C,
+ 0x6554, 0x6554, 0x0AC0, 0x6555, 0x6555, 0x0ABF, 0x6556, 0x6556, 0x0AB8,
+ 0x6557, 0x6557, 0x0ABB, 0x6558, 0x6558, 0x0ABE, 0x6559, 0x6559, 0x0ABA,
+ 0x655C, 0x655C, 0x2170, 0x655D, 0x655D, 0x0AB7, 0x655E, 0x655E, 0x0C70,
+ 0x655F, 0x655F, 0x41A5, 0x6562, 0x6563, 0x0C72, 0x6564, 0x6564, 0x216F,
+ 0x6565, 0x6565, 0x2172, 0x6566, 0x6566, 0x0C71, 0x6567, 0x6567, 0x216D,
+ 0x6568, 0x6568, 0x2171, 0x656A, 0x656A, 0x216E, 0x656B, 0x656B, 0x3A6C,
+ 0x656C, 0x656C, 0x0E2B, 0x656D, 0x656D, 0x41A4, 0x656F, 0x656F, 0x2409,
+ 0x6572, 0x6572, 0x0FE7, 0x6573, 0x6573, 0x26B4, 0x6574, 0x6574, 0x12C6,
+ 0x6575, 0x6575, 0x116E, 0x6576, 0x6576, 0x28F1, 0x6577, 0x6578, 0x116F,
+ 0x6579, 0x6579, 0x28F3, 0x657A, 0x657A, 0x28F2, 0x657B, 0x657B, 0x28F4,
+ 0x657C, 0x657C, 0x2B5B, 0x657F, 0x657F, 0x2B5A, 0x6580, 0x6580, 0x2D6F,
+ 0x6581, 0x6581, 0x2D6E, 0x6582, 0x6583, 0x13E1, 0x6584, 0x6584, 0x3096,
+ 0x6585, 0x6585, 0x41A3, 0x6586, 0x6586, 0x4648, 0x6587, 0x6587, 0x02D6,
+ 0x6588, 0x6588, 0x410B, 0x6589, 0x6589, 0x4554, 0x658C, 0x658C, 0x2173,
+ 0x6590, 0x6590, 0x0C75, 0x6591, 0x6591, 0x0C74, 0x6592, 0x6592, 0x240A,
+ 0x6594, 0x6594, 0x2F2F, 0x6595, 0x6595, 0x1674, 0x6596, 0x6596, 0x341C,
+ 0x6597, 0x6597, 0x02D7, 0x6599, 0x6599, 0x08D8, 0x659B, 0x659B, 0x0AC2,
+ 0x659C, 0x659C, 0x0AC1, 0x659D, 0x659E, 0x2174, 0x659F, 0x659F, 0x0E2C,
+ 0x65A0, 0x65A0, 0x26B5, 0x65A1, 0x65A1, 0x0FE8, 0x65A2, 0x65A2, 0x2B5C,
+ 0x65A4, 0x65A4, 0x02D8, 0x65A5, 0x65A5, 0x0346, 0x65A7, 0x65A7, 0x05F4,
+ 0x65A8, 0x65A8, 0x19A2, 0x65AA, 0x65AA, 0x1B03, 0x65AB, 0x65AB, 0x0743,
+ 0x65AC, 0x65AC, 0x0AC3, 0x65AE, 0x65AE, 0x2176, 0x65AF, 0x65AF, 0x0C76,
+ 0x65B0, 0x65B0, 0x0E2D, 0x65B2, 0x65B3, 0x28F5, 0x65B5, 0x65B5, 0x41A7,
+ 0x65B6, 0x65B6, 0x2D70, 0x65B7, 0x65B7, 0x14D9, 0x65B8, 0x65B8, 0x34CB,
+ 0x65B9, 0x65B9, 0x02D9, 0x65BB, 0x65BB, 0x19A3, 0x65BC, 0x65BC, 0x05F5,
+ 0x65BD, 0x65BD, 0x0744, 0x65BE, 0x65BE, 0x3E3B, 0x65BF, 0x65BF, 0x1B04,
+ 0x65C1, 0x65C1, 0x08D9, 0x65C2, 0x65C2, 0x1CC3, 0x65C3, 0x65C4, 0x1CC1,
+ 0x65C5, 0x65C5, 0x08DA, 0x65C6, 0x65C6, 0x1CC0, 0x65CB, 0x65CC, 0x0AC5,
+ 0x65CD, 0x65CD, 0x1F0D, 0x65CE, 0x65CE, 0x0AC7, 0x65CF, 0x65CF, 0x0AC4,
+ 0x65D0, 0x65D0, 0x2177, 0x65D1, 0x65D1, 0x41AA, 0x65D2, 0x65D2, 0x2178,
+ 0x65D3, 0x65D3, 0x240B, 0x65D4, 0x65D4, 0x3BA8, 0x65D6, 0x65D6, 0x0FEA,
+ 0x65D7, 0x65D7, 0x0FE9, 0x65DA, 0x65DA, 0x2D71, 0x65DB, 0x65DB, 0x2F30,
+ 0x65DD, 0x65DD, 0x3098, 0x65DE, 0x65DE, 0x3097, 0x65DF, 0x65DF, 0x31D8,
+ 0x65E0, 0x65E0, 0x022D, 0x65E1, 0x65E1, 0x1789, 0x65E2, 0x65E2, 0x0745,
+ 0x65E3, 0x65E3, 0x41AE, 0x65E5, 0x65E5, 0x02DA, 0x65E6, 0x65E6, 0x0347,
+ 0x65E8, 0x65E8, 0x03D9, 0x65E9, 0x65E9, 0x03D8, 0x65EC, 0x65ED, 0x03DA,
+ 0x65EE, 0x65EE, 0x17F8, 0x65EF, 0x65EF, 0x17F7, 0x65F0, 0x65F0, 0x189E,
+ 0x65F1, 0x65F1, 0x04BA, 0x65F2, 0x65F2, 0x18A1, 0x65F3, 0x65F3, 0x18A0,
+ 0x65F4, 0x65F4, 0x189F, 0x65F5, 0x65F5, 0x18A2, 0x65FA, 0x65FA, 0x05F6,
+ 0x65FB, 0x65FB, 0x19A9, 0x65FC, 0x65FC, 0x19A5, 0x65FD, 0x65FD, 0x19AE,
+ 0x65FF, 0x65FF, 0x464A, 0x6600, 0x6600, 0x05FD, 0x6602, 0x6602, 0x05FB,
+ 0x6603, 0x6603, 0x19AA, 0x6604, 0x6604, 0x19A6, 0x6605, 0x6605, 0x19AD,
+ 0x6606, 0x6606, 0x05FA, 0x6607, 0x6607, 0x0601, 0x6608, 0x6608, 0x19A8,
+ 0x6609, 0x6609, 0x19A4, 0x660A, 0x660A, 0x0600, 0x660B, 0x660B, 0x19AB,
+ 0x660C, 0x660C, 0x05F9, 0x660D, 0x660D, 0x19AC, 0x660E, 0x660E, 0x05FC,
+ 0x660F, 0x660F, 0x05FE, 0x6610, 0x6610, 0x19B0, 0x6611, 0x6611, 0x19AF,
+ 0x6612, 0x6612, 0x19A7, 0x6613, 0x6613, 0x05F8, 0x6614, 0x6614, 0x05F7,
+ 0x6615, 0x6615, 0x05FF, 0x6618, 0x6618, 0x41B1, 0x661C, 0x661C, 0x1B09,
+ 0x661D, 0x661D, 0x1B0F, 0x661E, 0x661E, 0x3A93, 0x661F, 0x661F, 0x074B,
+ 0x6620, 0x6620, 0x0748, 0x6621, 0x6621, 0x1B06, 0x6622, 0x6622, 0x1B0B,
+ 0x6623, 0x6623, 0x4295, 0x6624, 0x6624, 0x074E, 0x6625, 0x6625, 0x0746,
+ 0x6626, 0x6626, 0x1B0A, 0x6627, 0x6627, 0x0749, 0x6628, 0x6628, 0x074C,
+ 0x662B, 0x662B, 0x1B0D, 0x662D, 0x662D, 0x0747, 0x662E, 0x662E, 0x1B12,
+ 0x662F, 0x662F, 0x074A, 0x6630, 0x6630, 0x3A8D, 0x6631, 0x6631, 0x074D,
+ 0x6632, 0x6632, 0x1B07, 0x6633, 0x6633, 0x1B0C, 0x6634, 0x6634, 0x1B10,
+ 0x6635, 0x6635, 0x1B08, 0x6636, 0x6636, 0x1B05, 0x6639, 0x6639, 0x1B11,
+ 0x663A, 0x663A, 0x1B0E, 0x6641, 0x6641, 0x08E2, 0x6642, 0x6642, 0x08DB,
+ 0x6643, 0x6643, 0x08DE, 0x6644, 0x6644, 0x41B4, 0x6645, 0x6645, 0x08E1,
+ 0x6647, 0x6647, 0x1CC6, 0x6648, 0x6648, 0x3D99, 0x6649, 0x6649, 0x08DC,
+ 0x664A, 0x664A, 0x1CC4, 0x664B, 0x664B, 0x41B7, 0x664C, 0x664C, 0x08E0,
+ 0x664F, 0x664F, 0x08DD, 0x6651, 0x6651, 0x1CC7, 0x6652, 0x6652, 0x08DF,
+ 0x6653, 0x6653, 0x464B, 0x6657, 0x6657, 0x409B, 0x6659, 0x6659, 0x1F11,
+ 0x665A, 0x665A, 0x0AC9, 0x665B, 0x665B, 0x1F10, 0x665C, 0x665C, 0x1F12,
+ 0x665D, 0x665D, 0x0AC8, 0x665E, 0x665E, 0x0ACD, 0x665F, 0x665F, 0x1CC5,
+ 0x6661, 0x6661, 0x1F0F, 0x6662, 0x6662, 0x1F13, 0x6663, 0x6663, 0x3A90,
+ 0x6664, 0x6664, 0x0ACA, 0x6665, 0x6665, 0x1F0E, 0x6666, 0x6666, 0x0ACC,
+ 0x6667, 0x6667, 0x41B9, 0x6668, 0x6668, 0x0ACB, 0x666A, 0x666A, 0x217F,
+ 0x666B, 0x666B, 0x3A8B, 0x666C, 0x666C, 0x217A, 0x666E, 0x666E, 0x0C77,
+ 0x666F, 0x666F, 0x0C7B, 0x6670, 0x6670, 0x0C78, 0x6671, 0x6671, 0x217D,
+ 0x6672, 0x6672, 0x2180, 0x6673, 0x6673, 0x41BB, 0x6674, 0x6674, 0x0C79,
+ 0x6676, 0x6676, 0x0C7A, 0x6677, 0x6677, 0x0C7F, 0x6678, 0x6678, 0x2414,
+ 0x6679, 0x6679, 0x217E, 0x667A, 0x667A, 0x0C7D, 0x667B, 0x667B, 0x217B,
+ 0x667C, 0x667C, 0x2179, 0x667D, 0x667D, 0x469B, 0x667E, 0x667E, 0x0C7E,
+ 0x6680, 0x6680, 0x217C, 0x6684, 0x6684, 0x0E33, 0x6685, 0x6685, 0x4162,
+ 0x6686, 0x6686, 0x240C, 0x6687, 0x6688, 0x0E30, 0x6689, 0x6689, 0x0E2F,
+ 0x668A, 0x668A, 0x2411, 0x668B, 0x668B, 0x2410, 0x668C, 0x668C, 0x240D,
+ 0x668D, 0x668D, 0x0E35, 0x668E, 0x668E, 0x3A89, 0x6690, 0x6690, 0x240F,
+ 0x6691, 0x6691, 0x0C7C, 0x6692, 0x6692, 0x464D, 0x6694, 0x6694, 0x2413,
+ 0x6695, 0x6695, 0x240E, 0x6696, 0x6696, 0x0E32, 0x6697, 0x6697, 0x0E2E,
+ 0x6698, 0x6698, 0x0E34, 0x6699, 0x6699, 0x2412, 0x669A, 0x669A, 0x3D3D,
+ 0x669D, 0x669D, 0x0FED, 0x669F, 0x669F, 0x26B8, 0x66A0, 0x66A0, 0x26B7,
+ 0x66A1, 0x66A1, 0x26B6, 0x66A2, 0x66A2, 0x0FEB, 0x66A4, 0x66A4, 0x40BA,
+ 0x66A8, 0x66A8, 0x0FEC, 0x66A9, 0x66A9, 0x28F9, 0x66AA, 0x66AA, 0x28FC,
+ 0x66AB, 0x66AB, 0x1172, 0x66AD, 0x66AD, 0x4948, 0x66AE, 0x66AE, 0x1171,
+ 0x66AF, 0x66AF, 0x28FD, 0x66B0, 0x66B0, 0x28F8, 0x66B1, 0x66B1, 0x1174,
+ 0x66B2, 0x66B2, 0x28FA, 0x66B3, 0x66B3, 0x40B5, 0x66B4, 0x66B4, 0x1173,
+ 0x66B5, 0x66B5, 0x28F7, 0x66B6, 0x66B6, 0x3E13, 0x66B7, 0x66B7, 0x28FB,
+ 0x66B8, 0x66B8, 0x12CC, 0x66B9, 0x66B9, 0x12C9, 0x66BA, 0x66BA, 0x2B65,
+ 0x66BB, 0x66BB, 0x2B64, 0x66BD, 0x66BD, 0x2B63, 0x66BE, 0x66BE, 0x2B5E,
+ 0x66BF, 0x66BF, 0x3D9A, 0x66C0, 0x66C0, 0x2B5F, 0x66C4, 0x66C4, 0x12CA,
+ 0x66C6, 0x66C6, 0x12C7, 0x66C7, 0x66C7, 0x12CB, 0x66C8, 0x66C8, 0x2B5D,
+ 0x66C9, 0x66C9, 0x12C8, 0x66CA, 0x66CB, 0x2B60, 0x66CC, 0x66CC, 0x2B66,
+ 0x66CD, 0x66CD, 0x40B8, 0x66CE, 0x66CE, 0x3A77, 0x66CF, 0x66CF, 0x2B62,
+ 0x66D2, 0x66D2, 0x2D72, 0x66D6, 0x66D6, 0x13E4, 0x66D8, 0x66D8, 0x2F33,
+ 0x66D9, 0x66D9, 0x13E3, 0x66DA, 0x66DB, 0x2F31, 0x66DC, 0x66DC, 0x14DA,
+ 0x66DD, 0x66DD, 0x1585, 0x66DE, 0x66DE, 0x3099, 0x66E0, 0x66E0, 0x1584,
+ 0x66E3, 0x66E4, 0x31DA, 0x66E6, 0x66E6, 0x1619, 0x66E8, 0x66E8, 0x31D9,
+ 0x66E9, 0x66E9, 0x1675, 0x66EB, 0x66EB, 0x341D, 0x66EC, 0x66EC, 0x16FC,
+ 0x66ED, 0x66EE, 0x3485, 0x66F0, 0x66F0, 0x02DB, 0x66F1, 0x66F1, 0x3E84,
+ 0x66F2, 0x66F3, 0x03DC, 0x66F4, 0x66F4, 0x04BB, 0x66F6, 0x66F6, 0x19B1,
+ 0x66F7, 0x66F7, 0x074F, 0x66F8, 0x66F8, 0x08E3, 0x66F9, 0x66F9, 0x0ACE,
+ 0x66FC, 0x66FC, 0x0A1F, 0x66FE, 0x66FF, 0x0C80, 0x6700, 0x6700, 0x0BF0,
+ 0x6701, 0x6701, 0x2181, 0x6702, 0x6702, 0x41C4, 0x6703, 0x6703, 0x0E36,
+ 0x6704, 0x6704, 0x26BA, 0x6705, 0x6705, 0x26B9, 0x6708, 0x6708, 0x02DC,
+ 0x6709, 0x6709, 0x03DE, 0x670A, 0x670A, 0x19B2, 0x670B, 0x670B, 0x0603,
+ 0x670C, 0x670C, 0x3FE2, 0x670D, 0x670D, 0x0602, 0x670E, 0x670E, 0x3DA1,
+ 0x670F, 0x6710, 0x1B13, 0x6712, 0x6713, 0x1CC8, 0x6714, 0x6715, 0x08E4,
+ 0x6716, 0x6716, 0x464F, 0x6717, 0x6717, 0x08E6, 0x6718, 0x6718, 0x1F14,
+ 0x671B, 0x671B, 0x0AD0, 0x671D, 0x671D, 0x0C83, 0x671E, 0x671E, 0x3D8B,
+ 0x671F, 0x671F, 0x0C82, 0x6720, 0x6720, 0x2415, 0x6721, 0x6721, 0x2522,
+ 0x6722, 0x6722, 0x26BB, 0x6723, 0x6723, 0x2B67, 0x6725, 0x6725, 0x379F,
+ 0x6726, 0x6726, 0x14DB, 0x6727, 0x6727, 0x161A, 0x6728, 0x6728, 0x02DD,
+ 0x672A, 0x672B, 0x034A, 0x672C, 0x672C, 0x0349, 0x672D, 0x672D, 0x034C,
+ 0x672E, 0x672E, 0x0348, 0x6731, 0x6731, 0x03E1, 0x6733, 0x6733, 0x1800,
+ 0x6734, 0x6734, 0x03E0, 0x6735, 0x6735, 0x03E2, 0x6736, 0x6736, 0x3E41,
+ 0x6738, 0x6738, 0x17FB, 0x6739, 0x6739, 0x17FA, 0x673A, 0x673A, 0x17FD,
+ 0x673B, 0x673B, 0x17FC, 0x673C, 0x673C, 0x17FF, 0x673D, 0x673D, 0x03DF,
+ 0x673E, 0x673E, 0x17F9, 0x673F, 0x673F, 0x17FE, 0x6744, 0x6744, 0x401B,
+ 0x6745, 0x6745, 0x18A3, 0x6746, 0x6746, 0x04C5, 0x6747, 0x6747, 0x18A4,
+ 0x6748, 0x6748, 0x18A8, 0x6749, 0x6749, 0x04C4, 0x674B, 0x674B, 0x18AC,
+ 0x674C, 0x674C, 0x18A7, 0x674D, 0x674D, 0x18AA, 0x674E, 0x6751, 0x04BD,
+ 0x6753, 0x6753, 0x04C7, 0x6755, 0x6755, 0x18A6, 0x6756, 0x6756, 0x04C2,
+ 0x6757, 0x6757, 0x04C8, 0x6759, 0x6759, 0x18A5, 0x675A, 0x675A, 0x18AB,
+ 0x675C, 0x675C, 0x04C1, 0x675D, 0x675D, 0x18A9, 0x675E, 0x675E, 0x04C3,
+ 0x675F, 0x675F, 0x04BC, 0x6760, 0x6760, 0x04C6, 0x6761, 0x6761, 0x3D66,
+ 0x6762, 0x6762, 0x41CB, 0x6767, 0x6767, 0x41CA, 0x676A, 0x676A, 0x0618,
+ 0x676C, 0x676C, 0x19B4, 0x676D, 0x676D, 0x0604, 0x676F, 0x6770, 0x060E,
+ 0x6771, 0x6771, 0x0607, 0x6772, 0x6772, 0x0619, 0x6773, 0x6773, 0x0609,
+ 0x6774, 0x6774, 0x19BC, 0x6775, 0x6775, 0x0614, 0x6776, 0x6776, 0x19B7,
+ 0x6777, 0x6777, 0x060A, 0x6778, 0x6779, 0x19C6, 0x677A, 0x677A, 0x19BF,
+ 0x677B, 0x677B, 0x19B8, 0x677C, 0x677C, 0x0617, 0x677D, 0x677D, 0x19C4,
+ 0x677E, 0x677E, 0x0612, 0x677F, 0x677F, 0x0610, 0x6781, 0x6781, 0x19C5,
+ 0x6783, 0x6783, 0x19C3, 0x6784, 0x6784, 0x19BB, 0x6785, 0x6785, 0x19B3,
+ 0x6786, 0x6786, 0x19BA, 0x6787, 0x6787, 0x060B, 0x6789, 0x6789, 0x0611,
+ 0x678B, 0x678B, 0x0605, 0x678C, 0x678C, 0x19BE, 0x678D, 0x678D, 0x19BD,
+ 0x678E, 0x678E, 0x19B5, 0x678F, 0x678F, 0x46C1, 0x6790, 0x6790, 0x0613,
+ 0x6791, 0x6791, 0x19C1, 0x6792, 0x6792, 0x19B6, 0x6793, 0x6793, 0x0616,
+ 0x6794, 0x6794, 0x19C8, 0x6795, 0x6795, 0x0606, 0x6797, 0x6797, 0x060D,
+ 0x6798, 0x6798, 0x19B9, 0x6799, 0x6799, 0x19C2, 0x679A, 0x679A, 0x0615,
+ 0x679C, 0x679C, 0x0608, 0x679D, 0x679D, 0x060C, 0x679F, 0x679F, 0x19C0,
+ 0x67A0, 0x67A0, 0x3D7A, 0x67A4, 0x67A4, 0x4651, 0x67AC, 0x67AC, 0x41E3,
+ 0x67AE, 0x67AE, 0x1B34, 0x67AF, 0x67AF, 0x0757, 0x67B0, 0x67B0, 0x0764,
+ 0x67B1, 0x67B1, 0x41F4, 0x67B2, 0x67B2, 0x1B2F, 0x67B3, 0x67B3, 0x1B25,
+ 0x67B4, 0x67B4, 0x075D, 0x67B5, 0x67B5, 0x1B23, 0x67B6, 0x67B6, 0x0756,
+ 0x67B7, 0x67B7, 0x1B1E, 0x67B8, 0x67B8, 0x0760, 0x67B9, 0x67B9, 0x1B2B,
+ 0x67BA, 0x67BA, 0x1B18, 0x67BB, 0x67BB, 0x1B1A, 0x67BF, 0x67BF, 0x37FA,
+ 0x67C0, 0x67C0, 0x1B1D, 0x67C1, 0x67C1, 0x1B15, 0x67C2, 0x67C2, 0x1B2A,
+ 0x67C3, 0x67C3, 0x1B3A, 0x67C4, 0x67C4, 0x075B, 0x67C5, 0x67C5, 0x1B1F,
+ 0x67C6, 0x67C6, 0x1B31, 0x67C8, 0x67C8, 0x1B17, 0x67C9, 0x67CA, 0x1B38,
+ 0x67CB, 0x67CB, 0x1B3C, 0x67CC, 0x67CC, 0x1B33, 0x67CD, 0x67CD, 0x1B24,
+ 0x67CE, 0x67CE, 0x1B2C, 0x67CF, 0x67CF, 0x0761, 0x67D0, 0x67D0, 0x0754,
+ 0x67D1, 0x67D1, 0x075C, 0x67D2, 0x67D2, 0x0768, 0x67D3, 0x67D3, 0x0751,
+ 0x67D4, 0x67D4, 0x0753, 0x67D6, 0x67D6, 0x3B58, 0x67D7, 0x67D7, 0x41CE,
+ 0x67D8, 0x67D8, 0x1B1C, 0x67D9, 0x67D9, 0x0765, 0x67DA, 0x67DA, 0x075E,
+ 0x67DB, 0x67DB, 0x1B36, 0x67DC, 0x67DC, 0x1B19, 0x67DD, 0x67DD, 0x0767,
+ 0x67DE, 0x67DE, 0x0762, 0x67DF, 0x67DF, 0x1B22, 0x67E2, 0x67E2, 0x0766,
+ 0x67E3, 0x67E3, 0x1B29, 0x67E4, 0x67E4, 0x1B21, 0x67E5, 0x67E5, 0x075F,
+ 0x67E6, 0x67E6, 0x1B35, 0x67E7, 0x67E7, 0x1B2D, 0x67E9, 0x67E9, 0x0759,
+ 0x67EA, 0x67EA, 0x1B3B, 0x67EB, 0x67EB, 0x1B20, 0x67EC, 0x67EC, 0x0755,
+ 0x67ED, 0x67ED, 0x1B32, 0x67EE, 0x67EE, 0x1B28, 0x67EF, 0x67EF, 0x075A,
+ 0x67F0, 0x67F0, 0x1B2E, 0x67F1, 0x67F1, 0x0752, 0x67F2, 0x67F2, 0x1B16,
+ 0x67F3, 0x67F3, 0x0763, 0x67F4, 0x67F4, 0x08F5, 0x67F5, 0x67F5, 0x0758,
+ 0x67F6, 0x67F6, 0x1B27, 0x67F7, 0x67F7, 0x1B26, 0x67F8, 0x67F8, 0x1B1B,
+ 0x67F9, 0x67F9, 0x3996, 0x67FA, 0x67FA, 0x1B37, 0x67FC, 0x67FC, 0x1B30,
+ 0x67FE, 0x67FE, 0x4555, 0x67FF, 0x67FF, 0x0750, 0x6800, 0x6800, 0x43C7,
+ 0x6801, 0x6801, 0x41D3, 0x6802, 0x6802, 0x3FC8, 0x6803, 0x6803, 0x3D6A,
+ 0x6804, 0x6804, 0x4556, 0x680D, 0x680D, 0x4281, 0x6810, 0x6810, 0x399C,
+ 0x6812, 0x6812, 0x1CDD, 0x6813, 0x6813, 0x08FC, 0x6814, 0x6814, 0x1CDE,
+ 0x6816, 0x6816, 0x1CD2, 0x6817, 0x6817, 0x08F1, 0x6818, 0x6818, 0x08FD,
+ 0x681A, 0x681A, 0x1CCB, 0x681B, 0x681B, 0x4072, 0x681C, 0x681C, 0x1CD4,
+ 0x681D, 0x681D, 0x1CDC, 0x681E, 0x681E, 0x46C2, 0x681F, 0x681F, 0x1CCA,
+ 0x6820, 0x6820, 0x1CE5, 0x6821, 0x6821, 0x08E7, 0x6822, 0x6822, 0x41D0,
+ 0x6825, 0x6825, 0x1CE4, 0x6826, 0x6826, 0x1CDF, 0x6828, 0x6828, 0x1CE0,
+ 0x6829, 0x6829, 0x08EF, 0x682A, 0x682A, 0x08FA, 0x682B, 0x682B, 0x1CD6,
+ 0x682D, 0x682D, 0x1CD7, 0x682E, 0x682E, 0x1CE1, 0x682F, 0x682F, 0x1CD8,
+ 0x6831, 0x6831, 0x1CD3, 0x6832, 0x6833, 0x1CCD, 0x6834, 0x6834, 0x1CDB,
+ 0x6835, 0x6835, 0x1CD5, 0x6836, 0x6836, 0x3E2E, 0x6837, 0x6837, 0x421D,
+ 0x6838, 0x6838, 0x08E8, 0x6839, 0x6839, 0x08EC, 0x683A, 0x683A, 0x1CE3,
+ 0x683B, 0x683B, 0x1CCF, 0x683C, 0x683C, 0x08F8, 0x683D, 0x683D, 0x08F4,
+ 0x683E, 0x683E, 0x4147, 0x6840, 0x6840, 0x08F7, 0x6841, 0x6841, 0x08FE,
+ 0x6842, 0x6842, 0x08ED, 0x6843, 0x6843, 0x08F9, 0x6844, 0x6844, 0x1CDA,
+ 0x6845, 0x6845, 0x08FB, 0x6846, 0x6846, 0x08EA, 0x6847, 0x6847, 0x3BEB,
+ 0x6848, 0x6848, 0x08E9, 0x6849, 0x6849, 0x1CCC, 0x684A, 0x684A, 0x4653,
+ 0x684B, 0x684B, 0x1CD0, 0x684C, 0x684C, 0x08F2, 0x684D, 0x684D, 0x1CE2,
+ 0x684E, 0x684E, 0x1CD9, 0x684F, 0x684F, 0x1CD1, 0x6850, 0x6850, 0x08F6,
+ 0x6851, 0x6851, 0x08F3, 0x6853, 0x6853, 0x08EB, 0x6854, 0x6854, 0x08EE,
+ 0x6855, 0x6855, 0x3D90, 0x6856, 0x6856, 0x3814, 0x685D, 0x685D, 0x41D6,
+ 0x6865, 0x6865, 0x4557, 0x686B, 0x686B, 0x1F29, 0x686D, 0x686E, 0x1F19,
+ 0x686F, 0x686F, 0x1F1E, 0x6871, 0x6871, 0x1F2D, 0x6872, 0x6872, 0x1F2A,
+ 0x6874, 0x6874, 0x1F23, 0x6875, 0x6875, 0x1F22, 0x6876, 0x6876, 0x0AD7,
+ 0x6877, 0x6877, 0x1F26, 0x6878, 0x6878, 0x1F35, 0x6879, 0x6879, 0x1F15,
+ 0x687B, 0x687B, 0x1F36, 0x687C, 0x687C, 0x1F28, 0x687D, 0x687D, 0x1F3A,
+ 0x687E, 0x687E, 0x1F2E, 0x687F, 0x687F, 0x0AD6, 0x6880, 0x6880, 0x1F2C,
+ 0x6881, 0x6881, 0x0AD1, 0x6882, 0x6882, 0x0AE6, 0x6883, 0x6883, 0x0ADC,
+ 0x6884, 0x6884, 0x4654, 0x6885, 0x6885, 0x0AE0, 0x6886, 0x6886, 0x0ADF,
+ 0x6887, 0x6887, 0x1F16, 0x6888, 0x6888, 0x46B7, 0x6889, 0x6889, 0x1F33,
+ 0x688A, 0x688A, 0x1F39, 0x688B, 0x688B, 0x1F31, 0x688C, 0x688C, 0x1F38,
+ 0x688F, 0x688F, 0x1F25, 0x6890, 0x6890, 0x1F17, 0x6891, 0x6891, 0x1F37,
+ 0x6892, 0x6892, 0x1F27, 0x6893, 0x6893, 0x0AD4, 0x6894, 0x6894, 0x0AE1,
+ 0x6896, 0x6896, 0x1F30, 0x6897, 0x6897, 0x0ADA, 0x6898, 0x6898, 0x3AAA,
+ 0x689B, 0x689B, 0x1F2F, 0x689C, 0x689C, 0x1F18, 0x689D, 0x689D, 0x0AE2,
+ 0x689F, 0x689F, 0x0AE4, 0x68A0, 0x68A0, 0x1F32, 0x68A1, 0x68A1, 0x0AE5,
+ 0x68A2, 0x68A2, 0x0AD3, 0x68A3, 0x68A3, 0x1F1F, 0x68A4, 0x68A4, 0x1F34,
+ 0x68A6, 0x68A6, 0x40E4, 0x68A7, 0x68A7, 0x0AD9, 0x68A8, 0x68A8, 0x0AE3,
+ 0x68A9, 0x68A9, 0x1F21, 0x68AA, 0x68AA, 0x1F2B, 0x68AB, 0x68AB, 0x1F1C,
+ 0x68AC, 0x68AC, 0x1F20, 0x68AD, 0x68AD, 0x0ADE, 0x68AE, 0x68AE, 0x1F1B,
+ 0x68AF, 0x68AF, 0x0AD2, 0x68B0, 0x68B0, 0x0ADB, 0x68B1, 0x68B1, 0x0AD8,
+ 0x68B2, 0x68B2, 0x1F24, 0x68B3, 0x68B3, 0x08F0, 0x68B4, 0x68B4, 0x2198,
+ 0x68B5, 0x68B5, 0x0AD5, 0x68B6, 0x68B6, 0x3A9E, 0x68B9, 0x68B9, 0x3D14,
+ 0x68BD, 0x68BD, 0x427C, 0x68C3, 0x68C3, 0x41DC, 0x68C4, 0x68C4, 0x0ADD,
+ 0x68C5, 0x68C5, 0x3C2E, 0x68C6, 0x68C6, 0x219B, 0x68C7, 0x68C7, 0x21B1,
+ 0x68C8, 0x68C8, 0x21A6, 0x68C9, 0x68C9, 0x0C97, 0x68CA, 0x68CA, 0x42EB,
+ 0x68CB, 0x68CB, 0x0C92, 0x68CC, 0x68CC, 0x2195, 0x68CD, 0x68CD, 0x0C93,
+ 0x68CE, 0x68CE, 0x21A5, 0x68D0, 0x68D0, 0x219E, 0x68D1, 0x68D1, 0x21AB,
+ 0x68D2, 0x68D2, 0x0C8F, 0x68D3, 0x68D3, 0x2183, 0x68D4, 0x68D4, 0x21AD,
+ 0x68D5, 0x68D5, 0x0C85, 0x68D6, 0x68D6, 0x218B, 0x68D7, 0x68D7, 0x0C88,
+ 0x68D8, 0x68D8, 0x0C87, 0x68DA, 0x68DA, 0x0C98, 0x68DC, 0x68DC, 0x2185,
+ 0x68DD, 0x68DE, 0x21A7, 0x68DF, 0x68DF, 0x0C8A, 0x68E0, 0x68E0, 0x0C86,
+ 0x68E1, 0x68E1, 0x2193, 0x68E3, 0x68E3, 0x0C91, 0x68E4, 0x68E4, 0x218E,
+ 0x68E6, 0x68E6, 0x21A9, 0x68E7, 0x68E7, 0x0C8D, 0x68E8, 0x68E8, 0x21A1,
+ 0x68E9, 0x68E9, 0x21AE, 0x68EA, 0x68EA, 0x2188, 0x68EB, 0x68EB, 0x218D,
+ 0x68EC, 0x68EC, 0x2187, 0x68EE, 0x68EE, 0x0C8C, 0x68EF, 0x68EF, 0x219A,
+ 0x68F0, 0x68F0, 0x242B, 0x68F1, 0x68F1, 0x2189, 0x68F2, 0x68F2, 0x0C90,
+ 0x68F3, 0x68F3, 0x2192, 0x68F4, 0x68F4, 0x21AA, 0x68F5, 0x68F5, 0x0C8B,
+ 0x68F6, 0x68F6, 0x218F, 0x68F7, 0x68F7, 0x218C, 0x68F8, 0x68F8, 0x219D,
+ 0x68F9, 0x68F9, 0x0C8E, 0x68FA, 0x68FA, 0x0C84, 0x68FB, 0x68FB, 0x0C9A,
+ 0x68FC, 0x68FC, 0x21A0, 0x68FD, 0x68FD, 0x219F, 0x6900, 0x6900, 0x41DF,
+ 0x6901, 0x6901, 0x41DE, 0x6902, 0x6902, 0x42FB, 0x6903, 0x6903, 0x429C,
+ 0x6904, 0x6904, 0x2184, 0x6905, 0x6905, 0x0C89, 0x6906, 0x6906, 0x21AC,
+ 0x6907, 0x6907, 0x2194, 0x6908, 0x6908, 0x2196, 0x6909, 0x6909, 0x4658,
+ 0x690A, 0x690A, 0x21A3, 0x690B, 0x690B, 0x21A2, 0x690C, 0x690C, 0x2182,
+ 0x690D, 0x690D, 0x0C94, 0x690E, 0x690E, 0x0C96, 0x690F, 0x690F, 0x218A,
+ 0x6910, 0x6910, 0x2191, 0x6911, 0x6911, 0x2199, 0x6912, 0x6912, 0x0C95,
+ 0x6913, 0x6913, 0x2190, 0x6914, 0x6914, 0x219C, 0x6915, 0x6915, 0x21AF,
+ 0x6917, 0x6917, 0x21A4, 0x6918, 0x6918, 0x3DA2, 0x691A, 0x691A, 0x3D80,
+ 0x691B, 0x691B, 0x37BD, 0x6925, 0x6925, 0x21B0, 0x692A, 0x692A, 0x2186,
+ 0x692C, 0x692C, 0x3F38, 0x692F, 0x692F, 0x243F, 0x6930, 0x6930, 0x0E3E,
+ 0x6932, 0x6932, 0x243D, 0x6933, 0x6933, 0x2428, 0x6934, 0x6934, 0x242D,
+ 0x6935, 0x6935, 0x2426, 0x6936, 0x6936, 0x41E7, 0x6937, 0x6937, 0x2439,
+ 0x6938, 0x6938, 0x2418, 0x6939, 0x6939, 0x241F, 0x693B, 0x693B, 0x2437,
+ 0x693C, 0x693C, 0x2441, 0x693D, 0x693D, 0x2429, 0x693E, 0x693E, 0x4056,
+ 0x693F, 0x693F, 0x241C, 0x6940, 0x6940, 0x242F, 0x6941, 0x6941, 0x2434,
+ 0x6942, 0x6942, 0x2420, 0x6943, 0x6943, 0x4659, 0x6944, 0x6944, 0x2431,
+ 0x6945, 0x6945, 0x241D, 0x6946, 0x6946, 0x456F, 0x6948, 0x6949, 0x2424,
+ 0x694A, 0x694A, 0x0E40, 0x694B, 0x694B, 0x2438, 0x694C, 0x694C, 0x2436,
+ 0x694E, 0x694E, 0x2419, 0x694F, 0x694F, 0x243B, 0x6951, 0x6951, 0x243C,
+ 0x6952, 0x6952, 0x243E, 0x6953, 0x6953, 0x0E44, 0x6954, 0x6954, 0x0E3C,
+ 0x6955, 0x6955, 0x3D86, 0x6956, 0x6956, 0x1F1D, 0x6957, 0x6957, 0x2421,
+ 0x6958, 0x6958, 0x2433, 0x6959, 0x6959, 0x2422, 0x695A, 0x695A, 0x0E39,
+ 0x695B, 0x695B, 0x0E49, 0x695C, 0x695C, 0x243A, 0x695D, 0x695D, 0x0E47,
+ 0x695E, 0x695E, 0x0E43, 0x695F, 0x695F, 0x2417, 0x6960, 0x6960, 0x0E3B,
+ 0x6961, 0x6961, 0x41E4, 0x6962, 0x6962, 0x241A, 0x6963, 0x6963, 0x0E48,
+ 0x6964, 0x6964, 0x465B, 0x6965, 0x6965, 0x242A, 0x6966, 0x6966, 0x2416,
+ 0x6967, 0x6967, 0x3D15, 0x6968, 0x6968, 0x0E41, 0x6969, 0x6969, 0x242E,
+ 0x696A, 0x696A, 0x241E, 0x696B, 0x696B, 0x0E42, 0x696C, 0x696C, 0x2427,
+ 0x696D, 0x696D, 0x0E38, 0x696E, 0x696E, 0x0C99, 0x696F, 0x696F, 0x2430,
+ 0x6970, 0x6970, 0x2197, 0x6971, 0x6971, 0x241B, 0x6972, 0x6972, 0x3A6D,
+ 0x6973, 0x6973, 0x41DB, 0x6974, 0x6974, 0x2435, 0x6975, 0x6975, 0x0E3D,
+ 0x6976, 0x6976, 0x2432, 0x6977, 0x6977, 0x0E3A, 0x6978, 0x6978, 0x242C,
+ 0x6979, 0x6979, 0x0E45, 0x697A, 0x697A, 0x2423, 0x697B, 0x697B, 0x2440,
+ 0x6980, 0x6980, 0x3F3E, 0x6982, 0x6982, 0x0E3F, 0x6983, 0x6983, 0x24AF,
+ 0x6985, 0x6985, 0x465D, 0x6986, 0x6986, 0x0E46, 0x698A, 0x698A, 0x3D74,
+ 0x698D, 0x698D, 0x26C9, 0x698E, 0x698E, 0x26C7, 0x6990, 0x6990, 0x26DD,
+ 0x6991, 0x6991, 0x26C5, 0x6993, 0x6993, 0x26D7, 0x6994, 0x6994, 0x0E37,
+ 0x6995, 0x6995, 0x0FF0, 0x6996, 0x6996, 0x26C1, 0x6997, 0x6997, 0x26DC,
+ 0x6998, 0x6998, 0x41E8, 0x6999, 0x6999, 0x26C6, 0x699A, 0x699A, 0x26D4,
+ 0x699B, 0x699B, 0x0FF5, 0x699C, 0x699C, 0x0FEE, 0x699E, 0x699E, 0x26DA,
+ 0x699F, 0x699F, 0x465C, 0x69A0, 0x69A0, 0x26BF, 0x69A1, 0x69A1, 0x26D9,
+ 0x69A2, 0x69A2, 0x3730, 0x69A3, 0x69A3, 0x1000, 0x69A4, 0x69A4, 0x26D0,
+ 0x69A5, 0x69A5, 0x26E0, 0x69A6, 0x69A6, 0x0FFE, 0x69A7, 0x69A7, 0x26C8,
+ 0x69A8, 0x69A8, 0x0FEF, 0x69A9, 0x69A9, 0x26CA, 0x69AA, 0x69AA, 0x26D8,
+ 0x69AB, 0x69AB, 0x0FF8, 0x69AC, 0x69AC, 0x26C3, 0x69AD, 0x69AD, 0x0FFC,
+ 0x69AE, 0x69AE, 0x0FF2, 0x69AF, 0x69AF, 0x26CC, 0x69B0, 0x69B0, 0x26C2,
+ 0x69B1, 0x69B1, 0x26BC, 0x69B2, 0x69B2, 0x3FF6, 0x69B3, 0x69B3, 0x26D6,
+ 0x69B4, 0x69B4, 0x0FF9, 0x69B5, 0x69B5, 0x26DF, 0x69B6, 0x69B6, 0x26BD,
+ 0x69B7, 0x69B7, 0x0FF6, 0x69B9, 0x69B9, 0x26D2, 0x69BB, 0x69BB, 0x0FF7,
+ 0x69BC, 0x69BC, 0x26C4, 0x69BD, 0x69BD, 0x26CF, 0x69BE, 0x69BE, 0x26CB,
+ 0x69BF, 0x69BF, 0x26CD, 0x69C0, 0x69C0, 0x3F5D, 0x69C1, 0x69C1, 0x0FF1,
+ 0x69C2, 0x69C2, 0x26DE, 0x69C3, 0x69C3, 0x0FFF, 0x69C4, 0x69C4, 0x26CE,
+ 0x69C6, 0x69C6, 0x26E1, 0x69C9, 0x69C9, 0x26BE, 0x69CA, 0x69CA, 0x26D3,
+ 0x69CB, 0x69CB, 0x0FF4, 0x69CC, 0x69CC, 0x0FFD, 0x69CD, 0x69CD, 0x0FFB,
+ 0x69CE, 0x69CE, 0x26C0, 0x69CF, 0x69CF, 0x26D5, 0x69D0, 0x69D0, 0x0FFA,
+ 0x69D1, 0x69D1, 0x39EF, 0x69D3, 0x69D3, 0x0FF3, 0x69D4, 0x69D4, 0x26D1,
+ 0x69D5, 0x69D5, 0x3E3C, 0x69D6, 0x69D6, 0x465E, 0x69D9, 0x69D9, 0x26DB,
+ 0x69E1, 0x69E1, 0x41D8, 0x69E2, 0x69E2, 0x2909, 0x69E4, 0x69E4, 0x2905,
+ 0x69E5, 0x69E5, 0x2901, 0x69E6, 0x69E6, 0x2915, 0x69E7, 0x69E7, 0x2912,
+ 0x69E8, 0x69E8, 0x1177, 0x69E9, 0x69E9, 0x3D91, 0x69EB, 0x69EB, 0x2919,
+ 0x69EC, 0x69EC, 0x2908, 0x69ED, 0x69ED, 0x1182, 0x69EE, 0x69EE, 0x290F,
+ 0x69F1, 0x69F1, 0x2904, 0x69F2, 0x69F2, 0x290E, 0x69F3, 0x69F3, 0x117F,
+ 0x69F4, 0x69F4, 0x2922, 0x69F6, 0x69F6, 0x291F, 0x69F7, 0x69F7, 0x2911,
+ 0x69F8, 0x69F8, 0x2902, 0x69F9, 0x69F9, 0x41ED, 0x69FA, 0x69FA, 0x41C7,
+ 0x69FB, 0x69FB, 0x2916, 0x69FC, 0x69FC, 0x2918, 0x69FD, 0x69FD, 0x117B,
+ 0x69FE, 0x69FE, 0x290C, 0x69FF, 0x69FF, 0x2907, 0x6A00, 0x6A00, 0x28FE,
+ 0x6A01, 0x6A01, 0x1178, 0x6A02, 0x6A02, 0x1180, 0x6A03, 0x6A03, 0x3E29,
+ 0x6A04, 0x6A04, 0x291B, 0x6A05, 0x6A05, 0x1181, 0x6A06, 0x6A06, 0x28FF,
+ 0x6A07, 0x6A07, 0x2921, 0x6A08, 0x6A08, 0x2914, 0x6A09, 0x6A09, 0x291A,
+ 0x6A0A, 0x6A0A, 0x117E, 0x6A0B, 0x6A0B, 0x41D9, 0x6A0C, 0x6A0C, 0x3D50,
+ 0x6A0D, 0x6A0D, 0x2917, 0x6A0F, 0x6A0F, 0x291E, 0x6A11, 0x6A11, 0x1183,
+ 0x6A13, 0x6A13, 0x117D, 0x6A14, 0x6A14, 0x2910, 0x6A15, 0x6A15, 0x2903,
+ 0x6A16, 0x6A16, 0x2923, 0x6A17, 0x6A17, 0x2900, 0x6A18, 0x6A18, 0x291C,
+ 0x6A19, 0x6A19, 0x117A, 0x6A1A, 0x6A1A, 0x3D1E, 0x6A1B, 0x6A1B, 0x290A,
+ 0x6A1C, 0x6A1C, 0x3B68, 0x6A1D, 0x6A1D, 0x290B, 0x6A1E, 0x6A1E, 0x1179,
+ 0x6A1F, 0x6A1F, 0x1176, 0x6A20, 0x6A20, 0x2906, 0x6A21, 0x6A21, 0x117C,
+ 0x6A23, 0x6A23, 0x1175, 0x6A25, 0x6A25, 0x291D, 0x6A26, 0x6A26, 0x2920,
+ 0x6A27, 0x6A27, 0x290D, 0x6A28, 0x6A28, 0x2B74, 0x6A2B, 0x6A2B, 0x3D42,
+ 0x6A2C, 0x6A2C, 0x42AB, 0x6A2D, 0x6A2D, 0x3B1F, 0x6A32, 0x6A32, 0x2B6C,
+ 0x6A33, 0x6A33, 0x3AA4, 0x6A34, 0x6A34, 0x2B68, 0x6A35, 0x6A35, 0x12D9,
+ 0x6A38, 0x6A38, 0x12CE, 0x6A39, 0x6A39, 0x12D3, 0x6A3A, 0x6A3A, 0x12CF,
+ 0x6A3B, 0x6A3B, 0x2B76, 0x6A3C, 0x6A3C, 0x2B81, 0x6A3D, 0x6A3D, 0x12CD,
+ 0x6A3E, 0x6A3E, 0x2B6E, 0x6A3F, 0x6A3F, 0x2B77, 0x6A40, 0x6A40, 0x2913,
+ 0x6A41, 0x6A41, 0x2B78, 0x6A44, 0x6A44, 0x12D4, 0x6A45, 0x6A45, 0x41F0,
+ 0x6A46, 0x6A46, 0x2B87, 0x6A47, 0x6A47, 0x12D8, 0x6A48, 0x6A48, 0x12DB,
+ 0x6A49, 0x6A49, 0x2B6A, 0x6A4B, 0x6A4B, 0x12D7, 0x6A4C, 0x6A4C, 0x3AAB,
+ 0x6A4D, 0x6A4E, 0x2B85, 0x6A4F, 0x6A4F, 0x2B7C, 0x6A50, 0x6A50, 0x2B7B,
+ 0x6A51, 0x6A51, 0x2B73, 0x6A52, 0x6A52, 0x3AA5, 0x6A53, 0x6A53, 0x37AC,
+ 0x6A54, 0x6A54, 0x2B7D, 0x6A55, 0x6A55, 0x2B84, 0x6A56, 0x6A56, 0x2B83,
+ 0x6A57, 0x6A57, 0x37DA, 0x6A58, 0x6A58, 0x12D2, 0x6A59, 0x6A59, 0x12D0,
+ 0x6A5A, 0x6A5A, 0x2B75, 0x6A5B, 0x6A5B, 0x2B72, 0x6A5D, 0x6A5D, 0x2B6F,
+ 0x6A5E, 0x6A5E, 0x2B82, 0x6A5F, 0x6A5F, 0x12DA, 0x6A60, 0x6A60, 0x2B80,
+ 0x6A61, 0x6A61, 0x12D6, 0x6A62, 0x6A62, 0x12D5, 0x6A64, 0x6A64, 0x2B7A,
+ 0x6A65, 0x6A65, 0x4660, 0x6A66, 0x6A66, 0x2B69, 0x6A67, 0x6A67, 0x2B6B,
+ 0x6A68, 0x6A68, 0x2B6D, 0x6A69, 0x6A69, 0x2B7F, 0x6A6A, 0x6A6A, 0x2B79,
+ 0x6A6B, 0x6A6B, 0x12D1, 0x6A6D, 0x6A6D, 0x2B70, 0x6A6F, 0x6A6F, 0x2B7E,
+ 0x6A71, 0x6A71, 0x4662, 0x6A74, 0x6A74, 0x4661, 0x6A76, 0x6A76, 0x2B71,
+ 0x6A7A, 0x6A7A, 0x3AAD, 0x6A7E, 0x6A7E, 0x13EC, 0x6A7F, 0x6A7F, 0x2D84,
+ 0x6A80, 0x6A80, 0x13E5, 0x6A81, 0x6A81, 0x2D75, 0x6A82, 0x6A82, 0x4663,
+ 0x6A83, 0x6A83, 0x2D80, 0x6A84, 0x6A84, 0x13E7, 0x6A85, 0x6A85, 0x2D87,
+ 0x6A87, 0x6A87, 0x2D7C, 0x6A89, 0x6A89, 0x2D77, 0x6A8A, 0x6A8A, 0x4136,
+ 0x6A8C, 0x6A8C, 0x2D88, 0x6A8D, 0x6A8D, 0x2D73, 0x6A8E, 0x6A8E, 0x2D7E,
+ 0x6A8F, 0x6A8F, 0x3C1B, 0x6A90, 0x6A90, 0x13EE, 0x6A91, 0x6A91, 0x2D83,
+ 0x6A92, 0x6A92, 0x2D89, 0x6A93, 0x6A93, 0x2D7D, 0x6A94, 0x6A94, 0x13E6,
+ 0x6A95, 0x6A95, 0x2D7F, 0x6A96, 0x6A96, 0x2D74, 0x6A97, 0x6A97, 0x13ED,
+ 0x6A99, 0x6A99, 0x4665, 0x6A9A, 0x6A9A, 0x2D86, 0x6A9B, 0x6A9B, 0x2D79,
+ 0x6A9C, 0x6A9C, 0x13E9, 0x6A9D, 0x6A9D, 0x41F2, 0x6A9E, 0x6A9E, 0x2D7B,
+ 0x6A9F, 0x6A9F, 0x2D78, 0x6AA0, 0x6AA0, 0x13EF, 0x6AA1, 0x6AA1, 0x2D7A,
+ 0x6AA2, 0x6AA2, 0x13E8, 0x6AA3, 0x6AA3, 0x13EB, 0x6AA4, 0x6AA4, 0x2D82,
+ 0x6AA5, 0x6AA5, 0x2D76, 0x6AA6, 0x6AA6, 0x2D85, 0x6AA7, 0x6AA7, 0x37E3,
+ 0x6AA8, 0x6AA8, 0x2D81, 0x6AAB, 0x6AAB, 0x4667, 0x6AAC, 0x6AAC, 0x14DD,
+ 0x6AAD, 0x6AAD, 0x2F3E, 0x6AAE, 0x6AAF, 0x14E2, 0x6AB1, 0x6AB1, 0x3E53,
+ 0x6AB2, 0x6AB2, 0x3B4B, 0x6AB3, 0x6AB3, 0x14DC, 0x6AB4, 0x6AB4, 0x2F3D,
+ 0x6AB5, 0x6AB5, 0x4668, 0x6AB6, 0x6AB7, 0x2F3A, 0x6AB8, 0x6AB8, 0x14E0,
+ 0x6AB9, 0x6AB9, 0x2F35, 0x6ABA, 0x6ABA, 0x2F39, 0x6ABB, 0x6ABB, 0x14DF,
+ 0x6ABD, 0x6ABD, 0x2F36, 0x6ABE, 0x6ABE, 0x3AA1, 0x6AC2, 0x6AC2, 0x14E1,
+ 0x6AC3, 0x6AC3, 0x14DE, 0x6AC5, 0x6AC5, 0x2F34, 0x6AC6, 0x6AC6, 0x2F38,
+ 0x6AC7, 0x6AC7, 0x2F3C, 0x6AC8, 0x6AC8, 0x41F5, 0x6AC9, 0x6AC9, 0x3AA6,
+ 0x6ACA, 0x6ACA, 0x3F4C, 0x6ACB, 0x6ACB, 0x309F, 0x6ACC, 0x6ACC, 0x309C,
+ 0x6ACD, 0x6ACD, 0x30A5, 0x6ACF, 0x6ACF, 0x30A4, 0x6AD0, 0x6AD0, 0x30A2,
+ 0x6AD1, 0x6AD1, 0x309D, 0x6AD3, 0x6AD3, 0x1589, 0x6AD4, 0x6AD4, 0x4669,
+ 0x6AD8, 0x6AD8, 0x3CAA, 0x6AD9, 0x6AD9, 0x309E, 0x6ADA, 0x6ADA, 0x1588,
+ 0x6ADB, 0x6ADB, 0x13EA, 0x6ADC, 0x6ADC, 0x30A1, 0x6ADD, 0x6ADD, 0x1587,
+ 0x6ADE, 0x6ADE, 0x30A6, 0x6ADF, 0x6ADF, 0x30A0, 0x6AE0, 0x6AE0, 0x309B,
+ 0x6AE1, 0x6AE1, 0x2F37, 0x6AE5, 0x6AE5, 0x1586, 0x6AE7, 0x6AE7, 0x309A,
+ 0x6AE8, 0x6AE8, 0x31DF, 0x6AEA, 0x6AEA, 0x31DE, 0x6AEB, 0x6AEB, 0x30A3,
+ 0x6AEC, 0x6AEC, 0x161B, 0x6AEE, 0x6AEF, 0x31E2, 0x6AF0, 0x6AF0, 0x31DD,
+ 0x6AF1, 0x6AF1, 0x31E1, 0x6AF3, 0x6AF3, 0x31DC, 0x6AF6, 0x6AF6, 0x466A,
+ 0x6AF8, 0x6AF8, 0x32D6, 0x6AF9, 0x6AF9, 0x31E0, 0x6AFA, 0x6AFA, 0x1678,
+ 0x6AFB, 0x6AFB, 0x1676, 0x6AFC, 0x6AFC, 0x32D4, 0x6B00, 0x6B00, 0x32D7,
+ 0x6B02, 0x6B02, 0x32D3, 0x6B03, 0x6B03, 0x32D5, 0x6B04, 0x6B04, 0x1677,
+ 0x6B05, 0x6B05, 0x3AA7, 0x6B08, 0x6B09, 0x3386, 0x6B0A, 0x6B0A, 0x16C6,
+ 0x6B0B, 0x6B0B, 0x3385, 0x6B0F, 0x6B0F, 0x3420, 0x6B10, 0x6B10, 0x16FD,
+ 0x6B11, 0x6B12, 0x341E, 0x6B13, 0x6B13, 0x3487, 0x6B16, 0x6B16, 0x1743,
+ 0x6B17, 0x6B17, 0x34CE, 0x6B18, 0x6B19, 0x34CC, 0x6B1A, 0x6B1A, 0x34CF,
+ 0x6B1D, 0x6B1D, 0x41F8, 0x6B1E, 0x6B1E, 0x3534, 0x6B20, 0x6B20, 0x02DE,
+ 0x6B21, 0x6B21, 0x03E3, 0x6B23, 0x6B23, 0x061A, 0x6B25, 0x6B25, 0x19C9,
+ 0x6B28, 0x6B28, 0x1B3D, 0x6B2C, 0x6B2C, 0x1CE6, 0x6B2D, 0x6B2D, 0x1CE8,
+ 0x6B2F, 0x6B2F, 0x1CE7, 0x6B31, 0x6B31, 0x1CE9, 0x6B32, 0x6B32, 0x0AE7,
+ 0x6B33, 0x6B33, 0x1F3C, 0x6B34, 0x6B34, 0x1CEA, 0x6B35, 0x6B35, 0x41FB,
+ 0x6B36, 0x6B36, 0x1F3B, 0x6B37, 0x6B38, 0x1F3D, 0x6B39, 0x6B39, 0x21B2,
+ 0x6B3A, 0x6B3A, 0x0C9C, 0x6B3B, 0x6B3B, 0x21B3, 0x6B3C, 0x6B3C, 0x21B5,
+ 0x6B3D, 0x6B3D, 0x0C9D, 0x6B3E, 0x6B3E, 0x0C9B, 0x6B3F, 0x6B3F, 0x21B4,
+ 0x6B41, 0x6B41, 0x2447, 0x6B42, 0x6B42, 0x2445, 0x6B43, 0x6B43, 0x2444,
+ 0x6B45, 0x6B45, 0x2443, 0x6B46, 0x6B46, 0x2442, 0x6B47, 0x6B47, 0x0E4A,
+ 0x6B48, 0x6B48, 0x2446, 0x6B49, 0x6B49, 0x1001, 0x6B4A, 0x6B4A, 0x26E2,
+ 0x6B4B, 0x6B4B, 0x26E4, 0x6B4C, 0x6B4C, 0x1002, 0x6B4D, 0x6B4D, 0x26E3,
+ 0x6B4E, 0x6B4E, 0x1185, 0x6B50, 0x6B50, 0x1184, 0x6B51, 0x6B51, 0x2924,
+ 0x6B52, 0x6B52, 0x3F6E, 0x6B54, 0x6B54, 0x2B89, 0x6B55, 0x6B55, 0x2B88,
+ 0x6B56, 0x6B56, 0x2B8A, 0x6B57, 0x6B57, 0x3AAE, 0x6B59, 0x6B59, 0x12DC,
+ 0x6B5B, 0x6B5B, 0x2D8A, 0x6B5C, 0x6B5C, 0x13F0, 0x6B5E, 0x6B5E, 0x2F3F,
+ 0x6B5F, 0x6B5F, 0x14E4, 0x6B60, 0x6B60, 0x30A7, 0x6B61, 0x6B61, 0x16C7,
+ 0x6B62, 0x6B62, 0x02DF, 0x6B63, 0x6B63, 0x034D, 0x6B64, 0x6B64, 0x03E4,
+ 0x6B65, 0x6B65, 0x04C9, 0x6B66, 0x6B67, 0x061B, 0x6B6A, 0x6B6A, 0x0769,
+ 0x6B6D, 0x6B6D, 0x1CEB, 0x6B6F, 0x6B6F, 0x4515, 0x6B72, 0x6B72, 0x0E4B,
+ 0x6B74, 0x6B74, 0x41FC, 0x6B76, 0x6B76, 0x29A2, 0x6B77, 0x6B77, 0x12DD,
+ 0x6B78, 0x6B78, 0x14E5, 0x6B79, 0x6B79, 0x02E0, 0x6B7A, 0x6B7A, 0x44EE,
+ 0x6B7B, 0x6B7B, 0x03E5, 0x6B7E, 0x6B7E, 0x19CB, 0x6B7F, 0x6B7F, 0x061D,
+ 0x6B80, 0x6B80, 0x19CA, 0x6B81, 0x6B81, 0x466B, 0x6B82, 0x6B82, 0x1B3E,
+ 0x6B83, 0x6B83, 0x076A, 0x6B84, 0x6B84, 0x1B3F, 0x6B86, 0x6B86, 0x076B,
+ 0x6B88, 0x6B88, 0x1CED, 0x6B89, 0x6B89, 0x0900, 0x6B8A, 0x6B8A, 0x08FF,
+ 0x6B8C, 0x6B8C, 0x1F43, 0x6B8D, 0x6B8E, 0x1F41, 0x6B8F, 0x6B8F, 0x1F40,
+ 0x6B91, 0x6B91, 0x1F3F, 0x6B94, 0x6B94, 0x21B6, 0x6B95, 0x6B95, 0x21B9,
+ 0x6B96, 0x6B96, 0x0C9F, 0x6B97, 0x6B97, 0x21B7, 0x6B98, 0x6B98, 0x0C9E,
+ 0x6B99, 0x6B99, 0x21B8, 0x6B9B, 0x6B9B, 0x2448, 0x6B9E, 0x6BA0, 0x26E5,
+ 0x6BA2, 0x6BA2, 0x2927, 0x6BA3, 0x6BA3, 0x2926, 0x6BA4, 0x6BA4, 0x1186,
+ 0x6BA5, 0x6BA5, 0x2925, 0x6BA6, 0x6BA6, 0x2928, 0x6BA7, 0x6BA7, 0x2B8B,
+ 0x6BAA, 0x6BAB, 0x2B8C, 0x6BAD, 0x6BAD, 0x2D8B, 0x6BAE, 0x6BAE, 0x13F1,
+ 0x6BAF, 0x6BAF, 0x14E6, 0x6BB0, 0x6BB0, 0x30A8, 0x6BB2, 0x6BB2, 0x1679,
+ 0x6BB3, 0x6BB3, 0x178A, 0x6BB5, 0x6BB5, 0x076C, 0x6BB6, 0x6BB6, 0x1B40,
+ 0x6BB7, 0x6BB7, 0x0901, 0x6BBA, 0x6BBA, 0x0AE8, 0x6BBC, 0x6BBC, 0x0CA0,
+ 0x6BBD, 0x6BBD, 0x21BA, 0x6BBF, 0x6BBF, 0x0E4D, 0x6BC0, 0x6BC0, 0x0E4C,
+ 0x6BC1, 0x6BC1, 0x466C, 0x6BC3, 0x6BC4, 0x26E8, 0x6BC5, 0x6BC6, 0x1187,
+ 0x6BC7, 0x6BC7, 0x2B8F, 0x6BC8, 0x6BC8, 0x2B8E, 0x6BC9, 0x6BC9, 0x2F40,
+ 0x6BCA, 0x6BCA, 0x3421, 0x6BCB, 0x6BCB, 0x02E1, 0x6BCC, 0x6BCC, 0x178B,
+ 0x6BCD, 0x6BCD, 0x034E, 0x6BCF, 0x6BCF, 0x04CA, 0x6BD0, 0x6BD0, 0x18AD,
+ 0x6BD2, 0x6BD2, 0x076D, 0x6BD3, 0x6BD3, 0x0E4E, 0x6BD4, 0x6BD4, 0x02E2,
+ 0x6BD6, 0x6BD6, 0x1B41, 0x6BD7, 0x6BD7, 0x076E, 0x6BD8, 0x6BD8, 0x1B42,
+ 0x6BDA, 0x6BDA, 0x13F2, 0x6BDB, 0x6BDB, 0x02E3, 0x6BDC, 0x6BDC, 0x4207,
+ 0x6BDE, 0x6BDE, 0x19CC, 0x6BE0, 0x6BE0, 0x1B43, 0x6BE1, 0x6BE1, 0x4205,
+ 0x6BE2, 0x6BE2, 0x1CF2, 0x6BE3, 0x6BE3, 0x1CF1, 0x6BE4, 0x6BE4, 0x1CEF,
+ 0x6BE6, 0x6BE6, 0x1CEE, 0x6BE7, 0x6BE7, 0x1CF3, 0x6BE8, 0x6BE8, 0x1CF0,
+ 0x6BEA, 0x6BEA, 0x466D, 0x6BEB, 0x6BEC, 0x0AE9, 0x6BEF, 0x6BEF, 0x0CA1,
+ 0x6BF0, 0x6BF0, 0x21BB, 0x6BF2, 0x6BF3, 0x21BC, 0x6BF7, 0x6BF8, 0x244C,
+ 0x6BF9, 0x6BF9, 0x244B, 0x6BFA, 0x6BFA, 0x3F79, 0x6BFB, 0x6BFC, 0x2449,
+ 0x6BFD, 0x6BFD, 0x0E4F, 0x6BFE, 0x6BFE, 0x26EA, 0x6BFF, 0x6BFF, 0x292B,
+ 0x6C00, 0x6C00, 0x292A, 0x6C01, 0x6C01, 0x2929, 0x6C02, 0x6C02, 0x292C,
+ 0x6C03, 0x6C03, 0x2B91, 0x6C04, 0x6C04, 0x2B90, 0x6C05, 0x6C05, 0x12DE,
+ 0x6C06, 0x6C06, 0x2B92, 0x6C08, 0x6C08, 0x13F3, 0x6C09, 0x6C09, 0x2D8C,
+ 0x6C0B, 0x6C0B, 0x2F41, 0x6C0C, 0x6C0C, 0x30A9, 0x6C0D, 0x6C0D, 0x3388,
+ 0x6C0F, 0x6C0F, 0x02E4, 0x6C10, 0x6C10, 0x0350, 0x6C11, 0x6C11, 0x034F,
+ 0x6C13, 0x6C13, 0x061E, 0x6C14, 0x6C14, 0x178C, 0x6C15, 0x6C15, 0x17AA,
+ 0x6C16, 0x6C16, 0x03E6, 0x6C18, 0x6C18, 0x1801, 0x6C19, 0x6C1A, 0x18AE,
+ 0x6C1B, 0x6C1B, 0x061F, 0x6C1C, 0x6C1C, 0x38AB, 0x6C1D, 0x6C1D, 0x19CD,
+ 0x6C1F, 0x6C1F, 0x076F, 0x6C20, 0x6C21, 0x1B44, 0x6C23, 0x6C23, 0x0902,
+ 0x6C24, 0x6C24, 0x0906, 0x6C25, 0x6C25, 0x1CF4, 0x6C26, 0x6C26, 0x0905,
+ 0x6C27, 0x6C28, 0x0903, 0x6C2A, 0x6C2A, 0x1F44, 0x6C2B, 0x6C2B, 0x0AEB,
+ 0x6C2C, 0x6C2C, 0x0CA4, 0x6C2E, 0x6C2F, 0x0CA2, 0x6C30, 0x6C30, 0x21BE,
+ 0x6C31, 0x6C31, 0x3F63, 0x6C33, 0x6C33, 0x1003, 0x6C34, 0x6C34, 0x02E5,
+ 0x6C35, 0x6C35, 0x44EF, 0x6C36, 0x6C36, 0x17AB, 0x6C37, 0x6C37, 0x4208,
+ 0x6C38, 0x6C38, 0x0351, 0x6C39, 0x6C39, 0x3E05, 0x6C3A, 0x6C3A, 0x44F0,
+ 0x6C3B, 0x6C3B, 0x17AE, 0x6C3D, 0x6C3D, 0x4381, 0x6C3E, 0x6C3E, 0x0354,
+ 0x6C3F, 0x6C3F, 0x17AD, 0x6C40, 0x6C40, 0x0353, 0x6C41, 0x6C41, 0x0352,
+ 0x6C42, 0x6C42, 0x04CB, 0x6C43, 0x6C43, 0x17AC, 0x6C46, 0x6C46, 0x1802,
+ 0x6C49, 0x6C49, 0x408D, 0x6C4A, 0x6C4A, 0x1806, 0x6C4B, 0x6C4C, 0x1808,
+ 0x6C4D, 0x6C4E, 0x03F0, 0x6C4F, 0x6C4F, 0x1805, 0x6C50, 0x6C50, 0x03EC,
+ 0x6C52, 0x6C52, 0x1803, 0x6C54, 0x6C54, 0x1807, 0x6C55, 0x6C55, 0x03ED,
+ 0x6C57, 0x6C57, 0x03E8, 0x6C58, 0x6C58, 0x3BBA, 0x6C59, 0x6C59, 0x03E9,
+ 0x6C5A, 0x6C5A, 0x420C, 0x6C5B, 0x6C5B, 0x03EF, 0x6C5C, 0x6C5C, 0x1804,
+ 0x6C5D, 0x6C5D, 0x03E7, 0x6C5E, 0x6C5E, 0x04CC, 0x6C5F, 0x6C60, 0x03EA,
+ 0x6C61, 0x6C61, 0x03EE, 0x6C65, 0x6C65, 0x18C0, 0x6C66, 0x6C66, 0x18BE,
+ 0x6C67, 0x6C67, 0x18B1, 0x6C68, 0x6C68, 0x04D8, 0x6C69, 0x6C69, 0x18B8,
+ 0x6C6A, 0x6C6A, 0x04D3, 0x6C6B, 0x6C6B, 0x18B2, 0x6C6D, 0x6C6D, 0x18BA,
+ 0x6C6E, 0x6C6E, 0x40CA, 0x6C6F, 0x6C6F, 0x18B7, 0x6C70, 0x6C70, 0x04D6,
+ 0x6C71, 0x6C71, 0x18B6, 0x6C72, 0x6C72, 0x04DD, 0x6C73, 0x6C73, 0x18BF,
+ 0x6C74, 0x6C74, 0x04DF, 0x6C75, 0x6C75, 0x466E, 0x6C76, 0x6C76, 0x04E1,
+ 0x6C78, 0x6C78, 0x18B0, 0x6C79, 0x6C79, 0x420E, 0x6C7A, 0x6C7A, 0x04D4,
+ 0x6C7B, 0x6C7B, 0x18C1, 0x6C7D, 0x6C7D, 0x04DB, 0x6C7E, 0x6C7E, 0x04DE,
+ 0x6C7F, 0x6C7F, 0x37A6, 0x6C80, 0x6C80, 0x19E4, 0x6C81, 0x6C81, 0x04CE,
+ 0x6C82, 0x6C82, 0x04E5, 0x6C83, 0x6C83, 0x04DC, 0x6C84, 0x6C84, 0x18B3,
+ 0x6C85, 0x6C85, 0x04D1, 0x6C86, 0x6C86, 0x04E0, 0x6C87, 0x6C87, 0x18BB,
+ 0x6C88, 0x6C89, 0x04CF, 0x6C8A, 0x6C8A, 0x19E2, 0x6C8B, 0x6C8B, 0x18B4,
+ 0x6C8C, 0x6C8C, 0x04D7, 0x6C8D, 0x6C8D, 0x04E2, 0x6C8E, 0x6C8E, 0x18C2,
+ 0x6C8F, 0x6C8F, 0x18B5, 0x6C90, 0x6C90, 0x04D5, 0x6C92, 0x6C92, 0x04DA,
+ 0x6C93, 0x6C93, 0x19CE, 0x6C94, 0x6C94, 0x04E3, 0x6C95, 0x6C95, 0x18BC,
+ 0x6C96, 0x6C96, 0x04D9, 0x6C98, 0x6C98, 0x04E4, 0x6C99, 0x6C99, 0x04CD,
+ 0x6C9A, 0x6C9A, 0x18B9, 0x6C9B, 0x6C9B, 0x04D2, 0x6C9C, 0x6C9C, 0x18BD,
+ 0x6C9D, 0x6C9D, 0x19E3, 0x6C9F, 0x6C9F, 0x3889, 0x6CA2, 0x6CA2, 0x3D63,
+ 0x6CAA, 0x6CAA, 0x466F, 0x6CAB, 0x6CAB, 0x062B, 0x6CAC, 0x6CAC, 0x063B,
+ 0x6CAD, 0x6CAD, 0x19D5, 0x6CAE, 0x6CAE, 0x0632, 0x6CAF, 0x6CAF, 0x3CF6,
+ 0x6CB0, 0x6CB0, 0x19EA, 0x6CB1, 0x6CB1, 0x0623, 0x6CB2, 0x6CB2, 0x3ECC,
+ 0x6CB3, 0x6CB3, 0x0626, 0x6CB4, 0x6CB4, 0x19E1, 0x6CB6, 0x6CB6, 0x19D3,
+ 0x6CB7, 0x6CB7, 0x19D7, 0x6CB8, 0x6CB8, 0x062E, 0x6CB9, 0x6CB9, 0x0630,
+ 0x6CBA, 0x6CBA, 0x19DA, 0x6CBB, 0x6CBB, 0x0637, 0x6CBC, 0x6CBC, 0x0629,
+ 0x6CBD, 0x6CBE, 0x0627, 0x6CBF, 0x6CBF, 0x0636, 0x6CC0, 0x6CC0, 0x19E6,
+ 0x6CC1, 0x6CC1, 0x0631, 0x6CC2, 0x6CC2, 0x19D9, 0x6CC3, 0x6CC3, 0x19DB,
+ 0x6CC4, 0x6CC4, 0x062F, 0x6CC5, 0x6CC5, 0x0634, 0x6CC6, 0x6CC6, 0x19DC,
+ 0x6CC7, 0x6CC7, 0x19E9, 0x6CC9, 0x6CC9, 0x0770, 0x6CCA, 0x6CCA, 0x063A,
+ 0x6CCB, 0x6CCB, 0x4070, 0x6CCC, 0x6CCC, 0x0624, 0x6CCD, 0x6CCD, 0x19E8,
+ 0x6CCE, 0x6CCE, 0x3F91, 0x6CCF, 0x6CCF, 0x19EC, 0x6CD0, 0x6CD0, 0x19D8,
+ 0x6CD1, 0x6CD1, 0x19EE, 0x6CD2, 0x6CD2, 0x19DF, 0x6CD3, 0x6CD3, 0x062D,
+ 0x6CD4, 0x6CD4, 0x19D4, 0x6CD5, 0x6CD5, 0x062C, 0x6CD6, 0x6CD6, 0x063E,
+ 0x6CD7, 0x6CD7, 0x0633, 0x6CD9, 0x6CD9, 0x19D2, 0x6CDA, 0x6CDA, 0x1B4E,
+ 0x6CDB, 0x6CDB, 0x0639, 0x6CDC, 0x6CDC, 0x063D, 0x6CDD, 0x6CDD, 0x19E0,
+ 0x6CDE, 0x6CDE, 0x19E5, 0x6CDF, 0x6CDF, 0x3D57, 0x6CE0, 0x6CE0, 0x063F,
+ 0x6CE1, 0x6CE1, 0x0638, 0x6CE2, 0x6CE2, 0x062A, 0x6CE3, 0x6CE3, 0x0620,
+ 0x6CE5, 0x6CE5, 0x0625, 0x6CE7, 0x6CE7, 0x19D6, 0x6CE8, 0x6CE8, 0x0621,
+ 0x6CE9, 0x6CE9, 0x19ED, 0x6CEA, 0x6CEA, 0x3F8D, 0x6CEB, 0x6CEB, 0x19D0,
+ 0x6CEC, 0x6CEC, 0x19CF, 0x6CED, 0x6CED, 0x19DD, 0x6CEE, 0x6CEE, 0x19D1,
+ 0x6CEF, 0x6CEF, 0x063C, 0x6CF0, 0x6CF0, 0x0907, 0x6CF1, 0x6CF1, 0x0635,
+ 0x6CF2, 0x6CF2, 0x19DE, 0x6CF3, 0x6CF3, 0x0622, 0x6CF5, 0x6CF5, 0x077F,
+ 0x6CF9, 0x6CF9, 0x19EB, 0x6D00, 0x6D00, 0x1B55, 0x6D01, 0x6D01, 0x1B58,
+ 0x6D02, 0x6D02, 0x4671, 0x6D03, 0x6D03, 0x1B5B, 0x6D04, 0x6D04, 0x1B50,
+ 0x6D05, 0x6D05, 0x3A19, 0x6D06, 0x6D06, 0x4672, 0x6D07, 0x6D07, 0x1B5E,
+ 0x6D08, 0x6D08, 0x1B61, 0x6D09, 0x6D09, 0x1B63, 0x6D0A, 0x6D0A, 0x1B4D,
+ 0x6D0B, 0x6D0B, 0x0771, 0x6D0C, 0x6D0C, 0x0776, 0x6D0D, 0x6D0D, 0x1CF9,
+ 0x6D0E, 0x6D0E, 0x0786, 0x6D0F, 0x6D0F, 0x1B5C, 0x6D10, 0x6D10, 0x1B64,
+ 0x6D11, 0x6D11, 0x1B54, 0x6D12, 0x6D12, 0x1B4C, 0x6D16, 0x6D16, 0x1D14,
+ 0x6D17, 0x6D17, 0x0779, 0x6D18, 0x6D18, 0x1B59, 0x6D19, 0x6D19, 0x1B51,
+ 0x6D1A, 0x6D1A, 0x1B53, 0x6D1B, 0x6D1B, 0x077E, 0x6D1D, 0x6D1D, 0x1B56,
+ 0x6D1E, 0x6D1E, 0x0778, 0x6D1F, 0x6D1F, 0x1B49, 0x6D20, 0x6D20, 0x1B5F,
+ 0x6D22, 0x6D22, 0x1B62, 0x6D24, 0x6D24, 0x3AC3, 0x6D25, 0x6D25, 0x0775,
+ 0x6D26, 0x6D26, 0x4673, 0x6D27, 0x6D27, 0x0781, 0x6D28, 0x6D28, 0x1B46,
+ 0x6D29, 0x6D29, 0x0783, 0x6D2A, 0x6D2A, 0x0773, 0x6D2B, 0x6D2B, 0x0787,
+ 0x6D2C, 0x6D2C, 0x1B60, 0x6D2D, 0x6D2D, 0x1B48, 0x6D2E, 0x6D2E, 0x0784,
+ 0x6D2F, 0x6D2F, 0x1D0E, 0x6D30, 0x6D30, 0x19E7, 0x6D31, 0x6D31, 0x0777,
+ 0x6D32, 0x6D32, 0x0772, 0x6D33, 0x6D33, 0x1B4F, 0x6D34, 0x6D34, 0x1B47,
+ 0x6D35, 0x6D35, 0x0785, 0x6D36, 0x6D36, 0x077D, 0x6D37, 0x6D37, 0x1B5A,
+ 0x6D38, 0x6D38, 0x0782, 0x6D39, 0x6D39, 0x0780, 0x6D3A, 0x6D3A, 0x1B52,
+ 0x6D3B, 0x6D3B, 0x077A, 0x6D3C, 0x6D3C, 0x1B4A, 0x6D3D, 0x6D3E, 0x077B,
+ 0x6D3F, 0x6D3F, 0x1B4B, 0x6D40, 0x6D40, 0x1B5D, 0x6D41, 0x6D41, 0x0774,
+ 0x6D42, 0x6D42, 0x1B57, 0x6D4E, 0x6D4E, 0x4558, 0x6D57, 0x6D57, 0x3CF3,
+ 0x6D58, 0x6D58, 0x1CFC, 0x6D59, 0x6D59, 0x090F, 0x6D5A, 0x6D5A, 0x0914,
+ 0x6D5B, 0x6D5B, 0x409C, 0x6D5C, 0x6D5C, 0x4222, 0x6D5E, 0x6D5E, 0x1D05,
+ 0x6D5F, 0x6D5F, 0x1D0B, 0x6D60, 0x6D60, 0x1D07, 0x6D61, 0x6D61, 0x1CFA,
+ 0x6D62, 0x6D62, 0x1CFD, 0x6D63, 0x6D64, 0x1CF6, 0x6D65, 0x6D65, 0x091B,
+ 0x6D66, 0x6D66, 0x090C, 0x6D67, 0x6D67, 0x1D06, 0x6D68, 0x6D68, 0x1D0F,
+ 0x6D69, 0x6D69, 0x0916, 0x6D6A, 0x6D6A, 0x0908, 0x6D6C, 0x6D6C, 0x0911,
+ 0x6D6D, 0x6D6D, 0x1CFE, 0x6D6E, 0x6D6E, 0x0913, 0x6D6F, 0x6D6F, 0x1CFF,
+ 0x6D70, 0x6D70, 0x1D09, 0x6D71, 0x6D71, 0x40F5, 0x6D72, 0x6D72, 0x39D7,
+ 0x6D74, 0x6D74, 0x0915, 0x6D75, 0x6D75, 0x1D18, 0x6D76, 0x6D76, 0x1CF8,
+ 0x6D77, 0x6D77, 0x090E, 0x6D78, 0x6D78, 0x090D, 0x6D79, 0x6D79, 0x0919,
+ 0x6D7A, 0x6D7A, 0x1CF5, 0x6D7B, 0x6D7B, 0x1D16, 0x6D7C, 0x6D7C, 0x1D0A,
+ 0x6D7D, 0x6D7D, 0x1D17, 0x6D7E, 0x6D7E, 0x1D11, 0x6D7F, 0x6D7F, 0x1D03,
+ 0x6D80, 0x6D80, 0x1D12, 0x6D81, 0x6D81, 0x4674, 0x6D82, 0x6D82, 0x1D0C,
+ 0x6D83, 0x6D83, 0x1D15, 0x6D84, 0x6D84, 0x1D13, 0x6D85, 0x6D85, 0x091A,
+ 0x6D86, 0x6D86, 0x1D04, 0x6D87, 0x6D87, 0x090B, 0x6D88, 0x6D88, 0x090A,
+ 0x6D89, 0x6D89, 0x0912, 0x6D8A, 0x6D8A, 0x0918, 0x6D8B, 0x6D8B, 0x1D10,
+ 0x6D8C, 0x6D8C, 0x0917, 0x6D8D, 0x6D8D, 0x1D01, 0x6D8E, 0x6D8E, 0x0AEC,
+ 0x6D8F, 0x6D8F, 0x3DE8, 0x6D90, 0x6D90, 0x1D19, 0x6D91, 0x6D91, 0x1D00,
+ 0x6D92, 0x6D92, 0x1CFB, 0x6D93, 0x6D93, 0x0910, 0x6D94, 0x6D94, 0x091C,
+ 0x6D95, 0x6D95, 0x0909, 0x6D96, 0x6D96, 0x4221, 0x6D97, 0x6D97, 0x1D08,
+ 0x6D98, 0x6D98, 0x1D0D, 0x6DA4, 0x6DA4, 0x4676, 0x6DA5, 0x6DA5, 0x3AB9,
+ 0x6DAA, 0x6DAA, 0x0B0E, 0x6DAB, 0x6DAB, 0x1F46, 0x6DAC, 0x6DAC, 0x1F4A,
+ 0x6DAE, 0x6DAE, 0x0AFB, 0x6DAF, 0x6DAF, 0x0AF9, 0x6DB1, 0x6DB1, 0x4677,
+ 0x6DB2, 0x6DB2, 0x0AF0, 0x6DB3, 0x6DB3, 0x1F48, 0x6DB4, 0x6DB4, 0x1F47,
+ 0x6DB5, 0x6DB5, 0x0B04, 0x6DB7, 0x6DB7, 0x1F4D, 0x6DB8, 0x6DB8, 0x0AFE,
+ 0x6DB9, 0x6DB9, 0x3FFB, 0x6DBA, 0x6DBA, 0x1F5F, 0x6DBB, 0x6DBB, 0x1F6B,
+ 0x6DBC, 0x6DBC, 0x0AED, 0x6DBD, 0x6DBD, 0x1F5C, 0x6DBE, 0x6DBE, 0x1F55,
+ 0x6DBF, 0x6DBF, 0x0B10, 0x6DC0, 0x6DC0, 0x1F45, 0x6DC2, 0x6DC2, 0x1F61,
+ 0x6DC4, 0x6DC4, 0x0B0D, 0x6DC5, 0x6DC5, 0x0B01, 0x6DC6, 0x6DC6, 0x0B0C,
+ 0x6DC7, 0x6DC7, 0x0AF7, 0x6DC8, 0x6DC8, 0x1F51, 0x6DC9, 0x6DC9, 0x1F63,
+ 0x6DCA, 0x6DCA, 0x1F5B, 0x6DCB, 0x6DCB, 0x0AF8, 0x6DCC, 0x6DCC, 0x0AF2,
+ 0x6DCD, 0x6DCD, 0x1F69, 0x6DCF, 0x6DCF, 0x1F62, 0x6DD0, 0x6DD0, 0x1F64,
+ 0x6DD1, 0x6DD1, 0x0AFA, 0x6DD2, 0x6DD2, 0x0B02, 0x6DD3, 0x6DD3, 0x1F66,
+ 0x6DD4, 0x6DD4, 0x1F4F, 0x6DD5, 0x6DD5, 0x1F60, 0x6DD6, 0x6DD6, 0x1F54,
+ 0x6DD7, 0x6DD7, 0x1F68, 0x6DD8, 0x6DD8, 0x0B07, 0x6DD9, 0x6DD9, 0x0AEF,
+ 0x6DDA, 0x6DDA, 0x0B05, 0x6DDB, 0x6DDB, 0x1F59, 0x6DDC, 0x6DDD, 0x1F57,
+ 0x6DDE, 0x6DDE, 0x0AFC, 0x6DDF, 0x6DDF, 0x1F53, 0x6DE0, 0x6DE0, 0x1F52,
+ 0x6DE1, 0x6DE1, 0x0AF1, 0x6DE2, 0x6DE2, 0x1F4C, 0x6DE3, 0x6DE3, 0x1F6A,
+ 0x6DE4, 0x6DE4, 0x0AF3, 0x6DE5, 0x6DE5, 0x1F56, 0x6DE6, 0x6DE6, 0x0B11,
+ 0x6DE8, 0x6DE8, 0x0B0B, 0x6DE9, 0x6DE9, 0x1F4B, 0x6DEA, 0x6DEA, 0x0B08,
+ 0x6DEB, 0x6DEB, 0x0B06, 0x6DEC, 0x6DEC, 0x0B0F, 0x6DED, 0x6DED, 0x1F5D,
+ 0x6DEE, 0x6DEE, 0x0B0A, 0x6DEF, 0x6DEF, 0x1D02, 0x6DF0, 0x6DF0, 0x1F5E,
+ 0x6DF1, 0x6DF1, 0x0B09, 0x6DF2, 0x6DF2, 0x1F65, 0x6DF3, 0x6DF3, 0x0AEE,
+ 0x6DF4, 0x6DF4, 0x1F5A, 0x6DF5, 0x6DF5, 0x0B00, 0x6DF6, 0x6DF6, 0x1F4E,
+ 0x6DF7, 0x6DF7, 0x0AFF, 0x6DF9, 0x6DF9, 0x0AFD, 0x6DFA, 0x6DFA, 0x0AF5,
+ 0x6DFB, 0x6DFB, 0x0AF4, 0x6DFC, 0x6DFC, 0x21BF, 0x6DFD, 0x6DFD, 0x1F67,
+ 0x6E00, 0x6E00, 0x1F50, 0x6E02, 0x6E02, 0x3CFA, 0x6E03, 0x6E03, 0x21D4,
+ 0x6E04, 0x6E04, 0x3ABE, 0x6E05, 0x6E05, 0x0AF6, 0x6E0A, 0x6E0A, 0x3AC1,
+ 0x6E0F, 0x6E0F, 0x3CF0, 0x6E15, 0x6E15, 0x4678, 0x6E18, 0x6E18, 0x4679,
+ 0x6E19, 0x6E19, 0x0CC1, 0x6E1A, 0x6E1A, 0x0B03, 0x6E1B, 0x6E1B, 0x0CAF,
+ 0x6E1C, 0x6E1C, 0x21CE, 0x6E1D, 0x6E1D, 0x0CBD, 0x6E1F, 0x6E1F, 0x21C2,
+ 0x6E20, 0x6E20, 0x0CAC, 0x6E21, 0x6E21, 0x0CA8, 0x6E22, 0x6E22, 0x21E0,
+ 0x6E23, 0x6E23, 0x0CAE, 0x6E24, 0x6E24, 0x0CB2, 0x6E25, 0x6E25, 0x0CAD,
+ 0x6E26, 0x6E26, 0x0CB6, 0x6E27, 0x6E27, 0x21E4, 0x6E28, 0x6E28, 0x21DB,
+ 0x6E29, 0x6E29, 0x467A, 0x6E2A, 0x6E2A, 0x4302, 0x6E2B, 0x6E2B, 0x21C9,
+ 0x6E2C, 0x6E2C, 0x0CBB, 0x6E2D, 0x6E2D, 0x0CB5, 0x6E2E, 0x6E2E, 0x21D5,
+ 0x6E2F, 0x6E2F, 0x0CA5, 0x6E30, 0x6E30, 0x21E1, 0x6E31, 0x6E31, 0x21DA,
+ 0x6E32, 0x6E32, 0x0CA9, 0x6E33, 0x6E33, 0x21CF, 0x6E34, 0x6E34, 0x0CB8,
+ 0x6E35, 0x6E36, 0x21EC, 0x6E38, 0x6E38, 0x0CA6, 0x6E39, 0x6E39, 0x21DF,
+ 0x6E3A, 0x6E3A, 0x0CBA, 0x6E3B, 0x6E3B, 0x21D3, 0x6E3C, 0x6E3D, 0x21C5,
+ 0x6E3E, 0x6E3E, 0x0CBE, 0x6E3F, 0x6E3F, 0x21CA, 0x6E40, 0x6E40, 0x21D1,
+ 0x6E41, 0x6E41, 0x21CB, 0x6E43, 0x6E43, 0x0CBC, 0x6E44, 0x6E44, 0x0CC4,
+ 0x6E45, 0x6E45, 0x21C7, 0x6E46, 0x6E47, 0x21C0, 0x6E49, 0x6E49, 0x21C3,
+ 0x6E4A, 0x6E4A, 0x0CAB, 0x6E4B, 0x6E4B, 0x21D0, 0x6E4D, 0x6E4D, 0x0CB9,
+ 0x6E4E, 0x6E4E, 0x0CC2, 0x6E4F, 0x6E4F, 0x4234, 0x6E50, 0x6E50, 0x41D1,
+ 0x6E51, 0x6E51, 0x21D2, 0x6E52, 0x6E52, 0x21EA, 0x6E53, 0x6E53, 0x21E2,
+ 0x6E54, 0x6E54, 0x0CA7, 0x6E55, 0x6E55, 0x21E8, 0x6E56, 0x6E56, 0x0CB3,
+ 0x6E58, 0x6E58, 0x0CB1, 0x6E59, 0x6E59, 0x40E6, 0x6E5A, 0x6E5A, 0x21EE,
+ 0x6E5B, 0x6E5B, 0x0CB0, 0x6E5C, 0x6E5C, 0x21D8, 0x6E5D, 0x6E5D, 0x21CC,
+ 0x6E5E, 0x6E5E, 0x21D6, 0x6E5F, 0x6E5F, 0x0CC7, 0x6E60, 0x6E60, 0x21DC,
+ 0x6E61, 0x6E61, 0x21D9, 0x6E62, 0x6E62, 0x21C8, 0x6E63, 0x6E63, 0x0CC3,
+ 0x6E64, 0x6E64, 0x21E6, 0x6E65, 0x6E65, 0x21E3, 0x6E66, 0x6E66, 0x21EB,
+ 0x6E67, 0x6E67, 0x0CAA, 0x6E68, 0x6E68, 0x21D7, 0x6E69, 0x6E69, 0x0CC6,
+ 0x6E6B, 0x6E6B, 0x21DE, 0x6E6E, 0x6E6E, 0x0CB4, 0x6E6F, 0x6E6F, 0x0CB7,
+ 0x6E71, 0x6E71, 0x21DD, 0x6E72, 0x6E72, 0x0CC5, 0x6E73, 0x6E73, 0x21CD,
+ 0x6E74, 0x6E74, 0x1F49, 0x6E76, 0x6E76, 0x39D3, 0x6E77, 0x6E77, 0x21E7,
+ 0x6E78, 0x6E78, 0x21E5, 0x6E79, 0x6E79, 0x21E9, 0x6E7C, 0x6E7C, 0x4223,
+ 0x6E86, 0x6E86, 0x467B, 0x6E88, 0x6E88, 0x21C4, 0x6E89, 0x6E89, 0x0CC0,
+ 0x6E8B, 0x6E8B, 0x3BBF, 0x6E8D, 0x6E8D, 0x246C, 0x6E8E, 0x6E8E, 0x246B,
+ 0x6E8F, 0x6E8F, 0x2451, 0x6E90, 0x6E90, 0x0E55, 0x6E92, 0x6E92, 0x246A,
+ 0x6E93, 0x6E94, 0x2454, 0x6E96, 0x6E96, 0x0E5F, 0x6E97, 0x6E97, 0x2473,
+ 0x6E98, 0x6E98, 0x0E5A, 0x6E99, 0x6E99, 0x2469, 0x6E9A, 0x6E9A, 0x4581,
+ 0x6E9B, 0x6E9B, 0x244E, 0x6E9C, 0x6E9C, 0x0E60, 0x6E9D, 0x6E9D, 0x0E56,
+ 0x6E9E, 0x6E9E, 0x245D, 0x6E9F, 0x6E9F, 0x2453, 0x6EA0, 0x6EA0, 0x2456,
+ 0x6EA1, 0x6EA1, 0x246E, 0x6EA2, 0x6EA2, 0x0E50, 0x6EA3, 0x6EA3, 0x2475,
+ 0x6EA4, 0x6EA4, 0x246D, 0x6EA5, 0x6EA5, 0x0E59, 0x6EA6, 0x6EA6, 0x2462,
+ 0x6EA7, 0x6EA7, 0x0E64, 0x6EAA, 0x6EAA, 0x0E63, 0x6EAB, 0x6EAB, 0x0E5D,
+ 0x6EAE, 0x6EAE, 0x2474, 0x6EAF, 0x6EAF, 0x0E51, 0x6EB0, 0x6EB0, 0x2460,
+ 0x6EB1, 0x6EB1, 0x2457, 0x6EB2, 0x6EB2, 0x2464, 0x6EB3, 0x6EB3, 0x2470,
+ 0x6EB4, 0x6EB4, 0x0E65, 0x6EB5, 0x6EB5, 0x41FE, 0x6EB6, 0x6EB6, 0x0E53,
+ 0x6EB7, 0x6EB7, 0x245F, 0x6EB8, 0x6EB8, 0x3E0C, 0x6EB9, 0x6EB9, 0x2458,
+ 0x6EBA, 0x6EBA, 0x0E5C, 0x6EBB, 0x6EBB, 0x467D, 0x6EBC, 0x6EBC, 0x0E5B,
+ 0x6EBD, 0x6EBD, 0x245B, 0x6EBE, 0x6EBE, 0x2465, 0x6EBF, 0x6EBF, 0x246F,
+ 0x6EC0, 0x6EC0, 0x2452, 0x6EC1, 0x6EC1, 0x245C, 0x6EC2, 0x6EC2, 0x0E54,
+ 0x6EC3, 0x6EC3, 0x2466, 0x6EC4, 0x6EC4, 0x0E61, 0x6EC5, 0x6EC5, 0x0E58,
+ 0x6EC6, 0x6EC6, 0x2459, 0x6EC7, 0x6EC7, 0x0E57, 0x6EC8, 0x6EC8, 0x2450,
+ 0x6EC9, 0x6EC9, 0x245E, 0x6ECA, 0x6ECA, 0x2472, 0x6ECB, 0x6ECB, 0x0CBF,
+ 0x6ECC, 0x6ECC, 0x101F, 0x6ECD, 0x6ECD, 0x2461, 0x6ECE, 0x6ECE, 0x26EB,
+ 0x6ECF, 0x6ECF, 0x2463, 0x6ED0, 0x6ED0, 0x2471, 0x6ED1, 0x6ED1, 0x0E5E,
+ 0x6ED2, 0x6ED2, 0x245A, 0x6ED3, 0x6ED3, 0x0E52, 0x6ED4, 0x6ED4, 0x0E62,
+ 0x6ED5, 0x6ED5, 0x119A, 0x6ED6, 0x6ED6, 0x244F, 0x6ED8, 0x6ED8, 0x2468,
+ 0x6ED9, 0x6ED9, 0x4069, 0x6EDA, 0x6EDA, 0x467F, 0x6EDB, 0x6EDB, 0x402F,
+ 0x6EDC, 0x6EDC, 0x2467, 0x6EDD, 0x6EDD, 0x4538, 0x6EE2, 0x6EE2, 0x467E,
+ 0x6EE8, 0x6EE9, 0x4681, 0x6EEB, 0x6EEB, 0x2707, 0x6EEC, 0x6EEC, 0x101C,
+ 0x6EED, 0x6EED, 0x26FC, 0x6EEE, 0x6EEE, 0x2701, 0x6EEF, 0x6EEF, 0x1011,
+ 0x6EF1, 0x6EF1, 0x26ED, 0x6EF2, 0x6EF2, 0x101E, 0x6EF4, 0x6EF4, 0x1008,
+ 0x6EF5, 0x6EF5, 0x26EC, 0x6EF6, 0x6EF6, 0x270D, 0x6EF7, 0x6EF7, 0x1020,
+ 0x6EF8, 0x6EF8, 0x26F0, 0x6EF9, 0x6EF9, 0x2700, 0x6EFA, 0x6EFA, 0x423B,
+ 0x6EFB, 0x6EFB, 0x26F2, 0x6EFC, 0x6EFC, 0x2710, 0x6EFD, 0x6EFD, 0x270C,
+ 0x6EFE, 0x6EFE, 0x1006, 0x6EFF, 0x6EFF, 0x1010, 0x6F00, 0x6F00, 0x2946,
+ 0x6F01, 0x6F01, 0x101D, 0x6F02, 0x6F02, 0x100E, 0x6F03, 0x6F03, 0x26EE,
+ 0x6F04, 0x6F04, 0x4224, 0x6F05, 0x6F05, 0x270B, 0x6F06, 0x6F06, 0x1012,
+ 0x6F07, 0x6F07, 0x2708, 0x6F08, 0x6F08, 0x2715, 0x6F09, 0x6F09, 0x26F4,
+ 0x6F0A, 0x6F0A, 0x26FD, 0x6F0B, 0x6F0B, 0x3ABA, 0x6F0C, 0x6F0C, 0x3CFB,
+ 0x6F0D, 0x6F0D, 0x2713, 0x6F0E, 0x6F0E, 0x2709, 0x6F0F, 0x6F0F, 0x100D,
+ 0x6F12, 0x6F12, 0x26FB, 0x6F13, 0x6F13, 0x1007, 0x6F14, 0x6F14, 0x1005,
+ 0x6F15, 0x6F15, 0x1017, 0x6F16, 0x6F16, 0x41A0, 0x6F17, 0x6F17, 0x46CE,
+ 0x6F18, 0x6F18, 0x26F9, 0x6F19, 0x6F1A, 0x26F6, 0x6F1C, 0x6F1C, 0x270F,
+ 0x6F1E, 0x6F1E, 0x2714, 0x6F1F, 0x6F1F, 0x2712, 0x6F20, 0x6F20, 0x100B,
+ 0x6F21, 0x6F21, 0x2716, 0x6F22, 0x6F22, 0x100F, 0x6F23, 0x6F23, 0x1016,
+ 0x6F24, 0x6F24, 0x4683, 0x6F25, 0x6F25, 0x26EF, 0x6F26, 0x6F26, 0x292E,
+ 0x6F27, 0x6F27, 0x26F8, 0x6F29, 0x6F29, 0x1009, 0x6F2A, 0x6F2A, 0x101B,
+ 0x6F2B, 0x6F2B, 0x1018, 0x6F2C, 0x6F2C, 0x100C, 0x6F2D, 0x6F2D, 0x2702,
+ 0x6F2E, 0x6F2E, 0x26F3, 0x6F2F, 0x6F2F, 0x1019, 0x6F30, 0x6F30, 0x2704,
+ 0x6F31, 0x6F31, 0x1013, 0x6F32, 0x6F32, 0x1015, 0x6F33, 0x6F33, 0x1004,
+ 0x6F34, 0x6F34, 0x4684, 0x6F35, 0x6F35, 0x2706, 0x6F36, 0x6F36, 0x26FE,
+ 0x6F37, 0x6F37, 0x26F1, 0x6F38, 0x6F38, 0x1014, 0x6F39, 0x6F39, 0x270E,
+ 0x6F3A, 0x6F3A, 0x2711, 0x6F3B, 0x6F3B, 0x26FA, 0x6F3C, 0x6F3C, 0x2705,
+ 0x6F3D, 0x6F3D, 0x4282, 0x6F3E, 0x6F3E, 0x100A, 0x6F3F, 0x6F3F, 0x1189,
+ 0x6F40, 0x6F40, 0x2703, 0x6F41, 0x6F41, 0x292D, 0x6F43, 0x6F43, 0x270A,
+ 0x6F44, 0x6F44, 0x4240, 0x6F4E, 0x6F4E, 0x26F5, 0x6F4F, 0x6F4F, 0x2937,
+ 0x6F50, 0x6F50, 0x2941, 0x6F51, 0x6F51, 0x118C, 0x6F52, 0x6F52, 0x2940,
+ 0x6F53, 0x6F53, 0x294C, 0x6F54, 0x6F54, 0x118E, 0x6F55, 0x6F55, 0x293E,
+ 0x6F56, 0x6F56, 0x3E52, 0x6F57, 0x6F57, 0x2942, 0x6F58, 0x6F58, 0x1199,
+ 0x6F5A, 0x6F5A, 0x2939, 0x6F5B, 0x6F5B, 0x1191, 0x6F5C, 0x6F5C, 0x4241,
+ 0x6F5D, 0x6F5D, 0x2945, 0x6F5E, 0x6F5E, 0x2B9A, 0x6F5F, 0x6F5F, 0x119D,
+ 0x6F60, 0x6F60, 0x119C, 0x6F61, 0x6F61, 0x2947, 0x6F62, 0x6F62, 0x2936,
+ 0x6F63, 0x6F63, 0x2951, 0x6F64, 0x6F64, 0x1197, 0x6F66, 0x6F66, 0x118D,
+ 0x6F67, 0x6F67, 0x294A, 0x6F69, 0x6F69, 0x294E, 0x6F6A, 0x6F6A, 0x2953,
+ 0x6F6B, 0x6F6B, 0x2948, 0x6F6C, 0x6F6C, 0x293C, 0x6F6D, 0x6F6D, 0x1190,
+ 0x6F6E, 0x6F6E, 0x1193, 0x6F6F, 0x6F6F, 0x119B, 0x6F70, 0x6F70, 0x1196,
+ 0x6F72, 0x6F72, 0x293F, 0x6F73, 0x6F73, 0x26FF, 0x6F74, 0x6F74, 0x4243,
+ 0x6F76, 0x6F76, 0x293B, 0x6F77, 0x6F77, 0x2952, 0x6F78, 0x6F78, 0x1192,
+ 0x6F79, 0x6F79, 0x3BBE, 0x6F7A, 0x6F7A, 0x1195, 0x6F7B, 0x6F7B, 0x2954,
+ 0x6F7C, 0x6F7C, 0x118A, 0x6F7D, 0x6F7D, 0x2949, 0x6F7E, 0x6F7E, 0x292F,
+ 0x6F7F, 0x6F7F, 0x294F, 0x6F80, 0x6F80, 0x13FC, 0x6F81, 0x6F81, 0x4687,
+ 0x6F82, 0x6F82, 0x293D, 0x6F84, 0x6F84, 0x118B, 0x6F85, 0x6F85, 0x2938,
+ 0x6F86, 0x6F86, 0x118F, 0x6F87, 0x6F87, 0x2930, 0x6F88, 0x6F88, 0x101A,
+ 0x6F89, 0x6F89, 0x2934, 0x6F8A, 0x6F8A, 0x4195, 0x6F8B, 0x6F8B, 0x294D,
+ 0x6F8C, 0x6F8C, 0x2935, 0x6F8D, 0x6F8D, 0x2933, 0x6F8E, 0x6F8E, 0x1194,
+ 0x6F90, 0x6F90, 0x294B, 0x6F92, 0x6F92, 0x2932, 0x6F93, 0x6F93, 0x2944,
+ 0x6F94, 0x6F94, 0x2943, 0x6F95, 0x6F95, 0x2950, 0x6F96, 0x6F96, 0x293A,
+ 0x6F97, 0x6F97, 0x1198, 0x6F9D, 0x6F9D, 0x4239, 0x6F9E, 0x6F9E, 0x2B9D,
+ 0x6F9F, 0x6F9F, 0x4246, 0x6FA0, 0x6FA0, 0x12EB, 0x6FA1, 0x6FA1, 0x12E1,
+ 0x6FA2, 0x6FA2, 0x2BA9, 0x6FA3, 0x6FA3, 0x2B95, 0x6FA4, 0x6FA4, 0x12E3,
+ 0x6FA5, 0x6FA5, 0x2BA1, 0x6FA6, 0x6FA6, 0x12EA, 0x6FA7, 0x6FA7, 0x12E5,
+ 0x6FA8, 0x6FA8, 0x2B9F, 0x6FA9, 0x6FA9, 0x2D8E, 0x6FAA, 0x6FAA, 0x2BA5,
+ 0x6FAB, 0x6FAB, 0x2BAB, 0x6FAC, 0x6FAC, 0x2BA4, 0x6FAD, 0x6FAD, 0x2B93,
+ 0x6FAE, 0x6FAE, 0x2BA2, 0x6FAF, 0x6FAF, 0x2BAD, 0x6FB0, 0x6FB0, 0x2BAF,
+ 0x6FB1, 0x6FB1, 0x12E0, 0x6FB2, 0x6FB2, 0x2BAE, 0x6FB3, 0x6FB3, 0x12E6,
+ 0x6FB4, 0x6FB4, 0x12EC, 0x6FB5, 0x6FB5, 0x3E27, 0x6FB6, 0x6FB6, 0x12E9,
+ 0x6FB8, 0x6FB8, 0x2BA8, 0x6FB9, 0x6FB9, 0x12E8, 0x6FBA, 0x6FBA, 0x2BA3,
+ 0x6FBB, 0x6FBB, 0x3BBB, 0x6FBC, 0x6FBC, 0x2B97, 0x6FBD, 0x6FBD, 0x2B9C,
+ 0x6FBE, 0x6FBE, 0x4688, 0x6FBF, 0x6FBF, 0x2BA7, 0x6FC0, 0x6FC0, 0x12E7,
+ 0x6FC1, 0x6FC1, 0x12E4, 0x6FC2, 0x6FC2, 0x12DF, 0x6FC3, 0x6FC3, 0x12E2,
+ 0x6FC4, 0x6FC4, 0x2B9B, 0x6FC6, 0x6FC6, 0x2931, 0x6FC7, 0x6FC7, 0x2B96,
+ 0x6FC8, 0x6FC8, 0x2B99, 0x6FC9, 0x6FC9, 0x2BAA, 0x6FCA, 0x6FCA, 0x2B9E,
+ 0x6FCB, 0x6FCB, 0x2B94, 0x6FCC, 0x6FCC, 0x2D8D, 0x6FCD, 0x6FCD, 0x2BAC,
+ 0x6FCE, 0x6FCE, 0x2B98, 0x6FCF, 0x6FCF, 0x2BA6, 0x6FD3, 0x6FD3, 0x4248,
+ 0x6FD4, 0x6FD4, 0x2D90, 0x6FD5, 0x6FD5, 0x1400, 0x6FD8, 0x6FD8, 0x13F4,
+ 0x6FD9, 0x6FD9, 0x3C74, 0x6FDA, 0x6FDA, 0x3C73, 0x6FDB, 0x6FDB, 0x13F8,
+ 0x6FDC, 0x6FDC, 0x2D92, 0x6FDD, 0x6FDD, 0x2D98, 0x6FDE, 0x6FDE, 0x2D96,
+ 0x6FDF, 0x6FE0, 0x13F6, 0x6FE1, 0x6FE1, 0x13FE, 0x6FE2, 0x6FE2, 0x2D99,
+ 0x6FE3, 0x6FE3, 0x2D91, 0x6FE4, 0x6FE4, 0x13F9, 0x6FE6, 0x6FE6, 0x2D95,
+ 0x6FE7, 0x6FE7, 0x2D94, 0x6FE8, 0x6FE8, 0x2D9A, 0x6FE9, 0x6FE9, 0x13FF,
+ 0x6FEB, 0x6FEB, 0x13FA, 0x6FEC, 0x6FEC, 0x13FD, 0x6FED, 0x6FED, 0x2D93,
+ 0x6FEE, 0x6FEE, 0x1401, 0x6FEF, 0x6FEF, 0x13FB, 0x6FF0, 0x6FF0, 0x1402,
+ 0x6FF1, 0x6FF1, 0x13F5, 0x6FF2, 0x6FF2, 0x2D97, 0x6FF4, 0x6FF4, 0x2D8F,
+ 0x6FF6, 0x6FF6, 0x38A5, 0x6FF7, 0x6FF7, 0x2F4E, 0x6FF8, 0x6FF8, 0x4237,
+ 0x6FFA, 0x6FFA, 0x14EB, 0x6FFB, 0x6FFB, 0x2F4B, 0x6FFC, 0x6FFC, 0x2F4D,
+ 0x6FFE, 0x6FFE, 0x14E9, 0x6FFF, 0x6FFF, 0x2F49, 0x7000, 0x7000, 0x2F4A,
+ 0x7001, 0x7001, 0x2F45, 0x7003, 0x7003, 0x46E2, 0x7004, 0x7004, 0x2BA0,
+ 0x7005, 0x7005, 0x2F46, 0x7006, 0x7006, 0x14EA, 0x7007, 0x7007, 0x2F42,
+ 0x7009, 0x7009, 0x14E7, 0x700A, 0x700A, 0x2F4F, 0x700B, 0x700B, 0x14E8,
+ 0x700C, 0x700D, 0x2F43, 0x700E, 0x700E, 0x2F48, 0x700F, 0x700F, 0x14ED,
+ 0x7011, 0x7011, 0x14EC, 0x7014, 0x7014, 0x2F47, 0x7015, 0x7015, 0x158F,
+ 0x7016, 0x7016, 0x30AD, 0x7017, 0x7017, 0x30B3, 0x7018, 0x7018, 0x1590,
+ 0x7019, 0x7019, 0x30AA, 0x701A, 0x701A, 0x158D, 0x701B, 0x701B, 0x158A,
+ 0x701C, 0x701C, 0x30B5, 0x701D, 0x701D, 0x158E, 0x701E, 0x701E, 0x3C76,
+ 0x701F, 0x701F, 0x158B, 0x7020, 0x7020, 0x30AC, 0x7021, 0x7023, 0x30AF,
+ 0x7024, 0x7024, 0x30B4, 0x7026, 0x7026, 0x2F4C, 0x7027, 0x7027, 0x30AB,
+ 0x7028, 0x7028, 0x158C, 0x7029, 0x7029, 0x30B2, 0x702A, 0x702A, 0x31EF,
+ 0x702B, 0x702B, 0x30AE, 0x702C, 0x702C, 0x468E, 0x702F, 0x702F, 0x31E6,
+ 0x7030, 0x7030, 0x161D, 0x7031, 0x7031, 0x31E9, 0x7032, 0x7032, 0x161E,
+ 0x7033, 0x7033, 0x31F2, 0x7034, 0x7034, 0x31E8, 0x7035, 0x7035, 0x31E5,
+ 0x7037, 0x7037, 0x31E7, 0x7038, 0x7038, 0x31EB, 0x7039, 0x7039, 0x31EE,
+ 0x703A, 0x703A, 0x31ED, 0x703B, 0x703B, 0x31F1, 0x703C, 0x703C, 0x31E4,
+ 0x703E, 0x703E, 0x161C, 0x703F, 0x703F, 0x31EC, 0x7040, 0x7040, 0x31F0,
+ 0x7041, 0x7041, 0x31F3, 0x7042, 0x7042, 0x31EA, 0x7043, 0x7044, 0x32D8,
+ 0x7045, 0x7046, 0x32DD, 0x7048, 0x7049, 0x32DB, 0x704A, 0x704A, 0x32DA,
+ 0x704B, 0x704B, 0x4254, 0x704C, 0x704C, 0x167A, 0x7050, 0x7050, 0x4690,
+ 0x7051, 0x7051, 0x16C8, 0x7052, 0x7052, 0x338C, 0x7054, 0x7054, 0x4691,
+ 0x7055, 0x7057, 0x3389, 0x7058, 0x7058, 0x16C9, 0x705A, 0x705A, 0x3423,
+ 0x705B, 0x705B, 0x3422, 0x705C, 0x705C, 0x3852, 0x705D, 0x705D, 0x348A,
+ 0x705E, 0x705E, 0x1722, 0x705F, 0x705F, 0x3488, 0x7060, 0x7060, 0x348B,
+ 0x7061, 0x7061, 0x3489, 0x7062, 0x7062, 0x34D0, 0x7063, 0x7063, 0x1744,
+ 0x7064, 0x7064, 0x1752, 0x7065, 0x7065, 0x351C, 0x7066, 0x7066, 0x3506,
+ 0x7067, 0x7067, 0x3CF5, 0x7068, 0x7068, 0x351B, 0x7069, 0x706A, 0x3547,
+ 0x706B, 0x706B, 0x02E6, 0x706C, 0x706C, 0x44F1, 0x706F, 0x706F, 0x4692,
+ 0x7070, 0x7070, 0x03F2, 0x7071, 0x7071, 0x180A, 0x7074, 0x7074, 0x18C3,
+ 0x7075, 0x7075, 0x38C7, 0x7076, 0x7076, 0x04E6, 0x7078, 0x7078, 0x04E9,
+ 0x7079, 0x7079, 0x4099, 0x707A, 0x707A, 0x18C4, 0x707C, 0x707D, 0x04E7,
+ 0x707E, 0x707E, 0x4255, 0x707F, 0x707F, 0x4693, 0x7081, 0x7081, 0x4959,
+ 0x7082, 0x7082, 0x19F7, 0x7083, 0x7083, 0x19F9, 0x7084, 0x7084, 0x19F4,
+ 0x7085, 0x7085, 0x19F1, 0x7086, 0x7086, 0x19F3, 0x7089, 0x7089, 0x43F9,
+ 0x708A, 0x708A, 0x0643, 0x708B, 0x708B, 0x40CB, 0x708E, 0x708E, 0x0641,
+ 0x708F, 0x708F, 0x46B3, 0x7091, 0x7091, 0x19F5, 0x7092, 0x7092, 0x0642,
+ 0x7093, 0x7093, 0x19F2, 0x7094, 0x7094, 0x19EF, 0x7095, 0x7095, 0x0640,
+ 0x7096, 0x7096, 0x19F6, 0x7098, 0x7098, 0x19F0, 0x7099, 0x7099, 0x0644,
+ 0x709A, 0x709A, 0x19F8, 0x709F, 0x709F, 0x1B66, 0x70A0, 0x70A0, 0x4742,
+ 0x70A1, 0x70A1, 0x1B6A, 0x70A3, 0x70A3, 0x3972, 0x70A4, 0x70A4, 0x0790,
+ 0x70A5, 0x70A5, 0x3CB7, 0x70A6, 0x70A6, 0x3D53, 0x70A7, 0x70A7, 0x4256,
+ 0x70A9, 0x70A9, 0x1B6D, 0x70AB, 0x70AB, 0x0788, 0x70AC, 0x70AC, 0x078B,
+ 0x70AD, 0x70AD, 0x078D, 0x70AE, 0x70AE, 0x078F, 0x70AF, 0x70AF, 0x078C,
+ 0x70B0, 0x70B0, 0x1B69, 0x70B1, 0x70B1, 0x1B68, 0x70B3, 0x70B3, 0x078A,
+ 0x70B4, 0x70B5, 0x1B6B, 0x70B7, 0x70B7, 0x1B65, 0x70B8, 0x70B8, 0x078E,
+ 0x70B9, 0x70B9, 0x3D69, 0x70BA, 0x70BA, 0x0789, 0x70BB, 0x70BB, 0x4812,
+ 0x70BC, 0x70BC, 0x4559, 0x70BD, 0x70BD, 0x4270, 0x70BE, 0x70BE, 0x1B67,
+ 0x70C0, 0x70C0, 0x4733, 0x70C4, 0x70C4, 0x3BAA, 0x70C5, 0x70C7, 0x1D27,
+ 0x70C8, 0x70C8, 0x0921, 0x70CA, 0x70CA, 0x091D, 0x70CB, 0x70CB, 0x1D1E,
+ 0x70CC, 0x70CC, 0x4258, 0x70CD, 0x70CD, 0x1D26, 0x70CE, 0x70CE, 0x1D2B,
+ 0x70CF, 0x70CF, 0x0922, 0x70D0, 0x70D0, 0x396D, 0x70D1, 0x70D1, 0x1D1C,
+ 0x70D2, 0x70D2, 0x1D22, 0x70D3, 0x70D3, 0x1D1B, 0x70D4, 0x70D4, 0x1D25,
+ 0x70D5, 0x70D6, 0x4259, 0x70D7, 0x70D7, 0x1D21, 0x70D8, 0x70D8, 0x091E,
+ 0x70D9, 0x70D9, 0x0920, 0x70DA, 0x70DA, 0x1D2A, 0x70DC, 0x70DC, 0x1D1A,
+ 0x70DD, 0x70DD, 0x1D1D, 0x70DE, 0x70DE, 0x1D23, 0x70DF, 0x70DF, 0x425B,
+ 0x70E0, 0x70E0, 0x1D24, 0x70E1, 0x70E1, 0x1D2C, 0x70E2, 0x70E2, 0x1D20,
+ 0x70E4, 0x70E4, 0x091F, 0x70EF, 0x70EF, 0x0B16, 0x70F0, 0x70F0, 0x1F72,
+ 0x70F1, 0x70F1, 0x3AC8, 0x70F3, 0x70F3, 0x1F74, 0x70F4, 0x70F4, 0x1F70,
+ 0x70F5, 0x70F5, 0x4760, 0x70F6, 0x70F6, 0x1F7C, 0x70F7, 0x70F7, 0x1F6E,
+ 0x70F8, 0x70F8, 0x1F7B, 0x70F9, 0x70F9, 0x0B12, 0x70FA, 0x70FA, 0x1F6C,
+ 0x70FB, 0x70FB, 0x21F2, 0x70FC, 0x70FC, 0x1F76, 0x70FD, 0x70FD, 0x0B15,
+ 0x70FE, 0x70FE, 0x3D0E, 0x70FF, 0x70FF, 0x1F77, 0x7100, 0x7100, 0x1F7A,
+ 0x7102, 0x7102, 0x1F7E, 0x7104, 0x7104, 0x1F73, 0x7105, 0x7105, 0x3A23,
+ 0x7106, 0x7106, 0x1F78, 0x7109, 0x710A, 0x0B13, 0x710B, 0x710B, 0x1F7D,
+ 0x710C, 0x710C, 0x1F71, 0x710D, 0x710D, 0x1F6D, 0x710E, 0x710E, 0x1F7F,
+ 0x7110, 0x7110, 0x1F75, 0x7113, 0x7113, 0x1F79, 0x7117, 0x7117, 0x1F6F,
+ 0x7119, 0x711A, 0x0CC8, 0x711B, 0x711B, 0x21FC, 0x711C, 0x711C, 0x0CCF,
+ 0x711D, 0x711D, 0x3D47, 0x711E, 0x711E, 0x21F0, 0x711F, 0x711F, 0x21F9,
+ 0x7120, 0x7120, 0x21EF, 0x7121, 0x7121, 0x0CCC, 0x7122, 0x7122, 0x21F7,
+ 0x7123, 0x7123, 0x21F5, 0x7125, 0x7125, 0x21F6, 0x7126, 0x7126, 0x0CCA,
+ 0x7128, 0x7128, 0x21FA, 0x7129, 0x7129, 0x3BA9, 0x712B, 0x712B, 0x4261,
+ 0x712C, 0x712C, 0x426A, 0x712E, 0x712E, 0x21F3, 0x712F, 0x712F, 0x21F1,
+ 0x7130, 0x7130, 0x0CCB, 0x7131, 0x7131, 0x21F4, 0x7132, 0x7132, 0x21F8,
+ 0x7133, 0x7133, 0x3D54, 0x7134, 0x7134, 0x3C7E, 0x7135, 0x7135, 0x376D,
+ 0x7136, 0x7136, 0x0CCD, 0x713A, 0x713A, 0x21FB, 0x713B, 0x713B, 0x3AC5,
+ 0x713E, 0x713E, 0x372E, 0x7140, 0x7140, 0x4398, 0x7141, 0x7141, 0x247B,
+ 0x7142, 0x7142, 0x2482, 0x7143, 0x7143, 0x2484, 0x7144, 0x7144, 0x248A,
+ 0x7145, 0x7145, 0x4262, 0x7146, 0x7146, 0x0E72, 0x7147, 0x7147, 0x2476,
+ 0x7149, 0x7149, 0x0E6A, 0x714A, 0x714A, 0x4264, 0x714B, 0x714B, 0x2485,
+ 0x714C, 0x714C, 0x0E6F, 0x714D, 0x714D, 0x248B, 0x714E, 0x714E, 0x0E66,
+ 0x714F, 0x714F, 0x4267, 0x7150, 0x7150, 0x2488, 0x7151, 0x7151, 0x4865,
+ 0x7152, 0x7152, 0x2478, 0x7153, 0x7153, 0x2489, 0x7154, 0x7154, 0x2477,
+ 0x7156, 0x7156, 0x0E74, 0x7158, 0x7158, 0x2483, 0x7159, 0x7159, 0x0E67,
+ 0x715A, 0x715A, 0x248C, 0x715C, 0x715C, 0x0E6C, 0x715D, 0x715D, 0x247C,
+ 0x715E, 0x715E, 0x0E71, 0x715F, 0x715F, 0x2487, 0x7160, 0x7160, 0x247A,
+ 0x7161, 0x7161, 0x2481, 0x7162, 0x7162, 0x247D, 0x7163, 0x7163, 0x2479,
+ 0x7164, 0x7164, 0x0E69, 0x7165, 0x7165, 0x0E70, 0x7166, 0x7166, 0x0E6E,
+ 0x7167, 0x7167, 0x0E6B, 0x7168, 0x7168, 0x0E73, 0x7169, 0x7169, 0x0E68,
+ 0x716A, 0x716A, 0x2480, 0x716B, 0x716B, 0x3CC5, 0x716C, 0x716C, 0x0E6D,
+ 0x716E, 0x716E, 0x0CCE, 0x7170, 0x7170, 0x2486, 0x7171, 0x7171, 0x3DC0,
+ 0x7172, 0x7172, 0x247E, 0x7173, 0x7173, 0x47E7, 0x7175, 0x7175, 0x3CED,
+ 0x7176, 0x7176, 0x4000, 0x7177, 0x7177, 0x3957, 0x7178, 0x7178, 0x247F,
+ 0x717A, 0x717A, 0x4924, 0x717B, 0x717B, 0x271E, 0x717C, 0x717C, 0x3835,
+ 0x717D, 0x717D, 0x1023, 0x717E, 0x717E, 0x3970, 0x7180, 0x7180, 0x271A,
+ 0x7181, 0x7181, 0x2720, 0x7182, 0x7182, 0x271C, 0x7184, 0x7184, 0x1025,
+ 0x7185, 0x7185, 0x271B, 0x7186, 0x7186, 0x271F, 0x7187, 0x7187, 0x2717,
+ 0x7188, 0x7188, 0x4706, 0x7189, 0x7189, 0x2719, 0x718A, 0x718A, 0x1024,
+ 0x718C, 0x718C, 0x39EA, 0x718E, 0x718E, 0x3D3B, 0x718F, 0x718F, 0x271D,
+ 0x7190, 0x7190, 0x2718, 0x7192, 0x7192, 0x1026, 0x7194, 0x7194, 0x1021,
+ 0x7196, 0x7196, 0x425F, 0x7197, 0x7197, 0x2721, 0x7198, 0x7198, 0x481D,
+ 0x7199, 0x7199, 0x1022, 0x719A, 0x719A, 0x295A, 0x719B, 0x719B, 0x2957,
+ 0x719C, 0x719C, 0x2963, 0x719D, 0x719D, 0x295D, 0x719E, 0x719E, 0x295F,
+ 0x719F, 0x719F, 0x119E, 0x71A0, 0x71A0, 0x2959, 0x71A1, 0x71A1, 0x2961,
+ 0x71A2, 0x71A2, 0x48C1, 0x71A3, 0x71A3, 0x3EC8, 0x71A4, 0x71A4, 0x2960,
+ 0x71A5, 0x71A5, 0x295E, 0x71A7, 0x71A7, 0x2964, 0x71A8, 0x71A8, 0x11A1,
+ 0x71A9, 0x71A9, 0x295B, 0x71AA, 0x71AA, 0x2962, 0x71AC, 0x71AC, 0x119F,
+ 0x71AD, 0x71AD, 0x3E1D, 0x71AF, 0x71AF, 0x2956, 0x71B0, 0x71B0, 0x2958,
+ 0x71B1, 0x71B1, 0x11A0, 0x71B2, 0x71B2, 0x2955, 0x71B3, 0x71B3, 0x2965,
+ 0x71B4, 0x71B4, 0x425E, 0x71B5, 0x71B5, 0x295C, 0x71B7, 0x71B7, 0x468B,
+ 0x71B8, 0x71B8, 0x2BB3, 0x71B9, 0x71B9, 0x12F3, 0x71BA, 0x71BA, 0x426E,
+ 0x71BC, 0x71BC, 0x2BBE, 0x71BD, 0x71BD, 0x2BBC, 0x71BE, 0x71BE, 0x12ED,
+ 0x71BF, 0x71BF, 0x2BB2, 0x71C0, 0x71C1, 0x2BB5, 0x71C2, 0x71C2, 0x2BB1,
+ 0x71C3, 0x71C4, 0x12F7, 0x71C5, 0x71C5, 0x2BB0, 0x71C6, 0x71C6, 0x2BBF,
+ 0x71C7, 0x71C7, 0x2BBA, 0x71C8, 0x71C8, 0x12F1, 0x71C9, 0x71C9, 0x12EE,
+ 0x71CA, 0x71CA, 0x2BB9, 0x71CB, 0x71CB, 0x2BB7, 0x71CE, 0x71CE, 0x12F4,
+ 0x71CF, 0x71CF, 0x2BBB, 0x71D0, 0x71D0, 0x12EF, 0x71D1, 0x71D1, 0x373D,
+ 0x71D2, 0x71D2, 0x12F0, 0x71D4, 0x71D4, 0x2BB8, 0x71D5, 0x71D5, 0x12F2,
+ 0x71D6, 0x71D6, 0x2BB4, 0x71D8, 0x71D8, 0x2BBD, 0x71D9, 0x71D9, 0x12F5,
+ 0x71DA, 0x71DB, 0x2BC0, 0x71DC, 0x71DC, 0x12F6, 0x71DD, 0x71DD, 0x4078,
+ 0x71DF, 0x71DF, 0x1404, 0x71E0, 0x71E0, 0x140B, 0x71E1, 0x71E1, 0x2D9B,
+ 0x71E2, 0x71E2, 0x2DA1, 0x71E4, 0x71E4, 0x2D9F, 0x71E5, 0x71E5, 0x1407,
+ 0x71E6, 0x71E6, 0x1406, 0x71E7, 0x71E7, 0x1403, 0x71E8, 0x71E8, 0x2D9D,
+ 0x71EB, 0x71EB, 0x3C81, 0x71EC, 0x71EC, 0x1409, 0x71ED, 0x71ED, 0x1408,
+ 0x71EE, 0x71EE, 0x1405, 0x71F0, 0x71F0, 0x2DA0, 0x71F1, 0x71F1, 0x2D9C,
+ 0x71F2, 0x71F2, 0x2D9E, 0x71F4, 0x71F4, 0x140A, 0x71F5, 0x71F5, 0x46EE,
+ 0x71F6, 0x71F6, 0x3E9A, 0x71F8, 0x71F8, 0x14F1, 0x71F9, 0x71F9, 0x2F52,
+ 0x71FB, 0x71FC, 0x14EE, 0x71FD, 0x71FD, 0x2F54, 0x71FE, 0x71FE, 0x14F0,
+ 0x71FF, 0x71FF, 0x2F51, 0x7201, 0x7201, 0x2F50, 0x7202, 0x7202, 0x30B9,
+ 0x7203, 0x7203, 0x2F53, 0x7205, 0x7205, 0x30BA, 0x7206, 0x7206, 0x1591,
+ 0x7207, 0x7207, 0x30B8, 0x7209, 0x7209, 0x3DBB, 0x720A, 0x720A, 0x30B7,
+ 0x720C, 0x720C, 0x30B6, 0x720D, 0x720D, 0x1592, 0x720E, 0x720E, 0x4271,
+ 0x720F, 0x720F, 0x39FC, 0x7210, 0x7210, 0x161F, 0x7213, 0x7214, 0x31F4,
+ 0x7215, 0x7215, 0x4273, 0x7216, 0x7216, 0x3953, 0x7217, 0x7217, 0x3969,
+ 0x7219, 0x7219, 0x32E1, 0x721A, 0x721A, 0x32E0, 0x721B, 0x721B, 0x167B,
+ 0x721D, 0x721D, 0x32DF, 0x721E, 0x721F, 0x338D, 0x7222, 0x7222, 0x3424,
+ 0x7223, 0x7223, 0x348C, 0x7224, 0x7224, 0x4276, 0x7226, 0x7226, 0x34D1,
+ 0x7227, 0x7227, 0x3535, 0x7228, 0x7228, 0x1766, 0x7229, 0x7229, 0x3549,
+ 0x722A, 0x722A, 0x02E7, 0x722B, 0x722B, 0x44F2, 0x722C, 0x722D, 0x0645,
+ 0x722E, 0x722E, 0x4279, 0x7230, 0x7230, 0x0791, 0x7235, 0x7235, 0x140C,
+ 0x7236, 0x7236, 0x02E8, 0x7238, 0x7238, 0x0647, 0x7239, 0x7239, 0x0923,
+ 0x723A, 0x723A, 0x0E75, 0x723B, 0x723B, 0x02E9, 0x723D, 0x723D, 0x0B17,
+ 0x723E, 0x723E, 0x1027, 0x723F, 0x723F, 0x178D, 0x7240, 0x7240, 0x427A,
+ 0x7241, 0x7241, 0x1B6E, 0x7242, 0x7242, 0x1D2D, 0x7244, 0x7244, 0x2722,
+ 0x7246, 0x7246, 0x140D, 0x7247, 0x7247, 0x02EA, 0x7248, 0x7248, 0x0648,
+ 0x7249, 0x724A, 0x1B6F, 0x724B, 0x724B, 0x21FD, 0x724C, 0x724C, 0x0CD0,
+ 0x724F, 0x724F, 0x248D, 0x7250, 0x7250, 0x3AC9, 0x7252, 0x7252, 0x0E76,
+ 0x7253, 0x7253, 0x2723, 0x7255, 0x7255, 0x427D, 0x7256, 0x7256, 0x11A2,
+ 0x7257, 0x7257, 0x427E, 0x7258, 0x7258, 0x1593, 0x7259, 0x7259, 0x02EB,
+ 0x725A, 0x725A, 0x21FE, 0x725B, 0x725B, 0x02EC, 0x725C, 0x725C, 0x465A,
+ 0x725D, 0x725D, 0x03F4, 0x725E, 0x725E, 0x180B, 0x725F, 0x725F, 0x03F3,
+ 0x7260, 0x7260, 0x04EC, 0x7261, 0x7261, 0x04EB, 0x7262, 0x7262, 0x04EA,
+ 0x7263, 0x7263, 0x18C5, 0x7266, 0x7266, 0x3EBB, 0x7267, 0x7267, 0x0649,
+ 0x7269, 0x7269, 0x064A, 0x726A, 0x726A, 0x19FA, 0x726C, 0x726C, 0x1B71,
+ 0x726E, 0x726E, 0x1B74, 0x726F, 0x726F, 0x0793, 0x7270, 0x7270, 0x1B72,
+ 0x7272, 0x7272, 0x0792, 0x7273, 0x7273, 0x1B73, 0x7274, 0x7274, 0x0794,
+ 0x7276, 0x7276, 0x1D30, 0x7277, 0x7277, 0x1D2F, 0x7278, 0x7278, 0x1D2E,
+ 0x7279, 0x7279, 0x0924, 0x727B, 0x727C, 0x1F81, 0x727D, 0x727D, 0x0B18,
+ 0x727E, 0x727E, 0x1F80, 0x727F, 0x727F, 0x1F83, 0x7280, 0x7280, 0x0CD2,
+ 0x7281, 0x7281, 0x0B19, 0x7282, 0x7282, 0x4283, 0x7284, 0x7284, 0x0CD1,
+ 0x7285, 0x7285, 0x2202, 0x7286, 0x7286, 0x2201, 0x7287, 0x7287, 0x3ACA,
+ 0x7288, 0x7289, 0x21FF, 0x728B, 0x728B, 0x2203, 0x728C, 0x728C, 0x248F,
+ 0x728D, 0x728D, 0x248E, 0x728E, 0x728E, 0x2492, 0x728F, 0x728F, 0x43C9,
+ 0x7290, 0x7290, 0x2491, 0x7291, 0x7291, 0x2490, 0x7292, 0x7292, 0x1028,
+ 0x7293, 0x7293, 0x2726, 0x7294, 0x7294, 0x3ACB, 0x7295, 0x7295, 0x2725,
+ 0x7296, 0x7296, 0x1029, 0x7297, 0x7297, 0x2724, 0x7298, 0x7298, 0x2966,
+ 0x729A, 0x729A, 0x2967, 0x729B, 0x729B, 0x11A3, 0x729D, 0x729E, 0x2BC2,
+ 0x729F, 0x729F, 0x473A, 0x72A1, 0x72A1, 0x30BF, 0x72A2, 0x72A2, 0x1594,
+ 0x72A3, 0x72A3, 0x30BE, 0x72A4, 0x72A4, 0x30BD, 0x72A5, 0x72A6, 0x30BB,
+ 0x72A7, 0x72A7, 0x167C, 0x72A8, 0x72A8, 0x31F6, 0x72A9, 0x72A9, 0x338F,
+ 0x72AA, 0x72AA, 0x34D2, 0x72AC, 0x72AC, 0x02ED, 0x72AD, 0x72AD, 0x44F4,
+ 0x72AE, 0x72AE, 0x17AF, 0x72AF, 0x72AF, 0x0355, 0x72B0, 0x72B0, 0x17B0,
+ 0x72B2, 0x72B2, 0x3FB6, 0x72B4, 0x72B5, 0x180C, 0x72BA, 0x72BA, 0x18CB,
+ 0x72BD, 0x72BD, 0x18C7, 0x72BF, 0x72BF, 0x18C6, 0x72C0, 0x72C0, 0x064B,
+ 0x72C1, 0x72C1, 0x18CA, 0x72C2, 0x72C2, 0x04EE, 0x72C3, 0x72C3, 0x18C8,
+ 0x72C4, 0x72C4, 0x04ED, 0x72C5, 0x72C5, 0x18CC, 0x72C6, 0x72C6, 0x18C9,
+ 0x72C9, 0x72C9, 0x19FE, 0x72CA, 0x72CA, 0x1B75, 0x72CB, 0x72CB, 0x19FC,
+ 0x72CC, 0x72CC, 0x1A03, 0x72CD, 0x72CD, 0x43CA, 0x72CE, 0x72CE, 0x064C,
+ 0x72D0, 0x72D0, 0x064F, 0x72D1, 0x72D1, 0x1A04, 0x72D2, 0x72D2, 0x1A00,
+ 0x72D4, 0x72D4, 0x1A01, 0x72D6, 0x72D6, 0x19FB, 0x72D7, 0x72D7, 0x064E,
+ 0x72D8, 0x72D8, 0x19FD, 0x72D9, 0x72D9, 0x064D, 0x72DA, 0x72DA, 0x1A02,
+ 0x72DC, 0x72DC, 0x19FF, 0x72DF, 0x72DF, 0x1B79, 0x72E0, 0x72E1, 0x0796,
+ 0x72E2, 0x72E2, 0x3F97, 0x72E3, 0x72E3, 0x1B7C, 0x72E4, 0x72E4, 0x1B76,
+ 0x72E6, 0x72E6, 0x1B7B, 0x72E8, 0x72E8, 0x1B77, 0x72E9, 0x72E9, 0x0795,
+ 0x72EA, 0x72EA, 0x1B7A, 0x72EB, 0x72EB, 0x1B78, 0x72F3, 0x72F3, 0x1D36,
+ 0x72F4, 0x72F4, 0x1D33, 0x72F6, 0x72F6, 0x1D35, 0x72F7, 0x72F7, 0x0929,
+ 0x72F8, 0x72F8, 0x0928, 0x72F9, 0x72F9, 0x0926, 0x72FA, 0x72FA, 0x1D32,
+ 0x72FB, 0x72FB, 0x1D37, 0x72FC, 0x72FC, 0x0925, 0x72FD, 0x72FD, 0x0927,
+ 0x72FE, 0x72FE, 0x1D34, 0x72FF, 0x72FF, 0x1F8B, 0x7300, 0x7300, 0x1D31,
+ 0x7301, 0x7301, 0x1D38, 0x7302, 0x7302, 0x3F9A, 0x7304, 0x7304, 0x3EB5,
+ 0x7307, 0x7307, 0x1F86, 0x7308, 0x7308, 0x1F8A, 0x730A, 0x730A, 0x1F89,
+ 0x730B, 0x730B, 0x2205, 0x730C, 0x730C, 0x2210, 0x730F, 0x730F, 0x1F8C,
+ 0x7310, 0x7310, 0x46EA, 0x7311, 0x7311, 0x1F87, 0x7312, 0x7312, 0x2204,
+ 0x7313, 0x7313, 0x0B1D, 0x7316, 0x7316, 0x0B1C, 0x7317, 0x7317, 0x1F85,
+ 0x7318, 0x7318, 0x1F88, 0x7319, 0x7319, 0x0B1E, 0x731B, 0x731B, 0x0B1B,
+ 0x731C, 0x731C, 0x0B1A, 0x731D, 0x731D, 0x1F84, 0x731E, 0x731E, 0x1F8D,
+ 0x7322, 0x7322, 0x2207, 0x7323, 0x7323, 0x220E, 0x7325, 0x7325, 0x0CD4,
+ 0x7326, 0x7326, 0x220D, 0x7327, 0x7327, 0x220A, 0x7328, 0x7328, 0x428A,
+ 0x7329, 0x7329, 0x0CD6, 0x732A, 0x732A, 0x3D70, 0x732B, 0x732B, 0x4285,
+ 0x732C, 0x732C, 0x3FB2, 0x732D, 0x732D, 0x220C, 0x732E, 0x732E, 0x428B,
+ 0x7330, 0x7330, 0x2206, 0x7331, 0x7331, 0x2208, 0x7332, 0x7332, 0x220B,
+ 0x7333, 0x7333, 0x2209, 0x7334, 0x7334, 0x0CD5, 0x7335, 0x7335, 0x220F,
+ 0x7336, 0x7336, 0x0CD3, 0x7337, 0x7337, 0x0E77, 0x7338, 0x7338, 0x46EB,
+ 0x7339, 0x7339, 0x43CC, 0x733A, 0x733A, 0x2496, 0x733B, 0x733B, 0x2495,
+ 0x733C, 0x733C, 0x2493, 0x733E, 0x733E, 0x0E7A, 0x733F, 0x733F, 0x0E79,
+ 0x7340, 0x7340, 0x2497, 0x7341, 0x7341, 0x46EC, 0x7342, 0x7342, 0x2494,
+ 0x7343, 0x7343, 0x2727, 0x7344, 0x7344, 0x102A, 0x7345, 0x7345, 0x0E78,
+ 0x7348, 0x7348, 0x43FA, 0x7349, 0x7349, 0x2499, 0x734A, 0x734A, 0x2498,
+ 0x734C, 0x734C, 0x272A, 0x734D, 0x734D, 0x2728, 0x734E, 0x734E, 0x11A4,
+ 0x734F, 0x734F, 0x3F51, 0x7350, 0x7350, 0x102B, 0x7351, 0x7351, 0x2729,
+ 0x7352, 0x7352, 0x2969, 0x7357, 0x7357, 0x11A5, 0x7358, 0x7358, 0x2968,
+ 0x7359, 0x7359, 0x2971, 0x735A, 0x735A, 0x2970, 0x735B, 0x735B, 0x296E,
+ 0x735D, 0x735D, 0x296D, 0x735E, 0x7360, 0x296A, 0x7361, 0x7361, 0x296F,
+ 0x7362, 0x7362, 0x2972, 0x7365, 0x7365, 0x2BC8, 0x7366, 0x7367, 0x2BC5,
+ 0x7368, 0x7368, 0x12F9, 0x7369, 0x7369, 0x2BC4, 0x736A, 0x736A, 0x2BCA,
+ 0x736B, 0x736B, 0x2BC9, 0x736C, 0x736C, 0x2BC7, 0x736E, 0x736F, 0x2DA3,
+ 0x7370, 0x7370, 0x140E, 0x7371, 0x7371, 0x3F98, 0x7372, 0x7372, 0x140F,
+ 0x7373, 0x7373, 0x2DA2, 0x7374, 0x7374, 0x3ED4, 0x7375, 0x7375, 0x14F3,
+ 0x7376, 0x7376, 0x2F55, 0x7377, 0x7377, 0x14F2, 0x7378, 0x7378, 0x1595,
+ 0x737A, 0x737A, 0x1596, 0x737B, 0x737B, 0x1620, 0x737C, 0x737C, 0x31F8,
+ 0x737D, 0x737D, 0x31F7, 0x737E, 0x737E, 0x32E2, 0x737F, 0x737F, 0x3390,
+ 0x7380, 0x7380, 0x16CA, 0x7381, 0x7381, 0x3426, 0x7382, 0x7382, 0x3425,
+ 0x7383, 0x7383, 0x3427, 0x7384, 0x7384, 0x0356, 0x7385, 0x7385, 0x1B7D,
+ 0x7386, 0x7386, 0x092A, 0x7387, 0x7387, 0x0B1F, 0x7388, 0x7388, 0x1F8E,
+ 0x7389, 0x7389, 0x0357, 0x738A, 0x738A, 0x17B1, 0x738B, 0x738B, 0x02EE,
+ 0x738E, 0x738E, 0x180E, 0x738F, 0x738F, 0x46E5, 0x7392, 0x7392, 0x18D1,
+ 0x7393, 0x7394, 0x18CF, 0x7395, 0x7395, 0x18CD, 0x7396, 0x7396, 0x04EF,
+ 0x7397, 0x7397, 0x18CE, 0x7398, 0x7398, 0x39F6, 0x739C, 0x739C, 0x408A,
+ 0x739D, 0x739D, 0x1A0C, 0x739E, 0x739E, 0x395B, 0x739F, 0x739F, 0x0652,
+ 0x73A0, 0x73A0, 0x1A0A, 0x73A1, 0x73A1, 0x1A06, 0x73A2, 0x73A2, 0x1A09,
+ 0x73A4, 0x73A4, 0x1A05, 0x73A5, 0x73A5, 0x0654, 0x73A6, 0x73A6, 0x1A08,
+ 0x73A7, 0x73A7, 0x4087, 0x73A8, 0x73A8, 0x0651, 0x73A9, 0x73A9, 0x0650,
+ 0x73AA, 0x73AA, 0x428D, 0x73AB, 0x73AB, 0x0653, 0x73AC, 0x73AC, 0x1A0B,
+ 0x73AD, 0x73AD, 0x1A07, 0x73B2, 0x73B2, 0x079B, 0x73B3, 0x73B3, 0x079E,
+ 0x73B4, 0x73B4, 0x1B85, 0x73B5, 0x73B5, 0x1B84, 0x73B6, 0x73B6, 0x1B83,
+ 0x73B7, 0x73B7, 0x0798, 0x73B8, 0x73B8, 0x1B8C, 0x73B9, 0x73B9, 0x1B82,
+ 0x73BB, 0x73BB, 0x079A, 0x73BC, 0x73BC, 0x1D3D, 0x73BE, 0x73BE, 0x1B89,
+ 0x73BF, 0x73BF, 0x1B87, 0x73C0, 0x73C0, 0x079D, 0x73C2, 0x73C2, 0x1B7F,
+ 0x73C3, 0x73C3, 0x1B8A, 0x73C5, 0x73C5, 0x1B81, 0x73C6, 0x73C6, 0x1B8B,
+ 0x73C7, 0x73C7, 0x1B88, 0x73C8, 0x73C8, 0x1B80, 0x73C9, 0x73C9, 0x4290,
+ 0x73CA, 0x73CA, 0x0799, 0x73CB, 0x73CB, 0x1B8D, 0x73CC, 0x73CC, 0x1B7E,
+ 0x73CD, 0x73CD, 0x079C, 0x73CE, 0x73CE, 0x411B, 0x73CF, 0x73CF, 0x428C,
+ 0x73D0, 0x73D0, 0x3B17, 0x73D2, 0x73D2, 0x1D42, 0x73D3, 0x73D3, 0x1D39,
+ 0x73D4, 0x73D4, 0x1D44, 0x73D5, 0x73D5, 0x4073, 0x73D6, 0x73D6, 0x1D3C,
+ 0x73D7, 0x73D8, 0x1D47, 0x73D9, 0x73D9, 0x1D3A, 0x73DA, 0x73DA, 0x1D46,
+ 0x73DB, 0x73DB, 0x1D43, 0x73DC, 0x73DC, 0x1D41, 0x73DD, 0x73DD, 0x1D45,
+ 0x73DE, 0x73DE, 0x0930, 0x73E0, 0x73E0, 0x092E, 0x73E1, 0x73E1, 0x46F0,
+ 0x73E2, 0x73E2, 0x3CA3, 0x73E3, 0x73E3, 0x1D3F, 0x73E4, 0x73E4, 0x42A5,
+ 0x73E5, 0x73E5, 0x1D3B, 0x73E6, 0x73E6, 0x3CBA, 0x73E7, 0x73E7, 0x1D3E,
+ 0x73E8, 0x73E8, 0x1D49, 0x73E9, 0x73E9, 0x1D40, 0x73EA, 0x73EA, 0x092F,
+ 0x73EB, 0x73EB, 0x1B86, 0x73ED, 0x73ED, 0x092B, 0x73EE, 0x73EE, 0x092D,
+ 0x73EF, 0x73EF, 0x4011, 0x73F3, 0x73F3, 0x3CAB, 0x73F4, 0x73F4, 0x1F9C,
+ 0x73F5, 0x73F5, 0x1F91, 0x73F6, 0x73F6, 0x1F8F, 0x73F7, 0x73F7, 0x429A,
+ 0x73F8, 0x73F8, 0x1F90, 0x73F9, 0x73F9, 0x3BF9, 0x73FA, 0x73FA, 0x1F97,
+ 0x73FB, 0x73FB, 0x3CAC, 0x73FC, 0x73FC, 0x1F98, 0x73FD, 0x73FD, 0x1F94,
+ 0x73FE, 0x73FE, 0x0B24, 0x73FF, 0x73FF, 0x1F99, 0x7400, 0x7400, 0x1F96,
+ 0x7401, 0x7401, 0x1F93, 0x7403, 0x7403, 0x0B22, 0x7404, 0x7404, 0x1F92,
+ 0x7405, 0x7405, 0x0B20, 0x7406, 0x7406, 0x0B23, 0x7407, 0x7407, 0x1F95,
+ 0x7408, 0x7408, 0x1F9D, 0x7409, 0x7409, 0x092C, 0x740A, 0x740A, 0x0B21,
+ 0x740B, 0x740B, 0x1F9B, 0x740C, 0x740C, 0x1F9A, 0x740D, 0x740D, 0x0B25,
+ 0x7411, 0x7411, 0x456C, 0x7412, 0x7412, 0x3BE6, 0x7414, 0x7414, 0x39F4,
+ 0x7415, 0x7415, 0x429B, 0x7416, 0x7416, 0x2215, 0x7417, 0x7417, 0x40AD,
+ 0x7419, 0x7419, 0x46F3, 0x741A, 0x741A, 0x2216, 0x741B, 0x741B, 0x0CE0,
+ 0x741C, 0x741C, 0x38DD, 0x741D, 0x741D, 0x221C, 0x741E, 0x741F, 0x46F4,
+ 0x7420, 0x7420, 0x221E, 0x7421, 0x7421, 0x2217, 0x7422, 0x7422, 0x0CDA,
+ 0x7423, 0x7423, 0x221B, 0x7424, 0x7424, 0x221A, 0x7425, 0x7425, 0x0CDB,
+ 0x7426, 0x7426, 0x0CE1, 0x7428, 0x7428, 0x0CE2, 0x7429, 0x7429, 0x221D,
+ 0x742A, 0x742A, 0x0CD8, 0x742B, 0x742B, 0x2214, 0x742C, 0x742C, 0x2212,
+ 0x742D, 0x742D, 0x2218, 0x742E, 0x742E, 0x2211, 0x742F, 0x742F, 0x0CDF,
+ 0x7430, 0x7430, 0x2213, 0x7431, 0x7431, 0x2219, 0x7432, 0x7432, 0x221F,
+ 0x7433, 0x7433, 0x0CD9, 0x7434, 0x7434, 0x0CDE, 0x7435, 0x7436, 0x0CDC,
+ 0x7437, 0x7437, 0x3AE1, 0x7438, 0x7438, 0x3B09, 0x7439, 0x7439, 0x429E,
+ 0x743A, 0x743A, 0x0CD7, 0x743C, 0x743C, 0x3ADF, 0x743F, 0x743F, 0x0E81,
+ 0x7440, 0x7440, 0x24A0, 0x7441, 0x7441, 0x0E80, 0x7442, 0x7442, 0x24A4,
+ 0x7443, 0x7443, 0x3A1A, 0x7444, 0x7444, 0x249A, 0x7445, 0x7445, 0x3BD7,
+ 0x7446, 0x7446, 0x24A5, 0x7447, 0x7447, 0x42A4, 0x7448, 0x7448, 0x3CB5,
+ 0x7449, 0x7449, 0x4291, 0x744A, 0x744B, 0x249B, 0x744D, 0x744D, 0x24A6,
+ 0x744E, 0x744E, 0x24A3, 0x744F, 0x7450, 0x24A1, 0x7451, 0x7451, 0x249E,
+ 0x7452, 0x7452, 0x249D, 0x7453, 0x7453, 0x4231, 0x7454, 0x7454, 0x24A7,
+ 0x7455, 0x7455, 0x0E7D, 0x7456, 0x7456, 0x39F5, 0x7457, 0x7457, 0x249F,
+ 0x7459, 0x7459, 0x0E82, 0x745A, 0x745A, 0x0E7C, 0x745B, 0x745C, 0x0E83,
+ 0x745D, 0x745D, 0x42C6, 0x745E, 0x745E, 0x0E7F, 0x745F, 0x745F, 0x0E7E,
+ 0x7460, 0x7460, 0x42A2, 0x7462, 0x7462, 0x272B, 0x7463, 0x7463, 0x102D,
+ 0x7464, 0x7464, 0x102C, 0x7465, 0x7465, 0x4101, 0x7467, 0x7467, 0x2730,
+ 0x7468, 0x7468, 0x3AEE, 0x7469, 0x7469, 0x11A6, 0x746A, 0x746A, 0x102E,
+ 0x746B, 0x746B, 0x3BE7, 0x746C, 0x746C, 0x42A8, 0x746D, 0x746D, 0x1030,
+ 0x746E, 0x746E, 0x2731, 0x746F, 0x746F, 0x0E7B, 0x7470, 0x7470, 0x102F,
+ 0x7471, 0x7471, 0x272D, 0x7472, 0x7472, 0x272F, 0x7473, 0x7473, 0x272C,
+ 0x7474, 0x7474, 0x42A9, 0x7475, 0x7475, 0x272E, 0x7476, 0x7476, 0x42A6,
+ 0x7479, 0x7479, 0x297C, 0x747A, 0x747A, 0x3AD1, 0x747C, 0x747C, 0x297B,
+ 0x747D, 0x747D, 0x2978, 0x747E, 0x747E, 0x11A9, 0x747F, 0x747F, 0x2BCB,
+ 0x7480, 0x7480, 0x11AA, 0x7481, 0x7481, 0x2977, 0x7482, 0x7482, 0x42AC,
+ 0x7483, 0x7483, 0x11A8, 0x7485, 0x7485, 0x2979, 0x7486, 0x7486, 0x2976,
+ 0x7487, 0x7487, 0x2973, 0x7488, 0x7488, 0x297A, 0x7489, 0x748A, 0x2974,
+ 0x748B, 0x748B, 0x11A7, 0x748C, 0x748C, 0x3A21, 0x748D, 0x748D, 0x469D,
+ 0x7490, 0x7490, 0x2DA8, 0x7492, 0x7492, 0x2BCF, 0x7494, 0x7494, 0x2BCE,
+ 0x7495, 0x7495, 0x2BD0, 0x7497, 0x7497, 0x2DA5, 0x7498, 0x7498, 0x12FC,
+ 0x7499, 0x7499, 0x39F3, 0x749A, 0x749A, 0x2BCC, 0x749B, 0x749B, 0x3B0A,
+ 0x749C, 0x749C, 0x12FA, 0x749E, 0x749E, 0x12FE, 0x749F, 0x749F, 0x12FD,
+ 0x74A0, 0x74A0, 0x2BCD, 0x74A1, 0x74A1, 0x2BD1, 0x74A3, 0x74A3, 0x12FB,
+ 0x74A4, 0x74A4, 0x4170, 0x74A5, 0x74A5, 0x2DAC, 0x74A6, 0x74A6, 0x1412,
+ 0x74A7, 0x74A7, 0x14F4, 0x74A8, 0x74A8, 0x1413, 0x74A9, 0x74A9, 0x1410,
+ 0x74AA, 0x74AA, 0x2DA9, 0x74AB, 0x74AB, 0x2DA7, 0x74AD, 0x74AD, 0x2DAA,
+ 0x74AF, 0x74AF, 0x2DAD, 0x74B0, 0x74B0, 0x1411, 0x74B1, 0x74B1, 0x2DAB,
+ 0x74B2, 0x74B2, 0x2DA6, 0x74B4, 0x74B4, 0x3CA5, 0x74B5, 0x74B5, 0x2F58,
+ 0x74B6, 0x74B6, 0x2F5B, 0x74B7, 0x74B7, 0x30C2, 0x74B8, 0x74B8, 0x2F56,
+ 0x74BA, 0x74BA, 0x31F9, 0x74BB, 0x74BB, 0x2F5C, 0x74BD, 0x74BD, 0x1597,
+ 0x74BE, 0x74BE, 0x2F5A, 0x74BF, 0x74BF, 0x14F5, 0x74C0, 0x74C0, 0x2F57,
+ 0x74C1, 0x74C1, 0x2F59, 0x74C2, 0x74C2, 0x2F5D, 0x74C3, 0x74C3, 0x30C3,
+ 0x74C5, 0x74C5, 0x30C1, 0x74C8, 0x74C8, 0x42B5, 0x74CA, 0x74CA, 0x1598,
+ 0x74CB, 0x74CB, 0x30C0, 0x74CC, 0x74CC, 0x3ADE, 0x74CF, 0x74CF, 0x1621,
+ 0x74D0, 0x74D0, 0x3A9B, 0x74D3, 0x74D3, 0x46FA, 0x74D4, 0x74D4, 0x167E,
+ 0x74D5, 0x74D5, 0x3392, 0x74D6, 0x74D6, 0x167D, 0x74D7, 0x74D7, 0x3394,
+ 0x74D8, 0x74D8, 0x3391, 0x74D9, 0x74D9, 0x3393, 0x74DA, 0x74DA, 0x16FE,
+ 0x74DB, 0x74DB, 0x348D, 0x74DC, 0x74DC, 0x0358, 0x74DD, 0x74DD, 0x1A0D,
+ 0x74DE, 0x74DF, 0x1D4A, 0x74E0, 0x74E0, 0x0B26, 0x74E1, 0x74E1, 0x24A8,
+ 0x74E2, 0x74E2, 0x12FF, 0x74E3, 0x74E3, 0x1599, 0x74E4, 0x74E4, 0x16CB,
+ 0x74E5, 0x74E5, 0x348E, 0x74E6, 0x74E6, 0x0359, 0x74E7, 0x74E7, 0x3FFE,
+ 0x74E8, 0x74E8, 0x1A0E, 0x74E9, 0x74E9, 0x0120, 0x74EC, 0x74EC, 0x1B8E,
+ 0x74EE, 0x74EE, 0x1B8F, 0x74F0, 0x74F0, 0x3FE6, 0x74F1, 0x74F1, 0x3F9B,
+ 0x74F2, 0x74F2, 0x3FDF, 0x74F4, 0x74F5, 0x1D4C, 0x74F6, 0x74F7, 0x0B27,
+ 0x74F8, 0x74F8, 0x3FF4, 0x74FB, 0x74FB, 0x2220, 0x74FD, 0x74FD, 0x24AB,
+ 0x74FE, 0x74FE, 0x24AA, 0x74FF, 0x74FF, 0x24A9, 0x7500, 0x7500, 0x2732,
+ 0x7502, 0x7503, 0x2733, 0x7504, 0x7504, 0x1031, 0x7505, 0x7505, 0x3FDE,
+ 0x7507, 0x7507, 0x297E, 0x7508, 0x7508, 0x297D, 0x750B, 0x750B, 0x2BD2,
+ 0x750C, 0x750D, 0x1300, 0x750E, 0x750E, 0x42B7, 0x750F, 0x750F, 0x2DB1,
+ 0x7510, 0x7512, 0x2DAE, 0x7513, 0x7513, 0x2F5F, 0x7514, 0x7514, 0x2F5E,
+ 0x7515, 0x7515, 0x14F6, 0x7516, 0x7516, 0x30C4, 0x7517, 0x7517, 0x32E3,
+ 0x7518, 0x7518, 0x035A, 0x7519, 0x7519, 0x4583, 0x751A, 0x751A, 0x079F,
+ 0x751C, 0x751C, 0x0B29, 0x751D, 0x751D, 0x24AC, 0x751E, 0x751E, 0x42B8,
+ 0x751F, 0x751F, 0x035B, 0x7521, 0x7521, 0x1D4E, 0x7522, 0x7522, 0x0B2A,
+ 0x7525, 0x7526, 0x0CE3, 0x7528, 0x7529, 0x035C, 0x752A, 0x752A, 0x180F,
+ 0x752B, 0x752B, 0x04F1, 0x752C, 0x752C, 0x04F0, 0x752D, 0x752D, 0x07A0,
+ 0x752E, 0x752E, 0x1B90, 0x752F, 0x752F, 0x2221, 0x7530, 0x7533, 0x035E,
+ 0x7534, 0x7534, 0x3E87, 0x7535, 0x7535, 0x455A, 0x7537, 0x7538, 0x04F2,
+ 0x7539, 0x7539, 0x18D3, 0x753A, 0x753A, 0x18D2, 0x753B, 0x753B, 0x3DFB,
+ 0x753D, 0x753D, 0x0655, 0x753E, 0x753E, 0x1A11, 0x753F, 0x7540, 0x1A0F,
+ 0x7542, 0x7542, 0x43CD, 0x7546, 0x7546, 0x3F40, 0x7547, 0x7548, 0x1B91,
+ 0x754A, 0x754A, 0x42BF, 0x754B, 0x754B, 0x07A4, 0x754C, 0x754C, 0x07A2,
+ 0x754D, 0x754D, 0x42BE, 0x754E, 0x754E, 0x07A3, 0x754F, 0x754F, 0x07A1,
+ 0x7551, 0x7551, 0x3CFE, 0x7553, 0x7553, 0x3FEB, 0x7554, 0x7554, 0x0931,
+ 0x7555, 0x7555, 0x3AEA, 0x7559, 0x7559, 0x0935, 0x755A, 0x755A, 0x0934,
+ 0x755B, 0x755B, 0x1D4F, 0x755C, 0x755C, 0x0933, 0x755D, 0x755D, 0x0932,
+ 0x755F, 0x755F, 0x1D50, 0x7560, 0x7560, 0x3D71, 0x7562, 0x7562, 0x0B2D,
+ 0x7563, 0x7563, 0x1F9F, 0x7564, 0x7564, 0x1F9E, 0x7565, 0x7566, 0x0B2B,
+ 0x7567, 0x7567, 0x42C0, 0x756A, 0x756A, 0x0CE6, 0x756B, 0x756B, 0x0CE5,
+ 0x756C, 0x756C, 0x2223, 0x756D, 0x756D, 0x46FD, 0x756E, 0x756E, 0x42C1,
+ 0x756F, 0x756F, 0x2222, 0x7570, 0x7570, 0x0B2E, 0x7572, 0x7572, 0x46FE,
+ 0x7576, 0x7576, 0x0E85, 0x7577, 0x7577, 0x24AE, 0x7578, 0x7578, 0x0E86,
+ 0x7579, 0x7579, 0x24AD, 0x757A, 0x757A, 0x3F4F, 0x757D, 0x757D, 0x2735,
+ 0x757E, 0x757E, 0x297F, 0x757F, 0x757F, 0x11AB, 0x7580, 0x7580, 0x2BD3,
+ 0x7583, 0x7583, 0x3AE5, 0x7584, 0x7584, 0x2DB2, 0x7586, 0x7586, 0x159B,
+ 0x7587, 0x7587, 0x159A, 0x758A, 0x758A, 0x16CC, 0x758B, 0x758B, 0x0362,
+ 0x758C, 0x758C, 0x1A12, 0x758D, 0x758D, 0x46FF, 0x758E, 0x758E, 0x42C5,
+ 0x758F, 0x758F, 0x0B2F, 0x7590, 0x7590, 0x2736, 0x7591, 0x7591, 0x1032,
+ 0x7592, 0x7592, 0x022E, 0x7594, 0x7595, 0x18D4, 0x7598, 0x7598, 0x1A13,
+ 0x7599, 0x759A, 0x0657, 0x759D, 0x759D, 0x0656, 0x759E, 0x759E, 0x42C7,
+ 0x75A2, 0x75A3, 0x07A8, 0x75A4, 0x75A5, 0x07A6, 0x75A7, 0x75A7, 0x1B93,
+ 0x75AA, 0x75AA, 0x1B94, 0x75AB, 0x75AB, 0x07A5, 0x75B0, 0x75B0, 0x1D51,
+ 0x75B1, 0x75B1, 0x3EAD, 0x75B2, 0x75B3, 0x0939, 0x75B4, 0x75B4, 0x42C8,
+ 0x75B5, 0x75B5, 0x0B32, 0x75B6, 0x75B6, 0x1D57, 0x75B8, 0x75B8, 0x093F,
+ 0x75B9, 0x75B9, 0x093D, 0x75BA, 0x75BA, 0x1D58, 0x75BB, 0x75BB, 0x1D53,
+ 0x75BC, 0x75BC, 0x093C, 0x75BD, 0x75BD, 0x093B, 0x75BE, 0x75BE, 0x0936,
+ 0x75BF, 0x75BF, 0x1D56, 0x75C0, 0x75C0, 0x1D55, 0x75C1, 0x75C1, 0x1D52,
+ 0x75C2, 0x75C2, 0x093E, 0x75C3, 0x75C3, 0x3F93, 0x75C4, 0x75C4, 0x1D54,
+ 0x75C5, 0x75C5, 0x0937, 0x75C7, 0x75C7, 0x0938, 0x75C8, 0x75C8, 0x4701,
+ 0x75CA, 0x75CA, 0x0B33, 0x75CB, 0x75CC, 0x1FA3, 0x75CD, 0x75CD, 0x0B34,
+ 0x75CE, 0x75CE, 0x1FA0, 0x75CF, 0x75CF, 0x1FA2, 0x75D0, 0x75D0, 0x1FA6,
+ 0x75D1, 0x75D1, 0x1FA5, 0x75D2, 0x75D2, 0x1FA1, 0x75D4, 0x75D5, 0x0B30,
+ 0x75D7, 0x75D7, 0x222B, 0x75D8, 0x75D8, 0x0CEB, 0x75D9, 0x75D9, 0x0CEA,
+ 0x75DA, 0x75DA, 0x2225, 0x75DB, 0x75DB, 0x0CE8, 0x75DC, 0x75DC, 0x43CE,
+ 0x75DD, 0x75DD, 0x2228, 0x75DE, 0x75DE, 0x0CEC, 0x75DF, 0x75DF, 0x2229,
+ 0x75E0, 0x75E0, 0x0CED, 0x75E1, 0x75E1, 0x2226, 0x75E2, 0x75E2, 0x0CE7,
+ 0x75E3, 0x75E3, 0x0CE9, 0x75E4, 0x75E4, 0x222A, 0x75E6, 0x75E6, 0x2227,
+ 0x75E7, 0x75E7, 0x2224, 0x75ED, 0x75ED, 0x24BB, 0x75EF, 0x75EF, 0x24B0,
+ 0x75F0, 0x75F0, 0x0E88, 0x75F1, 0x75F1, 0x0E8B, 0x75F2, 0x75F2, 0x0E8A,
+ 0x75F3, 0x75F3, 0x0E8F, 0x75F4, 0x75F4, 0x0E8E, 0x75F5, 0x75F5, 0x24BC,
+ 0x75F6, 0x75F6, 0x24BA, 0x75F7, 0x75F7, 0x24B3, 0x75F8, 0x75F8, 0x24B7,
+ 0x75F9, 0x75F9, 0x24B6, 0x75FA, 0x75FA, 0x0E8C, 0x75FB, 0x75FB, 0x24B9,
+ 0x75FC, 0x75FC, 0x24B5, 0x75FD, 0x75FD, 0x24BD, 0x75FE, 0x75FE, 0x24B4,
+ 0x75FF, 0x75FF, 0x0E8D, 0x7600, 0x7600, 0x0E87, 0x7601, 0x7601, 0x0E89,
+ 0x7602, 0x7602, 0x42C9, 0x7603, 0x7603, 0x24B2, 0x7607, 0x7607, 0x3F8F,
+ 0x7608, 0x7608, 0x2738, 0x7609, 0x7609, 0x1036, 0x760A, 0x760A, 0x273C,
+ 0x760B, 0x760B, 0x1035, 0x760C, 0x760C, 0x2739, 0x760D, 0x760D, 0x1034,
+ 0x760F, 0x760F, 0x24B1, 0x7610, 0x7610, 0x24B8, 0x7611, 0x7611, 0x273B,
+ 0x7613, 0x7613, 0x1037, 0x7614, 0x7614, 0x273D, 0x7615, 0x7615, 0x273A,
+ 0x7616, 0x7616, 0x2737, 0x7619, 0x7619, 0x2982, 0x761A, 0x761A, 0x2986,
+ 0x761B, 0x761B, 0x2988, 0x761C, 0x761C, 0x2984, 0x761D, 0x761D, 0x2983,
+ 0x761E, 0x761E, 0x2981, 0x761F, 0x761F, 0x11AE, 0x7620, 0x7620, 0x11AC,
+ 0x7621, 0x7622, 0x11B1, 0x7623, 0x7623, 0x2985, 0x7624, 0x7624, 0x11AF,
+ 0x7625, 0x7625, 0x2980, 0x7626, 0x7626, 0x11B0, 0x7627, 0x7627, 0x1033,
+ 0x7628, 0x7628, 0x2987, 0x7629, 0x7629, 0x11AD, 0x762C, 0x762C, 0x42CA,
+ 0x762D, 0x762D, 0x2BD5, 0x762F, 0x762F, 0x2BD4, 0x7630, 0x7630, 0x2BDC,
+ 0x7631, 0x7631, 0x2BD6, 0x7632, 0x7632, 0x2BDB, 0x7633, 0x7633, 0x2BD8,
+ 0x7634, 0x7634, 0x1302, 0x7635, 0x7635, 0x2BDA, 0x7638, 0x7638, 0x1303,
+ 0x763A, 0x763A, 0x1304, 0x763B, 0x763B, 0x3E70, 0x763C, 0x763C, 0x2BD9,
+ 0x763D, 0x763D, 0x2BD7, 0x7640, 0x7640, 0x3EE6, 0x7642, 0x7642, 0x1415,
+ 0x7643, 0x7643, 0x2DB3, 0x7646, 0x7646, 0x1414, 0x7647, 0x7647, 0x2DB6,
+ 0x7648, 0x7649, 0x2DB4, 0x764C, 0x764C, 0x1416, 0x764D, 0x764D, 0x4702,
+ 0x764E, 0x764E, 0x3E72, 0x764F, 0x764F, 0x42CC, 0x7650, 0x7650, 0x2F63,
+ 0x7651, 0x7651, 0x42CB, 0x7652, 0x7652, 0x14F9, 0x7653, 0x7653, 0x2F64,
+ 0x7654, 0x7654, 0x3EF0, 0x7656, 0x7656, 0x14F7, 0x7657, 0x7657, 0x2F65,
+ 0x7658, 0x7658, 0x14F8, 0x7659, 0x7659, 0x2F62, 0x765A, 0x765A, 0x2F66,
+ 0x765C, 0x765C, 0x2F60, 0x765F, 0x765F, 0x159C, 0x7660, 0x7660, 0x30C5,
+ 0x7661, 0x7661, 0x159D, 0x7662, 0x7662, 0x1622, 0x7664, 0x7664, 0x2F61,
+ 0x7665, 0x7665, 0x1623, 0x7666, 0x7666, 0x3EAA, 0x7667, 0x7667, 0x3FA9,
+ 0x7669, 0x7669, 0x167F, 0x766A, 0x766A, 0x32E4, 0x766C, 0x766C, 0x16CE,
+ 0x766D, 0x766D, 0x3395, 0x766E, 0x766E, 0x16CD, 0x766F, 0x766F, 0x42CD,
+ 0x7670, 0x7670, 0x3428, 0x7671, 0x7672, 0x1723, 0x7673, 0x7673, 0x3AEB,
+ 0x7674, 0x7674, 0x4703, 0x7675, 0x7675, 0x3543, 0x7676, 0x7676, 0x022F,
+ 0x7678, 0x7678, 0x07AA, 0x7679, 0x7679, 0x1B95, 0x767A, 0x767A, 0x4705,
+ 0x767B, 0x767C, 0x0CEE, 0x767D, 0x767D, 0x0363, 0x767E, 0x767E, 0x03F5,
+ 0x767F, 0x767F, 0x1810, 0x7680, 0x7680, 0x43D3, 0x7681, 0x7681, 0x18D6,
+ 0x7682, 0x7682, 0x04F4, 0x7684, 0x7684, 0x0659, 0x7686, 0x7688, 0x07AB,
+ 0x7689, 0x7689, 0x1FA8, 0x768A, 0x768A, 0x1D59, 0x768B, 0x768B, 0x0940,
+ 0x768C, 0x768C, 0x43D4, 0x768E, 0x768E, 0x0B35, 0x768F, 0x768F, 0x1FA7,
+ 0x7690, 0x7690, 0x42D0, 0x7692, 0x7692, 0x222D, 0x7693, 0x7693, 0x0CF1,
+ 0x7695, 0x7695, 0x222C, 0x7696, 0x7696, 0x0CF0, 0x7699, 0x7699, 0x24BE,
+ 0x769A, 0x769A, 0x11B3, 0x769B, 0x769B, 0x298C, 0x769C, 0x769E, 0x2989,
+ 0x76A1, 0x76A1, 0x42D5, 0x76A4, 0x76A4, 0x2DB7, 0x76A5, 0x76A5, 0x42D6,
+ 0x76A6, 0x76A6, 0x2F67, 0x76AA, 0x76AA, 0x31FB, 0x76AB, 0x76AB, 0x31FA,
+ 0x76AD, 0x76AD, 0x3396, 0x76AE, 0x76AE, 0x0364, 0x76AF, 0x76AF, 0x1A14,
+ 0x76B0, 0x76B0, 0x0941, 0x76B4, 0x76B4, 0x0CF2, 0x76B5, 0x76B5, 0x24BF,
+ 0x76B7, 0x76B7, 0x42D7, 0x76B8, 0x76B8, 0x273E, 0x76BA, 0x76BA, 0x11B4,
+ 0x76BB, 0x76BB, 0x2BDD, 0x76BD, 0x76BD, 0x2F68, 0x76BE, 0x76BE, 0x31FC,
+ 0x76BF, 0x76BF, 0x0365, 0x76C2, 0x76C2, 0x065A, 0x76C3, 0x76C3, 0x07B0,
+ 0x76C4, 0x76C4, 0x1B96, 0x76C5, 0x76C5, 0x07B1, 0x76C6, 0x76C6, 0x07AF,
+ 0x76C8, 0x76C8, 0x07AE, 0x76C9, 0x76C9, 0x1D5A, 0x76CA, 0x76CA, 0x0942,
+ 0x76CC, 0x76CC, 0x42D8, 0x76CD, 0x76CE, 0x0943, 0x76D2, 0x76D2, 0x0B37,
+ 0x76D3, 0x76D3, 0x1FA9, 0x76D4, 0x76D4, 0x0B36, 0x76D6, 0x76D6, 0x3F55,
+ 0x76DA, 0x76DA, 0x222E, 0x76DB, 0x76DB, 0x0B38, 0x76DC, 0x76DC, 0x0CF3,
+ 0x76DD, 0x76DD, 0x24C0, 0x76DE, 0x76DF, 0x0E90, 0x76E1, 0x76E1, 0x1038,
+ 0x76E3, 0x76E3, 0x1039, 0x76E4, 0x76E4, 0x11B5, 0x76E5, 0x76E5, 0x1306,
+ 0x76E6, 0x76E6, 0x2BDE, 0x76E7, 0x76E7, 0x1305, 0x76E9, 0x76E9, 0x2DB8,
+ 0x76EA, 0x76EA, 0x1417, 0x76EC, 0x76EC, 0x2F69, 0x76ED, 0x76ED, 0x31FD,
+ 0x76EE, 0x76EE, 0x0366, 0x76EF, 0x76EF, 0x04F5, 0x76F0, 0x76F0, 0x1A17,
+ 0x76F1, 0x76F1, 0x1A16, 0x76F2, 0x76F2, 0x065B, 0x76F3, 0x76F3, 0x1A15,
+ 0x76F4, 0x76F4, 0x065C, 0x76F5, 0x76F5, 0x1A18, 0x76F7, 0x76F7, 0x1B9C,
+ 0x76F8, 0x76F8, 0x07B4, 0x76F9, 0x76F9, 0x07B3, 0x76FA, 0x76FA, 0x1B9E,
+ 0x76FB, 0x76FB, 0x1B9D, 0x76FC, 0x76FC, 0x07B8, 0x76FE, 0x76FE, 0x07B7,
+ 0x7701, 0x7701, 0x07B2, 0x7703, 0x7705, 0x1B98, 0x7707, 0x7707, 0x07B9,
+ 0x7708, 0x7708, 0x1B97, 0x7709, 0x7709, 0x07B5, 0x770A, 0x770A, 0x1B9B,
+ 0x770B, 0x770B, 0x07B6, 0x770C, 0x770C, 0x3D62, 0x770E, 0x770F, 0x3B02,
+ 0x7710, 0x7710, 0x1D5D, 0x7711, 0x7711, 0x1D61, 0x7712, 0x7712, 0x1D5F,
+ 0x7713, 0x7713, 0x1D5E, 0x7715, 0x7715, 0x1D62, 0x7719, 0x771A, 0x1D63,
+ 0x771B, 0x771B, 0x1D5C, 0x771D, 0x771D, 0x1D5B, 0x771E, 0x771E, 0x42DE,
+ 0x771F, 0x7720, 0x0946, 0x7722, 0x7722, 0x1D65, 0x7723, 0x7723, 0x1D60,
+ 0x7724, 0x7724, 0x3FE8, 0x7725, 0x7725, 0x1FB2, 0x7726, 0x7726, 0x42DF,
+ 0x7727, 0x7727, 0x1D66, 0x7728, 0x7728, 0x0948, 0x7729, 0x7729, 0x0945,
+ 0x772B, 0x772B, 0x3FF3, 0x772D, 0x772D, 0x1FAC, 0x772F, 0x772F, 0x1FAB,
+ 0x7731, 0x7732, 0x1FAD, 0x7733, 0x7733, 0x1FB0, 0x7734, 0x7734, 0x1FAF,
+ 0x7735, 0x7735, 0x1FB4, 0x7736, 0x7736, 0x0B3C, 0x7737, 0x7737, 0x0B39,
+ 0x7738, 0x7738, 0x0B3D, 0x7739, 0x7739, 0x1FAA, 0x773A, 0x773A, 0x0B3E,
+ 0x773B, 0x773B, 0x1FB3, 0x773C, 0x773C, 0x0B3B, 0x773D, 0x773D, 0x1FB1,
+ 0x773E, 0x773E, 0x0B3A, 0x7740, 0x7740, 0x42E0, 0x7743, 0x7743, 0x470A,
+ 0x7744, 0x7744, 0x2231, 0x7745, 0x7745, 0x2233, 0x7746, 0x7747, 0x222F,
+ 0x774A, 0x774A, 0x2234, 0x774B, 0x774C, 0x2236, 0x774D, 0x774D, 0x2232,
+ 0x774E, 0x774E, 0x2235, 0x774F, 0x774F, 0x0CF4, 0x7752, 0x7752, 0x24C4,
+ 0x7754, 0x7754, 0x24C9, 0x7755, 0x7755, 0x24C1, 0x7756, 0x7756, 0x24C5,
+ 0x7758, 0x7758, 0x42E3, 0x7759, 0x7759, 0x24CA, 0x775A, 0x775A, 0x24C6,
+ 0x775B, 0x775B, 0x0E92, 0x775C, 0x775C, 0x0E9A, 0x775E, 0x775E, 0x0E95,
+ 0x775F, 0x7760, 0x24C2, 0x7761, 0x7761, 0x103D, 0x7762, 0x7762, 0x0E9D,
+ 0x7763, 0x7763, 0x0E96, 0x7765, 0x7765, 0x0E9B, 0x7766, 0x7766, 0x0E94,
+ 0x7767, 0x7767, 0x24C8, 0x7768, 0x7768, 0x0E9C, 0x7769, 0x7769, 0x24C7,
+ 0x776A, 0x776A, 0x0E98, 0x776B, 0x776B, 0x0E93, 0x776C, 0x776C, 0x0E99,
+ 0x776D, 0x776D, 0x24CB, 0x776E, 0x776E, 0x2743, 0x776F, 0x776F, 0x2745,
+ 0x7772, 0x7772, 0x396B, 0x7777, 0x7777, 0x46A9, 0x7778, 0x7778, 0x3B00,
+ 0x7779, 0x7779, 0x0E97, 0x777A, 0x777A, 0x4317, 0x777B, 0x777B, 0x3B04,
+ 0x777C, 0x777C, 0x2740, 0x777D, 0x777D, 0x103B, 0x777E, 0x777E, 0x2746,
+ 0x777F, 0x777F, 0x103C, 0x7780, 0x7780, 0x2744, 0x7781, 0x7781, 0x273F,
+ 0x7782, 0x7782, 0x2742, 0x7783, 0x7783, 0x2747, 0x7784, 0x7784, 0x103A,
+ 0x7785, 0x7785, 0x2741, 0x7787, 0x7787, 0x11B7, 0x7788, 0x7788, 0x2990,
+ 0x7789, 0x7789, 0x298F, 0x778B, 0x778B, 0x11BA, 0x778C, 0x778C, 0x11B8,
+ 0x778D, 0x778D, 0x298D, 0x778E, 0x778E, 0x11B6, 0x778F, 0x778F, 0x298E,
+ 0x7791, 0x7791, 0x11B9, 0x7793, 0x7793, 0x382D, 0x7795, 0x7795, 0x2BE6,
+ 0x7797, 0x7797, 0x2BE8, 0x7798, 0x7798, 0x470E, 0x7799, 0x7799, 0x2BE7,
+ 0x779A, 0x779A, 0x2BDF, 0x779B, 0x779B, 0x2BE3, 0x779C, 0x779C, 0x2BE2,
+ 0x779D, 0x779D, 0x2BE0, 0x779E, 0x779F, 0x1308, 0x77A0, 0x77A0, 0x1307,
+ 0x77A1, 0x77A1, 0x2BE1, 0x77A2, 0x77A3, 0x2BE4, 0x77A5, 0x77A5, 0x130A,
+ 0x77A7, 0x77A7, 0x141C, 0x77A8, 0x77A8, 0x2DC0, 0x77AA, 0x77AA, 0x1419,
+ 0x77AB, 0x77AB, 0x2DBA, 0x77AC, 0x77AC, 0x141B, 0x77AD, 0x77AD, 0x141D,
+ 0x77AF, 0x77AF, 0x42E5, 0x77B0, 0x77B0, 0x141A, 0x77B1, 0x77B1, 0x2DBF,
+ 0x77B2, 0x77B2, 0x2DBB, 0x77B3, 0x77B3, 0x1418, 0x77B4, 0x77B4, 0x2DBE,
+ 0x77B5, 0x77B5, 0x2DB9, 0x77B6, 0x77B6, 0x2DBD, 0x77B7, 0x77B7, 0x2DBC,
+ 0x77B9, 0x77B9, 0x3E73, 0x77BA, 0x77BA, 0x2F6B, 0x77BB, 0x77BC, 0x14FC,
+ 0x77BD, 0x77BD, 0x14FA, 0x77BE, 0x77BE, 0x4711, 0x77BF, 0x77BF, 0x14FB,
+ 0x77C2, 0x77C2, 0x2F6A, 0x77C3, 0x77C3, 0x3BB1, 0x77C4, 0x77C4, 0x30C8,
+ 0x77C5, 0x77C5, 0x41C1, 0x77C7, 0x77C7, 0x159E, 0x77C9, 0x77CA, 0x30C6,
+ 0x77CB, 0x77CB, 0x4712, 0x77CC, 0x77CC, 0x31FE, 0x77CD, 0x77CD, 0x3201,
+ 0x77CE, 0x77CF, 0x31FF, 0x77D0, 0x77D0, 0x32E5, 0x77D3, 0x77D3, 0x1680,
+ 0x77D4, 0x77D4, 0x3429, 0x77D5, 0x77D5, 0x348F, 0x77D7, 0x77D7, 0x1725,
+ 0x77D8, 0x77D9, 0x34D3, 0x77DA, 0x77DA, 0x1753, 0x77DB, 0x77DB, 0x0367,
+ 0x77DC, 0x77DC, 0x07BA, 0x77DE, 0x77DE, 0x2238, 0x77E0, 0x77E0, 0x24CC,
+ 0x77E2, 0x77E2, 0x0368, 0x77E3, 0x77E3, 0x04F6, 0x77E5, 0x77E5, 0x065D,
+ 0x77E6, 0x77E6, 0x4081, 0x77E7, 0x77E8, 0x1B9F, 0x77E9, 0x77E9, 0x0949,
+ 0x77EC, 0x77EC, 0x2239, 0x77ED, 0x77ED, 0x0CF5, 0x77EE, 0x77EE, 0x0E9E,
+ 0x77EF, 0x77EF, 0x141E, 0x77F0, 0x77F0, 0x2DC1, 0x77F1, 0x77F1, 0x30C9,
+ 0x77F2, 0x77F2, 0x3202, 0x77F3, 0x77F3, 0x0369, 0x77F4, 0x77F4, 0x42E9,
+ 0x77F7, 0x77F7, 0x1A1E, 0x77F8, 0x77F8, 0x1A19, 0x77F9, 0x77F9, 0x1A1B,
+ 0x77FA, 0x77FA, 0x1A1D, 0x77FB, 0x77FB, 0x1A1C, 0x77FC, 0x77FC, 0x1A1A,
+ 0x77FD, 0x77FD, 0x065E, 0x77FE, 0x77FE, 0x3FD5, 0x7802, 0x7802, 0x07BB,
+ 0x7803, 0x7803, 0x1BA9, 0x7805, 0x7805, 0x1BA4, 0x7806, 0x7806, 0x1BA1,
+ 0x7808, 0x7808, 0x3E46, 0x7809, 0x7809, 0x1BA8, 0x780C, 0x780D, 0x07BD,
+ 0x780E, 0x780E, 0x1BA7, 0x780F, 0x780F, 0x1BA6, 0x7810, 0x7810, 0x1BA5,
+ 0x7811, 0x7812, 0x1BA2, 0x7813, 0x7813, 0x1BAA, 0x7814, 0x7814, 0x07BC,
+ 0x7818, 0x7818, 0x4713, 0x781C, 0x781C, 0x4714, 0x781D, 0x781D, 0x094D,
+ 0x781E, 0x781E, 0x3B13, 0x781F, 0x781F, 0x0953, 0x7820, 0x7820, 0x0952,
+ 0x7821, 0x7821, 0x1D6F, 0x7822, 0x7822, 0x1D69, 0x7823, 0x7823, 0x1D67,
+ 0x7825, 0x7825, 0x0950, 0x7826, 0x7826, 0x1FBB, 0x7827, 0x7827, 0x094B,
+ 0x7828, 0x7828, 0x1D6C, 0x7829, 0x7829, 0x1D70, 0x782A, 0x782A, 0x1D72,
+ 0x782B, 0x782B, 0x1D6E, 0x782C, 0x782C, 0x1D68, 0x782D, 0x782D, 0x0951,
+ 0x782E, 0x782E, 0x1D6D, 0x782F, 0x782F, 0x1D6B, 0x7830, 0x7830, 0x094A,
+ 0x7831, 0x7831, 0x1D73, 0x7832, 0x7832, 0x0954, 0x7833, 0x7833, 0x1D71,
+ 0x7834, 0x7834, 0x094E, 0x7835, 0x7835, 0x1D6A, 0x7837, 0x7837, 0x094F,
+ 0x7838, 0x7838, 0x094C, 0x7839, 0x7839, 0x43D6, 0x783C, 0x783C, 0x401A,
+ 0x783D, 0x783D, 0x3C6A, 0x7842, 0x7842, 0x3AC4, 0x7843, 0x7843, 0x0B40,
+ 0x7844, 0x7844, 0x3C2B, 0x7845, 0x7845, 0x1FBC, 0x7847, 0x7847, 0x4715,
+ 0x7848, 0x7848, 0x1FB5, 0x7849, 0x7849, 0x1FB7, 0x784A, 0x784A, 0x1FB9,
+ 0x784B, 0x784B, 0x3C6D, 0x784C, 0x784C, 0x1FBA, 0x784D, 0x784D, 0x1FB8,
+ 0x784E, 0x784E, 0x0B41, 0x7850, 0x7850, 0x1FBD, 0x7851, 0x7851, 0x4716,
+ 0x7852, 0x7852, 0x1FB6, 0x7853, 0x7853, 0x3F95, 0x7854, 0x7854, 0x3C6B,
+ 0x785C, 0x785C, 0x223D, 0x785D, 0x785D, 0x0CF6, 0x785E, 0x785E, 0x2245,
+ 0x7860, 0x7860, 0x223A, 0x7862, 0x7862, 0x2246, 0x7864, 0x7865, 0x223B,
+ 0x7866, 0x7866, 0x4717, 0x7868, 0x7868, 0x2244, 0x7869, 0x7869, 0x2243,
+ 0x786A, 0x786A, 0x2240, 0x786B, 0x786B, 0x0B3F, 0x786C, 0x786C, 0x0CF7,
+ 0x786D, 0x786D, 0x223E, 0x786E, 0x786E, 0x2241, 0x786F, 0x786F, 0x0CF8,
+ 0x7870, 0x7870, 0x2242, 0x7871, 0x7871, 0x223F, 0x7879, 0x7879, 0x24D7,
+ 0x787A, 0x787A, 0x3EE9, 0x787B, 0x787B, 0x24DB, 0x787C, 0x787C, 0x0EA5,
+ 0x787E, 0x787E, 0x274D, 0x787F, 0x787F, 0x0EA8, 0x7880, 0x7880, 0x24D9,
+ 0x7881, 0x7881, 0x36E8, 0x7883, 0x7883, 0x24D6, 0x7884, 0x7884, 0x24D1,
+ 0x7885, 0x7886, 0x24D3, 0x7887, 0x7887, 0x24CD, 0x7888, 0x7888, 0x3B15,
+ 0x7889, 0x7889, 0x0EA4, 0x788C, 0x788C, 0x0EA3, 0x788D, 0x788D, 0x3B14,
+ 0x788E, 0x788E, 0x0E9F, 0x788F, 0x788F, 0x24D0, 0x7891, 0x7891, 0x0EA6,
+ 0x7893, 0x7893, 0x0EA7, 0x7894, 0x7894, 0x24CF, 0x7895, 0x7895, 0x24D2,
+ 0x7896, 0x7896, 0x24DA, 0x7897, 0x7898, 0x0EA1, 0x7899, 0x7899, 0x24D8,
+ 0x789A, 0x789A, 0x24CE, 0x789E, 0x789E, 0x274F, 0x789F, 0x789F, 0x103F,
+ 0x78A0, 0x78A0, 0x2751, 0x78A1, 0x78A1, 0x24D5, 0x78A2, 0x78A2, 0x2753,
+ 0x78A3, 0x78A3, 0x1043, 0x78A4, 0x78A4, 0x2754, 0x78A5, 0x78A5, 0x2750,
+ 0x78A7, 0x78A7, 0x1040, 0x78A8, 0x78A8, 0x274C, 0x78A9, 0x78A9, 0x1042,
+ 0x78AA, 0x78AA, 0x2749, 0x78AB, 0x78AB, 0x274E, 0x78AC, 0x78AC, 0x2752,
+ 0x78AD, 0x78AD, 0x274B, 0x78AF, 0x78AF, 0x42EC, 0x78B0, 0x78B0, 0x0EA0,
+ 0x78B1, 0x78B1, 0x42F4, 0x78B2, 0x78B2, 0x2748, 0x78B3, 0x78B3, 0x1041,
+ 0x78B4, 0x78B4, 0x274A, 0x78B6, 0x78B6, 0x3C6C, 0x78B8, 0x78B8, 0x4571,
+ 0x78B9, 0x78B9, 0x3C63, 0x78BA, 0x78BA, 0x11BD, 0x78BB, 0x78BB, 0x2992,
+ 0x78BC, 0x78BC, 0x11C1, 0x78BE, 0x78BE, 0x11BF, 0x78C1, 0x78C1, 0x103E,
+ 0x78C3, 0x78C4, 0x2999, 0x78C5, 0x78C5, 0x11BC, 0x78C7, 0x78C7, 0x42ED,
+ 0x78C8, 0x78C8, 0x2998, 0x78C9, 0x78C9, 0x299B, 0x78CA, 0x78CA, 0x11BE,
+ 0x78CB, 0x78CB, 0x11BB, 0x78CC, 0x78CC, 0x2994, 0x78CD, 0x78CD, 0x2991,
+ 0x78CE, 0x78CE, 0x2996, 0x78CF, 0x78CF, 0x2993, 0x78D0, 0x78D0, 0x11C2,
+ 0x78D1, 0x78D1, 0x2995, 0x78D2, 0x78D2, 0x3B16, 0x78D3, 0x78D3, 0x42EE,
+ 0x78D4, 0x78D4, 0x2997, 0x78D5, 0x78D5, 0x11C0, 0x78D7, 0x78D7, 0x42F2,
+ 0x78D8, 0x78D8, 0x3F8C, 0x78DA, 0x78DA, 0x130C, 0x78DB, 0x78DB, 0x2BEF,
+ 0x78DD, 0x78DD, 0x2BE9, 0x78DE, 0x78DE, 0x2BED, 0x78DF, 0x78E0, 0x2BF3,
+ 0x78E1, 0x78E2, 0x2BF0, 0x78E3, 0x78E3, 0x2BEE, 0x78E5, 0x78E5, 0x2BEB,
+ 0x78E7, 0x78E7, 0x130E, 0x78E8, 0x78E8, 0x130B, 0x78E9, 0x78E9, 0x2BEA,
+ 0x78EA, 0x78EA, 0x2BEC, 0x78EC, 0x78EC, 0x130D, 0x78ED, 0x78ED, 0x2BF2,
+ 0x78EE, 0x78EE, 0x3A81, 0x78EF, 0x78EF, 0x1422, 0x78F0, 0x78F0, 0x3B3A,
+ 0x78F1, 0x78F1, 0x40BE, 0x78F2, 0x78F2, 0x2DC8, 0x78F3, 0x78F3, 0x2DC2,
+ 0x78F4, 0x78F4, 0x1421, 0x78F5, 0x78F5, 0x38B3, 0x78F7, 0x78F7, 0x141F,
+ 0x78F9, 0x78F9, 0x2DCA, 0x78FA, 0x78FA, 0x1420, 0x78FB, 0x78FC, 0x2DC5,
+ 0x78FD, 0x78FD, 0x2DC3, 0x78FE, 0x78FE, 0x2DCB, 0x78FF, 0x78FF, 0x2DC7,
+ 0x7901, 0x7901, 0x1423, 0x7902, 0x7902, 0x2DC4, 0x7904, 0x7904, 0x2DCC,
+ 0x7905, 0x7905, 0x2DC9, 0x7906, 0x7906, 0x3FCF, 0x7909, 0x7909, 0x2F6F,
+ 0x790C, 0x790C, 0x2F6C, 0x790E, 0x790E, 0x14FE, 0x7910, 0x7910, 0x2F70,
+ 0x7911, 0x7911, 0x2F72, 0x7912, 0x7912, 0x2F71, 0x7913, 0x7914, 0x2F6D,
+ 0x7917, 0x7917, 0x30CE, 0x7919, 0x7919, 0x159F, 0x791B, 0x791B, 0x30CB,
+ 0x791C, 0x791C, 0x30CD, 0x791D, 0x791D, 0x30CA, 0x791E, 0x791E, 0x30CF,
+ 0x7921, 0x7921, 0x30CC, 0x7923, 0x7923, 0x3204, 0x7924, 0x7924, 0x3207,
+ 0x7925, 0x7925, 0x3203, 0x7926, 0x7926, 0x1624, 0x7927, 0x7928, 0x3205,
+ 0x7929, 0x7929, 0x3208, 0x792A, 0x792A, 0x1625, 0x792B, 0x792B, 0x1627,
+ 0x792C, 0x792C, 0x1626, 0x792D, 0x792D, 0x32E6, 0x792E, 0x792E, 0x42F0,
+ 0x792F, 0x792F, 0x32E8, 0x7931, 0x7931, 0x32E7, 0x7932, 0x7932, 0x471B,
+ 0x7933, 0x7933, 0x471A, 0x7934, 0x7934, 0x42F3, 0x7935, 0x7935, 0x3397,
+ 0x7936, 0x7936, 0x3783, 0x7938, 0x7938, 0x3490, 0x7939, 0x7939, 0x34D5,
+ 0x793A, 0x793A, 0x036A, 0x793B, 0x793B, 0x44F7, 0x793C, 0x793C, 0x4300,
+ 0x793D, 0x793D, 0x18D7, 0x793E, 0x793E, 0x065F, 0x793F, 0x793F, 0x1A20,
+ 0x7940, 0x7941, 0x0660, 0x7942, 0x7942, 0x1A1F, 0x7944, 0x7944, 0x1BAF,
+ 0x7945, 0x7945, 0x1BAE, 0x7946, 0x7946, 0x07BF, 0x7947, 0x7947, 0x07C2,
+ 0x7948, 0x7948, 0x07C1, 0x7949, 0x7949, 0x07C0, 0x794A, 0x794A, 0x1BAB,
+ 0x794B, 0x794B, 0x1BAD, 0x794C, 0x794C, 0x1BAC, 0x794F, 0x794F, 0x1D76,
+ 0x7950, 0x7950, 0x0956, 0x7951, 0x7951, 0x1D7A, 0x7952, 0x7952, 0x1D79,
+ 0x7953, 0x7953, 0x1D78, 0x7954, 0x7954, 0x1D74, 0x7955, 0x7955, 0x0955,
+ 0x7956, 0x7956, 0x0959, 0x7957, 0x7957, 0x095C, 0x7958, 0x7958, 0x37E5,
+ 0x7959, 0x7959, 0x3B18, 0x795A, 0x795A, 0x095D, 0x795B, 0x795B, 0x1D75,
+ 0x795C, 0x795C, 0x1D77, 0x795D, 0x795D, 0x095B, 0x795E, 0x795E, 0x095A,
+ 0x795F, 0x795F, 0x0958, 0x7960, 0x7960, 0x0957, 0x7961, 0x7961, 0x1FC4,
+ 0x7962, 0x7962, 0x3E7D, 0x7963, 0x7963, 0x1FC2, 0x7964, 0x7964, 0x1FBE,
+ 0x7965, 0x7965, 0x0B42, 0x7967, 0x7967, 0x1FBF, 0x7968, 0x7968, 0x0B43,
+ 0x7969, 0x796A, 0x1FC0, 0x796B, 0x796B, 0x1FC3, 0x796D, 0x796D, 0x0B44,
+ 0x7970, 0x7970, 0x224A, 0x7971, 0x7971, 0x4168, 0x7972, 0x7972, 0x2249,
+ 0x7973, 0x7973, 0x2248, 0x7974, 0x7974, 0x2247, 0x7979, 0x7979, 0x24DF,
+ 0x797A, 0x797A, 0x0EA9, 0x797C, 0x797C, 0x24DC, 0x797D, 0x797D, 0x24DE,
+ 0x797E, 0x797E, 0x3E26, 0x797F, 0x797F, 0x0EAA, 0x7980, 0x7980, 0x42FC,
+ 0x7981, 0x7981, 0x0EAB, 0x7982, 0x7982, 0x24DD, 0x7983, 0x7983, 0x3DF6,
+ 0x7986, 0x7986, 0x42F9, 0x7987, 0x7987, 0x4588, 0x7988, 0x7988, 0x275D,
+ 0x798A, 0x798B, 0x2756, 0x798D, 0x798D, 0x1046, 0x798E, 0x798F, 0x1044,
+ 0x7990, 0x7990, 0x275F, 0x7991, 0x7991, 0x471D, 0x7992, 0x7992, 0x275E,
+ 0x7993, 0x7993, 0x275B, 0x7994, 0x7994, 0x275A, 0x7995, 0x7995, 0x2759,
+ 0x7996, 0x7996, 0x2758, 0x7997, 0x7997, 0x275C, 0x7998, 0x7998, 0x2755,
+ 0x7999, 0x7999, 0x43FC, 0x799A, 0x799A, 0x299C, 0x799B, 0x799B, 0x29A1,
+ 0x799C, 0x799C, 0x299F, 0x799D, 0x799D, 0x42FE, 0x799F, 0x799F, 0x395E,
+ 0x79A0, 0x79A0, 0x299E, 0x79A1, 0x79A1, 0x299D, 0x79A2, 0x79A2, 0x29A0,
+ 0x79A4, 0x79A4, 0x2BF5, 0x79A5, 0x79A5, 0x3B1E, 0x79A6, 0x79A6, 0x130F,
+ 0x79A7, 0x79A7, 0x1424, 0x79A8, 0x79A8, 0x2DCE, 0x79A9, 0x79A9, 0x4301,
+ 0x79AA, 0x79AA, 0x1425, 0x79AB, 0x79AB, 0x2DCD, 0x79AC, 0x79AC, 0x2F74,
+ 0x79AD, 0x79AD, 0x2F73, 0x79AE, 0x79AE, 0x14FF, 0x79B0, 0x79B0, 0x30D0,
+ 0x79B1, 0x79B1, 0x15A0, 0x79B2, 0x79B2, 0x3209, 0x79B3, 0x79B3, 0x16CF,
+ 0x79B4, 0x79B4, 0x3398, 0x79B6, 0x79B6, 0x3492, 0x79B7, 0x79B7, 0x3491,
+ 0x79B8, 0x79B8, 0x17B2, 0x79B9, 0x79BA, 0x07C3, 0x79BB, 0x79BB, 0x1FC5,
+ 0x79BD, 0x79BD, 0x0EAD, 0x79BE, 0x79BE, 0x036B, 0x79BF, 0x79BF, 0x04F9,
+ 0x79C0, 0x79C0, 0x04F8, 0x79C1, 0x79C1, 0x04F7, 0x79C4, 0x79C4, 0x3CCD,
+ 0x79C5, 0x79C5, 0x1A21, 0x79C6, 0x79C6, 0x4305, 0x79C8, 0x79C8, 0x0663,
+ 0x79C9, 0x79C9, 0x0662, 0x79CB, 0x79CB, 0x07C7, 0x79CC, 0x79CC, 0x4233,
+ 0x79CD, 0x79CD, 0x1BB1, 0x79CE, 0x79CE, 0x1BB4, 0x79CF, 0x79CF, 0x1BB2,
+ 0x79D1, 0x79D2, 0x07C5, 0x79D4, 0x79D4, 0x4307, 0x79D5, 0x79D5, 0x1BB0,
+ 0x79D6, 0x79D6, 0x1BB3, 0x79D8, 0x79D8, 0x0964, 0x79DC, 0x79DC, 0x1D81,
+ 0x79DD, 0x79DD, 0x1D83, 0x79DE, 0x79DE, 0x1D82, 0x79DF, 0x79DF, 0x0961,
+ 0x79E0, 0x79E0, 0x1D7D, 0x79E2, 0x79E2, 0x3C5A, 0x79E3, 0x79E3, 0x095F,
+ 0x79E4, 0x79E4, 0x095E, 0x79E6, 0x79E6, 0x0962, 0x79E7, 0x79E7, 0x0960,
+ 0x79E9, 0x79E9, 0x0963, 0x79EA, 0x79EA, 0x1D80, 0x79EB, 0x79EC, 0x1D7B,
+ 0x79ED, 0x79ED, 0x1D7F, 0x79EE, 0x79EE, 0x1D7E, 0x79F1, 0x79F1, 0x3B27,
+ 0x79F4, 0x79F4, 0x3B22, 0x79F6, 0x79F7, 0x1FC8, 0x79F8, 0x79F8, 0x1FC7,
+ 0x79FA, 0x79FA, 0x1FC6, 0x79FB, 0x79FB, 0x0B45, 0x7A00, 0x7A00, 0x0CFD,
+ 0x7A02, 0x7A02, 0x224B, 0x7A03, 0x7A03, 0x224D, 0x7A04, 0x7A04, 0x224F,
+ 0x7A05, 0x7A05, 0x0CFC, 0x7A06, 0x7A06, 0x471E, 0x7A08, 0x7A08, 0x0CFA,
+ 0x7A0A, 0x7A0A, 0x224C, 0x7A0B, 0x7A0B, 0x0CFB, 0x7A0C, 0x7A0C, 0x224E,
+ 0x7A0D, 0x7A0D, 0x0CF9, 0x7A10, 0x7A10, 0x24E9, 0x7A11, 0x7A11, 0x24E0,
+ 0x7A12, 0x7A12, 0x24E3, 0x7A13, 0x7A13, 0x24E7, 0x7A14, 0x7A14, 0x0EB1,
+ 0x7A15, 0x7A15, 0x24E5, 0x7A17, 0x7A17, 0x24E4, 0x7A18, 0x7A19, 0x24E1,
+ 0x7A1A, 0x7A1A, 0x0EAF, 0x7A1B, 0x7A1B, 0x24E8, 0x7A1C, 0x7A1C, 0x0EAE,
+ 0x7A1E, 0x7A1E, 0x0EB3, 0x7A1F, 0x7A1F, 0x0EB2, 0x7A20, 0x7A20, 0x0EB0,
+ 0x7A22, 0x7A22, 0x24E6, 0x7A26, 0x7A26, 0x2765, 0x7A28, 0x7A28, 0x2764,
+ 0x7A2B, 0x7A2B, 0x2760, 0x7A2D, 0x7A2D, 0x3FDA, 0x7A2E, 0x7A2E, 0x1047,
+ 0x7A2F, 0x7A2F, 0x2763, 0x7A30, 0x7A30, 0x2762, 0x7A31, 0x7A31, 0x1048,
+ 0x7A37, 0x7A37, 0x11C7, 0x7A39, 0x7A39, 0x29A3, 0x7A3A, 0x7A3A, 0x3B21,
+ 0x7A3B, 0x7A3B, 0x11C8, 0x7A3C, 0x7A3C, 0x11C4, 0x7A3D, 0x7A3D, 0x11C6,
+ 0x7A3E, 0x7A3E, 0x3F8B, 0x7A3F, 0x7A3F, 0x11C3, 0x7A40, 0x7A40, 0x11C5,
+ 0x7A43, 0x7A43, 0x396C, 0x7A44, 0x7A44, 0x2BF6, 0x7A45, 0x7A45, 0x3DF1,
+ 0x7A46, 0x7A46, 0x1312, 0x7A47, 0x7A47, 0x2BF8, 0x7A48, 0x7A48, 0x2BF7,
+ 0x7A49, 0x7A49, 0x3733, 0x7A4A, 0x7A4A, 0x2761, 0x7A4B, 0x7A4B, 0x1314,
+ 0x7A4C, 0x7A4C, 0x1313, 0x7A4D, 0x7A4E, 0x1310, 0x7A54, 0x7A54, 0x2DD3,
+ 0x7A56, 0x7A56, 0x2DD1, 0x7A57, 0x7A57, 0x1426, 0x7A58, 0x7A58, 0x2DD2,
+ 0x7A5A, 0x7A5A, 0x2DD4, 0x7A5B, 0x7A5B, 0x2DD0, 0x7A5C, 0x7A5C, 0x2DCF,
+ 0x7A5F, 0x7A5F, 0x2F75, 0x7A60, 0x7A60, 0x1502, 0x7A61, 0x7A62, 0x1500,
+ 0x7A65, 0x7A65, 0x3736, 0x7A67, 0x7A68, 0x30D1, 0x7A69, 0x7A69, 0x15A2,
+ 0x7A6B, 0x7A6B, 0x15A1, 0x7A6C, 0x7A6D, 0x320B, 0x7A6E, 0x7A6E, 0x320A,
+ 0x7A70, 0x7A71, 0x3399, 0x7A74, 0x7A74, 0x036C, 0x7A75, 0x7A75, 0x1811,
+ 0x7A76, 0x7A76, 0x04FA, 0x7A78, 0x7A78, 0x1A22, 0x7A79, 0x7A79, 0x0665,
+ 0x7A7A, 0x7A7A, 0x0664, 0x7A7B, 0x7A7B, 0x1A23, 0x7A7D, 0x7A7D, 0x3737,
+ 0x7A7E, 0x7A7E, 0x1BB6, 0x7A7F, 0x7A7F, 0x07C8, 0x7A80, 0x7A80, 0x1BB5,
+ 0x7A81, 0x7A81, 0x07C9, 0x7A83, 0x7A83, 0x3D7D, 0x7A84, 0x7A84, 0x0965,
+ 0x7A85, 0x7A85, 0x1D86, 0x7A86, 0x7A86, 0x1D84, 0x7A87, 0x7A87, 0x1D8A,
+ 0x7A88, 0x7A88, 0x0966, 0x7A89, 0x7A89, 0x1D85, 0x7A8A, 0x7A8A, 0x1D89,
+ 0x7A8B, 0x7A8C, 0x1D87, 0x7A8F, 0x7A8F, 0x1FCA, 0x7A90, 0x7A90, 0x1FCC,
+ 0x7A91, 0x7A91, 0x43D8, 0x7A92, 0x7A92, 0x0B46, 0x7A94, 0x7A94, 0x1FCB,
+ 0x7A95, 0x7A95, 0x0B47, 0x7A96, 0x7A96, 0x0D00, 0x7A97, 0x7A97, 0x0CFF,
+ 0x7A98, 0x7A98, 0x0CFE, 0x7A99, 0x7A99, 0x2250, 0x7A9E, 0x7A9E, 0x24EC,
+ 0x7A9F, 0x7AA0, 0x0EB4, 0x7AA2, 0x7AA2, 0x24EB, 0x7AA3, 0x7AA3, 0x24EA,
+ 0x7AA8, 0x7AA8, 0x2766, 0x7AA9, 0x7AA9, 0x104A, 0x7AAA, 0x7AAA, 0x1049,
+ 0x7AAB, 0x7AAC, 0x2767, 0x7AAE, 0x7AAE, 0x11CA, 0x7AAF, 0x7AAF, 0x11C9,
+ 0x7AB0, 0x7AB0, 0x373A, 0x7AB1, 0x7AB1, 0x2BFC, 0x7AB2, 0x7AB2, 0x29A4,
+ 0x7AB3, 0x7AB3, 0x29A6, 0x7AB4, 0x7AB4, 0x29A5, 0x7AB5, 0x7AB5, 0x2BFB,
+ 0x7AB6, 0x7AB6, 0x2BF9, 0x7AB7, 0x7AB7, 0x2BFD, 0x7AB8, 0x7AB8, 0x2BFA,
+ 0x7ABA, 0x7ABA, 0x1315, 0x7ABB, 0x7ABB, 0x3739, 0x7ABC, 0x7ABC, 0x4721,
+ 0x7ABE, 0x7ABE, 0x2DD5, 0x7ABF, 0x7ABF, 0x1427, 0x7AC0, 0x7AC1, 0x2DD6,
+ 0x7AC2, 0x7AC3, 0x373B, 0x7AC4, 0x7AC5, 0x1503, 0x7AC7, 0x7AC7, 0x1628,
+ 0x7AC8, 0x7AC8, 0x3D7F, 0x7AC9, 0x7AC9, 0x4570, 0x7ACA, 0x7ACA, 0x16FF,
+ 0x7ACB, 0x7ACB, 0x036D, 0x7ACF, 0x7ACF, 0x4724, 0x7AD1, 0x7AD1, 0x1BB7,
+ 0x7AD3, 0x7AD3, 0x3F8A, 0x7AD8, 0x7AD8, 0x1D8B, 0x7AD9, 0x7AD9, 0x0967,
+ 0x7ADA, 0x7ADA, 0x3740, 0x7ADB, 0x7ADB, 0x4725, 0x7ADC, 0x7ADC, 0x3951,
+ 0x7ADD, 0x7ADD, 0x3741, 0x7ADF, 0x7ADF, 0x0BDE, 0x7AE0, 0x7AE0, 0x0BDD,
+ 0x7AE2, 0x7AE2, 0x3B33, 0x7AE3, 0x7AE3, 0x0D02, 0x7AE4, 0x7AE4, 0x2252,
+ 0x7AE5, 0x7AE5, 0x0D01, 0x7AE6, 0x7AE6, 0x2251, 0x7AE7, 0x7AE7, 0x385D,
+ 0x7AE9, 0x7AE9, 0x3831, 0x7AEA, 0x7AEA, 0x3742, 0x7AEB, 0x7AEB, 0x24ED,
+ 0x7AED, 0x7AED, 0x104B, 0x7AEE, 0x7AEE, 0x2769, 0x7AEF, 0x7AEF, 0x104C,
+ 0x7AF6, 0x7AF6, 0x1629, 0x7AF7, 0x7AF7, 0x320D, 0x7AF9, 0x7AF9, 0x03F6,
+ 0x7AFA, 0x7AFA, 0x0666, 0x7AFB, 0x7AFB, 0x1A24, 0x7AFD, 0x7AFD, 0x07CB,
+ 0x7AFE, 0x7AFE, 0x3B3D, 0x7AFF, 0x7AFF, 0x07CA, 0x7B00, 0x7B01, 0x1BB8,
+ 0x7B04, 0x7B04, 0x1D8D, 0x7B05, 0x7B05, 0x1D8F, 0x7B06, 0x7B06, 0x0968,
+ 0x7B08, 0x7B08, 0x1D91, 0x7B09, 0x7B09, 0x1D94, 0x7B0A, 0x7B0A, 0x1D92,
+ 0x7B0B, 0x7B0B, 0x3746, 0x7B0C, 0x7B0C, 0x3B63, 0x7B0E, 0x7B0E, 0x1D93,
+ 0x7B0F, 0x7B0F, 0x1D90, 0x7B10, 0x7B10, 0x1D8C, 0x7B11, 0x7B11, 0x0969,
+ 0x7B12, 0x7B12, 0x1D95, 0x7B13, 0x7B13, 0x1D8E, 0x7B14, 0x7B14, 0x3F77,
+ 0x7B18, 0x7B18, 0x1FD5, 0x7B19, 0x7B19, 0x0B4D, 0x7B1A, 0x7B1A, 0x1FDE,
+ 0x7B1B, 0x7B1B, 0x0B4A, 0x7B1D, 0x7B1D, 0x1FD7, 0x7B1E, 0x7B1E, 0x0B4E,
+ 0x7B1F, 0x7B1F, 0x3F11, 0x7B20, 0x7B20, 0x0B48, 0x7B22, 0x7B22, 0x1FD2,
+ 0x7B23, 0x7B23, 0x1FDF, 0x7B24, 0x7B24, 0x1FD3, 0x7B25, 0x7B25, 0x1FD0,
+ 0x7B26, 0x7B26, 0x0B4C, 0x7B27, 0x7B27, 0x3B5F, 0x7B28, 0x7B28, 0x0B49,
+ 0x7B29, 0x7B29, 0x3748, 0x7B2A, 0x7B2A, 0x1FD6, 0x7B2B, 0x7B2B, 0x1FD9,
+ 0x7B2C, 0x7B2C, 0x0B4B, 0x7B2D, 0x7B2D, 0x1FDA, 0x7B2E, 0x7B2E, 0x0B4F,
+ 0x7B2F, 0x7B2F, 0x1FDB, 0x7B30, 0x7B30, 0x1FD1, 0x7B31, 0x7B31, 0x1FD8,
+ 0x7B32, 0x7B32, 0x1FDC, 0x7B33, 0x7B33, 0x1FD4, 0x7B34, 0x7B34, 0x1FCF,
+ 0x7B35, 0x7B35, 0x1FCD, 0x7B38, 0x7B38, 0x1FDD, 0x7B39, 0x7B39, 0x3D6E,
+ 0x7B3B, 0x7B3B, 0x1FCE, 0x7B40, 0x7B40, 0x2259, 0x7B42, 0x7B42, 0x3DED,
+ 0x7B43, 0x7B43, 0x3E25, 0x7B44, 0x7B44, 0x2255, 0x7B45, 0x7B45, 0x225B,
+ 0x7B46, 0x7B46, 0x0D05, 0x7B47, 0x7B47, 0x2254, 0x7B48, 0x7B48, 0x2256,
+ 0x7B49, 0x7B49, 0x0D03, 0x7B4A, 0x7B4A, 0x2253, 0x7B4B, 0x7B4B, 0x0D0A,
+ 0x7B4C, 0x7B4C, 0x2257, 0x7B4D, 0x7B4D, 0x0D09, 0x7B4E, 0x7B4E, 0x2258,
+ 0x7B4F, 0x7B4F, 0x0D0B, 0x7B50, 0x7B50, 0x0D06, 0x7B51, 0x7B51, 0x0D0C,
+ 0x7B52, 0x7B52, 0x0D07, 0x7B54, 0x7B54, 0x0D08, 0x7B55, 0x7B55, 0x3747,
+ 0x7B56, 0x7B56, 0x0D04, 0x7B58, 0x7B58, 0x225A, 0x7B60, 0x7B60, 0x0EB8,
+ 0x7B61, 0x7B61, 0x24F8, 0x7B62, 0x7B62, 0x4727, 0x7B63, 0x7B63, 0x24FB,
+ 0x7B64, 0x7B64, 0x24EF, 0x7B65, 0x7B65, 0x24F4, 0x7B66, 0x7B66, 0x24EE,
+ 0x7B67, 0x7B67, 0x0EBA, 0x7B69, 0x7B69, 0x24F2, 0x7B6C, 0x7B6C, 0x4728,
+ 0x7B6D, 0x7B6D, 0x24F0, 0x7B6E, 0x7B6E, 0x0EB9, 0x7B6F, 0x7B6F, 0x374C,
+ 0x7B70, 0x7B70, 0x24F7, 0x7B71, 0x7B71, 0x24F6, 0x7B72, 0x7B72, 0x24F3,
+ 0x7B73, 0x7B73, 0x24F5, 0x7B74, 0x7B74, 0x24F1, 0x7B75, 0x7B75, 0x1050,
+ 0x7B76, 0x7B76, 0x24FA, 0x7B77, 0x7B77, 0x0EB6, 0x7B78, 0x7B78, 0x24F9,
+ 0x7B7B, 0x7B7B, 0x4729, 0x7B82, 0x7B82, 0x2779, 0x7B84, 0x7B84, 0x1057,
+ 0x7B85, 0x7B85, 0x2774, 0x7B87, 0x7B87, 0x1056, 0x7B88, 0x7B88, 0x276A,
+ 0x7B8A, 0x7B8A, 0x276C, 0x7B8B, 0x7B8B, 0x104F, 0x7B8C, 0x7B8C, 0x2771,
+ 0x7B8D, 0x7B8D, 0x2770, 0x7B8E, 0x7B8E, 0x2773, 0x7B8F, 0x7B8F, 0x1054,
+ 0x7B90, 0x7B90, 0x276E, 0x7B91, 0x7B91, 0x276D, 0x7B92, 0x7B92, 0x3752,
+ 0x7B94, 0x7B94, 0x1053, 0x7B95, 0x7B95, 0x104E, 0x7B96, 0x7B96, 0x276F,
+ 0x7B97, 0x7B97, 0x1051, 0x7B98, 0x7B98, 0x2775, 0x7B99, 0x7B99, 0x2777,
+ 0x7B9B, 0x7B9B, 0x2772, 0x7B9C, 0x7B9C, 0x276B, 0x7B9D, 0x7B9D, 0x1052,
+ 0x7BA0, 0x7BA0, 0x11D2, 0x7BA1, 0x7BA1, 0x104D, 0x7BA2, 0x7BA2, 0x374B,
+ 0x7BA3, 0x7BA3, 0x3F14, 0x7BA4, 0x7BA4, 0x2778, 0x7BAC, 0x7BAC, 0x29AA,
+ 0x7BAD, 0x7BAD, 0x11CB, 0x7BAF, 0x7BAF, 0x29AC, 0x7BB1, 0x7BB1, 0x11CC,
+ 0x7BB2, 0x7BB2, 0x461C, 0x7BB4, 0x7BB4, 0x11CE, 0x7BB5, 0x7BB5, 0x29AF,
+ 0x7BB7, 0x7BB7, 0x29A7, 0x7BB8, 0x7BB8, 0x1055, 0x7BB9, 0x7BB9, 0x29AD,
+ 0x7BBE, 0x7BBE, 0x29A9, 0x7BC0, 0x7BC0, 0x0EB7, 0x7BC1, 0x7BC1, 0x11D1,
+ 0x7BC4, 0x7BC4, 0x11CD, 0x7BC6, 0x7BC7, 0x11CF, 0x7BC9, 0x7BC9, 0x1318,
+ 0x7BCA, 0x7BCA, 0x29AE, 0x7BCB, 0x7BCB, 0x29A8, 0x7BCC, 0x7BCC, 0x11D3,
+ 0x7BCE, 0x7BCE, 0x29AB, 0x7BCF, 0x7BCF, 0x3F18, 0x7BD0, 0x7BD0, 0x3750,
+ 0x7BD4, 0x7BD4, 0x2C07, 0x7BD5, 0x7BD5, 0x2C02, 0x7BD8, 0x7BD8, 0x2C0C,
+ 0x7BD9, 0x7BD9, 0x1316, 0x7BDA, 0x7BDA, 0x2C04, 0x7BDB, 0x7BDB, 0x131A,
+ 0x7BDC, 0x7BDC, 0x2C0A, 0x7BDD, 0x7BDD, 0x2C01, 0x7BDE, 0x7BDE, 0x2BFE,
+ 0x7BDF, 0x7BDF, 0x2C0D, 0x7BE0, 0x7BE0, 0x142D, 0x7BE1, 0x7BE1, 0x131B,
+ 0x7BE2, 0x7BE2, 0x2C09, 0x7BE3, 0x7BE3, 0x2BFF, 0x7BE4, 0x7BE4, 0x1319,
+ 0x7BE5, 0x7BE5, 0x2C03, 0x7BE6, 0x7BE6, 0x131D, 0x7BE7, 0x7BE7, 0x2C00,
+ 0x7BE8, 0x7BE8, 0x2C05, 0x7BE9, 0x7BE9, 0x131C, 0x7BEA, 0x7BEA, 0x2C08,
+ 0x7BEB, 0x7BEB, 0x2C0B, 0x7BF0, 0x7BF1, 0x2DE9, 0x7BF2, 0x7BF2, 0x2DDA,
+ 0x7BF3, 0x7BF3, 0x2DE1, 0x7BF4, 0x7BF4, 0x2DDF, 0x7BF7, 0x7BF7, 0x142B,
+ 0x7BF8, 0x7BF8, 0x2DE6, 0x7BF9, 0x7BF9, 0x2C06, 0x7BFA, 0x7BFA, 0x3757,
+ 0x7BFB, 0x7BFB, 0x2DDD, 0x7BFC, 0x7BFC, 0x3F1F, 0x7BFD, 0x7BFD, 0x2DE7,
+ 0x7BFE, 0x7BFE, 0x142A, 0x7BFF, 0x7BFF, 0x2DDC, 0x7C00, 0x7C00, 0x2DDB,
+ 0x7C01, 0x7C01, 0x2DE5, 0x7C02, 0x7C02, 0x2DE2, 0x7C03, 0x7C03, 0x2DE4,
+ 0x7C05, 0x7C05, 0x2DD8, 0x7C06, 0x7C06, 0x2DE8, 0x7C07, 0x7C07, 0x1428,
+ 0x7C09, 0x7C09, 0x2DE3, 0x7C0A, 0x7C0A, 0x2DEC, 0x7C0B, 0x7C0B, 0x2DE0,
+ 0x7C0C, 0x7C0C, 0x142C, 0x7C0D, 0x7C0D, 0x1429, 0x7C0E, 0x7C0E, 0x2DDE,
+ 0x7C0F, 0x7C0F, 0x2DD9, 0x7C10, 0x7C10, 0x2DEB, 0x7C11, 0x7C11, 0x1317,
+ 0x7C12, 0x7C12, 0x472A, 0x7C15, 0x7C15, 0x4061, 0x7C19, 0x7C19, 0x2F78,
+ 0x7C1B, 0x7C1B, 0x43D9, 0x7C1C, 0x7C1C, 0x2F76, 0x7C1D, 0x7C1D, 0x2F7C,
+ 0x7C1E, 0x7C1E, 0x1508, 0x7C1F, 0x7C1F, 0x2F7A, 0x7C20, 0x7C20, 0x2F79,
+ 0x7C21, 0x7C21, 0x150A, 0x7C22, 0x7C22, 0x2F7F, 0x7C23, 0x7C23, 0x1509,
+ 0x7C25, 0x7C25, 0x2F80, 0x7C26, 0x7C26, 0x2F7D, 0x7C27, 0x7C27, 0x1506,
+ 0x7C28, 0x7C28, 0x2F7E, 0x7C29, 0x7C29, 0x2F77, 0x7C2A, 0x7C2A, 0x1507,
+ 0x7C2B, 0x7C2B, 0x1505, 0x7C2C, 0x7C2C, 0x30D6, 0x7C2D, 0x7C2D, 0x2F7B,
+ 0x7C30, 0x7C30, 0x2F81, 0x7C33, 0x7C33, 0x30D3, 0x7C35, 0x7C35, 0x3759,
+ 0x7C37, 0x7C37, 0x15A7, 0x7C38, 0x7C38, 0x15A5, 0x7C39, 0x7C39, 0x30D5,
+ 0x7C3B, 0x7C3B, 0x30D7, 0x7C3C, 0x7C3C, 0x30D4, 0x7C3D, 0x7C3D, 0x15A6,
+ 0x7C3E, 0x7C3F, 0x15A3, 0x7C40, 0x7C40, 0x15A8, 0x7C42, 0x7C42, 0x3F1C,
+ 0x7C43, 0x7C43, 0x162B, 0x7C44, 0x7C44, 0x375B, 0x7C45, 0x7C45, 0x3212,
+ 0x7C47, 0x7C47, 0x3211, 0x7C48, 0x7C48, 0x320F, 0x7C49, 0x7C49, 0x320E,
+ 0x7C4A, 0x7C4A, 0x3210, 0x7C4C, 0x7C4C, 0x162A, 0x7C4D, 0x7C4D, 0x162C,
+ 0x7C50, 0x7C50, 0x1681, 0x7C51, 0x7C51, 0x3FB8, 0x7C53, 0x7C53, 0x32EA,
+ 0x7C54, 0x7C54, 0x32E9, 0x7C56, 0x7C56, 0x3EFF, 0x7C57, 0x7C57, 0x339B,
+ 0x7C59, 0x7C59, 0x339D, 0x7C5A, 0x7C5A, 0x339F, 0x7C5B, 0x7C5B, 0x339E,
+ 0x7C5C, 0x7C5C, 0x339C, 0x7C5D, 0x7C5D, 0x3B3F, 0x7C5F, 0x7C5F, 0x16D1,
+ 0x7C60, 0x7C60, 0x16D0, 0x7C63, 0x7C63, 0x1701, 0x7C64, 0x7C64, 0x1700,
+ 0x7C65, 0x7C65, 0x1702, 0x7C66, 0x7C66, 0x342B, 0x7C67, 0x7C67, 0x342A,
+ 0x7C69, 0x7C69, 0x34D6, 0x7C6A, 0x7C6A, 0x3493, 0x7C6B, 0x7C6B, 0x34D7,
+ 0x7C6C, 0x7C6C, 0x1745, 0x7C6D, 0x7C6D, 0x3B40, 0x7C6E, 0x7C6E, 0x1746,
+ 0x7C6F, 0x7C6F, 0x3507, 0x7C70, 0x7C70, 0x3F52, 0x7C72, 0x7C72, 0x176B,
+ 0x7C73, 0x7C73, 0x03F7, 0x7C74, 0x7C74, 0x469C, 0x7C75, 0x7C75, 0x1A25,
+ 0x7C78, 0x7C79, 0x1BBB, 0x7C7A, 0x7C7A, 0x1BBA, 0x7C7B, 0x7C7B, 0x472D,
+ 0x7C7C, 0x7C7C, 0x3B49, 0x7C7D, 0x7C7D, 0x07CC, 0x7C7E, 0x7C7E, 0x3F1A,
+ 0x7C7F, 0x7C81, 0x1BBD, 0x7C83, 0x7C83, 0x375C, 0x7C84, 0x7C84, 0x1D96,
+ 0x7C85, 0x7C85, 0x1D9C, 0x7C86, 0x7C86, 0x3F1D, 0x7C88, 0x7C88, 0x1D9A,
+ 0x7C89, 0x7C89, 0x096A, 0x7C8A, 0x7C8A, 0x1D98, 0x7C8C, 0x7C8C, 0x1D99,
+ 0x7C8D, 0x7C8D, 0x1D9B, 0x7C8E, 0x7C8E, 0x3B48, 0x7C91, 0x7C91, 0x1D97,
+ 0x7C92, 0x7C92, 0x0B50, 0x7C94, 0x7C94, 0x1FE0, 0x7C95, 0x7C95, 0x0B52,
+ 0x7C96, 0x7C96, 0x1FE2, 0x7C97, 0x7C97, 0x0B51, 0x7C98, 0x7C98, 0x1FE1,
+ 0x7C9C, 0x7C9C, 0x472E, 0x7C9E, 0x7C9E, 0x225D, 0x7C9F, 0x7C9F, 0x0D0D,
+ 0x7CA1, 0x7CA1, 0x225F, 0x7CA2, 0x7CA2, 0x225C, 0x7CA3, 0x7CA3, 0x1FE3,
+ 0x7CA5, 0x7CA5, 0x0D0E, 0x7CA6, 0x7CA6, 0x375E, 0x7CA7, 0x7CA7, 0x36ED,
+ 0x7CA8, 0x7CA8, 0x225E, 0x7CAC, 0x7CAC, 0x3885, 0x7CAE, 0x7CAE, 0x3B4A,
+ 0x7CAF, 0x7CAF, 0x24FE, 0x7CB1, 0x7CB1, 0x0EBB, 0x7CB2, 0x7CB2, 0x24FC,
+ 0x7CB3, 0x7CB3, 0x0EBC, 0x7CB4, 0x7CB4, 0x24FD, 0x7CB5, 0x7CB5, 0x0EBD,
+ 0x7CB8, 0x7CB8, 0x4730, 0x7CB9, 0x7CB9, 0x1058, 0x7CBA, 0x7CBA, 0x277D,
+ 0x7CBB, 0x7CBB, 0x277A, 0x7CBC, 0x7CBC, 0x277C, 0x7CBD, 0x7CBE, 0x1059,
+ 0x7CBF, 0x7CBF, 0x277B, 0x7CC2, 0x7CC2, 0x3FD7, 0x7CC5, 0x7CC5, 0x29B0,
+ 0x7CC7, 0x7CC7, 0x3761, 0x7CC8, 0x7CC8, 0x29B1, 0x7CC9, 0x7CC9, 0x3760,
+ 0x7CCA, 0x7CCA, 0x11D4, 0x7CCB, 0x7CCB, 0x29B3, 0x7CCC, 0x7CCC, 0x29B2,
+ 0x7CCD, 0x7CCD, 0x3B45, 0x7CCE, 0x7CCE, 0x0121, 0x7CD0, 0x7CD1, 0x2C11,
+ 0x7CD2, 0x7CD2, 0x2C0E, 0x7CD3, 0x7CD3, 0x3D5C, 0x7CD4, 0x7CD4, 0x2C0F,
+ 0x7CD5, 0x7CD6, 0x131E, 0x7CD7, 0x7CD7, 0x2C10, 0x7CD9, 0x7CD9, 0x1433,
+ 0x7CDA, 0x7CDA, 0x3FD9, 0x7CDC, 0x7CDC, 0x142F, 0x7CDD, 0x7CDD, 0x1434,
+ 0x7CDE, 0x7CDE, 0x1430, 0x7CDF, 0x7CDF, 0x1432, 0x7CE0, 0x7CE0, 0x142E,
+ 0x7CE2, 0x7CE2, 0x1431, 0x7CE6, 0x7CE6, 0x3762, 0x7CE7, 0x7CE7, 0x150B,
+ 0x7CE8, 0x7CE8, 0x2DED, 0x7CEA, 0x7CEA, 0x30D9, 0x7CEC, 0x7CEC, 0x30D8,
+ 0x7CED, 0x7CED, 0x43DA, 0x7CEE, 0x7CEE, 0x3213, 0x7CEF, 0x7CF0, 0x162D,
+ 0x7CF1, 0x7CF1, 0x33A1, 0x7CF2, 0x7CF2, 0x32EB, 0x7CF3, 0x7CF3, 0x3764,
+ 0x7CF4, 0x7CF4, 0x33A0, 0x7CF5, 0x7CF5, 0x3765, 0x7CF6, 0x7CF6, 0x34D8,
+ 0x7CF7, 0x7CF7, 0x351D, 0x7CF8, 0x7CF8, 0x03F8, 0x7CF9, 0x7CF9, 0x44F8,
+ 0x7CFB, 0x7CFB, 0x04FB, 0x7CFC, 0x7CFC, 0x456D, 0x7CFD, 0x7CFD, 0x1A26,
+ 0x7CFE, 0x7CFE, 0x0667, 0x7D00, 0x7D00, 0x07CF, 0x7D01, 0x7D01, 0x1BC2,
+ 0x7D02, 0x7D02, 0x07CD, 0x7D03, 0x7D03, 0x1BC0, 0x7D04, 0x7D04, 0x07D2,
+ 0x7D05, 0x7D05, 0x07CE, 0x7D06, 0x7D06, 0x07D3, 0x7D07, 0x7D07, 0x07D1,
+ 0x7D08, 0x7D08, 0x1BC1, 0x7D09, 0x7D09, 0x07D0, 0x7D0A, 0x7D0A, 0x096E,
+ 0x7D0B, 0x7D0B, 0x096D, 0x7D0C, 0x7D0C, 0x1DA7, 0x7D0D, 0x7D0D, 0x0976,
+ 0x7D0E, 0x7D0E, 0x1DA0, 0x7D0F, 0x7D0F, 0x1DA6, 0x7D10, 0x7D10, 0x0972,
+ 0x7D11, 0x7D11, 0x1D9F, 0x7D12, 0x7D12, 0x1DA5, 0x7D13, 0x7D13, 0x1DA3,
+ 0x7D14, 0x7D14, 0x0971, 0x7D15, 0x7D15, 0x0973, 0x7D16, 0x7D16, 0x1DA2,
+ 0x7D17, 0x7D17, 0x096C, 0x7D18, 0x7D18, 0x1DA1, 0x7D19, 0x7D19, 0x0977,
+ 0x7D1A, 0x7D1A, 0x0974, 0x7D1B, 0x7D1B, 0x0978, 0x7D1C, 0x7D1C, 0x0975,
+ 0x7D1D, 0x7D1D, 0x1D9E, 0x7D1E, 0x7D1E, 0x1D9D, 0x7D1F, 0x7D1F, 0x1DA4,
+ 0x7D20, 0x7D20, 0x096F, 0x7D21, 0x7D21, 0x096B, 0x7D22, 0x7D22, 0x0970,
+ 0x7D25, 0x7D25, 0x3EDE, 0x7D28, 0x7D28, 0x1FF2, 0x7D29, 0x7D29, 0x1FEB,
+ 0x7D2B, 0x7D2B, 0x0D13, 0x7D2C, 0x7D2C, 0x1FEA, 0x7D2E, 0x7D2E, 0x0B56,
+ 0x7D2F, 0x7D2F, 0x0B5D, 0x7D30, 0x7D30, 0x0B5A, 0x7D31, 0x7D31, 0x0B60,
+ 0x7D32, 0x7D32, 0x0B5F, 0x7D33, 0x7D33, 0x0B5B, 0x7D35, 0x7D35, 0x1FE4,
+ 0x7D36, 0x7D36, 0x1FE7, 0x7D38, 0x7D38, 0x1FE6, 0x7D39, 0x7D39, 0x0B57,
+ 0x7D3A, 0x7D3A, 0x1FE8, 0x7D3B, 0x7D3B, 0x1FF1, 0x7D3C, 0x7D3C, 0x0B58,
+ 0x7D3D, 0x7D3D, 0x1FE5, 0x7D3E, 0x7D3F, 0x1FEE, 0x7D40, 0x7D40, 0x0B59,
+ 0x7D41, 0x7D41, 0x1FEC, 0x7D42, 0x7D42, 0x0B5E, 0x7D43, 0x7D43, 0x0B54,
+ 0x7D44, 0x7D44, 0x0B5C, 0x7D45, 0x7D45, 0x1FE9, 0x7D46, 0x7D46, 0x0B53,
+ 0x7D47, 0x7D47, 0x1FED, 0x7D4A, 0x7D4A, 0x1FF0, 0x7D4D, 0x7D4D, 0x3FDD,
+ 0x7D4E, 0x7D4E, 0x2270, 0x7D4F, 0x7D4F, 0x2267, 0x7D50, 0x7D50, 0x0D10,
+ 0x7D51, 0x7D51, 0x226E, 0x7D52, 0x7D52, 0x226B, 0x7D53, 0x7D53, 0x2263,
+ 0x7D54, 0x7D54, 0x226C, 0x7D55, 0x7D55, 0x0D12, 0x7D56, 0x7D56, 0x2264,
+ 0x7D58, 0x7D58, 0x2260, 0x7D5A, 0x7D5A, 0x3E93, 0x7D5B, 0x7D5B, 0x0EC3,
+ 0x7D5C, 0x7D5C, 0x2269, 0x7D5D, 0x7D5D, 0x3769, 0x7D5E, 0x7D5E, 0x0D0F,
+ 0x7D5F, 0x7D5F, 0x226F, 0x7D61, 0x7D61, 0x0D16, 0x7D62, 0x7D62, 0x0D18,
+ 0x7D63, 0x7D63, 0x2262, 0x7D66, 0x7D66, 0x0D17, 0x7D67, 0x7D67, 0x2265,
+ 0x7D68, 0x7D68, 0x0D11, 0x7D69, 0x7D69, 0x226D, 0x7D6A, 0x7D6A, 0x2266,
+ 0x7D6B, 0x7D6B, 0x226A, 0x7D6D, 0x7D6D, 0x2268, 0x7D6E, 0x7D6E, 0x0D14,
+ 0x7D6F, 0x7D6F, 0x2261, 0x7D70, 0x7D70, 0x0D19, 0x7D71, 0x7D71, 0x0B55,
+ 0x7D72, 0x7D72, 0x0D15, 0x7D73, 0x7D73, 0x0D1A, 0x7D79, 0x7D79, 0x0EBF,
+ 0x7D7A, 0x7D7A, 0x2505, 0x7D7B, 0x7D7B, 0x2507, 0x7D7C, 0x7D7C, 0x2509,
+ 0x7D7D, 0x7D7D, 0x250D, 0x7D7F, 0x7D7F, 0x2503, 0x7D80, 0x7D80, 0x2501,
+ 0x7D81, 0x7D81, 0x0EC1, 0x7D83, 0x7D83, 0x2508, 0x7D84, 0x7D84, 0x250C,
+ 0x7D85, 0x7D85, 0x2504, 0x7D86, 0x7D86, 0x2500, 0x7D88, 0x7D88, 0x24FF,
+ 0x7D89, 0x7D89, 0x376B, 0x7D8C, 0x7D8C, 0x250A, 0x7D8D, 0x7D8D, 0x2502,
+ 0x7D8E, 0x7D8E, 0x2506, 0x7D8F, 0x7D8F, 0x0EC2, 0x7D91, 0x7D91, 0x0EC0,
+ 0x7D92, 0x7D92, 0x250E, 0x7D93, 0x7D93, 0x0EBE, 0x7D94, 0x7D94, 0x250B,
+ 0x7D96, 0x7D96, 0x278E, 0x7D97, 0x7D97, 0x3B53, 0x7D9C, 0x7D9C, 0x105D,
+ 0x7D9D, 0x7D9D, 0x2786, 0x7D9E, 0x7D9E, 0x11E1, 0x7D9F, 0x7D9F, 0x2790,
+ 0x7DA0, 0x7DA0, 0x1060, 0x7DA1, 0x7DA1, 0x2794, 0x7DA2, 0x7DA2, 0x1066,
+ 0x7DA3, 0x7DA3, 0x2781, 0x7DA4, 0x7DA4, 0x46D7, 0x7DA6, 0x7DA6, 0x2791,
+ 0x7DA7, 0x7DA7, 0x277E, 0x7DA8, 0x7DA8, 0x3C9C, 0x7DA9, 0x7DA9, 0x2793,
+ 0x7DAA, 0x7DAA, 0x2782, 0x7DAB, 0x7DAB, 0x376C, 0x7DAC, 0x7DAC, 0x106D,
+ 0x7DAD, 0x7DAD, 0x106A, 0x7DAE, 0x7DAE, 0x2792, 0x7DAF, 0x7DAF, 0x278C,
+ 0x7DB0, 0x7DB0, 0x105C, 0x7DB1, 0x7DB1, 0x1064, 0x7DB2, 0x7DB2, 0x1063,
+ 0x7DB3, 0x7DB3, 0x376E, 0x7DB4, 0x7DB4, 0x1062, 0x7DB5, 0x7DB5, 0x1068,
+ 0x7DB7, 0x7DB7, 0x277F, 0x7DB8, 0x7DB8, 0x1069, 0x7DB9, 0x7DB9, 0x278D,
+ 0x7DBA, 0x7DBA, 0x1065, 0x7DBB, 0x7DBB, 0x105B, 0x7DBC, 0x7DBC, 0x278F,
+ 0x7DBD, 0x7DBE, 0x105E, 0x7DBF, 0x7DBF, 0x1067, 0x7DC0, 0x7DC0, 0x2784,
+ 0x7DC1, 0x7DC1, 0x2783, 0x7DC2, 0x7DC2, 0x2780, 0x7DC4, 0x7DC4, 0x2788,
+ 0x7DC5, 0x7DC5, 0x2785, 0x7DC6, 0x7DC6, 0x2789, 0x7DC7, 0x7DC7, 0x106C,
+ 0x7DC9, 0x7DC9, 0x2795, 0x7DCA, 0x7DCA, 0x1061, 0x7DCB, 0x7DCC, 0x278A,
+ 0x7DCD, 0x7DCD, 0x456E, 0x7DCE, 0x7DCE, 0x2787, 0x7DCF, 0x7DCF, 0x4735,
+ 0x7DD0, 0x7DD0, 0x4737, 0x7DD2, 0x7DD2, 0x106B, 0x7DD3, 0x7DD3, 0x3B4E,
+ 0x7DD4, 0x7DD4, 0x4736, 0x7DD6, 0x7DD6, 0x376F, 0x7DD7, 0x7DD7, 0x29B8,
+ 0x7DD8, 0x7DD8, 0x11D9, 0x7DD9, 0x7DD9, 0x11E2, 0x7DDA, 0x7DDA, 0x11DE,
+ 0x7DDB, 0x7DDB, 0x29B5, 0x7DDC, 0x7DDC, 0x3B4C, 0x7DDD, 0x7DDD, 0x11DB,
+ 0x7DDE, 0x7DDE, 0x11DF, 0x7DDF, 0x7DDF, 0x29C1, 0x7DE0, 0x7DE0, 0x11D5,
+ 0x7DE1, 0x7DE1, 0x29B9, 0x7DE3, 0x7DE3, 0x11DD, 0x7DE4, 0x7DE4, 0x3772,
+ 0x7DE5, 0x7DE5, 0x3776, 0x7DE6, 0x7DE6, 0x29BC, 0x7DE7, 0x7DE7, 0x29B7,
+ 0x7DE8, 0x7DE8, 0x11DC, 0x7DE9, 0x7DE9, 0x11E0, 0x7DEA, 0x7DEA, 0x29B6,
+ 0x7DEC, 0x7DEC, 0x11DA, 0x7DEE, 0x7DEE, 0x29C0, 0x7DEF, 0x7DEF, 0x11D7,
+ 0x7DF0, 0x7DF0, 0x29BF, 0x7DF1, 0x7DF1, 0x29BE, 0x7DF2, 0x7DF2, 0x11E3,
+ 0x7DF3, 0x7DF3, 0x28C8, 0x7DF4, 0x7DF4, 0x11D6, 0x7DF5, 0x7DF5, 0x3774,
+ 0x7DF6, 0x7DF6, 0x29BD, 0x7DF7, 0x7DF7, 0x29B4, 0x7DF9, 0x7DF9, 0x11E4,
+ 0x7DFA, 0x7DFA, 0x29BB, 0x7DFB, 0x7DFB, 0x11D8, 0x7DFD, 0x7DFD, 0x4738,
+ 0x7DFE, 0x7DFE, 0x3CCF, 0x7E03, 0x7E03, 0x29BA, 0x7E07, 0x7E07, 0x3B4D,
+ 0x7E08, 0x7E08, 0x1322, 0x7E09, 0x7E09, 0x1327, 0x7E0A, 0x7E0A, 0x1320,
+ 0x7E0B, 0x7E0B, 0x2C1F, 0x7E0C, 0x7E0C, 0x2C16, 0x7E0D, 0x7E0D, 0x2C22,
+ 0x7E0E, 0x7E0E, 0x2C1A, 0x7E0F, 0x7E0F, 0x2C20, 0x7E10, 0x7E10, 0x1328,
+ 0x7E11, 0x7E11, 0x1321, 0x7E12, 0x7E12, 0x2C13, 0x7E13, 0x7E13, 0x2C19,
+ 0x7E14, 0x7E14, 0x2C23, 0x7E15, 0x7E15, 0x2C1C, 0x7E16, 0x7E16, 0x2C21,
+ 0x7E17, 0x7E17, 0x2C15, 0x7E1A, 0x7E1A, 0x2C1D, 0x7E1B, 0x7E1B, 0x1323,
+ 0x7E1C, 0x7E1C, 0x2C1B, 0x7E1D, 0x7E1D, 0x1326, 0x7E1E, 0x7E1E, 0x1325,
+ 0x7E1F, 0x7E20, 0x2C17, 0x7E21, 0x7E21, 0x2C14, 0x7E22, 0x7E22, 0x2C1E,
+ 0x7E23, 0x7E23, 0x1324, 0x7E24, 0x7E24, 0x2C25, 0x7E25, 0x7E25, 0x2C24,
+ 0x7E27, 0x7E27, 0x377F, 0x7E29, 0x7E29, 0x2DF8, 0x7E2A, 0x7E2A, 0x2DF4,
+ 0x7E2B, 0x7E2B, 0x143B, 0x7E2D, 0x7E2D, 0x2DEE, 0x7E2E, 0x7E2E, 0x1435,
+ 0x7E2F, 0x7E2F, 0x1445, 0x7E30, 0x7E30, 0x2DFA, 0x7E31, 0x7E31, 0x143D,
+ 0x7E32, 0x7E32, 0x1439, 0x7E33, 0x7E33, 0x2DF1, 0x7E34, 0x7E34, 0x1440,
+ 0x7E35, 0x7E35, 0x1443, 0x7E36, 0x7E36, 0x2DFC, 0x7E37, 0x7E37, 0x1438,
+ 0x7E38, 0x7E38, 0x2DF3, 0x7E39, 0x7E39, 0x1441, 0x7E3A, 0x7E3A, 0x2DFE,
+ 0x7E3B, 0x7E3B, 0x2DFB, 0x7E3C, 0x7E3C, 0x2DEF, 0x7E3D, 0x7E3D, 0x143C,
+ 0x7E3E, 0x7E3E, 0x1436, 0x7E3F, 0x7E3F, 0x1444, 0x7E40, 0x7E40, 0x2DF6,
+ 0x7E41, 0x7E41, 0x143F, 0x7E42, 0x7E42, 0x2DF0, 0x7E43, 0x7E43, 0x143A,
+ 0x7E44, 0x7E44, 0x2DFD, 0x7E45, 0x7E45, 0x143E, 0x7E46, 0x7E46, 0x1437,
+ 0x7E47, 0x7E47, 0x2DF7, 0x7E48, 0x7E48, 0x1442, 0x7E49, 0x7E49, 0x2DF5,
+ 0x7E4C, 0x7E4C, 0x2DF9, 0x7E50, 0x7E50, 0x2F83, 0x7E51, 0x7E51, 0x2F89,
+ 0x7E52, 0x7E52, 0x1511, 0x7E53, 0x7E53, 0x2F8C, 0x7E54, 0x7E55, 0x150C,
+ 0x7E56, 0x7E56, 0x2F84, 0x7E57, 0x7E57, 0x2F8B, 0x7E58, 0x7E58, 0x2F86,
+ 0x7E59, 0x7E59, 0x1512, 0x7E5A, 0x7E5A, 0x150F, 0x7E5C, 0x7E5C, 0x2F82,
+ 0x7E5E, 0x7E5E, 0x150E, 0x7E5F, 0x7E5F, 0x2F88, 0x7E60, 0x7E60, 0x2F8A,
+ 0x7E61, 0x7E61, 0x1510, 0x7E62, 0x7E62, 0x2F87, 0x7E63, 0x7E63, 0x2F85,
+ 0x7E65, 0x7E65, 0x46D2, 0x7E67, 0x7E67, 0x3766, 0x7E68, 0x7E68, 0x30E3,
+ 0x7E69, 0x7E6A, 0x15AC, 0x7E6B, 0x7E6B, 0x15A9, 0x7E6D, 0x7E6D, 0x15AA,
+ 0x7E6E, 0x7E6E, 0x377B, 0x7E6F, 0x7E6F, 0x30DF, 0x7E70, 0x7E70, 0x30DD,
+ 0x7E72, 0x7E72, 0x30E1, 0x7E73, 0x7E73, 0x15AE, 0x7E74, 0x7E74, 0x30E2,
+ 0x7E75, 0x7E75, 0x30DB, 0x7E76, 0x7E76, 0x30DA, 0x7E77, 0x7E77, 0x30DE,
+ 0x7E78, 0x7E78, 0x30DC, 0x7E79, 0x7E79, 0x15AB, 0x7E7A, 0x7E7A, 0x30E0,
+ 0x7E7B, 0x7E7B, 0x3214, 0x7E7C, 0x7E7C, 0x1631, 0x7E7D, 0x7E7D, 0x1630,
+ 0x7E7E, 0x7E7E, 0x3215, 0x7E7F, 0x7E7F, 0x3E51, 0x7E80, 0x7E80, 0x3217,
+ 0x7E81, 0x7E81, 0x3216, 0x7E82, 0x7E82, 0x1632, 0x7E86, 0x7E86, 0x32F0,
+ 0x7E87, 0x7E88, 0x32ED, 0x7E8A, 0x7E8A, 0x32EC, 0x7E8B, 0x7E8B, 0x32EF,
+ 0x7E8C, 0x7E8C, 0x1683, 0x7E8D, 0x7E8D, 0x32F1, 0x7E8E, 0x7E8E, 0x3EC9,
+ 0x7E8F, 0x7E8F, 0x1682, 0x7E91, 0x7E91, 0x33A2, 0x7E92, 0x7E92, 0x469E,
+ 0x7E93, 0x7E93, 0x1703, 0x7E94, 0x7E94, 0x1705, 0x7E95, 0x7E95, 0x342C,
+ 0x7E96, 0x7E96, 0x1704, 0x7E97, 0x7E97, 0x3494, 0x7E98, 0x7E98, 0x34DA,
+ 0x7E99, 0x7E99, 0x34DC, 0x7E9A, 0x7E9A, 0x34D9, 0x7E9B, 0x7E9B, 0x34DB,
+ 0x7E9C, 0x7E9C, 0x1759, 0x7E9F, 0x7E9F, 0x48BB, 0x7EA4, 0x7EA4, 0x455B,
+ 0x7EAC, 0x7EAC, 0x455C, 0x7EBA, 0x7EBA, 0x455D, 0x7EC7, 0x7EC7, 0x455E,
+ 0x7ECF, 0x7ECF, 0x455F, 0x7EDF, 0x7EDF, 0x4560, 0x7F06, 0x7F06, 0x4561,
+ 0x7F36, 0x7F36, 0x03F9, 0x7F37, 0x7F37, 0x4562, 0x7F38, 0x7F38, 0x07D4,
+ 0x7F39, 0x7F39, 0x1D1F, 0x7F3A, 0x7F3A, 0x0979, 0x7F3D, 0x7F3D, 0x0B61,
+ 0x7F3E, 0x7F3F, 0x2271, 0x7F40, 0x7F41, 0x3780, 0x7F43, 0x7F43, 0x2C26,
+ 0x7F44, 0x7F44, 0x1446, 0x7F45, 0x7F45, 0x2DFF, 0x7F47, 0x7F47, 0x3782,
+ 0x7F48, 0x7F48, 0x1513, 0x7F49, 0x7F49, 0x3E69, 0x7F4A, 0x7F4A, 0x30E5,
+ 0x7F4B, 0x7F4B, 0x30E4, 0x7F4C, 0x7F4C, 0x1633, 0x7F4D, 0x7F4D, 0x32F2,
+ 0x7F4E, 0x7F4E, 0x3B4F, 0x7F4F, 0x7F4F, 0x33A3, 0x7F50, 0x7F50, 0x1726,
+ 0x7F51, 0x7F51, 0x1812, 0x7F52, 0x7F52, 0x44F6, 0x7F53, 0x7F53, 0x44F9,
+ 0x7F54, 0x7F54, 0x0668, 0x7F55, 0x7F55, 0x04FC, 0x7F58, 0x7F58, 0x1BC3,
+ 0x7F5B, 0x7F5B, 0x1DAD, 0x7F5C, 0x7F5C, 0x1DA8, 0x7F5D, 0x7F5D, 0x1DAC,
+ 0x7F5E, 0x7F5E, 0x1DAA, 0x7F5F, 0x7F5F, 0x097A, 0x7F60, 0x7F60, 0x1DAB,
+ 0x7F61, 0x7F61, 0x1DA9, 0x7F63, 0x7F63, 0x1FF3, 0x7F65, 0x7F66, 0x2273,
+ 0x7F67, 0x7F68, 0x2511, 0x7F69, 0x7F6A, 0x0EC5, 0x7F6B, 0x7F6B, 0x2510,
+ 0x7F6C, 0x7F6C, 0x2513, 0x7F6D, 0x7F6D, 0x250F, 0x7F6E, 0x7F6E, 0x0EC4,
+ 0x7F70, 0x7F70, 0x106E, 0x7F71, 0x7F71, 0x4007, 0x7F72, 0x7F72, 0x0EC7,
+ 0x7F73, 0x7F73, 0x2796, 0x7F75, 0x7F75, 0x11E5, 0x7F76, 0x7F76, 0x29C2,
+ 0x7F77, 0x7F77, 0x11E6, 0x7F78, 0x7F78, 0x3F7B, 0x7F79, 0x7F79, 0x1329,
+ 0x7F7A, 0x7F7A, 0x2C29, 0x7F7B, 0x7F7C, 0x2C27, 0x7F7D, 0x7F7D, 0x2E02,
+ 0x7F7E, 0x7F7E, 0x2E01, 0x7F7F, 0x7F7F, 0x2E00, 0x7F83, 0x7F83, 0x30E6,
+ 0x7F85, 0x7F85, 0x15AF, 0x7F86, 0x7F86, 0x30E7, 0x7F87, 0x7F87, 0x33A4,
+ 0x7F88, 0x7F88, 0x1727, 0x7F89, 0x7F89, 0x3495, 0x7F8A, 0x7F8A, 0x03FA,
+ 0x7F8B, 0x7F8B, 0x066A, 0x7F8C, 0x7F8C, 0x0669, 0x7F8D, 0x7F8D, 0x1BC5,
+ 0x7F8E, 0x7F8E, 0x07D5, 0x7F8F, 0x7F8F, 0x421C, 0x7F91, 0x7F91, 0x1BC4,
+ 0x7F92, 0x7F92, 0x1DAF, 0x7F93, 0x7F93, 0x43DB, 0x7F94, 0x7F94, 0x097B,
+ 0x7F95, 0x7F95, 0x1FF4, 0x7F96, 0x7F96, 0x1DAE, 0x7F97, 0x7F97, 0x3786,
+ 0x7F9A, 0x7F9A, 0x0B63, 0x7F9B, 0x7F9B, 0x1FF7, 0x7F9C, 0x7F9D, 0x1FF5,
+ 0x7F9E, 0x7F9E, 0x0B62, 0x7FA0, 0x7FA1, 0x2276, 0x7FA2, 0x7FA2, 0x2275,
+ 0x7FA3, 0x7FA3, 0x3788, 0x7FA4, 0x7FA4, 0x0ECA, 0x7FA5, 0x7FA5, 0x2515,
+ 0x7FA6, 0x7FA6, 0x2514, 0x7FA7, 0x7FA7, 0x2516, 0x7FA8, 0x7FA8, 0x0EC9,
+ 0x7FA9, 0x7FA9, 0x0EC8, 0x7FAC, 0x7FAC, 0x29C3, 0x7FAD, 0x7FAD, 0x29C5,
+ 0x7FAE, 0x7FAE, 0x43DC, 0x7FAF, 0x7FAF, 0x11E7, 0x7FB0, 0x7FB0, 0x29C4,
+ 0x7FB1, 0x7FB1, 0x2C2A, 0x7FB2, 0x7FB2, 0x132A, 0x7FB3, 0x7FB3, 0x2F8E,
+ 0x7FB4, 0x7FB4, 0x4739, 0x7FB5, 0x7FB5, 0x2F8D, 0x7FB6, 0x7FB6, 0x15B0,
+ 0x7FB7, 0x7FB7, 0x30E8, 0x7FB8, 0x7FB8, 0x15B2, 0x7FB9, 0x7FB9, 0x15B1,
+ 0x7FBA, 0x7FBA, 0x3218, 0x7FBB, 0x7FBB, 0x32F3, 0x7FBC, 0x7FBC, 0x1684,
+ 0x7FBD, 0x7FBD, 0x03FB, 0x7FBE, 0x7FBE, 0x1BC6, 0x7FBF, 0x7FBF, 0x07D6,
+ 0x7FC0, 0x7FC0, 0x1DB2, 0x7FC1, 0x7FC1, 0x097D, 0x7FC2, 0x7FC2, 0x1DB1,
+ 0x7FC3, 0x7FC3, 0x1DB0, 0x7FC5, 0x7FC5, 0x097C, 0x7FC7, 0x7FC7, 0x1FFD,
+ 0x7FC9, 0x7FC9, 0x1FFF, 0x7FCA, 0x7FCB, 0x1FF8, 0x7FCC, 0x7FCC, 0x0B64,
+ 0x7FCD, 0x7FCD, 0x1FFA, 0x7FCE, 0x7FCE, 0x0B65, 0x7FCF, 0x7FCF, 0x1FFE,
+ 0x7FD0, 0x7FD1, 0x1FFB, 0x7FD2, 0x7FD2, 0x0B66, 0x7FD4, 0x7FD5, 0x0D1C,
+ 0x7FD7, 0x7FD7, 0x2278, 0x7FDB, 0x7FDC, 0x2517, 0x7FDD, 0x7FDD, 0x3B5E,
+ 0x7FDE, 0x7FDE, 0x279A, 0x7FDF, 0x7FDF, 0x1071, 0x7FE0, 0x7FE1, 0x106F,
+ 0x7FE2, 0x7FE3, 0x2797, 0x7FE5, 0x7FE5, 0x2799, 0x7FE6, 0x7FE6, 0x29CA,
+ 0x7FE7, 0x7FE7, 0x46E9, 0x7FE8, 0x7FE8, 0x29CB, 0x7FE9, 0x7FE9, 0x11E8,
+ 0x7FEA, 0x7FEA, 0x29C8, 0x7FEB, 0x7FEB, 0x29C7, 0x7FEC, 0x7FEC, 0x29C9,
+ 0x7FED, 0x7FED, 0x29C6, 0x7FEE, 0x7FEE, 0x132D, 0x7FEF, 0x7FEF, 0x2C2B,
+ 0x7FF0, 0x7FF1, 0x132B, 0x7FF2, 0x7FF2, 0x2E04, 0x7FF3, 0x7FF3, 0x1447,
+ 0x7FF4, 0x7FF4, 0x2E03, 0x7FF5, 0x7FF5, 0x2EFF, 0x7FF7, 0x7FF8, 0x2F8F,
+ 0x7FF9, 0x7FF9, 0x1514, 0x7FFA, 0x7FFA, 0x378E, 0x7FFB, 0x7FFB, 0x1515,
+ 0x7FFC, 0x7FFC, 0x1448, 0x7FFD, 0x7FFE, 0x30E9, 0x7FFF, 0x7FFF, 0x3219,
+ 0x8000, 0x8000, 0x1634, 0x8001, 0x8001, 0x03FC, 0x8002, 0x8002, 0x44FD,
+ 0x8003, 0x8003, 0x03FD, 0x8004, 0x8004, 0x097F, 0x8005, 0x8005, 0x066B,
+ 0x8006, 0x8006, 0x097E, 0x8007, 0x8007, 0x1BC7, 0x8008, 0x8008, 0x3791,
+ 0x800B, 0x800B, 0x0D1E, 0x800C, 0x800C, 0x03FE, 0x800D, 0x800D, 0x07D8,
+ 0x800E, 0x800F, 0x1BC8, 0x8010, 0x8010, 0x07D7, 0x8011, 0x8011, 0x07D9,
+ 0x8012, 0x8012, 0x03FF, 0x8014, 0x8014, 0x1BCA, 0x8015, 0x8015, 0x0981,
+ 0x8016, 0x8016, 0x1DB3, 0x8017, 0x8017, 0x0983, 0x8018, 0x8018, 0x0980,
+ 0x8019, 0x8019, 0x0982, 0x801B, 0x801B, 0x2002, 0x801C, 0x801C, 0x0B67,
+ 0x801D, 0x801D, 0x3792, 0x801E, 0x801E, 0x2001, 0x801F, 0x801F, 0x2000,
+ 0x8020, 0x8020, 0x473C, 0x8021, 0x8021, 0x2519, 0x8024, 0x8024, 0x279B,
+ 0x8025, 0x8025, 0x473D, 0x8026, 0x8026, 0x11E9, 0x8028, 0x8028, 0x132E,
+ 0x8029, 0x8029, 0x2C2D, 0x802A, 0x802A, 0x2C2C, 0x802C, 0x802C, 0x2E05,
+ 0x802E, 0x802E, 0x473E, 0x802F, 0x802F, 0x3794, 0x8030, 0x8030, 0x32F4,
+ 0x8031, 0x8031, 0x473F, 0x8033, 0x8033, 0x0400, 0x8034, 0x8034, 0x18D8,
+ 0x8035, 0x8035, 0x1A27, 0x8036, 0x8036, 0x07DA, 0x8037, 0x8037, 0x1BCB,
+ 0x8039, 0x8039, 0x1DB5, 0x803B, 0x803C, 0x3797, 0x803D, 0x803D, 0x0984,
+ 0x803E, 0x803E, 0x1DB4, 0x803F, 0x803F, 0x0985, 0x8043, 0x8043, 0x2004,
+ 0x8046, 0x8046, 0x0B69, 0x8047, 0x8047, 0x2003, 0x8048, 0x8048, 0x2005,
+ 0x804A, 0x804A, 0x0B68, 0x804F, 0x8050, 0x227A, 0x8051, 0x8051, 0x2279,
+ 0x8052, 0x8052, 0x0D1F, 0x8054, 0x8054, 0x4740, 0x8056, 0x8056, 0x0ECB,
+ 0x8058, 0x8058, 0x0ECC, 0x805A, 0x805A, 0x1073, 0x805B, 0x805B, 0x3FE5,
+ 0x805C, 0x805C, 0x279D, 0x805D, 0x805D, 0x279C, 0x805E, 0x805E, 0x1072,
+ 0x8061, 0x8061, 0x3799, 0x8062, 0x8062, 0x3FE3, 0x8063, 0x8063, 0x3FDC,
+ 0x8064, 0x8064, 0x29CC, 0x8066, 0x8066, 0x3FDB, 0x8067, 0x8067, 0x29CD,
+ 0x806C, 0x806C, 0x2C2E, 0x806F, 0x806F, 0x144C, 0x8070, 0x8070, 0x144B,
+ 0x8071, 0x8072, 0x1449, 0x8073, 0x8073, 0x144D, 0x8075, 0x8075, 0x2F91,
+ 0x8076, 0x8076, 0x1517, 0x8077, 0x8077, 0x1516, 0x8078, 0x8078, 0x30EB,
+ 0x8079, 0x8079, 0x321A, 0x807D, 0x807D, 0x16D3, 0x807E, 0x807E, 0x16D2,
+ 0x807F, 0x807F, 0x0401, 0x8080, 0x8080, 0x44FE, 0x8082, 0x8082, 0x1CEC,
+ 0x8084, 0x8084, 0x0ECE, 0x8085, 0x8085, 0x0D20, 0x8086, 0x8086, 0x0ECD,
+ 0x8087, 0x8087, 0x1074, 0x8089, 0x8089, 0x0402, 0x808A, 0x808A, 0x17B3,
+ 0x808B, 0x808C, 0x0403, 0x808F, 0x808F, 0x1A28, 0x8090, 0x8090, 0x18DB,
+ 0x8092, 0x8092, 0x18DC, 0x8093, 0x8093, 0x04FE, 0x8095, 0x8095, 0x18D9,
+ 0x8096, 0x8096, 0x04FD, 0x8098, 0x8098, 0x0500, 0x8099, 0x8099, 0x18DA,
+ 0x809A, 0x809A, 0x0502, 0x809B, 0x809B, 0x0501, 0x809C, 0x809C, 0x18DD,
+ 0x809D, 0x809D, 0x04FF, 0x809F, 0x809F, 0x4576, 0x80A1, 0x80A1, 0x0670,
+ 0x80A2, 0x80A2, 0x066E, 0x80A3, 0x80A3, 0x1A2A, 0x80A5, 0x80A5, 0x066D,
+ 0x80A7, 0x80A7, 0x37A0, 0x80A9, 0x80A9, 0x0672, 0x80AA, 0x80AA, 0x0674,
+ 0x80AB, 0x80AB, 0x0671, 0x80AD, 0x80AD, 0x1A2D, 0x80AE, 0x80AE, 0x1A29,
+ 0x80AF, 0x80AF, 0x0675, 0x80B1, 0x80B1, 0x066F, 0x80B2, 0x80B2, 0x0503,
+ 0x80B4, 0x80B4, 0x0673, 0x80B5, 0x80B5, 0x1A2C, 0x80B6, 0x80B6, 0x3EAE,
+ 0x80B7, 0x80B7, 0x4743, 0x80B8, 0x80B8, 0x1A2B, 0x80BA, 0x80BA, 0x066C,
+ 0x80BC, 0x80BC, 0x4572, 0x80BD, 0x80BD, 0x3E7B, 0x80C2, 0x80C2, 0x1BD1,
+ 0x80C3, 0x80C4, 0x07DE, 0x80C5, 0x80C5, 0x1BD3, 0x80C6, 0x80C6, 0x3B74,
+ 0x80C7, 0x80C7, 0x1BCD, 0x80C8, 0x80C8, 0x1BD0, 0x80C9, 0x80C9, 0x1BD9,
+ 0x80CA, 0x80CA, 0x1BD7, 0x80CC, 0x80CC, 0x07E0, 0x80CD, 0x80CD, 0x1BDD,
+ 0x80CE, 0x80CE, 0x07E3, 0x80CF, 0x80CF, 0x1BDA, 0x80D0, 0x80D0, 0x1BD2,
+ 0x80D1, 0x80D1, 0x1BCF, 0x80D4, 0x80D4, 0x227D, 0x80D5, 0x80D5, 0x1BD8,
+ 0x80D6, 0x80D6, 0x07DB, 0x80D7, 0x80D7, 0x1BDB, 0x80D8, 0x80D8, 0x1BCC,
+ 0x80D9, 0x80D9, 0x1BD5, 0x80DA, 0x80DA, 0x07DD, 0x80DB, 0x80DB, 0x07E2,
+ 0x80DC, 0x80DC, 0x1BD6, 0x80DD, 0x80DD, 0x07E6, 0x80DE, 0x80DE, 0x07E4,
+ 0x80E0, 0x80E0, 0x1BCE, 0x80E1, 0x80E1, 0x07E1, 0x80E3, 0x80E3, 0x1BD4,
+ 0x80E4, 0x80E4, 0x07E5, 0x80E5, 0x80E5, 0x07DC, 0x80E6, 0x80E6, 0x1BDC,
+ 0x80E9, 0x80E9, 0x4744, 0x80EC, 0x80EC, 0x45E9, 0x80ED, 0x80ED, 0x098A,
+ 0x80EF, 0x80EF, 0x0993, 0x80F0, 0x80F0, 0x0988, 0x80F1, 0x80F1, 0x0986,
+ 0x80F2, 0x80F2, 0x1DB7, 0x80F3, 0x80F3, 0x098E, 0x80F4, 0x80F4, 0x098B,
+ 0x80F5, 0x80F5, 0x1DB9, 0x80F6, 0x80F6, 0x4574, 0x80F8, 0x80F8, 0x098D,
+ 0x80F9, 0x80F9, 0x1DB8, 0x80FA, 0x80FA, 0x1DB6, 0x80FB, 0x80FB, 0x1DBB,
+ 0x80FC, 0x80FC, 0x0992, 0x80FD, 0x80FD, 0x0990, 0x80FE, 0x80FE, 0x227C,
+ 0x8100, 0x8100, 0x1DBC, 0x8101, 0x8101, 0x1DBA, 0x8102, 0x8102, 0x0987,
+ 0x8103, 0x8103, 0x3FE7, 0x8105, 0x8105, 0x0989, 0x8106, 0x8106, 0x098C,
+ 0x8107, 0x8107, 0x37A2, 0x8108, 0x8108, 0x098F, 0x8109, 0x8109, 0x3B75,
+ 0x810A, 0x810A, 0x0991, 0x810C, 0x810C, 0x4746, 0x810E, 0x810E, 0x4747,
+ 0x8112, 0x8112, 0x4748, 0x8114, 0x8114, 0x4749, 0x8115, 0x8115, 0x200F,
+ 0x8116, 0x8116, 0x0B6B, 0x8117, 0x8117, 0x3E6D, 0x8118, 0x8118, 0x2006,
+ 0x8119, 0x8119, 0x2008, 0x811A, 0x811A, 0x37A3, 0x811B, 0x811B, 0x2009,
+ 0x811D, 0x811D, 0x2011, 0x811E, 0x811E, 0x200D, 0x811F, 0x811F, 0x200B,
+ 0x8121, 0x8121, 0x200E, 0x8122, 0x8122, 0x2012, 0x8123, 0x8123, 0x0B6C,
+ 0x8124, 0x8124, 0x0B70, 0x8125, 0x8125, 0x2007, 0x8127, 0x8127, 0x2010,
+ 0x8129, 0x8129, 0x0B6E, 0x812A, 0x812A, 0x3A39, 0x812B, 0x812B, 0x0B6D,
+ 0x812C, 0x812C, 0x200C, 0x812D, 0x812D, 0x200A, 0x812F, 0x812F, 0x0B6A,
+ 0x8130, 0x8130, 0x0B6F, 0x8132, 0x8132, 0x3E79, 0x8134, 0x8134, 0x45EC,
+ 0x8137, 0x8137, 0x3B72, 0x8139, 0x8139, 0x0D26, 0x813A, 0x813A, 0x2285,
+ 0x813D, 0x813D, 0x2283, 0x813E, 0x813E, 0x0D28, 0x8142, 0x8142, 0x3B76,
+ 0x8143, 0x8143, 0x227E, 0x8144, 0x8144, 0x2527, 0x8146, 0x8146, 0x0D27,
+ 0x8147, 0x8147, 0x2282, 0x8148, 0x8148, 0x3E76, 0x814A, 0x814A, 0x227F,
+ 0x814B, 0x814B, 0x0D23, 0x814C, 0x814C, 0x0D29, 0x814D, 0x814D, 0x2284,
+ 0x814E, 0x814E, 0x0D25, 0x814F, 0x814F, 0x2281, 0x8150, 0x8150, 0x1075,
+ 0x8151, 0x8151, 0x0D24, 0x8152, 0x8152, 0x2280, 0x8153, 0x8153, 0x0D2A,
+ 0x8154, 0x8154, 0x0D22, 0x8155, 0x8155, 0x0D21, 0x8156, 0x8156, 0x474C,
+ 0x8159, 0x815A, 0x474D, 0x815B, 0x815B, 0x251F, 0x815C, 0x815C, 0x251D,
+ 0x815E, 0x815E, 0x2523, 0x8160, 0x8160, 0x251B, 0x8161, 0x8161, 0x2528,
+ 0x8162, 0x8162, 0x2520, 0x8164, 0x8164, 0x251A, 0x8165, 0x8165, 0x0ED2,
+ 0x8166, 0x8166, 0x0ED8, 0x8167, 0x8167, 0x2525, 0x8169, 0x8169, 0x251E,
+ 0x816B, 0x816B, 0x0ED5, 0x816D, 0x816D, 0x43C4, 0x816E, 0x816E, 0x0ED3,
+ 0x816F, 0x816F, 0x2526, 0x8170, 0x8170, 0x0ED0, 0x8171, 0x8171, 0x0ECF,
+ 0x8172, 0x8172, 0x2521, 0x8173, 0x8173, 0x0ED4, 0x8174, 0x8174, 0x0D2B,
+ 0x8176, 0x8176, 0x2524, 0x8177, 0x8177, 0x251C, 0x8178, 0x8178, 0x0ED1,
+ 0x8179, 0x817A, 0x0ED6, 0x817C, 0x817C, 0x4750, 0x817F, 0x817F, 0x107A,
+ 0x8180, 0x8180, 0x1076, 0x8182, 0x8182, 0x107B, 0x8183, 0x8183, 0x27A0,
+ 0x8184, 0x8184, 0x43C5, 0x8186, 0x8186, 0x279F, 0x8187, 0x8187, 0x27A1,
+ 0x8188, 0x8188, 0x1078, 0x8189, 0x8189, 0x279E, 0x818A, 0x818A, 0x1079,
+ 0x818B, 0x818B, 0x27A4, 0x818C, 0x818C, 0x27A3, 0x818D, 0x818D, 0x27A2,
+ 0x818F, 0x818F, 0x1077, 0x8193, 0x8193, 0x43C6, 0x8195, 0x8195, 0x29D1,
+ 0x8197, 0x8197, 0x29D4, 0x8198, 0x8198, 0x11EF, 0x8199, 0x8199, 0x29D3,
+ 0x819A, 0x819A, 0x11EE, 0x819B, 0x819D, 0x11EA, 0x819E, 0x819E, 0x29D0,
+ 0x819F, 0x819F, 0x29CF, 0x81A0, 0x81A0, 0x11ED, 0x81A2, 0x81A2, 0x29D2,
+ 0x81A3, 0x81A3, 0x29CE, 0x81A5, 0x81A5, 0x4753, 0x81A6, 0x81A6, 0x2C30,
+ 0x81A7, 0x81A7, 0x2C3A, 0x81A8, 0x81A8, 0x1331, 0x81A9, 0x81A9, 0x1330,
+ 0x81AA, 0x81AA, 0x4364, 0x81AB, 0x81AB, 0x2C34, 0x81AC, 0x81AC, 0x2C36,
+ 0x81AE, 0x81AE, 0x2C31, 0x81B0, 0x81B0, 0x2C35, 0x81B1, 0x81B1, 0x2C2F,
+ 0x81B2, 0x81B2, 0x2C38, 0x81B3, 0x81B3, 0x132F, 0x81B4, 0x81B4, 0x2C37,
+ 0x81B5, 0x81B5, 0x2C33, 0x81B6, 0x81B6, 0x3EB2, 0x81B7, 0x81B7, 0x2C39,
+ 0x81B9, 0x81B9, 0x2C32, 0x81BA, 0x81BA, 0x1450, 0x81BB, 0x81BB, 0x2E06,
+ 0x81BC, 0x81BC, 0x2E0C, 0x81BD, 0x81BD, 0x1454, 0x81BE, 0x81BE, 0x1456,
+ 0x81BF, 0x81BF, 0x1453, 0x81C0, 0x81C0, 0x1452, 0x81C1, 0x81C1, 0x4755,
+ 0x81C2, 0x81C2, 0x1451, 0x81C3, 0x81C3, 0x144F, 0x81C4, 0x81C4, 0x2E07,
+ 0x81C5, 0x81C5, 0x2E0A, 0x81C6, 0x81C6, 0x144E, 0x81C7, 0x81C7, 0x2E0B,
+ 0x81C8, 0x81C8, 0x3FEE, 0x81C9, 0x81C9, 0x1455, 0x81CA, 0x81CA, 0x2E09,
+ 0x81CC, 0x81CC, 0x2E08, 0x81CD, 0x81CD, 0x1518, 0x81CF, 0x81CF, 0x1519,
+ 0x81D0, 0x81D0, 0x2F94, 0x81D1, 0x81D2, 0x2F92, 0x81D5, 0x81D5, 0x30ED,
+ 0x81D7, 0x81D7, 0x30EC, 0x81D8, 0x81D8, 0x15B3, 0x81D9, 0x81D9, 0x321C,
+ 0x81DA, 0x81DA, 0x1635, 0x81DB, 0x81DB, 0x321B, 0x81DD, 0x81DD, 0x32F5,
+ 0x81DE, 0x81DE, 0x33A5, 0x81DF, 0x81DF, 0x16D4, 0x81E0, 0x81E1, 0x34DD,
+ 0x81E2, 0x81E2, 0x1706, 0x81E3, 0x81E3, 0x0405, 0x81E4, 0x81E4, 0x4756,
+ 0x81E5, 0x81E5, 0x0676, 0x81E6, 0x81E6, 0x2286, 0x81E7, 0x81E7, 0x107C,
+ 0x81E8, 0x81E8, 0x1457, 0x81E9, 0x81E9, 0x2E0D, 0x81EA, 0x81EA, 0x0406,
+ 0x81EC, 0x81EC, 0x0995, 0x81ED, 0x81ED, 0x0994, 0x81EE, 0x81EE, 0x2287,
+ 0x81EF, 0x81EF, 0x42D1, 0x81F2, 0x81F2, 0x2C3B, 0x81F3, 0x81F3, 0x0407,
+ 0x81F4, 0x81F4, 0x07E7, 0x81F6, 0x81F6, 0x3D61, 0x81F7, 0x81F9, 0x2288,
+ 0x81FA, 0x81FA, 0x107D, 0x81FB, 0x81FB, 0x1332, 0x81FC, 0x81FC, 0x0408,
+ 0x81FE, 0x81FE, 0x0677, 0x81FF, 0x81FF, 0x1BDE, 0x8200, 0x8200, 0x0996,
+ 0x8201, 0x8201, 0x1DBD, 0x8202, 0x8202, 0x0B71, 0x8204, 0x8204, 0x228B,
+ 0x8205, 0x8205, 0x0ED9, 0x8207, 0x8207, 0x107E, 0x8208, 0x8208, 0x1333,
+ 0x8209, 0x8209, 0x1458, 0x820A, 0x820A, 0x151A, 0x820B, 0x820B, 0x30EE,
+ 0x820C, 0x820C, 0x0409, 0x820D, 0x820D, 0x0678, 0x8210, 0x8210, 0x0997,
+ 0x8211, 0x8211, 0x2013, 0x8212, 0x8212, 0x0D2C, 0x8214, 0x8214, 0x107F,
+ 0x8215, 0x8215, 0x27A5, 0x8216, 0x8216, 0x29D5, 0x8218, 0x8218, 0x37AA,
+ 0x821A, 0x821A, 0x3FE1, 0x821B, 0x821B, 0x040A, 0x821C, 0x821C, 0x0D2D,
+ 0x821D, 0x821D, 0x2529, 0x821E, 0x821E, 0x1080, 0x821F, 0x821F, 0x040B,
+ 0x8220, 0x8220, 0x1A2E, 0x8221, 0x8221, 0x1BDF, 0x8222, 0x8222, 0x07E8,
+ 0x8225, 0x8225, 0x1DBF, 0x8226, 0x8226, 0x420D, 0x8228, 0x8228, 0x099A,
+ 0x8229, 0x8229, 0x37B0, 0x822A, 0x822B, 0x0998, 0x822C, 0x822C, 0x099B,
+ 0x822D, 0x822D, 0x3ED0, 0x822F, 0x822F, 0x1DBE, 0x8232, 0x8232, 0x2018,
+ 0x8233, 0x8233, 0x2015, 0x8234, 0x8234, 0x2017, 0x8235, 0x8235, 0x0B72,
+ 0x8236, 0x8236, 0x0B74, 0x8237, 0x8237, 0x0B73, 0x8238, 0x8238, 0x2014,
+ 0x8239, 0x8239, 0x0B75, 0x823A, 0x823A, 0x2016, 0x823C, 0x823D, 0x228C,
+ 0x823E, 0x823E, 0x4582, 0x823F, 0x823F, 0x228E, 0x8240, 0x8240, 0x252C,
+ 0x8242, 0x8242, 0x252D, 0x8244, 0x8244, 0x252B, 0x8245, 0x8245, 0x252E,
+ 0x8247, 0x8247, 0x0EDA, 0x8249, 0x8249, 0x252A, 0x824B, 0x824B, 0x1081,
+ 0x824E, 0x824E, 0x29DA, 0x824F, 0x824F, 0x29D6, 0x8250, 0x8250, 0x29D9,
+ 0x8251, 0x8251, 0x29DB, 0x8252, 0x8252, 0x29D8, 0x8253, 0x8253, 0x29D7,
+ 0x8254, 0x8254, 0x4757, 0x8255, 0x8257, 0x2C3C, 0x8258, 0x8259, 0x1334,
+ 0x825A, 0x825A, 0x2E0F, 0x825B, 0x825B, 0x2E0E, 0x825C, 0x825C, 0x2E10,
+ 0x825E, 0x825E, 0x2F96, 0x825F, 0x825F, 0x2F95, 0x8261, 0x8261, 0x30F0,
+ 0x8262, 0x8262, 0x3B7A, 0x8263, 0x8263, 0x30F1, 0x8264, 0x8264, 0x30EF,
+ 0x8265, 0x8265, 0x3B7B, 0x8266, 0x8266, 0x1636, 0x8268, 0x8269, 0x321D,
+ 0x826B, 0x826B, 0x33A6, 0x826C, 0x826C, 0x342D, 0x826D, 0x826D, 0x3496,
+ 0x826E, 0x826E, 0x040C, 0x826F, 0x826F, 0x0504, 0x8271, 0x8271, 0x1459,
+ 0x8272, 0x8272, 0x040D, 0x8274, 0x8274, 0x2019, 0x8275, 0x8275, 0x228F,
+ 0x8276, 0x8276, 0x4759, 0x8277, 0x8277, 0x172E, 0x8278, 0x8278, 0x1813,
+ 0x8279, 0x8279, 0x4722, 0x827A, 0x827A, 0x4563, 0x827B, 0x827B, 0x37C8,
+ 0x827C, 0x827C, 0x1814, 0x827D, 0x827D, 0x1816, 0x827E, 0x827E, 0x040E,
+ 0x827F, 0x827F, 0x1817, 0x8280, 0x8280, 0x1815, 0x8283, 0x8284, 0x18E5,
+ 0x8285, 0x8285, 0x18E0, 0x8287, 0x8287, 0x4132, 0x828A, 0x828A, 0x18E4,
+ 0x828B, 0x828B, 0x0506, 0x828D, 0x828D, 0x0507, 0x828E, 0x828E, 0x18E1,
+ 0x828F, 0x828F, 0x18DF, 0x8290, 0x8290, 0x18DE, 0x8291, 0x8291, 0x18E2,
+ 0x8292, 0x8292, 0x0505, 0x8293, 0x8293, 0x18E3, 0x8294, 0x8294, 0x1BE0,
+ 0x8298, 0x8298, 0x1A33, 0x8299, 0x8299, 0x067B, 0x829A, 0x829A, 0x1A32,
+ 0x829B, 0x829B, 0x1A34, 0x829D, 0x829D, 0x067A, 0x829E, 0x829E, 0x1A39,
+ 0x829F, 0x829F, 0x067E, 0x82A0, 0x82A0, 0x1A2F, 0x82A1, 0x82A1, 0x1A3D,
+ 0x82A2, 0x82A2, 0x1A43, 0x82A3, 0x82A3, 0x0685, 0x82A4, 0x82A4, 0x1A40,
+ 0x82A5, 0x82A5, 0x0682, 0x82A6, 0x82A6, 0x3D73, 0x82A7, 0x82A7, 0x1A36,
+ 0x82A8, 0x82A8, 0x1A3C, 0x82A9, 0x82A9, 0x1A3E, 0x82AA, 0x82AA, 0x37BC,
+ 0x82AB, 0x82AB, 0x1A31, 0x82AC, 0x82AC, 0x0681, 0x82AD, 0x82AD, 0x067C,
+ 0x82AE, 0x82AE, 0x1A37, 0x82AF, 0x82AF, 0x0683, 0x82B0, 0x82B0, 0x0686,
+ 0x82B1, 0x82B1, 0x0680, 0x82B3, 0x82B3, 0x0679, 0x82B4, 0x82B4, 0x1A3B,
+ 0x82B5, 0x82B5, 0x1A35, 0x82B6, 0x82B6, 0x1A42, 0x82B7, 0x82B7, 0x0688,
+ 0x82B8, 0x82B8, 0x0684, 0x82B9, 0x82B9, 0x067F, 0x82BA, 0x82BA, 0x1A3A,
+ 0x82BB, 0x82BB, 0x099C, 0x82BC, 0x82BC, 0x1A38, 0x82BD, 0x82BD, 0x067D,
+ 0x82BE, 0x82BE, 0x0687, 0x82C0, 0x82C0, 0x1A30, 0x82C2, 0x82C2, 0x1A3F,
+ 0x82C3, 0x82C3, 0x1A41, 0x82C4, 0x82C4, 0x45E3, 0x82CA, 0x82CA, 0x475A,
+ 0x82CF, 0x82CF, 0x4564, 0x82D0, 0x82D0, 0x37C1, 0x82D1, 0x82D1, 0x07F9,
+ 0x82D2, 0x82D2, 0x07F3, 0x82D3, 0x82D3, 0x07FB, 0x82D4, 0x82D4, 0x07F8,
+ 0x82D5, 0x82D5, 0x1BE7, 0x82D6, 0x82D6, 0x1BEA, 0x82D7, 0x82D7, 0x07F4,
+ 0x82D8, 0x82D8, 0x475B, 0x82D9, 0x82D9, 0x1BE1, 0x82DB, 0x82DB, 0x07ED,
+ 0x82DC, 0x82DC, 0x07F7, 0x82DE, 0x82DE, 0x07FA, 0x82DF, 0x82DF, 0x07FC,
+ 0x82E0, 0x82E0, 0x1BF6, 0x82E1, 0x82E1, 0x1BED, 0x82E2, 0x82E2, 0x37C9,
+ 0x82E3, 0x82E3, 0x07EC, 0x82E4, 0x82E4, 0x1BF5, 0x82E5, 0x82E5, 0x07F0,
+ 0x82E6, 0x82E6, 0x07EE, 0x82E7, 0x82E7, 0x07E9, 0x82E8, 0x82E8, 0x1BE5,
+ 0x82EA, 0x82EA, 0x1BF4, 0x82EB, 0x82EB, 0x1BE9, 0x82EC, 0x82EC, 0x1BEC,
+ 0x82ED, 0x82ED, 0x1BF9, 0x82EE, 0x82EE, 0x4018, 0x82EF, 0x82EF, 0x07FD,
+ 0x82F0, 0x82F0, 0x1BF3, 0x82F1, 0x82F1, 0x07F5, 0x82F2, 0x82F2, 0x1BEE,
+ 0x82F3, 0x82F3, 0x1BF8, 0x82F4, 0x82F4, 0x1BEB, 0x82F5, 0x82F5, 0x1BEF,
+ 0x82F6, 0x82F6, 0x1BF2, 0x82F7, 0x82F7, 0x3E77, 0x82F9, 0x82F9, 0x1BE3,
+ 0x82FA, 0x82FA, 0x1BF7, 0x82FB, 0x82FB, 0x1BF1, 0x82FC, 0x82FC, 0x412D,
+ 0x82FD, 0x82FD, 0x3D92, 0x82FE, 0x82FE, 0x1BE2, 0x82FF, 0x82FF, 0x43DE,
+ 0x8300, 0x8300, 0x1BE6, 0x8301, 0x8301, 0x07F6, 0x8302, 0x8302, 0x07F1,
+ 0x8303, 0x8303, 0x07EA, 0x8304, 0x8304, 0x07EF, 0x8305, 0x8305, 0x07EB,
+ 0x8306, 0x8306, 0x07FE, 0x8307, 0x8307, 0x1BE4, 0x8308, 0x8308, 0x1DD0,
+ 0x8309, 0x8309, 0x07F2, 0x830B, 0x830B, 0x3EB6, 0x830C, 0x830C, 0x1BF0,
+ 0x830D, 0x830D, 0x1A7D, 0x8316, 0x8316, 0x1DD3, 0x8317, 0x8317, 0x09AA,
+ 0x8318, 0x8318, 0x37CA, 0x8319, 0x8319, 0x1DC3, 0x831A, 0x831A, 0x37C2,
+ 0x831B, 0x831B, 0x1DCE, 0x831C, 0x831C, 0x1DCA, 0x831D, 0x831D, 0x37D1,
+ 0x831E, 0x831E, 0x1DDD, 0x8320, 0x8320, 0x1DD5, 0x8322, 0x8322, 0x1DCB,
+ 0x8324, 0x8324, 0x1DD4, 0x8325, 0x8325, 0x1DC5, 0x8326, 0x8326, 0x1DC9,
+ 0x8327, 0x8327, 0x1DE0, 0x8328, 0x8328, 0x09AD, 0x8329, 0x8329, 0x1DD8,
+ 0x832A, 0x832A, 0x1DCF, 0x832B, 0x832B, 0x099D, 0x832C, 0x832C, 0x1DDE,
+ 0x832D, 0x832D, 0x1DC1, 0x832F, 0x832F, 0x1DD7, 0x8331, 0x8331, 0x09AC,
+ 0x8332, 0x8332, 0x09A7, 0x8333, 0x8333, 0x1DC0, 0x8334, 0x8334, 0x09A5,
+ 0x8335, 0x8335, 0x09A4, 0x8336, 0x8336, 0x09A9, 0x8337, 0x8337, 0x1DD6,
+ 0x8338, 0x8338, 0x09A1, 0x8339, 0x8339, 0x09A8, 0x833A, 0x833A, 0x1BE8,
+ 0x833B, 0x833B, 0x2290, 0x833C, 0x833C, 0x1DD1, 0x833D, 0x833D, 0x3D2A,
+ 0x833F, 0x833F, 0x1DC7, 0x8340, 0x8340, 0x09AB, 0x8341, 0x8341, 0x1DC8,
+ 0x8342, 0x8342, 0x1DCC, 0x8343, 0x8343, 0x09AE, 0x8344, 0x8344, 0x1DC2,
+ 0x8345, 0x8345, 0x1DDA, 0x8347, 0x8347, 0x1DD9, 0x8348, 0x8348, 0x1DE1,
+ 0x8349, 0x8349, 0x09A3, 0x834A, 0x834A, 0x09A0, 0x834B, 0x834B, 0x1DDF,
+ 0x834C, 0x834C, 0x1DDB, 0x834D, 0x834D, 0x1DD2, 0x834E, 0x834E, 0x1DCD,
+ 0x834F, 0x834F, 0x09A6, 0x8350, 0x8350, 0x09A2, 0x8351, 0x8351, 0x1DC4,
+ 0x8352, 0x8352, 0x099E, 0x8353, 0x8353, 0x1DDC, 0x8354, 0x8354, 0x099F,
+ 0x8356, 0x8356, 0x1DC6, 0x8357, 0x8357, 0x475D, 0x8362, 0x8362, 0x37B6,
+ 0x8363, 0x8363, 0x41EB, 0x8366, 0x8366, 0x3E1E, 0x836F, 0x836F, 0x4565,
+ 0x8373, 0x8373, 0x201F, 0x8374, 0x8374, 0x2021, 0x8375, 0x8375, 0x2026,
+ 0x8376, 0x8376, 0x203A, 0x8377, 0x8377, 0x0B83, 0x8378, 0x8378, 0x0B79,
+ 0x837A, 0x837A, 0x201E, 0x837B, 0x837C, 0x0B84, 0x837D, 0x837D, 0x2029,
+ 0x837E, 0x837E, 0x2030, 0x837F, 0x837F, 0x2036, 0x8381, 0x8381, 0x2023,
+ 0x8383, 0x8383, 0x202A, 0x8385, 0x8385, 0x37D3, 0x8386, 0x8386, 0x0B86,
+ 0x8387, 0x8387, 0x2038, 0x8388, 0x8388, 0x2033, 0x8389, 0x8389, 0x0B81,
+ 0x838A, 0x838A, 0x0B7F, 0x838B, 0x838B, 0x202F, 0x838C, 0x838C, 0x202B,
+ 0x838D, 0x838D, 0x201D, 0x838E, 0x838E, 0x0B76, 0x838F, 0x838F, 0x2022,
+ 0x8390, 0x8390, 0x201A, 0x8391, 0x8391, 0x37EC, 0x8392, 0x8392, 0x0B7E,
+ 0x8393, 0x8393, 0x0B80, 0x8394, 0x8394, 0x2027, 0x8395, 0x8395, 0x2024,
+ 0x8396, 0x8396, 0x0B7B, 0x8397, 0x8397, 0x2034, 0x8398, 0x8398, 0x0B78,
+ 0x8399, 0x8399, 0x2025, 0x839A, 0x839A, 0x22B9, 0x839B, 0x839B, 0x202D,
+ 0x839C, 0x839C, 0x374D, 0x839D, 0x839D, 0x202C, 0x839E, 0x839E, 0x0B77,
+ 0x83A0, 0x83A0, 0x0B82, 0x83A2, 0x83A2, 0x0B7A, 0x83A3, 0x83A3, 0x201B,
+ 0x83A4, 0x83A4, 0x2020, 0x83A5, 0x83A5, 0x2031, 0x83A6, 0x83A6, 0x2037,
+ 0x83A7, 0x83A7, 0x0B87, 0x83A8, 0x83A8, 0x201C, 0x83A9, 0x83A9, 0x2028,
+ 0x83AA, 0x83AA, 0x202E, 0x83AB, 0x83AB, 0x0B7D, 0x83AC, 0x83AC, 0x37D6,
+ 0x83AE, 0x83AE, 0x2039, 0x83AF, 0x83AF, 0x2032, 0x83B0, 0x83B0, 0x2035,
+ 0x83B9, 0x83B9, 0x42A7, 0x83BD, 0x83BD, 0x0B7C, 0x83BE, 0x83BE, 0x3F59,
+ 0x83BF, 0x83BF, 0x22A0, 0x83C0, 0x83C0, 0x2294, 0x83C1, 0x83C1, 0x0D35,
+ 0x83C2, 0x83C2, 0x22B1, 0x83C3, 0x83C3, 0x22BA, 0x83C4, 0x83C4, 0x22BD,
+ 0x83C5, 0x83C5, 0x0D33, 0x83C6, 0x83C6, 0x229C, 0x83C7, 0x83C7, 0x22B5,
+ 0x83C8, 0x83C8, 0x229D, 0x83C9, 0x83C9, 0x22AB, 0x83CA, 0x83CA, 0x0D40,
+ 0x83CB, 0x83CB, 0x22A7, 0x83CC, 0x83CC, 0x0D3D, 0x83CD, 0x83CD, 0x4055,
+ 0x83CE, 0x83CE, 0x22A8, 0x83CF, 0x83CF, 0x2291, 0x83D1, 0x83D1, 0x22B6,
+ 0x83D3, 0x83D3, 0x37D8, 0x83D4, 0x83D4, 0x0D46, 0x83D5, 0x83D5, 0x22B3,
+ 0x83D6, 0x83D6, 0x22A9, 0x83D7, 0x83D7, 0x22BF, 0x83D8, 0x83D8, 0x22A4,
+ 0x83D9, 0x83D9, 0x254E, 0x83DB, 0x83DB, 0x22C2, 0x83DC, 0x83DC, 0x0D44,
+ 0x83DD, 0x83DD, 0x22A2, 0x83DE, 0x83DE, 0x22AE, 0x83DF, 0x83DF, 0x0D47,
+ 0x83E0, 0x83E0, 0x0D32, 0x83E1, 0x83E1, 0x22A6, 0x83E2, 0x83E2, 0x22C0,
+ 0x83E3, 0x83E3, 0x229F, 0x83E4, 0x83E4, 0x2298, 0x83E5, 0x83E5, 0x22A3,
+ 0x83E7, 0x83E7, 0x2297, 0x83E8, 0x83E8, 0x2295, 0x83E9, 0x83E9, 0x0D2E,
+ 0x83EA, 0x83EA, 0x22B7, 0x83EB, 0x83EB, 0x229E, 0x83EC, 0x83EC, 0x22BB,
+ 0x83ED, 0x83ED, 0x3D2C, 0x83EE, 0x83EE, 0x22BC, 0x83EF, 0x83EF, 0x0D36,
+ 0x83F0, 0x83F0, 0x0D3B, 0x83F1, 0x83F1, 0x0D37, 0x83F2, 0x83F2, 0x0D3F,
+ 0x83F3, 0x83F3, 0x22B2, 0x83F4, 0x83F4, 0x0D38, 0x83F5, 0x83F5, 0x22AA,
+ 0x83F6, 0x83F6, 0x229A, 0x83F8, 0x83F8, 0x0D30, 0x83F9, 0x83F9, 0x2292,
+ 0x83FA, 0x83FA, 0x22B4, 0x83FB, 0x83FB, 0x22BE, 0x83FC, 0x83FC, 0x2299,
+ 0x83FD, 0x83FD, 0x0D3E, 0x83FE, 0x83FE, 0x22C3, 0x83FF, 0x83FF, 0x22A5,
+ 0x8401, 0x8401, 0x22A1, 0x8403, 0x8403, 0x0D2F, 0x8404, 0x8404, 0x0D43,
+ 0x8405, 0x8405, 0x475F, 0x8406, 0x8406, 0x22B0, 0x8407, 0x8407, 0x0D45,
+ 0x8409, 0x8409, 0x22AC, 0x840A, 0x840A, 0x0D3A, 0x840B, 0x840B, 0x0D34,
+ 0x840C, 0x840C, 0x0D3C, 0x840D, 0x840D, 0x0D31, 0x840E, 0x840E, 0x0D42,
+ 0x840F, 0x840F, 0x22AD, 0x8410, 0x8410, 0x229B, 0x8411, 0x8411, 0x22AF,
+ 0x8412, 0x8412, 0x2296, 0x8413, 0x8413, 0x22B8, 0x8414, 0x8414, 0x3C10,
+ 0x8416, 0x8416, 0x4037, 0x8418, 0x8418, 0x3E7A, 0x841B, 0x841B, 0x22C1,
+ 0x841C, 0x841C, 0x3EB3, 0x8420, 0x8420, 0x3C55, 0x8421, 0x8421, 0x3751,
+ 0x8423, 0x8423, 0x2293, 0x8424, 0x8424, 0x4951, 0x8426, 0x8426, 0x46D8,
+ 0x8429, 0x8429, 0x254D, 0x842B, 0x842B, 0x2563, 0x842C, 0x842C, 0x0EAC,
+ 0x842D, 0x842D, 0x2552, 0x842E, 0x842E, 0x422D, 0x842F, 0x842F, 0x2550,
+ 0x8430, 0x8430, 0x253B, 0x8431, 0x8431, 0x0EDE, 0x8432, 0x8432, 0x254B,
+ 0x8433, 0x8433, 0x255F, 0x8434, 0x8434, 0x2547, 0x8435, 0x8435, 0x0EE6,
+ 0x8436, 0x8436, 0x255E, 0x8437, 0x8437, 0x2545, 0x8438, 0x8438, 0x0D41,
+ 0x8439, 0x8439, 0x2555, 0x843A, 0x843A, 0x2546, 0x843B, 0x843B, 0x255C,
+ 0x843C, 0x843C, 0x0EE5, 0x843D, 0x843D, 0x0EDD, 0x843E, 0x843E, 0x3D21,
+ 0x843F, 0x843F, 0x2530, 0x8440, 0x8440, 0x2538, 0x8442, 0x8442, 0x2551,
+ 0x8443, 0x8443, 0x2549, 0x8444, 0x8444, 0x2562, 0x8445, 0x8445, 0x254C,
+ 0x8446, 0x8446, 0x0EEB, 0x8447, 0x8447, 0x255D, 0x8448, 0x8448, 0x4718,
+ 0x8449, 0x8449, 0x0EE2, 0x844A, 0x844A, 0x37E4, 0x844B, 0x844B, 0x254F,
+ 0x844C, 0x844C, 0x2557, 0x844D, 0x844D, 0x253C, 0x844E, 0x844E, 0x2556,
+ 0x8450, 0x8450, 0x2567, 0x8451, 0x8451, 0x2537, 0x8452, 0x8452, 0x2558,
+ 0x8453, 0x8453, 0x3B7D, 0x8454, 0x8454, 0x2565, 0x8455, 0x8455, 0x398B,
+ 0x8456, 0x8456, 0x2531, 0x8457, 0x8457, 0x0D39, 0x8458, 0x8458, 0x37DE,
+ 0x8459, 0x8459, 0x253F, 0x845A, 0x845A, 0x253E, 0x845B, 0x845B, 0x0EE4,
+ 0x845C, 0x845C, 0x3EDB, 0x845D, 0x845D, 0x2542, 0x845E, 0x845E, 0x2544,
+ 0x845F, 0x845F, 0x2553, 0x8460, 0x8460, 0x2564, 0x8461, 0x8461, 0x0EE7,
+ 0x8462, 0x8462, 0x42DA, 0x8463, 0x8463, 0x0EE8, 0x8464, 0x8464, 0x4761,
+ 0x8465, 0x8465, 0x2536, 0x8466, 0x8466, 0x0EE0, 0x8467, 0x8467, 0x253A,
+ 0x8468, 0x8468, 0x2560, 0x8469, 0x8469, 0x0EE9, 0x846B, 0x846B, 0x0EE1,
+ 0x846C, 0x846C, 0x0EE3, 0x846D, 0x846D, 0x0EEA, 0x846E, 0x846E, 0x2566,
+ 0x846F, 0x846F, 0x2559, 0x8470, 0x8470, 0x2554, 0x8471, 0x8471, 0x37E0,
+ 0x8472, 0x8472, 0x3C93, 0x8473, 0x8473, 0x2541, 0x8474, 0x8474, 0x2540,
+ 0x8475, 0x8475, 0x0EDF, 0x8476, 0x8476, 0x2532, 0x8477, 0x8477, 0x0EDC,
+ 0x8478, 0x8478, 0x254A, 0x8479, 0x8479, 0x2533, 0x847A, 0x847A, 0x2548,
+ 0x847D, 0x847D, 0x253D, 0x847E, 0x847E, 0x2561, 0x847F, 0x847F, 0x394E,
+ 0x8480, 0x8480, 0x3B6E, 0x8482, 0x8482, 0x0EDB, 0x8486, 0x8486, 0x2539,
+ 0x8488, 0x8488, 0x4762, 0x848D, 0x848D, 0x2535, 0x848E, 0x848E, 0x255B,
+ 0x848F, 0x848F, 0x2534, 0x8490, 0x8490, 0x108E, 0x8491, 0x8491, 0x27CD,
+ 0x8492, 0x8492, 0x3756, 0x8493, 0x8493, 0x37EE, 0x8494, 0x8494, 0x27BC,
+ 0x8496, 0x8496, 0x3B1D, 0x8497, 0x8497, 0x27A6, 0x8498, 0x8498, 0x27C4,
+ 0x8499, 0x8499, 0x1086, 0x849A, 0x849A, 0x27B5, 0x849B, 0x849B, 0x27BF,
+ 0x849C, 0x849C, 0x1089, 0x849D, 0x849D, 0x27B8, 0x849E, 0x849E, 0x1087,
+ 0x849F, 0x849F, 0x27A9, 0x84A0, 0x84A0, 0x27C7, 0x84A1, 0x84A1, 0x27A8,
+ 0x84A2, 0x84A2, 0x27BB, 0x84A3, 0x84A3, 0x3B9E, 0x84A4, 0x84A4, 0x27A7,
+ 0x84A7, 0x84A7, 0x27B9, 0x84A8, 0x84A8, 0x27C2, 0x84A9, 0x84A9, 0x27C0,
+ 0x84AA, 0x84AA, 0x27B4, 0x84AB, 0x84AB, 0x27AF, 0x84AC, 0x84AC, 0x27AD,
+ 0x84AD, 0x84AD, 0x3D8C, 0x84AE, 0x84AE, 0x27AE, 0x84AF, 0x84AF, 0x27C1,
+ 0x84B0, 0x84B0, 0x27CC, 0x84B1, 0x84B1, 0x27B6, 0x84B2, 0x84B2, 0x1088,
+ 0x84B4, 0x84B4, 0x27B1, 0x84B6, 0x84B6, 0x27C5, 0x84B8, 0x84B8, 0x108B,
+ 0x84B9, 0x84B9, 0x27B0, 0x84BA, 0x84BA, 0x27AA, 0x84BB, 0x84BB, 0x27BA,
+ 0x84BC, 0x84BC, 0x108F, 0x84BD, 0x84BD, 0x3C4C, 0x84BE, 0x84BE, 0x4764,
+ 0x84BF, 0x84BF, 0x1083, 0x84C0, 0x84C0, 0x108C, 0x84C1, 0x84C1, 0x27B2,
+ 0x84C2, 0x84C2, 0x27AC, 0x84C4, 0x84C4, 0x1085, 0x84C5, 0x84C5, 0x255A,
+ 0x84C6, 0x84C6, 0x1084, 0x84C7, 0x84C7, 0x27BD, 0x84C9, 0x84C9, 0x1082,
+ 0x84CA, 0x84CA, 0x1091, 0x84CB, 0x84CB, 0x108A, 0x84CC, 0x84CC, 0x27BE,
+ 0x84CD, 0x84CD, 0x27B3, 0x84CE, 0x84CE, 0x27AB, 0x84CF, 0x84CF, 0x27C6,
+ 0x84D0, 0x84D0, 0x27B7, 0x84D1, 0x84D1, 0x1090, 0x84D2, 0x84D2, 0x27CA,
+ 0x84D3, 0x84D3, 0x108D, 0x84D4, 0x84D4, 0x27C9, 0x84D6, 0x84D6, 0x27C3,
+ 0x84D7, 0x84D7, 0x27C8, 0x84DA, 0x84DA, 0x3FF5, 0x84DB, 0x84DB, 0x27CB,
+ 0x84DE, 0x84DE, 0x37EA, 0x84E1, 0x84E1, 0x4765, 0x84E2, 0x84E2, 0x37B5,
+ 0x84E4, 0x84E4, 0x37EF, 0x84E5, 0x84E5, 0x3BD0, 0x84E7, 0x84E8, 0x2A03,
+ 0x84E9, 0x84E9, 0x29F7, 0x84EA, 0x84EA, 0x29F6, 0x84EB, 0x84EB, 0x29F2,
+ 0x84EC, 0x84EC, 0x11FB, 0x84EE, 0x84EE, 0x11F3, 0x84EF, 0x84EF, 0x2A06,
+ 0x84F0, 0x84F0, 0x2A05, 0x84F1, 0x84F1, 0x252F, 0x84F2, 0x84F2, 0x29EF,
+ 0x84F3, 0x84F3, 0x29F3, 0x84F4, 0x84F4, 0x29ED, 0x84F6, 0x84F6, 0x2A00,
+ 0x84F7, 0x84F7, 0x29F1, 0x84F8, 0x84F8, 0x4766, 0x84F9, 0x84F9, 0x2A07,
+ 0x84FA, 0x84FA, 0x29EA, 0x84FB, 0x84FB, 0x29E8, 0x84FC, 0x84FC, 0x29F4,
+ 0x84FD, 0x84FD, 0x29FE, 0x84FE, 0x84FE, 0x29F9, 0x84FF, 0x84FF, 0x11FD,
+ 0x8500, 0x8500, 0x29DF, 0x8502, 0x8502, 0x29FD, 0x8503, 0x8503, 0x398A,
+ 0x8505, 0x8505, 0x40EB, 0x8506, 0x8506, 0x11FE, 0x8507, 0x8507, 0x2543,
+ 0x8508, 0x8508, 0x29EB, 0x8509, 0x8509, 0x29E2, 0x850A, 0x850A, 0x29E5,
+ 0x850B, 0x850B, 0x2A0B, 0x850C, 0x850C, 0x29EC, 0x850D, 0x850D, 0x29E3,
+ 0x850E, 0x850E, 0x29E1, 0x850F, 0x850F, 0x29DE, 0x8510, 0x8510, 0x4767,
+ 0x8511, 0x8511, 0x11F7, 0x8512, 0x8512, 0x29F5, 0x8513, 0x8513, 0x11F6,
+ 0x8514, 0x8514, 0x11FA, 0x8515, 0x8515, 0x29F0, 0x8516, 0x8516, 0x29F8,
+ 0x8517, 0x8517, 0x11F0, 0x8518, 0x8518, 0x2A08, 0x8519, 0x8519, 0x2A0C,
+ 0x851A, 0x851A, 0x11F2, 0x851C, 0x851C, 0x29E7, 0x851D, 0x851D, 0x29FB,
+ 0x851E, 0x851E, 0x29FF, 0x851F, 0x851F, 0x29E4, 0x8520, 0x8520, 0x2A09,
+ 0x8521, 0x8521, 0x11F9, 0x8523, 0x8523, 0x11F8, 0x8524, 0x8524, 0x29DC,
+ 0x8525, 0x8525, 0x11FC, 0x8526, 0x8526, 0x2A02, 0x8527, 0x8527, 0x29E6,
+ 0x8528, 0x8528, 0x29FA, 0x8529, 0x8529, 0x29E0, 0x852A, 0x852A, 0x29EE,
+ 0x852B, 0x852B, 0x29E9, 0x852C, 0x852D, 0x11F4, 0x852E, 0x852E, 0x29FC,
+ 0x852F, 0x852F, 0x2A0D, 0x8530, 0x8530, 0x2A0A, 0x8531, 0x8531, 0x2A01,
+ 0x8533, 0x8533, 0x4228, 0x8534, 0x8534, 0x37F4, 0x8538, 0x8538, 0x4768,
+ 0x853B, 0x853B, 0x29DD, 0x853D, 0x853D, 0x11F1, 0x853E, 0x853E, 0x2C4F,
+ 0x8540, 0x8540, 0x2C46, 0x8541, 0x8541, 0x2C49, 0x8542, 0x8542, 0x4062,
+ 0x8543, 0x8543, 0x133B, 0x8544, 0x8544, 0x2C4B, 0x8545, 0x8545, 0x2C40,
+ 0x8546, 0x8546, 0x2C47, 0x8547, 0x8547, 0x2C4D, 0x8548, 0x8548, 0x1338,
+ 0x8549, 0x8549, 0x133C, 0x854A, 0x854A, 0x1336, 0x854B, 0x854B, 0x37C0,
+ 0x854C, 0x854C, 0x400F, 0x854D, 0x854D, 0x2C42, 0x854E, 0x854E, 0x2C52,
+ 0x8551, 0x8551, 0x2C4C, 0x8552, 0x8552, 0x4769, 0x8553, 0x8553, 0x2C43,
+ 0x8554, 0x8554, 0x2C5B, 0x8555, 0x8555, 0x2C55, 0x8556, 0x8556, 0x2C3F,
+ 0x8557, 0x8557, 0x2E23, 0x8558, 0x8558, 0x2C45, 0x8559, 0x8559, 0x1337,
+ 0x855A, 0x855A, 0x37DB, 0x855B, 0x855B, 0x2C50, 0x855D, 0x855D, 0x2C5A,
+ 0x855E, 0x855E, 0x133F, 0x8560, 0x8560, 0x2C57, 0x8561, 0x8561, 0x2C44,
+ 0x8562, 0x8562, 0x2C4A, 0x8563, 0x8563, 0x2C4E, 0x8564, 0x8564, 0x2C48,
+ 0x8565, 0x8565, 0x2C5C, 0x8566, 0x8566, 0x2C59, 0x8567, 0x8567, 0x2C56,
+ 0x8568, 0x8569, 0x1339, 0x856A, 0x856A, 0x133E, 0x856B, 0x856B, 0x2C41,
+ 0x856C, 0x856C, 0x2C5D, 0x856D, 0x856D, 0x133D, 0x856E, 0x856E, 0x2C53,
+ 0x856F, 0x8570, 0x476B, 0x8571, 0x8571, 0x2C51, 0x8573, 0x8573, 0x37F8,
+ 0x8575, 0x8575, 0x2C54, 0x8576, 0x8576, 0x2E30, 0x8577, 0x8577, 0x2E1D,
+ 0x8578, 0x8578, 0x2E22, 0x8579, 0x8579, 0x2E2F, 0x857A, 0x857A, 0x2E21,
+ 0x857B, 0x857B, 0x2E19, 0x857C, 0x857C, 0x2E1E, 0x857E, 0x857E, 0x145C,
+ 0x8580, 0x8580, 0x2E12, 0x8581, 0x8581, 0x2E2A, 0x8582, 0x8582, 0x2E2C,
+ 0x8583, 0x8583, 0x2E11, 0x8584, 0x8584, 0x145B, 0x8585, 0x8585, 0x2E2E,
+ 0x8586, 0x8586, 0x2E26, 0x8587, 0x8587, 0x1462, 0x8588, 0x8588, 0x2E2D,
+ 0x8589, 0x8589, 0x2E1F, 0x858A, 0x858A, 0x1464, 0x858B, 0x858B, 0x2E17,
+ 0x858C, 0x858C, 0x2C58, 0x858D, 0x858D, 0x2E27, 0x858E, 0x858E, 0x2E24,
+ 0x858F, 0x858F, 0x2E13, 0x8590, 0x8590, 0x2E32, 0x8591, 0x8591, 0x145E,
+ 0x8594, 0x8594, 0x145F, 0x8595, 0x8595, 0x2E15, 0x8596, 0x8596, 0x2E25,
+ 0x8598, 0x8598, 0x2E31, 0x8599, 0x8599, 0x2E28, 0x859A, 0x859A, 0x2E1B,
+ 0x859B, 0x859B, 0x1461, 0x859C, 0x859C, 0x145D, 0x859D, 0x859D, 0x2E29,
+ 0x859E, 0x859E, 0x2E1C, 0x859F, 0x859F, 0x2E33, 0x85A0, 0x85A0, 0x2E16,
+ 0x85A1, 0x85A1, 0x2E20, 0x85A2, 0x85A2, 0x2E2B, 0x85A3, 0x85A3, 0x2E18,
+ 0x85A4, 0x85A4, 0x2E1A, 0x85A6, 0x85A6, 0x1465, 0x85A7, 0x85A7, 0x2E14,
+ 0x85A8, 0x85A8, 0x1463, 0x85A9, 0x85A9, 0x151C, 0x85AA, 0x85AA, 0x145A,
+ 0x85AF, 0x85AF, 0x1460, 0x85B0, 0x85B0, 0x1520, 0x85B1, 0x85B1, 0x2FA6,
+ 0x85B3, 0x85B3, 0x2F9C, 0x85B4, 0x85B4, 0x2F97, 0x85B5, 0x85B5, 0x2F9D,
+ 0x85B6, 0x85B6, 0x2FA7, 0x85B7, 0x85B7, 0x2FAB, 0x85B8, 0x85B8, 0x2FAA,
+ 0x85B9, 0x85B9, 0x1522, 0x85BA, 0x85BA, 0x1521, 0x85BD, 0x85BD, 0x2F9E,
+ 0x85BE, 0x85BE, 0x2FAC, 0x85BF, 0x85BF, 0x2FA1, 0x85C0, 0x85C0, 0x2F99,
+ 0x85C1, 0x85C1, 0x37FE, 0x85C2, 0x85C2, 0x2F9B, 0x85C3, 0x85C3, 0x2F9A,
+ 0x85C4, 0x85C4, 0x2FA0, 0x85C5, 0x85C5, 0x2FA5, 0x85C6, 0x85C6, 0x2F98,
+ 0x85C7, 0x85C7, 0x2F9F, 0x85C8, 0x85C8, 0x2FA4, 0x85C9, 0x85C9, 0x151F,
+ 0x85CB, 0x85CB, 0x2FA2, 0x85CD, 0x85CD, 0x151D, 0x85CE, 0x85CE, 0x2FA3,
+ 0x85CF, 0x85CF, 0x151B, 0x85D0, 0x85D0, 0x151E, 0x85D1, 0x85D1, 0x3101,
+ 0x85D2, 0x85D2, 0x2FA8, 0x85D5, 0x85D5, 0x15B7, 0x85D7, 0x85D7, 0x30F9,
+ 0x85D8, 0x85D8, 0x30FD, 0x85D9, 0x85D9, 0x30F5, 0x85DA, 0x85DA, 0x30F8,
+ 0x85DC, 0x85DC, 0x3100, 0x85DD, 0x85DD, 0x15B5, 0x85DE, 0x85DE, 0x3105,
+ 0x85DF, 0x85DF, 0x30FE, 0x85E0, 0x85E0, 0x476D, 0x85E1, 0x85E1, 0x30F6,
+ 0x85E2, 0x85E2, 0x3106, 0x85E3, 0x85E3, 0x30FF, 0x85E4, 0x85E5, 0x15B8,
+ 0x85E6, 0x85E6, 0x3103, 0x85E8, 0x85E8, 0x30F7, 0x85E9, 0x85E9, 0x15B4,
+ 0x85EA, 0x85EA, 0x15B6, 0x85EB, 0x85EB, 0x30F2, 0x85EC, 0x85EC, 0x30FA,
+ 0x85ED, 0x85ED, 0x30F4, 0x85EE, 0x85EE, 0x3C56, 0x85EF, 0x85EF, 0x3104,
+ 0x85F0, 0x85F0, 0x3102, 0x85F1, 0x85F1, 0x30F3, 0x85F2, 0x85F2, 0x30FB,
+ 0x85F6, 0x85F6, 0x3225, 0x85F7, 0x85F7, 0x15BA, 0x85F8, 0x85F8, 0x30FC,
+ 0x85F9, 0x85F9, 0x1638, 0x85FA, 0x85FA, 0x163A, 0x85FB, 0x85FB, 0x1637,
+ 0x85FC, 0x85FC, 0x3C50, 0x85FD, 0x85FD, 0x322A, 0x85FE, 0x85FE, 0x3222,
+ 0x85FF, 0x85FF, 0x3220, 0x8600, 0x8600, 0x3224, 0x8601, 0x8601, 0x3221,
+ 0x8602, 0x8602, 0x3800, 0x8604, 0x8604, 0x3226, 0x8605, 0x8605, 0x3228,
+ 0x8606, 0x8606, 0x163B, 0x8607, 0x8607, 0x163D, 0x8609, 0x8609, 0x3227,
+ 0x860A, 0x860A, 0x163E, 0x860B, 0x860B, 0x163C, 0x860C, 0x860C, 0x3229,
+ 0x860D, 0x860D, 0x4064, 0x8610, 0x8610, 0x3B7F, 0x8611, 0x8611, 0x1639,
+ 0x8614, 0x8614, 0x46BE, 0x8616, 0x8616, 0x37FB, 0x8617, 0x8617, 0x1685,
+ 0x8618, 0x8618, 0x32F6, 0x8619, 0x8619, 0x32FC, 0x861A, 0x861A, 0x1687,
+ 0x861B, 0x861B, 0x3223, 0x861C, 0x861C, 0x32FB, 0x861E, 0x861E, 0x3302,
+ 0x861F, 0x861F, 0x32F9, 0x8620, 0x8620, 0x3300, 0x8621, 0x8621, 0x32FF,
+ 0x8622, 0x8622, 0x321F, 0x8623, 0x8623, 0x32FA, 0x8624, 0x8624, 0x2FA9,
+ 0x8625, 0x8625, 0x3303, 0x8626, 0x8626, 0x32F8, 0x8627, 0x8627, 0x32FD,
+ 0x8628, 0x8628, 0x3805, 0x8629, 0x8629, 0x3301, 0x862A, 0x862A, 0x32F7,
+ 0x862C, 0x862C, 0x33AA, 0x862D, 0x862D, 0x1686, 0x862E, 0x862E, 0x32FE,
+ 0x862F, 0x862F, 0x3F9E, 0x8631, 0x8631, 0x3432, 0x8632, 0x8632, 0x33AB,
+ 0x8633, 0x8633, 0x33A9, 0x8634, 0x8635, 0x33A7, 0x8636, 0x8636, 0x33AC,
+ 0x8638, 0x8638, 0x1707, 0x8639, 0x8639, 0x3430, 0x863A, 0x863A, 0x342E,
+ 0x863B, 0x863B, 0x3433, 0x863C, 0x863C, 0x3431, 0x863E, 0x863E, 0x3434,
+ 0x863F, 0x863F, 0x1708, 0x8640, 0x8640, 0x342F, 0x8642, 0x8642, 0x38C1,
+ 0x8643, 0x8643, 0x3497, 0x8645, 0x8645, 0x3B66, 0x8646, 0x8648, 0x34DF,
+ 0x864B, 0x864B, 0x353E, 0x864C, 0x864C, 0x3536, 0x864D, 0x864D, 0x1818,
+ 0x864E, 0x864E, 0x0689, 0x8650, 0x8650, 0x07FF, 0x8652, 0x8652, 0x1DE3,
+ 0x8653, 0x8653, 0x1DE2, 0x8654, 0x8654, 0x09AF, 0x8655, 0x8655, 0x0B88,
+ 0x8656, 0x8656, 0x203C, 0x8659, 0x8659, 0x203B, 0x865B, 0x865B, 0x0D48,
+ 0x865C, 0x865C, 0x0EED, 0x865E, 0x865E, 0x0EEC, 0x865F, 0x865F, 0x0EEE,
+ 0x8661, 0x8661, 0x27CE, 0x8662, 0x8662, 0x2A0E, 0x8663, 0x8663, 0x2C5E,
+ 0x8664, 0x8664, 0x2C60, 0x8665, 0x8665, 0x2C5F, 0x8667, 0x8667, 0x1466,
+ 0x8668, 0x8668, 0x2E34, 0x8669, 0x8669, 0x2FAD, 0x866A, 0x866A, 0x351E,
+ 0x866B, 0x866B, 0x040F, 0x866C, 0x866C, 0x3813, 0x866D, 0x866E, 0x1A46,
+ 0x866F, 0x866F, 0x1A45, 0x8670, 0x8670, 0x1A44, 0x8671, 0x8671, 0x068A,
+ 0x8672, 0x8672, 0x476F, 0x8673, 0x8673, 0x1BFD, 0x8674, 0x8674, 0x1BFB,
+ 0x8677, 0x8677, 0x1BFA, 0x8679, 0x8679, 0x0800, 0x867A, 0x867A, 0x0802,
+ 0x867B, 0x867B, 0x0801, 0x867C, 0x867C, 0x1BFC, 0x867E, 0x867E, 0x380A,
+ 0x8685, 0x8685, 0x1DEF, 0x8686, 0x8686, 0x1DEC, 0x8687, 0x8687, 0x1DEA,
+ 0x868A, 0x868A, 0x09B0, 0x868B, 0x868B, 0x1DED, 0x868C, 0x868C, 0x09B5,
+ 0x868D, 0x868D, 0x1DE7, 0x868E, 0x868E, 0x1DF6, 0x8690, 0x8690, 0x1DF8,
+ 0x8691, 0x8691, 0x1DE8, 0x8692, 0x8692, 0x4770, 0x8693, 0x8693, 0x09B2,
+ 0x8694, 0x8694, 0x1DF9, 0x8695, 0x8695, 0x1DF4, 0x8696, 0x8696, 0x1DE6,
+ 0x8697, 0x8697, 0x1DEB, 0x8698, 0x8698, 0x1DF5, 0x8699, 0x8699, 0x1DF1,
+ 0x869A, 0x869A, 0x1DEE, 0x869C, 0x869C, 0x09B7, 0x869D, 0x869D, 0x1DF7,
+ 0x869E, 0x869E, 0x1DE9, 0x86A0, 0x86A0, 0x3B88, 0x86A1, 0x86A1, 0x1DF2,
+ 0x86A2, 0x86A2, 0x1DE4, 0x86A3, 0x86A3, 0x09B6, 0x86A4, 0x86A4, 0x09B3,
+ 0x86A5, 0x86A5, 0x1DF0, 0x86A7, 0x86A7, 0x1DF3, 0x86A8, 0x86A8, 0x1DE5,
+ 0x86A9, 0x86A9, 0x09B4, 0x86AA, 0x86AA, 0x09B1, 0x86AD, 0x86AD, 0x3F06,
+ 0x86AF, 0x86AF, 0x0B92, 0x86B0, 0x86B0, 0x2043, 0x86B1, 0x86B1, 0x0B91,
+ 0x86B2, 0x86B2, 0x43E0, 0x86B3, 0x86B3, 0x2046, 0x86B4, 0x86B4, 0x2049,
+ 0x86B5, 0x86B5, 0x0B8E, 0x86B6, 0x86B6, 0x0B8C, 0x86B7, 0x86B7, 0x203E,
+ 0x86B8, 0x86B8, 0x2047, 0x86B9, 0x86B9, 0x2045, 0x86BA, 0x86BA, 0x2042,
+ 0x86BB, 0x86BC, 0x204A, 0x86BD, 0x86BE, 0x204D, 0x86BF, 0x86BF, 0x203D,
+ 0x86C0, 0x86C0, 0x0B8B, 0x86C1, 0x86C1, 0x2040, 0x86C2, 0x86C2, 0x203F,
+ 0x86C3, 0x86C3, 0x204C, 0x86C4, 0x86C4, 0x0B8D, 0x86C5, 0x86C5, 0x2041,
+ 0x86C6, 0x86C6, 0x0B8F, 0x86C7, 0x86C7, 0x0B8A, 0x86C8, 0x86C8, 0x2044,
+ 0x86C9, 0x86C9, 0x0B93, 0x86CB, 0x86CB, 0x0B90, 0x86CC, 0x86CC, 0x2048,
+ 0x86D0, 0x86D0, 0x0D4F, 0x86D1, 0x86D1, 0x22D2, 0x86D3, 0x86D3, 0x22C7,
+ 0x86D4, 0x86D4, 0x0D4C, 0x86D6, 0x86D6, 0x256D, 0x86D7, 0x86D7, 0x22D0,
+ 0x86D8, 0x86D8, 0x22C4, 0x86D9, 0x86D9, 0x0D4A, 0x86DA, 0x86DA, 0x22C9,
+ 0x86DB, 0x86DB, 0x0D4D, 0x86DC, 0x86DC, 0x22CD, 0x86DD, 0x86DD, 0x22CB,
+ 0x86DE, 0x86DE, 0x0D50, 0x86DF, 0x86DF, 0x0D49, 0x86E2, 0x86E2, 0x22C5,
+ 0x86E3, 0x86E3, 0x22C8, 0x86E4, 0x86E4, 0x0D4E, 0x86E6, 0x86E6, 0x22C6,
+ 0x86E8, 0x86E8, 0x22D1, 0x86E9, 0x86E9, 0x22CF, 0x86EA, 0x86EA, 0x22CA,
+ 0x86EB, 0x86EB, 0x22CC, 0x86EC, 0x86EC, 0x22CE, 0x86ED, 0x86ED, 0x0D4B,
+ 0x86EF, 0x86EF, 0x4771, 0x86F5, 0x86F5, 0x256E, 0x86F6, 0x86F6, 0x2574,
+ 0x86F7, 0x86F7, 0x256A, 0x86F8, 0x86F8, 0x2570, 0x86F9, 0x86F9, 0x0EEF,
+ 0x86FA, 0x86FA, 0x256C, 0x86FB, 0x86FB, 0x0EF5, 0x86FE, 0x86FE, 0x0EF4,
+ 0x8700, 0x8700, 0x0EF3, 0x8701, 0x8701, 0x2573, 0x8702, 0x8703, 0x0EF6,
+ 0x8704, 0x8704, 0x2569, 0x8705, 0x8705, 0x2576, 0x8706, 0x8706, 0x0EF8,
+ 0x8707, 0x8707, 0x0EF2, 0x8708, 0x8708, 0x0EF1, 0x8709, 0x8709, 0x2572,
+ 0x870A, 0x870A, 0x0EF9, 0x870B, 0x870B, 0x2568, 0x870C, 0x870C, 0x256B,
+ 0x870D, 0x870D, 0x2575, 0x870E, 0x870E, 0x2571, 0x8711, 0x8711, 0x27EE,
+ 0x8712, 0x8712, 0x27E3, 0x8713, 0x8713, 0x0EF0, 0x8718, 0x8718, 0x1098,
+ 0x8719, 0x8719, 0x27D7, 0x871A, 0x871A, 0x27EC, 0x871B, 0x871B, 0x27D8,
+ 0x871C, 0x871C, 0x1093, 0x871E, 0x871E, 0x27D5, 0x8720, 0x8720, 0x27DE,
+ 0x8721, 0x8721, 0x27D6, 0x8722, 0x8722, 0x1095, 0x8723, 0x8723, 0x27D0,
+ 0x8724, 0x8724, 0x27EB, 0x8725, 0x8725, 0x1096, 0x8726, 0x8727, 0x27E8,
+ 0x8728, 0x8728, 0x27D1, 0x8729, 0x8729, 0x109B, 0x872A, 0x872A, 0x27E0,
+ 0x872C, 0x872C, 0x27DA, 0x872D, 0x872D, 0x27E1, 0x872E, 0x872E, 0x27D4,
+ 0x8730, 0x8730, 0x27ED, 0x8731, 0x8731, 0x27E5, 0x8732, 0x8732, 0x27DF,
+ 0x8733, 0x8733, 0x27CF, 0x8734, 0x8734, 0x1097, 0x8735, 0x8735, 0x27E6,
+ 0x8737, 0x8737, 0x109A, 0x8738, 0x8738, 0x27EA, 0x873A, 0x873A, 0x27E4,
+ 0x873B, 0x873B, 0x1094, 0x873C, 0x873C, 0x27E2, 0x873E, 0x873E, 0x27DC,
+ 0x873F, 0x873F, 0x1092, 0x8740, 0x8740, 0x27D3, 0x8741, 0x8741, 0x27DB,
+ 0x8742, 0x8742, 0x27E7, 0x8743, 0x8743, 0x27D9, 0x8746, 0x8746, 0x27DD,
+ 0x874C, 0x874C, 0x1208, 0x874D, 0x874D, 0x256F, 0x874E, 0x874E, 0x2A20,
+ 0x874F, 0x874F, 0x2A29, 0x8750, 0x8750, 0x2A1F, 0x8751, 0x8751, 0x2A1B,
+ 0x8752, 0x8752, 0x2A18, 0x8753, 0x8753, 0x1209, 0x8754, 0x8754, 0x2A16,
+ 0x8755, 0x8755, 0x1099, 0x8756, 0x8756, 0x2A0F, 0x8757, 0x8757, 0x1207,
+ 0x8758, 0x8758, 0x2A15, 0x8759, 0x8759, 0x1206, 0x875A, 0x875A, 0x2A1A,
+ 0x875B, 0x875B, 0x2A17, 0x875C, 0x875C, 0x2A27, 0x875D, 0x875D, 0x2A22,
+ 0x875E, 0x875E, 0x2A1C, 0x875F, 0x875F, 0x2A21, 0x8760, 0x8760, 0x1202,
+ 0x8761, 0x8761, 0x2A19, 0x8762, 0x8762, 0x2A2C, 0x8763, 0x8764, 0x2A10,
+ 0x8765, 0x8765, 0x2A28, 0x8766, 0x8766, 0x1203, 0x8767, 0x8767, 0x2A2D,
+ 0x8768, 0x8768, 0x1205, 0x8769, 0x8769, 0x2A2E, 0x876A, 0x876A, 0x2A1E,
+ 0x876B, 0x876B, 0x27D2, 0x876C, 0x876C, 0x2A24, 0x876D, 0x876D, 0x2A1D,
+ 0x876E, 0x876E, 0x2A26, 0x876F, 0x876F, 0x2A23, 0x8770, 0x8770, 0x3E6C,
+ 0x8771, 0x8771, 0x380B, 0x8773, 0x8773, 0x2A14, 0x8774, 0x8774, 0x1200,
+ 0x8775, 0x8775, 0x2A2B, 0x8776, 0x8776, 0x1201, 0x8777, 0x8777, 0x2A12,
+ 0x8778, 0x8778, 0x1204, 0x8779, 0x8779, 0x2C6B, 0x877A, 0x877A, 0x2A25,
+ 0x877B, 0x877B, 0x2A2A, 0x877D, 0x877D, 0x4045, 0x8781, 0x8781, 0x2C68,
+ 0x8782, 0x8782, 0x11FF, 0x8783, 0x8783, 0x1340, 0x8784, 0x8784, 0x2C72,
+ 0x8785, 0x8785, 0x2C6E, 0x8786, 0x8786, 0x3EB0, 0x8787, 0x8787, 0x2C6C,
+ 0x8788, 0x8788, 0x2C67, 0x8789, 0x8789, 0x2C76, 0x878B, 0x878B, 0x43E2,
+ 0x878C, 0x878C, 0x3FEF, 0x878D, 0x878D, 0x1344, 0x878F, 0x878F, 0x2C63,
+ 0x8790, 0x8791, 0x2C6F, 0x8792, 0x8792, 0x2C66, 0x8793, 0x8793, 0x2C65,
+ 0x8794, 0x8794, 0x2C73, 0x8796, 0x8796, 0x2C69, 0x8797, 0x8797, 0x2C64,
+ 0x8798, 0x8798, 0x2C6A, 0x879A, 0x879A, 0x2C75, 0x879B, 0x879B, 0x2C62,
+ 0x879C, 0x879C, 0x2C74, 0x879D, 0x879D, 0x2C71, 0x879E, 0x879E, 0x1342,
+ 0x879F, 0x879F, 0x1341, 0x87A2, 0x87A2, 0x1343, 0x87A3, 0x87A3, 0x2C6D,
+ 0x87A4, 0x87A4, 0x2C61, 0x87A5, 0x87A5, 0x3D88, 0x87A9, 0x87A9, 0x3FEC,
+ 0x87AA, 0x87AA, 0x2E36, 0x87AB, 0x87AB, 0x146C, 0x87AC, 0x87AC, 0x2E3A,
+ 0x87AD, 0x87AD, 0x2E37, 0x87AE, 0x87AE, 0x2E3E, 0x87AF, 0x87AF, 0x2E44,
+ 0x87B0, 0x87B0, 0x2E39, 0x87B1, 0x87B1, 0x380F, 0x87B2, 0x87B2, 0x2E4D,
+ 0x87B3, 0x87B3, 0x1469, 0x87B4, 0x87B4, 0x2E47, 0x87B5, 0x87B5, 0x2E3C,
+ 0x87B6, 0x87B6, 0x2E48, 0x87B7, 0x87B7, 0x2E43, 0x87B8, 0x87B8, 0x2E4A,
+ 0x87B9, 0x87B9, 0x2E3B, 0x87BA, 0x87BA, 0x146E, 0x87BB, 0x87BB, 0x146D,
+ 0x87BC, 0x87BC, 0x2E3D, 0x87BD, 0x87BD, 0x2E4B, 0x87BE, 0x87BE, 0x2E35,
+ 0x87BF, 0x87BF, 0x2E49, 0x87C0, 0x87C0, 0x1467, 0x87C1, 0x87C1, 0x3FFC,
+ 0x87C2, 0x87C2, 0x2E41, 0x87C3, 0x87C3, 0x2E40, 0x87C4, 0x87C4, 0x2E45,
+ 0x87C5, 0x87C5, 0x2E38, 0x87C6, 0x87C6, 0x146B, 0x87C8, 0x87C8, 0x146F,
+ 0x87C9, 0x87C9, 0x2E3F, 0x87CA, 0x87CA, 0x2E46, 0x87CB, 0x87CB, 0x1470,
+ 0x87CC, 0x87CC, 0x2E42, 0x87CE, 0x87CE, 0x3FED, 0x87D1, 0x87D1, 0x1468,
+ 0x87D2, 0x87D2, 0x146A, 0x87D3, 0x87D3, 0x2FBA, 0x87D4, 0x87D4, 0x2FB8,
+ 0x87D6, 0x87D6, 0x3F92, 0x87D7, 0x87D7, 0x2FBE, 0x87D8, 0x87D8, 0x2FBC,
+ 0x87D9, 0x87D9, 0x2FBF, 0x87DA, 0x87DA, 0x3810, 0x87DB, 0x87DB, 0x2FB1,
+ 0x87DC, 0x87DC, 0x2FB9, 0x87DD, 0x87DD, 0x2FC3, 0x87DE, 0x87DE, 0x2E4C,
+ 0x87DF, 0x87DF, 0x2FB5, 0x87E0, 0x87E0, 0x1526, 0x87E1, 0x87E1, 0x2A13,
+ 0x87E2, 0x87E2, 0x2FB0, 0x87E3, 0x87E3, 0x2FBD, 0x87E4, 0x87E4, 0x2FB7,
+ 0x87E5, 0x87E5, 0x2FB4, 0x87E6, 0x87E6, 0x2FAF, 0x87E7, 0x87E7, 0x2FAE,
+ 0x87E8, 0x87E8, 0x2FC2, 0x87EA, 0x87EA, 0x2FB3, 0x87EB, 0x87EB, 0x2FB2,
+ 0x87EC, 0x87EC, 0x1524, 0x87ED, 0x87ED, 0x2FBB, 0x87EE, 0x87EE, 0x380D,
+ 0x87EF, 0x87EF, 0x1523, 0x87F2, 0x87F2, 0x1525, 0x87F3, 0x87F3, 0x2FB6,
+ 0x87F4, 0x87F4, 0x2FC1, 0x87F5, 0x87F5, 0x3FAE, 0x87F6, 0x87F7, 0x310A,
+ 0x87F9, 0x87F9, 0x15BE, 0x87FA, 0x87FA, 0x3108, 0x87FB, 0x87FB, 0x15BB,
+ 0x87FC, 0x87FC, 0x3110, 0x87FE, 0x87FE, 0x15BF, 0x87FF, 0x87FF, 0x3112,
+ 0x8800, 0x8800, 0x3107, 0x8801, 0x8801, 0x2FC0, 0x8802, 0x8802, 0x3114,
+ 0x8803, 0x8803, 0x3109, 0x8804, 0x8804, 0x3EAF, 0x8805, 0x8805, 0x15BC,
+ 0x8806, 0x8806, 0x310F, 0x8808, 0x8808, 0x3111, 0x8809, 0x8809, 0x310C,
+ 0x880A, 0x880A, 0x3113, 0x880B, 0x880B, 0x310E, 0x880C, 0x880C, 0x310D,
+ 0x880D, 0x880D, 0x15BD, 0x880F, 0x880F, 0x3811, 0x8810, 0x8811, 0x322C,
+ 0x8813, 0x8813, 0x322F, 0x8814, 0x8815, 0x163F, 0x8816, 0x8816, 0x3230,
+ 0x8817, 0x8817, 0x322E, 0x8818, 0x8818, 0x3F7A, 0x8819, 0x8819, 0x322B,
+ 0x881B, 0x881B, 0x3306, 0x881C, 0x881C, 0x3309, 0x881D, 0x881D, 0x3305,
+ 0x881F, 0x881F, 0x168B, 0x8820, 0x8820, 0x3307, 0x8821, 0x8821, 0x168A,
+ 0x8822, 0x8822, 0x1689, 0x8823, 0x8823, 0x1688, 0x8824, 0x8824, 0x3308,
+ 0x8825, 0x8825, 0x33B1, 0x8826, 0x8826, 0x33AF, 0x8827, 0x8827, 0x3E07,
+ 0x8828, 0x8828, 0x33AE, 0x8829, 0x8829, 0x3304, 0x882A, 0x882A, 0x33B0,
+ 0x882B, 0x882B, 0x330A, 0x882C, 0x882C, 0x33AD, 0x882D, 0x882D, 0x3B8B,
+ 0x882E, 0x882E, 0x3437, 0x882F, 0x882F, 0x3415, 0x8830, 0x8830, 0x3435,
+ 0x8831, 0x8831, 0x1709, 0x8832, 0x8832, 0x3436, 0x8833, 0x8833, 0x3438,
+ 0x8835, 0x8835, 0x349A, 0x8836, 0x8836, 0x1728, 0x8837, 0x8837, 0x3499,
+ 0x8838, 0x8838, 0x3498, 0x8839, 0x8839, 0x1729, 0x883B, 0x883B, 0x1747,
+ 0x883C, 0x883C, 0x3508, 0x883D, 0x883D, 0x3520, 0x883E, 0x883E, 0x351F,
+ 0x883F, 0x883F, 0x3521, 0x8840, 0x8840, 0x0410, 0x8841, 0x8841, 0x1BFE,
+ 0x8842, 0x8842, 0x3F5A, 0x8843, 0x8844, 0x1DFA, 0x8845, 0x8846, 0x3816,
+ 0x8848, 0x8848, 0x22D3, 0x884A, 0x884A, 0x330B, 0x884B, 0x884B, 0x349B,
+ 0x884C, 0x884C, 0x0411, 0x884D, 0x884D, 0x0803, 0x884E, 0x884E, 0x1BFF,
+ 0x884F, 0x884F, 0x3844, 0x8852, 0x8852, 0x204F, 0x8853, 0x8853, 0x0B94,
+ 0x8855, 0x8855, 0x22D5, 0x8856, 0x8856, 0x22D4, 0x8857, 0x8857, 0x0D51,
+ 0x8859, 0x8859, 0x0EFA, 0x885A, 0x885A, 0x2A2F, 0x885B, 0x885B, 0x120A,
+ 0x885D, 0x885D, 0x120B, 0x885E, 0x885E, 0x381B, 0x8860, 0x8860, 0x3A46,
+ 0x8861, 0x8861, 0x1345, 0x8862, 0x8862, 0x172A, 0x8863, 0x8863, 0x0412,
+ 0x8864, 0x8864, 0x4502, 0x8865, 0x8865, 0x3DFC, 0x8867, 0x8867, 0x1C00,
+ 0x8868, 0x8868, 0x068C, 0x8869, 0x8869, 0x1C02, 0x886A, 0x886A, 0x1C01,
+ 0x886B, 0x886B, 0x0804, 0x886D, 0x886D, 0x1DFC, 0x886E, 0x886E, 0x3B8E,
+ 0x886F, 0x886F, 0x1E03, 0x8870, 0x8870, 0x09B8, 0x8871, 0x8871, 0x1E01,
+ 0x8872, 0x8872, 0x1DFF, 0x8874, 0x8874, 0x1E06, 0x8875, 0x8876, 0x1DFD,
+ 0x8877, 0x8877, 0x09B9, 0x8879, 0x8879, 0x09BD, 0x887C, 0x887C, 0x1E07,
+ 0x887D, 0x887D, 0x09BC, 0x887E, 0x887E, 0x1E05, 0x887F, 0x887F, 0x1E02,
+ 0x8880, 0x8880, 0x1E00, 0x8881, 0x8882, 0x09BA, 0x8883, 0x8883, 0x1E04,
+ 0x8884, 0x8884, 0x42F7, 0x8887, 0x8887, 0x3B90, 0x8888, 0x8888, 0x0B96,
+ 0x8889, 0x8889, 0x2050, 0x888B, 0x888B, 0x0B9B, 0x888C, 0x888C, 0x2060,
+ 0x888D, 0x888D, 0x0B9A, 0x888E, 0x888E, 0x2062, 0x8891, 0x8891, 0x2056,
+ 0x8892, 0x8892, 0x0B98, 0x8893, 0x8893, 0x2061, 0x8895, 0x8895, 0x2051,
+ 0x8896, 0x8896, 0x0B99, 0x8897, 0x8897, 0x205D, 0x8898, 0x8898, 0x2059,
+ 0x8899, 0x8899, 0x205B, 0x889A, 0x889A, 0x2055, 0x889B, 0x889B, 0x205C,
+ 0x889C, 0x889C, 0x381C, 0x889E, 0x889E, 0x0B95, 0x889F, 0x889F, 0x2058,
+ 0x88A0, 0x88A0, 0x3FA0, 0x88A1, 0x88A1, 0x2057, 0x88A2, 0x88A2, 0x2053,
+ 0x88A4, 0x88A4, 0x205E, 0x88A7, 0x88A7, 0x205A, 0x88A8, 0x88A8, 0x2052,
+ 0x88AA, 0x88AA, 0x2054, 0x88AB, 0x88AB, 0x0B97, 0x88AC, 0x88AC, 0x205F,
+ 0x88AE, 0x88AE, 0x4775, 0x88B1, 0x88B1, 0x0D54, 0x88B2, 0x88B2, 0x22E0,
+ 0x88B4, 0x88B5, 0x381E, 0x88B6, 0x88B6, 0x22DC, 0x88B7, 0x88B7, 0x22DE,
+ 0x88B8, 0x88B8, 0x22D9, 0x88B9, 0x88B9, 0x22D8, 0x88BA, 0x88BA, 0x22D6,
+ 0x88BC, 0x88BC, 0x22DD, 0x88BD, 0x88BD, 0x22DF, 0x88BE, 0x88BE, 0x22DB,
+ 0x88BF, 0x88BF, 0x3B91, 0x88C0, 0x88C0, 0x22DA, 0x88C1, 0x88C2, 0x0D52,
+ 0x88C5, 0x88C5, 0x3820, 0x88C7, 0x88C7, 0x3EB1, 0x88C9, 0x88C9, 0x22E2,
+ 0x88CA, 0x88CA, 0x0F02, 0x88CB, 0x88CB, 0x2578, 0x88CC, 0x88CC, 0x257E,
+ 0x88CD, 0x88CE, 0x2579, 0x88CF, 0x88CF, 0x36EA, 0x88D0, 0x88D0, 0x257F,
+ 0x88D2, 0x88D2, 0x0F04, 0x88D4, 0x88D4, 0x0EFC, 0x88D5, 0x88D5, 0x0F03,
+ 0x88D6, 0x88D6, 0x2577, 0x88D7, 0x88D7, 0x22D7, 0x88D8, 0x88D8, 0x0EFF,
+ 0x88D9, 0x88D9, 0x0EFD, 0x88DA, 0x88DA, 0x257D, 0x88DB, 0x88DB, 0x257C,
+ 0x88DC, 0x88DC, 0x0EFE, 0x88DD, 0x88DD, 0x0F00, 0x88DE, 0x88DE, 0x257B,
+ 0x88DF, 0x88DF, 0x0EFB, 0x88E1, 0x88E1, 0x0F01, 0x88E6, 0x88E6, 0x3B92,
+ 0x88E7, 0x88E7, 0x27F0, 0x88E8, 0x88E8, 0x10A2, 0x88EB, 0x88EB, 0x27FB,
+ 0x88EC, 0x88EC, 0x27FA, 0x88EE, 0x88EE, 0x27F5, 0x88EF, 0x88EF, 0x10A4,
+ 0x88F0, 0x88F0, 0x27F9, 0x88F1, 0x88F2, 0x27F1, 0x88F3, 0x88F3, 0x109C,
+ 0x88F4, 0x88F4, 0x109E, 0x88F5, 0x88F5, 0x3E08, 0x88F6, 0x88F6, 0x27F7,
+ 0x88F7, 0x88F7, 0x27EF, 0x88F8, 0x88F8, 0x10A0, 0x88F9, 0x88F9, 0x109F,
+ 0x88FA, 0x88FA, 0x27F3, 0x88FB, 0x88FB, 0x27F8, 0x88FC, 0x88FC, 0x27F6,
+ 0x88FD, 0x88FD, 0x10A1, 0x88FE, 0x88FE, 0x27F4, 0x88FF, 0x88FF, 0x4776,
+ 0x8900, 0x8900, 0x42FA, 0x8901, 0x8901, 0x22E1, 0x8902, 0x8902, 0x109D,
+ 0x8905, 0x8905, 0x2A30, 0x8906, 0x8906, 0x2A37, 0x8907, 0x8907, 0x120D,
+ 0x8909, 0x8909, 0x2A3B, 0x890A, 0x890A, 0x1211, 0x890B, 0x890B, 0x2A33,
+ 0x890C, 0x890C, 0x2A31, 0x890E, 0x890E, 0x2A3A, 0x8910, 0x8910, 0x120C,
+ 0x8911, 0x8911, 0x2A39, 0x8912, 0x8913, 0x120E, 0x8914, 0x8914, 0x2A32,
+ 0x8915, 0x8915, 0x1210, 0x8916, 0x8916, 0x2A38, 0x8917, 0x8919, 0x2A34,
+ 0x891A, 0x891A, 0x10A3, 0x891E, 0x891E, 0x2C77, 0x891F, 0x891F, 0x2C83,
+ 0x8921, 0x8921, 0x134A, 0x8922, 0x8922, 0x2C7E, 0x8923, 0x8923, 0x2C80,
+ 0x8924, 0x8924, 0x4777, 0x8925, 0x8925, 0x1348, 0x8926, 0x8926, 0x2C78,
+ 0x8927, 0x8927, 0x2C7C, 0x8929, 0x8929, 0x2C7F, 0x892A, 0x892A, 0x1346,
+ 0x892B, 0x892B, 0x1349, 0x892C, 0x892C, 0x2C82, 0x892D, 0x892E, 0x2C7A,
+ 0x892F, 0x892F, 0x2C81, 0x8930, 0x8930, 0x2C79, 0x8931, 0x8931, 0x2C7D,
+ 0x8932, 0x8932, 0x1347, 0x8933, 0x8933, 0x2E4F, 0x8935, 0x8935, 0x2E4E,
+ 0x8936, 0x8936, 0x1472, 0x8937, 0x8937, 0x2E54, 0x8938, 0x8938, 0x1474,
+ 0x893B, 0x893B, 0x1471, 0x893C, 0x893C, 0x2E50, 0x893D, 0x893D, 0x1475,
+ 0x893E, 0x893E, 0x2E51, 0x8941, 0x8941, 0x2E52, 0x8942, 0x8942, 0x2E55,
+ 0x8943, 0x8943, 0x3E16, 0x8944, 0x8944, 0x1473, 0x8946, 0x8946, 0x2FC8,
+ 0x8947, 0x8947, 0x43E3, 0x8949, 0x8949, 0x2FCB, 0x894B, 0x894B, 0x2FC5,
+ 0x894C, 0x894C, 0x2FC7, 0x894D, 0x894D, 0x3B94, 0x894F, 0x894F, 0x2FC6,
+ 0x8950, 0x8951, 0x2FC9, 0x8952, 0x8952, 0x2E53, 0x8953, 0x8953, 0x2FC4,
+ 0x8954, 0x8954, 0x3B96, 0x8956, 0x8956, 0x15C2, 0x8957, 0x8957, 0x3118,
+ 0x8958, 0x8958, 0x311B, 0x8959, 0x8959, 0x311D, 0x895A, 0x895B, 0x3116,
+ 0x895C, 0x895C, 0x311A, 0x895D, 0x895D, 0x311C, 0x895E, 0x895E, 0x15C3,
+ 0x895F, 0x895F, 0x15C1, 0x8960, 0x8960, 0x15C0, 0x8961, 0x8961, 0x3119,
+ 0x8962, 0x8962, 0x3115, 0x8963, 0x8963, 0x3231, 0x8964, 0x8964, 0x1641,
+ 0x8965, 0x8965, 0x3B93, 0x8966, 0x8966, 0x3232, 0x8969, 0x8969, 0x330D,
+ 0x896A, 0x896A, 0x168C, 0x896B, 0x896B, 0x330F, 0x896C, 0x896C, 0x168D,
+ 0x896D, 0x896D, 0x330C, 0x896E, 0x896E, 0x330E, 0x896F, 0x896F, 0x16D6,
+ 0x8971, 0x8971, 0x33B2, 0x8972, 0x8972, 0x16D5, 0x8973, 0x8973, 0x343B,
+ 0x8974, 0x8974, 0x343A, 0x8976, 0x8976, 0x3439, 0x8977, 0x8977, 0x3DEA,
+ 0x8979, 0x897A, 0x34E2, 0x897B, 0x897B, 0x34E5, 0x897C, 0x897C, 0x34E4,
+ 0x897E, 0x897E, 0x1819, 0x897F, 0x897F, 0x0413, 0x8980, 0x8980, 0x4708,
+ 0x8981, 0x8981, 0x0805, 0x8982, 0x8982, 0x2063, 0x8983, 0x8983, 0x0D55,
+ 0x8985, 0x8985, 0x2580, 0x8986, 0x8986, 0x1527, 0x8987, 0x8987, 0x3822,
+ 0x8988, 0x8988, 0x311E, 0x8989, 0x8989, 0x3FE9, 0x898A, 0x898A, 0x3823,
+ 0x898B, 0x898B, 0x0508, 0x898F, 0x898F, 0x0B9D, 0x8991, 0x8991, 0x4778,
+ 0x8993, 0x8993, 0x0B9C, 0x8994, 0x8994, 0x3FE0, 0x8995, 0x8995, 0x22E3,
+ 0x8996, 0x8996, 0x0D56, 0x8997, 0x8997, 0x22E5, 0x8998, 0x8998, 0x22E4,
+ 0x899B, 0x899B, 0x2581, 0x899C, 0x899C, 0x0F05, 0x899D, 0x899D, 0x27FC,
+ 0x899E, 0x899E, 0x27FF, 0x899F, 0x899F, 0x27FE, 0x89A1, 0x89A1, 0x27FD,
+ 0x89A2, 0x89A2, 0x2A3C, 0x89A3, 0x89A3, 0x2A3E, 0x89A4, 0x89A4, 0x2A3D,
+ 0x89A5, 0x89A5, 0x3D93, 0x89A6, 0x89A6, 0x134C, 0x89A7, 0x89A7, 0x3826,
+ 0x89A9, 0x89A9, 0x3825, 0x89AA, 0x89AA, 0x134B, 0x89AC, 0x89AC, 0x1476,
+ 0x89AD, 0x89AD, 0x2E56, 0x89AE, 0x89AE, 0x2E58, 0x89AF, 0x89AF, 0x2E57,
+ 0x89B2, 0x89B2, 0x1528, 0x89B6, 0x89B6, 0x3120, 0x89B7, 0x89B7, 0x311F,
+ 0x89B9, 0x89B9, 0x3233, 0x89BA, 0x89BA, 0x1642, 0x89BC, 0x89BC, 0x3827,
+ 0x89BD, 0x89BD, 0x168E, 0x89BE, 0x89BE, 0x33B4, 0x89BF, 0x89BF, 0x33B3,
+ 0x89C0, 0x89C0, 0x1748, 0x89C1, 0x89C1, 0x4503, 0x89C6, 0x89C6, 0x4566,
+ 0x89D2, 0x89D2, 0x0509, 0x89D3, 0x89D3, 0x1C03, 0x89D4, 0x89D4, 0x0806,
+ 0x89D5, 0x89D5, 0x2066, 0x89D6, 0x89D6, 0x2064, 0x89D9, 0x89D9, 0x2065,
+ 0x89DA, 0x89DB, 0x22E7, 0x89DC, 0x89DC, 0x2588, 0x89DD, 0x89DD, 0x22E6,
+ 0x89DF, 0x89DF, 0x2582, 0x89E0, 0x89E0, 0x2586, 0x89E1, 0x89E1, 0x2585,
+ 0x89E2, 0x89E2, 0x2587, 0x89E3, 0x89E3, 0x0F06, 0x89E4, 0x89E4, 0x2584,
+ 0x89E5, 0x89E5, 0x2583, 0x89E6, 0x89E6, 0x2589, 0x89E7, 0x89E7, 0x3829,
+ 0x89E8, 0x89E8, 0x2802, 0x89E9, 0x89E9, 0x2800, 0x89EB, 0x89EB, 0x2801,
+ 0x89EC, 0x89EC, 0x2A41, 0x89ED, 0x89ED, 0x2A3F, 0x89F0, 0x89F0, 0x2A40,
+ 0x89F1, 0x89F1, 0x2C84, 0x89F2, 0x89F3, 0x2E59, 0x89F4, 0x89F4, 0x1529,
+ 0x89F6, 0x89F6, 0x3121, 0x89F7, 0x89F7, 0x3234, 0x89F8, 0x89F8, 0x1643,
+ 0x89FA, 0x89FA, 0x3310, 0x89FB, 0x89FB, 0x33B5, 0x89FC, 0x89FC, 0x16D7,
+ 0x89FE, 0x89FE, 0x343C, 0x89FF, 0x89FF, 0x34E6, 0x8A00, 0x8A00, 0x050A,
+ 0x8A02, 0x8A03, 0x0808, 0x8A04, 0x8A04, 0x1C04, 0x8A07, 0x8A07, 0x1C05,
+ 0x8A08, 0x8A08, 0x0807, 0x8A0A, 0x8A0A, 0x09C3, 0x8A0C, 0x8A0C, 0x09C1,
+ 0x8A0E, 0x8A0E, 0x09C0, 0x8A0F, 0x8A0F, 0x09C7, 0x8A10, 0x8A10, 0x09BF,
+ 0x8A11, 0x8A11, 0x09C8, 0x8A12, 0x8A12, 0x1E08, 0x8A13, 0x8A13, 0x09C5,
+ 0x8A15, 0x8A15, 0x09C2, 0x8A16, 0x8A16, 0x09C6, 0x8A17, 0x8A17, 0x09C4,
+ 0x8A18, 0x8A18, 0x09BE, 0x8A1B, 0x8A1B, 0x0BA5, 0x8A1C, 0x8A1C, 0x3BA3,
+ 0x8A1D, 0x8A1D, 0x0B9F, 0x8A1E, 0x8A1E, 0x206A, 0x8A1F, 0x8A1F, 0x0BA4,
+ 0x8A22, 0x8A22, 0x0BA6, 0x8A23, 0x8A23, 0x0BA0, 0x8A25, 0x8A25, 0x0BA1,
+ 0x8A27, 0x8A27, 0x2068, 0x8A29, 0x8A29, 0x43E5, 0x8A2A, 0x8A2A, 0x0B9E,
+ 0x8A2B, 0x8A2B, 0x3BD1, 0x8A2C, 0x8A2C, 0x2069, 0x8A2D, 0x8A2D, 0x0BA3,
+ 0x8A30, 0x8A30, 0x2067, 0x8A31, 0x8A31, 0x0BA2, 0x8A34, 0x8A34, 0x0D61,
+ 0x8A36, 0x8A36, 0x0D63, 0x8A38, 0x8A38, 0x477A, 0x8A39, 0x8A39, 0x22EB,
+ 0x8A3A, 0x8A3A, 0x0D62, 0x8A3B, 0x8A3B, 0x0D57, 0x8A3C, 0x8A3C, 0x0D5B,
+ 0x8A3D, 0x8A3D, 0x3BA2, 0x8A3E, 0x8A3E, 0x0F19, 0x8A3F, 0x8A3F, 0x258E,
+ 0x8A40, 0x8A40, 0x22ED, 0x8A41, 0x8A41, 0x0D5C, 0x8A44, 0x8A45, 0x22F0,
+ 0x8A46, 0x8A46, 0x0D60, 0x8A48, 0x8A48, 0x22F3, 0x8A49, 0x8A49, 0x3FF0,
+ 0x8A4A, 0x8A4A, 0x22F5, 0x8A4C, 0x8A4C, 0x22F6, 0x8A4D, 0x8A4D, 0x22EA,
+ 0x8A4E, 0x8A4E, 0x22E9, 0x8A4F, 0x8A4F, 0x22F7, 0x8A50, 0x8A50, 0x0D5F,
+ 0x8A51, 0x8A51, 0x22F4, 0x8A52, 0x8A52, 0x22F2, 0x8A54, 0x8A54, 0x0D5D,
+ 0x8A55, 0x8A55, 0x0D59, 0x8A56, 0x8A56, 0x0D64, 0x8A57, 0x8A58, 0x22EE,
+ 0x8A59, 0x8A59, 0x22EC, 0x8A5B, 0x8A5B, 0x0D5E, 0x8A5E, 0x8A5E, 0x0D5A,
+ 0x8A60, 0x8A60, 0x0D58, 0x8A61, 0x8A61, 0x258D, 0x8A62, 0x8A62, 0x0F14,
+ 0x8A63, 0x8A63, 0x0F0F, 0x8A66, 0x8A66, 0x0F0A, 0x8A67, 0x8A67, 0x3F8E,
+ 0x8A68, 0x8A68, 0x0F1A, 0x8A69, 0x8A69, 0x0F0B, 0x8A6B, 0x8A6B, 0x0F07,
+ 0x8A6C, 0x8A6C, 0x0F16, 0x8A6D, 0x8A6D, 0x0F13, 0x8A6E, 0x8A6E, 0x0F15,
+ 0x8A70, 0x8A70, 0x0F0C, 0x8A71, 0x8A71, 0x0F11, 0x8A72, 0x8A73, 0x0F08,
+ 0x8A74, 0x8A74, 0x2595, 0x8A75, 0x8A75, 0x2592, 0x8A76, 0x8A76, 0x258A,
+ 0x8A77, 0x8A77, 0x258F, 0x8A79, 0x8A79, 0x0F17, 0x8A7A, 0x8A7A, 0x2596,
+ 0x8A7B, 0x8A7B, 0x0F18, 0x8A7C, 0x8A7C, 0x0F0E, 0x8A7E, 0x8A7E, 0x3FA5,
+ 0x8A7F, 0x8A7F, 0x258C, 0x8A81, 0x8A81, 0x2594, 0x8A82, 0x8A82, 0x2590,
+ 0x8A83, 0x8A83, 0x2593, 0x8A84, 0x8A84, 0x2591, 0x8A85, 0x8A85, 0x0F12,
+ 0x8A86, 0x8A86, 0x258B, 0x8A87, 0x8A87, 0x0F0D, 0x8A8B, 0x8A8B, 0x2805,
+ 0x8A8C, 0x8A8C, 0x10A6, 0x8A8D, 0x8A8D, 0x10A9, 0x8A8F, 0x8A8F, 0x2807,
+ 0x8A90, 0x8A90, 0x382F, 0x8A91, 0x8A91, 0x10B1, 0x8A92, 0x8A92, 0x2806,
+ 0x8A93, 0x8A93, 0x10AB, 0x8A94, 0x8A94, 0x477B, 0x8A95, 0x8A95, 0x1216,
+ 0x8A96, 0x8A96, 0x2808, 0x8A98, 0x8A98, 0x10B0, 0x8A99, 0x8A99, 0x2804,
+ 0x8A9A, 0x8A9A, 0x10B2, 0x8A9C, 0x8A9C, 0x382C, 0x8A9E, 0x8A9E, 0x10A7,
+ 0x8AA0, 0x8AA0, 0x0F10, 0x8AA1, 0x8AA1, 0x10AA, 0x8AA3, 0x8AA3, 0x10A8,
+ 0x8AA4, 0x8AA4, 0x10AC, 0x8AA5, 0x8AA5, 0x10AE, 0x8AA6, 0x8AA6, 0x10A5,
+ 0x8AA7, 0x8AA7, 0x10B3, 0x8AA8, 0x8AA8, 0x10AF, 0x8AA9, 0x8AA9, 0x383D,
+ 0x8AAA, 0x8AAA, 0x10AD, 0x8AAB, 0x8AAB, 0x2803, 0x8AAF, 0x8AAF, 0x3841,
+ 0x8AB0, 0x8AB0, 0x121D, 0x8AB2, 0x8AB2, 0x1219, 0x8AB4, 0x8AB4, 0x477C,
+ 0x8AB6, 0x8AB6, 0x1220, 0x8AB8, 0x8AB8, 0x2A44, 0x8AB9, 0x8AB9, 0x1221,
+ 0x8ABA, 0x8ABA, 0x2A50, 0x8ABB, 0x8ABB, 0x2A49, 0x8ABC, 0x8ABC, 0x1212,
+ 0x8ABD, 0x8ABD, 0x2A51, 0x8ABE, 0x8ABE, 0x2A4B, 0x8ABF, 0x8ABF, 0x121C,
+ 0x8AC0, 0x8AC0, 0x2A4C, 0x8AC2, 0x8AC2, 0x121B, 0x8AC3, 0x8AC3, 0x2A4F,
+ 0x8AC4, 0x8AC4, 0x1215, 0x8AC5, 0x8AC5, 0x2A4D, 0x8AC6, 0x8AC6, 0x2A43,
+ 0x8AC7, 0x8AC7, 0x1214, 0x8AC8, 0x8AC8, 0x2C8F, 0x8AC9, 0x8AC9, 0x121A,
+ 0x8ACB, 0x8ACB, 0x1217, 0x8ACD, 0x8ACD, 0x121F, 0x8ACF, 0x8ACF, 0x2A42,
+ 0x8AD1, 0x8AD1, 0x2A46, 0x8AD2, 0x8AD2, 0x1213, 0x8AD3, 0x8AD3, 0x2A45,
+ 0x8AD4, 0x8AD5, 0x2A47, 0x8AD6, 0x8AD6, 0x121E, 0x8AD7, 0x8AD7, 0x2A4A,
+ 0x8AD8, 0x8AD8, 0x2A4E, 0x8AD9, 0x8AD9, 0x2A52, 0x8ADA, 0x8ADA, 0x39C2,
+ 0x8ADB, 0x8ADB, 0x1222, 0x8ADC, 0x8ADC, 0x1352, 0x8ADD, 0x8ADD, 0x2C8A,
+ 0x8ADE, 0x8ADE, 0x2C90, 0x8ADF, 0x8ADF, 0x2C8D, 0x8AE0, 0x8AE0, 0x2C85,
+ 0x8AE1, 0x8AE1, 0x2C91, 0x8AE2, 0x8AE2, 0x2C86, 0x8AE4, 0x8AE4, 0x2C8C,
+ 0x8AE6, 0x8AE6, 0x134D, 0x8AE7, 0x8AE7, 0x1353, 0x8AE8, 0x8AE8, 0x2C92,
+ 0x8AEA, 0x8AEA, 0x3DD9, 0x8AEB, 0x8AEB, 0x134F, 0x8AED, 0x8AED, 0x1359,
+ 0x8AEE, 0x8AEE, 0x1354, 0x8AEF, 0x8AEF, 0x2C94, 0x8AF0, 0x8AF0, 0x2C8E,
+ 0x8AF1, 0x8AF1, 0x1350, 0x8AF2, 0x8AF2, 0x2C87, 0x8AF3, 0x8AF3, 0x135A,
+ 0x8AF4, 0x8AF5, 0x2C88, 0x8AF6, 0x8AF6, 0x135B, 0x8AF7, 0x8AF7, 0x1358,
+ 0x8AF8, 0x8AF8, 0x1218, 0x8AFA, 0x8AFA, 0x134E, 0x8AFB, 0x8AFB, 0x2C95,
+ 0x8AFC, 0x8AFC, 0x135C, 0x8AFE, 0x8AFE, 0x1355, 0x8AFF, 0x8AFF, 0x2C93,
+ 0x8B00, 0x8B00, 0x1351, 0x8B01, 0x8B02, 0x1356, 0x8B04, 0x8B04, 0x147E,
+ 0x8B05, 0x8B05, 0x2E5F, 0x8B06, 0x8B06, 0x2E68, 0x8B07, 0x8B07, 0x2E65,
+ 0x8B08, 0x8B08, 0x2E67, 0x8B0A, 0x8B0A, 0x147B, 0x8B0B, 0x8B0B, 0x2E60,
+ 0x8B0C, 0x8B0C, 0x3836, 0x8B0D, 0x8B0D, 0x2E66, 0x8B0E, 0x8B0E, 0x1477,
+ 0x8B0F, 0x8B0F, 0x2E62, 0x8B10, 0x8B10, 0x147F, 0x8B11, 0x8B11, 0x2E5E,
+ 0x8B12, 0x8B12, 0x2E63, 0x8B13, 0x8B13, 0x2E6A, 0x8B14, 0x8B14, 0x2C8B,
+ 0x8B15, 0x8B15, 0x2E64, 0x8B16, 0x8B16, 0x2E5D, 0x8B17, 0x8B17, 0x1478,
+ 0x8B18, 0x8B18, 0x2E5C, 0x8B19, 0x8B19, 0x1479, 0x8B1A, 0x8B1A, 0x2E6B,
+ 0x8B1B, 0x8B1B, 0x147A, 0x8B1C, 0x8B1C, 0x2E69, 0x8B1D, 0x8B1D, 0x147D,
+ 0x8B1E, 0x8B1E, 0x2E5B, 0x8B1F, 0x8B1F, 0x3837, 0x8B20, 0x8B20, 0x147C,
+ 0x8B22, 0x8B22, 0x2E61, 0x8B23, 0x8B23, 0x2FCE, 0x8B24, 0x8B24, 0x2FDC,
+ 0x8B25, 0x8B25, 0x2FD7, 0x8B26, 0x8B26, 0x2FD9, 0x8B27, 0x8B27, 0x2FCD,
+ 0x8B28, 0x8B28, 0x152A, 0x8B2A, 0x8B2A, 0x2FCC, 0x8B2B, 0x8B2B, 0x152D,
+ 0x8B2C, 0x8B2C, 0x152C, 0x8B2D, 0x8B2D, 0x3F99, 0x8B2E, 0x8B2E, 0x2FDB,
+ 0x8B2F, 0x8B2F, 0x2FD3, 0x8B30, 0x8B30, 0x2FD0, 0x8B31, 0x8B31, 0x2FD6,
+ 0x8B33, 0x8B33, 0x2FCF, 0x8B35, 0x8B35, 0x2FD1, 0x8B36, 0x8B36, 0x2FDA,
+ 0x8B37, 0x8B37, 0x2FD8, 0x8B39, 0x8B39, 0x152B, 0x8B3A, 0x8B3A, 0x2FDF,
+ 0x8B3B, 0x8B3B, 0x2FDD, 0x8B3C, 0x8B3C, 0x2FD4, 0x8B3D, 0x8B3D, 0x2FDE,
+ 0x8B3E, 0x8B3E, 0x2FD5, 0x8B3F, 0x8B3F, 0x383A, 0x8B40, 0x8B40, 0x3125,
+ 0x8B41, 0x8B41, 0x15C4, 0x8B42, 0x8B42, 0x312C, 0x8B43, 0x8B43, 0x3FF2,
+ 0x8B45, 0x8B45, 0x3313, 0x8B46, 0x8B46, 0x15CB, 0x8B47, 0x8B47, 0x2FD2,
+ 0x8B48, 0x8B48, 0x3123, 0x8B49, 0x8B49, 0x15C7, 0x8B4A, 0x8B4A, 0x3124,
+ 0x8B4B, 0x8B4B, 0x3129, 0x8B4C, 0x8B4D, 0x383B, 0x8B4E, 0x8B4F, 0x15C9,
+ 0x8B50, 0x8B50, 0x3122, 0x8B51, 0x8B51, 0x312B, 0x8B52, 0x8B52, 0x312D,
+ 0x8B53, 0x8B53, 0x3126, 0x8B54, 0x8B54, 0x3128, 0x8B55, 0x8B55, 0x312A,
+ 0x8B56, 0x8B56, 0x3127, 0x8B57, 0x8B57, 0x312E, 0x8B58, 0x8B58, 0x15C6,
+ 0x8B59, 0x8B59, 0x15CC, 0x8B5A, 0x8B5A, 0x15C8, 0x8B5C, 0x8B5C, 0x15C5,
+ 0x8B5D, 0x8B5D, 0x3237, 0x8B5E, 0x8B5E, 0x3DB8, 0x8B5F, 0x8B5F, 0x1648,
+ 0x8B60, 0x8B60, 0x3235, 0x8B62, 0x8B62, 0x3DD4, 0x8B63, 0x8B63, 0x3239,
+ 0x8B65, 0x8B65, 0x323A, 0x8B66, 0x8B66, 0x1646, 0x8B67, 0x8B67, 0x323B,
+ 0x8B68, 0x8B68, 0x3238, 0x8B69, 0x8B69, 0x3BF7, 0x8B6A, 0x8B6A, 0x3236,
+ 0x8B6B, 0x8B6B, 0x1649, 0x8B6C, 0x8B6C, 0x1645, 0x8B6D, 0x8B6D, 0x323C,
+ 0x8B6F, 0x8B6F, 0x1647, 0x8B70, 0x8B70, 0x1644, 0x8B74, 0x8B74, 0x168F,
+ 0x8B77, 0x8B77, 0x1690, 0x8B78, 0x8B78, 0x3312, 0x8B79, 0x8B79, 0x3311,
+ 0x8B7A, 0x8B7B, 0x3314, 0x8B7D, 0x8B7D, 0x1691, 0x8B7E, 0x8B7E, 0x33B6,
+ 0x8B7F, 0x8B7F, 0x33BB, 0x8B80, 0x8B80, 0x16D8, 0x8B81, 0x8B81, 0x3D8D,
+ 0x8B82, 0x8B82, 0x33B8, 0x8B84, 0x8B84, 0x33B7, 0x8B85, 0x8B85, 0x33BA,
+ 0x8B86, 0x8B86, 0x33B9, 0x8B88, 0x8B88, 0x3440, 0x8B8A, 0x8B8A, 0x170A,
+ 0x8B8B, 0x8B8B, 0x343F, 0x8B8C, 0x8B8C, 0x343D, 0x8B8E, 0x8B8E, 0x343E,
+ 0x8B90, 0x8B90, 0x383F, 0x8B92, 0x8B92, 0x172C, 0x8B93, 0x8B93, 0x172B,
+ 0x8B94, 0x8B95, 0x349C, 0x8B96, 0x8B96, 0x172D, 0x8B98, 0x8B99, 0x34E7,
+ 0x8B9A, 0x8B9A, 0x1754, 0x8B9B, 0x8B9B, 0x3840, 0x8B9C, 0x8B9C, 0x175A,
+ 0x8B9E, 0x8B9E, 0x3522, 0x8B9F, 0x8B9F, 0x353F, 0x8BA0, 0x8BA0, 0x4505,
+ 0x8BBE, 0x8BBE, 0x4567, 0x8BE2, 0x8BE2, 0x4568, 0x8C37, 0x8C37, 0x050B,
+ 0x8C39, 0x8C39, 0x206B, 0x8C3B, 0x8C3B, 0x206C, 0x8C3C, 0x8C3C, 0x2597,
+ 0x8C3D, 0x8C3D, 0x2809, 0x8C3E, 0x8C3E, 0x2A53, 0x8C3F, 0x8C3F, 0x1481,
+ 0x8C41, 0x8C41, 0x1480, 0x8C42, 0x8C42, 0x2FE0, 0x8C43, 0x8C43, 0x312F,
+ 0x8C45, 0x8C45, 0x3441, 0x8C46, 0x8C46, 0x050C, 0x8C47, 0x8C47, 0x1E09,
+ 0x8C48, 0x8C48, 0x09C9, 0x8C49, 0x8C49, 0x0BA7, 0x8C4A, 0x8C4A, 0x2599,
+ 0x8C4B, 0x8C4B, 0x2598, 0x8C4C, 0x8C4C, 0x1223, 0x8C4D, 0x8C4D, 0x2A54,
+ 0x8C4E, 0x8C4E, 0x1224, 0x8C4F, 0x8C4F, 0x2E6C, 0x8C50, 0x8C50, 0x152E,
+ 0x8C51, 0x8C51, 0x477D, 0x8C54, 0x8C54, 0x1763, 0x8C55, 0x8C55, 0x050D,
+ 0x8C56, 0x8C56, 0x1A48, 0x8C57, 0x8C57, 0x1E0A, 0x8C5A, 0x8C5A, 0x0BA8,
+ 0x8C5C, 0x8C5D, 0x206D, 0x8C5F, 0x8C5F, 0x22F8, 0x8C61, 0x8C61, 0x0D65,
+ 0x8C62, 0x8C62, 0x0F1B, 0x8C64, 0x8C64, 0x259B, 0x8C65, 0x8C65, 0x259A,
+ 0x8C66, 0x8C66, 0x259C, 0x8C68, 0x8C69, 0x280A, 0x8C6A, 0x8C6A, 0x10B4,
+ 0x8C6B, 0x8C6B, 0x135D, 0x8C6C, 0x8C6C, 0x1225, 0x8C6D, 0x8C6D, 0x135E,
+ 0x8C6F, 0x8C6F, 0x2E70, 0x8C70, 0x8C70, 0x2E6D, 0x8C71, 0x8C71, 0x2E6F,
+ 0x8C72, 0x8C72, 0x2E6E, 0x8C73, 0x8C73, 0x1482, 0x8C75, 0x8C75, 0x2FE1,
+ 0x8C76, 0x8C76, 0x3131, 0x8C77, 0x8C77, 0x3130, 0x8C78, 0x8C78, 0x18E7,
+ 0x8C79, 0x8C79, 0x09CB, 0x8C7A, 0x8C7A, 0x09CA, 0x8C7B, 0x8C7B, 0x1E0B,
+ 0x8C7D, 0x8C7D, 0x206F, 0x8C80, 0x8C80, 0x22FA, 0x8C81, 0x8C81, 0x22F9,
+ 0x8C82, 0x8C82, 0x0D66, 0x8C84, 0x8C85, 0x259E, 0x8C86, 0x8C86, 0x259D,
+ 0x8C89, 0x8C89, 0x0F1D, 0x8C8A, 0x8C8A, 0x0F1C, 0x8C8C, 0x8C8C, 0x10B6,
+ 0x8C8D, 0x8C8D, 0x10B5, 0x8C8F, 0x8C8F, 0x2A55, 0x8C90, 0x8C90, 0x2C98,
+ 0x8C91, 0x8C92, 0x2C96, 0x8C93, 0x8C93, 0x135F, 0x8C94, 0x8C94, 0x2E72,
+ 0x8C95, 0x8C95, 0x2E71, 0x8C97, 0x8C97, 0x2FE4, 0x8C98, 0x8C98, 0x2FE3,
+ 0x8C99, 0x8C99, 0x2FE2, 0x8C9A, 0x8C9A, 0x3132, 0x8C9B, 0x8C9B, 0x3845,
+ 0x8C9C, 0x8C9C, 0x3523, 0x8C9D, 0x8C9D, 0x050E, 0x8C9E, 0x8C9E, 0x080A,
+ 0x8C9F, 0x8C9F, 0x3BAD, 0x8CA0, 0x8CA0, 0x080B, 0x8CA1, 0x8CA2, 0x09CC,
+ 0x8CA3, 0x8CA3, 0x1E0D, 0x8CA4, 0x8CA4, 0x1E0C, 0x8CA5, 0x8CA5, 0x2070,
+ 0x8CA7, 0x8CA7, 0x0BAE, 0x8CA8, 0x8CA8, 0x0BAC, 0x8CA9, 0x8CA9, 0x0BA9,
+ 0x8CAA, 0x8CAA, 0x0BAD, 0x8CAB, 0x8CAB, 0x0BAB, 0x8CAC, 0x8CAC, 0x0BAA,
+ 0x8CAD, 0x8CAD, 0x3FF1, 0x8CAF, 0x8CAF, 0x0D67, 0x8CB0, 0x8CB0, 0x22FD,
+ 0x8CB2, 0x8CB2, 0x0F22, 0x8CB3, 0x8CB3, 0x0D69, 0x8CB4, 0x8CB4, 0x0D6E,
+ 0x8CB5, 0x8CB5, 0x22FF, 0x8CB6, 0x8CB6, 0x0D70, 0x8CB7, 0x8CB7, 0x0D6F,
+ 0x8CB8, 0x8CB8, 0x0D72, 0x8CB9, 0x8CB9, 0x22FE, 0x8CBA, 0x8CBA, 0x22FB,
+ 0x8CBB, 0x8CBB, 0x0D6C, 0x8CBC, 0x8CBC, 0x0D68, 0x8CBD, 0x8CBD, 0x0D6A,
+ 0x8CBE, 0x8CBE, 0x22FC, 0x8CBF, 0x8CBF, 0x0D71, 0x8CC0, 0x8CC0, 0x0D6D,
+ 0x8CC1, 0x8CC1, 0x0D6B, 0x8CC2, 0x8CC2, 0x0F24, 0x8CC3, 0x8CC3, 0x0F23,
+ 0x8CC4, 0x8CC4, 0x0F21, 0x8CC5, 0x8CC5, 0x0F25, 0x8CC7, 0x8CC8, 0x0F1F,
+ 0x8CCA, 0x8CCA, 0x0F1E, 0x8CCC, 0x8CCC, 0x25A0, 0x8CCD, 0x8CCD, 0x3E99,
+ 0x8CCF, 0x8CCF, 0x280D, 0x8CD1, 0x8CD2, 0x10B8, 0x8CD3, 0x8CD3, 0x10B7,
+ 0x8CD4, 0x8CD4, 0x477E, 0x8CD5, 0x8CD5, 0x280C, 0x8CD6, 0x8CD6, 0x384B,
+ 0x8CD7, 0x8CD7, 0x280E, 0x8CD9, 0x8CD9, 0x2A58, 0x8CDA, 0x8CDA, 0x2A5A,
+ 0x8CDB, 0x8CDB, 0x3851, 0x8CDC, 0x8CDC, 0x122E, 0x8CDD, 0x8CDD, 0x2A5B,
+ 0x8CDE, 0x8CDE, 0x1227, 0x8CDF, 0x8CDF, 0x2A57, 0x8CE0, 0x8CE0, 0x1226,
+ 0x8CE1, 0x8CE1, 0x1230, 0x8CE2, 0x8CE3, 0x122C, 0x8CE4, 0x8CE4, 0x1229,
+ 0x8CE5, 0x8CE5, 0x2A56, 0x8CE6, 0x8CE6, 0x1228, 0x8CE7, 0x8CE7, 0x2A5C,
+ 0x8CE8, 0x8CE8, 0x2A59, 0x8CE9, 0x8CE9, 0x3BAE, 0x8CEA, 0x8CEA, 0x122F,
+ 0x8CEB, 0x8CEB, 0x3F9C, 0x8CEC, 0x8CED, 0x122A, 0x8CEE, 0x8CEE, 0x2C9A,
+ 0x8CF0, 0x8CF0, 0x2C9C, 0x8CF1, 0x8CF1, 0x2C9B, 0x8CF2, 0x8CF2, 0x477F,
+ 0x8CF3, 0x8CF3, 0x2C9D, 0x8CF4, 0x8CF4, 0x1360, 0x8CF5, 0x8CF5, 0x2C99,
+ 0x8CF7, 0x8CF7, 0x3FB1, 0x8CF8, 0x8CF8, 0x1486, 0x8CF9, 0x8CF9, 0x2E73,
+ 0x8CFA, 0x8CFA, 0x1483, 0x8CFB, 0x8CFB, 0x1487, 0x8CFC, 0x8CFC, 0x1485,
+ 0x8CFD, 0x8CFD, 0x1484, 0x8CFE, 0x8CFE, 0x2FE5, 0x8D00, 0x8D00, 0x2FE8,
+ 0x8D02, 0x8D02, 0x2FE7, 0x8D03, 0x8D03, 0x384F, 0x8D04, 0x8D04, 0x2FE6,
+ 0x8D05, 0x8D05, 0x152F, 0x8D06, 0x8D07, 0x3133, 0x8D08, 0x8D08, 0x15CD,
+ 0x8D09, 0x8D09, 0x3135, 0x8D0A, 0x8D0A, 0x15CE, 0x8D0B, 0x8D0B, 0x4573,
+ 0x8D0C, 0x8D0C, 0x3F96, 0x8D0D, 0x8D0D, 0x164B, 0x8D0F, 0x8D0F, 0x164A,
+ 0x8D10, 0x8D10, 0x3316, 0x8D11, 0x8D11, 0x3853, 0x8D12, 0x8D12, 0x384E,
+ 0x8D13, 0x8D13, 0x1692, 0x8D14, 0x8D14, 0x3317, 0x8D15, 0x8D15, 0x33BC,
+ 0x8D16, 0x8D17, 0x16D9, 0x8D18, 0x8D18, 0x3E6F, 0x8D19, 0x8D19, 0x3442,
+ 0x8D1B, 0x8D1B, 0x172F, 0x8D1C, 0x8D1C, 0x4780, 0x8D1D, 0x8D1D, 0x4506,
+ 0x8D64, 0x8D64, 0x050F, 0x8D66, 0x8D66, 0x0BB0, 0x8D67, 0x8D67, 0x0BAF,
+ 0x8D68, 0x8D69, 0x25A1, 0x8D6B, 0x8D6B, 0x10BA, 0x8D6C, 0x8D6C, 0x2C9E,
+ 0x8D6D, 0x8D6D, 0x1231, 0x8D6E, 0x8D6E, 0x2C9F, 0x8D6F, 0x8D6F, 0x2E74,
+ 0x8D70, 0x8D70, 0x0510, 0x8D72, 0x8D72, 0x1C06, 0x8D73, 0x8D73, 0x080D,
+ 0x8D74, 0x8D74, 0x080C, 0x8D76, 0x8D76, 0x1E0E, 0x8D77, 0x8D77, 0x09CE,
+ 0x8D78, 0x8D78, 0x1E0F, 0x8D79, 0x8D79, 0x2073, 0x8D7A, 0x8D7A, 0x39E1,
+ 0x8D7B, 0x8D7B, 0x2072, 0x8D7D, 0x8D7D, 0x2071, 0x8D80, 0x8D80, 0x2301,
+ 0x8D81, 0x8D81, 0x0D75, 0x8D82, 0x8D82, 0x3F69, 0x8D84, 0x8D84, 0x2300,
+ 0x8D85, 0x8D85, 0x0D74, 0x8D89, 0x8D89, 0x2302, 0x8D8A, 0x8D8A, 0x0D73,
+ 0x8D8C, 0x8D8C, 0x25A4, 0x8D8D, 0x8D8D, 0x25A7, 0x8D8E, 0x8D8F, 0x25A5,
+ 0x8D90, 0x8D90, 0x25AA, 0x8D91, 0x8D91, 0x25A3, 0x8D92, 0x8D92, 0x25AB,
+ 0x8D93, 0x8D94, 0x25A8, 0x8D95, 0x8D95, 0x10BC, 0x8D96, 0x8D96, 0x280F,
+ 0x8D99, 0x8D99, 0x10BB, 0x8D9B, 0x8D9B, 0x2A60, 0x8D9C, 0x8D9C, 0x2A5E,
+ 0x8D9F, 0x8D9F, 0x1232, 0x8DA0, 0x8DA0, 0x2A5D, 0x8DA1, 0x8DA1, 0x2A5F,
+ 0x8DA3, 0x8DA3, 0x1233, 0x8DA5, 0x8DA5, 0x2CA0, 0x8DA6, 0x8DA6, 0x3FF7,
+ 0x8DA7, 0x8DA7, 0x2CA1, 0x8DA8, 0x8DA8, 0x1488, 0x8DA9, 0x8DA9, 0x3856,
+ 0x8DAA, 0x8DAA, 0x3137, 0x8DAB, 0x8DAB, 0x3139, 0x8DAC, 0x8DAC, 0x3136,
+ 0x8DAD, 0x8DAD, 0x3138, 0x8DAE, 0x8DAE, 0x323D, 0x8DAF, 0x8DAF, 0x3318,
+ 0x8DB2, 0x8DB2, 0x3509, 0x8DB3, 0x8DB3, 0x0511, 0x8DB4, 0x8DB4, 0x080E,
+ 0x8DB5, 0x8DB5, 0x1E10, 0x8DB6, 0x8DB6, 0x1E12, 0x8DB7, 0x8DB7, 0x1E11,
+ 0x8DB9, 0x8DB9, 0x2076, 0x8DBA, 0x8DBA, 0x0BB2, 0x8DBC, 0x8DBC, 0x2074,
+ 0x8DBE, 0x8DBE, 0x0BB1, 0x8DBF, 0x8DBF, 0x2077, 0x8DC0, 0x8DC0, 0x436A,
+ 0x8DC1, 0x8DC1, 0x2078, 0x8DC2, 0x8DC2, 0x2075, 0x8DC3, 0x8DC3, 0x4782,
+ 0x8DC5, 0x8DC5, 0x230E, 0x8DC6, 0x8DC6, 0x0D7D, 0x8DC7, 0x8DC7, 0x2306,
+ 0x8DC8, 0x8DC8, 0x230C, 0x8DCB, 0x8DCB, 0x0D78, 0x8DCC, 0x8DCC, 0x0D7B,
+ 0x8DCD, 0x8DCD, 0x2305, 0x8DCE, 0x8DCE, 0x0D76, 0x8DCF, 0x8DCF, 0x2309,
+ 0x8DD0, 0x8DD0, 0x25B1, 0x8DD1, 0x8DD1, 0x0D7A, 0x8DD3, 0x8DD3, 0x2304,
+ 0x8DD4, 0x8DD4, 0x3F82, 0x8DD5, 0x8DD5, 0x230A, 0x8DD6, 0x8DD6, 0x2307,
+ 0x8DD7, 0x8DD7, 0x230D, 0x8DD8, 0x8DD8, 0x2303, 0x8DD9, 0x8DD9, 0x230B,
+ 0x8DDA, 0x8DDA, 0x0D79, 0x8DDB, 0x8DDB, 0x0D7C, 0x8DDC, 0x8DDC, 0x2308,
+ 0x8DDD, 0x8DDD, 0x0D77, 0x8DDF, 0x8DDF, 0x0F27, 0x8DE0, 0x8DE0, 0x25AD,
+ 0x8DE1, 0x8DE1, 0x0F26, 0x8DE2, 0x8DE2, 0x25B4, 0x8DE3, 0x8DE3, 0x25B3,
+ 0x8DE4, 0x8DE4, 0x0F2D, 0x8DE6, 0x8DE6, 0x0F2E, 0x8DE7, 0x8DE7, 0x25B5,
+ 0x8DE8, 0x8DE8, 0x0F28, 0x8DE9, 0x8DE9, 0x25B2, 0x8DEA, 0x8DEA, 0x0F2C,
+ 0x8DEB, 0x8DEB, 0x25B7, 0x8DEC, 0x8DEC, 0x25AE, 0x8DEE, 0x8DEE, 0x25B0,
+ 0x8DEF, 0x8DEF, 0x0F29, 0x8DF0, 0x8DF0, 0x25AC, 0x8DF1, 0x8DF1, 0x25AF,
+ 0x8DF2, 0x8DF2, 0x25B6, 0x8DF3, 0x8DF3, 0x0F2A, 0x8DF4, 0x8DF4, 0x25B8,
+ 0x8DFA, 0x8DFA, 0x0F2B, 0x8DFC, 0x8DFC, 0x10BD, 0x8DFD, 0x8DFD, 0x2814,
+ 0x8DFE, 0x8DFE, 0x281A, 0x8DFF, 0x8DFF, 0x2812, 0x8E00, 0x8E00, 0x281B,
+ 0x8E01, 0x8E01, 0x3F85, 0x8E02, 0x8E02, 0x2811, 0x8E03, 0x8E03, 0x2816,
+ 0x8E04, 0x8E04, 0x281C, 0x8E05, 0x8E05, 0x2819, 0x8E06, 0x8E06, 0x2818,
+ 0x8E07, 0x8E07, 0x2817, 0x8E09, 0x8E09, 0x2810, 0x8E0A, 0x8E0A, 0x2815,
+ 0x8E0D, 0x8E0D, 0x2813, 0x8E0E, 0x8E0E, 0x3E5E, 0x8E0F, 0x8E0F, 0x1238,
+ 0x8E10, 0x8E10, 0x1235, 0x8E11, 0x8E11, 0x2A69, 0x8E12, 0x8E12, 0x2A6E,
+ 0x8E13, 0x8E13, 0x2A70, 0x8E14, 0x8E14, 0x2A6D, 0x8E15, 0x8E15, 0x2A66,
+ 0x8E16, 0x8E16, 0x2A68, 0x8E17, 0x8E17, 0x2A72, 0x8E18, 0x8E18, 0x2A6F,
+ 0x8E19, 0x8E19, 0x2A6A, 0x8E1A, 0x8E1A, 0x2A73, 0x8E1B, 0x8E1B, 0x2A67,
+ 0x8E1C, 0x8E1C, 0x2A71, 0x8E1D, 0x8E1D, 0x1236, 0x8E1E, 0x8E1E, 0x123C,
+ 0x8E1F, 0x8E1F, 0x123A, 0x8E20, 0x8E20, 0x2A61, 0x8E21, 0x8E21, 0x123B,
+ 0x8E22, 0x8E22, 0x1237, 0x8E23, 0x8E23, 0x2A62, 0x8E24, 0x8E24, 0x2A64,
+ 0x8E25, 0x8E25, 0x2A63, 0x8E26, 0x8E27, 0x2A6B, 0x8E28, 0x8E28, 0x3F88,
+ 0x8E29, 0x8E29, 0x1239, 0x8E2A, 0x8E2A, 0x3BB4, 0x8E2B, 0x8E2B, 0x1234,
+ 0x8E2D, 0x8E2D, 0x3EAB, 0x8E2E, 0x8E2E, 0x2A65, 0x8E30, 0x8E30, 0x2CAB,
+ 0x8E31, 0x8E31, 0x1362, 0x8E33, 0x8E33, 0x2CA2, 0x8E34, 0x8E34, 0x1363,
+ 0x8E35, 0x8E35, 0x1366, 0x8E36, 0x8E36, 0x2CA7, 0x8E38, 0x8E38, 0x2CA4,
+ 0x8E39, 0x8E39, 0x1365, 0x8E3A, 0x8E3A, 0x4784, 0x8E3C, 0x8E3D, 0x2CA8,
+ 0x8E3E, 0x8E3E, 0x2CA3, 0x8E3F, 0x8E3F, 0x2CAC, 0x8E40, 0x8E40, 0x2CA5,
+ 0x8E41, 0x8E41, 0x2CAA, 0x8E42, 0x8E42, 0x1364, 0x8E44, 0x8E44, 0x1361,
+ 0x8E45, 0x8E45, 0x2CA6, 0x8E46, 0x8E46, 0x4312, 0x8E47, 0x8E47, 0x2E7A,
+ 0x8E48, 0x8E48, 0x148B, 0x8E49, 0x8E49, 0x1489, 0x8E4A, 0x8E4A, 0x148C,
+ 0x8E4B, 0x8E4B, 0x148A, 0x8E4C, 0x8E4C, 0x2E79, 0x8E4D, 0x8E4D, 0x2E76,
+ 0x8E4E, 0x8E4E, 0x2E75, 0x8E4F, 0x8E4F, 0x3F83, 0x8E50, 0x8E50, 0x2E78,
+ 0x8E53, 0x8E53, 0x2E77, 0x8E54, 0x8E54, 0x2FF6, 0x8E55, 0x8E55, 0x1535,
+ 0x8E56, 0x8E56, 0x2FED, 0x8E57, 0x8E57, 0x2FEC, 0x8E59, 0x8E59, 0x1530,
+ 0x8E5A, 0x8E5A, 0x2FF2, 0x8E5B, 0x8E5B, 0x2FF1, 0x8E5C, 0x8E5C, 0x2FE9,
+ 0x8E5D, 0x8E5D, 0x2FF4, 0x8E5E, 0x8E5E, 0x2FEE, 0x8E5F, 0x8E5F, 0x1534,
+ 0x8E60, 0x8E60, 0x2FEB, 0x8E61, 0x8E61, 0x2FF3, 0x8E62, 0x8E62, 0x2FEA,
+ 0x8E63, 0x8E63, 0x1531, 0x8E64, 0x8E64, 0x1533, 0x8E65, 0x8E65, 0x2FEF,
+ 0x8E66, 0x8E66, 0x1532, 0x8E67, 0x8E67, 0x2FF0, 0x8E68, 0x8E68, 0x434D,
+ 0x8E69, 0x8E69, 0x2FF5, 0x8E6A, 0x8E6A, 0x313D, 0x8E6C, 0x8E6C, 0x15D3,
+ 0x8E6D, 0x8E6D, 0x313A, 0x8E6F, 0x8E6F, 0x313E, 0x8E71, 0x8E71, 0x43E7,
+ 0x8E72, 0x8E72, 0x15D0, 0x8E73, 0x8E73, 0x313C, 0x8E74, 0x8E74, 0x15D5,
+ 0x8E75, 0x8E75, 0x3F89, 0x8E76, 0x8E76, 0x15D2, 0x8E77, 0x8E77, 0x3F7F,
+ 0x8E78, 0x8E78, 0x313B, 0x8E7A, 0x8E7A, 0x15D4, 0x8E7B, 0x8E7B, 0x313F,
+ 0x8E7C, 0x8E7C, 0x15CF, 0x8E7E, 0x8E7E, 0x4324, 0x8E80, 0x8E80, 0x3E57,
+ 0x8E81, 0x8E81, 0x164D, 0x8E82, 0x8E82, 0x164F, 0x8E84, 0x8E84, 0x3240,
+ 0x8E85, 0x8E85, 0x164E, 0x8E86, 0x8E86, 0x323E, 0x8E87, 0x8E87, 0x15D1,
+ 0x8E88, 0x8E88, 0x323F, 0x8E89, 0x8E89, 0x164C, 0x8E8A, 0x8E8A, 0x1693,
+ 0x8E8B, 0x8E8B, 0x1695, 0x8E8C, 0x8E8C, 0x331A, 0x8E8D, 0x8E8D, 0x1694,
+ 0x8E8E, 0x8E8E, 0x3319, 0x8E90, 0x8E90, 0x33C1, 0x8E91, 0x8E91, 0x16DB,
+ 0x8E92, 0x8E92, 0x33C0, 0x8E93, 0x8E93, 0x16DC, 0x8E94, 0x8E94, 0x33BE,
+ 0x8E95, 0x8E95, 0x33BD, 0x8E96, 0x8E97, 0x33C2, 0x8E98, 0x8E98, 0x3443,
+ 0x8E9A, 0x8E9A, 0x33BF, 0x8E9D, 0x8E9D, 0x34A1, 0x8E9E, 0x8EA0, 0x349E,
+ 0x8EA1, 0x8EA1, 0x1749, 0x8EA3, 0x8EA3, 0x34EB, 0x8EA4, 0x8EA4, 0x34EA,
+ 0x8EA5, 0x8EA5, 0x34E9, 0x8EA6, 0x8EA6, 0x350A, 0x8EA7, 0x8EA7, 0x3BB5,
+ 0x8EA8, 0x8EA8, 0x3537, 0x8EA9, 0x8EA9, 0x3524, 0x8EAA, 0x8EAA, 0x175B,
+ 0x8EAB, 0x8EAB, 0x0512, 0x8EAC, 0x8EAC, 0x09CF, 0x8EAD, 0x8EAD, 0x385E,
+ 0x8EB0, 0x8EB0, 0x43E9, 0x8EB2, 0x8EB2, 0x0F2F, 0x8EB6, 0x8EB6, 0x385F,
+ 0x8EBA, 0x8EBA, 0x123D, 0x8EBC, 0x8EBC, 0x38A0, 0x8EBD, 0x8EBD, 0x2CAD,
+ 0x8EC0, 0x8EC0, 0x1536, 0x8EC2, 0x8EC2, 0x3140, 0x8EC3, 0x8EC3, 0x3860,
+ 0x8EC9, 0x8EC9, 0x3525, 0x8ECA, 0x8ECA, 0x0513, 0x8ECB, 0x8ECB, 0x068D,
+ 0x8ECC, 0x8ECC, 0x0810, 0x8ECD, 0x8ECD, 0x080F, 0x8ECE, 0x8ECE, 0x4788,
+ 0x8ECF, 0x8ECF, 0x09D2, 0x8ED1, 0x8ED1, 0x1E13, 0x8ED2, 0x8ED2, 0x09D0,
+ 0x8ED3, 0x8ED3, 0x1E14, 0x8ED4, 0x8ED4, 0x09D1, 0x8ED7, 0x8ED7, 0x207D,
+ 0x8ED8, 0x8ED8, 0x2079, 0x8EDA, 0x8EDA, 0x3DBE, 0x8EDB, 0x8EDB, 0x0BB3,
+ 0x8EDC, 0x8EDC, 0x207C, 0x8EDD, 0x8EDD, 0x207B, 0x8EDE, 0x8EDE, 0x207A,
+ 0x8EDF, 0x8EDF, 0x0BB4, 0x8EE0, 0x8EE1, 0x207E, 0x8EE2, 0x8EE2, 0x4789,
+ 0x8EE4, 0x8EE4, 0x478A, 0x8EE5, 0x8EE5, 0x2315, 0x8EE6, 0x8EE6, 0x2313,
+ 0x8EE7, 0x8EE8, 0x2317, 0x8EE9, 0x8EE9, 0x231E, 0x8EEB, 0x8EEB, 0x231A,
+ 0x8EEC, 0x8EEC, 0x231C, 0x8EED, 0x8EED, 0x478B, 0x8EEE, 0x8EEE, 0x2314,
+ 0x8EEF, 0x8EEF, 0x230F, 0x8EF1, 0x8EF1, 0x231B, 0x8EF2, 0x8EF2, 0x478C,
+ 0x8EF4, 0x8EF4, 0x231D, 0x8EF5, 0x8EF5, 0x2316, 0x8EF6, 0x8EF6, 0x2319,
+ 0x8EF7, 0x8EF7, 0x2310, 0x8EF8, 0x8EF8, 0x0D7F, 0x8EF9, 0x8EF9, 0x2312,
+ 0x8EFA, 0x8EFA, 0x2311, 0x8EFB, 0x8EFB, 0x0D7E, 0x8EFC, 0x8EFC, 0x0D80,
+ 0x8EFE, 0x8EFE, 0x0F32, 0x8EFF, 0x8EFF, 0x25BA, 0x8F00, 0x8F00, 0x25BC,
+ 0x8F01, 0x8F01, 0x25BB, 0x8F02, 0x8F02, 0x25C0, 0x8F03, 0x8F03, 0x0F30,
+ 0x8F05, 0x8F05, 0x25BD, 0x8F06, 0x8F06, 0x25B9, 0x8F07, 0x8F08, 0x25BE,
+ 0x8F09, 0x8F09, 0x0F31, 0x8F0A, 0x8F0A, 0x0F33, 0x8F0B, 0x8F0B, 0x25C1,
+ 0x8F0D, 0x8F0D, 0x2820, 0x8F0E, 0x8F0E, 0x281F, 0x8F10, 0x8F11, 0x281D,
+ 0x8F12, 0x8F12, 0x10BF, 0x8F13, 0x8F13, 0x10C1, 0x8F14, 0x8F14, 0x10BE,
+ 0x8F15, 0x8F15, 0x10C0, 0x8F16, 0x8F17, 0x2A7A, 0x8F18, 0x8F18, 0x2A76,
+ 0x8F19, 0x8F19, 0x3862, 0x8F1A, 0x8F1A, 0x2A77, 0x8F1B, 0x8F1B, 0x123F,
+ 0x8F1C, 0x8F1C, 0x1244, 0x8F1D, 0x8F1D, 0x123E, 0x8F1E, 0x8F1E, 0x1245,
+ 0x8F1F, 0x8F1F, 0x1240, 0x8F20, 0x8F20, 0x2A78, 0x8F23, 0x8F23, 0x2A79,
+ 0x8F24, 0x8F24, 0x2A75, 0x8F25, 0x8F25, 0x1246, 0x8F26, 0x8F26, 0x1242,
+ 0x8F29, 0x8F29, 0x1241, 0x8F2A, 0x8F2A, 0x1243, 0x8F2C, 0x8F2C, 0x2A74,
+ 0x8F2D, 0x8F2D, 0x3863, 0x8F2E, 0x8F2E, 0x2CAF, 0x8F2F, 0x8F2F, 0x1368,
+ 0x8F30, 0x8F30, 0x3BB7, 0x8F32, 0x8F32, 0x2CB1, 0x8F33, 0x8F33, 0x136A,
+ 0x8F34, 0x8F34, 0x2CB4, 0x8F35, 0x8F35, 0x2CB0, 0x8F36, 0x8F36, 0x2CAE,
+ 0x8F37, 0x8F37, 0x2CB3, 0x8F38, 0x8F38, 0x1369, 0x8F39, 0x8F39, 0x2CB2,
+ 0x8F3B, 0x8F3B, 0x1367, 0x8F3E, 0x8F3E, 0x148E, 0x8F3F, 0x8F3F, 0x1491,
+ 0x8F40, 0x8F40, 0x2E7C, 0x8F41, 0x8F41, 0x3D07, 0x8F42, 0x8F42, 0x148F,
+ 0x8F43, 0x8F43, 0x2E7B, 0x8F44, 0x8F44, 0x148D, 0x8F45, 0x8F45, 0x1490,
+ 0x8F46, 0x8F48, 0x2FF7, 0x8F49, 0x8F49, 0x1537, 0x8F4A, 0x8F4A, 0x3BB8,
+ 0x8F4B, 0x8F4B, 0x2FFA, 0x8F4D, 0x8F4D, 0x1538, 0x8F4E, 0x8F4E, 0x15D7,
+ 0x8F4F, 0x8F50, 0x3143, 0x8F51, 0x8F51, 0x3142, 0x8F52, 0x8F52, 0x3141,
+ 0x8F53, 0x8F53, 0x3145, 0x8F54, 0x8F54, 0x15D6, 0x8F55, 0x8F55, 0x3244,
+ 0x8F56, 0x8F57, 0x3242, 0x8F58, 0x8F58, 0x3245, 0x8F59, 0x8F59, 0x3241,
+ 0x8F5A, 0x8F5A, 0x3246, 0x8F5B, 0x8F5B, 0x331C, 0x8F5C, 0x8F5C, 0x3F31,
+ 0x8F5D, 0x8F5D, 0x331D, 0x8F5E, 0x8F5E, 0x331B, 0x8F5F, 0x8F5F, 0x1696,
+ 0x8F60, 0x8F60, 0x33C4, 0x8F61, 0x8F61, 0x16DD, 0x8F62, 0x8F62, 0x33C5,
+ 0x8F63, 0x8F63, 0x3445, 0x8F64, 0x8F64, 0x3444, 0x8F66, 0x8F67, 0x4569,
+ 0x8F6E, 0x8F6E, 0x456B, 0x8F93, 0x8F93, 0x4732, 0x8F9B, 0x8F9B, 0x0514,
+ 0x8F9C, 0x8F9C, 0x0D81, 0x8F9F, 0x8F9F, 0x0F34, 0x8FA0, 0x8FA0, 0x3D94,
+ 0x8FA3, 0x8FA3, 0x10C2, 0x8FA5, 0x8FA5, 0x3866, 0x8FA6, 0x8FA6, 0x136C,
+ 0x8FA8, 0x8FA8, 0x136B, 0x8FAD, 0x8FAD, 0x15D8, 0x8FAE, 0x8FAE, 0x162F,
+ 0x8FAF, 0x8FAF, 0x1697, 0x8FB0, 0x8FB0, 0x0515, 0x8FB1, 0x8FB1, 0x09D3,
+ 0x8FB2, 0x8FB2, 0x0F35, 0x8FB3, 0x8FB3, 0x386A, 0x8FB4, 0x8FB4, 0x3146,
+ 0x8FB5, 0x8FB5, 0x0230, 0x8FB6, 0x8FB6, 0x47D3, 0x8FB7, 0x8FB7, 0x43FD,
+ 0x8FB8, 0x8FB8, 0x42F6, 0x8FB9, 0x8FB9, 0x48C9, 0x8FBA, 0x8FBA, 0x48C7,
+ 0x8FBB, 0x8FBC, 0x3D6B, 0x8FBE, 0x8FBE, 0x48C6, 0x8FBF, 0x8FBF, 0x18E9,
+ 0x8FC1, 0x8FC1, 0x478D, 0x8FC2, 0x8FC2, 0x0516, 0x8FC4, 0x8FC4, 0x0519,
+ 0x8FC5, 0x8FC5, 0x0518, 0x8FC6, 0x8FC6, 0x0517, 0x8FC9, 0x8FC9, 0x18E8,
+ 0x8FCA, 0x8FCA, 0x478E, 0x8FCB, 0x8FCB, 0x1A4A, 0x8FCC, 0x8FCC, 0x478F,
+ 0x8FCD, 0x8FCD, 0x1A4C, 0x8FCE, 0x8FCE, 0x068E, 0x8FD0, 0x8FD0, 0x48AE,
+ 0x8FD1, 0x8FD1, 0x0690, 0x8FD2, 0x8FD2, 0x1A49, 0x8FD3, 0x8FD3, 0x1A4B,
+ 0x8FD4, 0x8FD4, 0x068F, 0x8FD5, 0x8FD5, 0x1A4E, 0x8FD6, 0x8FD6, 0x1A4D,
+ 0x8FD7, 0x8FD7, 0x1A4F, 0x8FDA, 0x8FDA, 0x3FCB, 0x8FE0, 0x8FE0, 0x1C0A,
+ 0x8FE1, 0x8FE1, 0x1C08, 0x8FE2, 0x8FE2, 0x0813, 0x8FE3, 0x8FE3, 0x1C07,
+ 0x8FE4, 0x8FE4, 0x0818, 0x8FE5, 0x8FE5, 0x0815, 0x8FE6, 0x8FE6, 0x0812,
+ 0x8FE8, 0x8FE8, 0x0819, 0x8FEA, 0x8FEA, 0x0814, 0x8FEB, 0x8FEB, 0x0817,
+ 0x8FED, 0x8FED, 0x0816, 0x8FEE, 0x8FEE, 0x1C09, 0x8FF0, 0x8FF0, 0x0811,
+ 0x8FF4, 0x8FF4, 0x09D9, 0x8FF5, 0x8FF5, 0x1E16, 0x8FF6, 0x8FF6, 0x1E1C,
+ 0x8FF7, 0x8FF7, 0x09D6, 0x8FF8, 0x8FF8, 0x09DD, 0x8FF9, 0x8FF9, 0x3871,
+ 0x8FFA, 0x8FFA, 0x09D8, 0x8FFB, 0x8FFB, 0x1E19, 0x8FFC, 0x8FFC, 0x1E1B,
+ 0x8FFD, 0x8FFD, 0x09DB, 0x8FFE, 0x8FFE, 0x1E15, 0x8FFF, 0x8FFF, 0x1E18,
+ 0x9000, 0x9000, 0x09D7, 0x9001, 0x9001, 0x09D4, 0x9002, 0x9002, 0x1E17,
+ 0x9003, 0x9003, 0x09DA, 0x9004, 0x9004, 0x1E1A, 0x9005, 0x9005, 0x09DC,
+ 0x9006, 0x9006, 0x09D5, 0x9008, 0x9008, 0x3EE0, 0x900B, 0x900B, 0x2081,
+ 0x900C, 0x900C, 0x2084, 0x900D, 0x900D, 0x0BB6, 0x900F, 0x900F, 0x0BC0,
+ 0x9010, 0x9010, 0x0BBC, 0x9011, 0x9011, 0x2082, 0x9012, 0x9012, 0x3E4E,
+ 0x9014, 0x9014, 0x0BC4, 0x9015, 0x9015, 0x0BBD, 0x9016, 0x9016, 0x0BC2,
+ 0x9017, 0x9017, 0x0BB8, 0x9019, 0x9019, 0x0BB5, 0x901A, 0x901A, 0x0BB7,
+ 0x901B, 0x901B, 0x0BC3, 0x901C, 0x901C, 0x2083, 0x901D, 0x901D, 0x0BBB,
+ 0x901E, 0x901E, 0x0BBE, 0x901F, 0x901F, 0x0BBA, 0x9020, 0x9020, 0x0BBF,
+ 0x9021, 0x9021, 0x2085, 0x9022, 0x9022, 0x0BC1, 0x9023, 0x9023, 0x0BB9,
+ 0x9024, 0x9024, 0x2080, 0x902D, 0x902D, 0x231F, 0x902E, 0x902E, 0x0D82,
+ 0x902F, 0x902F, 0x2321, 0x9031, 0x9031, 0x0D84, 0x9032, 0x9032, 0x0D86,
+ 0x9033, 0x9033, 0x4790, 0x9034, 0x9034, 0x2320, 0x9035, 0x9035, 0x0D83,
+ 0x9036, 0x9036, 0x0D87, 0x9037, 0x9037, 0x3876, 0x9038, 0x9038, 0x0D85,
+ 0x903C, 0x903C, 0x0F3B, 0x903D, 0x903D, 0x25C6, 0x903E, 0x903E, 0x0F43,
+ 0x903F, 0x903F, 0x25C3, 0x9041, 0x9041, 0x0F44, 0x9042, 0x9042, 0x0F39,
+ 0x9044, 0x9044, 0x25C4, 0x9047, 0x9047, 0x0F3E, 0x9049, 0x9049, 0x25C5,
+ 0x904A, 0x904A, 0x0F37, 0x904B, 0x904B, 0x0F36, 0x904C, 0x904C, 0x3F10,
+ 0x904D, 0x904D, 0x0F41, 0x904E, 0x904E, 0x0F40, 0x904F, 0x904F, 0x0F3F,
+ 0x9050, 0x9050, 0x0F3D, 0x9051, 0x9051, 0x0F42, 0x9052, 0x9052, 0x25C2,
+ 0x9053, 0x9053, 0x0F38, 0x9054, 0x9054, 0x0F3A, 0x9055, 0x9055, 0x0F3C,
+ 0x9056, 0x9056, 0x3DD2, 0x9058, 0x9058, 0x10C4, 0x9059, 0x9059, 0x10C7,
+ 0x905B, 0x905B, 0x10CB, 0x905C, 0x905C, 0x10C5, 0x905D, 0x905D, 0x10CA,
+ 0x905E, 0x905E, 0x10C8, 0x9060, 0x9060, 0x10C3, 0x9061, 0x9061, 0x3879,
+ 0x9062, 0x9062, 0x10C9, 0x9063, 0x9063, 0x10C6, 0x9064, 0x9064, 0x3C68,
+ 0x9067, 0x9067, 0x2A7F, 0x9068, 0x9068, 0x1249, 0x9069, 0x9069, 0x1247,
+ 0x906B, 0x906B, 0x2A80, 0x906C, 0x906C, 0x3D60, 0x906D, 0x906D, 0x124A,
+ 0x906E, 0x906E, 0x1248, 0x906F, 0x906F, 0x2A7E, 0x9070, 0x9070, 0x2A7D,
+ 0x9072, 0x9072, 0x1370, 0x9073, 0x9073, 0x2A7C, 0x9074, 0x9074, 0x136E,
+ 0x9075, 0x9075, 0x136D, 0x9076, 0x9076, 0x2CB5, 0x9077, 0x9077, 0x124B,
+ 0x9078, 0x9078, 0x136F, 0x9079, 0x9079, 0x2CB6, 0x907A, 0x907A, 0x1372,
+ 0x907B, 0x907B, 0x2CB7, 0x907C, 0x907C, 0x1371, 0x907D, 0x907D, 0x1493,
+ 0x907E, 0x907E, 0x2E7E, 0x907F, 0x907F, 0x1492, 0x9080, 0x9080, 0x1497,
+ 0x9081, 0x9082, 0x1495, 0x9083, 0x9083, 0x153A, 0x9084, 0x9084, 0x1494,
+ 0x9085, 0x9085, 0x2E7D, 0x9086, 0x9086, 0x2CB8, 0x9087, 0x9087, 0x1539,
+ 0x9088, 0x9088, 0x153B, 0x908A, 0x908B, 0x15D9, 0x908D, 0x908D, 0x3247,
+ 0x908F, 0x908F, 0x170C, 0x9090, 0x9090, 0x170B, 0x9091, 0x9091, 0x051B,
+ 0x9094, 0x9094, 0x181E, 0x9095, 0x9095, 0x09DE, 0x9097, 0x9098, 0x181B,
+ 0x9099, 0x9099, 0x181A, 0x909B, 0x909B, 0x181D, 0x909E, 0x909E, 0x18ED,
+ 0x909F, 0x909F, 0x18EA, 0x90A0, 0x90A0, 0x18EF, 0x90A1, 0x90A1, 0x18EB,
+ 0x90A2, 0x90A2, 0x051C, 0x90A3, 0x90A3, 0x051F, 0x90A5, 0x90A5, 0x18EC,
+ 0x90A6, 0x90A6, 0x051E, 0x90A7, 0x90A7, 0x18EE, 0x90A8, 0x90A8, 0x387C,
+ 0x90AA, 0x90AA, 0x051D, 0x90AE, 0x90AE, 0x3880, 0x90AF, 0x90AF, 0x1A52,
+ 0x90B0, 0x90B0, 0x1A54, 0x90B1, 0x90B1, 0x0693, 0x90B2, 0x90B2, 0x1A50,
+ 0x90B3, 0x90B3, 0x1A53, 0x90B4, 0x90B4, 0x1A51, 0x90B5, 0x90B5, 0x0691,
+ 0x90B6, 0x90B6, 0x0694, 0x90B8, 0x90B8, 0x0692, 0x90BB, 0x90BB, 0x3BC4,
+ 0x90BD, 0x90BD, 0x1C0C, 0x90BE, 0x90BE, 0x1C10, 0x90BF, 0x90BF, 0x1C0D,
+ 0x90C1, 0x90C1, 0x081C, 0x90C3, 0x90C3, 0x081D, 0x90C4, 0x90C4, 0x387E,
+ 0x90C5, 0x90C5, 0x1C0F, 0x90C7, 0x90C7, 0x1C11, 0x90C8, 0x90C8, 0x1C13,
+ 0x90CA, 0x90CA, 0x081A, 0x90CB, 0x90CB, 0x1C12, 0x90CE, 0x90CE, 0x081B,
+ 0x90D4, 0x90D4, 0x208C, 0x90D5, 0x90D5, 0x1C0E, 0x90D6, 0x90D6, 0x1E1D,
+ 0x90D7, 0x90D7, 0x1E26, 0x90D8, 0x90D8, 0x1E24, 0x90D9, 0x90DA, 0x1E1F,
+ 0x90DB, 0x90DB, 0x1E25, 0x90DC, 0x90DC, 0x1E27, 0x90DD, 0x90DD, 0x09E0,
+ 0x90DF, 0x90DF, 0x1E22, 0x90E0, 0x90E0, 0x1E1E, 0x90E1, 0x90E1, 0x09DF,
+ 0x90E2, 0x90E2, 0x09E1, 0x90E3, 0x90E3, 0x1E21, 0x90E4, 0x90E4, 0x1E28,
+ 0x90E5, 0x90E5, 0x1E23, 0x90E8, 0x90E8, 0x0BC5, 0x90E9, 0x90E9, 0x208F,
+ 0x90EA, 0x90EA, 0x2087, 0x90EB, 0x90EC, 0x208D, 0x90ED, 0x90ED, 0x0BC6,
+ 0x90EF, 0x90EF, 0x2086, 0x90F0, 0x90F0, 0x2088, 0x90F1, 0x90F1, 0x1C0B,
+ 0x90F2, 0x90F3, 0x208A, 0x90F4, 0x90F4, 0x2089, 0x90F5, 0x90F5, 0x0D89,
+ 0x90F9, 0x90F9, 0x2328, 0x90FA, 0x90FA, 0x2CB9, 0x90FB, 0x90FB, 0x2329,
+ 0x90FC, 0x90FC, 0x2326, 0x90FD, 0x90FD, 0x0BC7, 0x90FE, 0x90FE, 0x0D8B,
+ 0x90FF, 0x90FF, 0x2325, 0x9100, 0x9100, 0x232B, 0x9101, 0x9101, 0x232A,
+ 0x9102, 0x9102, 0x0D88, 0x9103, 0x9103, 0x232E, 0x9104, 0x9104, 0x2324,
+ 0x9105, 0x9105, 0x232D, 0x9106, 0x9106, 0x2322, 0x9107, 0x9107, 0x232C,
+ 0x9108, 0x9108, 0x2327, 0x9109, 0x9109, 0x0D8A, 0x910B, 0x910B, 0x25CD,
+ 0x910D, 0x910D, 0x25C8, 0x910E, 0x910E, 0x25CE, 0x910F, 0x910F, 0x25C9,
+ 0x9110, 0x9110, 0x25C7, 0x9111, 0x9111, 0x25CA, 0x9112, 0x9112, 0x0F45,
+ 0x9114, 0x9114, 0x25CC, 0x9116, 0x9116, 0x25CB, 0x9117, 0x9117, 0x0F46,
+ 0x9118, 0x9118, 0x10CD, 0x9119, 0x9119, 0x10CC, 0x911A, 0x911A, 0x2827,
+ 0x911B, 0x911B, 0x282A, 0x911C, 0x911C, 0x2822, 0x911D, 0x911D, 0x2826,
+ 0x911E, 0x911E, 0x10CE, 0x911F, 0x911F, 0x2825, 0x9120, 0x9120, 0x2823,
+ 0x9121, 0x9121, 0x2829, 0x9122, 0x9122, 0x2824, 0x9123, 0x9123, 0x2821,
+ 0x9124, 0x9124, 0x2828, 0x9126, 0x9126, 0x2A86, 0x9127, 0x9127, 0x124E,
+ 0x9128, 0x9128, 0x2FFB, 0x9129, 0x912A, 0x2A83, 0x912B, 0x912B, 0x2A82,
+ 0x912C, 0x912C, 0x2323, 0x912D, 0x912D, 0x124D, 0x912E, 0x912E, 0x2A87,
+ 0x912F, 0x912F, 0x2A81, 0x9130, 0x9130, 0x124C, 0x9131, 0x9131, 0x124F,
+ 0x9132, 0x9132, 0x2A85, 0x9133, 0x9133, 0x2CBA, 0x9134, 0x9134, 0x1373,
+ 0x9135, 0x9136, 0x2CBB, 0x9138, 0x9138, 0x2E7F, 0x9139, 0x9139, 0x1498,
+ 0x913A, 0x913B, 0x2FFC, 0x913E, 0x913E, 0x2FFE, 0x913F, 0x913F, 0x3148,
+ 0x9140, 0x9140, 0x3147, 0x9141, 0x9141, 0x3249, 0x9143, 0x9143, 0x3248,
+ 0x9144, 0x9145, 0x331F, 0x9146, 0x9146, 0x331E, 0x9147, 0x9147, 0x33C6,
+ 0x9148, 0x9148, 0x16DE, 0x9149, 0x9149, 0x0520, 0x914A, 0x914A, 0x081F,
+ 0x914B, 0x914B, 0x081E, 0x914C, 0x914C, 0x09E4, 0x914D, 0x914D, 0x09E3,
+ 0x914E, 0x914F, 0x1E2A, 0x9150, 0x9150, 0x1E29, 0x9151, 0x9151, 0x3F49,
+ 0x9152, 0x9152, 0x09E2, 0x9153, 0x9153, 0x2093, 0x9155, 0x9155, 0x2094,
+ 0x9156, 0x9156, 0x2090, 0x9157, 0x9157, 0x0BC8, 0x9158, 0x9158, 0x2091,
+ 0x9159, 0x9159, 0x3F45, 0x915A, 0x915A, 0x2092, 0x915C, 0x915C, 0x3F47,
+ 0x915E, 0x915E, 0x43EB, 0x915F, 0x915F, 0x2331, 0x9160, 0x9160, 0x2333,
+ 0x9161, 0x9161, 0x232F, 0x9162, 0x9162, 0x2332, 0x9163, 0x9163, 0x0D8C,
+ 0x9164, 0x9164, 0x2330, 0x9165, 0x9165, 0x0D8D, 0x9167, 0x9167, 0x3882,
+ 0x9168, 0x9168, 0x23E2, 0x9169, 0x9169, 0x0F49, 0x916A, 0x916A, 0x0F48,
+ 0x916C, 0x916C, 0x0F47, 0x916E, 0x916F, 0x25CF, 0x9170, 0x9170, 0x3EB8,
+ 0x9172, 0x9172, 0x282C, 0x9173, 0x9173, 0x282E, 0x9174, 0x9174, 0x10D2,
+ 0x9175, 0x9175, 0x10CF, 0x9176, 0x9176, 0x3E9B, 0x9177, 0x9177, 0x10D1,
+ 0x9178, 0x9178, 0x10D0, 0x9179, 0x9179, 0x282D, 0x917A, 0x917A, 0x282B,
+ 0x917C, 0x917C, 0x3F6F, 0x9180, 0x9180, 0x2A8E, 0x9181, 0x9182, 0x2A8B,
+ 0x9183, 0x9183, 0x1253, 0x9184, 0x9184, 0x2A8D, 0x9185, 0x9186, 0x2A88,
+ 0x9187, 0x9187, 0x1250, 0x9189, 0x9189, 0x1251, 0x918A, 0x918A, 0x2A8A,
+ 0x918B, 0x918B, 0x1252, 0x918C, 0x918C, 0x43EC, 0x918D, 0x918D, 0x2CC0,
+ 0x918E, 0x918E, 0x3F4E, 0x918F, 0x918F, 0x2CC1, 0x9190, 0x9191, 0x2CBE,
+ 0x9192, 0x9192, 0x1374, 0x9193, 0x9193, 0x2CBD, 0x9199, 0x9199, 0x2E83,
+ 0x919A, 0x919A, 0x2E80, 0x919B, 0x919B, 0x2E82, 0x919C, 0x919C, 0x149B,
+ 0x919D, 0x919D, 0x2E86, 0x919E, 0x919E, 0x149A, 0x919F, 0x919F, 0x2E84,
+ 0x91A0, 0x91A0, 0x2E87, 0x91A1, 0x91A1, 0x2E85, 0x91A2, 0x91A2, 0x2E81,
+ 0x91A3, 0x91A3, 0x1499, 0x91A5, 0x91A5, 0x3000, 0x91A7, 0x91A7, 0x3001,
+ 0x91A8, 0x91A8, 0x2FFF, 0x91A9, 0x91A9, 0x3883, 0x91AA, 0x91AA, 0x3003,
+ 0x91AB, 0x91AC, 0x153C, 0x91AD, 0x91AD, 0x314A, 0x91AE, 0x91AE, 0x15DC,
+ 0x91AF, 0x91AF, 0x3002, 0x91B0, 0x91B0, 0x3149, 0x91B1, 0x91B1, 0x15DB,
+ 0x91B2, 0x91B3, 0x324C, 0x91B4, 0x91B4, 0x1650, 0x91B5, 0x91B5, 0x324B,
+ 0x91B6, 0x91B6, 0x45EF, 0x91B7, 0x91B7, 0x324A, 0x91B9, 0x91B9, 0x3321,
+ 0x91BA, 0x91BA, 0x1698, 0x91BB, 0x91BB, 0x3BC8, 0x91BC, 0x91BC, 0x3446,
+ 0x91BD, 0x91BD, 0x34A3, 0x91BE, 0x91BE, 0x34A2, 0x91C0, 0x91C0, 0x1730,
+ 0x91C1, 0x91C1, 0x174A, 0x91C2, 0x91C2, 0x34A4, 0x91C3, 0x91C3, 0x350B,
+ 0x91C4, 0x91C4, 0x3884, 0x91C5, 0x91C5, 0x175C, 0x91C6, 0x91C6, 0x0521,
+ 0x91C7, 0x91C7, 0x0695, 0x91C9, 0x91C9, 0x0F4A, 0x91CB, 0x91CB, 0x1651,
+ 0x91CC, 0x91CC, 0x0522, 0x91CD, 0x91CD, 0x0820, 0x91CE, 0x91CE, 0x0BC9,
+ 0x91CF, 0x91CF, 0x0D8E, 0x91D0, 0x91D0, 0x153E, 0x91D1, 0x91D1, 0x0696,
+ 0x91D3, 0x91D3, 0x1C15, 0x91D4, 0x91D4, 0x1C14, 0x91D5, 0x91D5, 0x1E2C,
+ 0x91D6, 0x91D6, 0x415E, 0x91D7, 0x91D7, 0x09E7, 0x91D8, 0x91D8, 0x09E5,
+ 0x91D9, 0x91D9, 0x09E9, 0x91DA, 0x91DA, 0x1E2E, 0x91DC, 0x91DC, 0x09E8,
+ 0x91DD, 0x91DD, 0x09E6, 0x91DF, 0x91DF, 0x453A, 0x91E2, 0x91E2, 0x1E2D,
+ 0x91E3, 0x91E3, 0x0BCC, 0x91E4, 0x91E4, 0x209A, 0x91E5, 0x91E5, 0x3C06,
+ 0x91E6, 0x91E6, 0x0BCB, 0x91E7, 0x91E7, 0x0BCD, 0x91E8, 0x91E8, 0x209F,
+ 0x91E9, 0x91E9, 0x0BCF, 0x91EA, 0x91EB, 0x209C, 0x91EC, 0x91EC, 0x2095,
+ 0x91ED, 0x91ED, 0x0BCE, 0x91EE, 0x91EE, 0x20A0, 0x91F1, 0x91F1, 0x2097,
+ 0x91F3, 0x91F3, 0x2098, 0x91F4, 0x91F4, 0x2096, 0x91F5, 0x91F5, 0x0BCA,
+ 0x91F7, 0x91F7, 0x209E, 0x91F8, 0x91F8, 0x2099, 0x91F9, 0x91F9, 0x209B,
+ 0x91FA, 0x91FA, 0x3AF8, 0x91FD, 0x91FD, 0x233F, 0x91FE, 0x91FE, 0x382E,
+ 0x91FF, 0x91FF, 0x233E, 0x9200, 0x9200, 0x233C, 0x9201, 0x9201, 0x2334,
+ 0x9202, 0x9202, 0x2343, 0x9203, 0x9203, 0x2337, 0x9204, 0x9204, 0x2341,
+ 0x9205, 0x9205, 0x2348, 0x9206, 0x9206, 0x2340, 0x9207, 0x9207, 0x0D96,
+ 0x9208, 0x9208, 0x3EB9, 0x9209, 0x9209, 0x0D92, 0x920A, 0x920A, 0x2335,
+ 0x920C, 0x920C, 0x233B, 0x920D, 0x920D, 0x0D94, 0x920E, 0x920E, 0x3888,
+ 0x920F, 0x920F, 0x233A, 0x9210, 0x9210, 0x0D95, 0x9211, 0x9211, 0x0D97,
+ 0x9212, 0x9212, 0x233D, 0x9213, 0x9213, 0x4793, 0x9214, 0x9215, 0x0D8F,
+ 0x9216, 0x9216, 0x2349, 0x9217, 0x9217, 0x2347, 0x9219, 0x9219, 0x2346,
+ 0x921A, 0x921A, 0x2338, 0x921C, 0x921C, 0x2344, 0x921E, 0x921E, 0x0D93,
+ 0x9223, 0x9223, 0x0D91, 0x9224, 0x9224, 0x2345, 0x9225, 0x9225, 0x2336,
+ 0x9226, 0x9226, 0x2339, 0x9227, 0x9227, 0x2342, 0x9228, 0x9228, 0x4795,
+ 0x922A, 0x922A, 0x3C0E, 0x922B, 0x922B, 0x3BA6, 0x922D, 0x922D, 0x2851,
+ 0x922E, 0x922E, 0x25DA, 0x9230, 0x9230, 0x25D3, 0x9231, 0x9231, 0x25E6,
+ 0x9232, 0x9232, 0x25EF, 0x9233, 0x9233, 0x25D6, 0x9234, 0x9234, 0x0F55,
+ 0x9235, 0x9235, 0x3B26, 0x9236, 0x9236, 0x25E3, 0x9237, 0x9237, 0x0F4B,
+ 0x9238, 0x9238, 0x0F4D, 0x9239, 0x9239, 0x0F59, 0x923A, 0x923A, 0x25D4,
+ 0x923C, 0x923C, 0x41D2, 0x923D, 0x923D, 0x0F4E, 0x923E, 0x923E, 0x0F50,
+ 0x923F, 0x923F, 0x0F5A, 0x9240, 0x9240, 0x0F4F, 0x9241, 0x9241, 0x388A,
+ 0x9244, 0x9244, 0x389A, 0x9245, 0x9245, 0x0F58, 0x9246, 0x9246, 0x25DC,
+ 0x9248, 0x9248, 0x25D1, 0x9249, 0x9249, 0x0F56, 0x924A, 0x924A, 0x25DB,
+ 0x924B, 0x924B, 0x0F52, 0x924C, 0x924C, 0x25ED, 0x924D, 0x924D, 0x0F57,
+ 0x924E, 0x924E, 0x25EB, 0x924F, 0x924F, 0x25DF, 0x9250, 0x9250, 0x25E9,
+ 0x9251, 0x9251, 0x0F54, 0x9252, 0x9252, 0x25D2, 0x9253, 0x9253, 0x25EC,
+ 0x9254, 0x9254, 0x25E7, 0x9255, 0x9255, 0x3E47, 0x9256, 0x9256, 0x25EE,
+ 0x9257, 0x9257, 0x0F4C, 0x9258, 0x9258, 0x4796, 0x925A, 0x925A, 0x0F5B,
+ 0x925B, 0x925B, 0x0F51, 0x925D, 0x925D, 0x3A03, 0x925E, 0x925E, 0x25D8,
+ 0x925F, 0x925F, 0x3CE0, 0x9260, 0x9260, 0x25E0, 0x9261, 0x9261, 0x25E4,
+ 0x9262, 0x9262, 0x388B, 0x9263, 0x9263, 0x25E8, 0x9264, 0x9264, 0x0F53,
+ 0x9265, 0x9265, 0x25D7, 0x9266, 0x9266, 0x25D5, 0x9267, 0x9267, 0x25E1,
+ 0x926B, 0x926B, 0x4797, 0x926C, 0x926C, 0x25DE, 0x926D, 0x926D, 0x25DD,
+ 0x926E, 0x926E, 0x3D05, 0x926F, 0x926F, 0x25E2, 0x9270, 0x9270, 0x25E5,
+ 0x9272, 0x9272, 0x25EA, 0x9276, 0x9276, 0x2831, 0x9277, 0x9277, 0x3C64,
+ 0x9278, 0x9278, 0x10D3, 0x9279, 0x9279, 0x283B, 0x927A, 0x927A, 0x2833,
+ 0x927B, 0x927B, 0x10D9, 0x927C, 0x927C, 0x10DD, 0x927D, 0x927D, 0x2844,
+ 0x927E, 0x927E, 0x284C, 0x927F, 0x927F, 0x283D, 0x9280, 0x9280, 0x10D5,
+ 0x9281, 0x9281, 0x3E01, 0x9282, 0x9282, 0x2841, 0x9283, 0x9283, 0x25D9,
+ 0x9284, 0x9284, 0x3CB9, 0x9285, 0x9285, 0x10D6, 0x9286, 0x9286, 0x2848,
+ 0x9287, 0x9287, 0x284D, 0x9288, 0x9288, 0x2845, 0x9289, 0x9289, 0x3AB5,
+ 0x928A, 0x928A, 0x2847, 0x928B, 0x928B, 0x2850, 0x928C, 0x928C, 0x2849,
+ 0x928D, 0x928D, 0x2837, 0x928E, 0x928E, 0x2840, 0x928F, 0x928F, 0x46BD,
+ 0x9291, 0x9291, 0x10DE, 0x9293, 0x9293, 0x10DA, 0x9294, 0x9294, 0x2835,
+ 0x9295, 0x9295, 0x2842, 0x9296, 0x9296, 0x10D8, 0x9297, 0x9297, 0x283C,
+ 0x9298, 0x9298, 0x10D7, 0x9299, 0x9299, 0x284A, 0x929A, 0x929A, 0x2839,
+ 0x929B, 0x929B, 0x2832, 0x929C, 0x929C, 0x10DB, 0x929D, 0x929D, 0x284F,
+ 0x92A0, 0x92A0, 0x2834, 0x92A1, 0x92A1, 0x2846, 0x92A2, 0x92A2, 0x2843,
+ 0x92A3, 0x92A3, 0x283E, 0x92A4, 0x92A4, 0x2830, 0x92A5, 0x92A5, 0x282F,
+ 0x92A6, 0x92A6, 0x2838, 0x92A7, 0x92A7, 0x284B, 0x92A8, 0x92A8, 0x10DC,
+ 0x92A9, 0x92A9, 0x284E, 0x92AA, 0x92AA, 0x2836, 0x92AB, 0x92AB, 0x283A,
+ 0x92AC, 0x92AC, 0x10D4, 0x92AE, 0x92AE, 0x4799, 0x92B1, 0x92B1, 0x4798,
+ 0x92B2, 0x92B2, 0x125F, 0x92B3, 0x92B3, 0x125A, 0x92B4, 0x92B4, 0x2AB0,
+ 0x92B5, 0x92B5, 0x2AAC, 0x92B6, 0x92B6, 0x2A94, 0x92B7, 0x92B7, 0x1256,
+ 0x92B9, 0x92B9, 0x36E9, 0x92BA, 0x92BA, 0x3BF5, 0x92BB, 0x92BB, 0x1255,
+ 0x92BC, 0x92BC, 0x125B, 0x92BE, 0x92BE, 0x3C60, 0x92BF, 0x92BF, 0x479A,
+ 0x92C0, 0x92C0, 0x2A92, 0x92C1, 0x92C1, 0x1259, 0x92C2, 0x92C2, 0x2A9E,
+ 0x92C3, 0x92C4, 0x2A90, 0x92C5, 0x92C5, 0x1254, 0x92C6, 0x92C6, 0x2AAF,
+ 0x92C7, 0x92C7, 0x125D, 0x92C8, 0x92C8, 0x2AA1, 0x92C9, 0x92C9, 0x2AA6,
+ 0x92CA, 0x92CA, 0x2AA0, 0x92CB, 0x92CB, 0x2CD3, 0x92CC, 0x92CC, 0x2A9C,
+ 0x92CD, 0x92CD, 0x2AA4, 0x92CE, 0x92CE, 0x2AA2, 0x92CF, 0x92CF, 0x2A95,
+ 0x92D0, 0x92D0, 0x2A8F, 0x92D1, 0x92D1, 0x2AAA, 0x92D2, 0x92D2, 0x125C,
+ 0x92D3, 0x92D3, 0x2AAB, 0x92D4, 0x92D4, 0x3861, 0x92D5, 0x92D5, 0x2AA5,
+ 0x92D7, 0x92D7, 0x2A9A, 0x92D8, 0x92D8, 0x2A98, 0x92D9, 0x92D9, 0x2A93,
+ 0x92DB, 0x92DB, 0x400C, 0x92DD, 0x92DD, 0x2A9B, 0x92DE, 0x92DE, 0x2AA8,
+ 0x92DF, 0x92DF, 0x2A97, 0x92E0, 0x92E0, 0x2AA7, 0x92E1, 0x92E1, 0x2AAD,
+ 0x92E3, 0x92E3, 0x479B, 0x92E4, 0x92E4, 0x1258, 0x92E5, 0x92E5, 0x3CA2,
+ 0x92E6, 0x92E6, 0x2AA3, 0x92E7, 0x92E7, 0x2AA9, 0x92E8, 0x92E8, 0x2A9F,
+ 0x92E9, 0x92E9, 0x2A99, 0x92EA, 0x92EA, 0x1257, 0x92EB, 0x92EB, 0x479C,
+ 0x92EC, 0x92EC, 0x3964, 0x92EE, 0x92EE, 0x283F, 0x92EF, 0x92EF, 0x2A9D,
+ 0x92F0, 0x92F0, 0x125E, 0x92F1, 0x92F1, 0x2A96, 0x92F2, 0x92F2, 0x3AB2,
+ 0x92F3, 0x92F4, 0x479D, 0x92F6, 0x92F6, 0x3C04, 0x92F7, 0x92F7, 0x2CD8,
+ 0x92F8, 0x92F8, 0x1377, 0x92F9, 0x92F9, 0x2CD7, 0x92FA, 0x92FA, 0x2CD5,
+ 0x92FB, 0x92FB, 0x2CE7, 0x92FC, 0x92FC, 0x137B, 0x92FD, 0x92FD, 0x479F,
+ 0x92FE, 0x92FE, 0x2CE4, 0x92FF, 0x92FF, 0x2CDC, 0x9300, 0x9300, 0x2CE6,
+ 0x9301, 0x9301, 0x2CCE, 0x9302, 0x9302, 0x2CDA, 0x9303, 0x9303, 0x3867,
+ 0x9304, 0x9304, 0x137D, 0x9306, 0x9306, 0x2CC6, 0x9307, 0x9307, 0x3B11,
+ 0x9308, 0x9308, 0x2CC4, 0x9309, 0x9309, 0x2CE5, 0x930B, 0x930B, 0x2CE3,
+ 0x930C, 0x930C, 0x2CE2, 0x930D, 0x930D, 0x2CD2, 0x930E, 0x930E, 0x2CD1,
+ 0x930F, 0x930F, 0x2CC7, 0x9310, 0x9310, 0x137F, 0x9312, 0x9312, 0x2CCD,
+ 0x9313, 0x9313, 0x2CD6, 0x9314, 0x9314, 0x2CE1, 0x9315, 0x9315, 0x1382,
+ 0x9316, 0x9316, 0x2CE8, 0x9318, 0x9318, 0x14A3, 0x9319, 0x9319, 0x1384,
+ 0x931A, 0x931A, 0x137E, 0x931B, 0x931B, 0x2CCB, 0x931D, 0x931D, 0x2CD4,
+ 0x931E, 0x931E, 0x2CC3, 0x931F, 0x931F, 0x2CC5, 0x9320, 0x9320, 0x1375,
+ 0x9321, 0x9321, 0x1381, 0x9322, 0x9322, 0x137A, 0x9323, 0x9323, 0x2CCC,
+ 0x9324, 0x9324, 0x2CDB, 0x9325, 0x9325, 0x2AAE, 0x9326, 0x9326, 0x1380,
+ 0x9327, 0x9327, 0x2CC2, 0x9328, 0x9328, 0x149E, 0x9329, 0x9329, 0x2CDD,
+ 0x932A, 0x932A, 0x2CE0, 0x932B, 0x932B, 0x137C, 0x932C, 0x932C, 0x3892,
+ 0x932D, 0x932D, 0x2CD0, 0x932E, 0x932E, 0x1383, 0x932F, 0x932F, 0x1379,
+ 0x9330, 0x9330, 0x3E03, 0x9331, 0x9331, 0x3CBD, 0x9333, 0x9333, 0x1378,
+ 0x9334, 0x9334, 0x2CD9, 0x9335, 0x9335, 0x2CDF, 0x9336, 0x9336, 0x1376,
+ 0x9338, 0x9338, 0x2CC9, 0x9339, 0x9339, 0x2CDE, 0x933C, 0x933C, 0x2CCA,
+ 0x9340, 0x9340, 0x4155, 0x9341, 0x9341, 0x4277, 0x9342, 0x9342, 0x3AFA,
+ 0x9343, 0x9343, 0x47A0, 0x9344, 0x9344, 0x4016, 0x9345, 0x9345, 0x3E74,
+ 0x9346, 0x9346, 0x2CCF, 0x9347, 0x9347, 0x2E8D, 0x9348, 0x9348, 0x3C61,
+ 0x9349, 0x9349, 0x2E92, 0x934A, 0x934A, 0x14A0, 0x934B, 0x934B, 0x14A2,
+ 0x934C, 0x934C, 0x2E98, 0x934D, 0x934D, 0x149C, 0x934E, 0x934E, 0x2EA6,
+ 0x934F, 0x934F, 0x2E9E, 0x9350, 0x9351, 0x2E93, 0x9352, 0x9352, 0x2E9D,
+ 0x9354, 0x9354, 0x14A9, 0x9355, 0x9355, 0x2E9C, 0x9356, 0x9356, 0x2E8C,
+ 0x9357, 0x9357, 0x2E9B, 0x9358, 0x9358, 0x2E8F, 0x9359, 0x9359, 0x2EA7,
+ 0x935A, 0x935A, 0x14A8, 0x935B, 0x935B, 0x14A6, 0x935C, 0x935C, 0x2E90,
+ 0x935E, 0x935E, 0x2EA3, 0x935F, 0x935F, 0x3CBB, 0x9360, 0x9360, 0x2E95,
+ 0x9361, 0x9361, 0x2EA2, 0x9362, 0x9362, 0x4268, 0x9363, 0x9363, 0x2EA4,
+ 0x9364, 0x9364, 0x2E8B, 0x9365, 0x9365, 0x14A1, 0x9366, 0x9366, 0x46BC,
+ 0x9367, 0x9367, 0x2EA5, 0x9368, 0x9368, 0x3BF0, 0x9369, 0x9369, 0x3961,
+ 0x936A, 0x936A, 0x2E99, 0x936B, 0x936B, 0x3893, 0x936C, 0x936C, 0x14A5,
+ 0x936D, 0x936D, 0x2E96, 0x936E, 0x936E, 0x39E8, 0x9370, 0x9370, 0x14A7,
+ 0x9371, 0x9371, 0x2E9F, 0x9373, 0x9373, 0x389E, 0x9374, 0x9374, 0x3CE4,
+ 0x9375, 0x9375, 0x149F, 0x9376, 0x9376, 0x2E91, 0x9377, 0x9377, 0x2EA0,
+ 0x9378, 0x9378, 0x38F9, 0x9379, 0x9379, 0x2E9A, 0x937A, 0x937A, 0x2CC8,
+ 0x937B, 0x937B, 0x2EA1, 0x937C, 0x937C, 0x2E8E, 0x937D, 0x937D, 0x3C25,
+ 0x937E, 0x937E, 0x14A4, 0x9380, 0x9380, 0x3014, 0x9381, 0x9381, 0x3965,
+ 0x9382, 0x9382, 0x149D, 0x9383, 0x9383, 0x2E89, 0x9384, 0x9384, 0x47A1,
+ 0x9385, 0x9385, 0x42BD, 0x9386, 0x9386, 0x3CC0, 0x9387, 0x9387, 0x3AE0,
+ 0x9388, 0x9388, 0x3011, 0x9389, 0x9389, 0x300A, 0x938A, 0x938A, 0x1540,
+ 0x938C, 0x938C, 0x3005, 0x938D, 0x938D, 0x3015, 0x938E, 0x938E, 0x300C,
+ 0x938F, 0x938F, 0x2E97, 0x9390, 0x9390, 0x3D3C, 0x9391, 0x9391, 0x3017,
+ 0x9392, 0x9392, 0x3006, 0x9394, 0x9394, 0x153F, 0x9395, 0x9395, 0x3010,
+ 0x9396, 0x9396, 0x1541, 0x9397, 0x9397, 0x1549, 0x9398, 0x9398, 0x1547,
+ 0x9399, 0x9399, 0x3012, 0x939A, 0x939A, 0x1548, 0x939B, 0x939B, 0x3008,
+ 0x939C, 0x939C, 0x39AC, 0x939D, 0x939D, 0x3009, 0x939E, 0x939E, 0x300E,
+ 0x939F, 0x939F, 0x3013, 0x93A0, 0x93A0, 0x3AB1, 0x93A1, 0x93A1, 0x2E88,
+ 0x93A2, 0x93A2, 0x1542, 0x93A3, 0x93A3, 0x301C, 0x93A4, 0x93A4, 0x3019,
+ 0x93A5, 0x93A5, 0x3160, 0x93A6, 0x93A6, 0x300F, 0x93A7, 0x93A7, 0x300B,
+ 0x93A8, 0x93A8, 0x301A, 0x93A9, 0x93A9, 0x3155, 0x93AA, 0x93AA, 0x300D,
+ 0x93AC, 0x93AC, 0x1545, 0x93AD, 0x93AD, 0x47A2, 0x93AE, 0x93AE, 0x1544,
+ 0x93AF, 0x93AF, 0x2E8A, 0x93B0, 0x93B0, 0x1546, 0x93B1, 0x93B1, 0x3016,
+ 0x93B2, 0x93B2, 0x3018, 0x93B3, 0x93B3, 0x1543, 0x93B4, 0x93B4, 0x301B,
+ 0x93B5, 0x93B5, 0x3004, 0x93B7, 0x93B7, 0x3007, 0x93B8, 0x93B8, 0x3C90,
+ 0x93BA, 0x93BA, 0x43F7, 0x93BB, 0x93BB, 0x3C8F, 0x93BD, 0x93BD, 0x3A27,
+ 0x93BF, 0x93BF, 0x3E2D, 0x93C0, 0x93C0, 0x315E, 0x93C2, 0x93C2, 0x314E,
+ 0x93C3, 0x93C3, 0x15E0, 0x93C4, 0x93C4, 0x315C, 0x93C6, 0x93C6, 0x39AA,
+ 0x93C7, 0x93C7, 0x314C, 0x93C8, 0x93C8, 0x15E1, 0x93CA, 0x93CA, 0x3157,
+ 0x93CB, 0x93CB, 0x3966, 0x93CC, 0x93CC, 0x3153, 0x93CD, 0x93CD, 0x15E6,
+ 0x93CE, 0x93CE, 0x315D, 0x93CF, 0x93CF, 0x314D, 0x93D0, 0x93D0, 0x3150,
+ 0x93D1, 0x93D1, 0x15DE, 0x93D2, 0x93D2, 0x315F, 0x93D3, 0x93D3, 0x40E1,
+ 0x93D4, 0x93D4, 0x3158, 0x93D5, 0x93D5, 0x315B, 0x93D6, 0x93D6, 0x15E4,
+ 0x93D7, 0x93D7, 0x15E9, 0x93D8, 0x93D8, 0x15E7, 0x93D9, 0x93D9, 0x3154,
+ 0x93DA, 0x93DA, 0x314F, 0x93DB, 0x93DB, 0x3C5F, 0x93DC, 0x93DD, 0x15E2,
+ 0x93DE, 0x93DE, 0x314B, 0x93DF, 0x93DF, 0x15DF, 0x93E0, 0x93E0, 0x3A20,
+ 0x93E1, 0x93E1, 0x15DD, 0x93E2, 0x93E2, 0x15E5, 0x93E3, 0x93E3, 0x315A,
+ 0x93E4, 0x93E4, 0x15E8, 0x93E6, 0x93E6, 0x3156, 0x93E7, 0x93E7, 0x3161,
+ 0x93E8, 0x93E8, 0x15EA, 0x93EC, 0x93EC, 0x3152, 0x93EE, 0x93EE, 0x3159,
+ 0x93F0, 0x93F0, 0x423F, 0x93F1, 0x93F1, 0x42AA, 0x93F3, 0x93F3, 0x3962,
+ 0x93F5, 0x93F5, 0x325A, 0x93F6, 0x93F6, 0x3269, 0x93F7, 0x93F7, 0x325C,
+ 0x93F8, 0x93F8, 0x3263, 0x93F9, 0x93F9, 0x3151, 0x93FA, 0x93FA, 0x3261,
+ 0x93FB, 0x93FB, 0x3250, 0x93FC, 0x93FC, 0x3267, 0x93FD, 0x93FD, 0x1654,
+ 0x93FE, 0x93FE, 0x3254, 0x93FF, 0x93FF, 0x3266, 0x9400, 0x9400, 0x325B,
+ 0x9401, 0x9401, 0x3CD4, 0x9403, 0x9403, 0x1653, 0x9404, 0x9404, 0x3BC9,
+ 0x9406, 0x9406, 0x326B, 0x9407, 0x9407, 0x325D, 0x9408, 0x9408, 0x3A25,
+ 0x9409, 0x9409, 0x3262, 0x940A, 0x940A, 0x3265, 0x940B, 0x940B, 0x324E,
+ 0x940C, 0x940C, 0x3268, 0x940D, 0x940D, 0x3259, 0x940E, 0x940E, 0x325E,
+ 0x940F, 0x940F, 0x3252, 0x9410, 0x9410, 0x3256, 0x9411, 0x9411, 0x326A,
+ 0x9412, 0x9412, 0x3260, 0x9413, 0x9413, 0x324F, 0x9414, 0x9414, 0x3253,
+ 0x9415, 0x9415, 0x3255, 0x9416, 0x9416, 0x325F, 0x9417, 0x9417, 0x47A5,
+ 0x9418, 0x9418, 0x1652, 0x9419, 0x9419, 0x3258, 0x941B, 0x941B, 0x4148,
+ 0x941D, 0x941D, 0x47A6, 0x9420, 0x9420, 0x3251, 0x9424, 0x9424, 0x3943,
+ 0x9425, 0x9425, 0x38D0, 0x9426, 0x9426, 0x38A3, 0x9427, 0x9427, 0x3BCD,
+ 0x9428, 0x9428, 0x3257, 0x9429, 0x9429, 0x3325, 0x942A, 0x942A, 0x3329,
+ 0x942B, 0x942B, 0x169F, 0x942C, 0x942C, 0x332B, 0x942D, 0x942D, 0x47A7,
+ 0x942E, 0x942E, 0x1699, 0x9430, 0x9430, 0x3327, 0x9431, 0x9431, 0x332D,
+ 0x9432, 0x9432, 0x169E, 0x9433, 0x9433, 0x169A, 0x9435, 0x9435, 0x169B,
+ 0x9436, 0x9436, 0x3324, 0x9437, 0x9437, 0x332A, 0x9438, 0x9438, 0x169D,
+ 0x9439, 0x9439, 0x3328, 0x943A, 0x943A, 0x169C, 0x943B, 0x943B, 0x3323,
+ 0x943C, 0x943C, 0x3264, 0x943D, 0x943D, 0x3326, 0x943E, 0x943E, 0x47A8,
+ 0x943F, 0x943F, 0x3322, 0x9440, 0x9440, 0x332C, 0x9442, 0x9442, 0x4272,
+ 0x9443, 0x9443, 0x4275, 0x9444, 0x9444, 0x16DF, 0x9445, 0x9445, 0x33CD,
+ 0x9446, 0x9446, 0x33D0, 0x9447, 0x9447, 0x33CC, 0x9448, 0x9449, 0x33CE,
+ 0x944A, 0x944B, 0x33C9, 0x944C, 0x944C, 0x33C7, 0x944D, 0x944D, 0x3C65,
+ 0x944F, 0x944F, 0x33CB, 0x9450, 0x9450, 0x33C8, 0x9451, 0x9452, 0x16E0,
+ 0x9454, 0x9454, 0x47AA, 0x9455, 0x9455, 0x3448, 0x9457, 0x9457, 0x344A,
+ 0x9458, 0x9458, 0x3C30, 0x945B, 0x945B, 0x389F, 0x945D, 0x945D, 0x3449,
+ 0x945E, 0x945E, 0x344B, 0x9460, 0x9460, 0x170E, 0x9462, 0x9462, 0x3447,
+ 0x9463, 0x9463, 0x170D, 0x9464, 0x9464, 0x170F, 0x9465, 0x9465, 0x3DDE,
+ 0x9467, 0x9467, 0x3AB8, 0x9468, 0x9469, 0x34A6, 0x946A, 0x946A, 0x1731,
+ 0x946B, 0x946B, 0x34A5, 0x946C, 0x946C, 0x377E, 0x946D, 0x946D, 0x34ED,
+ 0x946E, 0x946E, 0x34EC, 0x946F, 0x946F, 0x34EE, 0x9470, 0x9470, 0x174C,
+ 0x9471, 0x9471, 0x34EF, 0x9472, 0x9472, 0x174B, 0x9473, 0x9473, 0x34F0,
+ 0x9474, 0x9474, 0x350C, 0x9475, 0x9475, 0x350F, 0x9476, 0x9476, 0x350E,
+ 0x9477, 0x9477, 0x1755, 0x9478, 0x9478, 0x350D, 0x9479, 0x9479, 0x47AB,
+ 0x947B, 0x947B, 0x419B, 0x947C, 0x947C, 0x175F, 0x947D, 0x947E, 0x175D,
+ 0x947F, 0x947F, 0x1764, 0x9480, 0x9481, 0x3539, 0x9482, 0x9482, 0x3538,
+ 0x9483, 0x9483, 0x3540, 0x9485, 0x9485, 0x4507, 0x949F, 0x949F, 0x4885,
+ 0x94A2, 0x94A2, 0x451B, 0x94C1, 0x94C1, 0x47E1, 0x94C3, 0x94C3, 0x47DF,
+ 0x94DC, 0x94DC, 0x47D7, 0x94F6, 0x94F6, 0x47D2, 0x952D, 0x952D, 0x47AC,
+ 0x9547, 0x9547, 0x48BF, 0x9577, 0x9577, 0x0697, 0x9578, 0x9578, 0x4508,
+ 0x957A, 0x957A, 0x20A1, 0x957B, 0x957B, 0x234A, 0x957C, 0x957C, 0x2AB1,
+ 0x957D, 0x957D, 0x3162, 0x957F, 0x957F, 0x4509, 0x9580, 0x9580, 0x0698,
+ 0x9582, 0x9582, 0x0821, 0x9583, 0x9583, 0x09EA, 0x9585, 0x9585, 0x38A1,
+ 0x9586, 0x9586, 0x20A2, 0x9588, 0x9588, 0x20A3, 0x9589, 0x9589, 0x0BD0,
+ 0x958B, 0x958B, 0x0D9A, 0x958C, 0x958C, 0x234C, 0x958D, 0x958D, 0x234B,
+ 0x958E, 0x958E, 0x0D9E, 0x958F, 0x958F, 0x0D99, 0x9590, 0x9590, 0x234D,
+ 0x9591, 0x9591, 0x0D9B, 0x9592, 0x9592, 0x0D9D, 0x9593, 0x9593, 0x0D9C,
+ 0x9594, 0x9594, 0x0D98, 0x9596, 0x9596, 0x3BD5, 0x9597, 0x9597, 0x3BD4,
+ 0x9598, 0x9598, 0x0F5C, 0x9599, 0x9599, 0x3BD2, 0x959B, 0x959B, 0x25F3,
+ 0x959C, 0x959C, 0x25F1, 0x959E, 0x959E, 0x25F2, 0x959F, 0x959F, 0x25F0,
+ 0x95A0, 0x95A0, 0x38A4, 0x95A1, 0x95A1, 0x10DF, 0x95A2, 0x95A2, 0x47AD,
+ 0x95A3, 0x95A3, 0x10E2, 0x95A4, 0x95A4, 0x10E4, 0x95A5, 0x95A5, 0x10E3,
+ 0x95A6, 0x95A6, 0x38A2, 0x95A7, 0x95A7, 0x3BD3, 0x95A8, 0x95A9, 0x10E0,
+ 0x95AA, 0x95AA, 0x4395, 0x95AB, 0x95AB, 0x2AB3, 0x95AC, 0x95AC, 0x2AB2,
+ 0x95AD, 0x95AD, 0x1260, 0x95AE, 0x95AE, 0x2AB4, 0x95B0, 0x95B0, 0x2AB5,
+ 0x95B1, 0x95B1, 0x1261, 0x95B5, 0x95B5, 0x2CF0, 0x95B6, 0x95B6, 0x2CEE,
+ 0x95B7, 0x95B7, 0x2EAD, 0x95B9, 0x95BA, 0x2CEC, 0x95BB, 0x95BB, 0x1385,
+ 0x95BC, 0x95BC, 0x2CE9, 0x95BD, 0x95BD, 0x2CF1, 0x95BE, 0x95BE, 0x2CEB,
+ 0x95BF, 0x95BF, 0x2CEF, 0x95C0, 0x95C0, 0x2EA9, 0x95C3, 0x95C3, 0x2EAB,
+ 0x95C5, 0x95C5, 0x2EAC, 0x95C6, 0x95C6, 0x14AE, 0x95C7, 0x95C7, 0x2EA8,
+ 0x95C8, 0x95C8, 0x14AD, 0x95C9, 0x95C9, 0x2EAA, 0x95CA, 0x95CC, 0x14AA,
+ 0x95CD, 0x95CD, 0x2CEA, 0x95D0, 0x95D0, 0x154C, 0x95D1, 0x95D1, 0x301F,
+ 0x95D2, 0x95D3, 0x301D, 0x95D4, 0x95D4, 0x154A, 0x95D5, 0x95D5, 0x154D,
+ 0x95D6, 0x95D6, 0x154B, 0x95DA, 0x95DB, 0x3163, 0x95DC, 0x95DC, 0x15EB,
+ 0x95DE, 0x95DE, 0x326C, 0x95DF, 0x95DF, 0x326E, 0x95E0, 0x95E0, 0x326D,
+ 0x95E1, 0x95E1, 0x1655, 0x95E2, 0x95E2, 0x16A0, 0x95E3, 0x95E3, 0x3330,
+ 0x95E4, 0x95E4, 0x332F, 0x95E5, 0x95E5, 0x332E, 0x95E8, 0x95E8, 0x450A,
+ 0x95F4, 0x95F4, 0x47AF, 0x961C, 0x961C, 0x0699, 0x961D, 0x961D, 0x4519,
+ 0x961E, 0x961E, 0x17B4, 0x9620, 0x9620, 0x1821, 0x9621, 0x9621, 0x0414,
+ 0x9622, 0x9622, 0x181F, 0x9623, 0x9623, 0x1822, 0x9624, 0x9624, 0x1820,
+ 0x9628, 0x9628, 0x18F1, 0x962A, 0x962A, 0x0526, 0x962C, 0x962C, 0x0527,
+ 0x962D, 0x962D, 0x18F3, 0x962E, 0x962E, 0x0524, 0x962F, 0x962F, 0x18F2,
+ 0x9630, 0x9630, 0x18F0, 0x9631, 0x9631, 0x0525, 0x9632, 0x9632, 0x0523,
+ 0x9633, 0x9633, 0x47B0, 0x9638, 0x9638, 0x3FD1, 0x9639, 0x9639, 0x1A55,
+ 0x963A, 0x963A, 0x1A58, 0x963B, 0x963B, 0x069C, 0x963C, 0x963C, 0x1A57,
+ 0x963D, 0x963D, 0x1A56, 0x963F, 0x963F, 0x069B, 0x9640, 0x9640, 0x069A,
+ 0x9641, 0x9641, 0x3F3D, 0x9642, 0x9642, 0x069E, 0x9643, 0x9643, 0x1A59,
+ 0x9644, 0x9644, 0x069D, 0x9645, 0x9645, 0x4772, 0x964A, 0x964A, 0x1C1A,
+ 0x964B, 0x964D, 0x0823, 0x964E, 0x964E, 0x1C1B, 0x964F, 0x964F, 0x1C17,
+ 0x9650, 0x9650, 0x0822, 0x9651, 0x9651, 0x1C18, 0x9653, 0x9653, 0x1C19,
+ 0x9654, 0x9654, 0x1C16, 0x9656, 0x9656, 0x3DE7, 0x9658, 0x9658, 0x09F1,
+ 0x965B, 0x965B, 0x09EE, 0x965C, 0x965C, 0x1E2F, 0x965D, 0x965D, 0x09EF,
+ 0x965E, 0x965E, 0x09F2, 0x965F, 0x965F, 0x1E30, 0x9661, 0x9661, 0x09ED,
+ 0x9662, 0x9663, 0x09EB, 0x9664, 0x9664, 0x09F0, 0x9669, 0x9669, 0x475E,
+ 0x966A, 0x966A, 0x0BD1, 0x966B, 0x966B, 0x20A6, 0x966C, 0x966C, 0x0BD9,
+ 0x966D, 0x966D, 0x20A5, 0x966F, 0x966F, 0x20A8, 0x9670, 0x9670, 0x0BD5,
+ 0x9671, 0x9671, 0x20A7, 0x9672, 0x9672, 0x0DA6, 0x9673, 0x9673, 0x0BD3,
+ 0x9674, 0x9674, 0x0BD6, 0x9675, 0x9675, 0x0BD2, 0x9676, 0x9677, 0x0BD7,
+ 0x9678, 0x9678, 0x0BD4, 0x967B, 0x967B, 0x38AC, 0x967C, 0x967C, 0x20A4,
+ 0x967D, 0x967D, 0x0DA2, 0x967E, 0x967E, 0x234F, 0x9680, 0x9680, 0x2353,
+ 0x9681, 0x9681, 0x3F46, 0x9683, 0x9683, 0x2352, 0x9684, 0x9684, 0x0DA7,
+ 0x9685, 0x9686, 0x0DA3, 0x9687, 0x9687, 0x234E, 0x9688, 0x9689, 0x2350,
+ 0x968A, 0x968A, 0x0D9F, 0x968B, 0x968B, 0x0DA1, 0x968D, 0x968D, 0x0DA5,
+ 0x968E, 0x968E, 0x0DA0, 0x968F, 0x968F, 0x3BDE, 0x9691, 0x9691, 0x25F6,
+ 0x9692, 0x9693, 0x25F4, 0x9694, 0x9695, 0x0F5E, 0x9696, 0x9696, 0x38AD,
+ 0x9697, 0x9697, 0x25F7, 0x9698, 0x9698, 0x0F5D, 0x9699, 0x9699, 0x10E5,
+ 0x969B, 0x969B, 0x10E7, 0x969C, 0x969C, 0x10E6, 0x969E, 0x969E, 0x2852,
+ 0x96A1, 0x96A1, 0x2853, 0x96A2, 0x96A2, 0x2AB7, 0x96A3, 0x96A3, 0x38AF,
+ 0x96A4, 0x96A4, 0x2AB6, 0x96A5, 0x96A5, 0x42EF, 0x96A7, 0x96A8, 0x1386,
+ 0x96A9, 0x96A9, 0x2CF2, 0x96AA, 0x96AA, 0x1388, 0x96AC, 0x96AC, 0x2EB0,
+ 0x96AE, 0x96AE, 0x2EAE, 0x96B0, 0x96B0, 0x2EAF, 0x96B1, 0x96B1, 0x14AF,
+ 0x96B3, 0x96B3, 0x3020, 0x96B4, 0x96B4, 0x15EC, 0x96B6, 0x96B6, 0x0231,
+ 0x96B8, 0x96B8, 0x14B0, 0x96B9, 0x96B9, 0x069F, 0x96BB, 0x96BB, 0x09F3,
+ 0x96BC, 0x96BC, 0x1E31, 0x96BD, 0x96BD, 0x38B5, 0x96BF, 0x96BF, 0x20A9,
+ 0x96C0, 0x96C0, 0x0BDA, 0x96C1, 0x96C1, 0x0DA8, 0x96C2, 0x96C2, 0x2354,
+ 0x96C3, 0x96C3, 0x2356, 0x96C4, 0x96C4, 0x0DAA, 0x96C5, 0x96C5, 0x0DA9,
+ 0x96C6, 0x96C7, 0x0DAB, 0x96C8, 0x96C8, 0x2355, 0x96C9, 0x96CA, 0x0F62,
+ 0x96CB, 0x96CB, 0x0F61, 0x96CC, 0x96CC, 0x10E8, 0x96CD, 0x96CD, 0x0F60,
+ 0x96CE, 0x96CE, 0x25F8, 0x96D2, 0x96D2, 0x10E9, 0x96D3, 0x96D3, 0x2AB8,
+ 0x96D4, 0x96D4, 0x2CF3, 0x96D5, 0x96D5, 0x1389, 0x96D6, 0x96D6, 0x14B1,
+ 0x96D7, 0x96D7, 0x3021, 0x96D8, 0x96D8, 0x3025, 0x96D9, 0x96D9, 0x1550,
+ 0x96DA, 0x96DA, 0x3022, 0x96DB, 0x96DB, 0x1551, 0x96DC, 0x96DC, 0x154F,
+ 0x96DD, 0x96DD, 0x3026, 0x96DE, 0x96DE, 0x1552, 0x96DF, 0x96DF, 0x3024,
+ 0x96E1, 0x96E1, 0x3165, 0x96E2, 0x96E2, 0x154E, 0x96E3, 0x96E3, 0x15ED,
+ 0x96E5, 0x96E5, 0x34A8, 0x96E8, 0x96E8, 0x06A0, 0x96E9, 0x96E9, 0x0BDC,
+ 0x96EA, 0x96EA, 0x0BDB, 0x96EF, 0x96EF, 0x0DAD, 0x96F0, 0x96F0, 0x2358,
+ 0x96F1, 0x96F1, 0x2357, 0x96F2, 0x96F2, 0x0DAE, 0x96F4, 0x96F4, 0x3A04,
+ 0x96F5, 0x96F5, 0x25FC, 0x96F6, 0x96F6, 0x0F67, 0x96F7, 0x96F7, 0x0F64,
+ 0x96F8, 0x96F8, 0x25FB, 0x96F9, 0x96F9, 0x0F66, 0x96FA, 0x96FA, 0x25F9,
+ 0x96FB, 0x96FB, 0x0F65, 0x96FD, 0x96FD, 0x25FA, 0x96FF, 0x96FF, 0x2854,
+ 0x9700, 0x9700, 0x10EA, 0x9702, 0x9702, 0x2ABB, 0x9703, 0x9703, 0x3F0D,
+ 0x9704, 0x9704, 0x1262, 0x9705, 0x9705, 0x2AB9, 0x9706, 0x9707, 0x1263,
+ 0x9708, 0x9708, 0x2ABA, 0x9709, 0x9709, 0x1265, 0x970B, 0x970B, 0x2CF4,
+ 0x970D, 0x970D, 0x138D, 0x970E, 0x970E, 0x138A, 0x970F, 0x970F, 0x138F,
+ 0x9710, 0x9710, 0x2CF6, 0x9711, 0x9711, 0x138B, 0x9712, 0x9712, 0x2CF5,
+ 0x9713, 0x9713, 0x138E, 0x9716, 0x9716, 0x138C, 0x9718, 0x9718, 0x2EB3,
+ 0x9719, 0x9719, 0x2EB5, 0x971B, 0x971B, 0x38C9, 0x971C, 0x971C, 0x14B2,
+ 0x971D, 0x971D, 0x2EB4, 0x971E, 0x971E, 0x14B3, 0x971F, 0x971F, 0x2EB2,
+ 0x9720, 0x9720, 0x2EB1, 0x9721, 0x9721, 0x3FB3, 0x9722, 0x9722, 0x3028,
+ 0x9723, 0x9723, 0x3027, 0x9724, 0x9724, 0x1553, 0x9725, 0x9725, 0x3029,
+ 0x9726, 0x9726, 0x316A, 0x9727, 0x9727, 0x15EF, 0x9728, 0x9728, 0x3169,
+ 0x9729, 0x9729, 0x3166, 0x972A, 0x972A, 0x15EE, 0x972B, 0x972C, 0x3167,
+ 0x972E, 0x972F, 0x326F, 0x9730, 0x9730, 0x1656, 0x9731, 0x9731, 0x38C0,
+ 0x9732, 0x9732, 0x16A3, 0x9735, 0x9735, 0x3331, 0x9736, 0x9736, 0x38C2,
+ 0x9738, 0x9739, 0x16A1, 0x973A, 0x973A, 0x3332, 0x973D, 0x973E, 0x16E2,
+ 0x973F, 0x973F, 0x33D1, 0x9740, 0x9740, 0x47B3, 0x9741, 0x9741, 0x3BE9,
+ 0x9742, 0x9742, 0x1732, 0x9743, 0x9743, 0x34AA, 0x9744, 0x9744, 0x1734,
+ 0x9746, 0x9746, 0x34A9, 0x9747, 0x9747, 0x34AB, 0x9748, 0x9748, 0x1733,
+ 0x9749, 0x9749, 0x34F1, 0x974B, 0x974B, 0x3526, 0x9751, 0x9751, 0x44E3,
+ 0x9752, 0x9752, 0x06A1, 0x9756, 0x9756, 0x0F68, 0x9757, 0x9757, 0x38CC,
+ 0x9758, 0x9758, 0x2855, 0x975A, 0x975A, 0x2ABC, 0x975B, 0x975C, 0x1390,
+ 0x975D, 0x975D, 0x3BEF, 0x975E, 0x975E, 0x06A2, 0x975F, 0x975F, 0x38CF,
+ 0x9760, 0x9760, 0x1266, 0x9761, 0x9761, 0x15F0, 0x9762, 0x9762, 0x0826,
+ 0x9766, 0x9766, 0x1392, 0x9768, 0x9768, 0x1710, 0x9769, 0x9769, 0x0827,
+ 0x976A, 0x976A, 0x20AA, 0x976C, 0x976C, 0x2359, 0x976D, 0x976D, 0x3E97,
+ 0x976E, 0x976E, 0x235B, 0x9770, 0x9770, 0x235A, 0x9771, 0x9771, 0x3BFC,
+ 0x9772, 0x9772, 0x2600, 0x9773, 0x9773, 0x25FD, 0x9774, 0x9774, 0x0F69,
+ 0x9776, 0x9776, 0x0F6A, 0x9777, 0x9778, 0x25FE, 0x977A, 0x977A, 0x2857,
+ 0x977B, 0x977B, 0x285C, 0x977C, 0x977C, 0x10EB, 0x977D, 0x977D, 0x2856,
+ 0x977E, 0x977E, 0x2858, 0x977F, 0x977F, 0x285F, 0x9780, 0x9780, 0x285A,
+ 0x9781, 0x9781, 0x285E, 0x9782, 0x9782, 0x285B, 0x9783, 0x9783, 0x2859,
+ 0x9784, 0x9784, 0x285D, 0x9785, 0x9785, 0x10EC, 0x9787, 0x9787, 0x40C0,
+ 0x9788, 0x9788, 0x2ABF, 0x9789, 0x9789, 0x38D4, 0x978A, 0x978A, 0x2ABD,
+ 0x978B, 0x978B, 0x1268, 0x978D, 0x978D, 0x1267, 0x978E, 0x978E, 0x2ABE,
+ 0x978F, 0x978F, 0x1269, 0x9794, 0x9794, 0x2CF9, 0x9797, 0x9797, 0x2CF8,
+ 0x9798, 0x9798, 0x1393, 0x9799, 0x9799, 0x2CF7, 0x979A, 0x979A, 0x2EB6,
+ 0x979B, 0x979B, 0x3BFB, 0x979C, 0x979C, 0x2EB8, 0x979D, 0x979D, 0x2EBA,
+ 0x979E, 0x979E, 0x2EB9, 0x979F, 0x979F, 0x38D5, 0x97A0, 0x97A0, 0x14B4,
+ 0x97A1, 0x97A1, 0x2EB7, 0x97A2, 0x97A2, 0x3030, 0x97A3, 0x97A3, 0x1554,
+ 0x97A4, 0x97A4, 0x302E, 0x97A5, 0x97A5, 0x3031, 0x97A6, 0x97A6, 0x1555,
+ 0x97A8, 0x97A8, 0x302C, 0x97AA, 0x97AA, 0x302F, 0x97AB, 0x97AB, 0x302D,
+ 0x97AC, 0x97AC, 0x302A, 0x97AD, 0x97AD, 0x1556, 0x97AE, 0x97AE, 0x302B,
+ 0x97B1, 0x97B1, 0x38D6, 0x97B2, 0x97B2, 0x47B5, 0x97B3, 0x97B3, 0x316B,
+ 0x97B4, 0x97B4, 0x3F33, 0x97B6, 0x97B6, 0x316D, 0x97B7, 0x97B7, 0x316C,
+ 0x97B8, 0x97B8, 0x3D95, 0x97B9, 0x97B9, 0x3271, 0x97BA, 0x97BA, 0x3F35,
+ 0x97BB, 0x97BB, 0x3272, 0x97BD, 0x97BD, 0x494E, 0x97BE, 0x97BE, 0x38D7,
+ 0x97BF, 0x97BF, 0x3333, 0x97C0, 0x97C0, 0x38D8, 0x97C1, 0x97C1, 0x16E5,
+ 0x97C2, 0x97C2, 0x47B6, 0x97C3, 0x97C3, 0x16E4, 0x97C4, 0x97C5, 0x344C,
+ 0x97C6, 0x97C6, 0x1735, 0x97C7, 0x97C7, 0x34AC, 0x97C8, 0x97C8, 0x3F2F,
+ 0x97C9, 0x97C9, 0x1756, 0x97CB, 0x97CB, 0x0828, 0x97CC, 0x97CC, 0x0DAF,
+ 0x97CD, 0x97CD, 0x2861, 0x97CE, 0x97CE, 0x2860, 0x97CF, 0x97CF, 0x2AC1,
+ 0x97D0, 0x97D0, 0x2AC0, 0x97D2, 0x97D2, 0x38D9, 0x97D3, 0x97D3, 0x14B5,
+ 0x97D4, 0x97D4, 0x2EBC, 0x97D5, 0x97D5, 0x2EBB, 0x97D6, 0x97D6, 0x3034,
+ 0x97D7, 0x97D7, 0x3032, 0x97D8, 0x97D8, 0x3035, 0x97D9, 0x97D9, 0x3033,
+ 0x97DC, 0x97DC, 0x15F1, 0x97DD, 0x97DF, 0x316E, 0x97E0, 0x97E0, 0x38DA,
+ 0x97E1, 0x97E1, 0x3334, 0x97E3, 0x97E3, 0x33D2, 0x97E5, 0x97E5, 0x34AD,
+ 0x97E6, 0x97E6, 0x450C, 0x97ED, 0x97ED, 0x0829, 0x97EE, 0x97EE, 0x38DC,
+ 0x97F0, 0x97F0, 0x2CFA, 0x97F1, 0x97F1, 0x2EBD, 0x97F2, 0x97F2, 0x394D,
+ 0x97F3, 0x97F3, 0x082A, 0x97F5, 0x97F5, 0x38E0, 0x97F6, 0x97F6, 0x10ED,
+ 0x97F8, 0x97F8, 0x2CFB, 0x97F9, 0x97F9, 0x1557, 0x97FA, 0x97FA, 0x3036,
+ 0x97FB, 0x97FB, 0x15F2, 0x97FD, 0x97FE, 0x3273, 0x97FF, 0x97FF, 0x16A4,
+ 0x9800, 0x9800, 0x344E, 0x9801, 0x9801, 0x082B, 0x9802, 0x9803, 0x0BDF,
+ 0x9804, 0x9804, 0x20AB, 0x9805, 0x9806, 0x0DB0, 0x9807, 0x9807, 0x235C,
+ 0x9808, 0x9808, 0x0DB2, 0x980A, 0x980A, 0x0F6E, 0x980C, 0x980C, 0x0F70,
+ 0x980D, 0x980E, 0x2602, 0x980F, 0x980F, 0x2601, 0x9810, 0x9811, 0x0F6B,
+ 0x9812, 0x9812, 0x0F6F, 0x9813, 0x9813, 0x0F6D, 0x9814, 0x9814, 0x4952,
+ 0x9815, 0x9815, 0x433C, 0x9816, 0x9816, 0x2862, 0x9817, 0x9818, 0x10EE,
+ 0x981B, 0x981B, 0x2AC8, 0x981C, 0x981C, 0x126C, 0x981D, 0x981D, 0x2AC3,
+ 0x981E, 0x981E, 0x2AC2, 0x981F, 0x981F, 0x3C02, 0x9820, 0x9820, 0x2AC7,
+ 0x9821, 0x9821, 0x126A, 0x9823, 0x9823, 0x3E37, 0x9824, 0x9824, 0x139A,
+ 0x9826, 0x9826, 0x2AC4, 0x9827, 0x9827, 0x2AC9, 0x9828, 0x9828, 0x2AC6,
+ 0x9829, 0x9829, 0x2AC5, 0x982B, 0x982B, 0x126B, 0x982D, 0x982D, 0x1398,
+ 0x982E, 0x982E, 0x3F72, 0x982F, 0x982F, 0x2CFD, 0x9830, 0x9830, 0x1394,
+ 0x9832, 0x9832, 0x2CFE, 0x9833, 0x9833, 0x38E5, 0x9834, 0x9834, 0x38E4,
+ 0x9835, 0x9835, 0x2CFC, 0x9837, 0x9837, 0x1397, 0x9838, 0x9838, 0x1395,
+ 0x9839, 0x9839, 0x1399, 0x983B, 0x983B, 0x1396, 0x9841, 0x9841, 0x2EBE,
+ 0x9843, 0x9843, 0x2EC3, 0x9844, 0x9844, 0x2EBF, 0x9845, 0x9845, 0x2EC2,
+ 0x9846, 0x9846, 0x14B6, 0x9847, 0x9847, 0x3D96, 0x9848, 0x9848, 0x2DF2,
+ 0x9849, 0x9849, 0x2EC1, 0x984A, 0x984A, 0x2EC0, 0x984B, 0x984B, 0x38E6,
+ 0x984C, 0x984C, 0x155A, 0x984D, 0x984D, 0x1558, 0x984E, 0x984E, 0x155B,
+ 0x984F, 0x984F, 0x1559, 0x9850, 0x9852, 0x3037, 0x9853, 0x9853, 0x155C,
+ 0x9857, 0x9857, 0x3174, 0x9858, 0x9858, 0x15F4, 0x9859, 0x9859, 0x3172,
+ 0x985B, 0x985B, 0x15F5, 0x985C, 0x985C, 0x3171, 0x985D, 0x985D, 0x3173,
+ 0x985E, 0x985E, 0x15F3, 0x985F, 0x985F, 0x3278, 0x9860, 0x9860, 0x3275,
+ 0x9862, 0x9863, 0x3276, 0x9864, 0x9864, 0x3335, 0x9865, 0x9865, 0x16A6,
+ 0x9866, 0x9866, 0x38E7, 0x9867, 0x9867, 0x16A5, 0x9869, 0x9869, 0x33D4,
+ 0x986A, 0x986A, 0x33D3, 0x986B, 0x986B, 0x16E6, 0x986C, 0x986C, 0x4035,
+ 0x986F, 0x986F, 0x1711, 0x9870, 0x9870, 0x1736, 0x9871, 0x9871, 0x174D,
+ 0x9872, 0x9872, 0x34F2, 0x9873, 0x9874, 0x3527, 0x9875, 0x9875, 0x450D,
+ 0x98A8, 0x98A8, 0x082C, 0x98A9, 0x98A9, 0x235D, 0x98AC, 0x98AC, 0x2604,
+ 0x98AD, 0x98AE, 0x2863, 0x98AF, 0x98AF, 0x10F0, 0x98B1, 0x98B1, 0x10F1,
+ 0x98B2, 0x98B2, 0x2ACA, 0x98B3, 0x98B3, 0x126D, 0x98B4, 0x98B4, 0x3F73,
+ 0x98B6, 0x98B6, 0x14B7, 0x98B7, 0x98B7, 0x38EF, 0x98B8, 0x98B8, 0x303A,
+ 0x98B9, 0x98B9, 0x47B8, 0x98BA, 0x98BA, 0x155D, 0x98BB, 0x98BB, 0x3177,
+ 0x98BC, 0x98BC, 0x15F6, 0x98BD, 0x98BD, 0x3176, 0x98BE, 0x98BE, 0x3178,
+ 0x98BF, 0x98BF, 0x3175, 0x98C0, 0x98C0, 0x3338, 0x98C1, 0x98C2, 0x3279,
+ 0x98C3, 0x98C3, 0x3B78, 0x98C4, 0x98C4, 0x1657, 0x98C6, 0x98C6, 0x3337,
+ 0x98C7, 0x98C7, 0x38F1, 0x98C8, 0x98C8, 0x38F0, 0x98C9, 0x98C9, 0x3336,
+ 0x98CA, 0x98CA, 0x38EE, 0x98CB, 0x98CB, 0x33D5, 0x98CC, 0x98CC, 0x3529,
+ 0x98CE, 0x98CE, 0x450E, 0x98DB, 0x98DB, 0x082D, 0x98DC, 0x98DC, 0x3C0B,
+ 0x98DE, 0x98DE, 0x450F, 0x98DF, 0x98DF, 0x082E, 0x98E0, 0x98E0, 0x4792,
+ 0x98E1, 0x98E1, 0x38F6, 0x98E2, 0x98E2, 0x09F4, 0x98E3, 0x98E3, 0x1E32,
+ 0x98E5, 0x98E5, 0x20AC, 0x98E6, 0x98E6, 0x38F7, 0x98E7, 0x98E7, 0x0DB3,
+ 0x98E9, 0x98E9, 0x0DB6, 0x98EA, 0x98EA, 0x0DB4, 0x98EB, 0x98EB, 0x235E,
+ 0x98EC, 0x98EC, 0x38F8, 0x98ED, 0x98ED, 0x0DB8, 0x98EF, 0x98EF, 0x0DB5,
+ 0x98F1, 0x98F1, 0x47BA, 0x98F2, 0x98F2, 0x0DB7, 0x98F4, 0x98F4, 0x0F72,
+ 0x98F5, 0x98F5, 0x4365, 0x98F6, 0x98F6, 0x2605, 0x98F9, 0x98F9, 0x2606,
+ 0x98FA, 0x98FA, 0x2ACC, 0x98FC, 0x98FC, 0x0F71, 0x98FD, 0x98FE, 0x0F73,
+ 0x9900, 0x9900, 0x2866, 0x9902, 0x9902, 0x2865, 0x9903, 0x9903, 0x10F2,
+ 0x9905, 0x9905, 0x10F3, 0x9907, 0x9907, 0x2867, 0x9908, 0x9908, 0x2ACB,
+ 0x9909, 0x9909, 0x10F5, 0x990A, 0x990A, 0x126E, 0x990C, 0x990C, 0x10F4,
+ 0x990E, 0x990E, 0x43ED, 0x9910, 0x9910, 0x139B, 0x9911, 0x9911, 0x2ACD,
+ 0x9912, 0x9912, 0x1270, 0x9913, 0x9913, 0x126F, 0x9914, 0x9914, 0x2ACE,
+ 0x9915, 0x9915, 0x2AD1, 0x9916, 0x9917, 0x2ACF, 0x9918, 0x9918, 0x1271,
+ 0x9919, 0x9919, 0x47BC, 0x991A, 0x991A, 0x13A0, 0x991B, 0x991B, 0x139E,
+ 0x991C, 0x991C, 0x43EE, 0x991E, 0x991E, 0x139D, 0x991F, 0x991F, 0x2D00,
+ 0x9921, 0x9921, 0x139F, 0x9924, 0x9924, 0x2CFF, 0x9925, 0x9925, 0x2EC4,
+ 0x9927, 0x9927, 0x2D01, 0x9928, 0x9928, 0x139C, 0x9929, 0x9929, 0x2D02,
+ 0x992A, 0x992A, 0x2EC7, 0x992B, 0x992C, 0x2EC5, 0x992D, 0x992D, 0x2ECB,
+ 0x992E, 0x992E, 0x1561, 0x992F, 0x992F, 0x2ECA, 0x9930, 0x9930, 0x2ECD,
+ 0x9931, 0x9931, 0x2ECC, 0x9932, 0x9932, 0x2EC9, 0x9933, 0x9933, 0x2EC8,
+ 0x9935, 0x9935, 0x14B8, 0x9937, 0x9937, 0x47BD, 0x9938, 0x9938, 0x3BFD,
+ 0x9939, 0x9939, 0x38FA, 0x993A, 0x993A, 0x303D, 0x993B, 0x993B, 0x3C11,
+ 0x993C, 0x993C, 0x303C, 0x993D, 0x993D, 0x1560, 0x993E, 0x993F, 0x155E,
+ 0x9940, 0x9940, 0x3F34, 0x9941, 0x9941, 0x303B, 0x9942, 0x9942, 0x43FF,
+ 0x9943, 0x9943, 0x317B, 0x9945, 0x9945, 0x15F7, 0x9947, 0x9947, 0x317A,
+ 0x9948, 0x9948, 0x3179, 0x9949, 0x9949, 0x15F8, 0x994A, 0x994A, 0x3FB9,
+ 0x994B, 0x994B, 0x327F, 0x994C, 0x994C, 0x327E, 0x994D, 0x994D, 0x3C12,
+ 0x994E, 0x994E, 0x327C, 0x9950, 0x9950, 0x327B, 0x9951, 0x9951, 0x1659,
+ 0x9952, 0x9952, 0x1658, 0x9953, 0x9953, 0x3280, 0x9954, 0x9954, 0x33D6,
+ 0x9955, 0x9955, 0x16E7, 0x9956, 0x9956, 0x333A, 0x9957, 0x9957, 0x16A7,
+ 0x9958, 0x9958, 0x3339, 0x9959, 0x9959, 0x327D, 0x995B, 0x995B, 0x33D7,
+ 0x995C, 0x995C, 0x1712, 0x995D, 0x995D, 0x47BE, 0x995E, 0x995E, 0x174E,
+ 0x995F, 0x995F, 0x34F3, 0x9961, 0x9961, 0x352A, 0x9962, 0x9962, 0x43EF,
+ 0x9963, 0x9963, 0x4510, 0x9996, 0x9996, 0x082F, 0x9997, 0x9997, 0x20AD,
+ 0x9998, 0x9998, 0x2ECE, 0x9999, 0x9999, 0x0830, 0x999B, 0x999B, 0x3C15,
+ 0x999C, 0x999C, 0x2869, 0x999D, 0x999D, 0x2868, 0x999E, 0x999E, 0x2D03,
+ 0x99A1, 0x99A1, 0x2ED0, 0x99A3, 0x99A3, 0x2ECF, 0x99A4, 0x99A4, 0x41C3,
+ 0x99A5, 0x99A5, 0x1562, 0x99A6, 0x99A7, 0x317C, 0x99A8, 0x99A8, 0x165A,
+ 0x99AA, 0x99AA, 0x3C17, 0x99AB, 0x99AB, 0x352B, 0x99AC, 0x99AC, 0x09F5,
+ 0x99AD, 0x99AD, 0x0DBA, 0x99AE, 0x99AE, 0x0DB9, 0x99AF, 0x99AF, 0x2607,
+ 0x99B0, 0x99B0, 0x2609, 0x99B1, 0x99B1, 0x0F76, 0x99B2, 0x99B2, 0x2608,
+ 0x99B3, 0x99B3, 0x0F75, 0x99B4, 0x99B4, 0x0F77, 0x99B5, 0x99B5, 0x260A,
+ 0x99B8, 0x99B8, 0x394B, 0x99B9, 0x99B9, 0x286B, 0x99BA, 0x99BA, 0x286D,
+ 0x99BB, 0x99BB, 0x286C, 0x99BC, 0x99BC, 0x3C22, 0x99BD, 0x99BD, 0x286F,
+ 0x99C1, 0x99C1, 0x10F6, 0x99C2, 0x99C2, 0x286E, 0x99C3, 0x99C3, 0x286A,
+ 0x99C4, 0x99C4, 0x3D77, 0x99C5, 0x99C5, 0x47C1, 0x99C7, 0x99C7, 0x2870,
+ 0x99C9, 0x99C9, 0x2AD8, 0x99CB, 0x99CB, 0x2ADB, 0x99CC, 0x99CC, 0x2ADD,
+ 0x99CD, 0x99CD, 0x2AD3, 0x99CE, 0x99CE, 0x2AD7, 0x99CF, 0x99CF, 0x2AD4,
+ 0x99D0, 0x99D0, 0x1273, 0x99D1, 0x99D1, 0x1276, 0x99D2, 0x99D2, 0x1278,
+ 0x99D3, 0x99D4, 0x2AD5, 0x99D5, 0x99D5, 0x1277, 0x99D6, 0x99D6, 0x2AD9,
+ 0x99D7, 0x99D7, 0x2ADC, 0x99D8, 0x99D8, 0x2ADA, 0x99D9, 0x99D9, 0x1279,
+ 0x99DA, 0x99DA, 0x3F42, 0x99DB, 0x99DB, 0x1275, 0x99DC, 0x99DC, 0x2AD2,
+ 0x99DD, 0x99DD, 0x1272, 0x99DF, 0x99DF, 0x1274, 0x99E1, 0x99E1, 0x3785,
+ 0x99E2, 0x99E2, 0x13A2, 0x99E3, 0x99E3, 0x2D09, 0x99E4, 0x99E4, 0x2D07,
+ 0x99E5, 0x99E5, 0x2D06, 0x99E6, 0x99E6, 0x3B65, 0x99E7, 0x99E7, 0x2D0C,
+ 0x99E9, 0x99E9, 0x2D0B, 0x99EA, 0x99EA, 0x2D0A, 0x99EC, 0x99EC, 0x2D05,
+ 0x99ED, 0x99ED, 0x13A1, 0x99EE, 0x99EE, 0x2D04, 0x99F0, 0x99F0, 0x2D08,
+ 0x99F1, 0x99F1, 0x13A3, 0x99F4, 0x99F4, 0x2ED3, 0x99F5, 0x99F5, 0x38FF,
+ 0x99F6, 0x99F6, 0x2ED7, 0x99F7, 0x99F7, 0x2ED4, 0x99F8, 0x99F8, 0x2ED6,
+ 0x99F9, 0x99F9, 0x2ED5, 0x99FA, 0x99FA, 0x2ED2, 0x99FB, 0x99FB, 0x2ED8,
+ 0x99FC, 0x99FC, 0x2EDB, 0x99FD, 0x99FE, 0x2ED9, 0x99FF, 0x99FF, 0x14BA,
+ 0x9A01, 0x9A01, 0x14B9, 0x9A02, 0x9A02, 0x2ED1, 0x9A03, 0x9A03, 0x2EDC,
+ 0x9A04, 0x9A04, 0x3042, 0x9A05, 0x9A05, 0x3045, 0x9A06, 0x9A06, 0x3047,
+ 0x9A07, 0x9A07, 0x3046, 0x9A09, 0x9A09, 0x3040, 0x9A0A, 0x9A0A, 0x3044,
+ 0x9A0B, 0x9A0B, 0x303F, 0x9A0C, 0x9A0C, 0x3900, 0x9A0D, 0x9A0D, 0x3041,
+ 0x9A0E, 0x9A0E, 0x1563, 0x9A0F, 0x9A0F, 0x303E, 0x9A10, 0x9A10, 0x3902,
+ 0x9A11, 0x9A11, 0x3043, 0x9A14, 0x9A14, 0x318A, 0x9A15, 0x9A15, 0x317F,
+ 0x9A16, 0x9A16, 0x15F9, 0x9A19, 0x9A19, 0x15FA, 0x9A1A, 0x9A1A, 0x317E,
+ 0x9A1B, 0x9A1B, 0x3183, 0x9A1C, 0x9A1C, 0x3189, 0x9A1D, 0x9A1D, 0x3181,
+ 0x9A1E, 0x9A1E, 0x3188, 0x9A1F, 0x9A1F, 0x3B6C, 0x9A20, 0x9A20, 0x3185,
+ 0x9A21, 0x9A21, 0x3C1C, 0x9A22, 0x9A22, 0x3184, 0x9A23, 0x9A23, 0x3187,
+ 0x9A24, 0x9A24, 0x3182, 0x9A25, 0x9A25, 0x3180, 0x9A26, 0x9A26, 0x3DF2,
+ 0x9A27, 0x9A27, 0x3186, 0x9A29, 0x9A29, 0x3287, 0x9A2A, 0x9A2A, 0x3285,
+ 0x9A2B, 0x9A2B, 0x165B, 0x9A2C, 0x9A2C, 0x3284, 0x9A2D, 0x9A2D, 0x328A,
+ 0x9A2E, 0x9A2E, 0x3288, 0x9A2F, 0x9A2F, 0x3C1E, 0x9A30, 0x9A30, 0x165C,
+ 0x9A31, 0x9A31, 0x3283, 0x9A32, 0x9A32, 0x3281, 0x9A34, 0x9A34, 0x3282,
+ 0x9A35, 0x9A35, 0x165E, 0x9A36, 0x9A36, 0x3286, 0x9A37, 0x9A37, 0x165D,
+ 0x9A38, 0x9A38, 0x3289, 0x9A39, 0x9A39, 0x333B, 0x9A3A, 0x9A3A, 0x3341,
+ 0x9A3B, 0x9A3B, 0x3901, 0x9A3C, 0x9A3C, 0x47C3, 0x9A3D, 0x9A3D, 0x333C,
+ 0x9A3E, 0x9A3E, 0x16AB, 0x9A3F, 0x9A3F, 0x3342, 0x9A40, 0x9A40, 0x16AA,
+ 0x9A41, 0x9A41, 0x3340, 0x9A42, 0x9A42, 0x333F, 0x9A43, 0x9A43, 0x16A9,
+ 0x9A44, 0x9A44, 0x333E, 0x9A45, 0x9A45, 0x16A8, 0x9A46, 0x9A46, 0x333D,
+ 0x9A48, 0x9A48, 0x33DD, 0x9A49, 0x9A49, 0x33DF, 0x9A4A, 0x9A4A, 0x33DE,
+ 0x9A4C, 0x9A4C, 0x33DB, 0x9A4D, 0x9A4D, 0x16E9, 0x9A4E, 0x9A4E, 0x33D8,
+ 0x9A4F, 0x9A4F, 0x33DC, 0x9A50, 0x9A50, 0x33E1, 0x9A52, 0x9A52, 0x33E0,
+ 0x9A53, 0x9A54, 0x33D9, 0x9A55, 0x9A55, 0x16E8, 0x9A56, 0x9A56, 0x344F,
+ 0x9A57, 0x9A57, 0x1715, 0x9A58, 0x9A58, 0x3903, 0x9A59, 0x9A59, 0x3450,
+ 0x9A5A, 0x9A5B, 0x1713, 0x9A5C, 0x9A5C, 0x3C18, 0x9A5E, 0x9A5E, 0x34AE,
+ 0x9A5F, 0x9A5F, 0x1737, 0x9A60, 0x9A60, 0x3510, 0x9A62, 0x9A62, 0x1757,
+ 0x9A63, 0x9A63, 0x3B67, 0x9A64, 0x9A64, 0x352C, 0x9A65, 0x9A65, 0x1758,
+ 0x9A66, 0x9A67, 0x352D, 0x9A68, 0x9A68, 0x353C, 0x9A69, 0x9A69, 0x353B,
+ 0x9A6A, 0x9A6A, 0x1767, 0x9A6B, 0x9A6B, 0x3544, 0x9A6C, 0x9A6C, 0x4585,
+ 0x9A8F, 0x9A8F, 0x4586, 0x9AA8, 0x9AA8, 0x09F6, 0x9AAB, 0x9AAB, 0x260C,
+ 0x9AAD, 0x9AAD, 0x260B, 0x9AAF, 0x9AB0, 0x10F7, 0x9AB1, 0x9AB1, 0x2871,
+ 0x9AB2, 0x9AB2, 0x4332, 0x9AB3, 0x9AB3, 0x2ADE, 0x9AB4, 0x9AB4, 0x2D0F,
+ 0x9AB6, 0x9AB6, 0x43F0, 0x9AB7, 0x9AB7, 0x127A, 0x9AB8, 0x9AB8, 0x13A4,
+ 0x9AB9, 0x9AB9, 0x2D0D, 0x9ABA, 0x9ABA, 0x3F74, 0x9ABB, 0x9ABB, 0x2D10,
+ 0x9ABC, 0x9ABC, 0x13A5, 0x9ABD, 0x9ABD, 0x3D97, 0x9ABE, 0x9ABE, 0x2EDD,
+ 0x9ABF, 0x9ABF, 0x2D0E, 0x9AC0, 0x9AC0, 0x3048, 0x9AC1, 0x9AC1, 0x1564,
+ 0x9AC2, 0x9AC2, 0x318B, 0x9AC6, 0x9AC6, 0x328D, 0x9AC7, 0x9AC7, 0x328B,
+ 0x9ACA, 0x9ACA, 0x328C, 0x9ACD, 0x9ACD, 0x3343, 0x9ACF, 0x9ACF, 0x16AC,
+ 0x9AD0, 0x9AD0, 0x33E2, 0x9AD1, 0x9AD1, 0x1718, 0x9AD2, 0x9AD2, 0x16EA,
+ 0x9AD3, 0x9AD4, 0x1716, 0x9AD5, 0x9AD5, 0x34AF, 0x9AD6, 0x9AD6, 0x174F,
+ 0x9AD7, 0x9AD7, 0x3FAA, 0x9AD8, 0x9AD8, 0x09F7, 0x9ADC, 0x9ADC, 0x3049,
+ 0x9ADF, 0x9ADF, 0x1E33, 0x9AE0, 0x9AE0, 0x3908, 0x9AE1, 0x9AE1, 0x0F78,
+ 0x9AE2, 0x9AE2, 0x3909, 0x9AE3, 0x9AE3, 0x2872, 0x9AE6, 0x9AE6, 0x10F9,
+ 0x9AE7, 0x9AE7, 0x2873, 0x9AEB, 0x9AEB, 0x2AE0, 0x9AEC, 0x9AEC, 0x2ADF,
+ 0x9AED, 0x9AED, 0x13A7, 0x9AEE, 0x9AEF, 0x127B, 0x9AF1, 0x9AF1, 0x2AE3,
+ 0x9AF2, 0x9AF2, 0x2AE2, 0x9AF3, 0x9AF3, 0x2AE1, 0x9AF4, 0x9AF4, 0x390B,
+ 0x9AF6, 0x9AF6, 0x2D11, 0x9AF7, 0x9AF7, 0x2D14, 0x9AF9, 0x9AF9, 0x2D13,
+ 0x9AFA, 0x9AFA, 0x2D12, 0x9AFB, 0x9AFB, 0x13A6, 0x9AFC, 0x9AFC, 0x2EE1,
+ 0x9AFD, 0x9AFD, 0x2EDF, 0x9AFE, 0x9AFE, 0x2EDE, 0x9AFF, 0x9AFF, 0x3F17,
+ 0x9B01, 0x9B01, 0x2EE0, 0x9B02, 0x9B02, 0x3F12, 0x9B03, 0x9B03, 0x1565,
+ 0x9B04, 0x9B05, 0x304B, 0x9B06, 0x9B06, 0x1566, 0x9B08, 0x9B08, 0x304A,
+ 0x9B09, 0x9B09, 0x3F20, 0x9B0A, 0x9B0A, 0x318D, 0x9B0B, 0x9B0B, 0x318C,
+ 0x9B0C, 0x9B0C, 0x318F, 0x9B0D, 0x9B0D, 0x15FB, 0x9B0E, 0x9B0E, 0x318E,
+ 0x9B0F, 0x9B0F, 0x47C4, 0x9B10, 0x9B10, 0x328E, 0x9B11, 0x9B11, 0x3290,
+ 0x9B12, 0x9B12, 0x328F, 0x9B14, 0x9B14, 0x390D, 0x9B15, 0x9B15, 0x3344,
+ 0x9B16, 0x9B16, 0x3347, 0x9B17, 0x9B18, 0x3345, 0x9B19, 0x9B19, 0x33E3,
+ 0x9B1A, 0x9B1A, 0x16EB, 0x9B1E, 0x9B20, 0x3451, 0x9B22, 0x9B22, 0x1738,
+ 0x9B23, 0x9B23, 0x1750, 0x9B24, 0x9B24, 0x352F, 0x9B25, 0x9B25, 0x09F8,
+ 0x9B27, 0x9B27, 0x127D, 0x9B28, 0x9B28, 0x13A8, 0x9B29, 0x9B29, 0x304D,
+ 0x9B2A, 0x9B2A, 0x3F19, 0x9B2B, 0x9B2B, 0x33E4, 0x9B2D, 0x9B2D, 0x390E,
+ 0x9B2E, 0x9B2E, 0x3511, 0x9B2F, 0x9B2F, 0x1E34, 0x9B31, 0x9B31, 0x1768,
+ 0x9B32, 0x9B32, 0x09F9, 0x9B33, 0x9B33, 0x2D15, 0x9B34, 0x9B34, 0x3911,
+ 0x9B35, 0x9B35, 0x304E, 0x9B37, 0x9B37, 0x3190, 0x9B39, 0x9B39, 0x3F00,
+ 0x9B3A, 0x9B3A, 0x3348, 0x9B3B, 0x9B3B, 0x33E5, 0x9B3C, 0x9B3C, 0x09FA,
+ 0x9B3E, 0x9B3F, 0x2874, 0x9B40, 0x9B40, 0x3915, 0x9B41, 0x9B42, 0x10FA,
+ 0x9B43, 0x9B43, 0x2AE5, 0x9B44, 0x9B44, 0x127F, 0x9B45, 0x9B45, 0x127E,
+ 0x9B46, 0x9B46, 0x2AE4, 0x9B48, 0x9B48, 0x2EE2, 0x9B4A, 0x9B4A, 0x304F,
+ 0x9B4B, 0x9B4B, 0x3051, 0x9B4C, 0x9B4C, 0x3050, 0x9B4D, 0x9B4D, 0x1569,
+ 0x9B4E, 0x9B4E, 0x1568, 0x9B4F, 0x9B4F, 0x1567, 0x9B50, 0x9B50, 0x3914,
+ 0x9B51, 0x9B51, 0x16AE, 0x9B52, 0x9B52, 0x3349, 0x9B54, 0x9B54, 0x16AD,
+ 0x9B55, 0x9B55, 0x33E7, 0x9B56, 0x9B56, 0x33E6, 0x9B58, 0x9B58, 0x1739,
+ 0x9B59, 0x9B59, 0x34B0, 0x9B5A, 0x9B5A, 0x0BE1, 0x9B5B, 0x9B5B, 0x260D,
+ 0x9B5F, 0x9B5F, 0x2878, 0x9B60, 0x9B61, 0x2876, 0x9B64, 0x9B64, 0x2AEE,
+ 0x9B66, 0x9B66, 0x2AE9, 0x9B67, 0x9B67, 0x2AE6, 0x9B68, 0x9B68, 0x2AED,
+ 0x9B69, 0x9B69, 0x47C5, 0x9B6C, 0x9B6C, 0x2AEF, 0x9B6F, 0x9B6F, 0x1281,
+ 0x9B70, 0x9B70, 0x2AEC, 0x9B71, 0x9B71, 0x2AE8, 0x9B74, 0x9B74, 0x2AE7,
+ 0x9B75, 0x9B75, 0x2AEB, 0x9B76, 0x9B76, 0x2AEA, 0x9B77, 0x9B77, 0x1280,
+ 0x9B7A, 0x9B7A, 0x2D20, 0x9B7B, 0x9B7B, 0x2D1B, 0x9B7C, 0x9B7C, 0x2D19,
+ 0x9B7D, 0x9B7D, 0x2D22, 0x9B7E, 0x9B7E, 0x2D1A, 0x9B7F, 0x9B7F, 0x3C3B,
+ 0x9B80, 0x9B80, 0x2D16, 0x9B81, 0x9B81, 0x43F1, 0x9B82, 0x9B82, 0x2D1C,
+ 0x9B83, 0x9B83, 0x4219, 0x9B85, 0x9B85, 0x2D17, 0x9B86, 0x9B86, 0x2EEB,
+ 0x9B87, 0x9B87, 0x2D18, 0x9B88, 0x9B88, 0x2D23, 0x9B8B, 0x9B8B, 0x3EEE,
+ 0x9B8D, 0x9B8D, 0x4623, 0x9B8E, 0x9B8E, 0x3919, 0x9B8F, 0x9B8F, 0x3FAD,
+ 0x9B90, 0x9B90, 0x2D1F, 0x9B91, 0x9B91, 0x13A9, 0x9B92, 0x9B92, 0x2D1E,
+ 0x9B93, 0x9B93, 0x2D1D, 0x9B95, 0x9B95, 0x2D21, 0x9B97, 0x9B97, 0x3F71,
+ 0x9B9A, 0x9B9A, 0x2EE3, 0x9B9B, 0x9B9B, 0x2EE6, 0x9B9D, 0x9B9D, 0x3F56,
+ 0x9B9E, 0x9B9E, 0x2EE5, 0x9B9F, 0x9B9F, 0x3C3E, 0x9BA0, 0x9BA0, 0x2EED,
+ 0x9BA1, 0x9BA1, 0x2EE8, 0x9BA2, 0x9BA2, 0x2EEC, 0x9BA4, 0x9BA4, 0x2EEA,
+ 0x9BA5, 0x9BA5, 0x2EE9, 0x9BA6, 0x9BA6, 0x2EE7, 0x9BA8, 0x9BA8, 0x2EE4,
+ 0x9BAA, 0x9BAA, 0x14BD, 0x9BAB, 0x9BAB, 0x14BC, 0x9BAD, 0x9BAD, 0x14BE,
+ 0x9BAE, 0x9BAE, 0x14BB, 0x9BAF, 0x9BAF, 0x2EEE, 0x9BB0, 0x9BB0, 0x3FB4,
+ 0x9BB5, 0x9BB5, 0x3057, 0x9BB6, 0x9BB6, 0x305A, 0x9BB8, 0x9BB8, 0x3058,
+ 0x9BB9, 0x9BB9, 0x305C, 0x9BBD, 0x9BBD, 0x305D, 0x9BBF, 0x9BBF, 0x3055,
+ 0x9BC0, 0x9BC0, 0x156E, 0x9BC1, 0x9BC1, 0x3056, 0x9BC3, 0x9BC3, 0x3054,
+ 0x9BC4, 0x9BC4, 0x305B, 0x9BC6, 0x9BC6, 0x3053, 0x9BC7, 0x9BC7, 0x3052,
+ 0x9BC8, 0x9BC8, 0x156D, 0x9BC9, 0x9BC9, 0x156B, 0x9BCA, 0x9BCA, 0x156A,
+ 0x9BCF, 0x9BCF, 0x3C3C, 0x9BD3, 0x9BD3, 0x3059, 0x9BD4, 0x9BD4, 0x3199,
+ 0x9BD5, 0x9BD5, 0x319F, 0x9BD6, 0x9BD6, 0x15FE, 0x9BD7, 0x9BD7, 0x319A,
+ 0x9BD9, 0x9BD9, 0x319D, 0x9BDA, 0x9BDA, 0x31A1, 0x9BDB, 0x9BDB, 0x15FF,
+ 0x9BDC, 0x9BDC, 0x319C, 0x9BDD, 0x9BDD, 0x47C6, 0x9BDE, 0x9BDE, 0x3194,
+ 0x9BE0, 0x9BE0, 0x3193, 0x9BE1, 0x9BE1, 0x31A0, 0x9BE2, 0x9BE2, 0x3197,
+ 0x9BE4, 0x9BE4, 0x3195, 0x9BE5, 0x9BE5, 0x319E, 0x9BE6, 0x9BE6, 0x3196,
+ 0x9BE7, 0x9BE7, 0x15FD, 0x9BE8, 0x9BE8, 0x15FC, 0x9BE9, 0x9BE9, 0x3BC1,
+ 0x9BEA, 0x9BEB, 0x3191, 0x9BEC, 0x9BEC, 0x319B, 0x9BED, 0x9BED, 0x3ED7,
+ 0x9BF0, 0x9BF0, 0x3198, 0x9BF1, 0x9BF1, 0x47C7, 0x9BF4, 0x9BF4, 0x47C8,
+ 0x9BF7, 0x9BF7, 0x3293, 0x9BF8, 0x9BF8, 0x3296, 0x9BFD, 0x9BFD, 0x156C,
+ 0x9BFF, 0x9BFF, 0x391B, 0x9C02, 0x9C02, 0x391A, 0x9C05, 0x9C05, 0x3294,
+ 0x9C06, 0x9C06, 0x329A, 0x9C07, 0x9C07, 0x3298, 0x9C08, 0x9C08, 0x3292,
+ 0x9C09, 0x9C09, 0x329D, 0x9C0A, 0x9C0A, 0x3F3A, 0x9C0B, 0x9C0B, 0x3291,
+ 0x9C0C, 0x9C0C, 0x391C, 0x9C0D, 0x9C0D, 0x1660, 0x9C0E, 0x9C0E, 0x3299,
+ 0x9C10, 0x9C10, 0x3C3A, 0x9C12, 0x9C12, 0x3295, 0x9C13, 0x9C13, 0x165F,
+ 0x9C14, 0x9C14, 0x329C, 0x9C15, 0x9C15, 0x3F1E, 0x9C17, 0x9C17, 0x329B,
+ 0x9C1B, 0x9C1B, 0x491B, 0x9C1C, 0x9C1C, 0x334C, 0x9C1D, 0x9C1D, 0x334B,
+ 0x9C1F, 0x9C1F, 0x4622, 0x9C20, 0x9C20, 0x47CA, 0x9C21, 0x9C21, 0x3352,
+ 0x9C23, 0x9C23, 0x334E, 0x9C24, 0x9C24, 0x3351, 0x9C25, 0x9C25, 0x16B0,
+ 0x9C26, 0x9C26, 0x45E6, 0x9C28, 0x9C29, 0x334F, 0x9C2B, 0x9C2B, 0x334A,
+ 0x9C2C, 0x9C2C, 0x334D, 0x9C2D, 0x9C2D, 0x16AF, 0x9C2E, 0x9C2E, 0x3F22,
+ 0x9C2F, 0x9C2F, 0x3D87, 0x9C31, 0x9C31, 0x16ED, 0x9C32, 0x9C32, 0x33F2,
+ 0x9C33, 0x9C33, 0x33ED, 0x9C34, 0x9C34, 0x33F1, 0x9C35, 0x9C35, 0x3C39,
+ 0x9C36, 0x9C36, 0x33F4, 0x9C37, 0x9C37, 0x33F0, 0x9C39, 0x9C39, 0x33EC,
+ 0x9C3A, 0x9C3A, 0x3D7E, 0x9C3B, 0x9C3B, 0x16EF, 0x9C3C, 0x9C3C, 0x33EF,
+ 0x9C3D, 0x9C3D, 0x33F3, 0x9C3E, 0x9C3E, 0x16EE, 0x9C3F, 0x9C3F, 0x33EA,
+ 0x9C40, 0x9C40, 0x3297, 0x9C41, 0x9C41, 0x33EE, 0x9C44, 0x9C44, 0x33EB,
+ 0x9C45, 0x9C45, 0x3E71, 0x9C46, 0x9C46, 0x33E8, 0x9C48, 0x9C48, 0x33E9,
+ 0x9C49, 0x9C49, 0x16EC, 0x9C4A, 0x9C4A, 0x3457, 0x9C4B, 0x9C4B, 0x3459,
+ 0x9C4C, 0x9C4C, 0x345C, 0x9C4D, 0x9C4D, 0x3458, 0x9C4E, 0x9C4E, 0x345D,
+ 0x9C4F, 0x9C4F, 0x3C36, 0x9C50, 0x9C50, 0x3456, 0x9C52, 0x9C52, 0x3454,
+ 0x9C53, 0x9C53, 0x3C37, 0x9C54, 0x9C54, 0x1719, 0x9C55, 0x9C55, 0x345A,
+ 0x9C56, 0x9C56, 0x171B, 0x9C57, 0x9C57, 0x171A, 0x9C58, 0x9C58, 0x3455,
+ 0x9C59, 0x9C59, 0x345B, 0x9C5D, 0x9C5D, 0x3EBF, 0x9C5E, 0x9C5E, 0x34B5,
+ 0x9C5F, 0x9C5F, 0x173A, 0x9C60, 0x9C60, 0x34B6, 0x9C62, 0x9C62, 0x34B4,
+ 0x9C63, 0x9C63, 0x34B1, 0x9C66, 0x9C66, 0x34B3, 0x9C67, 0x9C67, 0x34B2,
+ 0x9C68, 0x9C68, 0x34F4, 0x9C6D, 0x9C6D, 0x34F6, 0x9C6E, 0x9C6E, 0x34F5,
+ 0x9C71, 0x9C71, 0x3514, 0x9C72, 0x9C72, 0x3EA1, 0x9C73, 0x9C73, 0x3513,
+ 0x9C74, 0x9C74, 0x3512, 0x9C75, 0x9C75, 0x3515, 0x9C77, 0x9C78, 0x1760,
+ 0x9C79, 0x9C79, 0x3541, 0x9C7A, 0x9C7A, 0x3545, 0x9C7B, 0x9C7B, 0x3C38,
+ 0x9C7C, 0x9C7C, 0x4512, 0x9CE5, 0x9CE5, 0x0BE2, 0x9CE6, 0x9CE6, 0x235F,
+ 0x9CE7, 0x9CE7, 0x2610, 0x9CE9, 0x9CE9, 0x0F79, 0x9CEA, 0x9CEA, 0x260E,
+ 0x9CED, 0x9CED, 0x260F, 0x9CF1, 0x9CF2, 0x2879, 0x9CF3, 0x9CF3, 0x10FE,
+ 0x9CF4, 0x9CF4, 0x10FC, 0x9CF5, 0x9CF5, 0x287B, 0x9CF6, 0x9CF6, 0x10FD,
+ 0x9CF7, 0x9CF7, 0x2AF4, 0x9CF9, 0x9CF9, 0x2AF7, 0x9CFA, 0x9CFA, 0x2AF1,
+ 0x9CFB, 0x9CFB, 0x2AF8, 0x9CFC, 0x9CFC, 0x2AF0, 0x9CFD, 0x9CFD, 0x2AF2,
+ 0x9CFF, 0x9CFF, 0x2AF3, 0x9D00, 0x9D00, 0x2AF6, 0x9D02, 0x9D02, 0x3F3B,
+ 0x9D03, 0x9D03, 0x1284, 0x9D04, 0x9D04, 0x2AFB, 0x9D05, 0x9D05, 0x2AFA,
+ 0x9D06, 0x9D06, 0x1282, 0x9D07, 0x9D07, 0x2AF5, 0x9D08, 0x9D08, 0x2AF9,
+ 0x9D09, 0x9D09, 0x1283, 0x9D0C, 0x9D0C, 0x3C46, 0x9D10, 0x9D10, 0x2D2D,
+ 0x9D12, 0x9D12, 0x13AE, 0x9D14, 0x9D14, 0x2D28, 0x9D15, 0x9D15, 0x13AA,
+ 0x9D16, 0x9D16, 0x3C7C, 0x9D17, 0x9D17, 0x2D25, 0x9D18, 0x9D18, 0x2D2B,
+ 0x9D19, 0x9D19, 0x2D2E, 0x9D1B, 0x9D1B, 0x13AF, 0x9D1D, 0x9D1D, 0x2D2A,
+ 0x9D1E, 0x9D1E, 0x2D27, 0x9D1F, 0x9D1F, 0x2D2F, 0x9D20, 0x9D20, 0x2D26,
+ 0x9D21, 0x9D21, 0x3C41, 0x9D22, 0x9D22, 0x2D2C, 0x9D23, 0x9D23, 0x13AB,
+ 0x9D25, 0x9D25, 0x2D24, 0x9D26, 0x9D26, 0x13AC, 0x9D28, 0x9D28, 0x13AD,
+ 0x9D29, 0x9D29, 0x2D29, 0x9D2D, 0x9D2D, 0x2F00, 0x9D2E, 0x9D2F, 0x2EF3,
+ 0x9D30, 0x9D30, 0x2EF7, 0x9D31, 0x9D31, 0x2EF5, 0x9D33, 0x9D33, 0x2EEF,
+ 0x9D34, 0x9D34, 0x404A, 0x9D36, 0x9D36, 0x2EF2, 0x9D37, 0x9D37, 0x2EFC,
+ 0x9D38, 0x9D38, 0x2EF6, 0x9D39, 0x9D39, 0x392E, 0x9D3B, 0x9D3B, 0x14BF,
+ 0x9D3D, 0x9D3D, 0x2EFE, 0x9D3E, 0x9D3E, 0x2EFB, 0x9D3F, 0x9D3F, 0x14C0,
+ 0x9D40, 0x9D40, 0x2EFD, 0x9D41, 0x9D41, 0x2EF0, 0x9D42, 0x9D43, 0x2EF9,
+ 0x9D44, 0x9D44, 0x3FAB, 0x9D45, 0x9D45, 0x2EF8, 0x9D49, 0x9D49, 0x47CD,
+ 0x9D4A, 0x9D4A, 0x3061, 0x9D4B, 0x9D4B, 0x3063, 0x9D4C, 0x9D4C, 0x3066,
+ 0x9D4E, 0x9D4E, 0x4539, 0x9D4F, 0x9D4F, 0x3060, 0x9D50, 0x9D50, 0x3ECA,
+ 0x9D51, 0x9D51, 0x156F, 0x9D52, 0x9D52, 0x3068, 0x9D53, 0x9D53, 0x305F,
+ 0x9D54, 0x9D54, 0x3069, 0x9D56, 0x9D56, 0x3065, 0x9D57, 0x9D57, 0x3067,
+ 0x9D58, 0x9D58, 0x306B, 0x9D59, 0x9D59, 0x3064, 0x9D5A, 0x9D5A, 0x306C,
+ 0x9D5B, 0x9D5B, 0x3062, 0x9D5C, 0x9D5C, 0x305E, 0x9D5D, 0x9D5D, 0x1570,
+ 0x9D5E, 0x9D5E, 0x3E6E, 0x9D5F, 0x9D5F, 0x306A, 0x9D60, 0x9D60, 0x1571,
+ 0x9D61, 0x9D61, 0x1601, 0x9D67, 0x9D67, 0x2EF1, 0x9D68, 0x9D68, 0x31BB,
+ 0x9D69, 0x9D69, 0x31B2, 0x9D6A, 0x9D6A, 0x1603, 0x9D6B, 0x9D6B, 0x31AE,
+ 0x9D6C, 0x9D6C, 0x1604, 0x9D6D, 0x9D6D, 0x3BAC, 0x9D6E, 0x9D6E, 0x433B,
+ 0x9D6F, 0x9D6F, 0x31B7, 0x9D70, 0x9D70, 0x31B1, 0x9D71, 0x9D71, 0x31A7,
+ 0x9D72, 0x9D72, 0x1602, 0x9D73, 0x9D73, 0x31B4, 0x9D74, 0x9D75, 0x31AF,
+ 0x9D77, 0x9D77, 0x31A2, 0x9D78, 0x9D78, 0x31A9, 0x9D79, 0x9D79, 0x31B8,
+ 0x9D7B, 0x9D7B, 0x31B5, 0x9D7C, 0x9D7C, 0x3EFE, 0x9D7D, 0x9D7D, 0x31AD,
+ 0x9D7E, 0x9D7E, 0x3925, 0x9D7F, 0x9D7F, 0x31B9, 0x9D80, 0x9D80, 0x31A8,
+ 0x9D81, 0x9D81, 0x31A3, 0x9D82, 0x9D82, 0x31B6, 0x9D83, 0x9D83, 0x3926,
+ 0x9D84, 0x9D84, 0x31A5, 0x9D85, 0x9D85, 0x31B3, 0x9D86, 0x9D86, 0x31AA,
+ 0x9D87, 0x9D87, 0x31BA, 0x9D88, 0x9D88, 0x31A6, 0x9D89, 0x9D89, 0x1600,
+ 0x9D8A, 0x9D8A, 0x31A4, 0x9D8B, 0x9D8C, 0x31AB, 0x9D90, 0x9D90, 0x32A4,
+ 0x9D92, 0x9D92, 0x32A2, 0x9D93, 0x9D93, 0x43F3, 0x9D94, 0x9D94, 0x32A7,
+ 0x9D96, 0x9D96, 0x32B3, 0x9D97, 0x9D97, 0x32AA, 0x9D98, 0x9D98, 0x32A3,
+ 0x9D99, 0x9D99, 0x329F, 0x9D9A, 0x9D9A, 0x32AC, 0x9D9B, 0x9D9B, 0x32A5,
+ 0x9D9C, 0x9D9C, 0x32A8, 0x9D9D, 0x9D9D, 0x32A1, 0x9D9E, 0x9D9E, 0x32AF,
+ 0x9D9F, 0x9D9F, 0x329E, 0x9DA0, 0x9DA0, 0x32A6, 0x9DA1, 0x9DA1, 0x32AB,
+ 0x9DA2, 0x9DA2, 0x32AD, 0x9DA3, 0x9DA3, 0x32B0, 0x9DA4, 0x9DA4, 0x32A0,
+ 0x9DA5, 0x9DA5, 0x3C4B, 0x9DA6, 0x9DA7, 0x32B4, 0x9DA8, 0x9DA8, 0x32AE,
+ 0x9DA9, 0x9DA9, 0x32B2, 0x9DAA, 0x9DAA, 0x32A9, 0x9DAB, 0x9DAB, 0x3F30,
+ 0x9DAC, 0x9DAC, 0x3362, 0x9DAD, 0x9DAD, 0x3365, 0x9DAF, 0x9DAF, 0x16B1,
+ 0x9DB1, 0x9DB1, 0x3364, 0x9DB2, 0x9DB2, 0x3369, 0x9DB3, 0x9DB3, 0x3367,
+ 0x9DB4, 0x9DB4, 0x16B2, 0x9DB5, 0x9DB5, 0x335E, 0x9DB6, 0x9DB6, 0x3354,
+ 0x9DB7, 0x9DB7, 0x3353, 0x9DB8, 0x9DB8, 0x16B4, 0x9DB9, 0x9DBA, 0x3360,
+ 0x9DBB, 0x9DBB, 0x335D, 0x9DBC, 0x9DBC, 0x3355, 0x9DBD, 0x9DBD, 0x47D0,
+ 0x9DBE, 0x9DBE, 0x335A, 0x9DBF, 0x9DBF, 0x32B1, 0x9DC0, 0x9DC0, 0x43F2,
+ 0x9DC1, 0x9DC1, 0x3356, 0x9DC2, 0x9DC2, 0x16B3, 0x9DC3, 0x9DC3, 0x335C,
+ 0x9DC4, 0x9DC4, 0x3929, 0x9DC5, 0x9DC5, 0x335B, 0x9DC7, 0x9DC7, 0x3357,
+ 0x9DC8, 0x9DC8, 0x3363, 0x9DC9, 0x9DC9, 0x4579, 0x9DCA, 0x9DCA, 0x3358,
+ 0x9DCB, 0x9DCB, 0x33F9, 0x9DCC, 0x9DCC, 0x3366, 0x9DCD, 0x9DCD, 0x3368,
+ 0x9DCE, 0x9DCE, 0x335F, 0x9DCF, 0x9DCF, 0x3359, 0x9DD0, 0x9DD0, 0x33FA,
+ 0x9DD1, 0x9DD1, 0x33FC, 0x9DD2, 0x9DD2, 0x33F6, 0x9DD3, 0x9DD3, 0x16F0,
+ 0x9DD4, 0x9DD4, 0x391E, 0x9DD5, 0x9DD5, 0x3403, 0x9DD6, 0x9DD6, 0x3401,
+ 0x9DD7, 0x9DD7, 0x16F1, 0x9DD8, 0x9DD8, 0x3400, 0x9DD9, 0x9DD9, 0x33FF,
+ 0x9DDA, 0x9DDA, 0x33F8, 0x9DDB, 0x9DDB, 0x33F5, 0x9DDC, 0x9DDC, 0x33FB,
+ 0x9DDD, 0x9DDD, 0x3404, 0x9DDE, 0x9DDE, 0x33F7, 0x9DDF, 0x9DDF, 0x33FD,
+ 0x9DE1, 0x9DE1, 0x3466, 0x9DE2, 0x9DE2, 0x346B, 0x9DE3, 0x9DE3, 0x3461,
+ 0x9DE4, 0x9DE4, 0x3464, 0x9DE5, 0x9DE5, 0x171C, 0x9DE6, 0x9DE6, 0x3468,
+ 0x9DE8, 0x9DE8, 0x346F, 0x9DE9, 0x9DE9, 0x33FE, 0x9DEB, 0x9DEB, 0x3462,
+ 0x9DEC, 0x9DEC, 0x346C, 0x9DED, 0x9DED, 0x3470, 0x9DEE, 0x9DEE, 0x3467,
+ 0x9DEF, 0x9DEF, 0x3460, 0x9DF0, 0x9DF0, 0x346A, 0x9DF2, 0x9DF2, 0x3469,
+ 0x9DF3, 0x9DF3, 0x346E, 0x9DF4, 0x9DF4, 0x346D, 0x9DF5, 0x9DF5, 0x3402,
+ 0x9DF6, 0x9DF6, 0x3465, 0x9DF7, 0x9DF7, 0x345F, 0x9DF8, 0x9DF8, 0x3463,
+ 0x9DF9, 0x9DFA, 0x173B, 0x9DFB, 0x9DFB, 0x345E, 0x9DFC, 0x9DFC, 0x47D1,
+ 0x9DFD, 0x9DFD, 0x34C1, 0x9DFE, 0x9DFE, 0x34B8, 0x9DFF, 0x9DFF, 0x34C0,
+ 0x9E00, 0x9E01, 0x34BD, 0x9E02, 0x9E02, 0x34B7, 0x9E03, 0x9E03, 0x34BA,
+ 0x9E04, 0x9E04, 0x34C2, 0x9E05, 0x9E05, 0x34BC, 0x9E06, 0x9E06, 0x34BB,
+ 0x9E07, 0x9E07, 0x34B9, 0x9E09, 0x9E09, 0x34BF, 0x9E0A, 0x9E0A, 0x457E,
+ 0x9E0B, 0x9E0B, 0x34F7, 0x9E0C, 0x9E0C, 0x457A, 0x9E0D, 0x9E0D, 0x34F8,
+ 0x9E0E, 0x9E0E, 0x3928, 0x9E0F, 0x9E0F, 0x34FA, 0x9E10, 0x9E10, 0x34F9,
+ 0x9E11, 0x9E11, 0x34FC, 0x9E12, 0x9E12, 0x34FB, 0x9E13, 0x9E13, 0x3517,
+ 0x9E14, 0x9E14, 0x3516, 0x9E15, 0x9E15, 0x3530, 0x9E17, 0x9E17, 0x3531,
+ 0x9E18, 0x9E18, 0x3C44, 0x9E19, 0x9E19, 0x353D, 0x9E1A, 0x9E1A, 0x1765,
+ 0x9E1B, 0x9E1B, 0x1769, 0x9E1C, 0x9E1C, 0x3F84, 0x9E1D, 0x9E1D, 0x3546,
+ 0x9E1E, 0x9E1E, 0x176A, 0x9E1F, 0x9E1F, 0x4513, 0x9E75, 0x9E75, 0x0BE3,
+ 0x9E79, 0x9E79, 0x1661, 0x9E7A, 0x9E7A, 0x336A, 0x9E7B, 0x9E7B, 0x43F8,
+ 0x9E7C, 0x9E7D, 0x173D, 0x9E7F, 0x9E7F, 0x0BE4, 0x9E80, 0x9E80, 0x2611,
+ 0x9E81, 0x9E81, 0x3F0F, 0x9E82, 0x9E82, 0x0F7A, 0x9E83, 0x9E83, 0x2AFC,
+ 0x9E84, 0x9E84, 0x3F76, 0x9E85, 0x9E85, 0x3EF2, 0x9E86, 0x9E87, 0x2D31,
+ 0x9E88, 0x9E88, 0x2D30, 0x9E89, 0x9E89, 0x2F02, 0x9E8A, 0x9E8A, 0x2F01,
+ 0x9E8B, 0x9E8B, 0x14C1, 0x9E8C, 0x9E8C, 0x306E, 0x9E8D, 0x9E8D, 0x2F03,
+ 0x9E8E, 0x9E8E, 0x306D, 0x9E90, 0x9E90, 0x3931, 0x9E91, 0x9E91, 0x31BD,
+ 0x9E92, 0x9E92, 0x1605, 0x9E93, 0x9E93, 0x1607, 0x9E94, 0x9E94, 0x31BC,
+ 0x9E95, 0x9E95, 0x3932, 0x9E96, 0x9E96, 0x3FBC, 0x9E97, 0x9E97, 0x1606,
+ 0x9E98, 0x9E98, 0x3F27, 0x9E99, 0x9E99, 0x32B6, 0x9E9A, 0x9E9A, 0x32B8,
+ 0x9E9B, 0x9E9B, 0x32B7, 0x9E9C, 0x9E9C, 0x336B, 0x9E9D, 0x9E9D, 0x16B5,
+ 0x9E9E, 0x9E9E, 0x3933, 0x9E9F, 0x9E9F, 0x171D, 0x9EA0, 0x9EA0, 0x34C3,
+ 0x9EA1, 0x9EA1, 0x34FD, 0x9EA2, 0x9EA2, 0x3934, 0x9EA4, 0x9EA4, 0x354A,
+ 0x9EA5, 0x9EA5, 0x0BE5, 0x9EA6, 0x9EA6, 0x4944, 0x9EA7, 0x9EA7, 0x287C,
+ 0x9EA8, 0x9EA8, 0x3F75, 0x9EA9, 0x9EA9, 0x1285, 0x9EAA, 0x9EAA, 0x3936,
+ 0x9EAB, 0x9EAB, 0x3E92, 0x9EAC, 0x9EAC, 0x43F4, 0x9EAD, 0x9EAD, 0x2D34,
+ 0x9EAE, 0x9EAE, 0x2D33, 0x9EAF, 0x9EAF, 0x3937, 0x9EB0, 0x9EB0, 0x2F04,
+ 0x9EB1, 0x9EB1, 0x47D4, 0x9EB4, 0x9EB4, 0x1608, 0x9EB5, 0x9EB5, 0x1662,
+ 0x9EB6, 0x9EB6, 0x3405, 0x9EB7, 0x9EB7, 0x3542, 0x9EBB, 0x9EBB, 0x0BE6,
+ 0x9EBC, 0x9EBC, 0x10FF, 0x9EBD, 0x9EBD, 0x47D5, 0x9EBE, 0x9EBE, 0x1286,
+ 0x9EBF, 0x9EBF, 0x3D78, 0x9EC0, 0x9EC0, 0x31BE, 0x9EC1, 0x9EC1, 0x3939,
+ 0x9EC2, 0x9EC2, 0x3471, 0x9EC3, 0x9EC3, 0x0DBB, 0x9EC4, 0x9EC4, 0x4514,
+ 0x9EC6, 0x9EC6, 0x47D6, 0x9EC7, 0x9EC7, 0x4577, 0x9EC8, 0x9EC8, 0x2F05,
+ 0x9ECC, 0x9ECC, 0x1751, 0x9ECD, 0x9ECD, 0x0DBC, 0x9ECE, 0x9ECE, 0x1287,
+ 0x9ECF, 0x9ECF, 0x14C2, 0x9ED0, 0x9ED0, 0x3472, 0x9ED1, 0x9ED1, 0x0DBD,
+ 0x9ED3, 0x9ED3, 0x2AFD, 0x9ED4, 0x9ED4, 0x13B1, 0x9ED5, 0x9ED6, 0x2D35,
+ 0x9ED8, 0x9ED8, 0x13B0, 0x9EDA, 0x9EDA, 0x2F06, 0x9EDB, 0x9EDB, 0x14C6,
+ 0x9EDC, 0x9EDD, 0x14C4, 0x9EDE, 0x9EDE, 0x14C3, 0x9EDF, 0x9EDF, 0x306F,
+ 0x9EE0, 0x9EE0, 0x1572, 0x9EE2, 0x9EE2, 0x47D8, 0x9EE4, 0x9EE4, 0x32BA,
+ 0x9EE5, 0x9EE5, 0x32B9, 0x9EE6, 0x9EE6, 0x32BC, 0x9EE7, 0x9EE7, 0x32BB,
+ 0x9EE8, 0x9EE8, 0x1663, 0x9EEB, 0x9EEB, 0x336C, 0x9EED, 0x9EED, 0x336E,
+ 0x9EEE, 0x9EEE, 0x336D, 0x9EEF, 0x9EEF, 0x16B6, 0x9EF0, 0x9EF0, 0x3406,
+ 0x9EF1, 0x9EF1, 0x47D9, 0x9EF2, 0x9EF3, 0x3473, 0x9EF4, 0x9EF4, 0x171E,
+ 0x9EF5, 0x9EF5, 0x34FE, 0x9EF6, 0x9EF6, 0x3518, 0x9EF7, 0x9EF7, 0x1762,
+ 0x9EF8, 0x9EF8, 0x47DA, 0x9EF9, 0x9EF9, 0x2360, 0x9EFA, 0x9EFA, 0x2D37,
+ 0x9EFB, 0x9EFB, 0x2F07, 0x9EFC, 0x9EFC, 0x31BF, 0x9EFD, 0x9EFD, 0x2612,
+ 0x9EFE, 0x9EFE, 0x47CE, 0x9EFF, 0x9EFF, 0x2F08, 0x9F00, 0x9F00, 0x3071,
+ 0x9F01, 0x9F01, 0x3070, 0x9F02, 0x9F02, 0x3940, 0x9F06, 0x9F06, 0x3475,
+ 0x9F07, 0x9F07, 0x173F, 0x9F08, 0x9F08, 0x3941, 0x9F09, 0x9F09, 0x34FF,
+ 0x9F0A, 0x9F0A, 0x3519, 0x9F0E, 0x9F0E, 0x0F7B, 0x9F0F, 0x9F10, 0x2AFE,
+ 0x9F12, 0x9F12, 0x2D38, 0x9F13, 0x9F13, 0x0F7C, 0x9F15, 0x9F15, 0x1573,
+ 0x9F16, 0x9F16, 0x3072, 0x9F17, 0x9F17, 0x3945, 0x9F18, 0x9F18, 0x3370,
+ 0x9F19, 0x9F19, 0x16B7, 0x9F1A, 0x9F1A, 0x3371, 0x9F1B, 0x9F1B, 0x336F,
+ 0x9F1C, 0x9F1C, 0x3476, 0x9F1E, 0x9F1E, 0x34C4, 0x9F20, 0x9F20, 0x0F7D,
+ 0x9F22, 0x9F22, 0x2F0B, 0x9F23, 0x9F23, 0x2F0A, 0x9F24, 0x9F24, 0x2F09,
+ 0x9F25, 0x9F25, 0x3073, 0x9F26, 0x9F26, 0x3F90, 0x9F27, 0x9F27, 0x4620,
+ 0x9F28, 0x9F28, 0x3077, 0x9F29, 0x9F29, 0x3076, 0x9F2A, 0x9F2A, 0x3075,
+ 0x9F2B, 0x9F2B, 0x3074, 0x9F2C, 0x9F2C, 0x1574, 0x9F2D, 0x9F2D, 0x31C0,
+ 0x9F2E, 0x9F2E, 0x32BE, 0x9F2F, 0x9F2F, 0x1664, 0x9F30, 0x9F30, 0x32BD,
+ 0x9F31, 0x9F31, 0x3372, 0x9F32, 0x9F32, 0x3409, 0x9F33, 0x9F33, 0x3408,
+ 0x9F34, 0x9F34, 0x16F2, 0x9F35, 0x9F35, 0x3407, 0x9F36, 0x9F36, 0x3479,
+ 0x9F37, 0x9F37, 0x3478, 0x9F38, 0x9F38, 0x3477, 0x9F39, 0x9F39, 0x3947,
+ 0x9F3B, 0x9F3B, 0x1100, 0x9F3D, 0x9F3D, 0x2D39, 0x9F3E, 0x9F3E, 0x14C7,
+ 0x9F40, 0x9F41, 0x31C1, 0x9F42, 0x9F42, 0x340A, 0x9F43, 0x9F43, 0x347A,
+ 0x9F44, 0x9F44, 0x47DB, 0x9F45, 0x9F45, 0x394A, 0x9F46, 0x9F46, 0x34C5,
+ 0x9F47, 0x9F47, 0x3500, 0x9F48, 0x9F48, 0x3532, 0x9F49, 0x9F49, 0x354C,
+ 0x9F4A, 0x9F4A, 0x1101, 0x9F4B, 0x9F4B, 0x14C8, 0x9F4C, 0x9F4C, 0x3078,
+ 0x9F4D, 0x9F4D, 0x31C3, 0x9F4E, 0x9F4E, 0x3373, 0x9F4F, 0x9F4F, 0x347B,
+ 0x9F50, 0x9F50, 0x4943, 0x9F52, 0x9F52, 0x1289, 0x9F53, 0x9F53, 0x3F80,
+ 0x9F54, 0x9F54, 0x2F0C, 0x9F55, 0x9F55, 0x3079, 0x9F56, 0x9F58, 0x31C4,
+ 0x9F59, 0x9F59, 0x32C3, 0x9F5A, 0x9F5A, 0x3F23, 0x9F5B, 0x9F5B, 0x32BF,
+ 0x9F5C, 0x9F5C, 0x16B8, 0x9F5D, 0x9F5D, 0x32C2, 0x9F5E, 0x9F5E, 0x32C1,
+ 0x9F5F, 0x9F5F, 0x1665, 0x9F60, 0x9F60, 0x32C0, 0x9F61, 0x9F61, 0x1667,
+ 0x9F62, 0x9F62, 0x394F, 0x9F63, 0x9F63, 0x1666, 0x9F64, 0x9F64, 0x3375,
+ 0x9F65, 0x9F65, 0x3374, 0x9F66, 0x9F67, 0x16B9, 0x9F69, 0x9F69, 0x3950,
+ 0x9F6A, 0x9F6A, 0x16F4, 0x9F6B, 0x9F6B, 0x340B, 0x9F6C, 0x9F6C, 0x16F3,
+ 0x9F6E, 0x9F6F, 0x347E, 0x9F70, 0x9F70, 0x347D, 0x9F71, 0x9F71, 0x347C,
+ 0x9F72, 0x9F72, 0x1741, 0x9F74, 0x9F76, 0x34C6, 0x9F77, 0x9F77, 0x1740,
+ 0x9F78, 0x9F78, 0x3501, 0x9F79, 0x9F79, 0x3504, 0x9F7A, 0x9F7A, 0x3503,
+ 0x9F7B, 0x9F7B, 0x3502, 0x9F7E, 0x9F7E, 0x354B, 0x9F7F, 0x9F7F, 0x4680,
+ 0x9F8D, 0x9F8D, 0x13B2, 0x9F8E, 0x9F8E, 0x3952, 0x9F90, 0x9F90, 0x157C,
+ 0x9F91, 0x9F91, 0x32C4, 0x9F92, 0x9F92, 0x3376, 0x9F94, 0x9F94, 0x16F5,
+ 0x9F95, 0x9F95, 0x340C, 0x9F98, 0x9F98, 0x354D, 0x9F99, 0x9F99, 0x4587,
+ 0x9F9C, 0x9F9C, 0x13B3, 0x9F9F, 0x9F9F, 0x4646, 0x9FA0, 0x9FA0, 0x2F0D,
+ 0x9FA2, 0x9FA2, 0x340D, 0x9FA4, 0x9FA4, 0x351A, 0x9FA5, 0x9FA5, 0x3F70,
+ 0xE000, 0xE000, 0x400B, 0xE002, 0xE003, 0x400D, 0xE009, 0xE00A, 0x4014,
+ 0xE00C, 0xE00C, 0x4017, 0xE00E, 0xE00E, 0x4019, 0xE012, 0xE016, 0x401D,
+ 0xE018, 0xE018, 0x4023, 0xE01A, 0xE01E, 0x4025, 0xE020, 0xE020, 0x402B,
+ 0xE022, 0xE023, 0x402D, 0xE025, 0xE025, 0x4030, 0xE02D, 0xE02E, 0x4038,
+ 0xE030, 0xE030, 0x403B, 0xE032, 0xE038, 0x403D, 0xE03B, 0xE03C, 0x4046,
+ 0xE045, 0xE045, 0x4050, 0xE04C, 0xE04C, 0x4057, 0xE05A, 0xE05A, 0x4065,
+ 0xE05C, 0xE05C, 0x4067, 0xE05F, 0xE061, 0x406A, 0xE064, 0xE064, 0x406F,
+ 0xE066, 0xE066, 0x4071, 0xE06C, 0xE06C, 0x4077, 0xE071, 0xE071, 0x407C,
+ 0xE074, 0xE075, 0x407F, 0xE078, 0xE078, 0x4083, 0xE07D, 0xE07D, 0x4088,
+ 0xE087, 0xE087, 0x4092, 0xE089, 0xE08A, 0x4094, 0xE08C, 0xE08C, 0x4097,
+ 0xE093, 0xE094, 0x409E, 0xE099, 0xE09A, 0x40A4, 0xE09C, 0xE09E, 0x40A7,
+ 0xE0A6, 0xE0A7, 0x40B1, 0xE0A9, 0xE0A9, 0x40B4, 0xE0AB, 0xE0AB, 0x40B6,
+ 0xE0AE, 0xE0AE, 0x40B9, 0xE0BA, 0xE0BA, 0x40C5, 0xE0BC, 0xE0BC, 0x40C7,
+ 0xE0BE, 0xE0BE, 0x40C9, 0xE0C3, 0xE0C3, 0x40CE, 0xE0C5, 0xE0C5, 0x40D0,
+ 0xE0C7, 0xE0C8, 0x40D2, 0xE0CA, 0xE0CA, 0x40D5, 0xE0D0, 0xE0D0, 0x40DB,
+ 0xE0D4, 0xE0D5, 0x40DF, 0xE0DC, 0xE0DC, 0x40E7, 0xE0DF, 0xE0DF, 0x40EA,
+ 0xE0E2, 0xE0E5, 0x40ED, 0xE0E7, 0xE0E9, 0x40F2, 0xE0EB, 0xE0EC, 0x40F6,
+ 0xE0EE, 0xE0EE, 0x40F9, 0xE0F2, 0xE0F2, 0x40FD, 0xE0F8, 0xE0F9, 0x4103,
+ 0xE0FB, 0xE0FB, 0x4105, 0xE0FD, 0xE0FD, 0x4107, 0xE103, 0xE103, 0x410D,
+ 0xE106, 0xE106, 0x4110, 0xE109, 0xE10B, 0x4112, 0xE110, 0xE110, 0x4119,
+ 0xE114, 0xE115, 0x411D, 0xE11C, 0xE11D, 0x4125, 0xE121, 0xE121, 0x412A,
+ 0xE126, 0xE128, 0x412F, 0xE130, 0xE131, 0x4139, 0xE136, 0xE136, 0x413F,
+ 0xE139, 0xE139, 0x4142, 0xE141, 0xE142, 0x414A, 0xE145, 0xE145, 0x414D,
+ 0xE147, 0xE148, 0x414F, 0xE14A, 0xE14A, 0x4151, 0xE14D, 0xE14D, 0x4153,
+ 0xE150, 0xE150, 0x4156, 0xE154, 0xE157, 0x415A, 0xE159, 0xE15A, 0x415F,
+ 0xE15D, 0xE15D, 0x494F, 0xE162, 0xE162, 0x4167, 0xE168, 0xE16A, 0x416D,
+ 0xE171, 0xE172, 0x4175, 0xE175, 0xE175, 0x4179, 0xE178, 0xE179, 0x417C,
+ 0xE17B, 0xE17C, 0x417F, 0xE17F, 0xE180, 0x4183, 0xE185, 0xE185, 0x4189,
+ 0xE187, 0xE187, 0x418B, 0xE189, 0xE189, 0x418D, 0xE18B, 0xE18B, 0x418F,
+ 0xE18F, 0xE190, 0x4193, 0xE193, 0xE193, 0x4196, 0xE195, 0xE195, 0x4953,
+ 0xE196, 0xE196, 0x4198, 0xE19F, 0xE1A0, 0x41A1, 0xE1A4, 0xE1A4, 0x4954,
+ 0xE1A6, 0xE1A6, 0x41A8, 0xE1AA, 0xE1AA, 0x41AC, 0xE1AE, 0xE1AE, 0x41B0,
+ 0xE1B0, 0xE1B1, 0x41B2, 0xE1B3, 0xE1B4, 0x41B5, 0xE1B6, 0xE1B6, 0x41B8,
+ 0xE1B8, 0xE1B8, 0x41BA, 0xE1BB, 0xE1BB, 0x4955, 0xE1BC, 0xE1BF, 0x41BD,
+ 0xE1C1, 0xE1C1, 0x41C2, 0xE1C4, 0xE1C5, 0x41C5, 0xE1C8, 0xE1C8, 0x41C8,
+ 0xE1CC, 0xE1CD, 0x41CC, 0xE1D4, 0xE1D5, 0x41D4, 0xE1D7, 0xE1D7, 0x41D7,
+ 0xE1DA, 0xE1DA, 0x41DA, 0xE1DD, 0xE1DD, 0x41DD, 0xE1E2, 0xE1E2, 0x41E1,
+ 0xE1E6, 0xE1E6, 0x41E5, 0xE1EB, 0xE1EB, 0x41EA, 0xE1EF, 0xE1F0, 0x41EE,
+ 0xE1F2, 0xE1F2, 0x41F1, 0xE1F7, 0xE1F7, 0x41F6, 0xE1FA, 0xE1FA, 0x41F9,
+ 0xE1FE, 0xE1FE, 0x41FD, 0xE200, 0xE200, 0x41FF, 0xE201, 0xE201, 0x4958,
+ 0xE202, 0xE202, 0x4201, 0xE205, 0xE205, 0x4204, 0xE207, 0xE207, 0x4206,
+ 0xE20A, 0xE20C, 0x4209, 0xE210, 0xE210, 0x420F, 0xE212, 0xE216, 0x4211,
+ 0xE219, 0xE219, 0x4218, 0xE21B, 0xE21C, 0x421A, 0xE21F, 0xE221, 0x421E,
+ 0xE226, 0xE228, 0x4225, 0xE22A, 0xE22A, 0x4229, 0xE22F, 0xE22F, 0x422E,
+ 0xE231, 0xE231, 0x4230, 0xE233, 0xE233, 0x4232, 0xE237, 0xE237, 0x4236,
+ 0xE23B, 0xE23B, 0x423A, 0xE23D, 0xE23E, 0x423C, 0xE245, 0xE245, 0x4244,
+ 0xE248, 0xE248, 0x4247, 0xE24A, 0xE24F, 0x4249, 0xE251, 0xE254, 0x4250,
+ 0xE261, 0xE261, 0x4260, 0xE268, 0xE268, 0x4266, 0xE26B, 0xE26B, 0x4269,
+ 0xE26D, 0xE26F, 0x426B, 0xE271, 0xE271, 0x426F, 0xE27A, 0xE27A, 0x4278,
+ 0xE27D, 0xE27D, 0x427B, 0xE282, 0xE282, 0x4280, 0xE288, 0xE289, 0x4286,
+ 0xE28B, 0xE28B, 0x4289, 0xE290, 0xE291, 0x428E, 0xE294, 0xE296, 0x4292,
+ 0xE299, 0xE29B, 0x4297, 0xE29F, 0xE29F, 0x429D, 0xE2A1, 0xE2A1, 0x495B,
+ 0xE2A4, 0xE2A4, 0x42A1, 0xE2A6, 0xE2A6, 0x42A3, 0xE2B2, 0xE2B5, 0x42AE,
+ 0xE2B7, 0xE2B8, 0x42B3, 0xE2BA, 0xE2BA, 0x42B6, 0xE2BE, 0xE2BF, 0x42B9,
+ 0xE2C1, 0xE2C1, 0x42BC, 0xE2C7, 0xE2C7, 0x42C2, 0xE2C9, 0xE2C9, 0x42C4,
+ 0xE2D4, 0xE2D4, 0x42CF, 0xE2D8, 0xE2D9, 0x42D3, 0xE2DE, 0xE2DE, 0x42D9,
+ 0xE2E0, 0xE2E2, 0x42DB, 0xE2E7, 0xE2E7, 0x42E2, 0xE2E9, 0xE2E9, 0x42E4,
+ 0xE2EB, 0xE2ED, 0x42E6, 0xE2F0, 0xE2F1, 0x495D, 0xE2F8, 0xE2F8, 0x42F1,
+ 0xE2FC, 0xE2FC, 0x42F5, 0xE2FF, 0xE2FF, 0x495F, 0xE300, 0xE300, 0x4960,
+ 0xE301, 0xE301, 0x42F8, 0xE306, 0xE306, 0x42FD, 0xE308, 0xE308, 0x42FF,
+ 0xE30C, 0xE30C, 0x4303, 0xE30F, 0xE30F, 0x4306, 0xE311, 0xE311, 0x372B,
+ 0xE313, 0xE313, 0x372D, 0xE315, 0xE315, 0x372F, 0xE318, 0xE318, 0x3731,
+ 0xE31B, 0xE31C, 0x3734, 0xE31F, 0xE31F, 0x3738, 0xE325, 0xE325, 0x373E,
+ 0xE32C, 0xE32C, 0x3745, 0xE330, 0xE331, 0x3749, 0xE335, 0xE336, 0x374E,
+ 0xE33B, 0xE33B, 0x3754, 0xE33D, 0xE33D, 0x469A, 0xE342, 0xE342, 0x375A,
+ 0xE345, 0xE345, 0x375D, 0xE348, 0xE348, 0x375F, 0xE352, 0xE352, 0x3768,
+ 0xE354, 0xE354, 0x376A, 0xE35B, 0xE35C, 0x3770, 0xE360, 0xE360, 0x3775,
+ 0xE362, 0xE362, 0x3777, 0xE364, 0xE365, 0x3779, 0xE36F, 0xE36F, 0x3784,
+ 0xE372, 0xE372, 0x3787, 0xE374, 0xE375, 0x3789, 0xE377, 0xE377, 0x378C,
+ 0xE379, 0xE379, 0x378D, 0xE37B, 0xE37B, 0x378F, 0xE381, 0xE382, 0x3795,
+ 0xE386, 0xE386, 0x379A, 0xE388, 0xE38A, 0x379C, 0xE38D, 0xE38D, 0x37A1,
+ 0xE391, 0xE391, 0x37A5, 0xE393, 0xE393, 0x37A7, 0xE394, 0xE394, 0x46A0,
+ 0xE396, 0xE396, 0x37A9, 0xE398, 0xE398, 0x37AB, 0xE39A, 0xE39B, 0x37AD,
+ 0xE39E, 0xE39E, 0x46A1, 0xE39F, 0xE3A0, 0x37B1, 0xE3A2, 0xE3A2, 0x37B4,
+ 0xE3A5, 0xE3A5, 0x46A2, 0xE3A6, 0xE3A9, 0x37B8, 0xE3AC, 0xE3AC, 0x37BE,
+ 0xE3B1, 0xE3B2, 0x37C3, 0xE3B4, 0xE3B5, 0x37C6, 0xE3B9, 0xE3BD, 0x37CB,
+ 0xE3C3, 0xE3C3, 0x37D5, 0xE3C8, 0xE3C8, 0x37D9, 0xE3CC, 0xE3CC, 0x37DD,
+ 0xE3CD, 0xE3CD, 0x46A4, 0xE3CF, 0xE3CF, 0x37DF, 0xE3D5, 0xE3D5, 0x46A5,
+ 0xE3D8, 0xE3DA, 0x37E7, 0xE3E1, 0xE3E1, 0x37F0, 0xE3E3, 0xE3E3, 0x37F2,
+ 0xE3E7, 0xE3E7, 0x46A6, 0xE3ED, 0xE3EE, 0x37FC, 0xE3F0, 0xE3F0, 0x37FF,
+ 0xE3F2, 0xE3F4, 0x3801, 0xE3F8, 0xE3F8, 0x3807, 0xE3FA, 0xE3FA, 0x3809,
+ 0xE3FD, 0xE3FD, 0x380C, 0xE3FF, 0xE3FF, 0x380E, 0xE409, 0xE40B, 0x3818,
+ 0xE414, 0xE414, 0x3821, 0xE41B, 0xE41B, 0x3828, 0xE41D, 0xE41E, 0x382A,
+ 0xE423, 0xE423, 0x3830, 0xE425, 0xE425, 0x3832, 0xE426, 0xE426, 0x46AB,
+ 0xE428, 0xE428, 0x3834, 0xE42C, 0xE42D, 0x3838, 0xE432, 0xE432, 0x383E,
+ 0xE436, 0xE436, 0x3842, 0xE43A, 0xE43C, 0x3846, 0xE43E, 0xE43E, 0x384A,
+ 0xE440, 0xE441, 0x384C, 0xE444, 0xE444, 0x3850, 0xE448, 0xE448, 0x46AD,
+ 0xE44C, 0xE44E, 0x3857, 0xE450, 0xE451, 0x385B, 0xE459, 0xE45A, 0x3864,
+ 0xE45D, 0xE45E, 0x3868, 0xE461, 0xE463, 0x386C, 0xE465, 0xE465, 0x3870,
+ 0xE467, 0xE469, 0x46AF, 0xE46A, 0xE46A, 0x3873, 0xE46C, 0xE46C, 0x3875,
+ 0xE46E, 0xE46F, 0x3877, 0xE471, 0xE472, 0x387A, 0xE474, 0xE474, 0x387D,
+ 0xE476, 0xE476, 0x387F, 0xE47E, 0xE47F, 0x3886, 0xE484, 0xE484, 0x388C,
+ 0xE486, 0xE48A, 0x388D, 0xE48D, 0xE48E, 0x3894, 0xE491, 0xE492, 0x3897,
+ 0xE495, 0xE497, 0x389B, 0xE4A1, 0xE4A1, 0x46B4, 0xE4A2, 0xE4A4, 0x38A7,
+ 0xE4AB, 0xE4AB, 0x38B0, 0xE4AF, 0xE4AF, 0x38B4, 0xE4B3, 0xE4BA, 0x38B8,
+ 0xE4C1, 0xE4C1, 0x38C6, 0xE4C6, 0xE4C6, 0x38CB, 0xE4C9, 0xE4C9, 0x38CE,
+ 0xE4CD, 0xE4CE, 0x38D2, 0xE4D6, 0xE4D6, 0x38DB, 0xE4D9, 0xE4D9, 0x38DE,
+ 0xE4DC, 0xE4DD, 0x38E1, 0xE4E4, 0xE4E4, 0x38E9, 0xE4E6, 0xE4E8, 0x38EB,
+ 0xE4EE, 0xE4EF, 0x38F3, 0xE4F6, 0xE4F6, 0x38FB, 0xE4F8, 0xE4F9, 0x38FD,
+ 0xE4FF, 0xE4FF, 0x3904, 0xE501, 0xE502, 0x3906, 0xE505, 0xE505, 0x390A,
+ 0xE50A, 0xE50A, 0x390F, 0xE50D, 0xE50D, 0x46B5, 0xE50F, 0xE50F, 0x3913,
+ 0xE512, 0xE512, 0x3916, 0xE514, 0xE514, 0x3918, 0xE516, 0xE516, 0x46B6,
+ 0xE51A, 0xE51A, 0x391D, 0xE51C, 0xE521, 0x391F, 0xE524, 0xE524, 0x3927,
+ 0xE528, 0xE528, 0x46B8, 0xE529, 0xE52C, 0x392A, 0xE52E, 0xE52F, 0x392F,
+ 0xE537, 0xE537, 0x3938, 0xE53E, 0xE53E, 0x393F, 0xE543, 0xE543, 0x3944,
+ 0xE54B, 0xE54B, 0x394C, 0xE554, 0xE555, 0x3955, 0xE557, 0xE559, 0x3958,
+ 0xE55B, 0xE55C, 0x395C, 0xE55E, 0xE55F, 0x395F, 0xE562, 0xE562, 0x3963,
+ 0xE566, 0xE567, 0x3967, 0xE56D, 0xE56E, 0x396E, 0xE570, 0xE570, 0x3971,
+ 0xE572, 0xE573, 0x3973, 0xE575, 0xE577, 0x3976, 0xE579, 0xE57A, 0x397A,
+ 0xE57C, 0xE57E, 0x397D, 0xE580, 0xE580, 0x3981, 0xE582, 0xE586, 0x3983,
+ 0xE588, 0xE588, 0x3989, 0xE58B, 0xE590, 0x398C, 0xE592, 0xE594, 0x3993,
+ 0xE59A, 0xE59A, 0x399B, 0xE59D, 0xE5A1, 0x399E, 0xE5A4, 0xE5A4, 0x39A5,
+ 0xE5A6, 0xE5A8, 0x39A7, 0xE5AA, 0xE5AA, 0x39AB, 0xE5AF, 0xE5AF, 0x39B0,
+ 0xE5B1, 0xE5B1, 0x39B2, 0xE5B2, 0xE5B2, 0x46BB, 0xE5B5, 0xE5B5, 0x39B6,
+ 0xE5B7, 0xE5B8, 0x39B8, 0xE5BA, 0xE5BB, 0x39BB, 0xE5BE, 0xE5C0, 0x39BF,
+ 0xE5C2, 0xE5C2, 0x39C3, 0xE5C8, 0xE5C9, 0x39C9, 0xE5D7, 0xE5D9, 0x39D4,
+ 0xE5DB, 0xE5DC, 0x39D8, 0xE5DF, 0xE5DF, 0x39DC, 0xE5E1, 0xE5E3, 0x39DE,
+ 0xE5E5, 0xE5E6, 0x39E2, 0xE5E9, 0xE5E9, 0x39E6, 0xE5EE, 0xE5F1, 0x39EB,
+ 0xE5F3, 0xE5F3, 0x39F0, 0xE5FB, 0xE5FC, 0x39F8, 0xE600, 0xE600, 0x39FD,
+ 0xE602, 0xE602, 0x39FF, 0xE604, 0xE604, 0x3A01, 0xE60F, 0xE612, 0x3A0B,
+ 0xE619, 0xE61C, 0x3A14, 0xE621, 0xE621, 0x3A1C, 0xE623, 0xE624, 0x3A1E,
+ 0xE627, 0xE627, 0x3A22, 0xE62B, 0xE62B, 0x3A26, 0xE632, 0xE634, 0x3A2D,
+ 0xE637, 0xE638, 0x3A32, 0xE63A, 0xE63A, 0x3A35, 0xE63C, 0xE63C, 0x3A37,
+ 0xE63F, 0xE642, 0x3A3A, 0xE645, 0xE646, 0x3A40, 0xE648, 0xE648, 0x3A43,
+ 0xE64B, 0xE64B, 0x3A45, 0xE64E, 0xE64F, 0x3A48, 0xE652, 0xE655, 0x3A4C,
+ 0xE657, 0xE659, 0x3A51, 0xE65D, 0xE660, 0x3A57, 0xE662, 0xE663, 0x3A5C,
+ 0xE665, 0xE668, 0x3A5F, 0xE66A, 0xE66A, 0x46BF, 0xE66E, 0xE66F, 0x3A67,
+ 0xE671, 0xE671, 0x3A6A, 0xE676, 0xE679, 0x3A6F, 0xE67B, 0xE67D, 0x3A74,
+ 0xE67F, 0xE680, 0x3A78, 0xE683, 0xE688, 0x3A7B, 0xE68A, 0xE68C, 0x3A82,
+ 0xE68E, 0xE690, 0x3A86, 0xE692, 0xE692, 0x3A8A, 0xE696, 0xE697, 0x3A8E,
+ 0xE699, 0xE69A, 0x3A91, 0xE69C, 0xE69C, 0x3A94, 0xE69E, 0xE69F, 0x3A96,
+ 0xE6A1, 0xE6A2, 0x3A99, 0xE6A6, 0xE6A6, 0x3A9D, 0xE6AC, 0xE6AD, 0x3AA2,
+ 0xE6B2, 0xE6B2, 0x3AA8, 0xE6B9, 0xE6BA, 0x3AAF, 0xE6BD, 0xE6BE, 0x3AB3,
+ 0xE6C0, 0xE6C1, 0x3AB6, 0xE6C5, 0xE6C5, 0x46C4, 0xE6C7, 0xE6C7, 0x3ABC,
+ 0xE6CA, 0xE6CA, 0x3ABF, 0xE6D1, 0xE6D2, 0x3AC6, 0xE6D7, 0xE6D8, 0x3ACC,
+ 0xE6DA, 0xE6DB, 0x3ACF, 0xE6DD, 0xE6E1, 0x3AD2, 0xE6E4, 0xE6E6, 0x3AD9,
+ 0xE6EE, 0xE6EE, 0x3AE3, 0xE6F2, 0xE6F3, 0x3AE7, 0xE6F7, 0xE6F7, 0x3AEC,
+ 0xE6FA, 0xE6FC, 0x3AEF, 0xE6FF, 0xE6FF, 0x3AF4, 0xE701, 0xE702, 0x3AF6,
+ 0xE706, 0xE707, 0x3AFB, 0xE709, 0xE70A, 0x3AFE, 0xE70C, 0xE70C, 0x3B01,
+ 0xE710, 0xE711, 0x3B05, 0xE713, 0xE713, 0x3B08, 0xE717, 0xE718, 0x3B0C,
+ 0xE71A, 0xE71B, 0x3B0F, 0xE71D, 0xE71D, 0x3B12, 0xE724, 0xE725, 0x3B19,
+ 0xE72B, 0xE72B, 0x3B20, 0xE72F, 0xE72F, 0x3B24, 0xE733, 0xE737, 0x3B28,
+ 0xE73C, 0xE73D, 0x3B31, 0xE740, 0xE742, 0x3B35, 0xE744, 0xE744, 0x3B39,
+ 0xE747, 0xE747, 0x3B3C, 0xE74D, 0xE74F, 0x3B42, 0xE751, 0xE752, 0x3B46,
+ 0xE75B, 0xE75D, 0x3B50, 0xE75F, 0xE75F, 0x3B54, 0xE761, 0xE762, 0x3B56,
+ 0xE764, 0xE765, 0x3B59, 0xE767, 0xE768, 0x3B5C, 0xE769, 0xE769, 0x46C7,
+ 0xE76C, 0xE76E, 0x3B60, 0xE770, 0xE770, 0x3B64, 0xE775, 0xE775, 0x3B69,
+ 0xE777, 0xE778, 0x3B6A, 0xE77A, 0xE77A, 0x3B6D, 0xE77C, 0xE77D, 0x3B6F,
+ 0xE784, 0xE784, 0x3B77, 0xE786, 0xE786, 0x3B79, 0xE789, 0xE789, 0x3B7C,
+ 0xE78B, 0xE78B, 0x3B7E, 0xE78D, 0xE78D, 0x3B80, 0xE790, 0xE790, 0x3B83,
+ 0xE792, 0xE792, 0x3B85, 0xE794, 0xE794, 0x3B87, 0xE796, 0xE797, 0x3B89,
+ 0xE799, 0xE799, 0x3B8C, 0xE7A2, 0xE7A2, 0x3B95, 0xE7A4, 0xE7A9, 0x3B97,
+ 0xE7B1, 0xE7B1, 0x3BA4, 0xE7B4, 0xE7B4, 0x3BA7, 0xE7B8, 0xE7B8, 0x3BAB,
+ 0xE7BC, 0xE7BC, 0x3BAF, 0xE7C4, 0xE7C4, 0x3BB6, 0xE7CA, 0xE7CA, 0x3BBC,
+ 0xE7CE, 0xE7CE, 0x3BC0, 0xE7D1, 0xE7D1, 0x3BC3, 0xE7D8, 0xE7D8, 0x3BCA,
+ 0xE7DA, 0xE7DA, 0x3BCC, 0xE7DC, 0xE7DD, 0x3BCE, 0xE7E4, 0xE7E4, 0x3BD6,
+ 0xE7E7, 0xE7E9, 0x3BD9, 0xE7EB, 0xE7EB, 0x3BDD, 0xE7ED, 0xE7EF, 0x3BDF,
+ 0xE7F1, 0xE7F3, 0x3BE3, 0xE7F8, 0xE7F8, 0x3BEA, 0xE7FB, 0xE7FC, 0x3BED,
+ 0xE7FF, 0xE7FF, 0x3BF1, 0xE800, 0xE802, 0x3BF2, 0xE808, 0xE808, 0x3BFA,
+ 0xE80C, 0xE80C, 0x3BFE, 0xE80E, 0xE80F, 0x3C00, 0xE811, 0xE811, 0x3C03,
+ 0xE813, 0xE813, 0x3C05, 0xE816, 0xE818, 0x3C08, 0xE81A, 0xE81A, 0x3C0C,
+ 0xE821, 0xE821, 0x3C13, 0xE827, 0xE828, 0x3C19, 0xE82D, 0xE82D, 0x3C1F,
+ 0xE82F, 0xE82F, 0x3C21, 0xE835, 0xE835, 0x3C27, 0xE837, 0xE838, 0x3C29,
+ 0xE83A, 0xE83B, 0x3C2C, 0xE841, 0xE842, 0x3C33, 0xE84B, 0xE84B, 0x3C3D,
+ 0xE84D, 0xE84E, 0x3C3F, 0xE851, 0xE851, 0x3C43, 0xE855, 0xE858, 0x3C47,
+ 0xE85B, 0xE85D, 0x3C4D, 0xE860, 0xE862, 0x3C52, 0xE865, 0xE867, 0x3C57,
+ 0xE869, 0xE86A, 0x3C5B, 0xE86C, 0xE86C, 0x3C5D, 0xE871, 0xE871, 0x3C62,
+ 0xE878, 0xE878, 0x3C69, 0xE87D, 0xE87F, 0x3C6E, 0xE887, 0xE887, 0x3C78,
+ 0xE88F, 0xE88F, 0x3C80, 0xE891, 0xE892, 0x3C82, 0xE894, 0xE895, 0x3C85,
+ 0xE89A, 0xE89A, 0x3C8B, 0xE89D, 0xE89D, 0x3C8E, 0xE8A0, 0xE8A1, 0x3C91,
+ 0xE8A3, 0xE8A7, 0x3C94, 0xE8A9, 0xE8AA, 0x3C9A, 0xE8AC, 0xE8B0, 0x3C9D,
+ 0xE8B5, 0xE8B6, 0x3CA6, 0xE8B8, 0xE8B8, 0x3CA9, 0xE8BD, 0xE8C3, 0x3CAE,
+ 0xE8C5, 0xE8C5, 0x3CB6, 0xE8C7, 0xE8C7, 0x3CB8, 0xE8CB, 0xE8CB, 0x3CBC,
+ 0xE8CD, 0xE8CE, 0x3CBE, 0xE8D0, 0xE8D1, 0x3CC1, 0xE8D3, 0xE8D3, 0x3CC4,
+ 0xE8D5, 0xE8D6, 0x3CC6, 0xE8D8, 0xE8DA, 0x3CC9, 0xE8DD, 0xE8DD, 0x3CCE,
+ 0xE8DF, 0xE8E1, 0x3CD0, 0xE8E5, 0xE8E6, 0x3CD6, 0xE8E8, 0xE8EA, 0x3CD9,
+ 0xE8ED, 0xE8ED, 0x3CDE, 0xE8F1, 0xE8F2, 0x3CE2, 0xE8F5, 0xE8F5, 0x3CE6,
+ 0xE8FB, 0xE8FB, 0x3CEC, 0xE8FE, 0xE8FE, 0x3CEF, 0xE900, 0xE900, 0x3CF1,
+ 0xE903, 0xE903, 0x3CF4, 0xE907, 0xE908, 0x3CF8, 0xE90C, 0xE90C, 0x3CFD,
+ 0xE917, 0xE918, 0x3D08, 0xE91C, 0xE91C, 0x3D0D, 0xE91E, 0xE922, 0x3D0F,
+ 0xE925, 0xE92C, 0x3D16, 0xE92E, 0xE92F, 0x3D1F, 0xE933, 0xE936, 0x3D24,
+ 0xE938, 0xE938, 0x46CF, 0xE93A, 0xE93A, 0x3D2B, 0xE93C, 0xE93E, 0x3D2D,
+ 0xE941, 0xE941, 0x3D32, 0xE944, 0xE945, 0x3D35, 0xE948, 0xE948, 0x3D39,
+ 0xE94D, 0xE94D, 0x3D3E, 0xE950, 0xE950, 0x3D41, 0xE952, 0xE955, 0x3D43,
+ 0xE957, 0xE958, 0x3D48, 0xE95A, 0xE95A, 0x3D4B, 0xE95C, 0xE95E, 0x3D4D,
+ 0xE960, 0xE961, 0x3D51, 0xE964, 0xE964, 0x3D55, 0xE967, 0xE967, 0x3D58,
+ 0xE968, 0xE968, 0x46D1, 0xE96E, 0xE96F, 0x46D5, 0xE973, 0xE973, 0x46DA,
+ 0xE974, 0xE974, 0x3D5B, 0xE975, 0xE975, 0x46DB, 0xE977, 0xE978, 0x46DD,
+ 0xE97A, 0xE97B, 0x46E0, 0xE97D, 0xE97D, 0x46E3, 0xE981, 0xE982, 0x46E6,
+ 0xE987, 0xE987, 0x3D5D, 0xE98A, 0xE98A, 0x3D5E, 0xE98E, 0xE98E, 0x3D5F,
+ 0xE991, 0xE991, 0x46EF, 0xE9B0, 0xE9B0, 0x43D4, 0xE9CB, 0xE9CB, 0x4719,
+ 0xE9EF, 0xE9EF, 0x4734, 0xEA43, 0xEA43, 0x4779, 0xEAA9, 0xEAA9, 0x47CC,
+ 0xEABF, 0xEAC1, 0x47DC, 0xEAC5, 0xEAC5, 0x47E0, 0xEAC9, 0xEACC, 0x47E2,
+ 0xEACF, 0xEAD1, 0x47E8, 0xEAD3, 0xEAD4, 0x47EB, 0xEAD6, 0xEADA, 0x47EE,
+ 0xEADC, 0xEADC, 0x47F3, 0xEADE, 0xEAE3, 0x47F4, 0xEAE7, 0xEAEC, 0x47FA,
+ 0xEAEE, 0xEAEE, 0x4800, 0xEAF0, 0xEAF2, 0x4801, 0xEAF4, 0xEAF4, 0x43B0,
+ 0xEAF5, 0xEAF6, 0x4804, 0xEAF8, 0xEAF8, 0x4807, 0xEAF9, 0xEAF9, 0x43B2,
+ 0xEAFA, 0xEAFB, 0x4808, 0xEAFE, 0xEAFF, 0x480B, 0xEB00, 0xEB00, 0x480D,
+ 0xEB02, 0xEB05, 0x480E, 0xEB08, 0xEB0F, 0x4813, 0xEB11, 0xEB12, 0x481B,
+ 0xEB15, 0xEB15, 0x481E, 0xEB18, 0xEB1D, 0x4821, 0xEB1F, 0xEB21, 0x4827,
+ 0xEB23, 0xEB23, 0x482A, 0xEB25, 0xEB25, 0x482B, 0xEB27, 0xEB27, 0x482C,
+ 0xEB2A, 0xEB2A, 0x482D, 0xEB2C, 0xEB39, 0x482E, 0xEB3D, 0xEB3D, 0x3D9B,
+ 0xEB3E, 0xEB3F, 0x483C, 0xEB41, 0xEB41, 0x3D9D, 0xEB43, 0xEB44, 0x483E,
+ 0xEB46, 0xEB46, 0x3DA0, 0xEB4A, 0xEB4A, 0x4841, 0xEB4B, 0xEB4C, 0x3DA3,
+ 0xEB4D, 0xEB4E, 0x4842, 0xEB4F, 0xEB50, 0x3DA5, 0xEB53, 0xEB53, 0x4844,
+ 0xEB54, 0xEB54, 0x3DA9, 0xEB55, 0xEB56, 0x4845, 0xEB57, 0xEB57, 0x3DAA,
+ 0xEB58, 0xEB59, 0x4847, 0xEB5A, 0xEB5B, 0x3DAB, 0xEB5D, 0xEB5D, 0x3DAE,
+ 0xEB5F, 0xEB5F, 0x3DB0, 0xEB61, 0xEB61, 0x3DB2, 0xEB62, 0xEB63, 0x4849,
+ 0xEB65, 0xEB65, 0x484C, 0xEB67, 0xEB67, 0x484D, 0xEB68, 0xEB69, 0x3DB4,
+ 0xEB6B, 0xEB6B, 0x3DB7, 0xEB6D, 0xEB6D, 0x3DB9, 0xEB6F, 0xEB71, 0x484E,
+ 0xEB73, 0xEB73, 0x4851, 0xEB74, 0xEB74, 0x3DBC, 0xEB76, 0xEB76, 0x43D0,
+ 0xEB77, 0xEB77, 0x4853, 0xEB78, 0xEB78, 0x3DBD, 0xEB7A, 0xEB7A, 0x4854,
+ 0xEB7E, 0xEB7F, 0x4856, 0xEB80, 0xEB81, 0x3DC1, 0xEB83, 0xEB84, 0x4858,
+ 0xEB85, 0xEB85, 0x3DC4, 0xEB88, 0xEB88, 0x485A, 0xEB89, 0xEB89, 0x3DC6,
+ 0xEB8A, 0xEB8A, 0x485B, 0xEB8C, 0xEB8E, 0x485C, 0xEB8F, 0xEB8F, 0x3DC8,
+ 0xEB90, 0xEB90, 0x485F, 0xEB93, 0xEB93, 0x3DCB, 0xEB95, 0xEB95, 0x4860,
+ 0xEB97, 0xEB97, 0x3DCE, 0xEB98, 0xEB9A, 0x4861, 0xEB9B, 0xEB9B, 0x3DCF,
+ 0xEB9F, 0xEB9F, 0x4866, 0xEBA0, 0xEBA0, 0x3DD1, 0xEBA2, 0xEBA2, 0x4867,
+ 0xEBA3, 0xEBA3, 0x3DD3, 0xEBA5, 0xEBA6, 0x4868, 0xEBA8, 0xEBA8, 0x3DD6,
+ 0xEBAA, 0xEBAA, 0x486A, 0xEBAB, 0xEBAB, 0x3DD8, 0xEBAD, 0xEBAD, 0x3DDA,
+ 0xEBAE, 0xEBAE, 0x486B, 0xEBAF, 0xEBAF, 0x3DDB, 0xEBB0, 0xEBB0, 0x486C,
+ 0xEBB2, 0xEBB3, 0x486D, 0xEBB4, 0xEBB4, 0x3DDD, 0xEBB6, 0xEBB6, 0x3DDF,
+ 0xEBB9, 0xEBB9, 0x3DE2, 0xEBBC, 0xEBBC, 0x3DE4, 0xEBBD, 0xEBBD, 0x4870,
+ 0xEBBF, 0xEBBF, 0x3DE6, 0xEBC2, 0xEBC2, 0x3DE9, 0xEBC5, 0xEBC6, 0x4872,
+ 0xEBC7, 0xEBC7, 0x3DEB, 0xEBC8, 0xEBC8, 0x4874, 0xEBCA, 0xEBCA, 0x4875,
+ 0xEBCC, 0xEBCD, 0x3DEE, 0xEBCE, 0xEBCE, 0x4876, 0xEBD0, 0xEBD0, 0x4877,
+ 0xEBD3, 0xEBD3, 0x4878, 0xEBD5, 0xEBD5, 0x4879, 0xEBD7, 0xEBD8, 0x3DF4,
+ 0xEBDA, 0xEBDB, 0x487A, 0xEBDD, 0xEBDD, 0x3DF8, 0xEBDF, 0xEBDF, 0x487C,
+ 0xEBE1, 0xEBE1, 0x487D, 0xEBE4, 0xEBE4, 0x487E, 0xEBE7, 0xEBE7, 0x3DFF,
+ 0xEBE8, 0xEBE9, 0x487F, 0xEBEB, 0xEBEC, 0x4881, 0xEBEE, 0xEBEE, 0x3E02,
+ 0xEBEF, 0xEBEF, 0x4883, 0xEBF1, 0xEBF1, 0x4884, 0xEBF2, 0xEBF2, 0x3E04,
+ 0xEBF5, 0xEBF5, 0x4886, 0xEBF6, 0xEBF6, 0x3E06, 0xEBF9, 0xEBFB, 0x3E09,
+ 0xEBFD, 0xEBFE, 0x3E0D, 0xEC05, 0xEC06, 0x3E14, 0xEC08, 0xEC09, 0x4888,
+ 0xEC0C, 0xEC0C, 0x3E18, 0xEC0E, 0xEC10, 0x3E1A, 0xEC13, 0xEC13, 0x488B,
+ 0xEC14, 0xEC14, 0x3E1F, 0xEC17, 0xEC18, 0x3E22, 0xEC19, 0xEC1C, 0x488C,
+ 0xEC1D, 0xEC1D, 0x3E24, 0xEC20, 0xEC20, 0x4890, 0xEC22, 0xEC22, 0x3E28,
+ 0xEC24, 0xEC24, 0x3E2A, 0xEC26, 0xEC26, 0x3E2C, 0xEC2A, 0xEC2A, 0x3E30,
+ 0xEC2B, 0xEC2B, 0x4891, 0xEC2C, 0xEC2E, 0x3E31, 0xEC2F, 0xEC2F, 0x4892,
+ 0xEC31, 0xEC31, 0x3E35, 0xEC32, 0xEC32, 0x4893, 0xEC35, 0xEC35, 0x3E38,
+ 0xEC37, 0xEC37, 0x3E3A, 0xEC3B, 0xEC3C, 0x3E3E, 0xEC3F, 0xEC41, 0x4894,
+ 0xEC42, 0xEC42, 0x3E42, 0xEC43, 0xEC43, 0x4897, 0xEC44, 0xEC44, 0x43E8,
+ 0xEC45, 0xEC49, 0x4898, 0xEC4B, 0xEC4C, 0x489D, 0xEC4F, 0xEC4F, 0x48A0,
+ 0xEC52, 0xEC52, 0x48A1, 0xEC54, 0xEC54, 0x48A2, 0xEC56, 0xEC58, 0x48A3,
+ 0xEC5A, 0xEC5A, 0x48A6, 0xEC5C, 0xEC5D, 0x48A7, 0xEC5F, 0xEC60, 0x48A9,
+ 0xEC62, 0xEC63, 0x48AC, 0xEC67, 0xEC67, 0x48AF, 0xEC68, 0xEC68, 0x3E4D,
+ 0xEC69, 0xEC73, 0x48B0, 0xEC75, 0xEC76, 0x48BC, 0xEC79, 0xEC79, 0x48C0,
+ 0xEC7B, 0xEC7B, 0x48C2, 0xEC7E, 0xEC7E, 0x48C3, 0xEC80, 0xEC80, 0x48C5,
+ 0xEC84, 0xEC84, 0x48C8, 0xEC86, 0xEC86, 0x48CA, 0xEC8D, 0xEC8D, 0x48CC,
+ 0xEC8E, 0xEC8E, 0x3E55, 0xEC91, 0xEC91, 0x48CE, 0xEC92, 0xEC92, 0x3E58,
+ 0xEC93, 0xEC94, 0x48CF, 0xEC95, 0xEC95, 0x3E59, 0xEC96, 0xEC96, 0x48D1,
+ 0xEC98, 0xEC98, 0x48D2, 0xEC99, 0xEC99, 0x3E5B, 0xEC9A, 0xEC9B, 0x48D3,
+ 0xEC9D, 0xEC9D, 0x48D6, 0xEC9E, 0xEC9E, 0x3E5C, 0xECA0, 0xECA0, 0x48D7,
+ 0xECA3, 0xECA4, 0x48D8, 0xECA7, 0xECA8, 0x48DA, 0xECAB, 0xECAB, 0x48DC,
+ 0xECAD, 0xECAD, 0x48DD, 0xECAF, 0xECAF, 0x3E65, 0xECB4, 0xECB4, 0x48DF,
+ 0xECB6, 0xECB6, 0x3E6B, 0xECB9, 0xECBB, 0x48E1, 0xECCF, 0xECCF, 0x3E80,
+ 0xECD4, 0xECD4, 0x3E85, 0xECDB, 0xECDC, 0x3E8C, 0xECDE, 0xECDE, 0x48E4,
+ 0xECDF, 0xECE1, 0x3E8F, 0xECE5, 0xECE5, 0x3E95, 0xECF0, 0xECF0, 0x3EA0,
+ 0xECF2, 0xECF2, 0x3EA2, 0xECF5, 0xECF5, 0x3EA5, 0xECFC, 0xECFC, 0x3EAC,
+ 0xED04, 0xED04, 0x48E7, 0xED07, 0xED07, 0x48E8, 0xED0A, 0xED0A, 0x48EA,
+ 0xED0C, 0xED11, 0x48EB, 0xED13, 0xED13, 0x48F1, 0xED15, 0xED17, 0x48F2,
+ 0xED18, 0xED18, 0x3EBA, 0xED1A, 0xED1A, 0x48F5, 0xED1C, 0xED1C, 0x48F6,
+ 0xED1D, 0xED1D, 0x3EBD, 0xED1E, 0xED1E, 0x48F7, 0xED22, 0xED22, 0x48F8,
+ 0xED24, 0xED25, 0x3EC2, 0xED26, 0xED27, 0x48F9, 0xED29, 0xED29, 0x3EC5,
+ 0xED2A, 0xED2A, 0x48FB, 0xED2C, 0xED2C, 0x3EC7, 0xED2D, 0xED2D, 0x48FC,
+ 0xED3B, 0xED3B, 0x3ECF, 0xED3D, 0xED3D, 0x4904, 0xED41, 0xED42, 0x4906,
+ 0xED45, 0xED45, 0x4908, 0xED47, 0xED47, 0x3ED5, 0xED4A, 0xED4B, 0x4909,
+ 0xED4D, 0xED4E, 0x490B, 0xED4F, 0xED4F, 0x3EDA, 0xED51, 0xED51, 0x490D,
+ 0xED52, 0xED52, 0x3EDC, 0xED53, 0xED54, 0x490E, 0xED57, 0xED58, 0x4910,
+ 0xED5F, 0xED5F, 0x3EE5, 0xED62, 0xED62, 0x3EE8, 0xED6B, 0xED6B, 0x3EF1,
+ 0xED71, 0xED71, 0x4912, 0xED72, 0xED72, 0x3EF7, 0xED75, 0xED75, 0x4913,
+ 0xED77, 0xED77, 0x4915, 0xED78, 0xED78, 0x3EFA, 0xED7A, 0xED7A, 0x4916,
+ 0xED81, 0xED81, 0x4917, 0xED84, 0xED85, 0x3F04, 0xED86, 0xED86, 0x4918,
+ 0xED88, 0xED88, 0x3F07, 0xED89, 0xED8A, 0x4919, 0xED8B, 0xED8B, 0x3F08,
+ 0xED8E, 0xED8E, 0x3F0B, 0xED91, 0xED91, 0x3F0E, 0xEDA6, 0xEDA6, 0x491C,
+ 0xEDC6, 0xEDC6, 0x3F41, 0xEDCF, 0xEDCF, 0x3F4A, 0xEDD1, 0xEDD1, 0x491E,
+ 0xEDD7, 0xEDD7, 0x491F, 0xEDDA, 0xEDDA, 0x3F53, 0xEDDB, 0xEDDB, 0x4920,
+ 0xEDDD, 0xEDDD, 0x4921, 0xEDE1, 0xEDE1, 0x3F58, 0xEDED, 0xEDED, 0x3F64,
+ 0xEE08, 0xEE08, 0x3F7E, 0xEE11, 0xEE11, 0x3F87, 0xEE15, 0xEE15, 0x4925,
+ 0xEE1B, 0xEE1B, 0x4926, 0xEE20, 0xEE20, 0x3F94, 0xEE22, 0xEE22, 0x4927,
+ 0xEE2A, 0xEE2A, 0x3F9D, 0xEE30, 0xEE30, 0x4928, 0xEE31, 0xEE31, 0x3FA3,
+ 0xEE34, 0xEE34, 0x3FA6, 0xEE48, 0xEE48, 0x4929, 0xEE56, 0xEE56, 0x492A,
+ 0xEE5B, 0xEE5B, 0x492B, 0xEE5D, 0xEE5D, 0x3FCC, 0xEE60, 0xEE60, 0x492C,
+ 0xEE64, 0xEE64, 0x3FD2, 0xEE6A, 0xEE6A, 0x3FD8, 0xEE76, 0xEE76, 0x3FE4,
+ 0xEE7C, 0xEE7C, 0x3FEA, 0xEE7E, 0xEE7E, 0x492D, 0xEE91, 0xEE91, 0x3FFD,
+ 0xEE9C, 0xEE9C, 0x492F, 0xEEA1, 0xEEA6, 0x4931, 0xEEA7, 0xEEA7, 0x43B4,
+ 0xEEA8, 0xEEAA, 0x4937, 0xEEAC, 0xEEB1, 0x493A, 0xEEB4, 0xEEB4, 0x4942,
+ 0xEEB7, 0xEEB7, 0x4945, 0xF303, 0xF318, 0x44C9, 0xF325, 0xF325, 0x496D,
+ 0xF327, 0xF327, 0x496F, 0xF344, 0xF344, 0x498C, 0xF346, 0xF346, 0x498E,
+ 0xF34A, 0xF34B, 0x499C, 0xF3A0, 0xF3A1, 0x4534, 0xF3AC, 0xF3AC, 0x453B,
+ 0xF3F0, 0xF3F0, 0x4575, 0xF3F9, 0xF3FA, 0x457C, 0xF3FC, 0xF3FC, 0x457F,
+ 0xF408, 0xF40B, 0x4589, 0xF43D, 0xF43D, 0x45B5, 0xF440, 0xF442, 0x430B,
+ 0xF444, 0xF444, 0x430F, 0xF446, 0xF446, 0x4311, 0xF448, 0xF449, 0x4313,
+ 0xF44B, 0xF44B, 0x4316, 0xF44D, 0xF44D, 0x4318, 0xF450, 0xF452, 0x431B,
+ 0xF454, 0xF456, 0x431F, 0xF457, 0xF457, 0x45B7, 0xF45A, 0xF45A, 0x4325,
+ 0xF45B, 0xF45B, 0x45B8, 0xF45C, 0xF45F, 0x4327, 0xF461, 0xF463, 0x432C,
+ 0xF465, 0xF466, 0x4330, 0xF469, 0xF469, 0x4334, 0xF46C, 0xF46D, 0x4337,
+ 0xF46E, 0xF46E, 0x45B9, 0xF46F, 0xF46F, 0x433A, 0xF474, 0xF474, 0x45BA,
+ 0xF477, 0xF477, 0x45BB, 0xF478, 0xF478, 0x4343, 0xF479, 0xF479, 0x45BC,
+ 0xF47B, 0xF47B, 0x45BD, 0xF47C, 0xF47E, 0x4347, 0xF480, 0xF481, 0x434B,
+ 0xF483, 0xF483, 0x45BE, 0xF484, 0xF485, 0x434F, 0xF488, 0xF488, 0x4353,
+ 0xF48B, 0xF48B, 0x4356, 0xF48D, 0xF490, 0x4358, 0xF491, 0xF491, 0x45BF,
+ 0xF497, 0xF498, 0x4362, 0xF49B, 0xF49B, 0x4366, 0xF49E, 0xF49E, 0x4369,
+ 0xF4A4, 0xF4A6, 0x436F, 0xF4A7, 0xF4A7, 0x45C1, 0xF4A9, 0xF4AA, 0x4374,
+ 0xF4AD, 0xF4AD, 0x4378, 0xF4AF, 0xF4B0, 0x437A, 0xF4B2, 0xF4B2, 0x45C3,
+ 0xF4B3, 0xF4B4, 0x437E, 0xF4B7, 0xF4B7, 0x4382, 0xF4BA, 0xF4C0, 0x4385,
+ 0xF4C1, 0xF4C1, 0x45C4, 0xF4C3, 0xF4C5, 0x45C5, 0xF4C7, 0xF4CA, 0x45C9,
+ 0xF4CC, 0xF4CF, 0x45CE, 0xF4D1, 0xF4D5, 0x45D2, 0xF4D7, 0xF4D7, 0x45D8,
+ 0xF4D9, 0xF4DA, 0x45DA, 0xF4DB, 0xF4DC, 0x438C, 0xF4DD, 0xF4DE, 0x45DC,
+ 0xF4DF, 0xF4DF, 0x438E, 0xF4E0, 0xF4E0, 0x45DE, 0xF4E2, 0xF4E2, 0x45DF,
+ 0xF4E3, 0xF4E3, 0x4390, 0xF4E4, 0xF4E4, 0x45E0, 0xF4E5, 0xF4E5, 0x4391,
+ 0xF4E6, 0xF4E6, 0x45E1, 0xF4E7, 0xF4E9, 0x4392, 0xF4EF, 0xF4EF, 0x45E5,
+ 0xF4F2, 0xF4F2, 0x4397, 0xF4F3, 0xF4F3, 0x45E8, 0xF4F8, 0xF4F8, 0x45EB,
+ 0xF4FC, 0xF4FC, 0x45EE, 0xF4FE, 0xF4FF, 0x45F0, 0xF500, 0xF501, 0x45F2,
+ 0xF503, 0xF503, 0x45F4, 0xF505, 0xF505, 0x45F6, 0xF507, 0xF511, 0x45F8,
+ 0xF513, 0xF516, 0x4604, 0xF518, 0xF51D, 0x4609, 0xF51F, 0xF526, 0x4610,
+ 0xF52A, 0xF52A, 0x461B, 0xF533, 0xF534, 0x4624, 0xF53A, 0xF53B, 0x44E1,
+ 0xF53D, 0xF53D, 0x44E4, 0xF54E, 0xF54E, 0x44F5, 0xF553, 0xF553, 0x44FA,
+ 0xF556, 0xF556, 0x44FC, 0xF559, 0xF55A, 0x44FF, 0xF55E, 0xF55E, 0x4504,
+ 0xF565, 0xF565, 0x450B, 0xF56B, 0xF56B, 0x4511, 0xF572, 0xF572, 0x4518,
+ 0xF694, 0xF694, 0x467C, 0xF69E, 0xF69E, 0x4686, 0xF6AD, 0xF6AD, 0x4694,
+ 0xF6B0, 0xF6B0, 0x4697, 0xF7E5, 0xF7E6, 0x36AF, 0xF7E8, 0xF7E8, 0x36B2,
+ 0xF7EA, 0xF7EB, 0x36B4, 0xF7ED, 0xF7EE, 0x36B7, 0xFA0C, 0xFA0C, 0x0274,
+ 0xFA0D, 0xFA0D, 0x2381, 0xFE30, 0xFE30, 0x006D, 0xFE31, 0xFE31, 0x007A,
+ 0xFE33, 0xFE33, 0x35AF, 0xFE34, 0xFE34, 0x35B1, 0xFE35, 0xFE36, 0x0082,
+ 0xFE37, 0xFE38, 0x0086, 0xFE39, 0xFE3A, 0x008A, 0xFE3B, 0xFE3C, 0x008E,
+ 0xFE3D, 0xFE3E, 0x0092, 0xFE3F, 0xFE40, 0x0096, 0xFE41, 0xFE42, 0x009A,
+ 0xFE43, 0xFE44, 0x009E, 0xFE49, 0xFE4A, 0x00C7, 0xFE4B, 0xFE4C, 0x00CB,
+ 0xFE4D, 0xFE4E, 0x00C9, 0xFE4F, 0xFE4F, 0x35B2, 0xFE50, 0xFE50, 0x0070,
+ 0xFE52, 0xFE52, 0x0072, 0xFE54, 0xFE57, 0x0074, 0xFE59, 0xFE5E, 0x00A0,
+ 0xFE5F, 0xFE61, 0x00CD, 0xFE62, 0xFE66, 0x00DF, 0xFE69, 0xFE6B, 0x010C,
+ 0xFF01, 0xFF01, 0x006C, 0xFF02, 0xFF02, 0x36E4, 0xFF03, 0xFF03, 0x00AE,
+ 0xFF04, 0xFF04, 0x0103, 0xFF05, 0xFF05, 0x0108, 0xFF06, 0xFF06, 0x00AF,
+ 0xFF07, 0xFF07, 0x36E3, 0xFF08, 0xFF09, 0x0080, 0xFF0A, 0xFF0A, 0x00B0,
+ 0xFF0B, 0xFF0B, 0x00D0, 0xFF0C, 0xFF0C, 0x0064, 0xFF0D, 0xFF0D, 0x00D1,
+ 0xFF0E, 0xFF0E, 0x0067, 0xFF0F, 0xFF0F, 0x0101, 0xFF10, 0xFF19, 0x014D,
+ 0xFF1A, 0xFF1A, 0x006A, 0xFF1B, 0xFF1B, 0x0069, 0xFF1C, 0xFF1C, 0x00D6,
+ 0xFF1D, 0xFF1D, 0x00D8, 0xFF1E, 0xFF1E, 0x00D7, 0xFF1F, 0xFF1F, 0x006B,
+ 0xFF20, 0xFF20, 0x0109, 0xFF21, 0xFF3A, 0x016D, 0xFF3B, 0xFF3B, 0x35BE,
+ 0xFF3C, 0xFF3C, 0x0102, 0xFF3D, 0xFF3D, 0x35BF, 0xFF3E, 0xFF3E, 0x35B4,
+ 0xFF3F, 0xFF3F, 0x00C5, 0xFF41, 0xFF5A, 0x0187, 0xFF5B, 0xFF5B, 0x0084,
+ 0xFF5C, 0xFF5C, 0x0078, 0xFF5D, 0xFF5D, 0x0085, 0xFF64, 0xFF64, 0x0071,
+ 0xFFE2, 0xFFE2, 0x36E1, 0xFFE4, 0xFFE4, 0x36E2,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-V_3.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-V_3.cpp
new file mode 100644
index 0000000000..b77835c3f3
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UCS2-V_3.cpp
@@ -0,0 +1,15 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h"
+
+const FX_WORD g_FXCMAP_UniCNS_UCS2_V_3[13 * 3] = {
+ 0x2013, 0x2013, 0x0078, 0x2014, 0x2014, 0x007A, 0x2025, 0x2025,
+ 0x006D, 0x3008, 0x3009, 0x0096, 0x300A, 0x300B, 0x0092, 0x300C,
+ 0x300D, 0x009A, 0x300E, 0x300F, 0x009E, 0x3010, 0x3011, 0x008E,
+ 0x3014, 0x3015, 0x008A, 0xFE4F, 0xFE4F, 0x35B1, 0xFF08, 0xFF09,
+ 0x0082, 0xFF5B, 0xFF5B, 0x0086, 0xFF5D, 0xFF5D, 0x0087,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UTF16-H_0.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UTF16-H_0.cpp
new file mode 100644
index 0000000000..c30dc46568
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/CNS1/UniCNS-UTF16-H_0.cpp
@@ -0,0 +1,3245 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h"
+
+const FX_WORD g_FXCMAP_UniCNS_UTF16_H_0[14557 * 2] = {
+ 0x0020, 0x0001, 0x0021, 0x0002, 0x0022, 0x0003, 0x0023, 0x0004, 0x0024,
+ 0x0005, 0x0025, 0x0006, 0x0026, 0x0007, 0x0027, 0x0008, 0x0028, 0x0009,
+ 0x0029, 0x000A, 0x002A, 0x000B, 0x002B, 0x000C, 0x002C, 0x000D, 0x002D,
+ 0x000E, 0x002E, 0x000F, 0x002F, 0x0010, 0x0030, 0x0011, 0x0031, 0x0012,
+ 0x0032, 0x0013, 0x0033, 0x0014, 0x0034, 0x0015, 0x0035, 0x0016, 0x0036,
+ 0x0017, 0x0037, 0x0018, 0x0038, 0x0019, 0x0039, 0x001A, 0x003A, 0x001B,
+ 0x003B, 0x001C, 0x003C, 0x001D, 0x003D, 0x001E, 0x003E, 0x001F, 0x003F,
+ 0x0020, 0x0040, 0x0021, 0x0041, 0x0022, 0x0042, 0x0023, 0x0043, 0x0024,
+ 0x0044, 0x0025, 0x0045, 0x0026, 0x0046, 0x0027, 0x0047, 0x0028, 0x0048,
+ 0x0029, 0x0049, 0x002A, 0x004A, 0x002B, 0x004B, 0x002C, 0x004C, 0x002D,
+ 0x004D, 0x002E, 0x004E, 0x002F, 0x004F, 0x0030, 0x0050, 0x0031, 0x0051,
+ 0x0032, 0x0052, 0x0033, 0x0053, 0x0034, 0x0054, 0x0035, 0x0055, 0x0036,
+ 0x0056, 0x0037, 0x0057, 0x0038, 0x0058, 0x0039, 0x0059, 0x003A, 0x005A,
+ 0x003B, 0x005B, 0x003C, 0x005C, 0x003D, 0x005D, 0x003E, 0x005E, 0x003F,
+ 0x005F, 0x0040, 0x0060, 0x0041, 0x0061, 0x0042, 0x0062, 0x0043, 0x0063,
+ 0x0044, 0x0064, 0x0045, 0x0065, 0x0046, 0x0066, 0x0047, 0x0067, 0x0048,
+ 0x0068, 0x0049, 0x0069, 0x004A, 0x006A, 0x004B, 0x006B, 0x004C, 0x006C,
+ 0x004D, 0x006D, 0x004E, 0x006E, 0x004F, 0x006F, 0x0050, 0x0070, 0x0051,
+ 0x0071, 0x0052, 0x0072, 0x0053, 0x0073, 0x0054, 0x0074, 0x0055, 0x0075,
+ 0x0056, 0x0076, 0x0057, 0x0077, 0x0058, 0x0078, 0x0059, 0x0079, 0x005A,
+ 0x007A, 0x005B, 0x007B, 0x005C, 0x007C, 0x005D, 0x007D, 0x005E, 0x007E,
+ 0x005F, 0x00A2, 0x0106, 0x00A3, 0x0107, 0x00A5, 0x0104, 0x00A7, 0x00B2,
+ 0x00A8, 0x35B3, 0x00AC, 0x36E1, 0x00AF, 0x00C3, 0x00B0, 0x0118, 0x00B1,
+ 0x00D4, 0x00B7, 0x0073, 0x00D7, 0x00D2, 0x00F7, 0x00D3, 0x02C6, 0x35B4,
+ 0x02C7, 0x01F8, 0x02CA, 0x01F7, 0x02CB, 0x01F9, 0x02CD, 0x00C6, 0x02D9,
+ 0x01F6, 0x0308, 0x35B3, 0x0391, 0x01A1, 0x0392, 0x01A2, 0x0393, 0x01A3,
+ 0x0394, 0x01A4, 0x0395, 0x01A5, 0x0396, 0x01A6, 0x0397, 0x01A7, 0x0398,
+ 0x01A8, 0x0399, 0x01A9, 0x039A, 0x01AA, 0x039B, 0x01AB, 0x039C, 0x01AC,
+ 0x039D, 0x01AD, 0x039E, 0x01AE, 0x039F, 0x01AF, 0x03A0, 0x01B0, 0x03A1,
+ 0x01B1, 0x03A3, 0x01B2, 0x03A4, 0x01B3, 0x03A5, 0x01B4, 0x03A6, 0x01B5,
+ 0x03A7, 0x01B6, 0x03A8, 0x01B7, 0x03A9, 0x01B8, 0x03B1, 0x01B9, 0x03B2,
+ 0x01BA, 0x03B3, 0x01BB, 0x03B4, 0x01BC, 0x03B5, 0x01BD, 0x03B6, 0x01BE,
+ 0x03B7, 0x01BF, 0x03B8, 0x01C0, 0x03B9, 0x01C1, 0x03BA, 0x01C2, 0x03BB,
+ 0x01C3, 0x03BC, 0x01C4, 0x03BD, 0x01C5, 0x03BE, 0x01C6, 0x03BF, 0x01C7,
+ 0x03C0, 0x01C8, 0x03C1, 0x01C9, 0x03C3, 0x01CA, 0x03C4, 0x01CB, 0x03C5,
+ 0x01CC, 0x03C6, 0x01CD, 0x03C7, 0x01CE, 0x03C8, 0x01CF, 0x03C9, 0x01D0,
+ 0x0401, 0x3670, 0x0410, 0x366A, 0x0411, 0x366B, 0x0412, 0x366C, 0x0413,
+ 0x366D, 0x0414, 0x366E, 0x0415, 0x366F, 0x0416, 0x3671, 0x0417, 0x3672,
+ 0x0418, 0x3673, 0x0419, 0x3674, 0x041A, 0x3675, 0x041B, 0x3676, 0x041C,
+ 0x3677, 0x041D, 0x3678, 0x041E, 0x3679, 0x041F, 0x367A, 0x0420, 0x367B,
+ 0x0421, 0x367C, 0x0422, 0x367D, 0x0423, 0x367E, 0x0424, 0x367F, 0x0425,
+ 0x3680, 0x0426, 0x3681, 0x0427, 0x3682, 0x0428, 0x3683, 0x0429, 0x3684,
+ 0x042A, 0x3685, 0x042B, 0x3686, 0x042C, 0x3687, 0x042D, 0x3688, 0x042E,
+ 0x3689, 0x042F, 0x368A, 0x0430, 0x368B, 0x0431, 0x368C, 0x0432, 0x368D,
+ 0x0433, 0x368E, 0x0434, 0x368F, 0x0435, 0x3690, 0x0436, 0x3692, 0x0437,
+ 0x3693, 0x0438, 0x3694, 0x0439, 0x3695, 0x043A, 0x3696, 0x043B, 0x3697,
+ 0x043C, 0x3698, 0x043D, 0x3699, 0x043E, 0x369A, 0x043F, 0x369B, 0x0440,
+ 0x369C, 0x0441, 0x369D, 0x0442, 0x369E, 0x0443, 0x369F, 0x0444, 0x36A0,
+ 0x0445, 0x36A1, 0x0446, 0x36A2, 0x0447, 0x36A3, 0x0448, 0x36A4, 0x0449,
+ 0x36A5, 0x044A, 0x36A6, 0x044B, 0x36A7, 0x044C, 0x36A8, 0x044D, 0x36A9,
+ 0x044E, 0x36AA, 0x044F, 0x36AB, 0x0451, 0x3691, 0x2013, 0x0079, 0x2014,
+ 0x007B, 0x2018, 0x00A6, 0x2019, 0x00A7, 0x201C, 0x00A8, 0x201D, 0x00A9,
+ 0x2022, 0x0068, 0x2025, 0x006F, 0x2026, 0x006E, 0x2027, 0x0068, 0x2032,
+ 0x00AD, 0x2035, 0x00AC, 0x203B, 0x00B1, 0x203E, 0x00C3, 0x2103, 0x010A,
+ 0x2105, 0x00C2, 0x2109, 0x010B, 0x2116, 0x36E6, 0x2121, 0x36E7, 0x2160,
+ 0x0157, 0x2161, 0x0158, 0x2162, 0x0159, 0x2163, 0x015A, 0x2164, 0x015B,
+ 0x2165, 0x015C, 0x2166, 0x015D, 0x2167, 0x015E, 0x2168, 0x015F, 0x2169,
+ 0x0160, 0x2170, 0x020E, 0x2171, 0x020F, 0x2172, 0x0210, 0x2173, 0x0211,
+ 0x2174, 0x0212, 0x2175, 0x0213, 0x2176, 0x0214, 0x2177, 0x0215, 0x2178,
+ 0x0216, 0x2179, 0x0217, 0x2190, 0x00F8, 0x2191, 0x00F5, 0x2192, 0x00F7,
+ 0x2193, 0x00F6, 0x2196, 0x00F9, 0x2197, 0x00FA, 0x2198, 0x00FC, 0x2199,
+ 0x00FB, 0x21B8, 0x36AD, 0x21B9, 0x36AE, 0x21E7, 0x36AC, 0x2215, 0x0101,
+ 0x221A, 0x00D5, 0x221E, 0x00DC, 0x221F, 0x00E9, 0x2220, 0x00E8, 0x2223,
+ 0x00FE, 0x2225, 0x00FD, 0x2229, 0x00E5, 0x222A, 0x00E6, 0x222B, 0x00ED,
+ 0x222E, 0x00EE, 0x2234, 0x00F0, 0x2235, 0x00EF, 0x223C, 0x00E4, 0x2252,
+ 0x00DD, 0x2260, 0x00DB, 0x2261, 0x00DE, 0x2266, 0x00D9, 0x2267, 0x00DA,
+ 0x2295, 0x00F3, 0x2299, 0x00F4, 0x22A5, 0x00E7, 0x22BF, 0x00EA, 0x22EF,
+ 0x006E, 0x2400, 0x0232, 0x2401, 0x0233, 0x2402, 0x0234, 0x2403, 0x0235,
+ 0x2404, 0x0236, 0x2405, 0x0237, 0x2406, 0x0238, 0x2407, 0x0239, 0x2408,
+ 0x023A, 0x2409, 0x023B, 0x240A, 0x023C, 0x240B, 0x023D, 0x240C, 0x023E,
+ 0x240D, 0x023F, 0x240E, 0x0240, 0x240F, 0x0241, 0x2410, 0x0242, 0x2411,
+ 0x0243, 0x2412, 0x0244, 0x2413, 0x0245, 0x2414, 0x0246, 0x2415, 0x0247,
+ 0x2416, 0x0248, 0x2417, 0x0249, 0x2418, 0x024A, 0x2419, 0x024B, 0x241A,
+ 0x024C, 0x241B, 0x024D, 0x241C, 0x024E, 0x241D, 0x024F, 0x241E, 0x0250,
+ 0x241F, 0x0251, 0x2421, 0x0252, 0x2460, 0x01FA, 0x2461, 0x01FB, 0x2462,
+ 0x01FC, 0x2463, 0x01FD, 0x2464, 0x01FE, 0x2465, 0x01FF, 0x2466, 0x0200,
+ 0x2467, 0x0201, 0x2468, 0x0202, 0x2469, 0x0203, 0x2474, 0x0204, 0x2475,
+ 0x0205, 0x2476, 0x0206, 0x2477, 0x0207, 0x2478, 0x0208, 0x2479, 0x0209,
+ 0x247A, 0x020A, 0x247B, 0x020B, 0x247C, 0x020C, 0x247D, 0x020D, 0x2500,
+ 0x0137, 0x2502, 0x0138, 0x250C, 0x013A, 0x2510, 0x013B, 0x2514, 0x013C,
+ 0x2518, 0x013D, 0x251C, 0x0135, 0x2524, 0x0134, 0x252C, 0x0133, 0x2534,
+ 0x0132, 0x253C, 0x0131, 0x2550, 0x0142, 0x2551, 0x370A, 0x2552, 0x36F8,
+ 0x2553, 0x3701, 0x2554, 0x36EF, 0x2555, 0x36FA, 0x2556, 0x3703, 0x2557,
+ 0x36F1, 0x2558, 0x36FE, 0x2559, 0x3707, 0x255A, 0x36F5, 0x255B, 0x3700,
+ 0x255C, 0x3709, 0x255D, 0x36F7, 0x255E, 0x0143, 0x255F, 0x3704, 0x2560,
+ 0x36F2, 0x2561, 0x0145, 0x2562, 0x3706, 0x2563, 0x36F4, 0x2564, 0x36F9,
+ 0x2565, 0x3702, 0x2566, 0x36F0, 0x2567, 0x36FF, 0x2568, 0x3708, 0x2569,
+ 0x36F6, 0x256A, 0x0144, 0x256B, 0x3705, 0x256C, 0x36F3, 0x256D, 0x013E,
+ 0x256E, 0x013F, 0x256F, 0x0141, 0x2570, 0x0140, 0x2571, 0x014A, 0x2572,
+ 0x014B, 0x2573, 0x014C, 0x2574, 0x35B0, 0x2581, 0x0122, 0x2582, 0x0123,
+ 0x2583, 0x0124, 0x2584, 0x0125, 0x2585, 0x0126, 0x2586, 0x0127, 0x2587,
+ 0x0128, 0x2588, 0x0129, 0x2589, 0x0130, 0x258A, 0x012F, 0x258B, 0x012E,
+ 0x258C, 0x012D, 0x258D, 0x012C, 0x258E, 0x012B, 0x258F, 0x012A, 0x2593,
+ 0x3710, 0x2594, 0x0136, 0x2595, 0x0139, 0x25A0, 0x00BE, 0x25A1, 0x00BD,
+ 0x25B2, 0x00B7, 0x25B3, 0x00B6, 0x25BC, 0x00C0, 0x25BD, 0x00BF, 0x25C6,
+ 0x00BC, 0x25C7, 0x00BB, 0x25CB, 0x00B4, 0x25CE, 0x00B8, 0x25CF, 0x00B5,
+ 0x25E2, 0x0146, 0x25E3, 0x0147, 0x25E4, 0x0149, 0x25E5, 0x0148, 0x2605,
+ 0x00BA, 0x2606, 0x00B9, 0x2609, 0x00F4, 0x2640, 0x00F1, 0x2641, 0x00F3,
+ 0x2642, 0x00F2, 0x273D, 0x35C0, 0x2F00, 0x0253, 0x2F01, 0x0218, 0x2F02,
+ 0x0219, 0x2F03, 0x021A, 0x2F04, 0x0254, 0x2F05, 0x021B, 0x2F06, 0x025A,
+ 0x2F07, 0x021C, 0x2F08, 0x025B, 0x2F09, 0x025C, 0x2F0A, 0x025D, 0x2F0B,
+ 0x025E, 0x2F0C, 0x021D, 0x2F0D, 0x021E, 0x2F0E, 0x021F, 0x2F0F, 0x025F,
+ 0x2F10, 0x176E, 0x2F11, 0x0260, 0x2F12, 0x0262, 0x2F13, 0x0220, 0x2F14,
+ 0x0263, 0x2F15, 0x176F, 0x2F16, 0x0221, 0x2F17, 0x0264, 0x2F18, 0x0265,
+ 0x2F19, 0x0222, 0x2F1A, 0x1770, 0x2F1B, 0x0223, 0x2F1C, 0x0266, 0x2F1D,
+ 0x0279, 0x2F1E, 0x1775, 0x2F1F, 0x027A, 0x2F20, 0x027B, 0x2F21, 0x0224,
+ 0x2F22, 0x0224, 0x2F23, 0x027C, 0x2F24, 0x027D, 0x2F25, 0x027E, 0x2F26,
+ 0x027F, 0x2F27, 0x0225, 0x2F28, 0x0282, 0x2F29, 0x0283, 0x2F2A, 0x0284,
+ 0x2F2B, 0x0285, 0x2F2C, 0x1776, 0x2F2D, 0x0286, 0x2F2E, 0x0226, 0x2F2F,
+ 0x0288, 0x2F30, 0x0289, 0x2F31, 0x028C, 0x2F32, 0x028D, 0x2F33, 0x0227,
+ 0x2F34, 0x0228, 0x2F35, 0x0229, 0x2F36, 0x028E, 0x2F37, 0x028F, 0x2F38,
+ 0x0290, 0x2F39, 0x022A, 0x2F3A, 0x022B, 0x2F3B, 0x1777, 0x2F3C, 0x02D0,
+ 0x2F3D, 0x02D1, 0x2F3E, 0x02D2, 0x2F3F, 0x02D3, 0x2F40, 0x02D5, 0x2F41,
+ 0x022C, 0x2F42, 0x02D6, 0x2F43, 0x02D7, 0x2F44, 0x02D8, 0x2F45, 0x02D9,
+ 0x2F46, 0x022D, 0x2F47, 0x02DA, 0x2F48, 0x02DB, 0x2F49, 0x02DC, 0x2F4A,
+ 0x02DD, 0x2F4B, 0x02DE, 0x2F4C, 0x02DF, 0x2F4D, 0x02E0, 0x2F4E, 0x178A,
+ 0x2F4F, 0x02E1, 0x2F50, 0x02E2, 0x2F51, 0x02E3, 0x2F52, 0x02E4, 0x2F53,
+ 0x178C, 0x2F54, 0x02E5, 0x2F55, 0x02E6, 0x2F56, 0x02E7, 0x2F57, 0x02E8,
+ 0x2F58, 0x02E9, 0x2F59, 0x178D, 0x2F5A, 0x02EA, 0x2F5B, 0x02EB, 0x2F5C,
+ 0x02EC, 0x2F5D, 0x02ED, 0x2F5E, 0x0356, 0x2F5F, 0x0357, 0x2F60, 0x0358,
+ 0x2F61, 0x0359, 0x2F62, 0x035A, 0x2F63, 0x035B, 0x2F64, 0x035C, 0x2F65,
+ 0x035E, 0x2F66, 0x0362, 0x2F67, 0x022E, 0x2F68, 0x022F, 0x2F69, 0x0363,
+ 0x2F6A, 0x0364, 0x2F6B, 0x0365, 0x2F6C, 0x0366, 0x2F6D, 0x0367, 0x2F6E,
+ 0x0368, 0x2F6F, 0x0369, 0x2F70, 0x036A, 0x2F71, 0x17B2, 0x2F72, 0x036B,
+ 0x2F73, 0x036C, 0x2F74, 0x036D, 0x2F75, 0x03F6, 0x2F76, 0x03F7, 0x2F77,
+ 0x03F8, 0x2F78, 0x03F9, 0x2F79, 0x1812, 0x2F7A, 0x03FA, 0x2F7B, 0x03FB,
+ 0x2F7C, 0x03FC, 0x2F7D, 0x03FE, 0x2F7E, 0x03FF, 0x2F7F, 0x0400, 0x2F80,
+ 0x0401, 0x2F81, 0x0402, 0x2F82, 0x0405, 0x2F83, 0x0406, 0x2F84, 0x0407,
+ 0x2F85, 0x0408, 0x2F86, 0x0409, 0x2F87, 0x040A, 0x2F88, 0x040B, 0x2F89,
+ 0x040C, 0x2F8A, 0x040D, 0x2F8B, 0x1813, 0x2F8C, 0x1818, 0x2F8D, 0x040F,
+ 0x2F8E, 0x0410, 0x2F8F, 0x0411, 0x2F90, 0x0412, 0x2F91, 0x1819, 0x2F92,
+ 0x0508, 0x2F93, 0x0509, 0x2F94, 0x050A, 0x2F95, 0x050B, 0x2F96, 0x050C,
+ 0x2F97, 0x050D, 0x2F98, 0x18E7, 0x2F99, 0x050E, 0x2F9A, 0x050F, 0x2F9B,
+ 0x0510, 0x2F9C, 0x0511, 0x2F9D, 0x0512, 0x2F9E, 0x0513, 0x2F9F, 0x0514,
+ 0x2FA0, 0x0515, 0x2FA1, 0x0230, 0x2FA2, 0x051B, 0x2FA3, 0x0520, 0x2FA4,
+ 0x0521, 0x2FA5, 0x0522, 0x2FA6, 0x0696, 0x2FA7, 0x0697, 0x2FA8, 0x0698,
+ 0x2FA9, 0x0699, 0x2FAA, 0x0231, 0x2FAB, 0x069F, 0x2FAC, 0x06A0, 0x2FAE,
+ 0x06A2, 0x2FAF, 0x0826, 0x2FB0, 0x0827, 0x2FB1, 0x0828, 0x2FB2, 0x0829,
+ 0x2FB3, 0x082A, 0x2FB4, 0x082B, 0x2FB5, 0x082C, 0x2FB6, 0x082D, 0x2FB7,
+ 0x082E, 0x2FB8, 0x082F, 0x2FB9, 0x0830, 0x2FBA, 0x09F5, 0x2FBB, 0x09F6,
+ 0x2FBC, 0x09F7, 0x2FBD, 0x1E33, 0x2FBE, 0x09F8, 0x2FBF, 0x1E34, 0x2FC0,
+ 0x09F9, 0x2FC1, 0x09FA, 0x2FC2, 0x0BE1, 0x2FC3, 0x0BE2, 0x2FC4, 0x0BE3,
+ 0x2FC5, 0x0BE4, 0x2FC6, 0x0BE5, 0x2FC7, 0x0BE6, 0x2FC8, 0x0DBB, 0x2FC9,
+ 0x0DBC, 0x2FCA, 0x0DBD, 0x2FCB, 0x2360, 0x2FCC, 0x2612, 0x2FCD, 0x0F7B,
+ 0x2FCE, 0x0F7C, 0x2FCF, 0x0F7D, 0x2FD0, 0x1100, 0x2FD1, 0x1101, 0x2FD2,
+ 0x1289, 0x2FD3, 0x13B2, 0x2FD4, 0x13B3, 0x2FD5, 0x2F0D, 0x3000, 0x0063,
+ 0x3001, 0x0065, 0x3002, 0x0066, 0x3003, 0x00B3, 0x3005, 0x35BA, 0x3006,
+ 0x35BB, 0x3007, 0x35BC, 0x3008, 0x0094, 0x3009, 0x0095, 0x300A, 0x0090,
+ 0x300B, 0x0091, 0x300C, 0x0098, 0x300D, 0x0099, 0x300E, 0x009C, 0x300F,
+ 0x009D, 0x3010, 0x008C, 0x3011, 0x008D, 0x3012, 0x0105, 0x3014, 0x0088,
+ 0x3015, 0x0089, 0x301D, 0x00AA, 0x301E, 0x00AB, 0x3021, 0x0161, 0x3022,
+ 0x0162, 0x3023, 0x0163, 0x3024, 0x0164, 0x3025, 0x0165, 0x3026, 0x0166,
+ 0x3027, 0x0167, 0x3028, 0x0168, 0x3029, 0x0169, 0x3038, 0x016A, 0x3039,
+ 0x016B, 0x303A, 0x016C, 0x3041, 0x35C1, 0x3042, 0x35C2, 0x3043, 0x35C3,
+ 0x3044, 0x35C4, 0x3045, 0x35C5, 0x3046, 0x35C6, 0x3047, 0x35C7, 0x3048,
+ 0x35C8, 0x3049, 0x35C9, 0x304A, 0x35CA, 0x304B, 0x35CB, 0x304C, 0x35CC,
+ 0x304D, 0x35CD, 0x304E, 0x35CE, 0x304F, 0x35CF, 0x3050, 0x35D0, 0x3051,
+ 0x35D1, 0x3052, 0x35D2, 0x3053, 0x35D3, 0x3054, 0x35D4, 0x3055, 0x35D5,
+ 0x3056, 0x35D6, 0x3057, 0x35D7, 0x3058, 0x35D8, 0x3059, 0x35D9, 0x305A,
+ 0x35DA, 0x305B, 0x35DB, 0x305C, 0x35DC, 0x305D, 0x35DD, 0x305E, 0x35DE,
+ 0x305F, 0x35DF, 0x3060, 0x35E0, 0x3061, 0x35E1, 0x3062, 0x35E2, 0x3063,
+ 0x35E3, 0x3064, 0x35E4, 0x3065, 0x35E5, 0x3066, 0x35E6, 0x3067, 0x35E7,
+ 0x3068, 0x35E8, 0x3069, 0x35E9, 0x306A, 0x35EA, 0x306B, 0x35EB, 0x306C,
+ 0x35EC, 0x306D, 0x35ED, 0x306E, 0x35EE, 0x306F, 0x35EF, 0x3070, 0x35F0,
+ 0x3071, 0x35F1, 0x3072, 0x35F2, 0x3073, 0x35F3, 0x3074, 0x35F4, 0x3075,
+ 0x35F5, 0x3076, 0x35F6, 0x3077, 0x35F7, 0x3078, 0x35F8, 0x3079, 0x35F9,
+ 0x307A, 0x35FA, 0x307B, 0x35FB, 0x307C, 0x35FC, 0x307D, 0x35FD, 0x307E,
+ 0x35FE, 0x307F, 0x35FF, 0x3080, 0x3600, 0x3081, 0x3601, 0x3082, 0x3602,
+ 0x3083, 0x3603, 0x3084, 0x3604, 0x3085, 0x3605, 0x3086, 0x3606, 0x3087,
+ 0x3607, 0x3088, 0x3608, 0x3089, 0x3609, 0x308A, 0x360A, 0x308B, 0x360B,
+ 0x308C, 0x360C, 0x308D, 0x360D, 0x308E, 0x360E, 0x308F, 0x360F, 0x3090,
+ 0x3610, 0x3091, 0x3611, 0x3092, 0x3612, 0x3093, 0x3613, 0x309D, 0x35B7,
+ 0x309E, 0x35B8, 0x30A1, 0x3614, 0x30A2, 0x3615, 0x30A3, 0x3616, 0x30A4,
+ 0x3617, 0x30A5, 0x3618, 0x30A6, 0x3619, 0x30A7, 0x361A, 0x30A8, 0x361B,
+ 0x30A9, 0x361C, 0x30AA, 0x361D, 0x30AB, 0x361E, 0x30AC, 0x361F, 0x30AD,
+ 0x3620, 0x30AE, 0x3621, 0x30AF, 0x3622, 0x30B0, 0x3623, 0x30B1, 0x3624,
+ 0x30B2, 0x3625, 0x30B3, 0x3626, 0x30B4, 0x3627, 0x30B5, 0x3628, 0x30B6,
+ 0x3629, 0x30B7, 0x362A, 0x30B8, 0x362B, 0x30B9, 0x362C, 0x30BA, 0x362D,
+ 0x30BB, 0x362E, 0x30BC, 0x362F, 0x30BD, 0x3630, 0x30BE, 0x3631, 0x30BF,
+ 0x3632, 0x30C0, 0x3633, 0x30C1, 0x3634, 0x30C2, 0x3635, 0x30C3, 0x3636,
+ 0x30C4, 0x3637, 0x30C5, 0x3638, 0x30C6, 0x3639, 0x30C7, 0x363A, 0x30C8,
+ 0x363B, 0x30C9, 0x363C, 0x30CA, 0x363D, 0x30CB, 0x363E, 0x30CC, 0x363F,
+ 0x30CD, 0x3640, 0x30CE, 0x3641, 0x30CF, 0x3642, 0x30D0, 0x3643, 0x30D1,
+ 0x3644, 0x30D2, 0x3645, 0x30D3, 0x3646, 0x30D4, 0x3647, 0x30D5, 0x3648,
+ 0x30D6, 0x3649, 0x30D7, 0x364A, 0x30D8, 0x364B, 0x30D9, 0x364C, 0x30DA,
+ 0x364D, 0x30DB, 0x364E, 0x30DC, 0x364F, 0x30DD, 0x3650, 0x30DE, 0x3651,
+ 0x30DF, 0x3652, 0x30E0, 0x3653, 0x30E1, 0x3654, 0x30E2, 0x3655, 0x30E3,
+ 0x3656, 0x30E4, 0x3657, 0x30E5, 0x3658, 0x30E6, 0x3659, 0x30E7, 0x365A,
+ 0x30E8, 0x365B, 0x30E9, 0x365C, 0x30EA, 0x365D, 0x30EB, 0x365E, 0x30EC,
+ 0x365F, 0x30ED, 0x3660, 0x30EE, 0x3661, 0x30EF, 0x3662, 0x30F0, 0x3663,
+ 0x30F1, 0x3664, 0x30F2, 0x3665, 0x30F3, 0x3666, 0x30F4, 0x3667, 0x30F5,
+ 0x3668, 0x30F6, 0x3669, 0x30FC, 0x35BD, 0x30FD, 0x35B5, 0x30FE, 0x35B6,
+ 0x3105, 0x01D1, 0x3106, 0x01D2, 0x3107, 0x01D3, 0x3108, 0x01D4, 0x3109,
+ 0x01D5, 0x310A, 0x01D6, 0x310B, 0x01D7, 0x310C, 0x01D8, 0x310D, 0x01D9,
+ 0x310E, 0x01DA, 0x310F, 0x01DB, 0x3110, 0x01DC, 0x3111, 0x01DD, 0x3112,
+ 0x01DE, 0x3113, 0x01DF, 0x3114, 0x01E0, 0x3115, 0x01E1, 0x3116, 0x01E2,
+ 0x3117, 0x01E3, 0x3118, 0x01E4, 0x3119, 0x01E5, 0x311A, 0x01E6, 0x311B,
+ 0x01E7, 0x311C, 0x01E8, 0x311D, 0x01E9, 0x311E, 0x01EA, 0x311F, 0x01EB,
+ 0x3120, 0x01EC, 0x3121, 0x01ED, 0x3122, 0x01EE, 0x3123, 0x01EF, 0x3124,
+ 0x01F0, 0x3125, 0x01F1, 0x3126, 0x01F2, 0x3127, 0x01F3, 0x3128, 0x01F4,
+ 0x3129, 0x01F5, 0x3231, 0x36E5, 0x32A3, 0x00C1, 0x338E, 0x0115, 0x338F,
+ 0x0116, 0x339C, 0x0110, 0x339D, 0x0111, 0x339E, 0x0112, 0x33A1, 0x0114,
+ 0x33C4, 0x0117, 0x33CE, 0x0113, 0x33D1, 0x00EC, 0x33D2, 0x00EB, 0x33D5,
+ 0x010F, 0x361D, 0x36B7, 0x4491, 0x36B4, 0x4E00, 0x0253, 0x4E01, 0x0255,
+ 0x4E03, 0x0256, 0x4E07, 0x1771, 0x4E08, 0x0269, 0x4E09, 0x0267, 0x4E0A,
+ 0x026A, 0x4E0B, 0x0268, 0x4E0C, 0x1772, 0x4E0D, 0x0294, 0x4E0E, 0x177A,
+ 0x4E0F, 0x1778, 0x4E10, 0x0293, 0x4E11, 0x0292, 0x4E14, 0x02F2, 0x4E15,
+ 0x02F1, 0x4E16, 0x02F0, 0x4E18, 0x02F3, 0x4E19, 0x02EF, 0x4E1E, 0x036E,
+ 0x4E1F, 0x036F, 0x4E26, 0x0528, 0x4E28, 0x0218, 0x4E2B, 0x026B, 0x4E2D,
+ 0x0295, 0x4E2E, 0x177B, 0x4E30, 0x0296, 0x4E31, 0x178E, 0x4E32, 0x0415,
+ 0x4E33, 0x18F4, 0x4E36, 0x0219, 0x4E38, 0x026C, 0x4E39, 0x0297, 0x4E3B,
+ 0x02F4, 0x4E3C, 0x178F, 0x4E3F, 0x021A, 0x4E41, 0x36AF, 0x4E42, 0x176C,
+ 0x4E43, 0x0257, 0x4E45, 0x026E, 0x4E47, 0x1773, 0x4E48, 0x026F, 0x4E4B,
+ 0x0298, 0x4E4D, 0x02F5, 0x4E4E, 0x02F7, 0x4E4F, 0x02F6, 0x4E52, 0x0370,
+ 0x4E53, 0x0371, 0x4E56, 0x0529, 0x4E58, 0x0831, 0x4E59, 0x0254, 0x4E5A,
+ 0x36B1, 0x4E5C, 0x176D, 0x4E5D, 0x0258, 0x4E5E, 0x0271, 0x4E5F, 0x0270,
+ 0x4E69, 0x0372, 0x4E73, 0x052A, 0x4E7E, 0x09FB, 0x4E7F, 0x1E35, 0x4E82,
+ 0x0DBE, 0x4E83, 0x2361, 0x4E84, 0x2362, 0x4E85, 0x021B, 0x4E86, 0x0259,
+ 0x4E88, 0x029A, 0x4E8B, 0x052B, 0x4E8C, 0x025A, 0x4E8D, 0x1774, 0x4E8E,
+ 0x0272, 0x4E91, 0x029B, 0x4E92, 0x029D, 0x4E93, 0x177C, 0x4E94, 0x029E,
+ 0x4E95, 0x029C, 0x4E99, 0x0373, 0x4E9B, 0x052C, 0x4E9E, 0x052D, 0x4E9F,
+ 0x06A3, 0x4EA0, 0x021C, 0x4EA1, 0x0273, 0x4EA2, 0x029F, 0x4EA4, 0x0374,
+ 0x4EA5, 0x0376, 0x4EA6, 0x0375, 0x4EA8, 0x0416, 0x4EAB, 0x052E, 0x4EAC,
+ 0x052F, 0x4EAD, 0x06A4, 0x4EAE, 0x06A5, 0x4EB3, 0x0832, 0x4EB6, 0x2363,
+ 0x4EB9, 0x3377, 0x4EBA, 0x025B, 0x4EC0, 0x02A1, 0x4EC1, 0x02A0, 0x4EC2,
+ 0x177D, 0x4EC3, 0x02A2, 0x4EC4, 0x02A8, 0x4EC6, 0x02A3, 0x4EC7, 0x02A4,
+ 0x4EC8, 0x177F, 0x4EC9, 0x177E, 0x4ECA, 0x02A6, 0x4ECB, 0x02A7, 0x4ECD,
+ 0x02A5, 0x4ED4, 0x02FA, 0x4ED5, 0x02FB, 0x4ED6, 0x02FC, 0x4ED7, 0x02FD,
+ 0x4ED8, 0x02F9, 0x4ED9, 0x0300, 0x4EDA, 0x1795, 0x4EDC, 0x1791, 0x4EDD,
+ 0x1794, 0x4EDE, 0x0301, 0x4EDF, 0x0311, 0x4EE1, 0x1793, 0x4EE3, 0x02FE,
+ 0x4EE4, 0x02FF, 0x4EE5, 0x02F8, 0x4EE8, 0x1790, 0x4EE9, 0x1792, 0x4EF0,
+ 0x0383, 0x4EF1, 0x17BA, 0x4EF2, 0x0380, 0x4EF3, 0x0384, 0x4EF4, 0x17C4,
+ 0x4EF5, 0x17B8, 0x4EF6, 0x0381, 0x4EF7, 0x17BC, 0x4EFB, 0x0382, 0x4EFD,
+ 0x0385, 0x4EFF, 0x0377, 0x4F00, 0x17BB, 0x4F01, 0x0386, 0x4F02, 0x17BF,
+ 0x4F04, 0x17C3, 0x4F05, 0x17C0, 0x4F08, 0x17BD, 0x4F09, 0x0378, 0x4F0A,
+ 0x037A, 0x4F0B, 0x0387, 0x4F0D, 0x037C, 0x4F0E, 0x17B5, 0x4F0F, 0x037F,
+ 0x4F10, 0x037D, 0x4F11, 0x037E, 0x4F12, 0x17C5, 0x4F13, 0x17C2, 0x4F14,
+ 0x17B9, 0x4F15, 0x037B, 0x4F18, 0x17B6, 0x4F19, 0x0379, 0x4F1D, 0x17BE,
+ 0x4F22, 0x17C1, 0x4F2C, 0x17B7, 0x4F2D, 0x182F, 0x4F2F, 0x042C, 0x4F30,
+ 0x041F, 0x4F33, 0x1830, 0x4F34, 0x041C, 0x4F36, 0x042E, 0x4F38, 0x0424,
+ 0x4F3A, 0x0423, 0x4F3B, 0x1824, 0x4F3C, 0x0427, 0x4F3D, 0x0422, 0x4F3E,
+ 0x1829, 0x4F3F, 0x1831, 0x4F41, 0x182D, 0x4F43, 0x0425, 0x4F46, 0x0428,
+ 0x4F47, 0x0419, 0x4F48, 0x0431, 0x4F49, 0x1826, 0x4F4C, 0x1900, 0x4F4D,
+ 0x0417, 0x4F4E, 0x042D, 0x4F4F, 0x0418, 0x4F50, 0x0420, 0x4F51, 0x0421,
+ 0x4F52, 0x182B, 0x4F53, 0x1827, 0x4F54, 0x0426, 0x4F55, 0x041E, 0x4F56,
+ 0x1823, 0x4F57, 0x041A, 0x4F58, 0x182E, 0x4F59, 0x042F, 0x4F5A, 0x0432,
+ 0x4F5B, 0x041D, 0x4F5C, 0x042A, 0x4F5D, 0x0430, 0x4F5E, 0x041B, 0x4F5F,
+ 0x182C, 0x4F60, 0x042B, 0x4F61, 0x1832, 0x4F62, 0x1825, 0x4F63, 0x0429,
+ 0x4F64, 0x1828, 0x4F67, 0x182A, 0x4F69, 0x053D, 0x4F6A, 0x1902, 0x4F6B,
+ 0x190E, 0x4F6C, 0x0535, 0x4F6E, 0x190F, 0x4F6F, 0x0530, 0x4F70, 0x053A,
+ 0x4F73, 0x0533, 0x4F74, 0x18FC, 0x4F75, 0x053B, 0x4F76, 0x18FB, 0x4F77,
+ 0x18FF, 0x4F78, 0x1906, 0x4F79, 0x1904, 0x4F7A, 0x0543, 0x4F7B, 0x053E,
+ 0x4F7C, 0x18F6, 0x4F7D, 0x18F8, 0x4F7E, 0x0540, 0x4F7F, 0x0534, 0x4F80,
+ 0x18F9, 0x4F81, 0x1905, 0x4F82, 0x190C, 0x4F83, 0x0539, 0x4F84, 0x18FE,
+ 0x4F85, 0x18F7, 0x4F86, 0x0538, 0x4F87, 0x18FA, 0x4F88, 0x053C, 0x4F89,
+ 0x18FD, 0x4F8B, 0x0537, 0x4F8D, 0x0532, 0x4F8F, 0x0541, 0x4F90, 0x1907,
+ 0x4F91, 0x0542, 0x4F92, 0x190B, 0x4F94, 0x1909, 0x4F95, 0x190D, 0x4F96,
+ 0x053F, 0x4F97, 0x1901, 0x4F98, 0x18F5, 0x4F9A, 0x1903, 0x4F9B, 0x0536,
+ 0x4F9C, 0x1908, 0x4F9D, 0x0531, 0x4F9E, 0x190A, 0x4FAE, 0x06B4, 0x4FAF,
+ 0x06A8, 0x4FB2, 0x1A5D, 0x4FB3, 0x1A65, 0x4FB5, 0x06A7, 0x4FB6, 0x06AF,
+ 0x4FB7, 0x06BB, 0x4FB9, 0x1A6B, 0x4FBA, 0x1A69, 0x4FBB, 0x1A64, 0x4FBF,
+ 0x06A9, 0x4FC0, 0x1A6A, 0x4FC1, 0x1A60, 0x4FC2, 0x06B7, 0x4FC3, 0x06AE,
+ 0x4FC4, 0x06B6, 0x4FC5, 0x1A5B, 0x4FC7, 0x1A67, 0x4FC9, 0x1A5E, 0x4FCA,
+ 0x06B2, 0x4FCB, 0x1A5F, 0x4FCD, 0x1A5A, 0x4FCE, 0x06B9, 0x4FCF, 0x06AC,
+ 0x4FD0, 0x06B5, 0x4FD1, 0x06AB, 0x4FD3, 0x1A5C, 0x4FD4, 0x1A61, 0x4FD6,
+ 0x1A68, 0x4FD7, 0x06B3, 0x4FD8, 0x06B0, 0x4FD9, 0x1A63, 0x4FDA, 0x06B8,
+ 0x4FDB, 0x1A66, 0x4FDC, 0x1A62, 0x4FDD, 0x06AD, 0x4FDE, 0x06BA, 0x4FDF,
+ 0x06B1, 0x4FE0, 0x06AA, 0x4FE1, 0x06A6, 0x4FEC, 0x1A6C, 0x4FEE, 0x084C,
+ 0x4FEF, 0x0836, 0x4FF1, 0x0846, 0x4FF3, 0x084B, 0x4FF4, 0x1C24, 0x4FF5,
+ 0x1C23, 0x4FF6, 0x1C28, 0x4FF7, 0x1C29, 0x4FF8, 0x0839, 0x4FFA, 0x0842,
+ 0x4FFE, 0x084F, 0x5000, 0x0843, 0x5005, 0x1C1D, 0x5006, 0x083C, 0x5007,
+ 0x1C1E, 0x5009, 0x0851, 0x500B, 0x0848, 0x500C, 0x0833, 0x500D, 0x0834,
+ 0x500E, 0x1C31, 0x500F, 0x0A0C, 0x5011, 0x0841, 0x5012, 0x0840, 0x5013,
+ 0x1C1F, 0x5014, 0x0844, 0x5015, 0x1E45, 0x5016, 0x083B, 0x5017, 0x1C2A,
+ 0x5018, 0x084A, 0x5019, 0x0849, 0x501A, 0x083F, 0x501B, 0x1C22, 0x501C,
+ 0x1C2B, 0x501E, 0x1C1C, 0x501F, 0x083E, 0x5020, 0x1C2C, 0x5021, 0x0847,
+ 0x5022, 0x1C20, 0x5023, 0x0835, 0x5025, 0x0838, 0x5026, 0x0837, 0x5027,
+ 0x1C2D, 0x5028, 0x0845, 0x5029, 0x083A, 0x502A, 0x084E, 0x502B, 0x0850,
+ 0x502C, 0x1C27, 0x502D, 0x084D, 0x502F, 0x1C2F, 0x5030, 0x1C21, 0x5031,
+ 0x1C30, 0x5033, 0x1C25, 0x5035, 0x1C2E, 0x5037, 0x1C26, 0x503C, 0x083D,
+ 0x5040, 0x1E4D, 0x5041, 0x1E41, 0x5043, 0x0A00, 0x5045, 0x1E46, 0x5046,
+ 0x1E4C, 0x5047, 0x09FF, 0x5048, 0x1E3F, 0x5049, 0x0A03, 0x504A, 0x1E43,
+ 0x504B, 0x1E3C, 0x504C, 0x0A01, 0x504D, 0x1E40, 0x504E, 0x0A06, 0x504F,
+ 0x0A0B, 0x5051, 0x1E51, 0x5053, 0x1E3B, 0x5055, 0x0A07, 0x5057, 0x1E50,
+ 0x505A, 0x0A02, 0x505B, 0x1E42, 0x505C, 0x09FE, 0x505D, 0x1E3D, 0x505E,
+ 0x1E39, 0x505F, 0x1E47, 0x5060, 0x1E3A, 0x5061, 0x1E38, 0x5062, 0x1E44,
+ 0x5063, 0x1E4A, 0x5064, 0x1E4B, 0x5065, 0x0A04, 0x5068, 0x20B8, 0x5069,
+ 0x1E48, 0x506A, 0x1E37, 0x506B, 0x1E49, 0x506D, 0x0A0E, 0x506E, 0x1E4E,
+ 0x506F, 0x0A0D, 0x5070, 0x1E36, 0x5072, 0x1E3E, 0x5073, 0x1E4F, 0x5074,
+ 0x0A09, 0x5075, 0x0A08, 0x5076, 0x0A05, 0x5077, 0x0A0A, 0x507A, 0x09FC,
+ 0x507D, 0x09FD, 0x5080, 0x0BEC, 0x5082, 0x20BB, 0x5083, 0x20B4, 0x5085,
+ 0x0BE9, 0x5087, 0x20BC, 0x508B, 0x20B2, 0x508C, 0x20B5, 0x508D, 0x0BE8,
+ 0x508E, 0x20B6, 0x5091, 0x0BEB, 0x5092, 0x20BA, 0x5094, 0x20B0, 0x5095,
+ 0x20AF, 0x5096, 0x0BED, 0x5098, 0x0BEE, 0x5099, 0x0BEA, 0x509A, 0x0BEF,
+ 0x509B, 0x20AE, 0x509C, 0x20B9, 0x509D, 0x20B7, 0x509E, 0x20B1, 0x50A2,
+ 0x0BE7, 0x50A3, 0x20B3, 0x50AC, 0x0DC5, 0x50AD, 0x0DBF, 0x50AE, 0x2367,
+ 0x50AF, 0x0DC8, 0x50B0, 0x236D, 0x50B1, 0x2370, 0x50B2, 0x0DC1, 0x50B3,
+ 0x0DC2, 0x50B4, 0x236A, 0x50B5, 0x0DC0, 0x50B6, 0x2373, 0x50B7, 0x0DC6,
+ 0x50B8, 0x2374, 0x50BA, 0x236F, 0x50BB, 0x0DC7, 0x50BD, 0x2364, 0x50BE,
+ 0x0DC4, 0x50BF, 0x2365, 0x50C1, 0x236E, 0x50C2, 0x236C, 0x50C4, 0x2368,
+ 0x50C5, 0x0DC3, 0x50C6, 0x2366, 0x50C7, 0x0DC9, 0x50C8, 0x236B, 0x50C9,
+ 0x2372, 0x50CA, 0x2369, 0x50CB, 0x2371, 0x50CE, 0x0F88, 0x50CF, 0x0F85,
+ 0x50D1, 0x0F86, 0x50D3, 0x261C, 0x50D4, 0x2614, 0x50D5, 0x0F84, 0x50D6,
+ 0x0F81, 0x50D7, 0x2615, 0x50DA, 0x0F83, 0x50DB, 0x2618, 0x50DD, 0x261A,
+ 0x50E0, 0x2621, 0x50E3, 0x2620, 0x50E4, 0x261B, 0x50E5, 0x0F80, 0x50E6,
+ 0x2613, 0x50E7, 0x0F7E, 0x50E8, 0x2616, 0x50E9, 0x0F89, 0x50EA, 0x2619,
+ 0x50EC, 0x261D, 0x50ED, 0x0F82, 0x50EE, 0x0F7F, 0x50EF, 0x261F, 0x50F0,
+ 0x261E, 0x50F1, 0x0F87, 0x50F3, 0x2617, 0x50F5, 0x1105, 0x50F6, 0x2883,
+ 0x50F8, 0x2880, 0x50F9, 0x1106, 0x50FB, 0x1104, 0x50FD, 0x2887, 0x50FE,
+ 0x2884, 0x50FF, 0x287D, 0x5100, 0x1103, 0x5102, 0x1107, 0x5103, 0x287E,
+ 0x5104, 0x1102, 0x5105, 0x110A, 0x5106, 0x2881, 0x5107, 0x2882, 0x5108,
+ 0x1108, 0x5109, 0x1109, 0x510A, 0x2888, 0x510B, 0x2885, 0x510C, 0x2886,
+ 0x5110, 0x128D, 0x5111, 0x2B04, 0x5112, 0x128A, 0x5113, 0x2B01, 0x5114,
+ 0x128C, 0x5115, 0x128E, 0x5117, 0x2B02, 0x5118, 0x128B, 0x511A, 0x2B03,
+ 0x511C, 0x2B00, 0x511F, 0x13B5, 0x5120, 0x2D3E, 0x5121, 0x13B6, 0x5122,
+ 0x2D3C, 0x5124, 0x2D3D, 0x5125, 0x2D3B, 0x5126, 0x2D3A, 0x5129, 0x2D3F,
+ 0x512A, 0x13B4, 0x512D, 0x2F0F, 0x512E, 0x2F10, 0x5130, 0x287F, 0x5131,
+ 0x2F0E, 0x5132, 0x13B7, 0x5133, 0x1575, 0x5134, 0x307A, 0x5135, 0x307B,
+ 0x5137, 0x1668, 0x5138, 0x1669, 0x5139, 0x32C6, 0x513A, 0x32C5, 0x513B,
+ 0x16BC, 0x513C, 0x16BB, 0x513D, 0x340E, 0x513F, 0x025C, 0x5140, 0x0274,
+ 0x5141, 0x02AA, 0x5143, 0x02A9, 0x5144, 0x0303, 0x5145, 0x0302, 0x5146,
+ 0x038A, 0x5147, 0x0389, 0x5148, 0x038B, 0x5149, 0x0388, 0x514B, 0x0434,
+ 0x514C, 0x0433, 0x514D, 0x0435, 0x5152, 0x0545, 0x5154, 0x0544, 0x5155,
+ 0x0546, 0x5157, 0x06BC, 0x5159, 0x0119, 0x515A, 0x1C32, 0x515B, 0x011A,
+ 0x515C, 0x0A0F, 0x515D, 0x011C, 0x515E, 0x011B, 0x515F, 0x20BD, 0x5161,
+ 0x011D, 0x5162, 0x0F8A, 0x5163, 0x011E, 0x5165, 0x025D, 0x5167, 0x02AB,
+ 0x5168, 0x038C, 0x5169, 0x0547, 0x516B, 0x025E, 0x516C, 0x02AE, 0x516D,
+ 0x02AC, 0x516E, 0x02AD, 0x5171, 0x038D, 0x5175, 0x0436, 0x5176, 0x0549,
+ 0x5177, 0x0548, 0x5178, 0x054A, 0x517C, 0x0852, 0x5180, 0x128F, 0x5182,
+ 0x021D, 0x5187, 0x1779, 0x5188, 0x36B6, 0x5189, 0x0304, 0x518A, 0x0305,
+ 0x518D, 0x038E, 0x518F, 0x1833, 0x5191, 0x06BE, 0x5192, 0x06BD, 0x5193,
+ 0x1C34, 0x5194, 0x1C33, 0x5195, 0x0A10, 0x5196, 0x021E, 0x5197, 0x02AF,
+ 0x5198, 0x1780, 0x519E, 0x1910, 0x51A0, 0x06BF, 0x51A2, 0x0855, 0x51A4,
+ 0x0853, 0x51A5, 0x0854, 0x51AA, 0x1290, 0x51AB, 0x021F, 0x51AC, 0x0306,
+ 0x51B0, 0x038F, 0x51B1, 0x17C6, 0x51B6, 0x0437, 0x51B7, 0x0438, 0x51B9,
+ 0x1834, 0x51BC, 0x1911, 0x51BD, 0x054B, 0x51BE, 0x1912, 0x51C4, 0x1C36,
+ 0x51C5, 0x1C37, 0x51C6, 0x0858, 0x51C8, 0x1C38, 0x51CA, 0x1C35, 0x51CB,
+ 0x0859, 0x51CC, 0x0857, 0x51CD, 0x0856, 0x51CE, 0x1C39, 0x51D0, 0x1E52,
+ 0x51D4, 0x20BE, 0x51D7, 0x2375, 0x51D8, 0x2622, 0x51DC, 0x110B, 0x51DD,
+ 0x1291, 0x51DE, 0x2B05, 0x51E0, 0x025F, 0x51E1, 0x026D, 0x51F0, 0x0A11,
+ 0x51F1, 0x0BF1, 0x51F3, 0x0F8B, 0x51F5, 0x176E, 0x51F6, 0x02B0, 0x51F8,
+ 0x0309, 0x51F9, 0x0307, 0x51FA, 0x0308, 0x51FD, 0x054C, 0x5200, 0x0260,
+ 0x5201, 0x0261, 0x5202, 0x36B3, 0x5203, 0x0275, 0x5206, 0x02B1, 0x5207,
+ 0x02B2, 0x5208, 0x02B3, 0x5209, 0x1797, 0x520A, 0x030A, 0x520C, 0x1796,
+ 0x520E, 0x0393, 0x5210, 0x17C8, 0x5211, 0x0391, 0x5212, 0x0392, 0x5213,
+ 0x17C7, 0x5216, 0x0394, 0x5217, 0x0390, 0x521C, 0x1835, 0x521D, 0x068B,
+ 0x521E, 0x1836, 0x5221, 0x1837, 0x5224, 0x043A, 0x5225, 0x0439, 0x5228,
+ 0x043D, 0x5229, 0x043B, 0x522A, 0x043C, 0x522E, 0x0552, 0x5230, 0x0551,
+ 0x5231, 0x1917, 0x5232, 0x1914, 0x5233, 0x1915, 0x5235, 0x1913, 0x5236,
+ 0x0553, 0x5237, 0x054F, 0x5238, 0x054E, 0x523A, 0x0550, 0x523B, 0x054D,
+ 0x5241, 0x0554, 0x5243, 0x06C1, 0x5244, 0x1A6D, 0x5246, 0x1916, 0x5247,
+ 0x06C6, 0x5249, 0x1A6E, 0x524A, 0x06C2, 0x524B, 0x06C5, 0x524C, 0x06C4,
+ 0x524D, 0x06C3, 0x524E, 0x06C0, 0x5252, 0x1C3C, 0x5254, 0x085C, 0x5255,
+ 0x1C3F, 0x5256, 0x085A, 0x525A, 0x1C3B, 0x525B, 0x085D, 0x525C, 0x085B,
+ 0x525D, 0x085E, 0x525E, 0x1C3D, 0x525F, 0x1C3E, 0x5261, 0x1C3A, 0x5262,
+ 0x1C40, 0x5269, 0x0BF5, 0x526A, 0x0A12, 0x526B, 0x1E53, 0x526C, 0x1E55,
+ 0x526D, 0x1E54, 0x526E, 0x1E56, 0x526F, 0x0A13, 0x5272, 0x0BF2, 0x5274,
+ 0x0BF3, 0x5275, 0x0BF4, 0x5277, 0x0DCB, 0x5278, 0x2377, 0x527A, 0x2376,
+ 0x527B, 0x2378, 0x527C, 0x2379, 0x527D, 0x0DCC, 0x527F, 0x0DCA, 0x5280,
+ 0x2623, 0x5281, 0x2624, 0x5282, 0x0F8D, 0x5283, 0x0F8C, 0x5284, 0x2776,
+ 0x5287, 0x110C, 0x5288, 0x110D, 0x5289, 0x110E, 0x528A, 0x1110, 0x528B,
+ 0x2889, 0x528C, 0x288A, 0x528D, 0x110F, 0x5291, 0x1292, 0x5293, 0x1293,
+ 0x5296, 0x307C, 0x5297, 0x32C8, 0x5298, 0x32C7, 0x5299, 0x340F, 0x529B,
+ 0x0262, 0x529F, 0x030C, 0x52A0, 0x030B, 0x52A3, 0x0395, 0x52A6, 0x17C9,
+ 0x52A9, 0x043F, 0x52AA, 0x0440, 0x52AB, 0x043E, 0x52AC, 0x0441, 0x52AD,
+ 0x1838, 0x52AE, 0x1839, 0x52BB, 0x0556, 0x52BC, 0x1918, 0x52BE, 0x0555,
+ 0x52C0, 0x1A6F, 0x52C1, 0x06CA, 0x52C2, 0x1A70, 0x52C3, 0x06C9, 0x52C7,
+ 0x06C7, 0x52C9, 0x06C8, 0x52CD, 0x1C41, 0x52D2, 0x0A14, 0x52D3, 0x1E58,
+ 0x52D5, 0x0A17, 0x52D6, 0x1E57, 0x52D7, 0x0ACF, 0x52D8, 0x0A16, 0x52D9,
+ 0x0A15, 0x52DB, 0x0BF8, 0x52DD, 0x0BF7, 0x52DE, 0x0BF6, 0x52DF, 0x0DCD,
+ 0x52E2, 0x0DD0, 0x52E3, 0x0DD1, 0x52E4, 0x0DCF, 0x52E6, 0x0DCE, 0x52E9,
+ 0x2625, 0x52EB, 0x2626, 0x52EF, 0x288C, 0x52F0, 0x1111, 0x52F1, 0x288B,
+ 0x52F3, 0x1294, 0x52F4, 0x2D40, 0x52F5, 0x13B8, 0x52F7, 0x307D, 0x52F8,
+ 0x1609, 0x52F9, 0x0220, 0x52FA, 0x0276, 0x52FB, 0x02B4, 0x52FC, 0x1781,
+ 0x52FE, 0x02B5, 0x52FF, 0x02B6, 0x5305, 0x030D, 0x5306, 0x030E, 0x5308,
+ 0x0396, 0x5309, 0x183A, 0x530A, 0x1919, 0x530B, 0x191A, 0x530D, 0x06CB,
+ 0x530E, 0x1C42, 0x530F, 0x0A19, 0x5310, 0x0A18, 0x5311, 0x20C0, 0x5312,
+ 0x20BF, 0x5315, 0x0263, 0x5316, 0x02B7, 0x5317, 0x030F, 0x5319, 0x0A1A,
+ 0x531A, 0x176F, 0x531C, 0x1798, 0x531D, 0x0310, 0x531F, 0x17CB, 0x5320,
+ 0x0398, 0x5321, 0x0397, 0x5322, 0x17CA, 0x5323, 0x0442, 0x532A, 0x085F,
+ 0x532D, 0x1E59, 0x532F, 0x0DD2, 0x5330, 0x2627, 0x5331, 0x0F8E, 0x5334,
+ 0x2B06, 0x5337, 0x31C7, 0x5338, 0x0221, 0x5339, 0x02B8, 0x533C, 0x191B,
+ 0x533D, 0x1A71, 0x533E, 0x0A1D, 0x533F, 0x0A1B, 0x5340, 0x0A1C, 0x5341,
+ 0x0264, 0x5343, 0x0277, 0x5344, 0x016B, 0x5345, 0x02BB, 0x5347, 0x02BA,
+ 0x5348, 0x02B9, 0x5349, 0x0313, 0x534A, 0x0312, 0x534C, 0x1799, 0x534D,
+ 0x17CC, 0x5351, 0x055A, 0x5352, 0x0557, 0x5353, 0x0559, 0x5354, 0x0558,
+ 0x5357, 0x06CC, 0x535A, 0x0BF9, 0x535C, 0x0265, 0x535E, 0x02BC, 0x5360,
+ 0x0315, 0x5361, 0x0314, 0x5363, 0x183B, 0x5366, 0x055B, 0x5369, 0x0222,
+ 0x536C, 0x1782, 0x536E, 0x0317, 0x536F, 0x0316, 0x5370, 0x0399, 0x5371,
+ 0x039A, 0x5372, 0x183C, 0x5373, 0x0443, 0x5375, 0x0444, 0x5377, 0x055C,
+ 0x5378, 0x055D, 0x5379, 0x055E, 0x537B, 0x06CD, 0x537C, 0x1A72, 0x537F,
+ 0x0860, 0x5382, 0x1770, 0x5384, 0x02BD, 0x538A, 0x17CD, 0x538E, 0x183D,
+ 0x538F, 0x183E, 0x5392, 0x191C, 0x5394, 0x191D, 0x5396, 0x1A74, 0x5397,
+ 0x1A73, 0x5398, 0x1A76, 0x5399, 0x1A75, 0x539A, 0x06CE, 0x539C, 0x1E5A,
+ 0x539D, 0x0862, 0x539E, 0x1C43, 0x539F, 0x0861, 0x53A4, 0x20C1, 0x53A5,
+ 0x0BFA, 0x53A7, 0x20C2, 0x53AC, 0x2628, 0x53AD, 0x0F8F, 0x53B2, 0x1112,
+ 0x53B4, 0x307E, 0x53B6, 0x0223, 0x53B9, 0x1783, 0x53BB, 0x0318, 0x53C3,
+ 0x0A1E, 0x53C8, 0x0266, 0x53C9, 0x0278, 0x53CA, 0x02BF, 0x53CB, 0x02BE,
+ 0x53CD, 0x02C0, 0x53D4, 0x0560, 0x53D6, 0x055F, 0x53D7, 0x0561, 0x53DB,
+ 0x06CF, 0x53DF, 0x0863, 0x53E1, 0x2B07, 0x53E2, 0x14C9, 0x53E3, 0x0279,
+ 0x53E4, 0x031A, 0x53E5, 0x0329, 0x53E6, 0x0324, 0x53E8, 0x031F, 0x53E9,
+ 0x031E, 0x53EA, 0x0325, 0x53EB, 0x0323, 0x53EC, 0x031C, 0x53ED, 0x032A,
+ 0x53EE, 0x031D, 0x53EF, 0x0319, 0x53F0, 0x0328, 0x53F1, 0x0327, 0x53F2,
+ 0x0326, 0x53F3, 0x031B, 0x53F5, 0x0322, 0x53F8, 0x0321, 0x53FB, 0x032B,
+ 0x53FC, 0x0320, 0x5401, 0x03A0, 0x5403, 0x03A6, 0x5404, 0x03A2, 0x5406,
+ 0x03A8, 0x5407, 0x17CE, 0x5408, 0x03A5, 0x5409, 0x039B, 0x540A, 0x039E,
+ 0x540B, 0x03A1, 0x540C, 0x039D, 0x540D, 0x03A4, 0x540E, 0x03A7, 0x540F,
+ 0x039C, 0x5410, 0x039F, 0x5411, 0x03A3, 0x5412, 0x03A9, 0x5418, 0x1847,
+ 0x5419, 0x1844, 0x541B, 0x0451, 0x541C, 0x1845, 0x541D, 0x0445, 0x541E,
+ 0x0447, 0x541F, 0x045F, 0x5420, 0x045A, 0x5424, 0x184C, 0x5425, 0x1846,
+ 0x5426, 0x0449, 0x5427, 0x044B, 0x5428, 0x184B, 0x5429, 0x0452, 0x542A,
+ 0x1841, 0x542B, 0x045E, 0x542C, 0x0460, 0x542D, 0x0446, 0x542E, 0x0457,
+ 0x5430, 0x183F, 0x5431, 0x045D, 0x5433, 0x044E, 0x5435, 0x0458, 0x5436,
+ 0x0459, 0x5437, 0x1840, 0x5438, 0x0456, 0x5439, 0x0454, 0x543B, 0x0455,
+ 0x543C, 0x045B, 0x543D, 0x1848, 0x543E, 0x0448, 0x5440, 0x045C, 0x5441,
+ 0x184A, 0x5442, 0x0450, 0x5443, 0x044D, 0x5445, 0x1843, 0x5446, 0x044C,
+ 0x5447, 0x184D, 0x5448, 0x044F, 0x544A, 0x0453, 0x544E, 0x044A, 0x544F,
+ 0x1849, 0x5454, 0x1842, 0x5460, 0x192E, 0x5461, 0x192D, 0x5462, 0x0573,
+ 0x5463, 0x1930, 0x5464, 0x1932, 0x5465, 0x1927, 0x5466, 0x192A, 0x5467,
+ 0x1931, 0x5468, 0x0574, 0x546B, 0x1924, 0x546C, 0x1928, 0x546F, 0x192C,
+ 0x5470, 0x1A85, 0x5471, 0x056F, 0x5472, 0x1A89, 0x5473, 0x0562, 0x5474,
+ 0x1929, 0x5475, 0x0563, 0x5476, 0x0570, 0x5477, 0x0569, 0x5478, 0x0565,
+ 0x547A, 0x1925, 0x547B, 0x0568, 0x547C, 0x056D, 0x547D, 0x0576, 0x547E,
+ 0x1926, 0x547F, 0x191F, 0x5480, 0x0567, 0x5481, 0x1920, 0x5482, 0x1922,
+ 0x5484, 0x056A, 0x5486, 0x056C, 0x5487, 0x191E, 0x5488, 0x1923, 0x548B,
+ 0x0575, 0x548C, 0x0571, 0x548D, 0x192B, 0x548E, 0x0577, 0x5490, 0x056E,
+ 0x5491, 0x1921, 0x5492, 0x056B, 0x5495, 0x0566, 0x5496, 0x0564, 0x5498,
+ 0x192F, 0x549A, 0x0572, 0x54A0, 0x1A84, 0x54A1, 0x1A78, 0x54A2, 0x1A87,
+ 0x54A5, 0x1A7A, 0x54A6, 0x06D6, 0x54A7, 0x06E4, 0x54A8, 0x06D2, 0x54A9,
+ 0x06E3, 0x54AA, 0x06DB, 0x54AB, 0x06E0, 0x54AC, 0x06D0, 0x54AD, 0x1A79,
+ 0x54AE, 0x1A7F, 0x54AF, 0x06DF, 0x54B0, 0x1A8B, 0x54B1, 0x06E1, 0x54B3,
+ 0x06D7, 0x54B6, 0x1A81, 0x54B7, 0x1A7E, 0x54B8, 0x06D5, 0x54BA, 0x1A77,
+ 0x54BB, 0x06E2, 0x54BC, 0x1A86, 0x54BD, 0x06DA, 0x54BE, 0x1A88, 0x54BF,
+ 0x06E5, 0x54C0, 0x06D1, 0x54C1, 0x06DC, 0x54C2, 0x06D9, 0x54C3, 0x1A7C,
+ 0x54C4, 0x06DD, 0x54C5, 0x1A82, 0x54C6, 0x1A83, 0x54C7, 0x06D8, 0x54C8,
+ 0x06DE, 0x54C9, 0x06D4, 0x54CE, 0x06D3, 0x54CF, 0x1A7B, 0x54D6, 0x1A80,
+ 0x54DE, 0x1A8A, 0x54E0, 0x1C57, 0x54E1, 0x0870, 0x54E2, 0x1C45, 0x54E4,
+ 0x1C4A, 0x54E5, 0x0869, 0x54E6, 0x0874, 0x54E7, 0x1C48, 0x54E8, 0x0864,
+ 0x54E9, 0x086E, 0x54EA, 0x0873, 0x54EB, 0x1C4F, 0x54ED, 0x086F, 0x54EE,
+ 0x0872, 0x54F1, 0x1C52, 0x54F2, 0x086A, 0x54F3, 0x1C49, 0x54F7, 0x1C55,
+ 0x54F8, 0x1C56, 0x54FA, 0x086C, 0x54FB, 0x1C54, 0x54FC, 0x0868, 0x54FD,
+ 0x0877, 0x54FF, 0x1C4C, 0x5501, 0x0866, 0x5503, 0x1C59, 0x5504, 0x1C4D,
+ 0x5505, 0x1C51, 0x5506, 0x086B, 0x5507, 0x0876, 0x5508, 0x1C4E, 0x5509,
+ 0x0871, 0x550A, 0x1C53, 0x550B, 0x1C5A, 0x550C, 0x1E69, 0x550E, 0x1C58,
+ 0x550F, 0x0878, 0x5510, 0x0865, 0x5511, 0x1C50, 0x5512, 0x1C47, 0x5514,
+ 0x086D, 0x5517, 0x1C46, 0x551A, 0x1C4B, 0x5526, 0x1C44, 0x5527, 0x0875,
+ 0x552A, 0x1E61, 0x552C, 0x0A31, 0x552D, 0x1E6F, 0x552E, 0x0A2F, 0x552F,
+ 0x0A2C, 0x5530, 0x1E66, 0x5531, 0x0A28, 0x5532, 0x1E6A, 0x5533, 0x0A33,
+ 0x5534, 0x1E60, 0x5535, 0x1E65, 0x5536, 0x1E64, 0x5537, 0x0867, 0x5538,
+ 0x0A2E, 0x5539, 0x1E6D, 0x553B, 0x1E70, 0x553C, 0x1E5D, 0x553E, 0x0C0C,
+ 0x5540, 0x1E71, 0x5541, 0x0A34, 0x5543, 0x0A26, 0x5544, 0x0A23, 0x5545,
+ 0x1E68, 0x5546, 0x0A20, 0x5548, 0x1E6E, 0x554A, 0x0A27, 0x554B, 0x1E72,
+ 0x554D, 0x1E5E, 0x554E, 0x1E6C, 0x554F, 0x0A2A, 0x5550, 0x1E5F, 0x5551,
+ 0x1E62, 0x5552, 0x1E67, 0x5555, 0x0A2B, 0x5556, 0x0A29, 0x5557, 0x0A35,
+ 0x555C, 0x0A30, 0x555E, 0x0A24, 0x555F, 0x0ABC, 0x5561, 0x0A25, 0x5562,
+ 0x1E63, 0x5563, 0x0A32, 0x5564, 0x0A2D, 0x5565, 0x1E6B, 0x5566, 0x0A22,
+ 0x556A, 0x0A21, 0x5575, 0x1E5B, 0x5576, 0x1E5C, 0x5577, 0x20C7, 0x557B,
+ 0x0BFB, 0x557C, 0x0BFE, 0x557D, 0x20D2, 0x557E, 0x0C12, 0x557F, 0x20D5,
+ 0x5580, 0x0BFC, 0x5581, 0x20CE, 0x5582, 0x0C02, 0x5583, 0x0C08, 0x5584,
+ 0x0D1B, 0x5587, 0x0C06, 0x5588, 0x20CB, 0x5589, 0x0C13, 0x558A, 0x0BFF,
+ 0x558B, 0x0C07, 0x558C, 0x20D3, 0x558D, 0x2387, 0x558E, 0x20D8, 0x558F,
+ 0x20CC, 0x5591, 0x20C3, 0x5592, 0x20D0, 0x5593, 0x20CA, 0x5594, 0x0C05,
+ 0x5595, 0x20D6, 0x5598, 0x0C01, 0x5599, 0x0C15, 0x559A, 0x0C0E, 0x559C,
+ 0x0C03, 0x559D, 0x0C00, 0x559F, 0x0C0B, 0x55A1, 0x20D7, 0x55A2, 0x20C9,
+ 0x55A3, 0x20CF, 0x55A4, 0x20D1, 0x55A5, 0x20C5, 0x55A6, 0x20D4, 0x55A7,
+ 0x0BFD, 0x55A8, 0x20C4, 0x55AA, 0x0C04, 0x55AB, 0x0C14, 0x55AC, 0x0C10,
+ 0x55AD, 0x20C6, 0x55AE, 0x0C0A, 0x55B1, 0x0C11, 0x55B2, 0x0C0D, 0x55B3,
+ 0x0C09, 0x55B5, 0x20CD, 0x55BB, 0x0C0F, 0x55BF, 0x2385, 0x55C0, 0x2381,
+ 0x55C2, 0x2390, 0x55C3, 0x237A, 0x55C4, 0x2383, 0x55C5, 0x0DE0, 0x55C6,
+ 0x0DE1, 0x55C7, 0x0DD9, 0x55C8, 0x238C, 0x55C9, 0x0DE3, 0x55CA, 0x237F,
+ 0x55CB, 0x237E, 0x55CC, 0x237C, 0x55CD, 0x238E, 0x55CE, 0x0DD7, 0x55CF,
+ 0x2388, 0x55D0, 0x237D, 0x55D1, 0x0DDA, 0x55D2, 0x2386, 0x55D3, 0x0DD5,
+ 0x55D4, 0x2382, 0x55D5, 0x2389, 0x55D6, 0x238B, 0x55D9, 0x238F, 0x55DA,
+ 0x0DDE, 0x55DB, 0x237B, 0x55DC, 0x0DD8, 0x55DD, 0x2380, 0x55DF, 0x0DD3,
+ 0x55E1, 0x0DDF, 0x55E2, 0x238A, 0x55E3, 0x0DDB, 0x55E4, 0x0DDC, 0x55E5,
+ 0x0DE2, 0x55E6, 0x0DD6, 0x55E7, 0x011F, 0x55E8, 0x0DD4, 0x55E9, 0x2384,
+ 0x55EF, 0x0DDD, 0x55F2, 0x238D, 0x55F6, 0x0F9F, 0x55F7, 0x0F9A, 0x55F9,
+ 0x2637, 0x55FA, 0x2633, 0x55FC, 0x262D, 0x55FD, 0x0F94, 0x55FE, 0x0F90,
+ 0x55FF, 0x2636, 0x5600, 0x0F91, 0x5601, 0x2630, 0x5602, 0x2632, 0x5604,
+ 0x2635, 0x5606, 0x0F96, 0x5608, 0x0F9D, 0x5609, 0x0F97, 0x560C, 0x262B,
+ 0x560D, 0x0F98, 0x560E, 0x0F99, 0x560F, 0x262E, 0x5610, 0x0F9E, 0x5612,
+ 0x262C, 0x5613, 0x2631, 0x5614, 0x0F95, 0x5615, 0x262A, 0x5616, 0x0F9B,
+ 0x5617, 0x0F93, 0x561B, 0x0F92, 0x561C, 0x262F, 0x561D, 0x2634, 0x561F,
+ 0x0F9C, 0x5627, 0x2629, 0x5629, 0x1119, 0x562A, 0x289D, 0x562C, 0x289A,
+ 0x562E, 0x1113, 0x562F, 0x111F, 0x5630, 0x1120, 0x5632, 0x1116, 0x5633,
+ 0x2898, 0x5634, 0x1118, 0x5635, 0x2890, 0x5636, 0x111E, 0x5638, 0x289C,
+ 0x5639, 0x1115, 0x563A, 0x289E, 0x563B, 0x1114, 0x563D, 0x2899, 0x563E,
+ 0x289B, 0x563F, 0x1117, 0x5640, 0x2897, 0x5641, 0x2891, 0x5642, 0x288E,
+ 0x5645, 0x20C8, 0x5646, 0x2894, 0x5648, 0x288D, 0x5649, 0x2893, 0x564A,
+ 0x2892, 0x564C, 0x288F, 0x564E, 0x111B, 0x5653, 0x111A, 0x5657, 0x111C,
+ 0x5658, 0x2895, 0x5659, 0x1295, 0x565A, 0x2896, 0x565E, 0x2B10, 0x5660,
+ 0x2B09, 0x5662, 0x12A1, 0x5663, 0x2B0D, 0x5664, 0x1299, 0x5665, 0x129D,
+ 0x5666, 0x2B0C, 0x5668, 0x129C, 0x5669, 0x1298, 0x566A, 0x129B, 0x566B,
+ 0x1296, 0x566C, 0x12A0, 0x566D, 0x2B0E, 0x566E, 0x2B0A, 0x566F, 0x129F,
+ 0x5670, 0x2B08, 0x5671, 0x129E, 0x5672, 0x2B0F, 0x5673, 0x2B0B, 0x5674,
+ 0x111D, 0x5676, 0x12A2, 0x5677, 0x2B11, 0x5678, 0x129A, 0x5679, 0x1297,
+ 0x567E, 0x2D47, 0x567F, 0x2D49, 0x5680, 0x13BA, 0x5681, 0x2D4A, 0x5682,
+ 0x2D48, 0x5683, 0x2D46, 0x5684, 0x2D45, 0x5685, 0x13BC, 0x5686, 0x2D44,
+ 0x5687, 0x13BD, 0x568C, 0x2D42, 0x568D, 0x2D43, 0x568E, 0x13B9, 0x568F,
+ 0x13BE, 0x5690, 0x13BB, 0x5693, 0x2D41, 0x5695, 0x14CA, 0x5697, 0x2F13,
+ 0x5698, 0x2F11, 0x5699, 0x2F16, 0x569A, 0x2F14, 0x569C, 0x2F12, 0x569D,
+ 0x2F15, 0x56A5, 0x1576, 0x56A6, 0x3081, 0x56A7, 0x3082, 0x56A8, 0x1577,
+ 0x56AA, 0x3083, 0x56AB, 0x307F, 0x56AC, 0x3084, 0x56AD, 0x3080, 0x56AE,
+ 0x14CB, 0x56B2, 0x31C8, 0x56B3, 0x31CA, 0x56B4, 0x160C, 0x56B5, 0x31C9,
+ 0x56B6, 0x160B, 0x56B7, 0x160A, 0x56BC, 0x160D, 0x56BD, 0x32CA, 0x56BE,
+ 0x32CB, 0x56C0, 0x166B, 0x56C1, 0x166A, 0x56C2, 0x166C, 0x56C3, 0x32C9,
+ 0x56C5, 0x3379, 0x56C6, 0x3378, 0x56C8, 0x16BD, 0x56C9, 0x16BF, 0x56CA,
+ 0x16BE, 0x56CB, 0x337A, 0x56CC, 0x16F6, 0x56CD, 0x3481, 0x56D1, 0x171F,
+ 0x56D3, 0x3480, 0x56D4, 0x34C9, 0x56D7, 0x1775, 0x56DA, 0x032D, 0x56DB,
+ 0x032C, 0x56DD, 0x03AC, 0x56DE, 0x03AB, 0x56DF, 0x17D0, 0x56E0, 0x03AA,
+ 0x56E1, 0x17CF, 0x56E4, 0x0463, 0x56E5, 0x1850, 0x56E7, 0x184F, 0x56EA,
+ 0x0461, 0x56EB, 0x0464, 0x56EE, 0x184E, 0x56F0, 0x0462, 0x56F7, 0x1933,
+ 0x56F9, 0x1934, 0x56FA, 0x0578, 0x56FF, 0x06E6, 0x5701, 0x1C5B, 0x5702,
+ 0x1C5C, 0x5703, 0x0879, 0x5704, 0x087A, 0x5707, 0x1E74, 0x5708, 0x0A36,
+ 0x5709, 0x0A38, 0x570A, 0x1E73, 0x570B, 0x0A37, 0x570C, 0x20D9, 0x570D,
+ 0x0C16, 0x5712, 0x0DE4, 0x5713, 0x0DE5, 0x5714, 0x2391, 0x5716, 0x0FA1,
+ 0x5718, 0x0FA0, 0x571A, 0x289F, 0x571B, 0x2B13, 0x571C, 0x2B12, 0x571E,
+ 0x3505, 0x571F, 0x027A, 0x5720, 0x1784, 0x5722, 0x179A, 0x5723, 0x179B,
+ 0x5728, 0x03AF, 0x5729, 0x03B3, 0x572A, 0x17D2, 0x572C, 0x03B1, 0x572D,
+ 0x03B0, 0x572E, 0x17D1, 0x572F, 0x03B2, 0x5730, 0x03AE, 0x5733, 0x03AD,
+ 0x5734, 0x17D3, 0x573B, 0x046E, 0x573E, 0x046B, 0x5740, 0x0467, 0x5741,
+ 0x1851, 0x5745, 0x1852, 0x5747, 0x0469, 0x5749, 0x1854, 0x574A, 0x0465,
+ 0x574B, 0x1855, 0x574C, 0x1853, 0x574D, 0x0468, 0x574E, 0x046A, 0x574F,
+ 0x046D, 0x5750, 0x046C, 0x5751, 0x0466, 0x5752, 0x1856, 0x5761, 0x057D,
+ 0x5762, 0x1941, 0x5764, 0x057F, 0x5766, 0x057E, 0x5768, 0x1942, 0x5769,
+ 0x057C, 0x576A, 0x057B, 0x576B, 0x1938, 0x576D, 0x1937, 0x576F, 0x1935,
+ 0x5770, 0x193A, 0x5771, 0x1939, 0x5772, 0x1936, 0x5773, 0x193F, 0x5774,
+ 0x1940, 0x5775, 0x193D, 0x5776, 0x193B, 0x5777, 0x057A, 0x577B, 0x193E,
+ 0x577C, 0x0580, 0x577D, 0x1943, 0x5780, 0x193C, 0x5782, 0x06E7, 0x5783,
+ 0x0579, 0x578B, 0x06E8, 0x578C, 0x1A90, 0x578F, 0x1A96, 0x5793, 0x06EE,
+ 0x5794, 0x1A94, 0x5795, 0x1A9A, 0x5797, 0x1A91, 0x5798, 0x1A95, 0x5799,
+ 0x1A97, 0x579A, 0x1A99, 0x579B, 0x1A93, 0x579D, 0x1A92, 0x579E, 0x1A8D,
+ 0x579F, 0x1A8E, 0x57A0, 0x06E9, 0x57A2, 0x06EB, 0x57A3, 0x06EA, 0x57A4,
+ 0x1A8F, 0x57A5, 0x1A98, 0x57AE, 0x06ED, 0x57B5, 0x1A8C, 0x57B6, 0x1C66,
+ 0x57B8, 0x1C65, 0x57B9, 0x1C6A, 0x57BA, 0x1C61, 0x57BC, 0x1C64, 0x57BD,
+ 0x1C63, 0x57BF, 0x1C67, 0x57C1, 0x1C6B, 0x57C2, 0x087B, 0x57C3, 0x087E,
+ 0x57C6, 0x1C62, 0x57C7, 0x1C68, 0x57CB, 0x087D, 0x57CC, 0x1C5D, 0x57CE,
+ 0x06EC, 0x57CF, 0x1E82, 0x57D0, 0x1C69, 0x57D2, 0x1C60, 0x57D4, 0x087C,
+ 0x57D5, 0x1C5F, 0x57DC, 0x1E79, 0x57DF, 0x0A39, 0x57E0, 0x0A3D, 0x57E1,
+ 0x1E89, 0x57E2, 0x1E77, 0x57E3, 0x1E85, 0x57E4, 0x0A3E, 0x57E5, 0x1E87,
+ 0x57E7, 0x1E8D, 0x57E9, 0x1E91, 0x57EC, 0x1E88, 0x57ED, 0x1E7C, 0x57EE,
+ 0x1E84, 0x57F0, 0x1E92, 0x57F1, 0x1E90, 0x57F2, 0x1E86, 0x57F3, 0x1E81,
+ 0x57F4, 0x1E7A, 0x57F5, 0x20E1, 0x57F6, 0x1E78, 0x57F7, 0x0A42, 0x57F8,
+ 0x1E7F, 0x57F9, 0x0A43, 0x57FA, 0x0A3F, 0x57FB, 0x1E75, 0x57FC, 0x1E8B,
+ 0x57FD, 0x1E7D, 0x5800, 0x1E7B, 0x5801, 0x1E8E, 0x5802, 0x0A40, 0x5804,
+ 0x1E94, 0x5805, 0x0A3A, 0x5806, 0x0A3C, 0x5807, 0x1E83, 0x5808, 0x1E7E,
+ 0x5809, 0x087F, 0x580A, 0x0A3B, 0x580B, 0x1E80, 0x580C, 0x1E8F, 0x580D,
+ 0x1E93, 0x580E, 0x1E8A, 0x5810, 0x1E8C, 0x5814, 0x1E76, 0x5819, 0x20DC,
+ 0x581B, 0x20E5, 0x581C, 0x20E4, 0x581D, 0x0C1E, 0x581E, 0x20DD, 0x5820,
+ 0x0C1F, 0x5821, 0x0C1D, 0x5823, 0x20DF, 0x5824, 0x0C1A, 0x5825, 0x20E3,
+ 0x5827, 0x20DE, 0x5828, 0x20E0, 0x5829, 0x20DA, 0x582A, 0x0C18, 0x582C,
+ 0x20ED, 0x582D, 0x20EC, 0x582E, 0x20E9, 0x582F, 0x0C17, 0x5830, 0x0C1B,
+ 0x5831, 0x0C1C, 0x5832, 0x1C5E, 0x5833, 0x20E6, 0x5834, 0x0C19, 0x5835,
+ 0x0A41, 0x5836, 0x20E8, 0x5837, 0x20DB, 0x5838, 0x20EB, 0x5839, 0x20EA,
+ 0x583B, 0x20EE, 0x583D, 0x239F, 0x583F, 0x20E7, 0x5848, 0x20E2, 0x5849,
+ 0x2397, 0x584A, 0x0DEF, 0x584B, 0x0DF2, 0x584C, 0x0DED, 0x584D, 0x2396,
+ 0x584E, 0x239A, 0x584F, 0x2395, 0x5851, 0x0DE7, 0x5852, 0x0DF1, 0x5853,
+ 0x2392, 0x5854, 0x0DEB, 0x5855, 0x2399, 0x5857, 0x0DE9, 0x5858, 0x0DE8,
+ 0x5859, 0x239C, 0x585A, 0x0DEA, 0x585B, 0x239E, 0x585D, 0x239B, 0x585E,
+ 0x0DE6, 0x5862, 0x0DF0, 0x5863, 0x23A0, 0x5864, 0x2394, 0x5865, 0x239D,
+ 0x5868, 0x2393, 0x586B, 0x0DEC, 0x586D, 0x0DEE, 0x586F, 0x2398, 0x5871,
+ 0x23A1, 0x5874, 0x263F, 0x5875, 0x0FA2, 0x5876, 0x2645, 0x5879, 0x0FA7,
+ 0x587A, 0x2641, 0x587B, 0x2648, 0x587C, 0x2639, 0x587D, 0x0FA9, 0x587E,
+ 0x0FA3, 0x587F, 0x263E, 0x5880, 0x1121, 0x5881, 0x263D, 0x5882, 0x2646,
+ 0x5883, 0x0FA4, 0x5885, 0x0FA8, 0x5886, 0x263C, 0x5887, 0x2642, 0x5888,
+ 0x2647, 0x5889, 0x2638, 0x588A, 0x0FA6, 0x588B, 0x2640, 0x588E, 0x2644,
+ 0x588F, 0x264A, 0x5890, 0x263A, 0x5891, 0x2643, 0x5893, 0x0FA5, 0x5894,
+ 0x2649, 0x5898, 0x263B, 0x589C, 0x1125, 0x589D, 0x28A1, 0x589E, 0x1123,
+ 0x589F, 0x1122, 0x58A0, 0x28A3, 0x58A1, 0x28A8, 0x58A3, 0x28A4, 0x58A5,
+ 0x28A7, 0x58A6, 0x1128, 0x58A8, 0x1288, 0x58A9, 0x1127, 0x58AB, 0x28A0,
+ 0x58AC, 0x28A6, 0x58AE, 0x1126, 0x58AF, 0x28A5, 0x58B1, 0x28A2, 0x58B3,
+ 0x1124, 0x58BA, 0x2B18, 0x58BB, 0x36EB, 0x58BC, 0x2B1A, 0x58BD, 0x2B15,
+ 0x58BE, 0x12A4, 0x58BF, 0x2B17, 0x58C1, 0x12A3, 0x58C2, 0x2B19, 0x58C5,
+ 0x12A6, 0x58C6, 0x2B1B, 0x58C7, 0x12A5, 0x58C8, 0x2B14, 0x58C9, 0x2B16,
+ 0x58CE, 0x13C2, 0x58CF, 0x2D4D, 0x58D1, 0x13C1, 0x58D2, 0x2D4E, 0x58D3,
+ 0x13C0, 0x58D4, 0x2D4C, 0x58D5, 0x13BF, 0x58D6, 0x2D4B, 0x58D8, 0x14CD,
+ 0x58D9, 0x14CC, 0x58DA, 0x3085, 0x58DB, 0x3087, 0x58DD, 0x3086, 0x58DE,
+ 0x1578, 0x58DF, 0x1579, 0x58E2, 0x157A, 0x58E3, 0x31CB, 0x58E4, 0x160E,
+ 0x58E7, 0x3411, 0x58E8, 0x3410, 0x58E9, 0x1720, 0x58EB, 0x027B, 0x58EC,
+ 0x02C1, 0x58EF, 0x046F, 0x58F4, 0x1A9B, 0x58F9, 0x0C20, 0x58FA, 0x0C21,
+ 0x58FC, 0x23A2, 0x58FD, 0x0FAA, 0x58FE, 0x264B, 0x58FF, 0x28A9, 0x5902,
+ 0x0224, 0x5903, 0x1785, 0x5906, 0x1857, 0x590A, 0x0224, 0x590C, 0x1944,
+ 0x590D, 0x1A9C, 0x590E, 0x1C6C, 0x590F, 0x0880, 0x5912, 0x3088, 0x5914,
+ 0x166D, 0x5915, 0x027C, 0x5916, 0x032E, 0x5917, 0x179C, 0x5919, 0x03B4,
+ 0x591A, 0x03B5, 0x591C, 0x0581, 0x5920, 0x0A44, 0x5922, 0x0FAC, 0x5924,
+ 0x0FAD, 0x5925, 0x0FAB, 0x5927, 0x027D, 0x5929, 0x02C2, 0x592A, 0x02C4,
+ 0x592B, 0x02C3, 0x592C, 0x1786, 0x592D, 0x02C5, 0x592E, 0x032F, 0x592F,
+ 0x179D, 0x5931, 0x0330, 0x5937, 0x03B6, 0x5938, 0x03B7, 0x593C, 0x17D4,
+ 0x593E, 0x0470, 0x5940, 0x1858, 0x5944, 0x0585, 0x5945, 0x1945, 0x5947,
+ 0x0583, 0x5948, 0x0584, 0x5949, 0x0582, 0x594A, 0x1C6D, 0x594E, 0x06F2,
+ 0x594F, 0x06F1, 0x5950, 0x06F3, 0x5951, 0x06F0, 0x5953, 0x1A9D, 0x5954,
+ 0x0586, 0x5955, 0x06EF, 0x5957, 0x0881, 0x5958, 0x0882, 0x595A, 0x0883,
+ 0x595C, 0x1E95, 0x5960, 0x0C22, 0x5961, 0x20EF, 0x5962, 0x0A45, 0x5967,
+ 0x0DF3, 0x5969, 0x0FAF, 0x596A, 0x0FAE, 0x596B, 0x264C, 0x596D, 0x1129,
+ 0x596E, 0x12A7, 0x5970, 0x2F17, 0x5971, 0x337B, 0x5972, 0x3412, 0x5973,
+ 0x027E, 0x5974, 0x0331, 0x5976, 0x0332, 0x5977, 0x17DA, 0x5978, 0x03B9,
+ 0x5979, 0x03BC, 0x597B, 0x17D8, 0x597C, 0x17D6, 0x597D, 0x03BB, 0x597E,
+ 0x17D9, 0x597F, 0x17DB, 0x5980, 0x17D5, 0x5981, 0x03BE, 0x5982, 0x03BD,
+ 0x5983, 0x03BA, 0x5984, 0x03B8, 0x5985, 0x17D7, 0x598A, 0x047B, 0x598D,
+ 0x0478, 0x598E, 0x185D, 0x598F, 0x1860, 0x5990, 0x185F, 0x5992, 0x0472,
+ 0x5993, 0x047A, 0x5996, 0x0477, 0x5997, 0x185C, 0x5998, 0x185A, 0x5999,
+ 0x0476, 0x599D, 0x0471, 0x599E, 0x0474, 0x59A0, 0x185B, 0x59A1, 0x1862,
+ 0x59A2, 0x185E, 0x59A3, 0x0475, 0x59A4, 0x0479, 0x59A5, 0x047C, 0x59A6,
+ 0x1859, 0x59A7, 0x1861, 0x59A8, 0x0473, 0x59AE, 0x058B, 0x59AF, 0x0593,
+ 0x59B1, 0x1951, 0x59B2, 0x194A, 0x59B3, 0x0594, 0x59B4, 0x1955, 0x59B5,
+ 0x1946, 0x59B6, 0x194D, 0x59B9, 0x058A, 0x59BA, 0x1947, 0x59BB, 0x0588,
+ 0x59BC, 0x194E, 0x59BD, 0x1952, 0x59BE, 0x0587, 0x59C0, 0x1953, 0x59C1,
+ 0x194C, 0x59C3, 0x194F, 0x59C5, 0x0596, 0x59C6, 0x058D, 0x59C7, 0x1956,
+ 0x59C8, 0x1954, 0x59CA, 0x0592, 0x59CB, 0x0590, 0x59CC, 0x194B, 0x59CD,
+ 0x058F, 0x59CE, 0x1949, 0x59CF, 0x1948, 0x59D0, 0x058E, 0x59D1, 0x058C,
+ 0x59D2, 0x0595, 0x59D3, 0x0591, 0x59D4, 0x0589, 0x59D6, 0x1950, 0x59D8,
+ 0x06F5, 0x59DA, 0x06FC, 0x59DB, 0x1AAB, 0x59DC, 0x06F4, 0x59DD, 0x1AA3,
+ 0x59DE, 0x1A9F, 0x59E0, 0x1AAF, 0x59E1, 0x1A9E, 0x59E3, 0x06F7, 0x59E4,
+ 0x1AA8, 0x59E5, 0x06FA, 0x59E6, 0x06FD, 0x59E8, 0x06F8, 0x59E9, 0x1AAC,
+ 0x59EA, 0x06FB, 0x59EC, 0x088A, 0x59ED, 0x1AB2, 0x59EE, 0x1AA0, 0x59F1,
+ 0x1AA2, 0x59F2, 0x1AA9, 0x59F3, 0x1AAD, 0x59F4, 0x1AB1, 0x59F5, 0x1AAE,
+ 0x59F6, 0x1AA7, 0x59F7, 0x1AAA, 0x59FA, 0x1AA4, 0x59FB, 0x06FF, 0x59FC,
+ 0x1AA6, 0x59FD, 0x1AA5, 0x59FE, 0x1AB0, 0x59FF, 0x06F6, 0x5A00, 0x1AA1,
+ 0x5A01, 0x06FE, 0x5A03, 0x06F9, 0x5A09, 0x0890, 0x5A0A, 0x1C75, 0x5A0C,
+ 0x088F, 0x5A0F, 0x1C73, 0x5A11, 0x0884, 0x5A13, 0x0889, 0x5A15, 0x1C72,
+ 0x5A16, 0x1C6F, 0x5A17, 0x1C74, 0x5A18, 0x0885, 0x5A19, 0x1C6E, 0x5A1B,
+ 0x0888, 0x5A1C, 0x0886, 0x5A1E, 0x1C76, 0x5A1F, 0x0887, 0x5A20, 0x088B,
+ 0x5A23, 0x088C, 0x5A25, 0x088E, 0x5A29, 0x088D, 0x5A2D, 0x1C70, 0x5A2E,
+ 0x1C71, 0x5A33, 0x1C77, 0x5A35, 0x1E9C, 0x5A36, 0x0A46, 0x5A37, 0x20FD,
+ 0x5A38, 0x1E9B, 0x5A39, 0x1EAE, 0x5A3C, 0x0A4C, 0x5A3E, 0x1EAC, 0x5A40,
+ 0x0A4B, 0x5A41, 0x0A47, 0x5A42, 0x1EB5, 0x5A43, 0x1EA5, 0x5A44, 0x1EA8,
+ 0x5A46, 0x0A4F, 0x5A47, 0x1EB2, 0x5A48, 0x1EAA, 0x5A49, 0x0A48, 0x5A4A,
+ 0x0A50, 0x5A4C, 0x1EAF, 0x5A4D, 0x1EAD, 0x5A50, 0x1E9E, 0x5A51, 0x1EB3,
+ 0x5A52, 0x1EA7, 0x5A53, 0x1EA2, 0x5A55, 0x1E98, 0x5A56, 0x1EB4, 0x5A57,
+ 0x1EA4, 0x5A58, 0x1E97, 0x5A5A, 0x0A4E, 0x5A5B, 0x1EA9, 0x5A5C, 0x1EB6,
+ 0x5A5D, 0x1EA6, 0x5A5E, 0x1E9A, 0x5A5F, 0x1E9F, 0x5A60, 0x1E96, 0x5A62,
+ 0x0A4D, 0x5A64, 0x1EA3, 0x5A65, 0x1EA0, 0x5A66, 0x0A49, 0x5A67, 0x1E99,
+ 0x5A69, 0x1EB1, 0x5A6A, 0x0A4A, 0x5A6C, 0x1EA1, 0x5A6D, 0x1E9D, 0x5A70,
+ 0x1EB0, 0x5A77, 0x0C23, 0x5A78, 0x20F6, 0x5A7A, 0x20F3, 0x5A7B, 0x2104,
+ 0x5A7C, 0x20F8, 0x5A7D, 0x2105, 0x5A7F, 0x0C25, 0x5A83, 0x2101, 0x5A84,
+ 0x20FE, 0x5A8A, 0x20FF, 0x5A8B, 0x2102, 0x5A8C, 0x2106, 0x5A8E, 0x1EAB,
+ 0x5A8F, 0x2108, 0x5A90, 0x23B6, 0x5A92, 0x0C26, 0x5A93, 0x2109, 0x5A94,
+ 0x20F1, 0x5A95, 0x20FB, 0x5A97, 0x2100, 0x5A9A, 0x0C24, 0x5A9B, 0x0C27,
+ 0x5A9C, 0x2107, 0x5A9D, 0x210A, 0x5A9E, 0x20F5, 0x5A9F, 0x20F2, 0x5AA2,
+ 0x20F4, 0x5AA5, 0x20F9, 0x5AA6, 0x20F7, 0x5AA7, 0x0C28, 0x5AA9, 0x2103,
+ 0x5AAC, 0x20FA, 0x5AAE, 0x20FC, 0x5AAF, 0x20F0, 0x5AB0, 0x23AA, 0x5AB1,
+ 0x23A8, 0x5AB2, 0x0DFC, 0x5AB3, 0x0DFA, 0x5AB4, 0x23B2, 0x5AB5, 0x23A9,
+ 0x5AB6, 0x23B3, 0x5AB7, 0x23AF, 0x5AB8, 0x23A7, 0x5AB9, 0x23B5, 0x5ABA,
+ 0x23A6, 0x5ABB, 0x23AD, 0x5ABC, 0x0DF9, 0x5ABD, 0x0DF8, 0x5ABE, 0x0DF7,
+ 0x5ABF, 0x23AB, 0x5AC0, 0x23B0, 0x5AC1, 0x0DF4, 0x5AC2, 0x0DFB, 0x5AC4,
+ 0x23A4, 0x5AC6, 0x23AE, 0x5AC7, 0x23A3, 0x5AC8, 0x23AC, 0x5AC9, 0x0DF5,
+ 0x5ACA, 0x23B1, 0x5ACB, 0x23A5, 0x5ACC, 0x0DF6, 0x5ACD, 0x23B4, 0x5AD5,
+ 0x2650, 0x5AD6, 0x0FB4, 0x5AD7, 0x0FB3, 0x5AD8, 0x0FB5, 0x5AD9, 0x265C,
+ 0x5ADA, 0x2652, 0x5ADB, 0x2658, 0x5ADC, 0x264D, 0x5ADD, 0x265B, 0x5ADE,
+ 0x265A, 0x5ADF, 0x265E, 0x5AE0, 0x2657, 0x5AE1, 0x0FB0, 0x5AE2, 0x2656,
+ 0x5AE3, 0x0FB6, 0x5AE5, 0x264F, 0x5AE6, 0x0FB1, 0x5AE8, 0x265D, 0x5AE9,
+ 0x0FB2, 0x5AEA, 0x2651, 0x5AEB, 0x2654, 0x5AEC, 0x2659, 0x5AED, 0x2653,
+ 0x5AEE, 0x264E, 0x5AF3, 0x2655, 0x5AF4, 0x28AB, 0x5AF5, 0x112D, 0x5AF6,
+ 0x28AE, 0x5AF7, 0x28AD, 0x5AF8, 0x28B0, 0x5AF9, 0x28B2, 0x5AFA, 0x36EE,
+ 0x5AFB, 0x112B, 0x5AFD, 0x28AC, 0x5AFF, 0x28AA, 0x5B01, 0x28B3, 0x5B02,
+ 0x28B1, 0x5B03, 0x28AF, 0x5B05, 0x28B5, 0x5B07, 0x28B4, 0x5B08, 0x112F,
+ 0x5B09, 0x112A, 0x5B0B, 0x112C, 0x5B0C, 0x112E, 0x5B0F, 0x28B6, 0x5B10,
+ 0x2B22, 0x5B13, 0x2B21, 0x5B14, 0x2B20, 0x5B16, 0x2B23, 0x5B17, 0x2B1C,
+ 0x5B19, 0x2B1D, 0x5B1A, 0x2B25, 0x5B1B, 0x2B1E, 0x5B1D, 0x12A8, 0x5B1E,
+ 0x2B27, 0x5B20, 0x2B26, 0x5B21, 0x2B1F, 0x5B23, 0x2D52, 0x5B24, 0x13C5,
+ 0x5B25, 0x2D50, 0x5B26, 0x2D55, 0x5B27, 0x2D54, 0x5B28, 0x2B24, 0x5B2A,
+ 0x13C4, 0x5B2C, 0x2D53, 0x5B2D, 0x2D4F, 0x5B2E, 0x2D57, 0x5B2F, 0x2D56,
+ 0x5B30, 0x13C3, 0x5B32, 0x2D51, 0x5B34, 0x12A9, 0x5B38, 0x14CE, 0x5B3C,
+ 0x2F18, 0x5B3D, 0x3089, 0x5B3E, 0x308A, 0x5B3F, 0x308B, 0x5B40, 0x160F,
+ 0x5B43, 0x1610, 0x5B45, 0x31CC, 0x5B47, 0x32CD, 0x5B48, 0x32CC, 0x5B4B,
+ 0x337C, 0x5B4C, 0x337D, 0x5B4D, 0x3413, 0x5B4E, 0x3482, 0x5B50, 0x027F,
+ 0x5B51, 0x0280, 0x5B53, 0x0281, 0x5B54, 0x02C6, 0x5B55, 0x0333, 0x5B56,
+ 0x17DC, 0x5B57, 0x03BF, 0x5B58, 0x03C0, 0x5B5A, 0x047F, 0x5B5B, 0x0480,
+ 0x5B5C, 0x047E, 0x5B5D, 0x047D, 0x5B5F, 0x0597, 0x5B62, 0x1957, 0x5B63,
+ 0x0599, 0x5B64, 0x0598, 0x5B65, 0x1958, 0x5B69, 0x0700, 0x5B6B, 0x0891,
+ 0x5B6C, 0x1C78, 0x5B6E, 0x1EB8, 0x5B70, 0x0A51, 0x5B71, 0x0C2A, 0x5B72,
+ 0x1EB7, 0x5B73, 0x0C29, 0x5B75, 0x0FB7, 0x5B77, 0x265F, 0x5B78, 0x12AA,
+ 0x5B7A, 0x13C6, 0x5B7B, 0x2D58, 0x5B7D, 0x1611, 0x5B7F, 0x16C0, 0x5B80,
+ 0x0225, 0x5B81, 0x179E, 0x5B83, 0x0334, 0x5B84, 0x179F, 0x5B85, 0x03C3,
+ 0x5B87, 0x03C1, 0x5B88, 0x03C2, 0x5B89, 0x03C4, 0x5B8B, 0x0482, 0x5B8C,
+ 0x0481, 0x5B8E, 0x1863, 0x5B8F, 0x0483, 0x5B92, 0x1864, 0x5B93, 0x1959,
+ 0x5B95, 0x195A, 0x5B97, 0x059A, 0x5B98, 0x059C, 0x5B99, 0x059E, 0x5B9A,
+ 0x059B, 0x5B9B, 0x059F, 0x5B9C, 0x059D, 0x5BA2, 0x0704, 0x5BA3, 0x0701,
+ 0x5BA4, 0x0703, 0x5BA5, 0x0705, 0x5BA6, 0x0702, 0x5BA7, 0x1C79, 0x5BA8,
+ 0x1AB3, 0x5BAC, 0x1C7B, 0x5BAD, 0x1C7A, 0x5BAE, 0x0897, 0x5BB0, 0x0893,
+ 0x5BB3, 0x0894, 0x5BB4, 0x0896, 0x5BB5, 0x0898, 0x5BB6, 0x0895, 0x5BB8,
+ 0x089A, 0x5BB9, 0x0899, 0x5BBF, 0x0A56, 0x5BC0, 0x1EBA, 0x5BC1, 0x1EB9,
+ 0x5BC2, 0x0A55, 0x5BC4, 0x0A54, 0x5BC5, 0x0A53, 0x5BC6, 0x0A57, 0x5BC7,
+ 0x0A52, 0x5BCA, 0x2110, 0x5BCB, 0x210D, 0x5BCC, 0x0C2C, 0x5BCD, 0x210C,
+ 0x5BCE, 0x2111, 0x5BD0, 0x0C2E, 0x5BD1, 0x210F, 0x5BD2, 0x0C2B, 0x5BD3,
+ 0x0C2D, 0x5BD4, 0x210E, 0x5BD6, 0x23B7, 0x5BD8, 0x23B8, 0x5BD9, 0x23B9,
+ 0x5BDE, 0x0FB8, 0x5BDF, 0x0FC0, 0x5BE0, 0x2660, 0x5BE1, 0x0FBA, 0x5BE2,
+ 0x0FBE, 0x5BE3, 0x2661, 0x5BE4, 0x0FBF, 0x5BE5, 0x0FBB, 0x5BE6, 0x0FBC,
+ 0x5BE7, 0x0FB9, 0x5BE8, 0x0FBD, 0x5BE9, 0x1132, 0x5BEA, 0x210B, 0x5BEB,
+ 0x1133, 0x5BEC, 0x1131, 0x5BEE, 0x1130, 0x5BEF, 0x2B28, 0x5BF0, 0x12AB,
+ 0x5BF1, 0x2D59, 0x5BF2, 0x2D5A, 0x5BF5, 0x157B, 0x5BF6, 0x1612, 0x5BF8,
+ 0x0282, 0x5BFA, 0x03C5, 0x5C01, 0x0706, 0x5C03, 0x1C7C, 0x5C04, 0x089B,
+ 0x5C07, 0x0A5A, 0x5C08, 0x0A59, 0x5C09, 0x0A58, 0x5C0A, 0x0C2F, 0x5C0B,
+ 0x0C30, 0x5C0C, 0x2112, 0x5C0D, 0x0FC1, 0x5C0E, 0x12AC, 0x5C0F, 0x0283,
+ 0x5C10, 0x1787, 0x5C11, 0x02C7, 0x5C12, 0x17A0, 0x5C15, 0x17DD, 0x5C16,
+ 0x03C6, 0x5C1A, 0x05A0, 0x5C1F, 0x23BA, 0x5C22, 0x0284, 0x5C24, 0x02C8,
+ 0x5C25, 0x17DE, 0x5C28, 0x1865, 0x5C2A, 0x1866, 0x5C2C, 0x0484, 0x5C30,
+ 0x2113, 0x5C31, 0x0C31, 0x5C33, 0x23BB, 0x5C37, 0x13C7, 0x5C38, 0x0285,
+ 0x5C39, 0x0299, 0x5C3A, 0x02C9, 0x5C3B, 0x17A1, 0x5C3C, 0x0335, 0x5C3E,
+ 0x0488, 0x5C3F, 0x0487, 0x5C40, 0x0485, 0x5C41, 0x0486, 0x5C44, 0x195B,
+ 0x5C45, 0x05A2, 0x5C46, 0x05A3, 0x5C47, 0x195C, 0x5C48, 0x05A1, 0x5C4B,
+ 0x070A, 0x5C4C, 0x1AB4, 0x5C4D, 0x0709, 0x5C4E, 0x0707, 0x5C4F, 0x0708,
+ 0x5C50, 0x089E, 0x5C51, 0x089C, 0x5C54, 0x1C7E, 0x5C55, 0x089D, 0x5C56,
+ 0x1C7D, 0x5C58, 0x0892, 0x5C59, 0x1EBB, 0x5C5C, 0x0A5C, 0x5C5D, 0x0A5D,
+ 0x5C60, 0x0A5B, 0x5C62, 0x0FC2, 0x5C63, 0x2662, 0x5C64, 0x1134, 0x5C65,
+ 0x1135, 0x5C67, 0x28B7, 0x5C68, 0x13C8, 0x5C69, 0x2F19, 0x5C6A, 0x2F1A,
+ 0x5C6C, 0x166E, 0x5C6D, 0x3483, 0x5C6E, 0x1776, 0x5C6F, 0x02CA, 0x5C71,
+ 0x0286, 0x5C73, 0x17A3, 0x5C74, 0x17A2, 0x5C79, 0x03C7, 0x5C7A, 0x17E0,
+ 0x5C7B, 0x17E1, 0x5C7C, 0x17DF, 0x5C7E, 0x17E2, 0x5C86, 0x186E, 0x5C88,
+ 0x1869, 0x5C89, 0x186B, 0x5C8A, 0x186D, 0x5C8B, 0x186A, 0x5C8C, 0x048C,
+ 0x5C8D, 0x1867, 0x5C8F, 0x1868, 0x5C90, 0x0489, 0x5C91, 0x048A, 0x5C92,
+ 0x186C, 0x5C93, 0x186F, 0x5C94, 0x048B, 0x5C95, 0x1870, 0x5C9D, 0x196A,
+ 0x5C9F, 0x1964, 0x5CA0, 0x195F, 0x5CA1, 0x05A5, 0x5CA2, 0x1967, 0x5CA3,
+ 0x1965, 0x5CA4, 0x195E, 0x5CA5, 0x196B, 0x5CA6, 0x196E, 0x5CA7, 0x1969,
+ 0x5CA8, 0x1962, 0x5CA9, 0x05A7, 0x5CAA, 0x1968, 0x5CAB, 0x05A8, 0x5CAC,
+ 0x1963, 0x5CAD, 0x1966, 0x5CAE, 0x195D, 0x5CAF, 0x1961, 0x5CB0, 0x196D,
+ 0x5CB1, 0x05A9, 0x5CB3, 0x05AA, 0x5CB5, 0x1960, 0x5CB6, 0x196C, 0x5CB7,
+ 0x05A4, 0x5CB8, 0x05A6, 0x5CC6, 0x1AC5, 0x5CC7, 0x1ABE, 0x5CC8, 0x1AC4,
+ 0x5CC9, 0x1ABD, 0x5CCA, 0x1ABF, 0x5CCB, 0x1AB9, 0x5CCC, 0x1AB7, 0x5CCE,
+ 0x1AC6, 0x5CCF, 0x1AC3, 0x5CD0, 0x1AB5, 0x5CD2, 0x070C, 0x5CD3, 0x1AC1,
+ 0x5CD4, 0x1AC2, 0x5CD6, 0x1AC0, 0x5CD7, 0x1AB8, 0x5CD8, 0x1AB6, 0x5CD9,
+ 0x070B, 0x5CDA, 0x1ABC, 0x5CDB, 0x1ABA, 0x5CDE, 0x1ABB, 0x5CDF, 0x1AC7,
+ 0x5CE8, 0x08A3, 0x5CEA, 0x08A2, 0x5CEC, 0x1C7F, 0x5CED, 0x089F, 0x5CEE,
+ 0x1C81, 0x5CF0, 0x08A4, 0x5CF1, 0x1C82, 0x5CF4, 0x08A7, 0x5CF6, 0x08A5,
+ 0x5CF7, 0x1C83, 0x5CF8, 0x1AC8, 0x5CF9, 0x1C85, 0x5CFB, 0x08A1, 0x5CFD,
+ 0x08A0, 0x5CFF, 0x1C80, 0x5D00, 0x1C84, 0x5D01, 0x08A6, 0x5D06, 0x0A5F,
+ 0x5D07, 0x0A5E, 0x5D0B, 0x1EBD, 0x5D0C, 0x1EC1, 0x5D0D, 0x1EC3, 0x5D0E,
+ 0x0A60, 0x5D0F, 0x1EC6, 0x5D11, 0x0A64, 0x5D12, 0x1EC8, 0x5D14, 0x0A66,
+ 0x5D16, 0x0A62, 0x5D17, 0x0A6A, 0x5D19, 0x0A67, 0x5D1A, 0x1EBF, 0x5D1B,
+ 0x0A61, 0x5D1D, 0x1EBE, 0x5D1E, 0x1EBC, 0x5D1F, 0x1ECA, 0x5D20, 0x1EC0,
+ 0x5D22, 0x0A63, 0x5D23, 0x1EC9, 0x5D24, 0x0A68, 0x5D25, 0x1EC5, 0x5D26,
+ 0x1EC4, 0x5D27, 0x0A69, 0x5D28, 0x1EC2, 0x5D29, 0x0A65, 0x5D2E, 0x1ECB,
+ 0x5D30, 0x1EC7, 0x5D31, 0x2122, 0x5D32, 0x2129, 0x5D33, 0x211E, 0x5D34,
+ 0x0C34, 0x5D35, 0x211A, 0x5D36, 0x212A, 0x5D37, 0x2114, 0x5D38, 0x2127,
+ 0x5D39, 0x2125, 0x5D3A, 0x211F, 0x5D3C, 0x2128, 0x5D3D, 0x2121, 0x5D3F,
+ 0x2119, 0x5D40, 0x212B, 0x5D41, 0x2117, 0x5D42, 0x2124, 0x5D43, 0x2115,
+ 0x5D45, 0x212C, 0x5D47, 0x0C35, 0x5D49, 0x2126, 0x5D4A, 0x23BE, 0x5D4B,
+ 0x2118, 0x5D4C, 0x0C32, 0x5D4E, 0x211C, 0x5D50, 0x0C33, 0x5D51, 0x211B,
+ 0x5D52, 0x2120, 0x5D55, 0x211D, 0x5D59, 0x2123, 0x5D5E, 0x23C2, 0x5D62,
+ 0x23C5, 0x5D63, 0x23BD, 0x5D65, 0x23BF, 0x5D67, 0x23C4, 0x5D68, 0x23C3,
+ 0x5D69, 0x0DFD, 0x5D6B, 0x2116, 0x5D6C, 0x23C1, 0x5D6F, 0x0DFE, 0x5D71,
+ 0x23BC, 0x5D72, 0x23C0, 0x5D77, 0x2669, 0x5D79, 0x2670, 0x5D7A, 0x2667,
+ 0x5D7C, 0x266E, 0x5D7D, 0x2665, 0x5D7E, 0x266D, 0x5D7F, 0x2671, 0x5D80,
+ 0x2664, 0x5D81, 0x2668, 0x5D82, 0x2663, 0x5D84, 0x0FC3, 0x5D86, 0x2666,
+ 0x5D87, 0x0FC4, 0x5D88, 0x266C, 0x5D89, 0x266B, 0x5D8A, 0x266A, 0x5D8D,
+ 0x266F, 0x5D92, 0x28BB, 0x5D93, 0x28BD, 0x5D94, 0x1137, 0x5D95, 0x28BE,
+ 0x5D97, 0x28B9, 0x5D99, 0x28B8, 0x5D9A, 0x28C2, 0x5D9C, 0x28C0, 0x5D9D,
+ 0x1136, 0x5D9E, 0x28C3, 0x5D9F, 0x28BA, 0x5DA0, 0x28BF, 0x5DA1, 0x28C1,
+ 0x5DA2, 0x28BC, 0x5DA7, 0x2B2C, 0x5DA8, 0x2B31, 0x5DA9, 0x2B2B, 0x5DAA,
+ 0x2B30, 0x5DAC, 0x2B29, 0x5DAD, 0x2B33, 0x5DAE, 0x2B2F, 0x5DAF, 0x2B34,
+ 0x5DB0, 0x2B2E, 0x5DB1, 0x2B2A, 0x5DB2, 0x2B32, 0x5DB4, 0x2B35, 0x5DB5,
+ 0x2B2D, 0x5DB7, 0x2D5B, 0x5DB8, 0x13CC, 0x5DBA, 0x13CA, 0x5DBC, 0x13C9,
+ 0x5DBD, 0x13CB, 0x5DC0, 0x2F1B, 0x5DC2, 0x3023, 0x5DC3, 0x308C, 0x5DC6,
+ 0x31CD, 0x5DC7, 0x31CE, 0x5DC9, 0x1613, 0x5DCB, 0x32CE, 0x5DCD, 0x166F,
+ 0x5DCF, 0x32CF, 0x5DD1, 0x337F, 0x5DD2, 0x16C2, 0x5DD4, 0x16C1, 0x5DD5,
+ 0x337E, 0x5DD6, 0x16F7, 0x5DD8, 0x3414, 0x5DDB, 0x0226, 0x5DDD, 0x0287,
+ 0x5DDE, 0x03C8, 0x5DDF, 0x17E3, 0x5DE0, 0x1871, 0x5DE1, 0x051A, 0x5DE2,
+ 0x0A6B, 0x5DE5, 0x0288, 0x5DE6, 0x0338, 0x5DE7, 0x0337, 0x5DE8, 0x0336,
+ 0x5DEB, 0x048D, 0x5DEE, 0x08A8, 0x5DF0, 0x23C6, 0x5DF1, 0x0289, 0x5DF2,
+ 0x028A, 0x5DF3, 0x028B, 0x5DF4, 0x02CB, 0x5DF7, 0x070D, 0x5DF9, 0x1AC9,
+ 0x5DFD, 0x0C36, 0x5DFE, 0x028C, 0x5DFF, 0x1788, 0x5E02, 0x0339, 0x5E03,
+ 0x033A, 0x5E04, 0x17A4, 0x5E06, 0x03C9, 0x5E0A, 0x1872, 0x5E0C, 0x048E,
+ 0x5E0E, 0x1873, 0x5E11, 0x05B0, 0x5E14, 0x1970, 0x5E15, 0x05AE, 0x5E16,
+ 0x05AD, 0x5E17, 0x196F, 0x5E18, 0x05AB, 0x5E19, 0x1971, 0x5E1A, 0x05AC,
+ 0x5E1B, 0x05AF, 0x5E1D, 0x070E, 0x5E1F, 0x0710, 0x5E20, 0x1ACD, 0x5E21,
+ 0x1ACA, 0x5E22, 0x1ACB, 0x5E23, 0x1ACC, 0x5E24, 0x1ACE, 0x5E25, 0x070F,
+ 0x5E28, 0x1C87, 0x5E29, 0x1C86, 0x5E2B, 0x08AA, 0x5E2D, 0x08A9, 0x5E33,
+ 0x0A6E, 0x5E34, 0x1ECD, 0x5E36, 0x0A6D, 0x5E37, 0x0A6F, 0x5E38, 0x0A6C,
+ 0x5E3D, 0x0C38, 0x5E3E, 0x1ECC, 0x5E40, 0x0C39, 0x5E41, 0x212E, 0x5E43,
+ 0x0C3A, 0x5E44, 0x212D, 0x5E45, 0x0C37, 0x5E4A, 0x23C9, 0x5E4B, 0x23CB,
+ 0x5E4C, 0x0DFF, 0x5E4D, 0x23CA, 0x5E4E, 0x23C8, 0x5E4F, 0x23C7, 0x5E53,
+ 0x2674, 0x5E54, 0x0FC9, 0x5E55, 0x0FC7, 0x5E57, 0x0FC8, 0x5E58, 0x2672,
+ 0x5E59, 0x2673, 0x5E5B, 0x0FC5, 0x5E5C, 0x28C7, 0x5E5D, 0x28C5, 0x5E5F,
+ 0x1139, 0x5E60, 0x28C6, 0x5E61, 0x113A, 0x5E62, 0x1138, 0x5E63, 0x0FC6,
+ 0x5E66, 0x2B38, 0x5E67, 0x2B36, 0x5E68, 0x2B37, 0x5E69, 0x28C4, 0x5E6A,
+ 0x2D5D, 0x5E6B, 0x13CD, 0x5E6C, 0x2D5C, 0x5E6D, 0x2F1C, 0x5E6E, 0x2F1D,
+ 0x5E6F, 0x2B39, 0x5E70, 0x308D, 0x5E72, 0x028D, 0x5E73, 0x033B, 0x5E74,
+ 0x03CB, 0x5E75, 0x17E4, 0x5E76, 0x03CA, 0x5E78, 0x05B1, 0x5E79, 0x0E00,
+ 0x5E7A, 0x0227, 0x5E7B, 0x02CC, 0x5E7C, 0x033C, 0x5E7D, 0x0711, 0x5E7E,
+ 0x0C3B, 0x5E7F, 0x0228, 0x5E80, 0x17A5, 0x5E82, 0x17A6, 0x5E84, 0x17E5,
+ 0x5E87, 0x0490, 0x5E88, 0x1877, 0x5E89, 0x1875, 0x5E8A, 0x0491, 0x5E8B,
+ 0x1874, 0x5E8C, 0x1876, 0x5E8D, 0x1878, 0x5E8F, 0x048F, 0x5E95, 0x05B5,
+ 0x5E96, 0x05B6, 0x5E97, 0x05B3, 0x5E9A, 0x05B2, 0x5E9B, 0x1AD2, 0x5E9C,
+ 0x05B4, 0x5EA0, 0x0712, 0x5EA2, 0x1AD1, 0x5EA3, 0x1AD3, 0x5EA4, 0x1AD0,
+ 0x5EA5, 0x1AD4, 0x5EA6, 0x0713, 0x5EA7, 0x08AD, 0x5EA8, 0x1C88, 0x5EAA,
+ 0x1C8A, 0x5EAB, 0x08AB, 0x5EAC, 0x1C8B, 0x5EAD, 0x08AC, 0x5EAE, 0x1C89,
+ 0x5EB0, 0x1ACF, 0x5EB1, 0x1ECE, 0x5EB2, 0x1ED1, 0x5EB3, 0x1ED2, 0x5EB4,
+ 0x1ECF, 0x5EB5, 0x0A73, 0x5EB6, 0x0A72, 0x5EB7, 0x0A70, 0x5EB8, 0x0A71,
+ 0x5EB9, 0x1ED0, 0x5EBE, 0x0A74, 0x5EC1, 0x0C3D, 0x5EC2, 0x0C3E, 0x5EC4,
+ 0x0C3F, 0x5EC5, 0x23CC, 0x5EC6, 0x23CE, 0x5EC7, 0x23D0, 0x5EC8, 0x0E02,
+ 0x5EC9, 0x0E01, 0x5ECA, 0x0C3C, 0x5ECB, 0x23CF, 0x5ECC, 0x23CD, 0x5ECE,
+ 0x2678, 0x5ED1, 0x2676, 0x5ED2, 0x267C, 0x5ED3, 0x0FCA, 0x5ED4, 0x267D,
+ 0x5ED5, 0x267A, 0x5ED6, 0x0FCB, 0x5ED7, 0x2677, 0x5ED8, 0x2675, 0x5ED9,
+ 0x267B, 0x5EDA, 0x113C, 0x5EDB, 0x28C9, 0x5EDC, 0x2679, 0x5EDD, 0x113E,
+ 0x5EDE, 0x28CA, 0x5EDF, 0x113D, 0x5EE0, 0x1140, 0x5EE1, 0x28CB, 0x5EE2,
+ 0x113B, 0x5EE3, 0x113F, 0x5EE5, 0x2B3E, 0x5EE6, 0x2B3C, 0x5EE7, 0x2B3B,
+ 0x5EE8, 0x2B3D, 0x5EE9, 0x2B3A, 0x5EEC, 0x157D, 0x5EEE, 0x31CF, 0x5EEF,
+ 0x31D0, 0x5EF1, 0x32D0, 0x5EF2, 0x3380, 0x5EF3, 0x1742, 0x5EF4, 0x0229,
+ 0x5EF6, 0x05B7, 0x5EF7, 0x0492, 0x5EFA, 0x0714, 0x5EFE, 0x028E, 0x5EFF,
+ 0x02CD, 0x5F01, 0x033D, 0x5F02, 0x17E6, 0x5F04, 0x0493, 0x5F05, 0x1879,
+ 0x5F07, 0x1AD5, 0x5F08, 0x0715, 0x5F0A, 0x0FCC, 0x5F0B, 0x028F, 0x5F0F,
+ 0x03CC, 0x5F12, 0x0E03, 0x5F13, 0x0290, 0x5F14, 0x02CE, 0x5F15, 0x02CF,
+ 0x5F17, 0x033F, 0x5F18, 0x033E, 0x5F1A, 0x17E7, 0x5F1B, 0x03CD, 0x5F1D,
+ 0x187A, 0x5F1F, 0x0494, 0x5F22, 0x1973, 0x5F23, 0x1974, 0x5F24, 0x1975,
+ 0x5F26, 0x05B8, 0x5F27, 0x05B9, 0x5F28, 0x1972, 0x5F29, 0x05BA, 0x5F2D,
+ 0x0716, 0x5F2E, 0x1AD6, 0x5F30, 0x1C8D, 0x5F31, 0x08AE, 0x5F33, 0x1C8C,
+ 0x5F35, 0x0A75, 0x5F36, 0x1ED3, 0x5F37, 0x0A76, 0x5F38, 0x1ED4, 0x5F3C,
+ 0x0C40, 0x5F40, 0x23D1, 0x5F43, 0x267F, 0x5F44, 0x267E, 0x5F46, 0x0FCD,
+ 0x5F48, 0x1141, 0x5F49, 0x28CC, 0x5F4A, 0x12AD, 0x5F4B, 0x2B3F, 0x5F4C,
+ 0x13CE, 0x5F4E, 0x16C3, 0x5F4F, 0x3416, 0x5F50, 0x022A, 0x5F54, 0x1976,
+ 0x5F56, 0x1AD7, 0x5F57, 0x0A77, 0x5F58, 0x212F, 0x5F59, 0x0E04, 0x5F5D,
+ 0x14CF, 0x5F61, 0x022B, 0x5F62, 0x0496, 0x5F64, 0x0495, 0x5F65, 0x0717,
+ 0x5F67, 0x1C8E, 0x5F69, 0x0A79, 0x5F6A, 0x0B89, 0x5F6B, 0x0A7A, 0x5F6C,
+ 0x0A78, 0x5F6D, 0x0C41, 0x5F6F, 0x2680, 0x5F70, 0x0FCE, 0x5F71, 0x1142,
+ 0x5F73, 0x1777, 0x5F74, 0x17E8, 0x5F76, 0x187C, 0x5F77, 0x0497, 0x5F78,
+ 0x187B, 0x5F79, 0x0498, 0x5F7C, 0x05BE, 0x5F7D, 0x1979, 0x5F7E, 0x1978,
+ 0x5F7F, 0x05BD, 0x5F80, 0x05BB, 0x5F81, 0x05BC, 0x5F82, 0x1977, 0x5F85,
+ 0x0719, 0x5F86, 0x1AD8, 0x5F87, 0x071C, 0x5F88, 0x0718, 0x5F89, 0x071E,
+ 0x5F8A, 0x071A, 0x5F8B, 0x071B, 0x5F8C, 0x071D, 0x5F90, 0x08B1, 0x5F91,
+ 0x08B0, 0x5F92, 0x08AF, 0x5F96, 0x1ED6, 0x5F97, 0x0A7B, 0x5F98, 0x0A7E,
+ 0x5F99, 0x0A7C, 0x5F9B, 0x1ED5, 0x5F9C, 0x0A81, 0x5F9E, 0x0A7D, 0x5F9F,
+ 0x1ED7, 0x5FA0, 0x0A80, 0x5FA1, 0x0A7F, 0x5FA5, 0x2131, 0x5FA6, 0x2130,
+ 0x5FA8, 0x0C44, 0x5FA9, 0x0C42, 0x5FAA, 0x0C43, 0x5FAB, 0x2132, 0x5FAC,
+ 0x0E05, 0x5FAD, 0x23D3, 0x5FAE, 0x0E06, 0x5FAF, 0x23D2, 0x5FB2, 0x28CD,
+ 0x5FB5, 0x1144, 0x5FB6, 0x2681, 0x5FB7, 0x1143, 0x5FB9, 0x0FCF, 0x5FBB,
+ 0x2B41, 0x5FBC, 0x2B40, 0x5FBD, 0x13CF, 0x5FBE, 0x2D5E, 0x5FBF, 0x308E,
+ 0x5FC0, 0x31D1, 0x5FC1, 0x31D2, 0x5FC3, 0x02D0, 0x5FC5, 0x0340, 0x5FC9,
+ 0x17A7, 0x5FCC, 0x049A, 0x5FCD, 0x049C, 0x5FCF, 0x17EB, 0x5FD0, 0x187F,
+ 0x5FD1, 0x187E, 0x5FD2, 0x187D, 0x5FD4, 0x17EA, 0x5FD5, 0x17E9, 0x5FD6,
+ 0x03CF, 0x5FD7, 0x049B, 0x5FD8, 0x0499, 0x5FD9, 0x03CE, 0x5FDD, 0x05BF,
+ 0x5FDE, 0x197A, 0x5FE0, 0x05C0, 0x5FE1, 0x1884, 0x5FE3, 0x1886, 0x5FE4,
+ 0x1885, 0x5FE5, 0x197B, 0x5FE8, 0x1881, 0x5FEA, 0x04A0, 0x5FEB, 0x049E,
+ 0x5FED, 0x1880, 0x5FEE, 0x1882, 0x5FEF, 0x1888, 0x5FF1, 0x049D, 0x5FF3,
+ 0x1883, 0x5FF4, 0x188C, 0x5FF5, 0x05C2, 0x5FF7, 0x1889, 0x5FF8, 0x049F,
+ 0x5FFA, 0x1887, 0x5FFB, 0x188A, 0x5FFD, 0x05C1, 0x5FFF, 0x05C3, 0x6000,
+ 0x188B, 0x6009, 0x198F, 0x600A, 0x1982, 0x600B, 0x1980, 0x600C, 0x198E,
+ 0x600D, 0x1989, 0x600E, 0x0723, 0x600F, 0x05C4, 0x6010, 0x198A, 0x6011,
+ 0x198D, 0x6012, 0x071F, 0x6013, 0x198C, 0x6014, 0x05C5, 0x6015, 0x05CA,
+ 0x6016, 0x05C8, 0x6017, 0x1983, 0x6019, 0x197E, 0x601A, 0x1985, 0x601B,
+ 0x05CF, 0x601C, 0x1990, 0x601D, 0x0720, 0x601E, 0x1986, 0x6020, 0x0721,
+ 0x6021, 0x05CB, 0x6022, 0x1988, 0x6024, 0x1AE7, 0x6025, 0x0722, 0x6026,
+ 0x197D, 0x6027, 0x05CC, 0x6028, 0x0724, 0x6029, 0x05CD, 0x602A, 0x05C9,
+ 0x602B, 0x05CE, 0x602C, 0x1987, 0x602D, 0x197C, 0x602E, 0x198B, 0x602F,
+ 0x05C6, 0x6032, 0x197F, 0x6033, 0x1984, 0x6034, 0x1981, 0x6035, 0x05C7,
+ 0x6037, 0x1AD9, 0x6039, 0x1ADA, 0x6040, 0x1AE4, 0x6041, 0x1C92, 0x6042,
+ 0x1AE5, 0x6043, 0x072A, 0x6044, 0x1AE8, 0x6045, 0x1ADE, 0x6046, 0x0729,
+ 0x6047, 0x1AE0, 0x6049, 0x1AE1, 0x604C, 0x1AE3, 0x604D, 0x0725, 0x6050,
+ 0x08B5, 0x6052, 0x36EC, 0x6053, 0x1ADF, 0x6054, 0x1ADB, 0x6055, 0x08B6,
+ 0x6058, 0x1AE9, 0x6059, 0x08B2, 0x605A, 0x1C90, 0x605B, 0x1AE2, 0x605D,
+ 0x1C8F, 0x605E, 0x1ADD, 0x605F, 0x1AE6, 0x6062, 0x0728, 0x6063, 0x08B3,
+ 0x6064, 0x072E, 0x6065, 0x08B4, 0x6066, 0x1AEA, 0x6067, 0x1C91, 0x6068,
+ 0x0727, 0x6069, 0x08B8, 0x606A, 0x072D, 0x606B, 0x072C, 0x606C, 0x072B,
+ 0x606D, 0x08B7, 0x606E, 0x1AEB, 0x606F, 0x08B9, 0x6070, 0x0726, 0x6072,
+ 0x1ADC, 0x607F, 0x0A82, 0x6080, 0x1C95, 0x6081, 0x1C97, 0x6083, 0x1C99,
+ 0x6084, 0x08BA, 0x6085, 0x08C0, 0x6086, 0x1EDA, 0x6087, 0x1C9D, 0x6088,
+ 0x1C94, 0x6089, 0x0A84, 0x608A, 0x1ED8, 0x608C, 0x08BF, 0x608D, 0x08BD,
+ 0x608E, 0x1C9F, 0x6090, 0x1ED9, 0x6092, 0x1C96, 0x6094, 0x08BE, 0x6095,
+ 0x1C9A, 0x6096, 0x08C1, 0x6097, 0x1C9C, 0x609A, 0x08BC, 0x609B, 0x1C9B,
+ 0x609C, 0x1C9E, 0x609D, 0x1C98, 0x609F, 0x08BB, 0x60A0, 0x0A85, 0x60A2,
+ 0x1C93, 0x60A3, 0x0A83, 0x60A8, 0x0A86, 0x60B0, 0x1EDC, 0x60B1, 0x1EE5,
+ 0x60B2, 0x0C47, 0x60B4, 0x0A88, 0x60B5, 0x0A8D, 0x60B6, 0x0C48, 0x60B7,
+ 0x1EE7, 0x60B8, 0x0A94, 0x60B9, 0x2134, 0x60BA, 0x1EDD, 0x60BB, 0x0A8C,
+ 0x60BC, 0x0A8F, 0x60BD, 0x0A8A, 0x60BE, 0x1EDB, 0x60BF, 0x1EE9, 0x60C0,
+ 0x1EEC, 0x60C1, 0x2143, 0x60C3, 0x1EEA, 0x60C4, 0x2138, 0x60C5, 0x0A8B,
+ 0x60C6, 0x0A92, 0x60C7, 0x0A96, 0x60C8, 0x1EE4, 0x60C9, 0x2133, 0x60CA,
+ 0x1EE8, 0x60CB, 0x0A87, 0x60CC, 0x2135, 0x60CD, 0x1EEB, 0x60CE, 0x2137,
+ 0x60CF, 0x1EE0, 0x60D1, 0x0C45, 0x60D3, 0x1EDE, 0x60D4, 0x1EDF, 0x60D5,
+ 0x0A91, 0x60D8, 0x0A90, 0x60D9, 0x1EE2, 0x60DA, 0x0A95, 0x60DB, 0x1EE6,
+ 0x60DC, 0x0A8E, 0x60DD, 0x1EE3, 0x60DF, 0x0A93, 0x60E0, 0x0C49, 0x60E1,
+ 0x0C46, 0x60E2, 0x2136, 0x60E4, 0x1EE1, 0x60E6, 0x0A89, 0x60F0, 0x0C4E,
+ 0x60F1, 0x0C52, 0x60F2, 0x213A, 0x60F3, 0x0E0B, 0x60F4, 0x0C50, 0x60F5,
+ 0x213E, 0x60F6, 0x0C54, 0x60F7, 0x23D4, 0x60F8, 0x2140, 0x60F9, 0x0E0D,
+ 0x60FA, 0x0C4C, 0x60FB, 0x0C4F, 0x60FC, 0x2141, 0x60FE, 0x2142, 0x60FF,
+ 0x2148, 0x6100, 0x0C56, 0x6101, 0x0E0E, 0x6103, 0x2144, 0x6104, 0x2149,
+ 0x6105, 0x213D, 0x6106, 0x0E18, 0x6108, 0x0E0F, 0x6109, 0x0C55, 0x610A,
+ 0x213B, 0x610B, 0x214A, 0x610D, 0x0E17, 0x610E, 0x0C53, 0x610F, 0x0E08,
+ 0x6110, 0x2147, 0x6112, 0x0C57, 0x6113, 0x213F, 0x6114, 0x2139, 0x6115,
+ 0x0C4D, 0x6116, 0x213C, 0x6118, 0x2145, 0x611A, 0x0E07, 0x611B, 0x0E0C,
+ 0x611C, 0x0C4A, 0x611D, 0x2146, 0x611F, 0x0E0A, 0x6123, 0x0C4B, 0x6127,
+ 0x0E16, 0x6128, 0x2683, 0x6129, 0x23DF, 0x612B, 0x23D7, 0x612C, 0x2682,
+ 0x612E, 0x23DB, 0x612F, 0x23DD, 0x6132, 0x23DA, 0x6134, 0x0E15, 0x6136,
+ 0x23D9, 0x6137, 0x0E19, 0x613B, 0x2692, 0x613E, 0x0E14, 0x613F, 0x0FD1,
+ 0x6140, 0x23E0, 0x6141, 0x2684, 0x6144, 0x0E12, 0x6145, 0x23D8, 0x6146,
+ 0x23DC, 0x6147, 0x0FD0, 0x6148, 0x0E09, 0x6149, 0x23D5, 0x614A, 0x23D6,
+ 0x614B, 0x0FD2, 0x614C, 0x0E11, 0x614D, 0x0E13, 0x614E, 0x0E10, 0x614F,
+ 0x23DE, 0x6152, 0x2688, 0x6153, 0x2689, 0x6154, 0x268E, 0x6155, 0x1149,
+ 0x6156, 0x2695, 0x6158, 0x0FD8, 0x615A, 0x0FD7, 0x615B, 0x2690, 0x615D,
+ 0x1148, 0x615E, 0x2685, 0x615F, 0x0FD6, 0x6161, 0x2694, 0x6162, 0x0FD4,
+ 0x6163, 0x0FD5, 0x6165, 0x2691, 0x6166, 0x28DE, 0x6167, 0x1146, 0x6168,
+ 0x0C51, 0x616A, 0x2693, 0x616B, 0x114D, 0x616C, 0x268B, 0x616E, 0x1147,
+ 0x6170, 0x114C, 0x6171, 0x2686, 0x6172, 0x268A, 0x6173, 0x2687, 0x6174,
+ 0x268D, 0x6175, 0x0FD9, 0x6176, 0x1145, 0x6177, 0x0FD3, 0x6179, 0x28D0,
+ 0x617A, 0x268F, 0x617C, 0x114B, 0x617E, 0x114E, 0x6180, 0x268C, 0x6182,
+ 0x114A, 0x6183, 0x28CF, 0x6189, 0x28D4, 0x618A, 0x12B1, 0x618B, 0x28CE,
+ 0x618C, 0x2B4D, 0x618D, 0x28DD, 0x618E, 0x1152, 0x6190, 0x1150, 0x6191,
+ 0x12AF, 0x6192, 0x28DA, 0x6193, 0x28D6, 0x6194, 0x1156, 0x6196, 0x2B44,
+ 0x619A, 0x1154, 0x619B, 0x28D5, 0x619D, 0x2B42, 0x619F, 0x28D9, 0x61A1,
+ 0x28DC, 0x61A2, 0x28D3, 0x61A4, 0x1155, 0x61A7, 0x114F, 0x61A8, 0x2B43,
+ 0x61A9, 0x12B0, 0x61AA, 0x28DB, 0x61AB, 0x1151, 0x61AC, 0x1153, 0x61AD,
+ 0x28D8, 0x61AE, 0x1157, 0x61AF, 0x28D7, 0x61B0, 0x28D2, 0x61B1, 0x28D1,
+ 0x61B2, 0x12AE, 0x61B3, 0x28DF, 0x61B4, 0x2B46, 0x61B5, 0x2D60, 0x61B6,
+ 0x12B3, 0x61B8, 0x2B4C, 0x61BA, 0x2B4A, 0x61BC, 0x2D61, 0x61BE, 0x12B4,
+ 0x61BF, 0x2B4B, 0x61C1, 0x2B48, 0x61C2, 0x13D1, 0x61C3, 0x2D5F, 0x61C5,
+ 0x2B45, 0x61C6, 0x2B47, 0x61C7, 0x13D2, 0x61C8, 0x12B6, 0x61C9, 0x13D0,
+ 0x61CA, 0x12B5, 0x61CB, 0x13D4, 0x61CC, 0x2B49, 0x61CD, 0x12B2, 0x61D6,
+ 0x2F26, 0x61D8, 0x2F1E, 0x61DE, 0x2D67, 0x61DF, 0x2F1F, 0x61E0, 0x2D63,
+ 0x61E3, 0x14D0, 0x61E4, 0x2D65, 0x61E5, 0x2D64, 0x61E6, 0x13D3, 0x61E7,
+ 0x2D62, 0x61E8, 0x2D66, 0x61E9, 0x2F27, 0x61EA, 0x2F23, 0x61EB, 0x2F25,
+ 0x61ED, 0x2F20, 0x61EE, 0x2F21, 0x61F0, 0x2F24, 0x61F1, 0x2F22, 0x61F2,
+ 0x157E, 0x61F5, 0x1581, 0x61F6, 0x1580, 0x61F7, 0x157F, 0x61F8, 0x1614,
+ 0x61F9, 0x31D3, 0x61FA, 0x1615, 0x61FB, 0x308F, 0x61FC, 0x1670, 0x61FD,
+ 0x32D1, 0x61FE, 0x1671, 0x61FF, 0x16C4, 0x6200, 0x16F8, 0x6201, 0x3417,
+ 0x6203, 0x3418, 0x6204, 0x3419, 0x6207, 0x3533, 0x6208, 0x02D1, 0x6209,
+ 0x17A8, 0x620A, 0x0341, 0x620C, 0x03D1, 0x620D, 0x03D2, 0x620E, 0x03D0,
+ 0x6210, 0x03D3, 0x6211, 0x04A2, 0x6212, 0x04A1, 0x6214, 0x1991, 0x6215,
+ 0x05D1, 0x6216, 0x05D0, 0x6219, 0x1CA0, 0x621A, 0x0A97, 0x621B, 0x0A98,
+ 0x621F, 0x0C58, 0x6220, 0x23E1, 0x6221, 0x0E1A, 0x6222, 0x0E1B, 0x6223,
+ 0x23E3, 0x6224, 0x23E5, 0x6225, 0x23E4, 0x6227, 0x2697, 0x6229, 0x2696,
+ 0x622A, 0x0FDA, 0x622B, 0x2698, 0x622D, 0x28E0, 0x622E, 0x1158, 0x6230,
+ 0x12B7, 0x6232, 0x13D5, 0x6233, 0x14D1, 0x6234, 0x13D6, 0x6236, 0x02D2,
+ 0x623A, 0x188D, 0x623D, 0x1992, 0x623E, 0x05D3, 0x623F, 0x05D2, 0x6240,
+ 0x05D4, 0x6241, 0x072F, 0x6242, 0x1AEC, 0x6243, 0x1AED, 0x6246, 0x1CA1,
+ 0x6247, 0x08C2, 0x6248, 0x0A99, 0x6249, 0x0C59, 0x624A, 0x214B, 0x624B,
+ 0x02D3, 0x624D, 0x0291, 0x624E, 0x02D4, 0x6250, 0x17A9, 0x6251, 0x0345,
+ 0x6252, 0x0344, 0x6253, 0x0342, 0x6254, 0x0343, 0x6258, 0x03D6, 0x6259,
+ 0x17F2, 0x625A, 0x17F4, 0x625B, 0x03D5, 0x625C, 0x17EC, 0x625E, 0x17ED,
+ 0x6260, 0x17F3, 0x6261, 0x17EF, 0x6262, 0x17F1, 0x6263, 0x03D4, 0x6264,
+ 0x17EE, 0x6265, 0x17F5, 0x6266, 0x17F0, 0x626D, 0x04A9, 0x626E, 0x04B2,
+ 0x626F, 0x04B0, 0x6270, 0x1897, 0x6271, 0x1894, 0x6272, 0x189C, 0x6273,
+ 0x04AE, 0x6274, 0x189D, 0x6276, 0x04A7, 0x6277, 0x189A, 0x6279, 0x04AD,
+ 0x627A, 0x1896, 0x627B, 0x1895, 0x627C, 0x04AB, 0x627D, 0x189B, 0x627E,
+ 0x04AC, 0x627F, 0x05D5, 0x6280, 0x04A6, 0x6281, 0x1898, 0x6283, 0x188E,
+ 0x6284, 0x04A3, 0x6286, 0x04B6, 0x6287, 0x1893, 0x6288, 0x1899, 0x6289,
+ 0x04A8, 0x628A, 0x04AA, 0x628C, 0x188F, 0x628E, 0x1890, 0x628F, 0x1891,
+ 0x6291, 0x04B5, 0x6292, 0x04AF, 0x6293, 0x04B4, 0x6294, 0x1892, 0x6295,
+ 0x04B3, 0x6296, 0x04A5, 0x6297, 0x04A4, 0x6298, 0x04B1, 0x62A8, 0x05E3,
+ 0x62A9, 0x199E, 0x62AA, 0x1997, 0x62AB, 0x05DE, 0x62AC, 0x05F1, 0x62AD,
+ 0x1993, 0x62AE, 0x199A, 0x62AF, 0x199C, 0x62B0, 0x199F, 0x62B1, 0x05EC,
+ 0x62B3, 0x199B, 0x62B4, 0x1994, 0x62B5, 0x05EA, 0x62B6, 0x1998, 0x62B8,
+ 0x19A0, 0x62B9, 0x05DB, 0x62BB, 0x199D, 0x62BC, 0x05E5, 0x62BD, 0x05E4,
+ 0x62BE, 0x1996, 0x62BF, 0x05D9, 0x62C2, 0x05DA, 0x62C4, 0x05D8, 0x62C6,
+ 0x05F0, 0x62C7, 0x05E8, 0x62C8, 0x05E2, 0x62C9, 0x05D6, 0x62CA, 0x1999,
+ 0x62CB, 0x05E1, 0x62CC, 0x05D7, 0x62CD, 0x05E9, 0x62CE, 0x05F2, 0x62CF,
+ 0x1AEE, 0x62D0, 0x05E6, 0x62D1, 0x1995, 0x62D2, 0x05DC, 0x62D3, 0x05DF,
+ 0x62D4, 0x05E0, 0x62D6, 0x05EE, 0x62D7, 0x05EF, 0x62D8, 0x05ED, 0x62D9,
+ 0x05E7, 0x62DA, 0x05EB, 0x62DB, 0x05DD, 0x62DC, 0x0730, 0x62EB, 0x1AF4,
+ 0x62EC, 0x073C, 0x62ED, 0x0734, 0x62EE, 0x0736, 0x62EF, 0x073B, 0x62F0,
+ 0x1B00, 0x62F1, 0x0739, 0x62F2, 0x1CA2, 0x62F3, 0x08C3, 0x62F4, 0x073E,
+ 0x62F5, 0x1AF1, 0x62F6, 0x1AF9, 0x62F7, 0x073A, 0x62F8, 0x1AF8, 0x62F9,
+ 0x1AF5, 0x62FA, 0x1AFD, 0x62FB, 0x1AFF, 0x62FC, 0x0733, 0x62FD, 0x0737,
+ 0x62FE, 0x073D, 0x62FF, 0x08C5, 0x6300, 0x1AFA, 0x6301, 0x0735, 0x6302,
+ 0x0740, 0x6303, 0x1AF3, 0x6307, 0x0738, 0x6308, 0x08C4, 0x6309, 0x0732,
+ 0x630B, 0x1AF0, 0x630C, 0x1AF7, 0x630D, 0x1AEF, 0x630E, 0x1AF2, 0x630F,
+ 0x1AF6, 0x6310, 0x1CA3, 0x6311, 0x073F, 0x6313, 0x1AFB, 0x6314, 0x1AFC,
+ 0x6315, 0x1AFE, 0x6316, 0x0731, 0x6328, 0x08D3, 0x6329, 0x1CAF, 0x632A,
+ 0x08D1, 0x632B, 0x08D2, 0x632C, 0x1CA5, 0x632D, 0x1CB5, 0x632F, 0x08C8,
+ 0x6332, 0x1EED, 0x6333, 0x1CB7, 0x6334, 0x1CB1, 0x6336, 0x1CA8, 0x6338,
+ 0x1CBA, 0x6339, 0x1CAB, 0x633A, 0x08CE, 0x633B, 0x1F04, 0x633C, 0x1CAE,
+ 0x633D, 0x08D0, 0x633E, 0x08C7, 0x6340, 0x1CBC, 0x6341, 0x1CB0, 0x6342,
+ 0x08CA, 0x6343, 0x1CA9, 0x6344, 0x1CA6, 0x6345, 0x1CA7, 0x6346, 0x08CB,
+ 0x6347, 0x1CB6, 0x6348, 0x1CBD, 0x6349, 0x08CD, 0x634A, 0x1CAD, 0x634B,
+ 0x1CAC, 0x634C, 0x08D5, 0x634D, 0x08D4, 0x634E, 0x08C6, 0x634F, 0x08CC,
+ 0x6350, 0x08CF, 0x6351, 0x1CB9, 0x6354, 0x1CB3, 0x6355, 0x08C9, 0x6356,
+ 0x1CA4, 0x6357, 0x1CBB, 0x6358, 0x1CB2, 0x6359, 0x1CB4, 0x635A, 0x1CB8,
+ 0x6365, 0x1EEE, 0x6367, 0x0AA1, 0x6368, 0x0AB5, 0x6369, 0x0AB4, 0x636B,
+ 0x0AA9, 0x636D, 0x1F00, 0x636E, 0x1EFC, 0x636F, 0x1EF9, 0x6370, 0x1F0B,
+ 0x6371, 0x0AA4, 0x6372, 0x0A9C, 0x6375, 0x1EFE, 0x6376, 0x0C69, 0x6377,
+ 0x0AA0, 0x6378, 0x1F06, 0x637A, 0x0AB6, 0x637B, 0x0AB3, 0x637C, 0x1F02,
+ 0x637D, 0x1EF1, 0x6380, 0x0AB2, 0x6381, 0x1F08, 0x6382, 0x1EF0, 0x6383,
+ 0x0AA7, 0x6384, 0x0AAB, 0x6385, 0x1F07, 0x6387, 0x1EFA, 0x6388, 0x0AAC,
+ 0x6389, 0x0AA6, 0x638A, 0x1EEF, 0x638C, 0x0C5B, 0x638D, 0x1F0A, 0x638E,
+ 0x1EF8, 0x638F, 0x0AB1, 0x6390, 0x1EFB, 0x6391, 0x1F09, 0x6392, 0x0AB0,
+ 0x6394, 0x214C, 0x6396, 0x0A9D, 0x6397, 0x1EF6, 0x6398, 0x0AA2, 0x6399,
+ 0x0AAD, 0x639B, 0x0AA8, 0x639C, 0x1EFF, 0x639D, 0x1EF5, 0x639E, 0x1EF3,
+ 0x639F, 0x1F05, 0x63A0, 0x0A9A, 0x63A1, 0x0AAE, 0x63A2, 0x0A9E, 0x63A3,
+ 0x0C5A, 0x63A4, 0x1F03, 0x63A5, 0x0A9F, 0x63A7, 0x0A9B, 0x63A8, 0x0AAA,
+ 0x63A9, 0x0AA5, 0x63AA, 0x0AA3, 0x63AB, 0x1EF7, 0x63AC, 0x0AAF, 0x63AD,
+ 0x1EF4, 0x63AE, 0x1F01, 0x63AF, 0x1EFD, 0x63B0, 0x214E, 0x63B1, 0x214D,
+ 0x63BD, 0x1EF2, 0x63BE, 0x215E, 0x63C0, 0x0C5D, 0x63C2, 0x2164, 0x63C3,
+ 0x2153, 0x63C4, 0x2161, 0x63C5, 0x23E6, 0x63C6, 0x0C60, 0x63C7, 0x2165,
+ 0x63C8, 0x2168, 0x63C9, 0x0C5F, 0x63CA, 0x2156, 0x63CB, 0x2167, 0x63CC,
+ 0x2166, 0x63CD, 0x0C61, 0x63CE, 0x214F, 0x63CF, 0x0C5C, 0x63D0, 0x0C64,
+ 0x63D2, 0x0C62, 0x63D3, 0x2163, 0x63D5, 0x2159, 0x63D6, 0x0C66, 0x63D7,
+ 0x216A, 0x63D8, 0x2162, 0x63D9, 0x216B, 0x63DA, 0x0C6E, 0x63DB, 0x0C6C,
+ 0x63DC, 0x2160, 0x63DD, 0x215F, 0x63DF, 0x215D, 0x63E0, 0x2157, 0x63E1,
+ 0x0C65, 0x63E3, 0x0C63, 0x63E4, 0x1CAA, 0x63E5, 0x2150, 0x63E7, 0x2404,
+ 0x63E8, 0x2151, 0x63E9, 0x0C5E, 0x63EA, 0x0C6B, 0x63EB, 0x23E8, 0x63ED,
+ 0x0C67, 0x63EE, 0x0C68, 0x63EF, 0x2152, 0x63F0, 0x2169, 0x63F1, 0x23E7,
+ 0x63F2, 0x215A, 0x63F3, 0x2155, 0x63F4, 0x0C6A, 0x63F5, 0x215B, 0x63F6,
+ 0x2158, 0x63F9, 0x0C6F, 0x6406, 0x0E2A, 0x6409, 0x23EB, 0x640A, 0x23FE,
+ 0x640B, 0x2403, 0x640C, 0x23F7, 0x640D, 0x0E26, 0x640E, 0x2408, 0x640F,
+ 0x0E23, 0x6410, 0x23E9, 0x6412, 0x23EA, 0x6413, 0x0E1C, 0x6414, 0x0E25,
+ 0x6415, 0x23F1, 0x6416, 0x0E28, 0x6417, 0x0E29, 0x6418, 0x23F2, 0x641A,
+ 0x23FF, 0x641B, 0x2405, 0x641C, 0x0E24, 0x641E, 0x0E1E, 0x641F, 0x23F0,
+ 0x6420, 0x23EC, 0x6421, 0x2407, 0x6422, 0x23F5, 0x6423, 0x23F6, 0x6424,
+ 0x23ED, 0x6425, 0x2401, 0x6426, 0x23F8, 0x6427, 0x2402, 0x6428, 0x23FA,
+ 0x642A, 0x0E1F, 0x642B, 0x2699, 0x642C, 0x0E22, 0x642D, 0x0E20, 0x642E,
+ 0x2406, 0x642F, 0x23FD, 0x6430, 0x23F9, 0x6433, 0x23EE, 0x6434, 0x0FE4,
+ 0x6435, 0x23FC, 0x6436, 0x0E27, 0x6437, 0x23F4, 0x6439, 0x23F3, 0x643D,
+ 0x0E21, 0x643E, 0x0E1D, 0x643F, 0x26AE, 0x6440, 0x2400, 0x6441, 0x23FB,
+ 0x6443, 0x23EF, 0x644B, 0x26A9, 0x644D, 0x269A, 0x644E, 0x26A5, 0x6450,
+ 0x26AC, 0x6451, 0x0FE2, 0x6452, 0x0C6D, 0x6453, 0x26AA, 0x6454, 0x0FDD,
+ 0x6458, 0x0FDC, 0x6459, 0x26B1, 0x645B, 0x269B, 0x645C, 0x26A8, 0x645D,
+ 0x269C, 0x645E, 0x26A7, 0x645F, 0x0FE0, 0x6460, 0x26AB, 0x6461, 0x215C,
+ 0x6465, 0x26B2, 0x6466, 0x26A3, 0x6467, 0x0FE3, 0x6468, 0x28EE, 0x6469,
+ 0x1159, 0x646B, 0x26B0, 0x646C, 0x26AF, 0x646D, 0x0FE5, 0x646E, 0x28E1,
+ 0x646F, 0x115A, 0x6470, 0x28E2, 0x6472, 0x269F, 0x6473, 0x26A0, 0x6474,
+ 0x269D, 0x6475, 0x26A2, 0x6476, 0x269E, 0x6477, 0x26B3, 0x6478, 0x0FDF,
+ 0x6479, 0x115B, 0x647A, 0x0FE1, 0x647B, 0x0FE6, 0x647D, 0x26A1, 0x647F,
+ 0x26AD, 0x6482, 0x26A6, 0x6485, 0x28E5, 0x6487, 0x0FDB, 0x6488, 0x115E,
+ 0x6489, 0x2B54, 0x648A, 0x28EA, 0x648B, 0x28E9, 0x648C, 0x28EB, 0x648F,
+ 0x28E8, 0x6490, 0x115F, 0x6492, 0x1165, 0x6493, 0x1162, 0x6495, 0x1163,
+ 0x6496, 0x28E3, 0x6497, 0x28E6, 0x6498, 0x28F0, 0x6499, 0x116B, 0x649A,
+ 0x1169, 0x649C, 0x28E7, 0x649D, 0x2154, 0x649E, 0x115C, 0x649F, 0x28ED,
+ 0x64A0, 0x28E4, 0x64A2, 0x116C, 0x64A3, 0x28EC, 0x64A4, 0x0FDE, 0x64A5,
+ 0x1161, 0x64A6, 0x26A4, 0x64A9, 0x1164, 0x64AB, 0x1168, 0x64AC, 0x116A,
+ 0x64AD, 0x1167, 0x64AE, 0x1166, 0x64B0, 0x1160, 0x64B1, 0x28EF, 0x64B2,
+ 0x115D, 0x64B3, 0x116D, 0x64BB, 0x12BB, 0x64BC, 0x12BC, 0x64BD, 0x2B53,
+ 0x64BE, 0x12C5, 0x64BF, 0x12C2, 0x64C1, 0x12B9, 0x64C2, 0x12C0, 0x64C3,
+ 0x2B55, 0x64C4, 0x12BE, 0x64C5, 0x12B8, 0x64C7, 0x12BF, 0x64C9, 0x2B52,
+ 0x64CA, 0x13D8, 0x64CB, 0x12BA, 0x64CD, 0x12C1, 0x64CE, 0x13D7, 0x64CF,
+ 0x2B51, 0x64D0, 0x2B50, 0x64D2, 0x12C3, 0x64D4, 0x12C4, 0x64D6, 0x2B4F,
+ 0x64D7, 0x2B4E, 0x64D8, 0x13D9, 0x64D9, 0x2B58, 0x64DA, 0x12BD, 0x64DB,
+ 0x2B56, 0x64E0, 0x13DA, 0x64E2, 0x13DF, 0x64E3, 0x2D6A, 0x64E4, 0x2D6C,
+ 0x64E6, 0x13DC, 0x64E8, 0x2D6D, 0x64E9, 0x2D69, 0x64EB, 0x2D6B, 0x64EC,
+ 0x13DD, 0x64ED, 0x13E0, 0x64EF, 0x2D68, 0x64F0, 0x13DB, 0x64F1, 0x13DE,
+ 0x64F2, 0x14D3, 0x64F3, 0x2B57, 0x64F4, 0x14D2, 0x64F7, 0x14D8, 0x64F8,
+ 0x2F2B, 0x64FA, 0x14D6, 0x64FB, 0x14D7, 0x64FC, 0x2F2E, 0x64FD, 0x2F2A,
+ 0x64FE, 0x14D4, 0x64FF, 0x2F28, 0x6500, 0x1582, 0x6501, 0x2F2C, 0x6503,
+ 0x2F2D, 0x6504, 0x2F29, 0x6506, 0x14D5, 0x6507, 0x3090, 0x6509, 0x3093,
+ 0x650C, 0x3094, 0x650D, 0x3092, 0x650E, 0x3095, 0x650F, 0x1583, 0x6510,
+ 0x3091, 0x6513, 0x31D7, 0x6514, 0x1617, 0x6515, 0x31D6, 0x6516, 0x31D5,
+ 0x6517, 0x31D4, 0x6518, 0x1616, 0x6519, 0x1618, 0x651B, 0x32D2, 0x651C,
+ 0x1673, 0x651D, 0x1672, 0x6520, 0x3382, 0x6521, 0x3381, 0x6522, 0x3384,
+ 0x6523, 0x16F9, 0x6524, 0x16C5, 0x6525, 0x341B, 0x6526, 0x3383, 0x6529,
+ 0x341A, 0x652A, 0x16FB, 0x652B, 0x16FA, 0x652C, 0x1721, 0x652D, 0x3484,
+ 0x652E, 0x34CA, 0x652F, 0x02D5, 0x6532, 0x216C, 0x6533, 0x2B59, 0x6534,
+ 0x022C, 0x6536, 0x03D7, 0x6537, 0x17F6, 0x6538, 0x04B9, 0x6539, 0x04B7,
+ 0x653B, 0x04B8, 0x653D, 0x19A1, 0x653E, 0x05F3, 0x653F, 0x0741, 0x6541,
+ 0x1B01, 0x6543, 0x1B02, 0x6545, 0x0742, 0x6546, 0x1CBF, 0x6548, 0x08D6,
+ 0x6549, 0x08D7, 0x654A, 0x1CBE, 0x654F, 0x0ABD, 0x6551, 0x0AB9, 0x6553,
+ 0x1F0C, 0x6554, 0x0AC0, 0x6555, 0x0ABF, 0x6556, 0x0AB8, 0x6557, 0x0ABB,
+ 0x6558, 0x0ABE, 0x6559, 0x0ABA, 0x655C, 0x2170, 0x655D, 0x0AB7, 0x655E,
+ 0x0C70, 0x6562, 0x0C72, 0x6563, 0x0C73, 0x6564, 0x216F, 0x6565, 0x2172,
+ 0x6566, 0x0C71, 0x6567, 0x216D, 0x6568, 0x2171, 0x656A, 0x216E, 0x656C,
+ 0x0E2B, 0x656F, 0x2409, 0x6572, 0x0FE7, 0x6573, 0x26B4, 0x6574, 0x12C6,
+ 0x6575, 0x116E, 0x6576, 0x28F1, 0x6577, 0x116F, 0x6578, 0x1170, 0x6579,
+ 0x28F3, 0x657A, 0x28F2, 0x657B, 0x28F4, 0x657C, 0x2B5B, 0x657F, 0x2B5A,
+ 0x6580, 0x2D6F, 0x6581, 0x2D6E, 0x6582, 0x13E1, 0x6583, 0x13E2, 0x6584,
+ 0x3096, 0x6587, 0x02D6, 0x658C, 0x2173, 0x6590, 0x0C75, 0x6591, 0x0C74,
+ 0x6592, 0x240A, 0x6594, 0x2F2F, 0x6595, 0x1674, 0x6596, 0x341C, 0x6597,
+ 0x02D7, 0x6599, 0x08D8, 0x659B, 0x0AC2, 0x659C, 0x0AC1, 0x659D, 0x2174,
+ 0x659E, 0x2175, 0x659F, 0x0E2C, 0x65A0, 0x26B5, 0x65A1, 0x0FE8, 0x65A2,
+ 0x2B5C, 0x65A4, 0x02D8, 0x65A5, 0x0346, 0x65A7, 0x05F4, 0x65A8, 0x19A2,
+ 0x65AA, 0x1B03, 0x65AB, 0x0743, 0x65AC, 0x0AC3, 0x65AE, 0x2176, 0x65AF,
+ 0x0C76, 0x65B0, 0x0E2D, 0x65B2, 0x28F5, 0x65B3, 0x28F6, 0x65B6, 0x2D70,
+ 0x65B7, 0x14D9, 0x65B8, 0x34CB, 0x65B9, 0x02D9, 0x65BB, 0x19A3, 0x65BC,
+ 0x05F5, 0x65BD, 0x0744, 0x65BF, 0x1B04, 0x65C1, 0x08D9, 0x65C2, 0x1CC3,
+ 0x65C3, 0x1CC1, 0x65C4, 0x1CC2, 0x65C5, 0x08DA, 0x65C6, 0x1CC0, 0x65CB,
+ 0x0AC5, 0x65CC, 0x0AC6, 0x65CD, 0x1F0D, 0x65CE, 0x0AC7, 0x65CF, 0x0AC4,
+ 0x65D0, 0x2177, 0x65D2, 0x2178, 0x65D3, 0x240B, 0x65D6, 0x0FEA, 0x65D7,
+ 0x0FE9, 0x65DA, 0x2D71, 0x65DB, 0x2F30, 0x65DD, 0x3098, 0x65DE, 0x3097,
+ 0x65DF, 0x31D8, 0x65E0, 0x022D, 0x65E1, 0x1789, 0x65E2, 0x0745, 0x65E5,
+ 0x02DA, 0x65E6, 0x0347, 0x65E8, 0x03D9, 0x65E9, 0x03D8, 0x65EC, 0x03DA,
+ 0x65ED, 0x03DB, 0x65EE, 0x17F8, 0x65EF, 0x17F7, 0x65F0, 0x189E, 0x65F1,
+ 0x04BA, 0x65F2, 0x18A1, 0x65F3, 0x18A0, 0x65F4, 0x189F, 0x65F5, 0x18A2,
+ 0x65FA, 0x05F6, 0x65FB, 0x19A9, 0x65FC, 0x19A5, 0x65FD, 0x19AE, 0x6600,
+ 0x05FD, 0x6602, 0x05FB, 0x6603, 0x19AA, 0x6604, 0x19A6, 0x6605, 0x19AD,
+ 0x6606, 0x05FA, 0x6607, 0x0601, 0x6608, 0x19A8, 0x6609, 0x19A4, 0x660A,
+ 0x0600, 0x660B, 0x19AB, 0x660C, 0x05F9, 0x660D, 0x19AC, 0x660E, 0x05FC,
+ 0x660F, 0x05FE, 0x6610, 0x19B0, 0x6611, 0x19AF, 0x6612, 0x19A7, 0x6613,
+ 0x05F8, 0x6614, 0x05F7, 0x6615, 0x05FF, 0x661C, 0x1B09, 0x661D, 0x1B0F,
+ 0x661F, 0x074B, 0x6620, 0x0748, 0x6621, 0x1B06, 0x6622, 0x1B0B, 0x6624,
+ 0x074E, 0x6625, 0x0746, 0x6626, 0x1B0A, 0x6627, 0x0749, 0x6628, 0x074C,
+ 0x662B, 0x1B0D, 0x662D, 0x0747, 0x662E, 0x1B12, 0x662F, 0x074A, 0x6631,
+ 0x074D, 0x6632, 0x1B07, 0x6633, 0x1B0C, 0x6634, 0x1B10, 0x6635, 0x1B08,
+ 0x6636, 0x1B05, 0x6639, 0x1B11, 0x663A, 0x1B0E, 0x6641, 0x08E2, 0x6642,
+ 0x08DB, 0x6643, 0x08DE, 0x6645, 0x08E1, 0x6647, 0x1CC6, 0x6649, 0x08DC,
+ 0x664A, 0x1CC4, 0x664C, 0x08E0, 0x664F, 0x08DD, 0x6651, 0x1CC7, 0x6652,
+ 0x08DF, 0x6659, 0x1F11, 0x665A, 0x0AC9, 0x665B, 0x1F10, 0x665C, 0x1F12,
+ 0x665D, 0x0AC8, 0x665E, 0x0ACD, 0x665F, 0x1CC5, 0x6661, 0x1F0F, 0x6662,
+ 0x1F13, 0x6664, 0x0ACA, 0x6665, 0x1F0E, 0x6666, 0x0ACC, 0x6668, 0x0ACB,
+ 0x666A, 0x217F, 0x666C, 0x217A, 0x666E, 0x0C77, 0x666F, 0x0C7B, 0x6670,
+ 0x0C78, 0x6671, 0x217D, 0x6672, 0x2180, 0x6674, 0x0C79, 0x6676, 0x0C7A,
+ 0x6677, 0x0C7F, 0x6678, 0x2414, 0x6679, 0x217E, 0x667A, 0x0C7D, 0x667B,
+ 0x217B, 0x667C, 0x2179, 0x667E, 0x0C7E, 0x6680, 0x217C, 0x6684, 0x0E33,
+ 0x6686, 0x240C, 0x6687, 0x0E30, 0x6688, 0x0E31, 0x6689, 0x0E2F, 0x668A,
+ 0x2411, 0x668B, 0x2410, 0x668C, 0x240D, 0x668D, 0x0E35, 0x6690, 0x240F,
+ 0x6691, 0x0C7C, 0x6694, 0x2413, 0x6695, 0x240E, 0x6696, 0x0E32, 0x6697,
+ 0x0E2E, 0x6698, 0x0E34, 0x6699, 0x2412, 0x669D, 0x0FED, 0x669F, 0x26B8,
+ 0x66A0, 0x26B7, 0x66A1, 0x26B6, 0x66A2, 0x0FEB, 0x66A8, 0x0FEC, 0x66A9,
+ 0x28F9, 0x66AA, 0x28FC, 0x66AB, 0x1172, 0x66AE, 0x1171, 0x66AF, 0x28FD,
+ 0x66B0, 0x28F8, 0x66B1, 0x1174, 0x66B2, 0x28FA, 0x66B4, 0x1173, 0x66B5,
+ 0x28F7, 0x66B7, 0x28FB, 0x66B8, 0x12CC, 0x66B9, 0x12C9, 0x66BA, 0x2B65,
+ 0x66BB, 0x2B64, 0x66BD, 0x2B63, 0x66BE, 0x2B5E, 0x66C0, 0x2B5F, 0x66C4,
+ 0x12CA, 0x66C6, 0x12C7, 0x66C7, 0x12CB, 0x66C8, 0x2B5D, 0x66C9, 0x12C8,
+ 0x66CA, 0x2B60, 0x66CB, 0x2B61, 0x66CC, 0x2B66, 0x66CF, 0x2B62, 0x66D2,
+ 0x2D72, 0x66D6, 0x13E4, 0x66D8, 0x2F33, 0x66D9, 0x13E3, 0x66DA, 0x2F31,
+ 0x66DB, 0x2F32, 0x66DC, 0x14DA, 0x66DD, 0x1585, 0x66DE, 0x3099, 0x66E0,
+ 0x1584, 0x66E3, 0x31DA, 0x66E4, 0x31DB, 0x66E6, 0x1619, 0x66E8, 0x31D9,
+ 0x66E9, 0x1675, 0x66EB, 0x341D, 0x66EC, 0x16FC, 0x66ED, 0x3485, 0x66EE,
+ 0x3486, 0x66F0, 0x02DB, 0x66F2, 0x03DC, 0x66F3, 0x03DD, 0x66F4, 0x04BB,
+ 0x66F6, 0x19B1, 0x66F7, 0x074F, 0x66F8, 0x08E3, 0x66F9, 0x0ACE, 0x66FC,
+ 0x0A1F, 0x66FE, 0x0C80, 0x66FF, 0x0C81, 0x6700, 0x0BF0, 0x6701, 0x2181,
+ 0x6703, 0x0E36, 0x6704, 0x26BA, 0x6705, 0x26B9, 0x6708, 0x02DC, 0x6709,
+ 0x03DE, 0x670A, 0x19B2, 0x670B, 0x0603, 0x670D, 0x0602, 0x670F, 0x1B13,
+ 0x6710, 0x1B14, 0x6712, 0x1CC8, 0x6713, 0x1CC9, 0x6714, 0x08E4, 0x6715,
+ 0x08E5, 0x6717, 0x08E6, 0x6718, 0x1F14, 0x671B, 0x0AD0, 0x671D, 0x0C83,
+ 0x671F, 0x0C82, 0x6720, 0x2415, 0x6721, 0x2522, 0x6722, 0x26BB, 0x6723,
+ 0x2B67, 0x6726, 0x14DB, 0x6727, 0x161A, 0x6728, 0x02DD, 0x672A, 0x034A,
+ 0x672B, 0x034B, 0x672C, 0x0349, 0x672D, 0x034C, 0x672E, 0x0348, 0x6731,
+ 0x03E1, 0x6733, 0x1800, 0x6734, 0x03E0, 0x6735, 0x03E2, 0x6738, 0x17FB,
+ 0x6739, 0x17FA, 0x673A, 0x17FD, 0x673B, 0x17FC, 0x673C, 0x17FF, 0x673D,
+ 0x03DF, 0x673E, 0x17F9, 0x673F, 0x17FE, 0x6745, 0x18A3, 0x6746, 0x04C5,
+ 0x6747, 0x18A4, 0x6748, 0x18A8, 0x6749, 0x04C4, 0x674B, 0x18AC, 0x674C,
+ 0x18A7, 0x674D, 0x18AA, 0x674E, 0x04BD, 0x674F, 0x04BE, 0x6750, 0x04BF,
+ 0x6751, 0x04C0, 0x6753, 0x04C7, 0x6755, 0x18A6, 0x6756, 0x04C2, 0x6757,
+ 0x04C8, 0x6759, 0x18A5, 0x675A, 0x18AB, 0x675C, 0x04C1, 0x675D, 0x18A9,
+ 0x675E, 0x04C3, 0x675F, 0x04BC, 0x6760, 0x04C6, 0x676A, 0x0618, 0x676C,
+ 0x19B4, 0x676D, 0x0604, 0x676F, 0x060E, 0x6770, 0x060F, 0x6771, 0x0607,
+ 0x6772, 0x0619, 0x6773, 0x0609, 0x6774, 0x19BC, 0x6775, 0x0614, 0x6776,
+ 0x19B7, 0x6777, 0x060A, 0x6778, 0x19C6, 0x6779, 0x19C7, 0x677A, 0x19BF,
+ 0x677B, 0x19B8, 0x677C, 0x0617, 0x677D, 0x19C4, 0x677E, 0x0612, 0x677F,
+ 0x0610, 0x6781, 0x19C5, 0x6783, 0x19C3, 0x6784, 0x19BB, 0x6785, 0x19B3,
+ 0x6786, 0x19BA, 0x6787, 0x060B, 0x6789, 0x0611, 0x678B, 0x0605, 0x678C,
+ 0x19BE, 0x678D, 0x19BD, 0x678E, 0x19B5, 0x6790, 0x0613, 0x6791, 0x19C1,
+ 0x6792, 0x19B6, 0x6793, 0x0616, 0x6794, 0x19C8, 0x6795, 0x0606, 0x6797,
+ 0x060D, 0x6798, 0x19B9, 0x6799, 0x19C2, 0x679A, 0x0615, 0x679C, 0x0608,
+ 0x679D, 0x060C, 0x679F, 0x19C0, 0x67AE, 0x1B34, 0x67AF, 0x0757, 0x67B0,
+ 0x0764, 0x67B2, 0x1B2F, 0x67B3, 0x1B25, 0x67B4, 0x075D, 0x67B5, 0x1B23,
+ 0x67B6, 0x0756, 0x67B7, 0x1B1E, 0x67B8, 0x0760, 0x67B9, 0x1B2B, 0x67BA,
+ 0x1B18, 0x67BB, 0x1B1A, 0x67C0, 0x1B1D, 0x67C1, 0x1B15, 0x67C2, 0x1B2A,
+ 0x67C3, 0x1B3A, 0x67C4, 0x075B, 0x67C5, 0x1B1F, 0x67C6, 0x1B31, 0x67C8,
+ 0x1B17, 0x67C9, 0x1B38, 0x67CA, 0x1B39, 0x67CB, 0x1B3C, 0x67CC, 0x1B33,
+ 0x67CD, 0x1B24, 0x67CE, 0x1B2C, 0x67CF, 0x0761, 0x67D0, 0x0754, 0x67D1,
+ 0x075C, 0x67D2, 0x0768, 0x67D3, 0x0751, 0x67D4, 0x0753, 0x67D8, 0x1B1C,
+ 0x67D9, 0x0765, 0x67DA, 0x075E, 0x67DB, 0x1B36, 0x67DC, 0x1B19, 0x67DD,
+ 0x0767, 0x67DE, 0x0762, 0x67DF, 0x1B22, 0x67E2, 0x0766, 0x67E3, 0x1B29,
+ 0x67E4, 0x1B21, 0x67E5, 0x075F, 0x67E6, 0x1B35, 0x67E7, 0x1B2D, 0x67E9,
+ 0x0759, 0x67EA, 0x1B3B, 0x67EB, 0x1B20, 0x67EC, 0x0755, 0x67ED, 0x1B32,
+ 0x67EE, 0x1B28, 0x67EF, 0x075A, 0x67F0, 0x1B2E, 0x67F1, 0x0752, 0x67F2,
+ 0x1B16, 0x67F3, 0x0763, 0x67F4, 0x08F5, 0x67F5, 0x0758, 0x67F6, 0x1B27,
+ 0x67F7, 0x1B26, 0x67F8, 0x1B1B, 0x67FA, 0x1B37, 0x67FC, 0x1B30, 0x67FF,
+ 0x0750, 0x6812, 0x1CDD, 0x6813, 0x08FC, 0x6814, 0x1CDE, 0x6816, 0x1CD2,
+ 0x6817, 0x08F1, 0x6818, 0x08FD, 0x681A, 0x1CCB, 0x681C, 0x1CD4, 0x681D,
+ 0x1CDC, 0x681F, 0x1CCA, 0x6820, 0x1CE5, 0x6821, 0x08E7, 0x6825, 0x1CE4,
+ 0x6826, 0x1CDF, 0x6828, 0x1CE0, 0x6829, 0x08EF, 0x682A, 0x08FA, 0x682B,
+ 0x1CD6, 0x682D, 0x1CD7, 0x682E, 0x1CE1, 0x682F, 0x1CD8, 0x6831, 0x1CD3,
+ 0x6832, 0x1CCD, 0x6833, 0x1CCE, 0x6834, 0x1CDB, 0x6835, 0x1CD5, 0x6838,
+ 0x08E8, 0x6839, 0x08EC, 0x683A, 0x1CE3, 0x683B, 0x1CCF, 0x683C, 0x08F8,
+ 0x683D, 0x08F4, 0x6840, 0x08F7, 0x6841, 0x08FE, 0x6842, 0x08ED, 0x6843,
+ 0x08F9, 0x6844, 0x1CDA, 0x6845, 0x08FB, 0x6846, 0x08EA, 0x6848, 0x08E9,
+ 0x6849, 0x1CCC, 0x684B, 0x1CD0, 0x684C, 0x08F2, 0x684D, 0x1CE2, 0x684E,
+ 0x1CD9, 0x684F, 0x1CD1, 0x6850, 0x08F6, 0x6851, 0x08F3, 0x6853, 0x08EB,
+ 0x6854, 0x08EE, 0x686B, 0x1F29, 0x686D, 0x1F19, 0x686E, 0x1F1A, 0x686F,
+ 0x1F1E, 0x6871, 0x1F2D, 0x6872, 0x1F2A, 0x6874, 0x1F23, 0x6875, 0x1F22,
+ 0x6876, 0x0AD7, 0x6877, 0x1F26, 0x6878, 0x1F35, 0x6879, 0x1F15, 0x687B,
+ 0x1F36, 0x687C, 0x1F28, 0x687D, 0x1F3A, 0x687E, 0x1F2E, 0x687F, 0x0AD6,
+ 0x6880, 0x1F2C, 0x6881, 0x0AD1, 0x6882, 0x0AE6, 0x6883, 0x0ADC, 0x6885,
+ 0x0AE0, 0x6886, 0x0ADF, 0x6887, 0x1F16, 0x6889, 0x1F33, 0x688A, 0x1F39,
+ 0x688B, 0x1F31, 0x688C, 0x1F38, 0x688F, 0x1F25, 0x6890, 0x1F17, 0x6891,
+ 0x1F37, 0x6892, 0x1F27, 0x6893, 0x0AD4, 0x6894, 0x0AE1, 0x6896, 0x1F30,
+ 0x6897, 0x0ADA, 0x689B, 0x1F2F, 0x689C, 0x1F18, 0x689D, 0x0AE2, 0x689F,
+ 0x0AE4, 0x68A0, 0x1F32, 0x68A1, 0x0AE5, 0x68A2, 0x0AD3, 0x68A3, 0x1F1F,
+ 0x68A4, 0x1F34, 0x68A7, 0x0AD9, 0x68A8, 0x0AE3, 0x68A9, 0x1F21, 0x68AA,
+ 0x1F2B, 0x68AB, 0x1F1C, 0x68AC, 0x1F20, 0x68AD, 0x0ADE, 0x68AE, 0x1F1B,
+ 0x68AF, 0x0AD2, 0x68B0, 0x0ADB, 0x68B1, 0x0AD8, 0x68B2, 0x1F24, 0x68B3,
+ 0x08F0, 0x68B4, 0x2198, 0x68B5, 0x0AD5, 0x68C4, 0x0ADD, 0x68C6, 0x219B,
+ 0x68C7, 0x21B1, 0x68C8, 0x21A6, 0x68C9, 0x0C97, 0x68CB, 0x0C92, 0x68CC,
+ 0x2195, 0x68CD, 0x0C93, 0x68CE, 0x21A5, 0x68D0, 0x219E, 0x68D1, 0x21AB,
+ 0x68D2, 0x0C8F, 0x68D3, 0x2183, 0x68D4, 0x21AD, 0x68D5, 0x0C85, 0x68D6,
+ 0x218B, 0x68D7, 0x0C88, 0x68D8, 0x0C87, 0x68DA, 0x0C98, 0x68DC, 0x2185,
+ 0x68DD, 0x21A7, 0x68DE, 0x21A8, 0x68DF, 0x0C8A, 0x68E0, 0x0C86, 0x68E1,
+ 0x2193, 0x68E3, 0x0C91, 0x68E4, 0x218E, 0x68E6, 0x21A9, 0x68E7, 0x0C8D,
+ 0x68E8, 0x21A1, 0x68E9, 0x21AE, 0x68EA, 0x2188, 0x68EB, 0x218D, 0x68EC,
+ 0x2187, 0x68EE, 0x0C8C, 0x68EF, 0x219A, 0x68F0, 0x242B, 0x68F1, 0x2189,
+ 0x68F2, 0x0C90, 0x68F3, 0x2192, 0x68F4, 0x21AA, 0x68F5, 0x0C8B, 0x68F6,
+ 0x218F, 0x68F7, 0x218C, 0x68F8, 0x219D, 0x68F9, 0x0C8E, 0x68FA, 0x0C84,
+ 0x68FB, 0x0C9A, 0x68FC, 0x21A0, 0x68FD, 0x219F, 0x6904, 0x2184, 0x6905,
+ 0x0C89, 0x6906, 0x21AC, 0x6907, 0x2194, 0x6908, 0x2196, 0x690A, 0x21A3,
+ 0x690B, 0x21A2, 0x690C, 0x2182, 0x690D, 0x0C94, 0x690E, 0x0C96, 0x690F,
+ 0x218A, 0x6910, 0x2191, 0x6911, 0x2199, 0x6912, 0x0C95, 0x6913, 0x2190,
+ 0x6914, 0x219C, 0x6915, 0x21AF, 0x6917, 0x21A4, 0x6925, 0x21B0, 0x692A,
+ 0x2186, 0x692F, 0x243F, 0x6930, 0x0E3E, 0x6932, 0x243D, 0x6933, 0x2428,
+ 0x6934, 0x242D, 0x6935, 0x2426, 0x6937, 0x2439, 0x6938, 0x2418, 0x6939,
+ 0x241F, 0x693B, 0x2437, 0x693C, 0x2441, 0x693D, 0x2429, 0x693F, 0x241C,
+ 0x6940, 0x242F, 0x6941, 0x2434, 0x6942, 0x2420, 0x6944, 0x2431, 0x6945,
+ 0x241D, 0x6948, 0x2424, 0x6949, 0x2425, 0x694A, 0x0E40, 0x694B, 0x2438,
+ 0x694C, 0x2436, 0x694E, 0x2419, 0x694F, 0x243B, 0x6951, 0x243C, 0x6952,
+ 0x243E, 0x6953, 0x0E44, 0x6954, 0x0E3C, 0x6956, 0x1F1D, 0x6957, 0x2421,
+ 0x6958, 0x2433, 0x6959, 0x2422, 0x695A, 0x0E39, 0x695B, 0x0E49, 0x695C,
+ 0x243A, 0x695D, 0x0E47, 0x695E, 0x0E43, 0x695F, 0x2417, 0x6960, 0x0E3B,
+ 0x6962, 0x241A, 0x6963, 0x0E48, 0x6965, 0x242A, 0x6966, 0x2416, 0x6968,
+ 0x0E41, 0x6969, 0x242E, 0x696A, 0x241E, 0x696B, 0x0E42, 0x696C, 0x2427,
+ 0x696D, 0x0E38, 0x696E, 0x0C99, 0x696F, 0x2430, 0x6970, 0x2197, 0x6971,
+ 0x241B, 0x6974, 0x2435, 0x6975, 0x0E3D, 0x6976, 0x2432, 0x6977, 0x0E3A,
+ 0x6978, 0x242C, 0x6979, 0x0E45, 0x697A, 0x2423, 0x697B, 0x2440, 0x6982,
+ 0x0E3F, 0x6983, 0x24AF, 0x6986, 0x0E46, 0x698D, 0x26C9, 0x698E, 0x26C7,
+ 0x6990, 0x26DD, 0x6991, 0x26C5, 0x6993, 0x26D7, 0x6994, 0x0E37, 0x6995,
+ 0x0FF0, 0x6996, 0x26C1, 0x6997, 0x26DC, 0x6999, 0x26C6, 0x699A, 0x26D4,
+ 0x699B, 0x0FF5, 0x699C, 0x0FEE, 0x699E, 0x26DA, 0x69A0, 0x26BF, 0x69A1,
+ 0x26D9, 0x69A3, 0x1000, 0x69A4, 0x26D0, 0x69A5, 0x26E0, 0x69A6, 0x0FFE,
+ 0x69A7, 0x26C8, 0x69A8, 0x0FEF, 0x69A9, 0x26CA, 0x69AA, 0x26D8, 0x69AB,
+ 0x0FF8, 0x69AC, 0x26C3, 0x69AD, 0x0FFC, 0x69AE, 0x0FF2, 0x69AF, 0x26CC,
+ 0x69B0, 0x26C2, 0x69B1, 0x26BC, 0x69B3, 0x26D6, 0x69B4, 0x0FF9, 0x69B5,
+ 0x26DF, 0x69B6, 0x26BD, 0x69B7, 0x0FF6, 0x69B9, 0x26D2, 0x69BB, 0x0FF7,
+ 0x69BC, 0x26C4, 0x69BD, 0x26CF, 0x69BE, 0x26CB, 0x69BF, 0x26CD, 0x69C1,
+ 0x0FF1, 0x69C2, 0x26DE, 0x69C3, 0x0FFF, 0x69C4, 0x26CE, 0x69C6, 0x26E1,
+ 0x69C9, 0x26BE, 0x69CA, 0x26D3, 0x69CB, 0x0FF4, 0x69CC, 0x0FFD, 0x69CD,
+ 0x0FFB, 0x69CE, 0x26C0, 0x69CF, 0x26D5, 0x69D0, 0x0FFA, 0x69D3, 0x0FF3,
+ 0x69D4, 0x26D1, 0x69D9, 0x26DB, 0x69E2, 0x2909, 0x69E4, 0x2905, 0x69E5,
+ 0x2901, 0x69E6, 0x2915, 0x69E7, 0x2912, 0x69E8, 0x1177, 0x69EB, 0x2919,
+ 0x69EC, 0x2908, 0x69ED, 0x1182, 0x69EE, 0x290F, 0x69F1, 0x2904, 0x69F2,
+ 0x290E, 0x69F3, 0x117F, 0x69F4, 0x2922, 0x69F6, 0x291F, 0x69F7, 0x2911,
+ 0x69F8, 0x2902, 0x69FB, 0x2916, 0x69FC, 0x2918, 0x69FD, 0x117B, 0x69FE,
+ 0x290C, 0x69FF, 0x2907, 0x6A00, 0x28FE, 0x6A01, 0x1178, 0x6A02, 0x1180,
+ 0x6A04, 0x291B, 0x6A05, 0x1181, 0x6A06, 0x28FF, 0x6A07, 0x2921, 0x6A08,
+ 0x2914, 0x6A09, 0x291A, 0x6A0A, 0x117E, 0x6A0D, 0x2917, 0x6A0F, 0x291E,
+ 0x6A11, 0x1183, 0x6A13, 0x117D, 0x6A14, 0x2910, 0x6A15, 0x2903, 0x6A16,
+ 0x2923, 0x6A17, 0x2900, 0x6A18, 0x291C, 0x6A19, 0x117A, 0x6A1B, 0x290A,
+ 0x6A1D, 0x290B, 0x6A1E, 0x1179, 0x6A1F, 0x1176, 0x6A20, 0x2906, 0x6A21,
+ 0x117C, 0x6A23, 0x1175, 0x6A25, 0x291D, 0x6A26, 0x2920, 0x6A27, 0x290D,
+ 0x6A28, 0x2B74, 0x6A32, 0x2B6C, 0x6A34, 0x2B68, 0x6A35, 0x12D9, 0x6A38,
+ 0x12CE, 0x6A39, 0x12D3, 0x6A3A, 0x12CF, 0x6A3B, 0x2B76, 0x6A3C, 0x2B81,
+ 0x6A3D, 0x12CD, 0x6A3E, 0x2B6E, 0x6A3F, 0x2B77, 0x6A40, 0x2913, 0x6A41,
+ 0x2B78, 0x6A44, 0x12D4, 0x6A46, 0x2B87, 0x6A47, 0x12D8, 0x6A48, 0x12DB,
+ 0x6A49, 0x2B6A, 0x6A4B, 0x12D7, 0x6A4D, 0x2B85, 0x6A4E, 0x2B86, 0x6A4F,
+ 0x2B7C, 0x6A50, 0x2B7B, 0x6A51, 0x2B73, 0x6A54, 0x2B7D, 0x6A55, 0x2B84,
+ 0x6A56, 0x2B83, 0x6A58, 0x12D2, 0x6A59, 0x12D0, 0x6A5A, 0x2B75, 0x6A5B,
+ 0x2B72, 0x6A5D, 0x2B6F, 0x6A5E, 0x2B82, 0x6A5F, 0x12DA, 0x6A60, 0x2B80,
+ 0x6A61, 0x12D6, 0x6A62, 0x12D5, 0x6A64, 0x2B7A, 0x6A66, 0x2B69, 0x6A67,
+ 0x2B6B, 0x6A68, 0x2B6D, 0x6A69, 0x2B7F, 0x6A6A, 0x2B79, 0x6A6B, 0x12D1,
+ 0x6A6D, 0x2B70, 0x6A6F, 0x2B7E, 0x6A76, 0x2B71, 0x6A7E, 0x13EC, 0x6A7F,
+ 0x2D84, 0x6A80, 0x13E5, 0x6A81, 0x2D75, 0x6A83, 0x2D80, 0x6A84, 0x13E7,
+ 0x6A85, 0x2D87, 0x6A87, 0x2D7C, 0x6A89, 0x2D77, 0x6A8C, 0x2D88, 0x6A8D,
+ 0x2D73, 0x6A8E, 0x2D7E, 0x6A90, 0x13EE, 0x6A91, 0x2D83, 0x6A92, 0x2D89,
+ 0x6A93, 0x2D7D, 0x6A94, 0x13E6, 0x6A95, 0x2D7F, 0x6A96, 0x2D74, 0x6A97,
+ 0x13ED, 0x6A9A, 0x2D86, 0x6A9B, 0x2D79, 0x6A9C, 0x13E9, 0x6A9E, 0x2D7B,
+ 0x6A9F, 0x2D78, 0x6AA0, 0x13EF, 0x6AA1, 0x2D7A, 0x6AA2, 0x13E8, 0x6AA3,
+ 0x13EB, 0x6AA4, 0x2D82, 0x6AA5, 0x2D76, 0x6AA6, 0x2D85, 0x6AA8, 0x2D81,
+ 0x6AAC, 0x14DD, 0x6AAD, 0x2F3E, 0x6AAE, 0x14E2, 0x6AAF, 0x14E3, 0x6AB3,
+ 0x14DC, 0x6AB4, 0x2F3D, 0x6AB6, 0x2F3A, 0x6AB7, 0x2F3B, 0x6AB8, 0x14E0,
+ 0x6AB9, 0x2F35, 0x6ABA, 0x2F39, 0x6ABB, 0x14DF, 0x6ABD, 0x2F36, 0x6AC2,
+ 0x14E1, 0x6AC3, 0x14DE, 0x6AC5, 0x2F34, 0x6AC6, 0x2F38, 0x6AC7, 0x2F3C,
+ 0x6ACB, 0x309F, 0x6ACC, 0x309C, 0x6ACD, 0x30A5, 0x6ACF, 0x30A4, 0x6AD0,
+ 0x30A2, 0x6AD1, 0x309D, 0x6AD3, 0x1589, 0x6AD9, 0x309E, 0x6ADA, 0x1588,
+ 0x6ADB, 0x13EA, 0x6ADC, 0x30A1, 0x6ADD, 0x1587, 0x6ADE, 0x30A6, 0x6ADF,
+ 0x30A0, 0x6AE0, 0x309B, 0x6AE1, 0x2F37, 0x6AE5, 0x1586, 0x6AE7, 0x309A,
+ 0x6AE8, 0x31DF, 0x6AEA, 0x31DE, 0x6AEB, 0x30A3, 0x6AEC, 0x161B, 0x6AEE,
+ 0x31E2, 0x6AEF, 0x31E3, 0x6AF0, 0x31DD, 0x6AF1, 0x31E1, 0x6AF3, 0x31DC,
+ 0x6AF8, 0x32D6, 0x6AF9, 0x31E0, 0x6AFA, 0x1678, 0x6AFB, 0x1676, 0x6AFC,
+ 0x32D4, 0x6B00, 0x32D7, 0x6B02, 0x32D3, 0x6B03, 0x32D5, 0x6B04, 0x1677,
+ 0x6B08, 0x3386, 0x6B09, 0x3387, 0x6B0A, 0x16C6, 0x6B0B, 0x3385, 0x6B0F,
+ 0x3420, 0x6B10, 0x16FD, 0x6B11, 0x341E, 0x6B12, 0x341F, 0x6B13, 0x3487,
+ 0x6B16, 0x1743, 0x6B17, 0x34CE, 0x6B18, 0x34CC, 0x6B19, 0x34CD, 0x6B1A,
+ 0x34CF, 0x6B1E, 0x3534, 0x6B20, 0x02DE, 0x6B21, 0x03E3, 0x6B23, 0x061A,
+ 0x6B25, 0x19C9, 0x6B28, 0x1B3D, 0x6B2C, 0x1CE6, 0x6B2D, 0x1CE8, 0x6B2F,
+ 0x1CE7, 0x6B31, 0x1CE9, 0x6B32, 0x0AE7, 0x6B33, 0x1F3C, 0x6B34, 0x1CEA,
+ 0x6B36, 0x1F3B, 0x6B37, 0x1F3D, 0x6B38, 0x1F3E, 0x6B39, 0x21B2, 0x6B3A,
+ 0x0C9C, 0x6B3B, 0x21B3, 0x6B3C, 0x21B5, 0x6B3D, 0x0C9D, 0x6B3E, 0x0C9B,
+ 0x6B3F, 0x21B4, 0x6B41, 0x2447, 0x6B42, 0x2445, 0x6B43, 0x2444, 0x6B45,
+ 0x2443, 0x6B46, 0x2442, 0x6B47, 0x0E4A, 0x6B48, 0x2446, 0x6B49, 0x1001,
+ 0x6B4A, 0x26E2, 0x6B4B, 0x26E4, 0x6B4C, 0x1002, 0x6B4D, 0x26E3, 0x6B4E,
+ 0x1185, 0x6B50, 0x1184, 0x6B51, 0x2924, 0x6B54, 0x2B89, 0x6B55, 0x2B88,
+ 0x6B56, 0x2B8A, 0x6B59, 0x12DC, 0x6B5B, 0x2D8A, 0x6B5C, 0x13F0, 0x6B5E,
+ 0x2F3F, 0x6B5F, 0x14E4, 0x6B60, 0x30A7, 0x6B61, 0x16C7, 0x6B62, 0x02DF,
+ 0x6B63, 0x034D, 0x6B64, 0x03E4, 0x6B65, 0x04C9, 0x6B66, 0x061B, 0x6B67,
+ 0x061C, 0x6B6A, 0x0769, 0x6B6D, 0x1CEB, 0x6B72, 0x0E4B, 0x6B76, 0x29A2,
+ 0x6B77, 0x12DD, 0x6B78, 0x14E5, 0x6B79, 0x02E0, 0x6B7B, 0x03E5, 0x6B7E,
+ 0x19CB, 0x6B7F, 0x061D, 0x6B80, 0x19CA, 0x6B82, 0x1B3E, 0x6B83, 0x076A,
+ 0x6B84, 0x1B3F, 0x6B86, 0x076B, 0x6B88, 0x1CED, 0x6B89, 0x0900, 0x6B8A,
+ 0x08FF, 0x6B8C, 0x1F43, 0x6B8D, 0x1F41, 0x6B8E, 0x1F42, 0x6B8F, 0x1F40,
+ 0x6B91, 0x1F3F, 0x6B94, 0x21B6, 0x6B95, 0x21B9, 0x6B96, 0x0C9F, 0x6B97,
+ 0x21B7, 0x6B98, 0x0C9E, 0x6B99, 0x21B8, 0x6B9B, 0x2448, 0x6B9E, 0x26E5,
+ 0x6B9F, 0x26E6, 0x6BA0, 0x26E7, 0x6BA2, 0x2927, 0x6BA3, 0x2926, 0x6BA4,
+ 0x1186, 0x6BA5, 0x2925, 0x6BA6, 0x2928, 0x6BA7, 0x2B8B, 0x6BAA, 0x2B8C,
+ 0x6BAB, 0x2B8D, 0x6BAD, 0x2D8B, 0x6BAE, 0x13F1, 0x6BAF, 0x14E6, 0x6BB0,
+ 0x30A8, 0x6BB2, 0x1679, 0x6BB3, 0x178A, 0x6BB5, 0x076C, 0x6BB6, 0x1B40,
+ 0x6BB7, 0x0901, 0x6BBA, 0x0AE8, 0x6BBC, 0x0CA0, 0x6BBD, 0x21BA, 0x6BBF,
+ 0x0E4D, 0x6BC0, 0x0E4C, 0x6BC3, 0x26E8, 0x6BC4, 0x26E9, 0x6BC5, 0x1187,
+ 0x6BC6, 0x1188, 0x6BC7, 0x2B8F, 0x6BC8, 0x2B8E, 0x6BC9, 0x2F40, 0x6BCA,
+ 0x3421, 0x6BCB, 0x02E1, 0x6BCC, 0x178B, 0x6BCD, 0x034E, 0x6BCF, 0x04CA,
+ 0x6BD0, 0x18AD, 0x6BD2, 0x076D, 0x6BD3, 0x0E4E, 0x6BD4, 0x02E2, 0x6BD6,
+ 0x1B41, 0x6BD7, 0x076E, 0x6BD8, 0x1B42, 0x6BDA, 0x13F2, 0x6BDB, 0x02E3,
+ 0x6BDE, 0x19CC, 0x6BE0, 0x1B43, 0x6BE2, 0x1CF2, 0x6BE3, 0x1CF1, 0x6BE4,
+ 0x1CEF, 0x6BE6, 0x1CEE, 0x6BE7, 0x1CF3, 0x6BE8, 0x1CF0, 0x6BEB, 0x0AE9,
+ 0x6BEC, 0x0AEA, 0x6BEF, 0x0CA1, 0x6BF0, 0x21BB, 0x6BF2, 0x21BC, 0x6BF3,
+ 0x21BD, 0x6BF7, 0x244C, 0x6BF8, 0x244D, 0x6BF9, 0x244B, 0x6BFB, 0x2449,
+ 0x6BFC, 0x244A, 0x6BFD, 0x0E4F, 0x6BFE, 0x26EA, 0x6BFF, 0x292B, 0x6C00,
+ 0x292A, 0x6C01, 0x2929, 0x6C02, 0x292C, 0x6C03, 0x2B91, 0x6C04, 0x2B90,
+ 0x6C05, 0x12DE, 0x6C06, 0x2B92, 0x6C08, 0x13F3, 0x6C09, 0x2D8C, 0x6C0B,
+ 0x2F41, 0x6C0C, 0x30A9, 0x6C0D, 0x3388, 0x6C0F, 0x02E4, 0x6C10, 0x0350,
+ 0x6C11, 0x034F, 0x6C13, 0x061E, 0x6C14, 0x178C, 0x6C15, 0x17AA, 0x6C16,
+ 0x03E6, 0x6C18, 0x1801, 0x6C19, 0x18AE, 0x6C1A, 0x18AF, 0x6C1B, 0x061F,
+ 0x6C1D, 0x19CD, 0x6C1F, 0x076F, 0x6C20, 0x1B44, 0x6C21, 0x1B45, 0x6C23,
+ 0x0902, 0x6C24, 0x0906, 0x6C25, 0x1CF4, 0x6C26, 0x0905, 0x6C27, 0x0903,
+ 0x6C28, 0x0904, 0x6C2A, 0x1F44, 0x6C2B, 0x0AEB, 0x6C2C, 0x0CA4, 0x6C2E,
+ 0x0CA2, 0x6C2F, 0x0CA3, 0x6C30, 0x21BE, 0x6C33, 0x1003, 0x6C34, 0x02E5,
+ 0x6C36, 0x17AB, 0x6C38, 0x0351, 0x6C3B, 0x17AE, 0x6C3E, 0x0354, 0x6C3F,
+ 0x17AD, 0x6C40, 0x0353, 0x6C41, 0x0352, 0x6C42, 0x04CB, 0x6C43, 0x17AC,
+ 0x6C46, 0x1802, 0x6C4A, 0x1806, 0x6C4B, 0x1808, 0x6C4C, 0x1809, 0x6C4D,
+ 0x03F0, 0x6C4E, 0x03F1, 0x6C4F, 0x1805, 0x6C50, 0x03EC, 0x6C52, 0x1803,
+ 0x6C54, 0x1807, 0x6C55, 0x03ED, 0x6C57, 0x03E8, 0x6C59, 0x03E9, 0x6C5B,
+ 0x03EF, 0x6C5C, 0x1804, 0x6C5D, 0x03E7, 0x6C5E, 0x04CC, 0x6C5F, 0x03EA,
+ 0x6C60, 0x03EB, 0x6C61, 0x03EE, 0x6C65, 0x18C0, 0x6C66, 0x18BE, 0x6C67,
+ 0x18B1, 0x6C68, 0x04D8, 0x6C69, 0x18B8, 0x6C6A, 0x04D3, 0x6C6B, 0x18B2,
+ 0x6C6D, 0x18BA, 0x6C6F, 0x18B7, 0x6C70, 0x04D6, 0x6C71, 0x18B6, 0x6C72,
+ 0x04DD, 0x6C73, 0x18BF, 0x6C74, 0x04DF, 0x6C76, 0x04E1, 0x6C78, 0x18B0,
+ 0x6C7A, 0x04D4, 0x6C7B, 0x18C1, 0x6C7D, 0x04DB, 0x6C7E, 0x04DE, 0x6C80,
+ 0x19E4, 0x6C81, 0x04CE, 0x6C82, 0x04E5, 0x6C83, 0x04DC, 0x6C84, 0x18B3,
+ 0x6C85, 0x04D1, 0x6C86, 0x04E0, 0x6C87, 0x18BB, 0x6C88, 0x04CF, 0x6C89,
+ 0x04D0, 0x6C8A, 0x19E2, 0x6C8B, 0x18B4, 0x6C8C, 0x04D7, 0x6C8D, 0x04E2,
+ 0x6C8E, 0x18C2, 0x6C8F, 0x18B5, 0x6C90, 0x04D5, 0x6C92, 0x04DA, 0x6C93,
+ 0x19CE, 0x6C94, 0x04E3, 0x6C95, 0x18BC, 0x6C96, 0x04D9, 0x6C98, 0x04E4,
+ 0x6C99, 0x04CD, 0x6C9A, 0x18B9, 0x6C9B, 0x04D2, 0x6C9C, 0x18BD, 0x6C9D,
+ 0x19E3, 0x6CAB, 0x062B, 0x6CAC, 0x063B, 0x6CAD, 0x19D5, 0x6CAE, 0x0632,
+ 0x6CB0, 0x19EA, 0x6CB1, 0x0623, 0x6CB3, 0x0626, 0x6CB4, 0x19E1, 0x6CB6,
+ 0x19D3, 0x6CB7, 0x19D7, 0x6CB8, 0x062E, 0x6CB9, 0x0630, 0x6CBA, 0x19DA,
+ 0x6CBB, 0x0637, 0x6CBC, 0x0629, 0x6CBD, 0x0627, 0x6CBE, 0x0628, 0x6CBF,
+ 0x0636, 0x6CC0, 0x19E6, 0x6CC1, 0x0631, 0x6CC2, 0x19D9, 0x6CC3, 0x19DB,
+ 0x6CC4, 0x062F, 0x6CC5, 0x0634, 0x6CC6, 0x19DC, 0x6CC7, 0x19E9, 0x6CC9,
+ 0x0770, 0x6CCA, 0x063A, 0x6CCC, 0x0624, 0x6CCD, 0x19E8, 0x6CCF, 0x19EC,
+ 0x6CD0, 0x19D8, 0x6CD1, 0x19EE, 0x6CD2, 0x19DF, 0x6CD3, 0x062D, 0x6CD4,
+ 0x19D4, 0x6CD5, 0x062C, 0x6CD6, 0x063E, 0x6CD7, 0x0633, 0x6CD9, 0x19D2,
+ 0x6CDA, 0x1B4E, 0x6CDB, 0x0639, 0x6CDC, 0x063D, 0x6CDD, 0x19E0, 0x6CDE,
+ 0x19E5, 0x6CE0, 0x063F, 0x6CE1, 0x0638, 0x6CE2, 0x062A, 0x6CE3, 0x0620,
+ 0x6CE5, 0x0625, 0x6CE7, 0x19D6, 0x6CE8, 0x0621, 0x6CE9, 0x19ED, 0x6CEB,
+ 0x19D0, 0x6CEC, 0x19CF, 0x6CED, 0x19DD, 0x6CEE, 0x19D1, 0x6CEF, 0x063C,
+ 0x6CF0, 0x0907, 0x6CF1, 0x0635, 0x6CF2, 0x19DE, 0x6CF3, 0x0622, 0x6CF5,
+ 0x077F, 0x6CF9, 0x19EB, 0x6D00, 0x1B55, 0x6D01, 0x1B58, 0x6D03, 0x1B5B,
+ 0x6D04, 0x1B50, 0x6D07, 0x1B5E, 0x6D08, 0x1B61, 0x6D09, 0x1B63, 0x6D0A,
+ 0x1B4D, 0x6D0B, 0x0771, 0x6D0C, 0x0776, 0x6D0D, 0x1CF9, 0x6D0E, 0x0786,
+ 0x6D0F, 0x1B5C, 0x6D10, 0x1B64, 0x6D11, 0x1B54, 0x6D12, 0x1B4C, 0x6D16,
+ 0x1D14, 0x6D17, 0x0779, 0x6D18, 0x1B59, 0x6D19, 0x1B51, 0x6D1A, 0x1B53,
+ 0x6D1B, 0x077E, 0x6D1D, 0x1B56, 0x6D1E, 0x0778, 0x6D1F, 0x1B49, 0x6D20,
+ 0x1B5F, 0x6D22, 0x1B62, 0x6D25, 0x0775, 0x6D27, 0x0781, 0x6D28, 0x1B46,
+ 0x6D29, 0x0783, 0x6D2A, 0x0773, 0x6D2B, 0x0787, 0x6D2C, 0x1B60, 0x6D2D,
+ 0x1B48, 0x6D2E, 0x0784, 0x6D2F, 0x1D0E, 0x6D30, 0x19E7, 0x6D31, 0x0777,
+ 0x6D32, 0x0772, 0x6D33, 0x1B4F, 0x6D34, 0x1B47, 0x6D35, 0x0785, 0x6D36,
+ 0x077D, 0x6D37, 0x1B5A, 0x6D38, 0x0782, 0x6D39, 0x0780, 0x6D3A, 0x1B52,
+ 0x6D3B, 0x077A, 0x6D3C, 0x1B4A, 0x6D3D, 0x077B, 0x6D3E, 0x077C, 0x6D3F,
+ 0x1B4B, 0x6D40, 0x1B5D, 0x6D41, 0x0774, 0x6D42, 0x1B57, 0x6D58, 0x1CFC,
+ 0x6D59, 0x090F, 0x6D5A, 0x0914, 0x6D5E, 0x1D05, 0x6D5F, 0x1D0B, 0x6D60,
+ 0x1D07, 0x6D61, 0x1CFA, 0x6D62, 0x1CFD, 0x6D63, 0x1CF6, 0x6D64, 0x1CF7,
+ 0x6D65, 0x091B, 0x6D66, 0x090C, 0x6D67, 0x1D06, 0x6D68, 0x1D0F, 0x6D69,
+ 0x0916, 0x6D6A, 0x0908, 0x6D6C, 0x0911, 0x6D6D, 0x1CFE, 0x6D6E, 0x0913,
+ 0x6D6F, 0x1CFF, 0x6D70, 0x1D09, 0x6D74, 0x0915, 0x6D75, 0x1D18, 0x6D76,
+ 0x1CF8, 0x6D77, 0x090E, 0x6D78, 0x090D, 0x6D79, 0x0919, 0x6D7A, 0x1CF5,
+ 0x6D7B, 0x1D16, 0x6D7C, 0x1D0A, 0x6D7D, 0x1D17, 0x6D7E, 0x1D11, 0x6D7F,
+ 0x1D03, 0x6D80, 0x1D12, 0x6D82, 0x1D0C, 0x6D83, 0x1D15, 0x6D84, 0x1D13,
+ 0x6D85, 0x091A, 0x6D86, 0x1D04, 0x6D87, 0x090B, 0x6D88, 0x090A, 0x6D89,
+ 0x0912, 0x6D8A, 0x0918, 0x6D8B, 0x1D10, 0x6D8C, 0x0917, 0x6D8D, 0x1D01,
+ 0x6D8E, 0x0AEC, 0x6D90, 0x1D19, 0x6D91, 0x1D00, 0x6D92, 0x1CFB, 0x6D93,
+ 0x0910, 0x6D94, 0x091C, 0x6D95, 0x0909, 0x6D97, 0x1D08, 0x6D98, 0x1D0D,
+ 0x6DAA, 0x0B0E, 0x6DAB, 0x1F46, 0x6DAC, 0x1F4A, 0x6DAE, 0x0AFB, 0x6DAF,
+ 0x0AF9, 0x6DB2, 0x0AF0, 0x6DB3, 0x1F48, 0x6DB4, 0x1F47, 0x6DB5, 0x0B04,
+ 0x6DB7, 0x1F4D, 0x6DB8, 0x0AFE, 0x6DBA, 0x1F5F, 0x6DBB, 0x1F6B, 0x6DBC,
+ 0x0AED, 0x6DBD, 0x1F5C, 0x6DBE, 0x1F55, 0x6DBF, 0x0B10, 0x6DC0, 0x1F45,
+ 0x6DC2, 0x1F61, 0x6DC4, 0x0B0D, 0x6DC5, 0x0B01, 0x6DC6, 0x0B0C, 0x6DC7,
+ 0x0AF7, 0x6DC8, 0x1F51, 0x6DC9, 0x1F63, 0x6DCA, 0x1F5B, 0x6DCB, 0x0AF8,
+ 0x6DCC, 0x0AF2, 0x6DCD, 0x1F69, 0x6DCF, 0x1F62, 0x6DD0, 0x1F64, 0x6DD1,
+ 0x0AFA, 0x6DD2, 0x0B02, 0x6DD3, 0x1F66, 0x6DD4, 0x1F4F, 0x6DD5, 0x1F60,
+ 0x6DD6, 0x1F54, 0x6DD7, 0x1F68, 0x6DD8, 0x0B07, 0x6DD9, 0x0AEF, 0x6DDA,
+ 0x0B05, 0x6DDB, 0x1F59, 0x6DDC, 0x1F57, 0x6DDD, 0x1F58, 0x6DDE, 0x0AFC,
+ 0x6DDF, 0x1F53, 0x6DE0, 0x1F52, 0x6DE1, 0x0AF1, 0x6DE2, 0x1F4C, 0x6DE3,
+ 0x1F6A, 0x6DE4, 0x0AF3, 0x6DE5, 0x1F56, 0x6DE6, 0x0B11, 0x6DE8, 0x0B0B,
+ 0x6DE9, 0x1F4B, 0x6DEA, 0x0B08, 0x6DEB, 0x0B06, 0x6DEC, 0x0B0F, 0x6DED,
+ 0x1F5D, 0x6DEE, 0x0B0A, 0x6DEF, 0x1D02, 0x6DF0, 0x1F5E, 0x6DF1, 0x0B09,
+ 0x6DF2, 0x1F65, 0x6DF3, 0x0AEE, 0x6DF4, 0x1F5A, 0x6DF5, 0x0B00, 0x6DF6,
+ 0x1F4E, 0x6DF7, 0x0AFF, 0x6DF9, 0x0AFD, 0x6DFA, 0x0AF5, 0x6DFB, 0x0AF4,
+ 0x6DFC, 0x21BF, 0x6DFD, 0x1F67, 0x6E00, 0x1F50, 0x6E03, 0x21D4, 0x6E05,
+ 0x0AF6, 0x6E19, 0x0CC1, 0x6E1A, 0x0B03, 0x6E1B, 0x0CAF, 0x6E1C, 0x21CE,
+ 0x6E1D, 0x0CBD, 0x6E1F, 0x21C2, 0x6E20, 0x0CAC, 0x6E21, 0x0CA8, 0x6E22,
+ 0x21E0, 0x6E23, 0x0CAE, 0x6E24, 0x0CB2, 0x6E25, 0x0CAD, 0x6E26, 0x0CB6,
+ 0x6E27, 0x21E4, 0x6E28, 0x21DB, 0x6E2B, 0x21C9, 0x6E2C, 0x0CBB, 0x6E2D,
+ 0x0CB5, 0x6E2E, 0x21D5, 0x6E2F, 0x0CA5, 0x6E30, 0x21E1, 0x6E31, 0x21DA,
+ 0x6E32, 0x0CA9, 0x6E33, 0x21CF, 0x6E34, 0x0CB8, 0x6E35, 0x21EC, 0x6E36,
+ 0x21ED, 0x6E38, 0x0CA6, 0x6E39, 0x21DF, 0x6E3A, 0x0CBA, 0x6E3B, 0x21D3,
+ 0x6E3C, 0x21C5, 0x6E3D, 0x21C6, 0x6E3E, 0x0CBE, 0x6E3F, 0x21CA, 0x6E40,
+ 0x21D1, 0x6E41, 0x21CB, 0x6E43, 0x0CBC, 0x6E44, 0x0CC4, 0x6E45, 0x21C7,
+ 0x6E46, 0x21C0, 0x6E47, 0x21C1, 0x6E49, 0x21C3, 0x6E4A, 0x0CAB, 0x6E4B,
+ 0x21D0, 0x6E4D, 0x0CB9, 0x6E4E, 0x0CC2, 0x6E51, 0x21D2, 0x6E52, 0x21EA,
+ 0x6E53, 0x21E2, 0x6E54, 0x0CA7, 0x6E55, 0x21E8, 0x6E56, 0x0CB3, 0x6E58,
+ 0x0CB1, 0x6E5A, 0x21EE, 0x6E5B, 0x0CB0, 0x6E5C, 0x21D8, 0x6E5D, 0x21CC,
+ 0x6E5E, 0x21D6, 0x6E5F, 0x0CC7, 0x6E60, 0x21DC, 0x6E61, 0x21D9, 0x6E62,
+ 0x21C8, 0x6E63, 0x0CC3, 0x6E64, 0x21E6, 0x6E65, 0x21E3, 0x6E66, 0x21EB,
+ 0x6E67, 0x0CAA, 0x6E68, 0x21D7, 0x6E69, 0x0CC6, 0x6E6B, 0x21DE, 0x6E6E,
+ 0x0CB4, 0x6E6F, 0x0CB7, 0x6E71, 0x21DD, 0x6E72, 0x0CC5, 0x6E73, 0x21CD,
+ 0x6E74, 0x1F49, 0x6E77, 0x21E7, 0x6E78, 0x21E5, 0x6E79, 0x21E9, 0x6E88,
+ 0x21C4, 0x6E89, 0x0CC0, 0x6E8D, 0x246C, 0x6E8E, 0x246B, 0x6E8F, 0x2451,
+ 0x6E90, 0x0E55, 0x6E92, 0x246A, 0x6E93, 0x2454, 0x6E94, 0x2455, 0x6E96,
+ 0x0E5F, 0x6E97, 0x2473, 0x6E98, 0x0E5A, 0x6E99, 0x2469, 0x6E9B, 0x244E,
+ 0x6E9C, 0x0E60, 0x6E9D, 0x0E56, 0x6E9E, 0x245D, 0x6E9F, 0x2453, 0x6EA0,
+ 0x2456, 0x6EA1, 0x246E, 0x6EA2, 0x0E50, 0x6EA3, 0x2475, 0x6EA4, 0x246D,
+ 0x6EA5, 0x0E59, 0x6EA6, 0x2462, 0x6EA7, 0x0E64, 0x6EAA, 0x0E63, 0x6EAB,
+ 0x0E5D, 0x6EAE, 0x2474, 0x6EAF, 0x0E51, 0x6EB0, 0x2460, 0x6EB1, 0x2457,
+ 0x6EB2, 0x2464, 0x6EB3, 0x2470, 0x6EB4, 0x0E65, 0x6EB6, 0x0E53, 0x6EB7,
+ 0x245F, 0x6EB9, 0x2458, 0x6EBA, 0x0E5C, 0x6EBC, 0x0E5B, 0x6EBD, 0x245B,
+ 0x6EBE, 0x2465, 0x6EBF, 0x246F, 0x6EC0, 0x2452, 0x6EC1, 0x245C, 0x6EC2,
+ 0x0E54, 0x6EC3, 0x2466, 0x6EC4, 0x0E61, 0x6EC5, 0x0E58, 0x6EC6, 0x2459,
+ 0x6EC7, 0x0E57, 0x6EC8, 0x2450, 0x6EC9, 0x245E, 0x6ECA, 0x2472, 0x6ECB,
+ 0x0CBF, 0x6ECC, 0x101F, 0x6ECD, 0x2461, 0x6ECE, 0x26EB, 0x6ECF, 0x2463,
+ 0x6ED0, 0x2471, 0x6ED1, 0x0E5E, 0x6ED2, 0x245A, 0x6ED3, 0x0E52, 0x6ED4,
+ 0x0E62, 0x6ED5, 0x119A, 0x6ED6, 0x244F, 0x6ED8, 0x2468, 0x6EDC, 0x2467,
+ 0x6EEB, 0x2707, 0x6EEC, 0x101C, 0x6EED, 0x26FC, 0x6EEE, 0x2701, 0x6EEF,
+ 0x1011, 0x6EF1, 0x26ED, 0x6EF2, 0x101E, 0x6EF4, 0x1008, 0x6EF5, 0x26EC,
+ 0x6EF6, 0x270D, 0x6EF7, 0x1020, 0x6EF8, 0x26F0, 0x6EF9, 0x2700, 0x6EFB,
+ 0x26F2, 0x6EFC, 0x2710, 0x6EFD, 0x270C, 0x6EFE, 0x1006, 0x6EFF, 0x1010,
+ 0x6F00, 0x2946, 0x6F01, 0x101D, 0x6F02, 0x100E, 0x6F03, 0x26EE, 0x6F05,
+ 0x270B, 0x6F06, 0x1012, 0x6F07, 0x2708, 0x6F08, 0x2715, 0x6F09, 0x26F4,
+ 0x6F0A, 0x26FD, 0x6F0D, 0x2713, 0x6F0E, 0x2709, 0x6F0F, 0x100D, 0x6F12,
+ 0x26FB, 0x6F13, 0x1007, 0x6F14, 0x1005, 0x6F15, 0x1017, 0x6F18, 0x26F9,
+ 0x6F19, 0x26F6, 0x6F1A, 0x26F7, 0x6F1C, 0x270F, 0x6F1E, 0x2714, 0x6F1F,
+ 0x2712, 0x6F20, 0x100B, 0x6F21, 0x2716, 0x6F22, 0x100F, 0x6F23, 0x1016,
+ 0x6F25, 0x26EF, 0x6F26, 0x292E, 0x6F27, 0x26F8, 0x6F29, 0x1009, 0x6F2A,
+ 0x101B, 0x6F2B, 0x1018, 0x6F2C, 0x100C, 0x6F2D, 0x2702, 0x6F2E, 0x26F3,
+ 0x6F2F, 0x1019, 0x6F30, 0x2704, 0x6F31, 0x1013, 0x6F32, 0x1015, 0x6F33,
+ 0x1004, 0x6F35, 0x2706, 0x6F36, 0x26FE, 0x6F37, 0x26F1, 0x6F38, 0x1014,
+ 0x6F39, 0x270E, 0x6F3A, 0x2711, 0x6F3B, 0x26FA, 0x6F3C, 0x2705, 0x6F3E,
+ 0x100A, 0x6F3F, 0x1189, 0x6F40, 0x2703, 0x6F41, 0x292D, 0x6F43, 0x270A,
+ 0x6F4E, 0x26F5, 0x6F4F, 0x2937, 0x6F50, 0x2941, 0x6F51, 0x118C, 0x6F52,
+ 0x2940, 0x6F53, 0x294C, 0x6F54, 0x118E, 0x6F55, 0x293E, 0x6F57, 0x2942,
+ 0x6F58, 0x1199, 0x6F5A, 0x2939, 0x6F5B, 0x1191, 0x6F5D, 0x2945, 0x6F5E,
+ 0x2B9A, 0x6F5F, 0x119D, 0x6F60, 0x119C, 0x6F61, 0x2947, 0x6F62, 0x2936,
+ 0x6F63, 0x2951, 0x6F64, 0x1197, 0x6F66, 0x118D, 0x6F67, 0x294A, 0x6F69,
+ 0x294E, 0x6F6A, 0x2953, 0x6F6B, 0x2948, 0x6F6C, 0x293C, 0x6F6D, 0x1190,
+ 0x6F6E, 0x1193, 0x6F6F, 0x119B, 0x6F70, 0x1196, 0x6F72, 0x293F, 0x6F73,
+ 0x26FF, 0x6F76, 0x293B, 0x6F77, 0x2952, 0x6F78, 0x1192, 0x6F7A, 0x1195,
+ 0x6F7B, 0x2954, 0x6F7C, 0x118A, 0x6F7D, 0x2949, 0x6F7E, 0x292F, 0x6F7F,
+ 0x294F, 0x6F80, 0x13FC, 0x6F82, 0x293D, 0x6F84, 0x118B, 0x6F85, 0x2938,
+ 0x6F86, 0x118F, 0x6F87, 0x2930, 0x6F88, 0x101A, 0x6F89, 0x2934, 0x6F8B,
+ 0x294D, 0x6F8C, 0x2935, 0x6F8D, 0x2933, 0x6F8E, 0x1194, 0x6F90, 0x294B,
+ 0x6F92, 0x2932, 0x6F93, 0x2944, 0x6F94, 0x2943, 0x6F95, 0x2950, 0x6F96,
+ 0x293A, 0x6F97, 0x1198, 0x6F9E, 0x2B9D, 0x6FA0, 0x12EB, 0x6FA1, 0x12E1,
+ 0x6FA2, 0x2BA9, 0x6FA3, 0x2B95, 0x6FA4, 0x12E3, 0x6FA5, 0x2BA1, 0x6FA6,
+ 0x12EA, 0x6FA7, 0x12E5, 0x6FA8, 0x2B9F, 0x6FA9, 0x2D8E, 0x6FAA, 0x2BA5,
+ 0x6FAB, 0x2BAB, 0x6FAC, 0x2BA4, 0x6FAD, 0x2B93, 0x6FAE, 0x2BA2, 0x6FAF,
+ 0x2BAD, 0x6FB0, 0x2BAF, 0x6FB1, 0x12E0, 0x6FB2, 0x2BAE, 0x6FB3, 0x12E6,
+ 0x6FB4, 0x12EC, 0x6FB6, 0x12E9, 0x6FB8, 0x2BA8, 0x6FB9, 0x12E8, 0x6FBA,
+ 0x2BA3, 0x6FBC, 0x2B97, 0x6FBD, 0x2B9C, 0x6FBF, 0x2BA7, 0x6FC0, 0x12E7,
+ 0x6FC1, 0x12E4, 0x6FC2, 0x12DF, 0x6FC3, 0x12E2, 0x6FC4, 0x2B9B, 0x6FC6,
+ 0x2931, 0x6FC7, 0x2B96, 0x6FC8, 0x2B99, 0x6FC9, 0x2BAA, 0x6FCA, 0x2B9E,
+ 0x6FCB, 0x2B94, 0x6FCC, 0x2D8D, 0x6FCD, 0x2BAC, 0x6FCE, 0x2B98, 0x6FCF,
+ 0x2BA6, 0x6FD4, 0x2D90, 0x6FD5, 0x1400, 0x6FD8, 0x13F4, 0x6FDB, 0x13F8,
+ 0x6FDC, 0x2D92, 0x6FDD, 0x2D98, 0x6FDE, 0x2D96, 0x6FDF, 0x13F6, 0x6FE0,
+ 0x13F7, 0x6FE1, 0x13FE, 0x6FE2, 0x2D99, 0x6FE3, 0x2D91, 0x6FE4, 0x13F9,
+ 0x6FE6, 0x2D95, 0x6FE7, 0x2D94, 0x6FE8, 0x2D9A, 0x6FE9, 0x13FF, 0x6FEB,
+ 0x13FA, 0x6FEC, 0x13FD, 0x6FED, 0x2D93, 0x6FEE, 0x1401, 0x6FEF, 0x13FB,
+ 0x6FF0, 0x1402, 0x6FF1, 0x13F5, 0x6FF2, 0x2D97, 0x6FF4, 0x2D8F, 0x6FF7,
+ 0x2F4E, 0x6FFA, 0x14EB, 0x6FFB, 0x2F4B, 0x6FFC, 0x2F4D, 0x6FFE, 0x14E9,
+ 0x6FFF, 0x2F49, 0x7000, 0x2F4A, 0x7001, 0x2F45, 0x7004, 0x2BA0, 0x7005,
+ 0x2F46, 0x7006, 0x14EA, 0x7007, 0x2F42, 0x7009, 0x14E7, 0x700A, 0x2F4F,
+ 0x700B, 0x14E8, 0x700C, 0x2F43, 0x700D, 0x2F44, 0x700E, 0x2F48, 0x700F,
+ 0x14ED, 0x7011, 0x14EC, 0x7014, 0x2F47, 0x7015, 0x158F, 0x7016, 0x30AD,
+ 0x7017, 0x30B3, 0x7018, 0x1590, 0x7019, 0x30AA, 0x701A, 0x158D, 0x701B,
+ 0x158A, 0x701C, 0x30B5, 0x701D, 0x158E, 0x701F, 0x158B, 0x7020, 0x30AC,
+ 0x7021, 0x30AF, 0x7022, 0x30B0, 0x7023, 0x30B1, 0x7024, 0x30B4, 0x7026,
+ 0x2F4C, 0x7027, 0x30AB, 0x7028, 0x158C, 0x7029, 0x30B2, 0x702A, 0x31EF,
+ 0x702B, 0x30AE, 0x702F, 0x31E6, 0x7030, 0x161D, 0x7031, 0x31E9, 0x7032,
+ 0x161E, 0x7033, 0x31F2, 0x7034, 0x31E8, 0x7035, 0x31E5, 0x7037, 0x31E7,
+ 0x7038, 0x31EB, 0x7039, 0x31EE, 0x703A, 0x31ED, 0x703B, 0x31F1, 0x703C,
+ 0x31E4, 0x703E, 0x161C, 0x703F, 0x31EC, 0x7040, 0x31F0, 0x7041, 0x31F3,
+ 0x7042, 0x31EA, 0x7043, 0x32D8, 0x7044, 0x32D9, 0x7045, 0x32DD, 0x7046,
+ 0x32DE, 0x7048, 0x32DB, 0x7049, 0x32DC, 0x704A, 0x32DA, 0x704C, 0x167A,
+ 0x7051, 0x16C8, 0x7052, 0x338C, 0x7055, 0x3389, 0x7056, 0x338A, 0x7057,
+ 0x338B, 0x7058, 0x16C9, 0x705A, 0x3423, 0x705B, 0x3422, 0x705D, 0x348A,
+ 0x705E, 0x1722, 0x705F, 0x3488, 0x7060, 0x348B, 0x7061, 0x3489, 0x7062,
+ 0x34D0, 0x7063, 0x1744, 0x7064, 0x1752, 0x7065, 0x351C, 0x7066, 0x3506,
+ 0x7068, 0x351B, 0x7069, 0x3547, 0x706A, 0x3548, 0x706B, 0x02E6, 0x7070,
+ 0x03F2, 0x7071, 0x180A, 0x7074, 0x18C3, 0x7076, 0x04E6, 0x7078, 0x04E9,
+ 0x707A, 0x18C4, 0x707C, 0x04E7, 0x707D, 0x04E8, 0x7082, 0x19F7, 0x7083,
+ 0x19F9, 0x7084, 0x19F4, 0x7085, 0x19F1, 0x7086, 0x19F3, 0x708A, 0x0643,
+ 0x708E, 0x0641, 0x7091, 0x19F5, 0x7092, 0x0642, 0x7093, 0x19F2, 0x7094,
+ 0x19EF, 0x7095, 0x0640, 0x7096, 0x19F6, 0x7098, 0x19F0, 0x7099, 0x0644,
+ 0x709A, 0x19F8, 0x709F, 0x1B66, 0x70A1, 0x1B6A, 0x70A4, 0x0790, 0x70A9,
+ 0x1B6D, 0x70AB, 0x0788, 0x70AC, 0x078B, 0x70AD, 0x078D, 0x70AE, 0x078F,
+ 0x70AF, 0x078C, 0x70B0, 0x1B69, 0x70B1, 0x1B68, 0x70B3, 0x078A, 0x70B4,
+ 0x1B6B, 0x70B5, 0x1B6C, 0x70B7, 0x1B65, 0x70B8, 0x078E, 0x70BA, 0x0789,
+ 0x70BE, 0x1B67, 0x70C5, 0x1D27, 0x70C6, 0x1D28, 0x70C7, 0x1D29, 0x70C8,
+ 0x0921, 0x70CA, 0x091D, 0x70CB, 0x1D1E, 0x70CD, 0x1D26, 0x70CE, 0x1D2B,
+ 0x70CF, 0x0922, 0x70D1, 0x1D1C, 0x70D2, 0x1D22, 0x70D3, 0x1D1B, 0x70D4,
+ 0x1D25, 0x70D7, 0x1D21, 0x70D8, 0x091E, 0x70D9, 0x0920, 0x70DA, 0x1D2A,
+ 0x70DC, 0x1D1A, 0x70DD, 0x1D1D, 0x70DE, 0x1D23, 0x70E0, 0x1D24, 0x70E1,
+ 0x1D2C, 0x70E2, 0x1D20, 0x70E4, 0x091F, 0x70EF, 0x0B16, 0x70F0, 0x1F72,
+ 0x70F3, 0x1F74, 0x70F4, 0x1F70, 0x70F6, 0x1F7C, 0x70F7, 0x1F6E, 0x70F8,
+ 0x1F7B, 0x70F9, 0x0B12, 0x70FA, 0x1F6C, 0x70FB, 0x21F2, 0x70FC, 0x1F76,
+ 0x70FD, 0x0B15, 0x70FF, 0x1F77, 0x7100, 0x1F7A, 0x7102, 0x1F7E, 0x7104,
+ 0x1F73, 0x7106, 0x1F78, 0x7109, 0x0B13, 0x710A, 0x0B14, 0x710B, 0x1F7D,
+ 0x710C, 0x1F71, 0x710D, 0x1F6D, 0x710E, 0x1F7F, 0x7110, 0x1F75, 0x7113,
+ 0x1F79, 0x7117, 0x1F6F, 0x7119, 0x0CC8, 0x711A, 0x0CC9, 0x711B, 0x21FC,
+ 0x711C, 0x0CCF, 0x711E, 0x21F0, 0x711F, 0x21F9, 0x7120, 0x21EF, 0x7121,
+ 0x0CCC, 0x7122, 0x21F7, 0x7123, 0x21F5, 0x7125, 0x21F6, 0x7126, 0x0CCA,
+ 0x7128, 0x21FA, 0x712E, 0x21F3, 0x712F, 0x21F1, 0x7130, 0x0CCB, 0x7131,
+ 0x21F4, 0x7132, 0x21F8, 0x7136, 0x0CCD, 0x713A, 0x21FB, 0x7141, 0x247B,
+ 0x7142, 0x2482, 0x7143, 0x2484, 0x7144, 0x248A, 0x7146, 0x0E72, 0x7147,
+ 0x2476, 0x7149, 0x0E6A, 0x714B, 0x2485, 0x714C, 0x0E6F, 0x714D, 0x248B,
+ 0x714E, 0x0E66, 0x7150, 0x2488, 0x7152, 0x2478, 0x7153, 0x2489, 0x7154,
+ 0x2477, 0x7156, 0x0E74, 0x7158, 0x2483, 0x7159, 0x0E67, 0x715A, 0x248C,
+ 0x715C, 0x0E6C, 0x715D, 0x247C, 0x715E, 0x0E71, 0x715F, 0x2487, 0x7160,
+ 0x247A, 0x7161, 0x2481, 0x7162, 0x247D, 0x7163, 0x2479, 0x7164, 0x0E69,
+ 0x7165, 0x0E70, 0x7166, 0x0E6E, 0x7167, 0x0E6B, 0x7168, 0x0E73, 0x7169,
+ 0x0E68, 0x716A, 0x2480, 0x716C, 0x0E6D, 0x716E, 0x0CCE, 0x7170, 0x2486,
+ 0x7172, 0x247E, 0x7178, 0x247F, 0x717B, 0x271E, 0x717D, 0x1023, 0x7180,
+ 0x271A, 0x7181, 0x2720, 0x7182, 0x271C, 0x7184, 0x1025, 0x7185, 0x271B,
+ 0x7186, 0x271F, 0x7187, 0x2717, 0x7189, 0x2719, 0x718A, 0x1024, 0x718F,
+ 0x271D, 0x7190, 0x2718, 0x7192, 0x1026, 0x7194, 0x1021, 0x7197, 0x2721,
+ 0x7199, 0x1022, 0x719A, 0x295A, 0x719B, 0x2957, 0x719C, 0x2963, 0x719D,
+ 0x295D, 0x719E, 0x295F, 0x719F, 0x119E, 0x71A0, 0x2959, 0x71A1, 0x2961,
+ 0x71A4, 0x2960, 0x71A5, 0x295E, 0x71A7, 0x2964, 0x71A8, 0x11A1, 0x71A9,
+ 0x295B, 0x71AA, 0x2962, 0x71AC, 0x119F, 0x71AF, 0x2956, 0x71B0, 0x2958,
+ 0x71B1, 0x11A0, 0x71B2, 0x2955, 0x71B3, 0x2965, 0x71B5, 0x295C, 0x71B8,
+ 0x2BB3, 0x71B9, 0x12F3, 0x71BC, 0x2BBE, 0x71BD, 0x2BBC, 0x71BE, 0x12ED,
+ 0x71BF, 0x2BB2, 0x71C0, 0x2BB5, 0x71C1, 0x2BB6, 0x71C2, 0x2BB1, 0x71C3,
+ 0x12F7, 0x71C4, 0x12F8, 0x71C5, 0x2BB0, 0x71C6, 0x2BBF, 0x71C7, 0x2BBA,
+ 0x71C8, 0x12F1, 0x71C9, 0x12EE, 0x71CA, 0x2BB9, 0x71CB, 0x2BB7, 0x71CE,
+ 0x12F4, 0x71CF, 0x2BBB, 0x71D0, 0x12EF, 0x71D2, 0x12F0, 0x71D4, 0x2BB8,
+ 0x71D5, 0x12F2, 0x71D6, 0x2BB4, 0x71D8, 0x2BBD, 0x71D9, 0x12F5, 0x71DA,
+ 0x2BC0, 0x71DB, 0x2BC1, 0x71DC, 0x12F6, 0x71DF, 0x1404, 0x71E0, 0x140B,
+ 0x71E1, 0x2D9B, 0x71E2, 0x2DA1, 0x71E4, 0x2D9F, 0x71E5, 0x1407, 0x71E6,
+ 0x1406, 0x71E7, 0x1403, 0x71E8, 0x2D9D, 0x71EC, 0x1409, 0x71ED, 0x1408,
+ 0x71EE, 0x1405, 0x71F0, 0x2DA0, 0x71F1, 0x2D9C, 0x71F2, 0x2D9E, 0x71F4,
+ 0x140A, 0x71F8, 0x14F1, 0x71F9, 0x2F52, 0x71FB, 0x14EE, 0x71FC, 0x14EF,
+ 0x71FD, 0x2F54, 0x71FE, 0x14F0, 0x71FF, 0x2F51, 0x7201, 0x2F50, 0x7202,
+ 0x30B9, 0x7203, 0x2F53, 0x7205, 0x30BA, 0x7206, 0x1591, 0x7207, 0x30B8,
+ 0x720A, 0x30B7, 0x720C, 0x30B6, 0x720D, 0x1592, 0x7210, 0x161F, 0x7213,
+ 0x31F4, 0x7214, 0x31F5, 0x7219, 0x32E1, 0x721A, 0x32E0, 0x721B, 0x167B,
+ 0x721D, 0x32DF, 0x721E, 0x338D, 0x721F, 0x338E, 0x7222, 0x3424, 0x7223,
+ 0x348C, 0x7226, 0x34D1, 0x7227, 0x3535, 0x7228, 0x1766, 0x7229, 0x3549,
+ 0x722A, 0x02E7, 0x722C, 0x0645, 0x722D, 0x0646, 0x7230, 0x0791, 0x7235,
+ 0x140C, 0x7236, 0x02E8, 0x7238, 0x0647, 0x7239, 0x0923, 0x723A, 0x0E75,
+ 0x723B, 0x02E9, 0x723D, 0x0B17, 0x723E, 0x1027, 0x723F, 0x178D, 0x7241,
+ 0x1B6E, 0x7242, 0x1D2D, 0x7244, 0x2722, 0x7246, 0x140D, 0x7247, 0x02EA,
+ 0x7248, 0x0648, 0x7249, 0x1B6F, 0x724A, 0x1B70, 0x724B, 0x21FD, 0x724C,
+ 0x0CD0, 0x724F, 0x248D, 0x7252, 0x0E76, 0x7253, 0x2723, 0x7256, 0x11A2,
+ 0x7258, 0x1593, 0x7259, 0x02EB, 0x725A, 0x21FE, 0x725B, 0x02EC, 0x725D,
+ 0x03F4, 0x725E, 0x180B, 0x725F, 0x03F3, 0x7260, 0x04EC, 0x7261, 0x04EB,
+ 0x7262, 0x04EA, 0x7263, 0x18C5, 0x7267, 0x0649, 0x7269, 0x064A, 0x726A,
+ 0x19FA, 0x726C, 0x1B71, 0x726E, 0x1B74, 0x726F, 0x0793, 0x7270, 0x1B72,
+ 0x7272, 0x0792, 0x7273, 0x1B73, 0x7274, 0x0794, 0x7276, 0x1D30, 0x7277,
+ 0x1D2F, 0x7278, 0x1D2E, 0x7279, 0x0924, 0x727B, 0x1F81, 0x727C, 0x1F82,
+ 0x727D, 0x0B18, 0x727E, 0x1F80, 0x727F, 0x1F83, 0x7280, 0x0CD2, 0x7281,
+ 0x0B19, 0x7284, 0x0CD1, 0x7285, 0x2202, 0x7286, 0x2201, 0x7288, 0x21FF,
+ 0x7289, 0x2200, 0x728B, 0x2203, 0x728C, 0x248F, 0x728D, 0x248E, 0x728E,
+ 0x2492, 0x7290, 0x2491, 0x7291, 0x2490, 0x7292, 0x1028, 0x7293, 0x2726,
+ 0x7295, 0x2725, 0x7296, 0x1029, 0x7297, 0x2724, 0x7298, 0x2966, 0x729A,
+ 0x2967, 0x729B, 0x11A3, 0x729D, 0x2BC2, 0x729E, 0x2BC3, 0x72A1, 0x30BF,
+ 0x72A2, 0x1594, 0x72A3, 0x30BE, 0x72A4, 0x30BD, 0x72A5, 0x30BB, 0x72A6,
+ 0x30BC, 0x72A7, 0x167C, 0x72A8, 0x31F6, 0x72A9, 0x338F, 0x72AA, 0x34D2,
+ 0x72AC, 0x02ED, 0x72AE, 0x17AF, 0x72AF, 0x0355, 0x72B0, 0x17B0, 0x72B4,
+ 0x180C, 0x72B5, 0x180D, 0x72BA, 0x18CB, 0x72BD, 0x18C7, 0x72BF, 0x18C6,
+ 0x72C0, 0x064B, 0x72C1, 0x18CA, 0x72C2, 0x04EE, 0x72C3, 0x18C8, 0x72C4,
+ 0x04ED, 0x72C5, 0x18CC, 0x72C6, 0x18C9, 0x72C9, 0x19FE, 0x72CA, 0x1B75,
+ 0x72CB, 0x19FC, 0x72CC, 0x1A03, 0x72CE, 0x064C, 0x72D0, 0x064F, 0x72D1,
+ 0x1A04, 0x72D2, 0x1A00, 0x72D4, 0x1A01, 0x72D6, 0x19FB, 0x72D7, 0x064E,
+ 0x72D8, 0x19FD, 0x72D9, 0x064D, 0x72DA, 0x1A02, 0x72DC, 0x19FF, 0x72DF,
+ 0x1B79, 0x72E0, 0x0796, 0x72E1, 0x0797, 0x72E3, 0x1B7C, 0x72E4, 0x1B76,
+ 0x72E6, 0x1B7B, 0x72E8, 0x1B77, 0x72E9, 0x0795, 0x72EA, 0x1B7A, 0x72EB,
+ 0x1B78, 0x72F3, 0x1D36, 0x72F4, 0x1D33, 0x72F6, 0x1D35, 0x72F7, 0x0929,
+ 0x72F8, 0x0928, 0x72F9, 0x0926, 0x72FA, 0x1D32, 0x72FB, 0x1D37, 0x72FC,
+ 0x0925, 0x72FD, 0x0927, 0x72FE, 0x1D34, 0x72FF, 0x1F8B, 0x7300, 0x1D31,
+ 0x7301, 0x1D38, 0x7307, 0x1F86, 0x7308, 0x1F8A, 0x730A, 0x1F89, 0x730B,
+ 0x2205, 0x730C, 0x2210, 0x730F, 0x1F8C, 0x7311, 0x1F87, 0x7312, 0x2204,
+ 0x7313, 0x0B1D, 0x7316, 0x0B1C, 0x7317, 0x1F85, 0x7318, 0x1F88, 0x7319,
+ 0x0B1E, 0x731B, 0x0B1B, 0x731C, 0x0B1A, 0x731D, 0x1F84, 0x731E, 0x1F8D,
+ 0x7322, 0x2207, 0x7323, 0x220E, 0x7325, 0x0CD4, 0x7326, 0x220D, 0x7327,
+ 0x220A, 0x7329, 0x0CD6, 0x732D, 0x220C, 0x7330, 0x2206, 0x7331, 0x2208,
+ 0x7332, 0x220B, 0x7333, 0x2209, 0x7334, 0x0CD5, 0x7335, 0x220F, 0x7336,
+ 0x0CD3, 0x7337, 0x0E77, 0x733A, 0x2496, 0x733B, 0x2495, 0x733C, 0x2493,
+ 0x733E, 0x0E7A, 0x733F, 0x0E79, 0x7340, 0x2497, 0x7342, 0x2494, 0x7343,
+ 0x2727, 0x7344, 0x102A, 0x7345, 0x0E78, 0x7349, 0x2499, 0x734A, 0x2498,
+ 0x734C, 0x272A, 0x734D, 0x2728, 0x734E, 0x11A4, 0x7350, 0x102B, 0x7351,
+ 0x2729, 0x7352, 0x2969, 0x7357, 0x11A5, 0x7358, 0x2968, 0x7359, 0x2971,
+ 0x735A, 0x2970, 0x735B, 0x296E, 0x735D, 0x296D, 0x735E, 0x296A, 0x735F,
+ 0x296B, 0x7360, 0x296C, 0x7361, 0x296F, 0x7362, 0x2972, 0x7365, 0x2BC8,
+ 0x7366, 0x2BC5, 0x7367, 0x2BC6, 0x7368, 0x12F9, 0x7369, 0x2BC4, 0x736A,
+ 0x2BCA, 0x736B, 0x2BC9, 0x736C, 0x2BC7, 0x736E, 0x2DA3, 0x736F, 0x2DA4,
+ 0x7370, 0x140E, 0x7372, 0x140F, 0x7373, 0x2DA2, 0x7375, 0x14F3, 0x7376,
+ 0x2F55, 0x7377, 0x14F2, 0x7378, 0x1595, 0x737A, 0x1596, 0x737B, 0x1620,
+ 0x737C, 0x31F8, 0x737D, 0x31F7, 0x737E, 0x32E2, 0x737F, 0x3390, 0x7380,
+ 0x16CA, 0x7381, 0x3426, 0x7382, 0x3425, 0x7383, 0x3427, 0x7384, 0x0356,
+ 0x7385, 0x1B7D, 0x7386, 0x092A, 0x7387, 0x0B1F, 0x7388, 0x1F8E, 0x7389,
+ 0x0357, 0x738A, 0x17B1, 0x738B, 0x02EE, 0x738E, 0x180E, 0x7392, 0x18D1,
+ 0x7393, 0x18CF, 0x7394, 0x18D0, 0x7395, 0x18CD, 0x7396, 0x04EF, 0x7397,
+ 0x18CE, 0x739D, 0x1A0C, 0x739F, 0x0652, 0x73A0, 0x1A0A, 0x73A1, 0x1A06,
+ 0x73A2, 0x1A09, 0x73A4, 0x1A05, 0x73A5, 0x0654, 0x73A6, 0x1A08, 0x73A8,
+ 0x0651, 0x73A9, 0x0650, 0x73AB, 0x0653, 0x73AC, 0x1A0B, 0x73AD, 0x1A07,
+ 0x73B2, 0x079B, 0x73B3, 0x079E, 0x73B4, 0x1B85, 0x73B5, 0x1B84, 0x73B6,
+ 0x1B83, 0x73B7, 0x0798, 0x73B8, 0x1B8C, 0x73B9, 0x1B82, 0x73BB, 0x079A,
+ 0x73BC, 0x1D3D, 0x73BE, 0x1B89, 0x73BF, 0x1B87, 0x73C0, 0x079D, 0x73C2,
+ 0x1B7F, 0x73C3, 0x1B8A, 0x73C5, 0x1B81, 0x73C6, 0x1B8B, 0x73C7, 0x1B88,
+ 0x73C8, 0x1B80, 0x73CA, 0x0799, 0x73CB, 0x1B8D, 0x73CC, 0x1B7E, 0x73CD,
+ 0x079C, 0x73D2, 0x1D42, 0x73D3, 0x1D39, 0x73D4, 0x1D44, 0x73D6, 0x1D3C,
+ 0x73D7, 0x1D47, 0x73D8, 0x1D48, 0x73D9, 0x1D3A, 0x73DA, 0x1D46, 0x73DB,
+ 0x1D43, 0x73DC, 0x1D41, 0x73DD, 0x1D45, 0x73DE, 0x0930, 0x73E0, 0x092E,
+ 0x73E3, 0x1D3F, 0x73E5, 0x1D3B, 0x73E7, 0x1D3E, 0x73E8, 0x1D49, 0x73E9,
+ 0x1D40, 0x73EA, 0x092F, 0x73EB, 0x1B86, 0x73ED, 0x092B, 0x73EE, 0x092D,
+ 0x73F4, 0x1F9C, 0x73F5, 0x1F91, 0x73F6, 0x1F8F, 0x73F8, 0x1F90, 0x73FA,
+ 0x1F97, 0x73FC, 0x1F98, 0x73FD, 0x1F94, 0x73FE, 0x0B24, 0x73FF, 0x1F99,
+ 0x7400, 0x1F96, 0x7401, 0x1F93, 0x7403, 0x0B22, 0x7404, 0x1F92, 0x7405,
+ 0x0B20, 0x7406, 0x0B23, 0x7407, 0x1F95, 0x7408, 0x1F9D, 0x7409, 0x092C,
+ 0x740A, 0x0B21, 0x740B, 0x1F9B, 0x740C, 0x1F9A, 0x740D, 0x0B25, 0x7416,
+ 0x2215, 0x741A, 0x2216, 0x741B, 0x0CE0, 0x741D, 0x221C, 0x7420, 0x221E,
+ 0x7421, 0x2217, 0x7422, 0x0CDA, 0x7423, 0x221B, 0x7424, 0x221A, 0x7425,
+ 0x0CDB, 0x7426, 0x0CE1, 0x7428, 0x0CE2, 0x7429, 0x221D, 0x742A, 0x0CD8,
+ 0x742B, 0x2214, 0x742C, 0x2212, 0x742D, 0x2218, 0x742E, 0x2211, 0x742F,
+ 0x0CDF, 0x7430, 0x2213, 0x7431, 0x2219, 0x7432, 0x221F, 0x7433, 0x0CD9,
+ 0x7434, 0x0CDE, 0x7435, 0x0CDC, 0x7436, 0x0CDD, 0x743A, 0x0CD7, 0x743F,
+ 0x0E81, 0x7440, 0x24A0, 0x7441, 0x0E80, 0x7442, 0x24A4, 0x7444, 0x249A,
+ 0x7446, 0x24A5, 0x744A, 0x249B, 0x744B, 0x249C, 0x744D, 0x24A6, 0x744E,
+ 0x24A3, 0x744F, 0x24A1, 0x7450, 0x24A2, 0x7451, 0x249E, 0x7452, 0x249D,
+ 0x7454, 0x24A7, 0x7455, 0x0E7D, 0x7457, 0x249F, 0x7459, 0x0E82, 0x745A,
+ 0x0E7C, 0x745B, 0x0E83, 0x745C, 0x0E84, 0x745E, 0x0E7F, 0x745F, 0x0E7E,
+ 0x7462, 0x272B, 0x7463, 0x102D, 0x7464, 0x102C, 0x7467, 0x2730, 0x7469,
+ 0x11A6, 0x746A, 0x102E, 0x746D, 0x1030, 0x746E, 0x2731, 0x746F, 0x0E7B,
+ 0x7470, 0x102F, 0x7471, 0x272D, 0x7472, 0x272F, 0x7473, 0x272C, 0x7475,
+ 0x272E, 0x7479, 0x297C, 0x747C, 0x297B, 0x747D, 0x2978, 0x747E, 0x11A9,
+ 0x747F, 0x2BCB, 0x7480, 0x11AA, 0x7481, 0x2977, 0x7483, 0x11A8, 0x7485,
+ 0x2979, 0x7486, 0x2976, 0x7487, 0x2973, 0x7488, 0x297A, 0x7489, 0x2974,
+ 0x748A, 0x2975, 0x748B, 0x11A7, 0x7490, 0x2DA8, 0x7492, 0x2BCF, 0x7494,
+ 0x2BCE, 0x7495, 0x2BD0, 0x7497, 0x2DA5, 0x7498, 0x12FC, 0x749A, 0x2BCC,
+ 0x749C, 0x12FA, 0x749E, 0x12FE, 0x749F, 0x12FD, 0x74A0, 0x2BCD, 0x74A1,
+ 0x2BD1, 0x74A3, 0x12FB, 0x74A5, 0x2DAC, 0x74A6, 0x1412, 0x74A7, 0x14F4,
+ 0x74A8, 0x1413, 0x74A9, 0x1410, 0x74AA, 0x2DA9, 0x74AB, 0x2DA7, 0x74AD,
+ 0x2DAA, 0x74AF, 0x2DAD, 0x74B0, 0x1411, 0x74B1, 0x2DAB, 0x74B2, 0x2DA6,
+ 0x74B5, 0x2F58, 0x74B6, 0x2F5B, 0x74B7, 0x30C2, 0x74B8, 0x2F56, 0x74BA,
+ 0x31F9, 0x74BB, 0x2F5C, 0x74BD, 0x1597, 0x74BE, 0x2F5A, 0x74BF, 0x14F5,
+ 0x74C0, 0x2F57, 0x74C1, 0x2F59, 0x74C2, 0x2F5D, 0x74C3, 0x30C3, 0x74C5,
+ 0x30C1, 0x74CA, 0x1598, 0x74CB, 0x30C0, 0x74CF, 0x1621, 0x74D4, 0x167E,
+ 0x74D5, 0x3392, 0x74D6, 0x167D, 0x74D7, 0x3394, 0x74D8, 0x3391, 0x74D9,
+ 0x3393, 0x74DA, 0x16FE, 0x74DB, 0x348D, 0x74DC, 0x0358, 0x74DD, 0x1A0D,
+ 0x74DE, 0x1D4A, 0x74DF, 0x1D4B, 0x74E0, 0x0B26, 0x74E1, 0x24A8, 0x74E2,
+ 0x12FF, 0x74E3, 0x1599, 0x74E4, 0x16CB, 0x74E5, 0x348E, 0x74E6, 0x0359,
+ 0x74E8, 0x1A0E, 0x74E9, 0x0120, 0x74EC, 0x1B8E, 0x74EE, 0x1B8F, 0x74F4,
+ 0x1D4C, 0x74F5, 0x1D4D, 0x74F6, 0x0B27, 0x74F7, 0x0B28, 0x74FB, 0x2220,
+ 0x74FD, 0x24AB, 0x74FE, 0x24AA, 0x74FF, 0x24A9, 0x7500, 0x2732, 0x7502,
+ 0x2733, 0x7503, 0x2734, 0x7504, 0x1031, 0x7507, 0x297E, 0x7508, 0x297D,
+ 0x750B, 0x2BD2, 0x750C, 0x1300, 0x750D, 0x1301, 0x750F, 0x2DB1, 0x7510,
+ 0x2DAE, 0x7511, 0x2DAF, 0x7512, 0x2DB0, 0x7513, 0x2F5F, 0x7514, 0x2F5E,
+ 0x7515, 0x14F6, 0x7516, 0x30C4, 0x7517, 0x32E3, 0x7518, 0x035A, 0x751A,
+ 0x079F, 0x751C, 0x0B29, 0x751D, 0x24AC, 0x751F, 0x035B, 0x7521, 0x1D4E,
+ 0x7522, 0x0B2A, 0x7525, 0x0CE3, 0x7526, 0x0CE4, 0x7528, 0x035C, 0x7529,
+ 0x035D, 0x752A, 0x180F, 0x752B, 0x04F1, 0x752C, 0x04F0, 0x752D, 0x07A0,
+ 0x752E, 0x1B90, 0x752F, 0x2221, 0x7530, 0x035E, 0x7531, 0x035F, 0x7532,
+ 0x0360, 0x7533, 0x0361, 0x7537, 0x04F2, 0x7538, 0x04F3, 0x7539, 0x18D3,
+ 0x753A, 0x18D2, 0x753D, 0x0655, 0x753E, 0x1A11, 0x753F, 0x1A0F, 0x7540,
+ 0x1A10, 0x7547, 0x1B91, 0x7548, 0x1B92, 0x754B, 0x07A4, 0x754C, 0x07A2,
+ 0x754E, 0x07A3, 0x754F, 0x07A1, 0x7554, 0x0931, 0x7559, 0x0935, 0x755A,
+ 0x0934, 0x755B, 0x1D4F, 0x755C, 0x0933, 0x755D, 0x0932, 0x755F, 0x1D50,
+ 0x7562, 0x0B2D, 0x7563, 0x1F9F, 0x7564, 0x1F9E, 0x7565, 0x0B2B, 0x7566,
+ 0x0B2C, 0x756A, 0x0CE6, 0x756B, 0x0CE5, 0x756C, 0x2223, 0x756F, 0x2222,
+ 0x7570, 0x0B2E, 0x7576, 0x0E85, 0x7577, 0x24AE, 0x7578, 0x0E86, 0x7579,
+ 0x24AD, 0x757D, 0x2735, 0x757E, 0x297F, 0x757F, 0x11AB, 0x7580, 0x2BD3,
+ 0x7584, 0x2DB2, 0x7586, 0x159B, 0x7587, 0x159A, 0x758A, 0x16CC, 0x758B,
+ 0x0362, 0x758C, 0x1A12, 0x758F, 0x0B2F, 0x7590, 0x2736, 0x7591, 0x1032,
+ 0x7592, 0x022E, 0x7594, 0x18D4, 0x7595, 0x18D5, 0x7598, 0x1A13, 0x7599,
+ 0x0657, 0x759A, 0x0658, 0x759D, 0x0656, 0x75A2, 0x07A8, 0x75A3, 0x07A9,
+ 0x75A4, 0x07A6, 0x75A5, 0x07A7, 0x75A7, 0x1B93, 0x75AA, 0x1B94, 0x75AB,
+ 0x07A5, 0x75B0, 0x1D51, 0x75B2, 0x0939, 0x75B3, 0x093A, 0x75B5, 0x0B32,
+ 0x75B6, 0x1D57, 0x75B8, 0x093F, 0x75B9, 0x093D, 0x75BA, 0x1D58, 0x75BB,
+ 0x1D53, 0x75BC, 0x093C, 0x75BD, 0x093B, 0x75BE, 0x0936, 0x75BF, 0x1D56,
+ 0x75C0, 0x1D55, 0x75C1, 0x1D52, 0x75C2, 0x093E, 0x75C4, 0x1D54, 0x75C5,
+ 0x0937, 0x75C7, 0x0938, 0x75CA, 0x0B33, 0x75CB, 0x1FA3, 0x75CC, 0x1FA4,
+ 0x75CD, 0x0B34, 0x75CE, 0x1FA0, 0x75CF, 0x1FA2, 0x75D0, 0x1FA6, 0x75D1,
+ 0x1FA5, 0x75D2, 0x1FA1, 0x75D4, 0x0B30, 0x75D5, 0x0B31, 0x75D7, 0x222B,
+ 0x75D8, 0x0CEB, 0x75D9, 0x0CEA, 0x75DA, 0x2225, 0x75DB, 0x0CE8, 0x75DD,
+ 0x2228, 0x75DE, 0x0CEC, 0x75DF, 0x2229, 0x75E0, 0x0CED, 0x75E1, 0x2226,
+ 0x75E2, 0x0CE7, 0x75E3, 0x0CE9, 0x75E4, 0x222A, 0x75E6, 0x2227, 0x75E7,
+ 0x2224, 0x75ED, 0x24BB, 0x75EF, 0x24B0, 0x75F0, 0x0E88, 0x75F1, 0x0E8B,
+ 0x75F2, 0x0E8A, 0x75F3, 0x0E8F, 0x75F4, 0x0E8E, 0x75F5, 0x24BC, 0x75F6,
+ 0x24BA, 0x75F7, 0x24B3, 0x75F8, 0x24B7, 0x75F9, 0x24B6, 0x75FA, 0x0E8C,
+ 0x75FB, 0x24B9, 0x75FC, 0x24B5, 0x75FD, 0x24BD, 0x75FE, 0x24B4, 0x75FF,
+ 0x0E8D, 0x7600, 0x0E87, 0x7601, 0x0E89, 0x7603, 0x24B2, 0x7608, 0x2738,
+ 0x7609, 0x1036, 0x760A, 0x273C, 0x760B, 0x1035, 0x760C, 0x2739, 0x760D,
+ 0x1034, 0x760F, 0x24B1, 0x7610, 0x24B8, 0x7611, 0x273B, 0x7613, 0x1037,
+ 0x7614, 0x273D, 0x7615, 0x273A, 0x7616, 0x2737, 0x7619, 0x2982, 0x761A,
+ 0x2986, 0x761B, 0x2988, 0x761C, 0x2984, 0x761D, 0x2983, 0x761E, 0x2981,
+ 0x761F, 0x11AE, 0x7620, 0x11AC, 0x7621, 0x11B1, 0x7622, 0x11B2, 0x7623,
+ 0x2985, 0x7624, 0x11AF, 0x7625, 0x2980, 0x7626, 0x11B0, 0x7627, 0x1033,
+ 0x7628, 0x2987, 0x7629, 0x11AD, 0x762D, 0x2BD5, 0x762F, 0x2BD4, 0x7630,
+ 0x2BDC, 0x7631, 0x2BD6, 0x7632, 0x2BDB, 0x7633, 0x2BD8, 0x7634, 0x1302,
+ 0x7635, 0x2BDA, 0x7638, 0x1303, 0x763A, 0x1304, 0x763C, 0x2BD9, 0x763D,
+ 0x2BD7, 0x7642, 0x1415, 0x7643, 0x2DB3, 0x7646, 0x1414, 0x7647, 0x2DB6,
+ 0x7648, 0x2DB4, 0x7649, 0x2DB5, 0x764C, 0x1416, 0x7650, 0x2F63, 0x7652,
+ 0x14F9, 0x7653, 0x2F64, 0x7656, 0x14F7, 0x7657, 0x2F65, 0x7658, 0x14F8,
+ 0x7659, 0x2F62, 0x765A, 0x2F66, 0x765C, 0x2F60, 0x765F, 0x159C, 0x7660,
+ 0x30C5, 0x7661, 0x159D, 0x7662, 0x1622, 0x7664, 0x2F61, 0x7665, 0x1623,
+ 0x7669, 0x167F, 0x766A, 0x32E4, 0x766C, 0x16CE, 0x766D, 0x3395, 0x766E,
+ 0x16CD, 0x7670, 0x3428, 0x7671, 0x1723, 0x7672, 0x1724, 0x7675, 0x3543,
+ 0x7676, 0x022F, 0x7678, 0x07AA, 0x7679, 0x1B95, 0x767B, 0x0CEE, 0x767C,
+ 0x0CEF, 0x767D, 0x0363, 0x767E, 0x03F5, 0x767F, 0x1810, 0x7681, 0x18D6,
+ 0x7682, 0x04F4, 0x7684, 0x0659, 0x7686, 0x07AB, 0x7687, 0x07AC, 0x7688,
+ 0x07AD, 0x7689, 0x1FA8, 0x768A, 0x1D59, 0x768B, 0x0940, 0x768E, 0x0B35,
+ 0x768F, 0x1FA7, 0x7692, 0x222D, 0x7693, 0x0CF1, 0x7695, 0x222C, 0x7696,
+ 0x0CF0, 0x7699, 0x24BE, 0x769A, 0x11B3, 0x769B, 0x298C, 0x769C, 0x2989,
+ 0x769D, 0x298A, 0x769E, 0x298B, 0x76A4, 0x2DB7, 0x76A6, 0x2F67, 0x76AA,
+ 0x31FB, 0x76AB, 0x31FA, 0x76AD, 0x3396, 0x76AE, 0x0364, 0x76AF, 0x1A14,
+ 0x76B0, 0x0941, 0x76B4, 0x0CF2, 0x76B5, 0x24BF, 0x76B8, 0x273E, 0x76BA,
+ 0x11B4, 0x76BB, 0x2BDD, 0x76BD, 0x2F68, 0x76BE, 0x31FC, 0x76BF, 0x0365,
+ 0x76C2, 0x065A, 0x76C3, 0x07B0, 0x76C4, 0x1B96, 0x76C5, 0x07B1, 0x76C6,
+ 0x07AF, 0x76C8, 0x07AE, 0x76C9, 0x1D5A, 0x76CA, 0x0942, 0x76CD, 0x0943,
+ 0x76CE, 0x0944, 0x76D2, 0x0B37, 0x76D3, 0x1FA9, 0x76D4, 0x0B36, 0x76DA,
+ 0x222E, 0x76DB, 0x0B38, 0x76DC, 0x0CF3, 0x76DD, 0x24C0, 0x76DE, 0x0E90,
+ 0x76DF, 0x0E91, 0x76E1, 0x1038, 0x76E3, 0x1039, 0x76E4, 0x11B5, 0x76E5,
+ 0x1306, 0x76E6, 0x2BDE, 0x76E7, 0x1305, 0x76E9, 0x2DB8, 0x76EA, 0x1417,
+ 0x76EC, 0x2F69, 0x76ED, 0x31FD, 0x76EE, 0x0366, 0x76EF, 0x04F5, 0x76F0,
+ 0x1A17, 0x76F1, 0x1A16, 0x76F2, 0x065B, 0x76F3, 0x1A15, 0x76F4, 0x065C,
+ 0x76F5, 0x1A18, 0x76F7, 0x1B9C, 0x76F8, 0x07B4, 0x76F9, 0x07B3, 0x76FA,
+ 0x1B9E, 0x76FB, 0x1B9D, 0x76FC, 0x07B8, 0x76FE, 0x07B7, 0x7701, 0x07B2,
+ 0x7703, 0x1B98, 0x7704, 0x1B99, 0x7705, 0x1B9A, 0x7707, 0x07B9, 0x7708,
+ 0x1B97, 0x7709, 0x07B5, 0x770A, 0x1B9B, 0x770B, 0x07B6, 0x7710, 0x1D5D,
+ 0x7711, 0x1D61, 0x7712, 0x1D5F, 0x7713, 0x1D5E, 0x7715, 0x1D62, 0x7719,
+ 0x1D63, 0x771A, 0x1D64, 0x771B, 0x1D5C, 0x771D, 0x1D5B, 0x771F, 0x0946,
+ 0x7720, 0x0947, 0x7722, 0x1D65, 0x7723, 0x1D60, 0x7725, 0x1FB2, 0x7727,
+ 0x1D66, 0x7728, 0x0948, 0x7729, 0x0945, 0x772D, 0x1FAC, 0x772F, 0x1FAB,
+ 0x7731, 0x1FAD, 0x7732, 0x1FAE, 0x7733, 0x1FB0, 0x7734, 0x1FAF, 0x7735,
+ 0x1FB4, 0x7736, 0x0B3C, 0x7737, 0x0B39, 0x7738, 0x0B3D, 0x7739, 0x1FAA,
+ 0x773A, 0x0B3E, 0x773B, 0x1FB3, 0x773C, 0x0B3B, 0x773D, 0x1FB1, 0x773E,
+ 0x0B3A, 0x7744, 0x2231, 0x7745, 0x2233, 0x7746, 0x222F, 0x7747, 0x2230,
+ 0x774A, 0x2234, 0x774B, 0x2236, 0x774C, 0x2237, 0x774D, 0x2232, 0x774E,
+ 0x2235, 0x774F, 0x0CF4, 0x7752, 0x24C4, 0x7754, 0x24C9, 0x7755, 0x24C1,
+ 0x7756, 0x24C5, 0x7759, 0x24CA, 0x775A, 0x24C6, 0x775B, 0x0E92, 0x775C,
+ 0x0E9A, 0x775E, 0x0E95, 0x775F, 0x24C2, 0x7760, 0x24C3, 0x7761, 0x103D,
+ 0x7762, 0x0E9D, 0x7763, 0x0E96, 0x7765, 0x0E9B, 0x7766, 0x0E94, 0x7767,
+ 0x24C8, 0x7768, 0x0E9C, 0x7769, 0x24C7, 0x776A, 0x0E98, 0x776B, 0x0E93,
+ 0x776C, 0x0E99, 0x776D, 0x24CB, 0x776E, 0x2743, 0x776F, 0x2745, 0x7779,
+ 0x0E97, 0x777C, 0x2740, 0x777D, 0x103B, 0x777E, 0x2746, 0x777F, 0x103C,
+ 0x7780, 0x2744, 0x7781, 0x273F, 0x7782, 0x2742, 0x7783, 0x2747, 0x7784,
+ 0x103A, 0x7785, 0x2741, 0x7787, 0x11B7, 0x7788, 0x2990, 0x7789, 0x298F,
+ 0x778B, 0x11BA, 0x778C, 0x11B8, 0x778D, 0x298D, 0x778E, 0x11B6, 0x778F,
+ 0x298E, 0x7791, 0x11B9, 0x7795, 0x2BE6, 0x7797, 0x2BE8, 0x7799, 0x2BE7,
+ 0x779A, 0x2BDF, 0x779B, 0x2BE3, 0x779C, 0x2BE2, 0x779D, 0x2BE0, 0x779E,
+ 0x1308, 0x779F, 0x1309, 0x77A0, 0x1307, 0x77A1, 0x2BE1, 0x77A2, 0x2BE4,
+ 0x77A3, 0x2BE5, 0x77A5, 0x130A, 0x77A7, 0x141C, 0x77A8, 0x2DC0, 0x77AA,
+ 0x1419, 0x77AB, 0x2DBA, 0x77AC, 0x141B, 0x77AD, 0x141D, 0x77B0, 0x141A,
+ 0x77B1, 0x2DBF, 0x77B2, 0x2DBB, 0x77B3, 0x1418, 0x77B4, 0x2DBE, 0x77B5,
+ 0x2DB9, 0x77B6, 0x2DBD, 0x77B7, 0x2DBC, 0x77BA, 0x2F6B, 0x77BB, 0x14FC,
+ 0x77BC, 0x14FD, 0x77BD, 0x14FA, 0x77BF, 0x14FB, 0x77C2, 0x2F6A, 0x77C4,
+ 0x30C8, 0x77C7, 0x159E, 0x77C9, 0x30C6, 0x77CA, 0x30C7, 0x77CC, 0x31FE,
+ 0x77CD, 0x3201, 0x77CE, 0x31FF, 0x77CF, 0x3200, 0x77D0, 0x32E5, 0x77D3,
+ 0x1680, 0x77D4, 0x3429, 0x77D5, 0x348F, 0x77D7, 0x1725, 0x77D8, 0x34D3,
+ 0x77D9, 0x34D4, 0x77DA, 0x1753, 0x77DB, 0x0367, 0x77DC, 0x07BA, 0x77DE,
+ 0x2238, 0x77E0, 0x24CC, 0x77E2, 0x0368, 0x77E3, 0x04F6, 0x77E5, 0x065D,
+ 0x77E7, 0x1B9F, 0x77E8, 0x1BA0, 0x77E9, 0x0949, 0x77EC, 0x2239, 0x77ED,
+ 0x0CF5, 0x77EE, 0x0E9E, 0x77EF, 0x141E, 0x77F0, 0x2DC1, 0x77F1, 0x30C9,
+ 0x77F2, 0x3202, 0x77F3, 0x0369, 0x77F7, 0x1A1E, 0x77F8, 0x1A19, 0x77F9,
+ 0x1A1B, 0x77FA, 0x1A1D, 0x77FB, 0x1A1C, 0x77FC, 0x1A1A, 0x77FD, 0x065E,
+ 0x7802, 0x07BB, 0x7803, 0x1BA9, 0x7805, 0x1BA4, 0x7806, 0x1BA1, 0x7809,
+ 0x1BA8, 0x780C, 0x07BD, 0x780D, 0x07BE, 0x780E, 0x1BA7, 0x780F, 0x1BA6,
+ 0x7810, 0x1BA5, 0x7811, 0x1BA2, 0x7812, 0x1BA3, 0x7813, 0x1BAA, 0x7814,
+ 0x07BC, 0x781D, 0x094D, 0x781F, 0x0953, 0x7820, 0x0952, 0x7821, 0x1D6F,
+ 0x7822, 0x1D69, 0x7823, 0x1D67, 0x7825, 0x0950, 0x7826, 0x1FBB, 0x7827,
+ 0x094B, 0x7828, 0x1D6C, 0x7829, 0x1D70, 0x782A, 0x1D72, 0x782B, 0x1D6E,
+ 0x782C, 0x1D68, 0x782D, 0x0951, 0x782E, 0x1D6D, 0x782F, 0x1D6B, 0x7830,
+ 0x094A, 0x7831, 0x1D73, 0x7832, 0x0954, 0x7833, 0x1D71, 0x7834, 0x094E,
+ 0x7835, 0x1D6A, 0x7837, 0x094F, 0x7838, 0x094C, 0x7843, 0x0B40, 0x7845,
+ 0x1FBC, 0x7848, 0x1FB5, 0x7849, 0x1FB7, 0x784A, 0x1FB9, 0x784C, 0x1FBA,
+ 0x784D, 0x1FB8, 0x784E, 0x0B41, 0x7850, 0x1FBD, 0x7852, 0x1FB6, 0x785C,
+ 0x223D, 0x785D, 0x0CF6, 0x785E, 0x2245, 0x7860, 0x223A, 0x7862, 0x2246,
+ 0x7864, 0x223B, 0x7865, 0x223C, 0x7868, 0x2244, 0x7869, 0x2243, 0x786A,
+ 0x2240, 0x786B, 0x0B3F, 0x786C, 0x0CF7, 0x786D, 0x223E, 0x786E, 0x2241,
+ 0x786F, 0x0CF8, 0x7870, 0x2242, 0x7871, 0x223F, 0x7879, 0x24D7, 0x787B,
+ 0x24DB, 0x787C, 0x0EA5, 0x787E, 0x274D, 0x787F, 0x0EA8, 0x7880, 0x24D9,
+ 0x7881, 0x36E8, 0x7883, 0x24D6, 0x7884, 0x24D1, 0x7885, 0x24D3, 0x7886,
+ 0x24D4, 0x7887, 0x24CD, 0x7889, 0x0EA4, 0x788C, 0x0EA3, 0x788E, 0x0E9F,
+ 0x788F, 0x24D0, 0x7891, 0x0EA6, 0x7893, 0x0EA7, 0x7894, 0x24CF, 0x7895,
+ 0x24D2, 0x7896, 0x24DA, 0x7897, 0x0EA1, 0x7898, 0x0EA2, 0x7899, 0x24D8,
+ 0x789A, 0x24CE, 0x789E, 0x274F, 0x789F, 0x103F, 0x78A0, 0x2751, 0x78A1,
+ 0x24D5, 0x78A2, 0x2753, 0x78A3, 0x1043, 0x78A4, 0x2754, 0x78A5, 0x2750,
+ 0x78A7, 0x1040, 0x78A8, 0x274C, 0x78A9, 0x1042, 0x78AA, 0x2749, 0x78AB,
+ 0x274E, 0x78AC, 0x2752, 0x78AD, 0x274B, 0x78B0, 0x0EA0, 0x78B2, 0x2748,
+ 0x78B3, 0x1041, 0x78B4, 0x274A, 0x78BA, 0x11BD, 0x78BB, 0x2992, 0x78BC,
+ 0x11C1, 0x78BE, 0x11BF, 0x78C1, 0x103E, 0x78C3, 0x2999, 0x78C4, 0x299A,
+ 0x78C5, 0x11BC, 0x78C8, 0x2998, 0x78C9, 0x299B, 0x78CA, 0x11BE, 0x78CB,
+ 0x11BB, 0x78CC, 0x2994, 0x78CD, 0x2991, 0x78CE, 0x2996, 0x78CF, 0x2993,
+ 0x78D0, 0x11C2, 0x78D1, 0x2995, 0x78D4, 0x2997, 0x78D5, 0x11C0, 0x78DA,
+ 0x130C, 0x78DB, 0x2BEF, 0x78DD, 0x2BE9, 0x78DE, 0x2BED, 0x78DF, 0x2BF3,
+ 0x78E0, 0x2BF4, 0x78E1, 0x2BF0, 0x78E2, 0x2BF1, 0x78E3, 0x2BEE, 0x78E5,
+ 0x2BEB, 0x78E7, 0x130E, 0x78E8, 0x130B, 0x78E9, 0x2BEA, 0x78EA, 0x2BEC,
+ 0x78EC, 0x130D, 0x78ED, 0x2BF2, 0x78EF, 0x1422, 0x78F2, 0x2DC8, 0x78F3,
+ 0x2DC2, 0x78F4, 0x1421, 0x78F7, 0x141F, 0x78F9, 0x2DCA, 0x78FA, 0x1420,
+ 0x78FB, 0x2DC5, 0x78FC, 0x2DC6, 0x78FD, 0x2DC3, 0x78FE, 0x2DCB, 0x78FF,
+ 0x2DC7, 0x7901, 0x1423, 0x7902, 0x2DC4, 0x7904, 0x2DCC, 0x7905, 0x2DC9,
+ 0x7909, 0x2F6F, 0x790C, 0x2F6C, 0x790E, 0x14FE, 0x7910, 0x2F70, 0x7911,
+ 0x2F72, 0x7912, 0x2F71, 0x7913, 0x2F6D, 0x7914, 0x2F6E, 0x7917, 0x30CE,
+ 0x7919, 0x159F, 0x791B, 0x30CB, 0x791C, 0x30CD, 0x791D, 0x30CA, 0x791E,
+ 0x30CF, 0x7921, 0x30CC, 0x7923, 0x3204, 0x7924, 0x3207, 0x7925, 0x3203,
+ 0x7926, 0x1624, 0x7927, 0x3205, 0x7928, 0x3206, 0x7929, 0x3208, 0x792A,
+ 0x1625, 0x792B, 0x1627, 0x792C, 0x1626, 0x792D, 0x32E6, 0x792F, 0x32E8,
+ 0x7931, 0x32E7, 0x7935, 0x3397, 0x7938, 0x3490, 0x7939, 0x34D5, 0x793A,
+ 0x036A, 0x793D, 0x18D7, 0x793E, 0x065F, 0x793F, 0x1A20, 0x7940, 0x0660,
+ 0x7941, 0x0661, 0x7942, 0x1A1F, 0x7944, 0x1BAF, 0x7945, 0x1BAE, 0x7946,
+ 0x07BF, 0x7947, 0x07C2, 0x7948, 0x07C1, 0x7949, 0x07C0, 0x794A, 0x1BAB,
+ 0x794B, 0x1BAD, 0x794C, 0x1BAC, 0x794F, 0x1D76, 0x7950, 0x0956, 0x7951,
+ 0x1D7A, 0x7952, 0x1D79, 0x7953, 0x1D78, 0x7954, 0x1D74, 0x7955, 0x0955,
+ 0x7956, 0x0959, 0x7957, 0x095C, 0x795A, 0x095D, 0x795B, 0x1D75, 0x795C,
+ 0x1D77, 0x795D, 0x095B, 0x795E, 0x095A, 0x795F, 0x0958, 0x7960, 0x0957,
+ 0x7961, 0x1FC4, 0x7963, 0x1FC2, 0x7964, 0x1FBE, 0x7965, 0x0B42, 0x7967,
+ 0x1FBF, 0x7968, 0x0B43, 0x7969, 0x1FC0, 0x796A, 0x1FC1, 0x796B, 0x1FC3,
+ 0x796D, 0x0B44, 0x7970, 0x224A, 0x7972, 0x2249, 0x7973, 0x2248, 0x7974,
+ 0x2247, 0x7979, 0x24DF, 0x797A, 0x0EA9, 0x797C, 0x24DC, 0x797D, 0x24DE,
+ 0x797F, 0x0EAA, 0x7981, 0x0EAB, 0x7982, 0x24DD, 0x7988, 0x275D, 0x798A,
+ 0x2756, 0x798B, 0x2757, 0x798D, 0x1046, 0x798E, 0x1044, 0x798F, 0x1045,
+ 0x7990, 0x275F, 0x7992, 0x275E, 0x7993, 0x275B, 0x7994, 0x275A, 0x7995,
+ 0x2759, 0x7996, 0x2758, 0x7997, 0x275C, 0x7998, 0x2755, 0x799A, 0x299C,
+ 0x799B, 0x29A1, 0x799C, 0x299F, 0x79A0, 0x299E, 0x79A1, 0x299D, 0x79A2,
+ 0x29A0, 0x79A4, 0x2BF5, 0x79A6, 0x130F, 0x79A7, 0x1424, 0x79A8, 0x2DCE,
+ 0x79AA, 0x1425, 0x79AB, 0x2DCD, 0x79AC, 0x2F74, 0x79AD, 0x2F73, 0x79AE,
+ 0x14FF, 0x79B0, 0x30D0, 0x79B1, 0x15A0, 0x79B2, 0x3209, 0x79B3, 0x16CF,
+ 0x79B4, 0x3398, 0x79B6, 0x3492, 0x79B7, 0x3491, 0x79B8, 0x17B2, 0x79B9,
+ 0x07C3, 0x79BA, 0x07C4, 0x79BB, 0x1FC5, 0x79BD, 0x0EAD, 0x79BE, 0x036B,
+ 0x79BF, 0x04F9, 0x79C0, 0x04F8, 0x79C1, 0x04F7, 0x79C5, 0x1A21, 0x79C8,
+ 0x0663, 0x79C9, 0x0662, 0x79CB, 0x07C7, 0x79CD, 0x1BB1, 0x79CE, 0x1BB4,
+ 0x79CF, 0x1BB2, 0x79D1, 0x07C5, 0x79D2, 0x07C6, 0x79D5, 0x1BB0, 0x79D6,
+ 0x1BB3, 0x79D8, 0x0964, 0x79DC, 0x1D81, 0x79DD, 0x1D83, 0x79DE, 0x1D82,
+ 0x79DF, 0x0961, 0x79E0, 0x1D7D, 0x79E3, 0x095F, 0x79E4, 0x095E, 0x79E6,
+ 0x0962, 0x79E7, 0x0960, 0x79E9, 0x0963, 0x79EA, 0x1D80, 0x79EB, 0x1D7B,
+ 0x79EC, 0x1D7C, 0x79ED, 0x1D7F, 0x79EE, 0x1D7E, 0x79F6, 0x1FC8, 0x79F7,
+ 0x1FC9, 0x79F8, 0x1FC7, 0x79FA, 0x1FC6, 0x79FB, 0x0B45, 0x7A00, 0x0CFD,
+ 0x7A02, 0x224B, 0x7A03, 0x224D, 0x7A04, 0x224F, 0x7A05, 0x0CFC, 0x7A08,
+ 0x0CFA, 0x7A0A, 0x224C, 0x7A0B, 0x0CFB, 0x7A0C, 0x224E, 0x7A0D, 0x0CF9,
+ 0x7A10, 0x24E9, 0x7A11, 0x24E0, 0x7A12, 0x24E3, 0x7A13, 0x24E7, 0x7A14,
+ 0x0EB1, 0x7A15, 0x24E5, 0x7A17, 0x24E4, 0x7A18, 0x24E1, 0x7A19, 0x24E2,
+ 0x7A1A, 0x0EAF, 0x7A1B, 0x24E8, 0x7A1C, 0x0EAE, 0x7A1E, 0x0EB3, 0x7A1F,
+ 0x0EB2, 0x7A20, 0x0EB0, 0x7A22, 0x24E6, 0x7A26, 0x2765, 0x7A28, 0x2764,
+ 0x7A2B, 0x2760, 0x7A2E, 0x1047, 0x7A2F, 0x2763, 0x7A30, 0x2762, 0x7A31,
+ 0x1048, 0x7A37, 0x11C7, 0x7A39, 0x29A3, 0x7A3B, 0x11C8, 0x7A3C, 0x11C4,
+ 0x7A3D, 0x11C6, 0x7A3F, 0x11C3, 0x7A40, 0x11C5, 0x7A44, 0x2BF6, 0x7A46,
+ 0x1312, 0x7A47, 0x2BF8, 0x7A48, 0x2BF7, 0x7A4A, 0x2761, 0x7A4B, 0x1314,
+ 0x7A4C, 0x1313, 0x7A4D, 0x1310, 0x7A4E, 0x1311, 0x7A54, 0x2DD3, 0x7A56,
+ 0x2DD1, 0x7A57, 0x1426, 0x7A58, 0x2DD2, 0x7A5A, 0x2DD4, 0x7A5B, 0x2DD0,
+ 0x7A5C, 0x2DCF, 0x7A5F, 0x2F75, 0x7A60, 0x1502, 0x7A61, 0x1500, 0x7A62,
+ 0x1501, 0x7A67, 0x30D1, 0x7A68, 0x30D2, 0x7A69, 0x15A2, 0x7A6B, 0x15A1,
+ 0x7A6C, 0x320B, 0x7A6D, 0x320C, 0x7A6E, 0x320A, 0x7A70, 0x3399, 0x7A71,
+ 0x339A, 0x7A74, 0x036C, 0x7A75, 0x1811, 0x7A76, 0x04FA, 0x7A78, 0x1A22,
+ 0x7A79, 0x0665, 0x7A7A, 0x0664, 0x7A7B, 0x1A23, 0x7A7E, 0x1BB6, 0x7A7F,
+ 0x07C8, 0x7A80, 0x1BB5, 0x7A81, 0x07C9, 0x7A84, 0x0965, 0x7A85, 0x1D86,
+ 0x7A86, 0x1D84, 0x7A87, 0x1D8A, 0x7A88, 0x0966, 0x7A89, 0x1D85, 0x7A8A,
+ 0x1D89, 0x7A8B, 0x1D87, 0x7A8C, 0x1D88, 0x7A8F, 0x1FCA, 0x7A90, 0x1FCC,
+ 0x7A92, 0x0B46, 0x7A94, 0x1FCB, 0x7A95, 0x0B47, 0x7A96, 0x0D00, 0x7A97,
+ 0x0CFF, 0x7A98, 0x0CFE, 0x7A99, 0x2250, 0x7A9E, 0x24EC, 0x7A9F, 0x0EB4,
+ 0x7AA0, 0x0EB5, 0x7AA2, 0x24EB, 0x7AA3, 0x24EA, 0x7AA8, 0x2766, 0x7AA9,
+ 0x104A, 0x7AAA, 0x1049, 0x7AAB, 0x2767, 0x7AAC, 0x2768, 0x7AAE, 0x11CA,
+ 0x7AAF, 0x11C9, 0x7AB1, 0x2BFC, 0x7AB2, 0x29A4, 0x7AB3, 0x29A6, 0x7AB4,
+ 0x29A5, 0x7AB5, 0x2BFB, 0x7AB6, 0x2BF9, 0x7AB7, 0x2BFD, 0x7AB8, 0x2BFA,
+ 0x7ABA, 0x1315, 0x7ABE, 0x2DD5, 0x7ABF, 0x1427, 0x7AC0, 0x2DD6, 0x7AC1,
+ 0x2DD7, 0x7AC4, 0x1503, 0x7AC5, 0x1504, 0x7AC7, 0x1628, 0x7ACA, 0x16FF,
+ 0x7ACB, 0x036D, 0x7AD1, 0x1BB7, 0x7AD8, 0x1D8B, 0x7AD9, 0x0967, 0x7ADF,
+ 0x0BDE, 0x7AE0, 0x0BDD, 0x7AE3, 0x0D02, 0x7AE4, 0x2252, 0x7AE5, 0x0D01,
+ 0x7AE6, 0x2251, 0x7AEB, 0x24ED, 0x7AED, 0x104B, 0x7AEE, 0x2769, 0x7AEF,
+ 0x104C, 0x7AF6, 0x1629, 0x7AF7, 0x320D, 0x7AF9, 0x03F6, 0x7AFA, 0x0666,
+ 0x7AFB, 0x1A24, 0x7AFD, 0x07CB, 0x7AFF, 0x07CA, 0x7B00, 0x1BB8, 0x7B01,
+ 0x1BB9, 0x7B04, 0x1D8D, 0x7B05, 0x1D8F, 0x7B06, 0x0968, 0x7B08, 0x1D91,
+ 0x7B09, 0x1D94, 0x7B0A, 0x1D92, 0x7B0E, 0x1D93, 0x7B0F, 0x1D90, 0x7B10,
+ 0x1D8C, 0x7B11, 0x0969, 0x7B12, 0x1D95, 0x7B13, 0x1D8E, 0x7B18, 0x1FD5,
+ 0x7B19, 0x0B4D, 0x7B1A, 0x1FDE, 0x7B1B, 0x0B4A, 0x7B1D, 0x1FD7, 0x7B1E,
+ 0x0B4E, 0x7B20, 0x0B48, 0x7B22, 0x1FD2, 0x7B23, 0x1FDF, 0x7B24, 0x1FD3,
+ 0x7B25, 0x1FD0, 0x7B26, 0x0B4C, 0x7B28, 0x0B49, 0x7B2A, 0x1FD6, 0x7B2B,
+ 0x1FD9, 0x7B2C, 0x0B4B, 0x7B2D, 0x1FDA, 0x7B2E, 0x0B4F, 0x7B2F, 0x1FDB,
+ 0x7B30, 0x1FD1, 0x7B31, 0x1FD8, 0x7B32, 0x1FDC, 0x7B33, 0x1FD4, 0x7B34,
+ 0x1FCF, 0x7B35, 0x1FCD, 0x7B38, 0x1FDD, 0x7B3B, 0x1FCE, 0x7B40, 0x2259,
+ 0x7B44, 0x2255, 0x7B45, 0x225B, 0x7B46, 0x0D05, 0x7B47, 0x2254, 0x7B48,
+ 0x2256, 0x7B49, 0x0D03, 0x7B4A, 0x2253, 0x7B4B, 0x0D0A, 0x7B4C, 0x2257,
+ 0x7B4D, 0x0D09, 0x7B4E, 0x2258, 0x7B4F, 0x0D0B, 0x7B50, 0x0D06, 0x7B51,
+ 0x0D0C, 0x7B52, 0x0D07, 0x7B54, 0x0D08, 0x7B56, 0x0D04, 0x7B58, 0x225A,
+ 0x7B60, 0x0EB8, 0x7B61, 0x24F8, 0x7B63, 0x24FB, 0x7B64, 0x24EF, 0x7B65,
+ 0x24F4, 0x7B66, 0x24EE, 0x7B67, 0x0EBA, 0x7B69, 0x24F2, 0x7B6D, 0x24F0,
+ 0x7B6E, 0x0EB9, 0x7B70, 0x24F7, 0x7B71, 0x24F6, 0x7B72, 0x24F3, 0x7B73,
+ 0x24F5, 0x7B74, 0x24F1, 0x7B75, 0x1050, 0x7B76, 0x24FA, 0x7B77, 0x0EB6,
+ 0x7B78, 0x24F9, 0x7B82, 0x2779, 0x7B84, 0x1057, 0x7B85, 0x2774, 0x7B87,
+ 0x1056, 0x7B88, 0x276A, 0x7B8A, 0x276C, 0x7B8B, 0x104F, 0x7B8C, 0x2771,
+ 0x7B8D, 0x2770, 0x7B8E, 0x2773, 0x7B8F, 0x1054, 0x7B90, 0x276E, 0x7B91,
+ 0x276D, 0x7B94, 0x1053, 0x7B95, 0x104E, 0x7B96, 0x276F, 0x7B97, 0x1051,
+ 0x7B98, 0x2775, 0x7B99, 0x2777, 0x7B9B, 0x2772, 0x7B9C, 0x276B, 0x7B9D,
+ 0x1052, 0x7BA0, 0x11D2, 0x7BA1, 0x104D, 0x7BA4, 0x2778, 0x7BAC, 0x29AA,
+ 0x7BAD, 0x11CB, 0x7BAF, 0x29AC, 0x7BB1, 0x11CC, 0x7BB4, 0x11CE, 0x7BB5,
+ 0x29AF, 0x7BB7, 0x29A7, 0x7BB8, 0x1055, 0x7BB9, 0x29AD, 0x7BBE, 0x29A9,
+ 0x7BC0, 0x0EB7, 0x7BC1, 0x11D1, 0x7BC4, 0x11CD, 0x7BC6, 0x11CF, 0x7BC7,
+ 0x11D0, 0x7BC9, 0x1318, 0x7BCA, 0x29AE, 0x7BCB, 0x29A8, 0x7BCC, 0x11D3,
+ 0x7BCE, 0x29AB, 0x7BD4, 0x2C07, 0x7BD5, 0x2C02, 0x7BD8, 0x2C0C, 0x7BD9,
+ 0x1316, 0x7BDA, 0x2C04, 0x7BDB, 0x131A, 0x7BDC, 0x2C0A, 0x7BDD, 0x2C01,
+ 0x7BDE, 0x2BFE, 0x7BDF, 0x2C0D, 0x7BE0, 0x142D, 0x7BE1, 0x131B, 0x7BE2,
+ 0x2C09, 0x7BE3, 0x2BFF, 0x7BE4, 0x1319, 0x7BE5, 0x2C03, 0x7BE6, 0x131D,
+ 0x7BE7, 0x2C00, 0x7BE8, 0x2C05, 0x7BE9, 0x131C, 0x7BEA, 0x2C08, 0x7BEB,
+ 0x2C0B, 0x7BF0, 0x2DE9, 0x7BF1, 0x2DEA, 0x7BF2, 0x2DDA, 0x7BF3, 0x2DE1,
+ 0x7BF4, 0x2DDF, 0x7BF7, 0x142B, 0x7BF8, 0x2DE6, 0x7BF9, 0x2C06, 0x7BFB,
+ 0x2DDD, 0x7BFD, 0x2DE7, 0x7BFE, 0x142A, 0x7BFF, 0x2DDC, 0x7C00, 0x2DDB,
+ 0x7C01, 0x2DE5, 0x7C02, 0x2DE2, 0x7C03, 0x2DE4, 0x7C05, 0x2DD8, 0x7C06,
+ 0x2DE8, 0x7C07, 0x1428, 0x7C09, 0x2DE3, 0x7C0A, 0x2DEC, 0x7C0B, 0x2DE0,
+ 0x7C0C, 0x142C, 0x7C0D, 0x1429, 0x7C0E, 0x2DDE, 0x7C0F, 0x2DD9, 0x7C10,
+ 0x2DEB, 0x7C11, 0x1317, 0x7C19, 0x2F78, 0x7C1C, 0x2F76, 0x7C1D, 0x2F7C,
+ 0x7C1E, 0x1508, 0x7C1F, 0x2F7A, 0x7C20, 0x2F79, 0x7C21, 0x150A, 0x7C22,
+ 0x2F7F, 0x7C23, 0x1509, 0x7C25, 0x2F80, 0x7C26, 0x2F7D, 0x7C27, 0x1506,
+ 0x7C28, 0x2F7E, 0x7C29, 0x2F77, 0x7C2A, 0x1507, 0x7C2B, 0x1505, 0x7C2C,
+ 0x30D6, 0x7C2D, 0x2F7B, 0x7C30, 0x2F81, 0x7C33, 0x30D3, 0x7C37, 0x15A7,
+ 0x7C38, 0x15A5, 0x7C39, 0x30D5, 0x7C3B, 0x30D7, 0x7C3C, 0x30D4, 0x7C3D,
+ 0x15A6, 0x7C3E, 0x15A3, 0x7C3F, 0x15A4, 0x7C40, 0x15A8, 0x7C43, 0x162B,
+ 0x7C45, 0x3212, 0x7C47, 0x3211, 0x7C48, 0x320F, 0x7C49, 0x320E, 0x7C4A,
+ 0x3210, 0x7C4C, 0x162A, 0x7C4D, 0x162C, 0x7C50, 0x1681, 0x7C53, 0x32EA,
+ 0x7C54, 0x32E9, 0x7C57, 0x339B, 0x7C59, 0x339D, 0x7C5A, 0x339F, 0x7C5B,
+ 0x339E, 0x7C5C, 0x339C, 0x7C5F, 0x16D1, 0x7C60, 0x16D0, 0x7C63, 0x1701,
+ 0x7C64, 0x1700, 0x7C65, 0x1702, 0x7C66, 0x342B, 0x7C67, 0x342A, 0x7C69,
+ 0x34D6, 0x7C6A, 0x3493, 0x7C6B, 0x34D7, 0x7C6C, 0x1745, 0x7C6E, 0x1746,
+ 0x7C6F, 0x3507, 0x7C72, 0x176B, 0x7C73, 0x03F7, 0x7C75, 0x1A25, 0x7C78,
+ 0x1BBB, 0x7C79, 0x1BBC, 0x7C7A, 0x1BBA, 0x7C7D, 0x07CC, 0x7C7F, 0x1BBD,
+ 0x7C80, 0x1BBE, 0x7C81, 0x1BBF, 0x7C84, 0x1D96, 0x7C85, 0x1D9C, 0x7C88,
+ 0x1D9A, 0x7C89, 0x096A, 0x7C8A, 0x1D98, 0x7C8C, 0x1D99, 0x7C8D, 0x1D9B,
+ 0x7C91, 0x1D97, 0x7C92, 0x0B50, 0x7C94, 0x1FE0, 0x7C95, 0x0B52, 0x7C96,
+ 0x1FE2, 0x7C97, 0x0B51, 0x7C98, 0x1FE1, 0x7C9E, 0x225D, 0x7C9F, 0x0D0D,
+ 0x7CA1, 0x225F, 0x7CA2, 0x225C, 0x7CA3, 0x1FE3, 0x7CA5, 0x0D0E, 0x7CA7,
+ 0x36ED, 0x7CA8, 0x225E, 0x7CAF, 0x24FE, 0x7CB1, 0x0EBB, 0x7CB2, 0x24FC,
+ 0x7CB3, 0x0EBC, 0x7CB4, 0x24FD, 0x7CB5, 0x0EBD, 0x7CB9, 0x1058, 0x7CBA,
+ 0x277D, 0x7CBB, 0x277A, 0x7CBC, 0x277C, 0x7CBD, 0x1059, 0x7CBE, 0x105A,
+ 0x7CBF, 0x277B, 0x7CC5, 0x29B0, 0x7CC8, 0x29B1, 0x7CCA, 0x11D4, 0x7CCB,
+ 0x29B3, 0x7CCC, 0x29B2, 0x7CCE, 0x0121, 0x7CD0, 0x2C11, 0x7CD1, 0x2C12,
+ 0x7CD2, 0x2C0E, 0x7CD4, 0x2C0F, 0x7CD5, 0x131E, 0x7CD6, 0x131F, 0x7CD7,
+ 0x2C10, 0x7CD9, 0x1433, 0x7CDC, 0x142F, 0x7CDD, 0x1434, 0x7CDE, 0x1430,
+ 0x7CDF, 0x1432, 0x7CE0, 0x142E, 0x7CE2, 0x1431, 0x7CE7, 0x150B, 0x7CE8,
+ 0x2DED, 0x7CEA, 0x30D9, 0x7CEC, 0x30D8, 0x7CEE, 0x3213, 0x7CEF, 0x162D,
+ 0x7CF0, 0x162E, 0x7CF1, 0x33A1, 0x7CF2, 0x32EB, 0x7CF4, 0x33A0, 0x7CF6,
+ 0x34D8, 0x7CF7, 0x351D, 0x7CF8, 0x03F8, 0x7CFB, 0x04FB, 0x7CFD, 0x1A26,
+ 0x7CFE, 0x0667, 0x7D00, 0x07CF, 0x7D01, 0x1BC2, 0x7D02, 0x07CD, 0x7D03,
+ 0x1BC0, 0x7D04, 0x07D2, 0x7D05, 0x07CE, 0x7D06, 0x07D3, 0x7D07, 0x07D1,
+ 0x7D08, 0x1BC1, 0x7D09, 0x07D0, 0x7D0A, 0x096E, 0x7D0B, 0x096D, 0x7D0C,
+ 0x1DA7, 0x7D0D, 0x0976, 0x7D0E, 0x1DA0, 0x7D0F, 0x1DA6, 0x7D10, 0x0972,
+ 0x7D11, 0x1D9F, 0x7D12, 0x1DA5, 0x7D13, 0x1DA3, 0x7D14, 0x0971, 0x7D15,
+ 0x0973, 0x7D16, 0x1DA2, 0x7D17, 0x096C, 0x7D18, 0x1DA1, 0x7D19, 0x0977,
+ 0x7D1A, 0x0974, 0x7D1B, 0x0978, 0x7D1C, 0x0975, 0x7D1D, 0x1D9E, 0x7D1E,
+ 0x1D9D, 0x7D1F, 0x1DA4, 0x7D20, 0x096F, 0x7D21, 0x096B, 0x7D22, 0x0970,
+ 0x7D28, 0x1FF2, 0x7D29, 0x1FEB, 0x7D2B, 0x0D13, 0x7D2C, 0x1FEA, 0x7D2E,
+ 0x0B56, 0x7D2F, 0x0B5D, 0x7D30, 0x0B5A, 0x7D31, 0x0B60, 0x7D32, 0x0B5F,
+ 0x7D33, 0x0B5B, 0x7D35, 0x1FE4, 0x7D36, 0x1FE7, 0x7D38, 0x1FE6, 0x7D39,
+ 0x0B57, 0x7D3A, 0x1FE8, 0x7D3B, 0x1FF1, 0x7D3C, 0x0B58, 0x7D3D, 0x1FE5,
+ 0x7D3E, 0x1FEE, 0x7D3F, 0x1FEF, 0x7D40, 0x0B59, 0x7D41, 0x1FEC, 0x7D42,
+ 0x0B5E, 0x7D43, 0x0B54, 0x7D44, 0x0B5C, 0x7D45, 0x1FE9, 0x7D46, 0x0B53,
+ 0x7D47, 0x1FED, 0x7D4A, 0x1FF0, 0x7D4E, 0x2270, 0x7D4F, 0x2267, 0x7D50,
+ 0x0D10, 0x7D51, 0x226E, 0x7D52, 0x226B, 0x7D53, 0x2263, 0x7D54, 0x226C,
+ 0x7D55, 0x0D12, 0x7D56, 0x2264, 0x7D58, 0x2260, 0x7D5B, 0x0EC3, 0x7D5C,
+ 0x2269, 0x7D5E, 0x0D0F, 0x7D5F, 0x226F, 0x7D61, 0x0D16, 0x7D62, 0x0D18,
+ 0x7D63, 0x2262, 0x7D66, 0x0D17, 0x7D67, 0x2265, 0x7D68, 0x0D11, 0x7D69,
+ 0x226D, 0x7D6A, 0x2266, 0x7D6B, 0x226A, 0x7D6D, 0x2268, 0x7D6E, 0x0D14,
+ 0x7D6F, 0x2261, 0x7D70, 0x0D19, 0x7D71, 0x0B55, 0x7D72, 0x0D15, 0x7D73,
+ 0x0D1A, 0x7D79, 0x0EBF, 0x7D7A, 0x2505, 0x7D7B, 0x2507, 0x7D7C, 0x2509,
+ 0x7D7D, 0x250D, 0x7D7F, 0x2503, 0x7D80, 0x2501, 0x7D81, 0x0EC1, 0x7D83,
+ 0x2508, 0x7D84, 0x250C, 0x7D85, 0x2504, 0x7D86, 0x2500, 0x7D88, 0x24FF,
+ 0x7D8C, 0x250A, 0x7D8D, 0x2502, 0x7D8E, 0x2506, 0x7D8F, 0x0EC2, 0x7D91,
+ 0x0EC0, 0x7D92, 0x250E, 0x7D93, 0x0EBE, 0x7D94, 0x250B, 0x7D96, 0x278E,
+ 0x7D9C, 0x105D, 0x7D9D, 0x2786, 0x7D9E, 0x11E1, 0x7D9F, 0x2790, 0x7DA0,
+ 0x1060, 0x7DA1, 0x2794, 0x7DA2, 0x1066, 0x7DA3, 0x2781, 0x7DA6, 0x2791,
+ 0x7DA7, 0x277E, 0x7DA9, 0x2793, 0x7DAA, 0x2782, 0x7DAC, 0x106D, 0x7DAD,
+ 0x106A, 0x7DAE, 0x2792, 0x7DAF, 0x278C, 0x7DB0, 0x105C, 0x7DB1, 0x1064,
+ 0x7DB2, 0x1063, 0x7DB4, 0x1062, 0x7DB5, 0x1068, 0x7DB7, 0x277F, 0x7DB8,
+ 0x1069, 0x7DB9, 0x278D, 0x7DBA, 0x1065, 0x7DBB, 0x105B, 0x7DBC, 0x278F,
+ 0x7DBD, 0x105E, 0x7DBE, 0x105F, 0x7DBF, 0x1067, 0x7DC0, 0x2784, 0x7DC1,
+ 0x2783, 0x7DC2, 0x2780, 0x7DC4, 0x2788, 0x7DC5, 0x2785, 0x7DC6, 0x2789,
+ 0x7DC7, 0x106C, 0x7DC9, 0x2795, 0x7DCA, 0x1061, 0x7DCB, 0x278A, 0x7DCC,
+ 0x278B, 0x7DCE, 0x2787, 0x7DD2, 0x106B, 0x7DD7, 0x29B8, 0x7DD8, 0x11D9,
+ 0x7DD9, 0x11E2, 0x7DDA, 0x11DE, 0x7DDB, 0x29B5, 0x7DDD, 0x11DB, 0x7DDE,
+ 0x11DF, 0x7DDF, 0x29C1, 0x7DE0, 0x11D5, 0x7DE1, 0x29B9, 0x7DE3, 0x11DD,
+ 0x7DE6, 0x29BC, 0x7DE7, 0x29B7, 0x7DE8, 0x11DC, 0x7DE9, 0x11E0, 0x7DEA,
+ 0x29B6, 0x7DEC, 0x11DA, 0x7DEE, 0x29C0, 0x7DEF, 0x11D7, 0x7DF0, 0x29BF,
+ 0x7DF1, 0x29BE, 0x7DF2, 0x11E3, 0x7DF3, 0x28C8, 0x7DF4, 0x11D6, 0x7DF6,
+ 0x29BD, 0x7DF7, 0x29B4, 0x7DF9, 0x11E4, 0x7DFA, 0x29BB, 0x7DFB, 0x11D8,
+ 0x7E03, 0x29BA, 0x7E08, 0x1322, 0x7E09, 0x1327, 0x7E0A, 0x1320, 0x7E0B,
+ 0x2C1F, 0x7E0C, 0x2C16, 0x7E0D, 0x2C22, 0x7E0E, 0x2C1A, 0x7E0F, 0x2C20,
+ 0x7E10, 0x1328, 0x7E11, 0x1321, 0x7E12, 0x2C13, 0x7E13, 0x2C19, 0x7E14,
+ 0x2C23, 0x7E15, 0x2C1C, 0x7E16, 0x2C21, 0x7E17, 0x2C15, 0x7E1A, 0x2C1D,
+ 0x7E1B, 0x1323, 0x7E1C, 0x2C1B, 0x7E1D, 0x1326, 0x7E1E, 0x1325, 0x7E1F,
+ 0x2C17, 0x7E20, 0x2C18, 0x7E21, 0x2C14, 0x7E22, 0x2C1E, 0x7E23, 0x1324,
+ 0x7E24, 0x2C25, 0x7E25, 0x2C24, 0x7E29, 0x2DF8, 0x7E2A, 0x2DF4, 0x7E2B,
+ 0x143B, 0x7E2D, 0x2DEE, 0x7E2E, 0x1435, 0x7E2F, 0x1445, 0x7E30, 0x2DFA,
+ 0x7E31, 0x143D, 0x7E32, 0x1439, 0x7E33, 0x2DF1, 0x7E34, 0x1440, 0x7E35,
+ 0x1443, 0x7E36, 0x2DFC, 0x7E37, 0x1438, 0x7E38, 0x2DF3, 0x7E39, 0x1441,
+ 0x7E3A, 0x2DFE, 0x7E3B, 0x2DFB, 0x7E3C, 0x2DEF, 0x7E3D, 0x143C, 0x7E3E,
+ 0x1436, 0x7E3F, 0x1444, 0x7E40, 0x2DF6, 0x7E41, 0x143F, 0x7E42, 0x2DF0,
+ 0x7E43, 0x143A, 0x7E44, 0x2DFD, 0x7E45, 0x143E, 0x7E46, 0x1437, 0x7E47,
+ 0x2DF7, 0x7E48, 0x1442, 0x7E49, 0x2DF5, 0x7E4C, 0x2DF9, 0x7E50, 0x2F83,
+ 0x7E51, 0x2F89, 0x7E52, 0x1511, 0x7E53, 0x2F8C, 0x7E54, 0x150C, 0x7E55,
+ 0x150D, 0x7E56, 0x2F84, 0x7E57, 0x2F8B, 0x7E58, 0x2F86, 0x7E59, 0x1512,
+ 0x7E5A, 0x150F, 0x7E5C, 0x2F82, 0x7E5E, 0x150E, 0x7E5F, 0x2F88, 0x7E60,
+ 0x2F8A, 0x7E61, 0x1510, 0x7E62, 0x2F87, 0x7E63, 0x2F85, 0x7E68, 0x30E3,
+ 0x7E69, 0x15AC, 0x7E6A, 0x15AD, 0x7E6B, 0x15A9, 0x7E6D, 0x15AA, 0x7E6F,
+ 0x30DF, 0x7E70, 0x30DD, 0x7E72, 0x30E1, 0x7E73, 0x15AE, 0x7E74, 0x30E2,
+ 0x7E75, 0x30DB, 0x7E76, 0x30DA, 0x7E77, 0x30DE, 0x7E78, 0x30DC, 0x7E79,
+ 0x15AB, 0x7E7A, 0x30E0, 0x7E7B, 0x3214, 0x7E7C, 0x1631, 0x7E7D, 0x1630,
+ 0x7E7E, 0x3215, 0x7E80, 0x3217, 0x7E81, 0x3216, 0x7E82, 0x1632, 0x7E86,
+ 0x32F0, 0x7E87, 0x32ED, 0x7E88, 0x32EE, 0x7E8A, 0x32EC, 0x7E8B, 0x32EF,
+ 0x7E8C, 0x1683, 0x7E8D, 0x32F1, 0x7E8F, 0x1682, 0x7E91, 0x33A2, 0x7E93,
+ 0x1703, 0x7E94, 0x1705, 0x7E95, 0x342C, 0x7E96, 0x1704, 0x7E97, 0x3494,
+ 0x7E98, 0x34DA, 0x7E99, 0x34DC, 0x7E9A, 0x34D9, 0x7E9B, 0x34DB, 0x7E9C,
+ 0x1759, 0x7F36, 0x03F9, 0x7F38, 0x07D4, 0x7F39, 0x1D1F, 0x7F3A, 0x0979,
+ 0x7F3D, 0x0B61, 0x7F3E, 0x2271, 0x7F3F, 0x2272, 0x7F43, 0x2C26, 0x7F44,
+ 0x1446, 0x7F45, 0x2DFF, 0x7F48, 0x1513, 0x7F4A, 0x30E5, 0x7F4B, 0x30E4,
+ 0x7F4C, 0x1633, 0x7F4D, 0x32F2, 0x7F4F, 0x33A3, 0x7F50, 0x1726, 0x7F51,
+ 0x1812, 0x7F54, 0x0668, 0x7F55, 0x04FC, 0x7F58, 0x1BC3, 0x7F5B, 0x1DAD,
+ 0x7F5C, 0x1DA8, 0x7F5D, 0x1DAC, 0x7F5E, 0x1DAA, 0x7F5F, 0x097A, 0x7F60,
+ 0x1DAB, 0x7F61, 0x1DA9, 0x7F63, 0x1FF3, 0x7F65, 0x2273, 0x7F66, 0x2274,
+ 0x7F67, 0x2511, 0x7F68, 0x2512, 0x7F69, 0x0EC5, 0x7F6A, 0x0EC6, 0x7F6B,
+ 0x2510, 0x7F6C, 0x2513, 0x7F6D, 0x250F, 0x7F6E, 0x0EC4, 0x7F70, 0x106E,
+ 0x7F72, 0x0EC7, 0x7F73, 0x2796, 0x7F75, 0x11E5, 0x7F76, 0x29C2, 0x7F77,
+ 0x11E6, 0x7F79, 0x1329, 0x7F7A, 0x2C29, 0x7F7B, 0x2C27, 0x7F7C, 0x2C28,
+ 0x7F7D, 0x2E02, 0x7F7E, 0x2E01, 0x7F7F, 0x2E00, 0x7F83, 0x30E6, 0x7F85,
+ 0x15AF, 0x7F86, 0x30E7, 0x7F87, 0x33A4, 0x7F88, 0x1727, 0x7F89, 0x3495,
+ 0x7F8A, 0x03FA, 0x7F8B, 0x066A, 0x7F8C, 0x0669, 0x7F8D, 0x1BC5, 0x7F8E,
+ 0x07D5, 0x7F91, 0x1BC4, 0x7F92, 0x1DAF, 0x7F94, 0x097B, 0x7F95, 0x1FF4,
+ 0x7F96, 0x1DAE, 0x7F9A, 0x0B63, 0x7F9B, 0x1FF7, 0x7F9C, 0x1FF5, 0x7F9D,
+ 0x1FF6, 0x7F9E, 0x0B62, 0x7FA0, 0x2276, 0x7FA1, 0x2277, 0x7FA2, 0x2275,
+ 0x7FA4, 0x0ECA, 0x7FA5, 0x2515, 0x7FA6, 0x2514, 0x7FA7, 0x2516, 0x7FA8,
+ 0x0EC9, 0x7FA9, 0x0EC8, 0x7FAC, 0x29C3, 0x7FAD, 0x29C5, 0x7FAF, 0x11E7,
+ 0x7FB0, 0x29C4, 0x7FB1, 0x2C2A, 0x7FB2, 0x132A, 0x7FB3, 0x2F8E, 0x7FB5,
+ 0x2F8D, 0x7FB6, 0x15B0, 0x7FB7, 0x30E8, 0x7FB8, 0x15B2, 0x7FB9, 0x15B1,
+ 0x7FBA, 0x3218, 0x7FBB, 0x32F3, 0x7FBC, 0x1684, 0x7FBD, 0x03FB, 0x7FBE,
+ 0x1BC6, 0x7FBF, 0x07D6, 0x7FC0, 0x1DB2, 0x7FC1, 0x097D, 0x7FC2, 0x1DB1,
+ 0x7FC3, 0x1DB0, 0x7FC5, 0x097C, 0x7FC7, 0x1FFD, 0x7FC9, 0x1FFF, 0x7FCA,
+ 0x1FF8, 0x7FCB, 0x1FF9, 0x7FCC, 0x0B64, 0x7FCD, 0x1FFA, 0x7FCE, 0x0B65,
+ 0x7FCF, 0x1FFE, 0x7FD0, 0x1FFB, 0x7FD1, 0x1FFC, 0x7FD2, 0x0B66, 0x7FD4,
+ 0x0D1C, 0x7FD5, 0x0D1D, 0x7FD7, 0x2278, 0x7FDB, 0x2517, 0x7FDC, 0x2518,
+ 0x7FDE, 0x279A, 0x7FDF, 0x1071, 0x7FE0, 0x106F, 0x7FE1, 0x1070, 0x7FE2,
+ 0x2797, 0x7FE3, 0x2798, 0x7FE5, 0x2799, 0x7FE6, 0x29CA, 0x7FE8, 0x29CB,
+ 0x7FE9, 0x11E8, 0x7FEA, 0x29C8, 0x7FEB, 0x29C7, 0x7FEC, 0x29C9, 0x7FED,
+ 0x29C6, 0x7FEE, 0x132D, 0x7FEF, 0x2C2B, 0x7FF0, 0x132B, 0x7FF1, 0x132C,
+ 0x7FF2, 0x2E04, 0x7FF3, 0x1447, 0x7FF4, 0x2E03, 0x7FF5, 0x2EFF, 0x7FF7,
+ 0x2F8F, 0x7FF8, 0x2F90, 0x7FF9, 0x1514, 0x7FFB, 0x1515, 0x7FFC, 0x1448,
+ 0x7FFD, 0x30E9, 0x7FFE, 0x30EA, 0x7FFF, 0x3219, 0x8000, 0x1634, 0x8001,
+ 0x03FC, 0x8003, 0x03FD, 0x8004, 0x097F, 0x8005, 0x066B, 0x8006, 0x097E,
+ 0x8007, 0x1BC7, 0x800B, 0x0D1E, 0x800C, 0x03FE, 0x800D, 0x07D8, 0x800E,
+ 0x1BC8, 0x800F, 0x1BC9, 0x8010, 0x07D7, 0x8011, 0x07D9, 0x8012, 0x03FF,
+ 0x8014, 0x1BCA, 0x8015, 0x0981, 0x8016, 0x1DB3, 0x8017, 0x0983, 0x8018,
+ 0x0980, 0x8019, 0x0982, 0x801B, 0x2002, 0x801C, 0x0B67, 0x801E, 0x2001,
+ 0x801F, 0x2000, 0x8021, 0x2519, 0x8024, 0x279B, 0x8026, 0x11E9, 0x8028,
+ 0x132E, 0x8029, 0x2C2D, 0x802A, 0x2C2C, 0x802C, 0x2E05, 0x8030, 0x32F4,
+ 0x8033, 0x0400, 0x8034, 0x18D8, 0x8035, 0x1A27, 0x8036, 0x07DA, 0x8037,
+ 0x1BCB, 0x8039, 0x1DB5, 0x803D, 0x0984, 0x803E, 0x1DB4, 0x803F, 0x0985,
+ 0x8043, 0x2004, 0x8046, 0x0B69, 0x8047, 0x2003, 0x8048, 0x2005, 0x804A,
+ 0x0B68, 0x804F, 0x227A, 0x8050, 0x227B, 0x8051, 0x2279, 0x8052, 0x0D1F,
+ 0x8056, 0x0ECB, 0x8058, 0x0ECC, 0x805A, 0x1073, 0x805C, 0x279D, 0x805D,
+ 0x279C, 0x805E, 0x1072, 0x8064, 0x29CC, 0x8067, 0x29CD, 0x806C, 0x2C2E,
+ 0x806F, 0x144C, 0x8070, 0x144B, 0x8071, 0x1449, 0x8072, 0x144A, 0x8073,
+ 0x144D, 0x8075, 0x2F91, 0x8076, 0x1517, 0x8077, 0x1516, 0x8078, 0x30EB,
+ 0x8079, 0x321A, 0x807D, 0x16D3, 0x807E, 0x16D2, 0x807F, 0x0401, 0x8082,
+ 0x1CEC, 0x8084, 0x0ECE, 0x8085, 0x0D20, 0x8086, 0x0ECD, 0x8087, 0x1074,
+ 0x8089, 0x0402, 0x808A, 0x17B3, 0x808B, 0x0403, 0x808C, 0x0404, 0x808F,
+ 0x1A28, 0x8090, 0x18DB, 0x8092, 0x18DC, 0x8093, 0x04FE, 0x8095, 0x18D9,
+ 0x8096, 0x04FD, 0x8098, 0x0500, 0x8099, 0x18DA, 0x809A, 0x0502, 0x809B,
+ 0x0501, 0x809C, 0x18DD, 0x809D, 0x04FF, 0x80A1, 0x0670, 0x80A2, 0x066E,
+ 0x80A3, 0x1A2A, 0x80A5, 0x066D, 0x80A9, 0x0672, 0x80AA, 0x0674, 0x80AB,
+ 0x0671, 0x80AD, 0x1A2D, 0x80AE, 0x1A29, 0x80AF, 0x0675, 0x80B1, 0x066F,
+ 0x80B2, 0x0503, 0x80B4, 0x0673, 0x80B5, 0x1A2C, 0x80B8, 0x1A2B, 0x80BA,
+ 0x066C, 0x80C2, 0x1BD1, 0x80C3, 0x07DE, 0x80C4, 0x07DF, 0x80C5, 0x1BD3,
+ 0x80C7, 0x1BCD, 0x80C8, 0x1BD0, 0x80C9, 0x1BD9, 0x80CA, 0x1BD7, 0x80CC,
+ 0x07E0, 0x80CD, 0x1BDD, 0x80CE, 0x07E3, 0x80CF, 0x1BDA, 0x80D0, 0x1BD2,
+ 0x80D1, 0x1BCF, 0x80D4, 0x227D, 0x80D5, 0x1BD8, 0x80D6, 0x07DB, 0x80D7,
+ 0x1BDB, 0x80D8, 0x1BCC, 0x80D9, 0x1BD5, 0x80DA, 0x07DD, 0x80DB, 0x07E2,
+ 0x80DC, 0x1BD6, 0x80DD, 0x07E6, 0x80DE, 0x07E4, 0x80E0, 0x1BCE, 0x80E1,
+ 0x07E1, 0x80E3, 0x1BD4, 0x80E4, 0x07E5, 0x80E5, 0x07DC, 0x80E6, 0x1BDC,
+ 0x80ED, 0x098A, 0x80EF, 0x0993, 0x80F0, 0x0988, 0x80F1, 0x0986, 0x80F2,
+ 0x1DB7, 0x80F3, 0x098E, 0x80F4, 0x098B, 0x80F5, 0x1DB9, 0x80F8, 0x098D,
+ 0x80F9, 0x1DB8, 0x80FA, 0x1DB6, 0x80FB, 0x1DBB, 0x80FC, 0x0992, 0x80FD,
+ 0x0990, 0x80FE, 0x227C, 0x8100, 0x1DBC, 0x8101, 0x1DBA, 0x8102, 0x0987,
+ 0x8105, 0x0989, 0x8106, 0x098C, 0x8108, 0x098F, 0x810A, 0x0991, 0x8115,
+ 0x200F, 0x8116, 0x0B6B, 0x8118, 0x2006, 0x8119, 0x2008, 0x811B, 0x2009,
+ 0x811D, 0x2011, 0x811E, 0x200D, 0x811F, 0x200B, 0x8121, 0x200E, 0x8122,
+ 0x2012, 0x8123, 0x0B6C, 0x8124, 0x0B70, 0x8125, 0x2007, 0x8127, 0x2010,
+ 0x8129, 0x0B6E, 0x812B, 0x0B6D, 0x812C, 0x200C, 0x812D, 0x200A, 0x812F,
+ 0x0B6A, 0x8130, 0x0B6F, 0x8139, 0x0D26, 0x813A, 0x2285, 0x813D, 0x2283,
+ 0x813E, 0x0D28, 0x8143, 0x227E, 0x8144, 0x2527, 0x8146, 0x0D27, 0x8147,
+ 0x2282, 0x814A, 0x227F, 0x814B, 0x0D23, 0x814C, 0x0D29, 0x814D, 0x2284,
+ 0x814E, 0x0D25, 0x814F, 0x2281, 0x8150, 0x1075, 0x8151, 0x0D24, 0x8152,
+ 0x2280, 0x8153, 0x0D2A, 0x8154, 0x0D22, 0x8155, 0x0D21, 0x815B, 0x251F,
+ 0x815C, 0x251D, 0x815E, 0x2523, 0x8160, 0x251B, 0x8161, 0x2528, 0x8162,
+ 0x2520, 0x8164, 0x251A, 0x8165, 0x0ED2, 0x8166, 0x0ED8, 0x8167, 0x2525,
+ 0x8169, 0x251E, 0x816B, 0x0ED5, 0x816E, 0x0ED3, 0x816F, 0x2526, 0x8170,
+ 0x0ED0, 0x8171, 0x0ECF, 0x8172, 0x2521, 0x8173, 0x0ED4, 0x8174, 0x0D2B,
+ 0x8176, 0x2524, 0x8177, 0x251C, 0x8178, 0x0ED1, 0x8179, 0x0ED6, 0x817A,
+ 0x0ED7, 0x817F, 0x107A, 0x8180, 0x1076, 0x8182, 0x107B, 0x8183, 0x27A0,
+ 0x8186, 0x279F, 0x8187, 0x27A1, 0x8188, 0x1078, 0x8189, 0x279E, 0x818A,
+ 0x1079, 0x818B, 0x27A4, 0x818C, 0x27A3, 0x818D, 0x27A2, 0x818F, 0x1077,
+ 0x8195, 0x29D1, 0x8197, 0x29D4, 0x8198, 0x11EF, 0x8199, 0x29D3, 0x819A,
+ 0x11EE, 0x819B, 0x11EA, 0x819C, 0x11EB, 0x819D, 0x11EC, 0x819E, 0x29D0,
+ 0x819F, 0x29CF, 0x81A0, 0x11ED, 0x81A2, 0x29D2, 0x81A3, 0x29CE, 0x81A6,
+ 0x2C30, 0x81A7, 0x2C3A, 0x81A8, 0x1331, 0x81A9, 0x1330, 0x81AB, 0x2C34,
+ 0x81AC, 0x2C36, 0x81AE, 0x2C31, 0x81B0, 0x2C35, 0x81B1, 0x2C2F, 0x81B2,
+ 0x2C38, 0x81B3, 0x132F, 0x81B4, 0x2C37, 0x81B5, 0x2C33, 0x81B7, 0x2C39,
+ 0x81B9, 0x2C32, 0x81BA, 0x1450, 0x81BB, 0x2E06, 0x81BC, 0x2E0C, 0x81BD,
+ 0x1454, 0x81BE, 0x1456, 0x81BF, 0x1453, 0x81C0, 0x1452, 0x81C2, 0x1451,
+ 0x81C3, 0x144F, 0x81C4, 0x2E07, 0x81C5, 0x2E0A, 0x81C6, 0x144E, 0x81C7,
+ 0x2E0B, 0x81C9, 0x1455, 0x81CA, 0x2E09, 0x81CC, 0x2E08, 0x81CD, 0x1518,
+ 0x81CF, 0x1519, 0x81D0, 0x2F94, 0x81D1, 0x2F92, 0x81D2, 0x2F93, 0x81D5,
+ 0x30ED, 0x81D7, 0x30EC, 0x81D8, 0x15B3, 0x81D9, 0x321C, 0x81DA, 0x1635,
+ 0x81DB, 0x321B, 0x81DD, 0x32F5, 0x81DE, 0x33A5, 0x81DF, 0x16D4, 0x81E0,
+ 0x34DD, 0x81E1, 0x34DE, 0x81E2, 0x1706, 0x81E3, 0x0405, 0x81E5, 0x0676,
+ 0x81E6, 0x2286, 0x81E7, 0x107C, 0x81E8, 0x1457, 0x81E9, 0x2E0D, 0x81EA,
+ 0x0406, 0x81EC, 0x0995, 0x81ED, 0x0994, 0x81EE, 0x2287, 0x81F2, 0x2C3B,
+ 0x81F3, 0x0407, 0x81F4, 0x07E7, 0x81F7, 0x2288, 0x81F8, 0x2289, 0x81F9,
+ 0x228A, 0x81FA, 0x107D, 0x81FB, 0x1332, 0x81FC, 0x0408, 0x81FE, 0x0677,
+ 0x81FF, 0x1BDE, 0x8200, 0x0996, 0x8201, 0x1DBD, 0x8202, 0x0B71, 0x8204,
+ 0x228B, 0x8205, 0x0ED9, 0x8207, 0x107E, 0x8208, 0x1333, 0x8209, 0x1458,
+ 0x820A, 0x151A, 0x820B, 0x30EE, 0x820C, 0x0409, 0x820D, 0x0678, 0x8210,
+ 0x0997, 0x8211, 0x2013, 0x8212, 0x0D2C, 0x8214, 0x107F, 0x8215, 0x27A5,
+ 0x8216, 0x29D5, 0x821B, 0x040A, 0x821C, 0x0D2D, 0x821D, 0x2529, 0x821E,
+ 0x1080, 0x821F, 0x040B, 0x8220, 0x1A2E, 0x8221, 0x1BDF, 0x8222, 0x07E8,
+ 0x8225, 0x1DBF, 0x8228, 0x099A, 0x822A, 0x0998, 0x822B, 0x0999, 0x822C,
+ 0x099B, 0x822F, 0x1DBE, 0x8232, 0x2018, 0x8233, 0x2015, 0x8234, 0x2017,
+ 0x8235, 0x0B72, 0x8236, 0x0B74, 0x8237, 0x0B73, 0x8238, 0x2014, 0x8239,
+ 0x0B75, 0x823A, 0x2016, 0x823C, 0x228C, 0x823D, 0x228D, 0x823F, 0x228E,
+ 0x8240, 0x252C, 0x8242, 0x252D, 0x8244, 0x252B, 0x8245, 0x252E, 0x8247,
+ 0x0EDA, 0x8249, 0x252A, 0x824B, 0x1081, 0x824E, 0x29DA, 0x824F, 0x29D6,
+ 0x8250, 0x29D9, 0x8251, 0x29DB, 0x8252, 0x29D8, 0x8253, 0x29D7, 0x8255,
+ 0x2C3C, 0x8256, 0x2C3D, 0x8257, 0x2C3E, 0x8258, 0x1334, 0x8259, 0x1335,
+ 0x825A, 0x2E0F, 0x825B, 0x2E0E, 0x825C, 0x2E10, 0x825E, 0x2F96, 0x825F,
+ 0x2F95, 0x8261, 0x30F0, 0x8263, 0x30F1, 0x8264, 0x30EF, 0x8266, 0x1636,
+ 0x8268, 0x321D, 0x8269, 0x321E, 0x826B, 0x33A6, 0x826C, 0x342D, 0x826D,
+ 0x3496, 0x826E, 0x040C, 0x826F, 0x0504, 0x8271, 0x1459, 0x8272, 0x040D,
+ 0x8274, 0x2019, 0x8275, 0x228F, 0x8277, 0x172E, 0x8278, 0x1813, 0x827C,
+ 0x1814, 0x827D, 0x1816, 0x827E, 0x040E, 0x827F, 0x1817, 0x8280, 0x1815,
+ 0x8283, 0x18E5, 0x8284, 0x18E6, 0x8285, 0x18E0, 0x828A, 0x18E4, 0x828B,
+ 0x0506, 0x828D, 0x0507, 0x828E, 0x18E1, 0x828F, 0x18DF, 0x8290, 0x18DE,
+ 0x8291, 0x18E2, 0x8292, 0x0505, 0x8293, 0x18E3, 0x8294, 0x1BE0, 0x8298,
+ 0x1A33, 0x8299, 0x067B, 0x829A, 0x1A32, 0x829B, 0x1A34, 0x829D, 0x067A,
+ 0x829E, 0x1A39, 0x829F, 0x067E, 0x82A0, 0x1A2F, 0x82A1, 0x1A3D, 0x82A2,
+ 0x1A43, 0x82A3, 0x0685, 0x82A4, 0x1A40, 0x82A5, 0x0682, 0x82A7, 0x1A36,
+ 0x82A8, 0x1A3C, 0x82A9, 0x1A3E, 0x82AB, 0x1A31, 0x82AC, 0x0681, 0x82AD,
+ 0x067C, 0x82AE, 0x1A37, 0x82AF, 0x0683, 0x82B0, 0x0686, 0x82B1, 0x0680,
+ 0x82B3, 0x0679, 0x82B4, 0x1A3B, 0x82B5, 0x1A35, 0x82B6, 0x1A42, 0x82B7,
+ 0x0688, 0x82B8, 0x0684, 0x82B9, 0x067F, 0x82BA, 0x1A3A, 0x82BB, 0x099C,
+ 0x82BC, 0x1A38, 0x82BD, 0x067D, 0x82BE, 0x0687, 0x82C0, 0x1A30, 0x82C2,
+ 0x1A3F, 0x82C3, 0x1A41, 0x82D1, 0x07F9, 0x82D2, 0x07F3, 0x82D3, 0x07FB,
+ 0x82D4, 0x07F8, 0x82D5, 0x1BE7, 0x82D6, 0x1BEA, 0x82D7, 0x07F4, 0x82D9,
+ 0x1BE1, 0x82DB, 0x07ED, 0x82DC, 0x07F7, 0x82DE, 0x07FA, 0x82DF, 0x07FC,
+ 0x82E0, 0x1BF6, 0x82E1, 0x1BED, 0x82E3, 0x07EC, 0x82E4, 0x1BF5, 0x82E5,
+ 0x07F0, 0x82E6, 0x07EE, 0x82E7, 0x07E9, 0x82E8, 0x1BE5, 0x82EA, 0x1BF4,
+ 0x82EB, 0x1BE9, 0x82EC, 0x1BEC, 0x82ED, 0x1BF9, 0x82EF, 0x07FD, 0x82F0,
+ 0x1BF3, 0x82F1, 0x07F5, 0x82F2, 0x1BEE, 0x82F3, 0x1BF8, 0x82F4, 0x1BEB,
+ 0x82F5, 0x1BEF, 0x82F6, 0x1BF2, 0x82F9, 0x1BE3, 0x82FA, 0x1BF7, 0x82FB,
+ 0x1BF1, 0x82FE, 0x1BE2, 0x8300, 0x1BE6, 0x8301, 0x07F6, 0x8302, 0x07F1,
+ 0x8303, 0x07EA, 0x8304, 0x07EF, 0x8305, 0x07EB, 0x8306, 0x07FE, 0x8307,
+ 0x1BE4, 0x8308, 0x1DD0, 0x8309, 0x07F2, 0x830C, 0x1BF0, 0x830D, 0x1A7D,
+ 0x8316, 0x1DD3, 0x8317, 0x09AA, 0x8319, 0x1DC3, 0x831B, 0x1DCE, 0x831C,
+ 0x1DCA, 0x831E, 0x1DDD, 0x8320, 0x1DD5, 0x8322, 0x1DCB, 0x8324, 0x1DD4,
+ 0x8325, 0x1DC5, 0x8326, 0x1DC9, 0x8327, 0x1DE0, 0x8328, 0x09AD, 0x8329,
+ 0x1DD8, 0x832A, 0x1DCF, 0x832B, 0x099D, 0x832C, 0x1DDE, 0x832D, 0x1DC1,
+ 0x832F, 0x1DD7, 0x8331, 0x09AC, 0x8332, 0x09A7, 0x8333, 0x1DC0, 0x8334,
+ 0x09A5, 0x8335, 0x09A4, 0x8336, 0x09A9, 0x8337, 0x1DD6, 0x8338, 0x09A1,
+ 0x8339, 0x09A8, 0x833A, 0x1BE8, 0x833B, 0x2290, 0x833C, 0x1DD1, 0x833F,
+ 0x1DC7, 0x8340, 0x09AB, 0x8341, 0x1DC8, 0x8342, 0x1DCC, 0x8343, 0x09AE,
+ 0x8344, 0x1DC2, 0x8345, 0x1DDA, 0x8347, 0x1DD9, 0x8348, 0x1DE1, 0x8349,
+ 0x09A3, 0x834A, 0x09A0, 0x834B, 0x1DDF, 0x834C, 0x1DDB, 0x834D, 0x1DD2,
+ 0x834E, 0x1DCD, 0x834F, 0x09A6, 0x8350, 0x09A2, 0x8351, 0x1DC4, 0x8352,
+ 0x099E, 0x8353, 0x1DDC, 0x8354, 0x099F, 0x8356, 0x1DC6, 0x8373, 0x201F,
+ 0x8374, 0x2021, 0x8375, 0x2026, 0x8376, 0x203A, 0x8377, 0x0B83, 0x8378,
+ 0x0B79, 0x837A, 0x201E, 0x837B, 0x0B84, 0x837C, 0x0B85, 0x837D, 0x2029,
+ 0x837E, 0x2030, 0x837F, 0x2036, 0x8381, 0x2023, 0x8383, 0x202A, 0x8386,
+ 0x0B86, 0x8387, 0x2038, 0x8388, 0x2033, 0x8389, 0x0B81, 0x838A, 0x0B7F,
+ 0x838B, 0x202F, 0x838C, 0x202B, 0x838D, 0x201D, 0x838E, 0x0B76, 0x838F,
+ 0x2022, 0x8390, 0x201A, 0x8392, 0x0B7E, 0x8393, 0x0B80, 0x8394, 0x2027,
+ 0x8395, 0x2024, 0x8396, 0x0B7B, 0x8397, 0x2034, 0x8398, 0x0B78, 0x8399,
+ 0x2025, 0x839A, 0x22B9, 0x839B, 0x202D, 0x839D, 0x202C, 0x839E, 0x0B77,
+ 0x83A0, 0x0B82, 0x83A2, 0x0B7A, 0x83A3, 0x201B, 0x83A4, 0x2020, 0x83A5,
+ 0x2031, 0x83A6, 0x2037, 0x83A7, 0x0B87, 0x83A8, 0x201C, 0x83A9, 0x2028,
+ 0x83AA, 0x202E, 0x83AB, 0x0B7D, 0x83AE, 0x2039, 0x83AF, 0x2032, 0x83B0,
+ 0x2035, 0x83BD, 0x0B7C, 0x83BF, 0x22A0, 0x83C0, 0x2294, 0x83C1, 0x0D35,
+ 0x83C2, 0x22B1, 0x83C3, 0x22BA, 0x83C4, 0x22BD, 0x83C5, 0x0D33, 0x83C6,
+ 0x229C, 0x83C7, 0x22B5, 0x83C8, 0x229D, 0x83C9, 0x22AB, 0x83CA, 0x0D40,
+ 0x83CB, 0x22A7, 0x83CC, 0x0D3D, 0x83CE, 0x22A8, 0x83CF, 0x2291, 0x83D1,
+ 0x22B6, 0x83D4, 0x0D46, 0x83D5, 0x22B3, 0x83D6, 0x22A9, 0x83D7, 0x22BF,
+ 0x83D8, 0x22A4, 0x83D9, 0x254E, 0x83DB, 0x22C2, 0x83DC, 0x0D44, 0x83DD,
+ 0x22A2, 0x83DE, 0x22AE, 0x83DF, 0x0D47, 0x83E0, 0x0D32, 0x83E1, 0x22A6,
+ 0x83E2, 0x22C0, 0x83E3, 0x229F, 0x83E4, 0x2298, 0x83E5, 0x22A3, 0x83E7,
+ 0x2297, 0x83E8, 0x2295, 0x83E9, 0x0D2E, 0x83EA, 0x22B7, 0x83EB, 0x229E,
+ 0x83EC, 0x22BB, 0x83EE, 0x22BC, 0x83EF, 0x0D36, 0x83F0, 0x0D3B, 0x83F1,
+ 0x0D37, 0x83F2, 0x0D3F, 0x83F3, 0x22B2, 0x83F4, 0x0D38, 0x83F5, 0x22AA,
+ 0x83F6, 0x229A, 0x83F8, 0x0D30, 0x83F9, 0x2292, 0x83FA, 0x22B4, 0x83FB,
+ 0x22BE, 0x83FC, 0x2299, 0x83FD, 0x0D3E, 0x83FE, 0x22C3, 0x83FF, 0x22A5,
+ 0x8401, 0x22A1, 0x8403, 0x0D2F, 0x8404, 0x0D43, 0x8406, 0x22B0, 0x8407,
+ 0x0D45, 0x8409, 0x22AC, 0x840A, 0x0D3A, 0x840B, 0x0D34, 0x840C, 0x0D3C,
+ 0x840D, 0x0D31, 0x840E, 0x0D42, 0x840F, 0x22AD, 0x8410, 0x229B, 0x8411,
+ 0x22AF, 0x8412, 0x2296, 0x8413, 0x22B8, 0x841B, 0x22C1, 0x8423, 0x2293,
+ 0x8429, 0x254D, 0x842B, 0x2563, 0x842C, 0x0EAC, 0x842D, 0x2552, 0x842F,
+ 0x2550, 0x8430, 0x253B, 0x8431, 0x0EDE, 0x8432, 0x254B, 0x8433, 0x255F,
+ 0x8434, 0x2547, 0x8435, 0x0EE6, 0x8436, 0x255E, 0x8437, 0x2545, 0x8438,
+ 0x0D41, 0x8439, 0x2555, 0x843A, 0x2546, 0x843B, 0x255C, 0x843C, 0x0EE5,
+ 0x843D, 0x0EDD, 0x843F, 0x2530, 0x8440, 0x2538, 0x8442, 0x2551, 0x8443,
+ 0x2549, 0x8444, 0x2562, 0x8445, 0x254C, 0x8446, 0x0EEB, 0x8447, 0x255D,
+ 0x8449, 0x0EE2, 0x844B, 0x254F, 0x844C, 0x2557, 0x844D, 0x253C, 0x844E,
+ 0x2556, 0x8450, 0x2567, 0x8451, 0x2537, 0x8452, 0x2558, 0x8454, 0x2565,
+ 0x8456, 0x2531, 0x8457, 0x0D39, 0x8459, 0x253F, 0x845A, 0x253E, 0x845B,
+ 0x0EE4, 0x845D, 0x2542, 0x845E, 0x2544, 0x845F, 0x2553, 0x8460, 0x2564,
+ 0x8461, 0x0EE7, 0x8463, 0x0EE8, 0x8465, 0x2536, 0x8466, 0x0EE0, 0x8467,
+ 0x253A, 0x8468, 0x2560, 0x8469, 0x0EE9, 0x846B, 0x0EE1, 0x846C, 0x0EE3,
+ 0x846D, 0x0EEA, 0x846E, 0x2566, 0x846F, 0x2559, 0x8470, 0x2554, 0x8473,
+ 0x2541, 0x8474, 0x2540, 0x8475, 0x0EDF, 0x8476, 0x2532, 0x8477, 0x0EDC,
+ 0x8478, 0x254A, 0x8479, 0x2533, 0x847A, 0x2548, 0x847D, 0x253D, 0x847E,
+ 0x2561, 0x8482, 0x0EDB, 0x8486, 0x2539, 0x848D, 0x2535, 0x848E, 0x255B,
+ 0x848F, 0x2534, 0x8490, 0x108E, 0x8491, 0x27CD, 0x8494, 0x27BC, 0x8497,
+ 0x27A6, 0x8498, 0x27C4, 0x8499, 0x1086, 0x849A, 0x27B5, 0x849B, 0x27BF,
+ 0x849C, 0x1089, 0x849D, 0x27B8, 0x849E, 0x1087, 0x849F, 0x27A9, 0x84A0,
+ 0x27C7, 0x84A1, 0x27A8, 0x84A2, 0x27BB, 0x84A4, 0x27A7, 0x84A7, 0x27B9,
+ 0x84A8, 0x27C2, 0x84A9, 0x27C0, 0x84AA, 0x27B4, 0x84AB, 0x27AF, 0x84AC,
+ 0x27AD, 0x84AE, 0x27AE, 0x84AF, 0x27C1, 0x84B0, 0x27CC, 0x84B1, 0x27B6,
+ 0x84B2, 0x1088, 0x84B4, 0x27B1, 0x84B6, 0x27C5, 0x84B8, 0x108B, 0x84B9,
+ 0x27B0, 0x84BA, 0x27AA, 0x84BB, 0x27BA, 0x84BC, 0x108F, 0x84BF, 0x1083,
+ 0x84C0, 0x108C, 0x84C1, 0x27B2, 0x84C2, 0x27AC, 0x84C4, 0x1085, 0x84C5,
+ 0x255A, 0x84C6, 0x1084, 0x84C7, 0x27BD, 0x84C9, 0x1082, 0x84CA, 0x1091,
+ 0x84CB, 0x108A, 0x84CC, 0x27BE, 0x84CD, 0x27B3, 0x84CE, 0x27AB, 0x84CF,
+ 0x27C6, 0x84D0, 0x27B7, 0x84D1, 0x1090, 0x84D2, 0x27CA, 0x84D3, 0x108D,
+ 0x84D4, 0x27C9, 0x84D6, 0x27C3, 0x84D7, 0x27C8, 0x84DB, 0x27CB, 0x84E7,
+ 0x2A03, 0x84E8, 0x2A04, 0x84E9, 0x29F7, 0x84EA, 0x29F6, 0x84EB, 0x29F2,
+ 0x84EC, 0x11FB, 0x84EE, 0x11F3, 0x84EF, 0x2A06, 0x84F0, 0x2A05, 0x84F1,
+ 0x252F, 0x84F2, 0x29EF, 0x84F3, 0x29F3, 0x84F4, 0x29ED, 0x84F6, 0x2A00,
+ 0x84F7, 0x29F1, 0x84F9, 0x2A07, 0x84FA, 0x29EA, 0x84FB, 0x29E8, 0x84FC,
+ 0x29F4, 0x84FD, 0x29FE, 0x84FE, 0x29F9, 0x84FF, 0x11FD, 0x8500, 0x29DF,
+ 0x8502, 0x29FD, 0x8506, 0x11FE, 0x8507, 0x2543, 0x8508, 0x29EB, 0x8509,
+ 0x29E2, 0x850A, 0x29E5, 0x850B, 0x2A0B, 0x850C, 0x29EC, 0x850D, 0x29E3,
+ 0x850E, 0x29E1, 0x850F, 0x29DE, 0x8511, 0x11F7, 0x8512, 0x29F5, 0x8513,
+ 0x11F6, 0x8514, 0x11FA, 0x8515, 0x29F0, 0x8516, 0x29F8, 0x8517, 0x11F0,
+ 0x8518, 0x2A08, 0x8519, 0x2A0C, 0x851A, 0x11F2, 0x851C, 0x29E7, 0x851D,
+ 0x29FB, 0x851E, 0x29FF, 0x851F, 0x29E4, 0x8520, 0x2A09, 0x8521, 0x11F9,
+ 0x8523, 0x11F8, 0x8524, 0x29DC, 0x8525, 0x11FC, 0x8526, 0x2A02, 0x8527,
+ 0x29E6, 0x8528, 0x29FA, 0x8529, 0x29E0, 0x852A, 0x29EE, 0x852B, 0x29E9,
+ 0x852C, 0x11F4, 0x852D, 0x11F5, 0x852E, 0x29FC, 0x852F, 0x2A0D, 0x8530,
+ 0x2A0A, 0x8531, 0x2A01, 0x853B, 0x29DD, 0x853D, 0x11F1, 0x853E, 0x2C4F,
+ 0x8540, 0x2C46, 0x8541, 0x2C49, 0x8543, 0x133B, 0x8544, 0x2C4B, 0x8545,
+ 0x2C40, 0x8546, 0x2C47, 0x8547, 0x2C4D, 0x8548, 0x1338, 0x8549, 0x133C,
+ 0x854A, 0x1336, 0x854D, 0x2C42, 0x854E, 0x2C52, 0x8551, 0x2C4C, 0x8553,
+ 0x2C43, 0x8554, 0x2C5B, 0x8555, 0x2C55, 0x8556, 0x2C3F, 0x8557, 0x2E23,
+ 0x8558, 0x2C45, 0x8559, 0x1337, 0x855B, 0x2C50, 0x855D, 0x2C5A, 0x855E,
+ 0x133F, 0x8560, 0x2C57, 0x8561, 0x2C44, 0x8562, 0x2C4A, 0x8563, 0x2C4E,
+ 0x8564, 0x2C48, 0x8565, 0x2C5C, 0x8566, 0x2C59, 0x8567, 0x2C56, 0x8568,
+ 0x1339, 0x8569, 0x133A, 0x856A, 0x133E, 0x856B, 0x2C41, 0x856C, 0x2C5D,
+ 0x856D, 0x133D, 0x856E, 0x2C53, 0x8571, 0x2C51, 0x8575, 0x2C54, 0x8576,
+ 0x2E30, 0x8577, 0x2E1D, 0x8578, 0x2E22, 0x8579, 0x2E2F, 0x857A, 0x2E21,
+ 0x857B, 0x2E19, 0x857C, 0x2E1E, 0x857E, 0x145C, 0x8580, 0x2E12, 0x8581,
+ 0x2E2A, 0x8582, 0x2E2C, 0x8583, 0x2E11, 0x8584, 0x145B, 0x8585, 0x2E2E,
+ 0x8586, 0x2E26, 0x8587, 0x1462, 0x8588, 0x2E2D, 0x8589, 0x2E1F, 0x858A,
+ 0x1464, 0x858B, 0x2E17, 0x858C, 0x2C58, 0x858D, 0x2E27, 0x858E, 0x2E24,
+ 0x858F, 0x2E13, 0x8590, 0x2E32, 0x8591, 0x145E, 0x8594, 0x145F, 0x8595,
+ 0x2E15, 0x8596, 0x2E25, 0x8598, 0x2E31, 0x8599, 0x2E28, 0x859A, 0x2E1B,
+ 0x859B, 0x1461, 0x859C, 0x145D, 0x859D, 0x2E29, 0x859E, 0x2E1C, 0x859F,
+ 0x2E33, 0x85A0, 0x2E16, 0x85A1, 0x2E20, 0x85A2, 0x2E2B, 0x85A3, 0x2E18,
+ 0x85A4, 0x2E1A, 0x85A6, 0x1465, 0x85A7, 0x2E14, 0x85A8, 0x1463, 0x85A9,
+ 0x151C, 0x85AA, 0x145A, 0x85AF, 0x1460, 0x85B0, 0x1520, 0x85B1, 0x2FA6,
+ 0x85B3, 0x2F9C, 0x85B4, 0x2F97, 0x85B5, 0x2F9D, 0x85B6, 0x2FA7, 0x85B7,
+ 0x2FAB, 0x85B8, 0x2FAA, 0x85B9, 0x1522, 0x85BA, 0x1521, 0x85BD, 0x2F9E,
+ 0x85BE, 0x2FAC, 0x85BF, 0x2FA1, 0x85C0, 0x2F99, 0x85C2, 0x2F9B, 0x85C3,
+ 0x2F9A, 0x85C4, 0x2FA0, 0x85C5, 0x2FA5, 0x85C6, 0x2F98, 0x85C7, 0x2F9F,
+ 0x85C8, 0x2FA4, 0x85C9, 0x151F, 0x85CB, 0x2FA2, 0x85CD, 0x151D, 0x85CE,
+ 0x2FA3, 0x85CF, 0x151B, 0x85D0, 0x151E, 0x85D1, 0x3101, 0x85D2, 0x2FA8,
+ 0x85D5, 0x15B7, 0x85D7, 0x30F9, 0x85D8, 0x30FD, 0x85D9, 0x30F5, 0x85DA,
+ 0x30F8, 0x85DC, 0x3100, 0x85DD, 0x15B5, 0x85DE, 0x3105, 0x85DF, 0x30FE,
+ 0x85E1, 0x30F6, 0x85E2, 0x3106, 0x85E3, 0x30FF, 0x85E4, 0x15B8, 0x85E5,
+ 0x15B9, 0x85E6, 0x3103, 0x85E8, 0x30F7, 0x85E9, 0x15B4, 0x85EA, 0x15B6,
+ 0x85EB, 0x30F2, 0x85EC, 0x30FA, 0x85ED, 0x30F4, 0x85EF, 0x3104, 0x85F0,
+ 0x3102, 0x85F1, 0x30F3, 0x85F2, 0x30FB, 0x85F6, 0x3225, 0x85F7, 0x15BA,
+ 0x85F8, 0x30FC, 0x85F9, 0x1638, 0x85FA, 0x163A, 0x85FB, 0x1637, 0x85FD,
+ 0x322A, 0x85FE, 0x3222, 0x85FF, 0x3220, 0x8600, 0x3224, 0x8601, 0x3221,
+ 0x8604, 0x3226, 0x8605, 0x3228, 0x8606, 0x163B, 0x8607, 0x163D, 0x8609,
+ 0x3227, 0x860A, 0x163E, 0x860B, 0x163C, 0x860C, 0x3229, 0x8611, 0x1639,
+ 0x8617, 0x1685, 0x8618, 0x32F6, 0x8619, 0x32FC, 0x861A, 0x1687, 0x861B,
+ 0x3223, 0x861C, 0x32FB, 0x861E, 0x3302, 0x861F, 0x32F9, 0x8620, 0x3300,
+ 0x8621, 0x32FF, 0x8622, 0x321F, 0x8623, 0x32FA, 0x8624, 0x2FA9, 0x8625,
+ 0x3303, 0x8626, 0x32F8, 0x8627, 0x32FD, 0x8629, 0x3301, 0x862A, 0x32F7,
+ 0x862C, 0x33AA, 0x862D, 0x1686, 0x862E, 0x32FE, 0x8631, 0x3432, 0x8632,
+ 0x33AB, 0x8633, 0x33A9, 0x8634, 0x33A7, 0x8635, 0x33A8, 0x8636, 0x33AC,
+ 0x8638, 0x1707, 0x8639, 0x3430, 0x863A, 0x342E, 0x863B, 0x3433, 0x863C,
+ 0x3431, 0x863E, 0x3434, 0x863F, 0x1708, 0x8640, 0x342F, 0x8643, 0x3497,
+ 0x8646, 0x34DF, 0x8647, 0x34E0, 0x8648, 0x34E1, 0x864B, 0x353E, 0x864C,
+ 0x3536, 0x864D, 0x1818, 0x864E, 0x0689, 0x8650, 0x07FF, 0x8652, 0x1DE3,
+ 0x8653, 0x1DE2, 0x8654, 0x09AF, 0x8655, 0x0B88, 0x8656, 0x203C, 0x8659,
+ 0x203B, 0x865B, 0x0D48, 0x865C, 0x0EED, 0x865E, 0x0EEC, 0x865F, 0x0EEE,
+ 0x8661, 0x27CE, 0x8662, 0x2A0E, 0x8663, 0x2C5E, 0x8664, 0x2C60, 0x8665,
+ 0x2C5F, 0x8667, 0x1466, 0x8668, 0x2E34, 0x8669, 0x2FAD, 0x866A, 0x351E,
+ 0x866B, 0x040F, 0x866D, 0x1A46, 0x866E, 0x1A47, 0x866F, 0x1A45, 0x8670,
+ 0x1A44, 0x8671, 0x068A, 0x8673, 0x1BFD, 0x8674, 0x1BFB, 0x8677, 0x1BFA,
+ 0x8679, 0x0800, 0x867A, 0x0802, 0x867B, 0x0801, 0x867C, 0x1BFC, 0x8685,
+ 0x1DEF, 0x8686, 0x1DEC, 0x8687, 0x1DEA, 0x868A, 0x09B0, 0x868B, 0x1DED,
+ 0x868C, 0x09B5, 0x868D, 0x1DE7, 0x868E, 0x1DF6, 0x8690, 0x1DF8, 0x8691,
+ 0x1DE8, 0x8693, 0x09B2, 0x8694, 0x1DF9, 0x8695, 0x1DF4, 0x8696, 0x1DE6,
+ 0x8697, 0x1DEB, 0x8698, 0x1DF5, 0x8699, 0x1DF1, 0x869A, 0x1DEE, 0x869C,
+ 0x09B7, 0x869D, 0x1DF7, 0x869E, 0x1DE9, 0x86A1, 0x1DF2, 0x86A2, 0x1DE4,
+ 0x86A3, 0x09B6, 0x86A4, 0x09B3, 0x86A5, 0x1DF0, 0x86A7, 0x1DF3, 0x86A8,
+ 0x1DE5, 0x86A9, 0x09B4, 0x86AA, 0x09B1, 0x86AF, 0x0B92, 0x86B0, 0x2043,
+ 0x86B1, 0x0B91, 0x86B3, 0x2046, 0x86B4, 0x2049, 0x86B5, 0x0B8E, 0x86B6,
+ 0x0B8C, 0x86B7, 0x203E, 0x86B8, 0x2047, 0x86B9, 0x2045, 0x86BA, 0x2042,
+ 0x86BB, 0x204A, 0x86BC, 0x204B, 0x86BD, 0x204D, 0x86BE, 0x204E, 0x86BF,
+ 0x203D, 0x86C0, 0x0B8B, 0x86C1, 0x2040, 0x86C2, 0x203F, 0x86C3, 0x204C,
+ 0x86C4, 0x0B8D, 0x86C5, 0x2041, 0x86C6, 0x0B8F, 0x86C7, 0x0B8A, 0x86C8,
+ 0x2044, 0x86C9, 0x0B93, 0x86CB, 0x0B90, 0x86CC, 0x2048, 0x86D0, 0x0D4F,
+ 0x86D1, 0x22D2, 0x86D3, 0x22C7, 0x86D4, 0x0D4C, 0x86D6, 0x256D, 0x86D7,
+ 0x22D0, 0x86D8, 0x22C4, 0x86D9, 0x0D4A, 0x86DA, 0x22C9, 0x86DB, 0x0D4D,
+ 0x86DC, 0x22CD, 0x86DD, 0x22CB, 0x86DE, 0x0D50, 0x86DF, 0x0D49, 0x86E2,
+ 0x22C5, 0x86E3, 0x22C8, 0x86E4, 0x0D4E, 0x86E6, 0x22C6, 0x86E8, 0x22D1,
+ 0x86E9, 0x22CF, 0x86EA, 0x22CA, 0x86EB, 0x22CC, 0x86EC, 0x22CE, 0x86ED,
+ 0x0D4B, 0x86F5, 0x256E, 0x86F6, 0x2574, 0x86F7, 0x256A, 0x86F8, 0x2570,
+ 0x86F9, 0x0EEF, 0x86FA, 0x256C, 0x86FB, 0x0EF5, 0x86FE, 0x0EF4, 0x8700,
+ 0x0EF3, 0x8701, 0x2573, 0x8702, 0x0EF6, 0x8703, 0x0EF7, 0x8704, 0x2569,
+ 0x8705, 0x2576, 0x8706, 0x0EF8, 0x8707, 0x0EF2, 0x8708, 0x0EF1, 0x8709,
+ 0x2572, 0x870A, 0x0EF9, 0x870B, 0x2568, 0x870C, 0x256B, 0x870D, 0x2575,
+ 0x870E, 0x2571, 0x8711, 0x27EE, 0x8712, 0x27E3, 0x8713, 0x0EF0, 0x8718,
+ 0x1098, 0x8719, 0x27D7, 0x871A, 0x27EC, 0x871B, 0x27D8, 0x871C, 0x1093,
+ 0x871E, 0x27D5, 0x8720, 0x27DE, 0x8721, 0x27D6, 0x8722, 0x1095, 0x8723,
+ 0x27D0, 0x8724, 0x27EB, 0x8725, 0x1096, 0x8726, 0x27E8, 0x8727, 0x27E9,
+ 0x8728, 0x27D1, 0x8729, 0x109B, 0x872A, 0x27E0, 0x872C, 0x27DA, 0x872D,
+ 0x27E1, 0x872E, 0x27D4, 0x8730, 0x27ED, 0x8731, 0x27E5, 0x8732, 0x27DF,
+ 0x8733, 0x27CF, 0x8734, 0x1097, 0x8735, 0x27E6, 0x8737, 0x109A, 0x8738,
+ 0x27EA, 0x873A, 0x27E4, 0x873B, 0x1094, 0x873C, 0x27E2, 0x873E, 0x27DC,
+ 0x873F, 0x1092, 0x8740, 0x27D3, 0x8741, 0x27DB, 0x8742, 0x27E7, 0x8743,
+ 0x27D9, 0x8746, 0x27DD, 0x874C, 0x1208, 0x874D, 0x256F, 0x874E, 0x2A20,
+ 0x874F, 0x2A29, 0x8750, 0x2A1F, 0x8751, 0x2A1B, 0x8752, 0x2A18, 0x8753,
+ 0x1209, 0x8754, 0x2A16, 0x8755, 0x1099, 0x8756, 0x2A0F, 0x8757, 0x1207,
+ 0x8758, 0x2A15, 0x8759, 0x1206, 0x875A, 0x2A1A, 0x875B, 0x2A17, 0x875C,
+ 0x2A27, 0x875D, 0x2A22, 0x875E, 0x2A1C, 0x875F, 0x2A21, 0x8760, 0x1202,
+ 0x8761, 0x2A19, 0x8762, 0x2A2C, 0x8763, 0x2A10, 0x8764, 0x2A11, 0x8765,
+ 0x2A28, 0x8766, 0x1203, 0x8767, 0x2A2D, 0x8768, 0x1205, 0x8769, 0x2A2E,
+ 0x876A, 0x2A1E, 0x876B, 0x27D2, 0x876C, 0x2A24, 0x876D, 0x2A1D, 0x876E,
+ 0x2A26, 0x876F, 0x2A23, 0x8773, 0x2A14, 0x8774, 0x1200, 0x8775, 0x2A2B,
+ 0x8776, 0x1201, 0x8777, 0x2A12, 0x8778, 0x1204, 0x8779, 0x2C6B, 0x877A,
+ 0x2A25, 0x877B, 0x2A2A, 0x8781, 0x2C68, 0x8782, 0x11FF, 0x8783, 0x1340,
+ 0x8784, 0x2C72, 0x8785, 0x2C6E, 0x8787, 0x2C6C, 0x8788, 0x2C67, 0x8789,
+ 0x2C76, 0x878D, 0x1344, 0x878F, 0x2C63, 0x8790, 0x2C6F, 0x8791, 0x2C70,
+ 0x8792, 0x2C66, 0x8793, 0x2C65, 0x8794, 0x2C73, 0x8796, 0x2C69, 0x8797,
+ 0x2C64, 0x8798, 0x2C6A, 0x879A, 0x2C75, 0x879B, 0x2C62, 0x879C, 0x2C74,
+ 0x879D, 0x2C71, 0x879E, 0x1342, 0x879F, 0x1341, 0x87A2, 0x1343, 0x87A3,
+ 0x2C6D, 0x87A4, 0x2C61, 0x87AA, 0x2E36, 0x87AB, 0x146C, 0x87AC, 0x2E3A,
+ 0x87AD, 0x2E37, 0x87AE, 0x2E3E, 0x87AF, 0x2E44, 0x87B0, 0x2E39, 0x87B2,
+ 0x2E4D, 0x87B3, 0x1469, 0x87B4, 0x2E47, 0x87B5, 0x2E3C, 0x87B6, 0x2E48,
+ 0x87B7, 0x2E43, 0x87B8, 0x2E4A, 0x87B9, 0x2E3B, 0x87BA, 0x146E, 0x87BB,
+ 0x146D, 0x87BC, 0x2E3D, 0x87BD, 0x2E4B, 0x87BE, 0x2E35, 0x87BF, 0x2E49,
+ 0x87C0, 0x1467, 0x87C2, 0x2E41, 0x87C3, 0x2E40, 0x87C4, 0x2E45, 0x87C5,
+ 0x2E38, 0x87C6, 0x146B, 0x87C8, 0x146F, 0x87C9, 0x2E3F, 0x87CA, 0x2E46,
+ 0x87CB, 0x1470, 0x87CC, 0x2E42, 0x87D1, 0x1468, 0x87D2, 0x146A, 0x87D3,
+ 0x2FBA, 0x87D4, 0x2FB8, 0x87D7, 0x2FBE, 0x87D8, 0x2FBC, 0x87D9, 0x2FBF,
+ 0x87DB, 0x2FB1, 0x87DC, 0x2FB9, 0x87DD, 0x2FC3, 0x87DE, 0x2E4C, 0x87DF,
+ 0x2FB5, 0x87E0, 0x1526, 0x87E1, 0x2A13, 0x87E2, 0x2FB0, 0x87E3, 0x2FBD,
+ 0x87E4, 0x2FB7, 0x87E5, 0x2FB4, 0x87E6, 0x2FAF, 0x87E7, 0x2FAE, 0x87E8,
+ 0x2FC2, 0x87EA, 0x2FB3, 0x87EB, 0x2FB2, 0x87EC, 0x1524, 0x87ED, 0x2FBB,
+ 0x87EF, 0x1523, 0x87F2, 0x1525, 0x87F3, 0x2FB6, 0x87F4, 0x2FC1, 0x87F6,
+ 0x310A, 0x87F7, 0x310B, 0x87F9, 0x15BE, 0x87FA, 0x3108, 0x87FB, 0x15BB,
+ 0x87FC, 0x3110, 0x87FE, 0x15BF, 0x87FF, 0x3112, 0x8800, 0x3107, 0x8801,
+ 0x2FC0, 0x8802, 0x3114, 0x8803, 0x3109, 0x8805, 0x15BC, 0x8806, 0x310F,
+ 0x8808, 0x3111, 0x8809, 0x310C, 0x880A, 0x3113, 0x880B, 0x310E, 0x880C,
+ 0x310D, 0x880D, 0x15BD, 0x8810, 0x322C, 0x8811, 0x322D, 0x8813, 0x322F,
+ 0x8814, 0x163F, 0x8815, 0x1640, 0x8816, 0x3230, 0x8817, 0x322E, 0x8819,
+ 0x322B, 0x881B, 0x3306, 0x881C, 0x3309, 0x881D, 0x3305, 0x881F, 0x168B,
+ 0x8820, 0x3307, 0x8821, 0x168A, 0x8822, 0x1689, 0x8823, 0x1688, 0x8824,
+ 0x3308, 0x8825, 0x33B1, 0x8826, 0x33AF, 0x8828, 0x33AE, 0x8829, 0x3304,
+ 0x882A, 0x33B0, 0x882B, 0x330A, 0x882C, 0x33AD, 0x882E, 0x3437, 0x882F,
+ 0x3415, 0x8830, 0x3435, 0x8831, 0x1709, 0x8832, 0x3436, 0x8833, 0x3438,
+ 0x8835, 0x349A, 0x8836, 0x1728, 0x8837, 0x3499, 0x8838, 0x3498, 0x8839,
+ 0x1729, 0x883B, 0x1747, 0x883C, 0x3508, 0x883D, 0x3520, 0x883E, 0x351F,
+ 0x883F, 0x3521, 0x8840, 0x0410, 0x8841, 0x1BFE, 0x8843, 0x1DFA, 0x8844,
+ 0x1DFB, 0x8848, 0x22D3, 0x884A, 0x330B, 0x884B, 0x349B, 0x884C, 0x0411,
+ 0x884D, 0x0803, 0x884E, 0x1BFF, 0x8852, 0x204F, 0x8853, 0x0B94, 0x8855,
+ 0x22D5, 0x8856, 0x22D4, 0x8857, 0x0D51, 0x8859, 0x0EFA, 0x885A, 0x2A2F,
+ 0x885B, 0x120A, 0x885D, 0x120B, 0x8861, 0x1345, 0x8862, 0x172A, 0x8863,
+ 0x0412, 0x8867, 0x1C00, 0x8868, 0x068C, 0x8869, 0x1C02, 0x886A, 0x1C01,
+ 0x886B, 0x0804, 0x886D, 0x1DFC, 0x886F, 0x1E03, 0x8870, 0x09B8, 0x8871,
+ 0x1E01, 0x8872, 0x1DFF, 0x8874, 0x1E06, 0x8875, 0x1DFD, 0x8876, 0x1DFE,
+ 0x8877, 0x09B9, 0x8879, 0x09BD, 0x887C, 0x1E07, 0x887D, 0x09BC, 0x887E,
+ 0x1E05, 0x887F, 0x1E02, 0x8880, 0x1E00, 0x8881, 0x09BA, 0x8882, 0x09BB,
+ 0x8883, 0x1E04, 0x8888, 0x0B96, 0x8889, 0x2050, 0x888B, 0x0B9B, 0x888C,
+ 0x2060, 0x888D, 0x0B9A, 0x888E, 0x2062, 0x8891, 0x2056, 0x8892, 0x0B98,
+ 0x8893, 0x2061, 0x8895, 0x2051, 0x8896, 0x0B99, 0x8897, 0x205D, 0x8898,
+ 0x2059, 0x8899, 0x205B, 0x889A, 0x2055, 0x889B, 0x205C, 0x889E, 0x0B95,
+ 0x889F, 0x2058, 0x88A1, 0x2057, 0x88A2, 0x2053, 0x88A4, 0x205E, 0x88A7,
+ 0x205A, 0x88A8, 0x2052, 0x88AA, 0x2054, 0x88AB, 0x0B97, 0x88AC, 0x205F,
+ 0x88B1, 0x0D54, 0x88B2, 0x22E0, 0x88B6, 0x22DC, 0x88B7, 0x22DE, 0x88B8,
+ 0x22D9, 0x88B9, 0x22D8, 0x88BA, 0x22D6, 0x88BC, 0x22DD, 0x88BD, 0x22DF,
+ 0x88BE, 0x22DB, 0x88C0, 0x22DA, 0x88C1, 0x0D52, 0x88C2, 0x0D53, 0x88C9,
+ 0x22E2, 0x88CA, 0x0F02, 0x88CB, 0x2578, 0x88CC, 0x257E, 0x88CD, 0x2579,
+ 0x88CE, 0x257A, 0x88CF, 0x36EA, 0x88D0, 0x257F, 0x88D2, 0x0F04, 0x88D4,
+ 0x0EFC, 0x88D5, 0x0F03, 0x88D6, 0x2577, 0x88D7, 0x22D7, 0x88D8, 0x0EFF,
+ 0x88D9, 0x0EFD, 0x88DA, 0x257D, 0x88DB, 0x257C, 0x88DC, 0x0EFE, 0x88DD,
+ 0x0F00, 0x88DE, 0x257B, 0x88DF, 0x0EFB, 0x88E1, 0x0F01, 0x88E7, 0x27F0,
+ 0x88E8, 0x10A2, 0x88EB, 0x27FB, 0x88EC, 0x27FA, 0x88EE, 0x27F5, 0x88EF,
+ 0x10A4, 0x88F0, 0x27F9, 0x88F1, 0x27F1, 0x88F2, 0x27F2, 0x88F3, 0x109C,
+ 0x88F4, 0x109E, 0x88F6, 0x27F7, 0x88F7, 0x27EF, 0x88F8, 0x10A0, 0x88F9,
+ 0x109F, 0x88FA, 0x27F3, 0x88FB, 0x27F8, 0x88FC, 0x27F6, 0x88FD, 0x10A1,
+ 0x88FE, 0x27F4, 0x8901, 0x22E1, 0x8902, 0x109D, 0x8905, 0x2A30, 0x8906,
+ 0x2A37, 0x8907, 0x120D, 0x8909, 0x2A3B, 0x890A, 0x1211, 0x890B, 0x2A33,
+ 0x890C, 0x2A31, 0x890E, 0x2A3A, 0x8910, 0x120C, 0x8911, 0x2A39, 0x8912,
+ 0x120E, 0x8913, 0x120F, 0x8914, 0x2A32, 0x8915, 0x1210, 0x8916, 0x2A38,
+ 0x8917, 0x2A34, 0x8918, 0x2A35, 0x8919, 0x2A36, 0x891A, 0x10A3, 0x891E,
+ 0x2C77, 0x891F, 0x2C83, 0x8921, 0x134A, 0x8922, 0x2C7E, 0x8923, 0x2C80,
+ 0x8925, 0x1348, 0x8926, 0x2C78, 0x8927, 0x2C7C, 0x8929, 0x2C7F, 0x892A,
+ 0x1346, 0x892B, 0x1349, 0x892C, 0x2C82, 0x892D, 0x2C7A, 0x892E, 0x2C7B,
+ 0x892F, 0x2C81, 0x8930, 0x2C79, 0x8931, 0x2C7D, 0x8932, 0x1347, 0x8933,
+ 0x2E4F, 0x8935, 0x2E4E, 0x8936, 0x1472, 0x8937, 0x2E54, 0x8938, 0x1474,
+ 0x893B, 0x1471, 0x893C, 0x2E50, 0x893D, 0x1475, 0x893E, 0x2E51, 0x8941,
+ 0x2E52, 0x8942, 0x2E55, 0x8944, 0x1473, 0x8946, 0x2FC8, 0x8949, 0x2FCB,
+ 0x894B, 0x2FC5, 0x894C, 0x2FC7, 0x894F, 0x2FC6, 0x8950, 0x2FC9, 0x8951,
+ 0x2FCA, 0x8952, 0x2E53, 0x8953, 0x2FC4, 0x8956, 0x15C2, 0x8957, 0x3118,
+ 0x8958, 0x311B, 0x8959, 0x311D, 0x895A, 0x3116, 0x895B, 0x3117, 0x895C,
+ 0x311A, 0x895D, 0x311C, 0x895E, 0x15C3, 0x895F, 0x15C1, 0x8960, 0x15C0,
+ 0x8961, 0x3119, 0x8962, 0x3115, 0x8963, 0x3231, 0x8964, 0x1641, 0x8966,
+ 0x3232, 0x8969, 0x330D, 0x896A, 0x168C, 0x896B, 0x330F, 0x896C, 0x168D,
+ 0x896D, 0x330C, 0x896E, 0x330E, 0x896F, 0x16D6, 0x8971, 0x33B2, 0x8972,
+ 0x16D5, 0x8973, 0x343B, 0x8974, 0x343A, 0x8976, 0x3439, 0x8979, 0x34E2,
+ 0x897A, 0x34E3, 0x897B, 0x34E5, 0x897C, 0x34E4, 0x897E, 0x1819, 0x897F,
+ 0x0413, 0x8981, 0x0805, 0x8982, 0x2063, 0x8983, 0x0D55, 0x8985, 0x2580,
+ 0x8986, 0x1527, 0x8988, 0x311E, 0x898B, 0x0508, 0x898F, 0x0B9D, 0x8993,
+ 0x0B9C, 0x8995, 0x22E3, 0x8996, 0x0D56, 0x8997, 0x22E5, 0x8998, 0x22E4,
+ 0x899B, 0x2581, 0x899C, 0x0F05, 0x899D, 0x27FC, 0x899E, 0x27FF, 0x899F,
+ 0x27FE, 0x89A1, 0x27FD, 0x89A2, 0x2A3C, 0x89A3, 0x2A3E, 0x89A4, 0x2A3D,
+ 0x89A6, 0x134C, 0x89AA, 0x134B, 0x89AC, 0x1476, 0x89AD, 0x2E56, 0x89AE,
+ 0x2E58, 0x89AF, 0x2E57, 0x89B2, 0x1528, 0x89B6, 0x3120, 0x89B7, 0x311F,
+ 0x89B9, 0x3233, 0x89BA, 0x1642, 0x89BD, 0x168E, 0x89BE, 0x33B4, 0x89BF,
+ 0x33B3, 0x89C0, 0x1748, 0x89D2, 0x0509, 0x89D3, 0x1C03, 0x89D4, 0x0806,
+ 0x89D5, 0x2066, 0x89D6, 0x2064, 0x89D9, 0x2065, 0x89DA, 0x22E7, 0x89DB,
+ 0x22E8, 0x89DC, 0x2588, 0x89DD, 0x22E6, 0x89DF, 0x2582, 0x89E0, 0x2586,
+ 0x89E1, 0x2585, 0x89E2, 0x2587, 0x89E3, 0x0F06, 0x89E4, 0x2584, 0x89E5,
+ 0x2583, 0x89E6, 0x2589, 0x89E8, 0x2802, 0x89E9, 0x2800, 0x89EB, 0x2801,
+ 0x89EC, 0x2A41, 0x89ED, 0x2A3F, 0x89F0, 0x2A40, 0x89F1, 0x2C84, 0x89F2,
+ 0x2E59, 0x89F3, 0x2E5A, 0x89F4, 0x1529, 0x89F6, 0x3121, 0x89F7, 0x3234,
+ 0x89F8, 0x1643, 0x89FA, 0x3310, 0x89FB, 0x33B5, 0x89FC, 0x16D7, 0x89FE,
+ 0x343C, 0x89FF, 0x34E6, 0x8A00, 0x050A, 0x8A02, 0x0808, 0x8A03, 0x0809,
+ 0x8A04, 0x1C04, 0x8A07, 0x1C05, 0x8A08, 0x0807, 0x8A0A, 0x09C3, 0x8A0C,
+ 0x09C1, 0x8A0E, 0x09C0, 0x8A0F, 0x09C7, 0x8A10, 0x09BF, 0x8A11, 0x09C8,
+ 0x8A12, 0x1E08, 0x8A13, 0x09C5, 0x8A15, 0x09C2, 0x8A16, 0x09C6, 0x8A17,
+ 0x09C4, 0x8A18, 0x09BE, 0x8A1B, 0x0BA5, 0x8A1D, 0x0B9F, 0x8A1E, 0x206A,
+ 0x8A1F, 0x0BA4, 0x8A22, 0x0BA6, 0x8A23, 0x0BA0, 0x8A25, 0x0BA1, 0x8A27,
+ 0x2068, 0x8A2A, 0x0B9E, 0x8A2C, 0x2069, 0x8A2D, 0x0BA3, 0x8A30, 0x2067,
+ 0x8A31, 0x0BA2, 0x8A34, 0x0D61, 0x8A36, 0x0D63, 0x8A39, 0x22EB, 0x8A3A,
+ 0x0D62, 0x8A3B, 0x0D57, 0x8A3C, 0x0D5B, 0x8A3E, 0x0F19, 0x8A3F, 0x258E,
+ 0x8A40, 0x22ED, 0x8A41, 0x0D5C, 0x8A44, 0x22F0, 0x8A45, 0x22F1, 0x8A46,
+ 0x0D60, 0x8A48, 0x22F3, 0x8A4A, 0x22F5, 0x8A4C, 0x22F6, 0x8A4D, 0x22EA,
+ 0x8A4E, 0x22E9, 0x8A4F, 0x22F7, 0x8A50, 0x0D5F, 0x8A51, 0x22F4, 0x8A52,
+ 0x22F2, 0x8A54, 0x0D5D, 0x8A55, 0x0D59, 0x8A56, 0x0D64, 0x8A57, 0x22EE,
+ 0x8A58, 0x22EF, 0x8A59, 0x22EC, 0x8A5B, 0x0D5E, 0x8A5E, 0x0D5A, 0x8A60,
+ 0x0D58, 0x8A61, 0x258D, 0x8A62, 0x0F14, 0x8A63, 0x0F0F, 0x8A66, 0x0F0A,
+ 0x8A68, 0x0F1A, 0x8A69, 0x0F0B, 0x8A6B, 0x0F07, 0x8A6C, 0x0F16, 0x8A6D,
+ 0x0F13, 0x8A6E, 0x0F15, 0x8A70, 0x0F0C, 0x8A71, 0x0F11, 0x8A72, 0x0F08,
+ 0x8A73, 0x0F09, 0x8A74, 0x2595, 0x8A75, 0x2592, 0x8A76, 0x258A, 0x8A77,
+ 0x258F, 0x8A79, 0x0F17, 0x8A7A, 0x2596, 0x8A7B, 0x0F18, 0x8A7C, 0x0F0E,
+ 0x8A7F, 0x258C, 0x8A81, 0x2594, 0x8A82, 0x2590, 0x8A83, 0x2593, 0x8A84,
+ 0x2591, 0x8A85, 0x0F12, 0x8A86, 0x258B, 0x8A87, 0x0F0D, 0x8A8B, 0x2805,
+ 0x8A8C, 0x10A6, 0x8A8D, 0x10A9, 0x8A8F, 0x2807, 0x8A91, 0x10B1, 0x8A92,
+ 0x2806, 0x8A93, 0x10AB, 0x8A95, 0x1216, 0x8A96, 0x2808, 0x8A98, 0x10B0,
+ 0x8A99, 0x2804, 0x8A9A, 0x10B2, 0x8A9E, 0x10A7, 0x8AA0, 0x0F10, 0x8AA1,
+ 0x10AA, 0x8AA3, 0x10A8, 0x8AA4, 0x10AC, 0x8AA5, 0x10AE, 0x8AA6, 0x10A5,
+ 0x8AA7, 0x10B3, 0x8AA8, 0x10AF, 0x8AAA, 0x10AD, 0x8AAB, 0x2803, 0x8AB0,
+ 0x121D, 0x8AB2, 0x1219, 0x8AB6, 0x1220, 0x8AB8, 0x2A44, 0x8AB9, 0x1221,
+ 0x8ABA, 0x2A50, 0x8ABB, 0x2A49, 0x8ABC, 0x1212, 0x8ABD, 0x2A51, 0x8ABE,
+ 0x2A4B, 0x8ABF, 0x121C, 0x8AC0, 0x2A4C, 0x8AC2, 0x121B, 0x8AC3, 0x2A4F,
+ 0x8AC4, 0x1215, 0x8AC5, 0x2A4D, 0x8AC6, 0x2A43, 0x8AC7, 0x1214, 0x8AC8,
+ 0x2C8F, 0x8AC9, 0x121A, 0x8ACB, 0x1217, 0x8ACD, 0x121F, 0x8ACF, 0x2A42,
+ 0x8AD1, 0x2A46, 0x8AD2, 0x1213, 0x8AD3, 0x2A45, 0x8AD4, 0x2A47, 0x8AD5,
+ 0x2A48, 0x8AD6, 0x121E, 0x8AD7, 0x2A4A, 0x8AD8, 0x2A4E, 0x8AD9, 0x2A52,
+ 0x8ADB, 0x1222, 0x8ADC, 0x1352, 0x8ADD, 0x2C8A, 0x8ADE, 0x2C90, 0x8ADF,
+ 0x2C8D, 0x8AE0, 0x2C85, 0x8AE1, 0x2C91, 0x8AE2, 0x2C86, 0x8AE4, 0x2C8C,
+ 0x8AE6, 0x134D, 0x8AE7, 0x1353, 0x8AE8, 0x2C92, 0x8AEB, 0x134F, 0x8AED,
+ 0x1359, 0x8AEE, 0x1354, 0x8AEF, 0x2C94, 0x8AF0, 0x2C8E, 0x8AF1, 0x1350,
+ 0x8AF2, 0x2C87, 0x8AF3, 0x135A, 0x8AF4, 0x2C88, 0x8AF5, 0x2C89, 0x8AF6,
+ 0x135B, 0x8AF7, 0x1358, 0x8AF8, 0x1218, 0x8AFA, 0x134E, 0x8AFB, 0x2C95,
+ 0x8AFC, 0x135C, 0x8AFE, 0x1355, 0x8AFF, 0x2C93, 0x8B00, 0x1351, 0x8B01,
+ 0x1356, 0x8B02, 0x1357, 0x8B04, 0x147E, 0x8B05, 0x2E5F, 0x8B06, 0x2E68,
+ 0x8B07, 0x2E65, 0x8B08, 0x2E67, 0x8B0A, 0x147B, 0x8B0B, 0x2E60, 0x8B0D,
+ 0x2E66, 0x8B0E, 0x1477, 0x8B0F, 0x2E62, 0x8B10, 0x147F, 0x8B11, 0x2E5E,
+ 0x8B12, 0x2E63, 0x8B13, 0x2E6A, 0x8B14, 0x2C8B, 0x8B15, 0x2E64, 0x8B16,
+ 0x2E5D, 0x8B17, 0x1478, 0x8B18, 0x2E5C, 0x8B19, 0x1479, 0x8B1A, 0x2E6B,
+ 0x8B1B, 0x147A, 0x8B1C, 0x2E69, 0x8B1D, 0x147D, 0x8B1E, 0x2E5B, 0x8B20,
+ 0x147C, 0x8B22, 0x2E61, 0x8B23, 0x2FCE, 0x8B24, 0x2FDC, 0x8B25, 0x2FD7,
+ 0x8B26, 0x2FD9, 0x8B27, 0x2FCD, 0x8B28, 0x152A, 0x8B2A, 0x2FCC, 0x8B2B,
+ 0x152D, 0x8B2C, 0x152C, 0x8B2E, 0x2FDB, 0x8B2F, 0x2FD3, 0x8B30, 0x2FD0,
+ 0x8B31, 0x2FD6, 0x8B33, 0x2FCF, 0x8B35, 0x2FD1, 0x8B36, 0x2FDA, 0x8B37,
+ 0x2FD8, 0x8B39, 0x152B, 0x8B3A, 0x2FDF, 0x8B3B, 0x2FDD, 0x8B3C, 0x2FD4,
+ 0x8B3D, 0x2FDE, 0x8B3E, 0x2FD5, 0x8B40, 0x3125, 0x8B41, 0x15C4, 0x8B42,
+ 0x312C, 0x8B45, 0x3313, 0x8B46, 0x15CB, 0x8B47, 0x2FD2, 0x8B48, 0x3123,
+ 0x8B49, 0x15C7, 0x8B4A, 0x3124, 0x8B4B, 0x3129, 0x8B4E, 0x15C9, 0x8B4F,
+ 0x15CA, 0x8B50, 0x3122, 0x8B51, 0x312B, 0x8B52, 0x312D, 0x8B53, 0x3126,
+ 0x8B54, 0x3128, 0x8B55, 0x312A, 0x8B56, 0x3127, 0x8B57, 0x312E, 0x8B58,
+ 0x15C6, 0x8B59, 0x15CC, 0x8B5A, 0x15C8, 0x8B5C, 0x15C5, 0x8B5D, 0x3237,
+ 0x8B5F, 0x1648, 0x8B60, 0x3235, 0x8B63, 0x3239, 0x8B65, 0x323A, 0x8B66,
+ 0x1646, 0x8B67, 0x323B, 0x8B68, 0x3238, 0x8B6A, 0x3236, 0x8B6B, 0x1649,
+ 0x8B6C, 0x1645, 0x8B6D, 0x323C, 0x8B6F, 0x1647, 0x8B70, 0x1644, 0x8B74,
+ 0x168F, 0x8B77, 0x1690, 0x8B78, 0x3312, 0x8B79, 0x3311, 0x8B7A, 0x3314,
+ 0x8B7B, 0x3315, 0x8B7D, 0x1691, 0x8B7E, 0x33B6, 0x8B7F, 0x33BB, 0x8B80,
+ 0x16D8, 0x8B82, 0x33B8, 0x8B84, 0x33B7, 0x8B85, 0x33BA, 0x8B86, 0x33B9,
+ 0x8B88, 0x3440, 0x8B8A, 0x170A, 0x8B8B, 0x343F, 0x8B8C, 0x343D, 0x8B8E,
+ 0x343E, 0x8B92, 0x172C, 0x8B93, 0x172B, 0x8B94, 0x349C, 0x8B95, 0x349D,
+ 0x8B96, 0x172D, 0x8B98, 0x34E7, 0x8B99, 0x34E8, 0x8B9A, 0x1754, 0x8B9C,
+ 0x175A, 0x8B9E, 0x3522, 0x8B9F, 0x353F, 0x8C37, 0x050B, 0x8C39, 0x206B,
+ 0x8C3B, 0x206C, 0x8C3C, 0x2597, 0x8C3D, 0x2809, 0x8C3E, 0x2A53, 0x8C3F,
+ 0x1481, 0x8C41, 0x1480, 0x8C42, 0x2FE0, 0x8C43, 0x312F, 0x8C45, 0x3441,
+ 0x8C46, 0x050C, 0x8C47, 0x1E09, 0x8C48, 0x09C9, 0x8C49, 0x0BA7, 0x8C4A,
+ 0x2599, 0x8C4B, 0x2598, 0x8C4C, 0x1223, 0x8C4D, 0x2A54, 0x8C4E, 0x1224,
+ 0x8C4F, 0x2E6C, 0x8C50, 0x152E, 0x8C54, 0x1763, 0x8C55, 0x050D, 0x8C56,
+ 0x1A48, 0x8C57, 0x1E0A, 0x8C5A, 0x0BA8, 0x8C5C, 0x206D, 0x8C5D, 0x206E,
+ 0x8C5F, 0x22F8, 0x8C61, 0x0D65, 0x8C62, 0x0F1B, 0x8C64, 0x259B, 0x8C65,
+ 0x259A, 0x8C66, 0x259C, 0x8C68, 0x280A, 0x8C69, 0x280B, 0x8C6A, 0x10B4,
+ 0x8C6B, 0x135D, 0x8C6C, 0x1225, 0x8C6D, 0x135E, 0x8C6F, 0x2E70, 0x8C70,
+ 0x2E6D, 0x8C71, 0x2E6F, 0x8C72, 0x2E6E, 0x8C73, 0x1482, 0x8C75, 0x2FE1,
+ 0x8C76, 0x3131, 0x8C77, 0x3130, 0x8C78, 0x18E7, 0x8C79, 0x09CB, 0x8C7A,
+ 0x09CA, 0x8C7B, 0x1E0B, 0x8C7D, 0x206F, 0x8C80, 0x22FA, 0x8C81, 0x22F9,
+ 0x8C82, 0x0D66, 0x8C84, 0x259E, 0x8C85, 0x259F, 0x8C86, 0x259D, 0x8C89,
+ 0x0F1D, 0x8C8A, 0x0F1C, 0x8C8C, 0x10B6, 0x8C8D, 0x10B5, 0x8C8F, 0x2A55,
+ 0x8C90, 0x2C98, 0x8C91, 0x2C96, 0x8C92, 0x2C97, 0x8C93, 0x135F, 0x8C94,
+ 0x2E72, 0x8C95, 0x2E71, 0x8C97, 0x2FE4, 0x8C98, 0x2FE3, 0x8C99, 0x2FE2,
+ 0x8C9A, 0x3132, 0x8C9C, 0x3523, 0x8C9D, 0x050E, 0x8C9E, 0x080A, 0x8CA0,
+ 0x080B, 0x8CA1, 0x09CC, 0x8CA2, 0x09CD, 0x8CA3, 0x1E0D, 0x8CA4, 0x1E0C,
+ 0x8CA5, 0x2070, 0x8CA7, 0x0BAE, 0x8CA8, 0x0BAC, 0x8CA9, 0x0BA9, 0x8CAA,
+ 0x0BAD, 0x8CAB, 0x0BAB, 0x8CAC, 0x0BAA, 0x8CAF, 0x0D67, 0x8CB0, 0x22FD,
+ 0x8CB2, 0x0F22, 0x8CB3, 0x0D69, 0x8CB4, 0x0D6E, 0x8CB5, 0x22FF, 0x8CB6,
+ 0x0D70, 0x8CB7, 0x0D6F, 0x8CB8, 0x0D72, 0x8CB9, 0x22FE, 0x8CBA, 0x22FB,
+ 0x8CBB, 0x0D6C, 0x8CBC, 0x0D68, 0x8CBD, 0x0D6A, 0x8CBE, 0x22FC, 0x8CBF,
+ 0x0D71, 0x8CC0, 0x0D6D, 0x8CC1, 0x0D6B, 0x8CC2, 0x0F24, 0x8CC3, 0x0F23,
+ 0x8CC4, 0x0F21, 0x8CC5, 0x0F25, 0x8CC7, 0x0F1F, 0x8CC8, 0x0F20, 0x8CCA,
+ 0x0F1E, 0x8CCC, 0x25A0, 0x8CCF, 0x280D, 0x8CD1, 0x10B8, 0x8CD2, 0x10B9,
+ 0x8CD3, 0x10B7, 0x8CD5, 0x280C, 0x8CD7, 0x280E, 0x8CD9, 0x2A58, 0x8CDA,
+ 0x2A5A, 0x8CDC, 0x122E, 0x8CDD, 0x2A5B, 0x8CDE, 0x1227, 0x8CDF, 0x2A57,
+ 0x8CE0, 0x1226, 0x8CE1, 0x1230, 0x8CE2, 0x122C, 0x8CE3, 0x122D, 0x8CE4,
+ 0x1229, 0x8CE5, 0x2A56, 0x8CE6, 0x1228, 0x8CE7, 0x2A5C, 0x8CE8, 0x2A59,
+ 0x8CEA, 0x122F, 0x8CEC, 0x122A, 0x8CED, 0x122B, 0x8CEE, 0x2C9A, 0x8CF0,
+ 0x2C9C, 0x8CF1, 0x2C9B, 0x8CF3, 0x2C9D, 0x8CF4, 0x1360, 0x8CF5, 0x2C99,
+ 0x8CF8, 0x1486, 0x8CF9, 0x2E73, 0x8CFA, 0x1483, 0x8CFB, 0x1487, 0x8CFC,
+ 0x1485, 0x8CFD, 0x1484, 0x8CFE, 0x2FE5, 0x8D00, 0x2FE8, 0x8D02, 0x2FE7,
+ 0x8D04, 0x2FE6, 0x8D05, 0x152F, 0x8D06, 0x3133, 0x8D07, 0x3134, 0x8D08,
+ 0x15CD, 0x8D09, 0x3135, 0x8D0A, 0x15CE, 0x8D0D, 0x164B, 0x8D0F, 0x164A,
+ 0x8D10, 0x3316, 0x8D13, 0x1692, 0x8D14, 0x3317, 0x8D15, 0x33BC, 0x8D16,
+ 0x16D9, 0x8D17, 0x16DA, 0x8D19, 0x3442, 0x8D1B, 0x172F, 0x8D64, 0x050F,
+ 0x8D66, 0x0BB0, 0x8D67, 0x0BAF, 0x8D68, 0x25A1, 0x8D69, 0x25A2, 0x8D6B,
+ 0x10BA, 0x8D6C, 0x2C9E, 0x8D6D, 0x1231, 0x8D6E, 0x2C9F, 0x8D6F, 0x2E74,
+ 0x8D70, 0x0510, 0x8D72, 0x1C06, 0x8D73, 0x080D, 0x8D74, 0x080C, 0x8D76,
+ 0x1E0E, 0x8D77, 0x09CE, 0x8D78, 0x1E0F, 0x8D79, 0x2073, 0x8D7B, 0x2072,
+ 0x8D7D, 0x2071, 0x8D80, 0x2301, 0x8D81, 0x0D75, 0x8D84, 0x2300, 0x8D85,
+ 0x0D74, 0x8D89, 0x2302, 0x8D8A, 0x0D73, 0x8D8C, 0x25A4, 0x8D8D, 0x25A7,
+ 0x8D8E, 0x25A5, 0x8D8F, 0x25A6, 0x8D90, 0x25AA, 0x8D91, 0x25A3, 0x8D92,
+ 0x25AB, 0x8D93, 0x25A8, 0x8D94, 0x25A9, 0x8D95, 0x10BC, 0x8D96, 0x280F,
+ 0x8D99, 0x10BB, 0x8D9B, 0x2A60, 0x8D9C, 0x2A5E, 0x8D9F, 0x1232, 0x8DA0,
+ 0x2A5D, 0x8DA1, 0x2A5F, 0x8DA3, 0x1233, 0x8DA5, 0x2CA0, 0x8DA7, 0x2CA1,
+ 0x8DA8, 0x1488, 0x8DAA, 0x3137, 0x8DAB, 0x3139, 0x8DAC, 0x3136, 0x8DAD,
+ 0x3138, 0x8DAE, 0x323D, 0x8DAF, 0x3318, 0x8DB2, 0x3509, 0x8DB3, 0x0511,
+ 0x8DB4, 0x080E, 0x8DB5, 0x1E10, 0x8DB6, 0x1E12, 0x8DB7, 0x1E11, 0x8DB9,
+ 0x2076, 0x8DBA, 0x0BB2, 0x8DBC, 0x2074, 0x8DBE, 0x0BB1, 0x8DBF, 0x2077,
+ 0x8DC1, 0x2078, 0x8DC2, 0x2075, 0x8DC5, 0x230E, 0x8DC6, 0x0D7D, 0x8DC7,
+ 0x2306, 0x8DC8, 0x230C, 0x8DCB, 0x0D78, 0x8DCC, 0x0D7B, 0x8DCD, 0x2305,
+ 0x8DCE, 0x0D76, 0x8DCF, 0x2309, 0x8DD0, 0x25B1, 0x8DD1, 0x0D7A, 0x8DD3,
+ 0x2304, 0x8DD5, 0x230A, 0x8DD6, 0x2307, 0x8DD7, 0x230D, 0x8DD8, 0x2303,
+ 0x8DD9, 0x230B, 0x8DDA, 0x0D79, 0x8DDB, 0x0D7C, 0x8DDC, 0x2308, 0x8DDD,
+ 0x0D77, 0x8DDF, 0x0F27, 0x8DE0, 0x25AD, 0x8DE1, 0x0F26, 0x8DE2, 0x25B4,
+ 0x8DE3, 0x25B3, 0x8DE4, 0x0F2D, 0x8DE6, 0x0F2E, 0x8DE7, 0x25B5, 0x8DE8,
+ 0x0F28, 0x8DE9, 0x25B2, 0x8DEA, 0x0F2C, 0x8DEB, 0x25B7, 0x8DEC, 0x25AE,
+ 0x8DEE, 0x25B0, 0x8DEF, 0x0F29, 0x8DF0, 0x25AC, 0x8DF1, 0x25AF, 0x8DF2,
+ 0x25B6, 0x8DF3, 0x0F2A, 0x8DF4, 0x25B8, 0x8DFA, 0x0F2B, 0x8DFC, 0x10BD,
+ 0x8DFD, 0x2814, 0x8DFE, 0x281A, 0x8DFF, 0x2812, 0x8E00, 0x281B, 0x8E02,
+ 0x2811, 0x8E03, 0x2816, 0x8E04, 0x281C, 0x8E05, 0x2819, 0x8E06, 0x2818,
+ 0x8E07, 0x2817, 0x8E09, 0x2810, 0x8E0A, 0x2815, 0x8E0D, 0x2813, 0x8E0F,
+ 0x1238, 0x8E10, 0x1235, 0x8E11, 0x2A69, 0x8E12, 0x2A6E, 0x8E13, 0x2A70,
+ 0x8E14, 0x2A6D, 0x8E15, 0x2A66, 0x8E16, 0x2A68, 0x8E17, 0x2A72, 0x8E18,
+ 0x2A6F, 0x8E19, 0x2A6A, 0x8E1A, 0x2A73, 0x8E1B, 0x2A67, 0x8E1C, 0x2A71,
+ 0x8E1D, 0x1236, 0x8E1E, 0x123C, 0x8E1F, 0x123A, 0x8E20, 0x2A61, 0x8E21,
+ 0x123B, 0x8E22, 0x1237, 0x8E23, 0x2A62, 0x8E24, 0x2A64, 0x8E25, 0x2A63,
+ 0x8E26, 0x2A6B, 0x8E27, 0x2A6C, 0x8E29, 0x1239, 0x8E2B, 0x1234, 0x8E2E,
+ 0x2A65, 0x8E30, 0x2CAB, 0x8E31, 0x1362, 0x8E33, 0x2CA2, 0x8E34, 0x1363,
+ 0x8E35, 0x1366, 0x8E36, 0x2CA7, 0x8E38, 0x2CA4, 0x8E39, 0x1365, 0x8E3C,
+ 0x2CA8, 0x8E3D, 0x2CA9, 0x8E3E, 0x2CA3, 0x8E3F, 0x2CAC, 0x8E40, 0x2CA5,
+ 0x8E41, 0x2CAA, 0x8E42, 0x1364, 0x8E44, 0x1361, 0x8E45, 0x2CA6, 0x8E47,
+ 0x2E7A, 0x8E48, 0x148B, 0x8E49, 0x1489, 0x8E4A, 0x148C, 0x8E4B, 0x148A,
+ 0x8E4C, 0x2E79, 0x8E4D, 0x2E76, 0x8E4E, 0x2E75, 0x8E50, 0x2E78, 0x8E53,
+ 0x2E77, 0x8E54, 0x2FF6, 0x8E55, 0x1535, 0x8E56, 0x2FED, 0x8E57, 0x2FEC,
+ 0x8E59, 0x1530, 0x8E5A, 0x2FF2, 0x8E5B, 0x2FF1, 0x8E5C, 0x2FE9, 0x8E5D,
+ 0x2FF4, 0x8E5E, 0x2FEE, 0x8E5F, 0x1534, 0x8E60, 0x2FEB, 0x8E61, 0x2FF3,
+ 0x8E62, 0x2FEA, 0x8E63, 0x1531, 0x8E64, 0x1533, 0x8E65, 0x2FEF, 0x8E66,
+ 0x1532, 0x8E67, 0x2FF0, 0x8E69, 0x2FF5, 0x8E6A, 0x313D, 0x8E6C, 0x15D3,
+ 0x8E6D, 0x313A, 0x8E6F, 0x313E, 0x8E72, 0x15D0, 0x8E73, 0x313C, 0x8E74,
+ 0x15D5, 0x8E76, 0x15D2, 0x8E78, 0x313B, 0x8E7A, 0x15D4, 0x8E7B, 0x313F,
+ 0x8E7C, 0x15CF, 0x8E81, 0x164D, 0x8E82, 0x164F, 0x8E84, 0x3240, 0x8E85,
+ 0x164E, 0x8E86, 0x323E, 0x8E87, 0x15D1, 0x8E88, 0x323F, 0x8E89, 0x164C,
+ 0x8E8A, 0x1693, 0x8E8B, 0x1695, 0x8E8C, 0x331A, 0x8E8D, 0x1694, 0x8E8E,
+ 0x3319, 0x8E90, 0x33C1, 0x8E91, 0x16DB, 0x8E92, 0x33C0, 0x8E93, 0x16DC,
+ 0x8E94, 0x33BE, 0x8E95, 0x33BD, 0x8E96, 0x33C2, 0x8E97, 0x33C3, 0x8E98,
+ 0x3443, 0x8E9A, 0x33BF, 0x8E9D, 0x34A1, 0x8E9E, 0x349E, 0x8E9F, 0x349F,
+ 0x8EA0, 0x34A0, 0x8EA1, 0x1749, 0x8EA3, 0x34EB, 0x8EA4, 0x34EA, 0x8EA5,
+ 0x34E9, 0x8EA6, 0x350A, 0x8EA8, 0x3537, 0x8EA9, 0x3524, 0x8EAA, 0x175B,
+ 0x8EAB, 0x0512, 0x8EAC, 0x09CF, 0x8EB2, 0x0F2F, 0x8EBA, 0x123D, 0x8EBD,
+ 0x2CAD, 0x8EC0, 0x1536, 0x8EC2, 0x3140, 0x8EC9, 0x3525, 0x8ECA, 0x0513,
+ 0x8ECB, 0x068D, 0x8ECC, 0x0810, 0x8ECD, 0x080F, 0x8ECF, 0x09D2, 0x8ED1,
+ 0x1E13, 0x8ED2, 0x09D0, 0x8ED3, 0x1E14, 0x8ED4, 0x09D1, 0x8ED7, 0x207D,
+ 0x8ED8, 0x2079, 0x8EDB, 0x0BB3, 0x8EDC, 0x207C, 0x8EDD, 0x207B, 0x8EDE,
+ 0x207A, 0x8EDF, 0x0BB4, 0x8EE0, 0x207E, 0x8EE1, 0x207F, 0x8EE5, 0x2315,
+ 0x8EE6, 0x2313, 0x8EE7, 0x2317, 0x8EE8, 0x2318, 0x8EE9, 0x231E, 0x8EEB,
+ 0x231A, 0x8EEC, 0x231C, 0x8EEE, 0x2314, 0x8EEF, 0x230F, 0x8EF1, 0x231B,
+ 0x8EF4, 0x231D, 0x8EF5, 0x2316, 0x8EF6, 0x2319, 0x8EF7, 0x2310, 0x8EF8,
+ 0x0D7F, 0x8EF9, 0x2312, 0x8EFA, 0x2311, 0x8EFB, 0x0D7E, 0x8EFC, 0x0D80,
+ 0x8EFE, 0x0F32, 0x8EFF, 0x25BA, 0x8F00, 0x25BC, 0x8F01, 0x25BB, 0x8F02,
+ 0x25C0, 0x8F03, 0x0F30, 0x8F05, 0x25BD, 0x8F06, 0x25B9, 0x8F07, 0x25BE,
+ 0x8F08, 0x25BF, 0x8F09, 0x0F31, 0x8F0A, 0x0F33, 0x8F0B, 0x25C1, 0x8F0D,
+ 0x2820, 0x8F0E, 0x281F, 0x8F10, 0x281D, 0x8F11, 0x281E, 0x8F12, 0x10BF,
+ 0x8F13, 0x10C1, 0x8F14, 0x10BE, 0x8F15, 0x10C0, 0x8F16, 0x2A7A, 0x8F17,
+ 0x2A7B, 0x8F18, 0x2A76, 0x8F1A, 0x2A77, 0x8F1B, 0x123F, 0x8F1C, 0x1244,
+ 0x8F1D, 0x123E, 0x8F1E, 0x1245, 0x8F1F, 0x1240, 0x8F20, 0x2A78, 0x8F23,
+ 0x2A79, 0x8F24, 0x2A75, 0x8F25, 0x1246, 0x8F26, 0x1242, 0x8F29, 0x1241,
+ 0x8F2A, 0x1243, 0x8F2C, 0x2A74, 0x8F2E, 0x2CAF, 0x8F2F, 0x1368, 0x8F32,
+ 0x2CB1, 0x8F33, 0x136A, 0x8F34, 0x2CB4, 0x8F35, 0x2CB0, 0x8F36, 0x2CAE,
+ 0x8F37, 0x2CB3, 0x8F38, 0x1369, 0x8F39, 0x2CB2, 0x8F3B, 0x1367, 0x8F3E,
+ 0x148E, 0x8F3F, 0x1491, 0x8F40, 0x2E7C, 0x8F42, 0x148F, 0x8F43, 0x2E7B,
+ 0x8F44, 0x148D, 0x8F45, 0x1490, 0x8F46, 0x2FF7, 0x8F47, 0x2FF8, 0x8F48,
+ 0x2FF9, 0x8F49, 0x1537, 0x8F4B, 0x2FFA, 0x8F4D, 0x1538, 0x8F4E, 0x15D7,
+ 0x8F4F, 0x3143, 0x8F50, 0x3144, 0x8F51, 0x3142, 0x8F52, 0x3141, 0x8F53,
+ 0x3145, 0x8F54, 0x15D6, 0x8F55, 0x3244, 0x8F56, 0x3242, 0x8F57, 0x3243,
+ 0x8F58, 0x3245, 0x8F59, 0x3241, 0x8F5A, 0x3246, 0x8F5B, 0x331C, 0x8F5D,
+ 0x331D, 0x8F5E, 0x331B, 0x8F5F, 0x1696, 0x8F60, 0x33C4, 0x8F61, 0x16DD,
+ 0x8F62, 0x33C5, 0x8F63, 0x3445, 0x8F64, 0x3444, 0x8F9B, 0x0514, 0x8F9C,
+ 0x0D81, 0x8F9F, 0x0F34, 0x8FA3, 0x10C2, 0x8FA6, 0x136C, 0x8FA8, 0x136B,
+ 0x8FAD, 0x15D8, 0x8FAE, 0x162F, 0x8FAF, 0x1697, 0x8FB0, 0x0515, 0x8FB1,
+ 0x09D3, 0x8FB2, 0x0F35, 0x8FB4, 0x3146, 0x8FB5, 0x0230, 0x8FBF, 0x18E9,
+ 0x8FC2, 0x0516, 0x8FC4, 0x0519, 0x8FC5, 0x0518, 0x8FC6, 0x0517, 0x8FC9,
+ 0x18E8, 0x8FCB, 0x1A4A, 0x8FCD, 0x1A4C, 0x8FCE, 0x068E, 0x8FD1, 0x0690,
+ 0x8FD2, 0x1A49, 0x8FD3, 0x1A4B, 0x8FD4, 0x068F, 0x8FD5, 0x1A4E, 0x8FD6,
+ 0x1A4D, 0x8FD7, 0x1A4F, 0x8FE0, 0x1C0A, 0x8FE1, 0x1C08, 0x8FE2, 0x0813,
+ 0x8FE3, 0x1C07, 0x8FE4, 0x0818, 0x8FE5, 0x0815, 0x8FE6, 0x0812, 0x8FE8,
+ 0x0819, 0x8FEA, 0x0814, 0x8FEB, 0x0817, 0x8FED, 0x0816, 0x8FEE, 0x1C09,
+ 0x8FF0, 0x0811, 0x8FF4, 0x09D9, 0x8FF5, 0x1E16, 0x8FF6, 0x1E1C, 0x8FF7,
+ 0x09D6, 0x8FF8, 0x09DD, 0x8FFA, 0x09D8, 0x8FFB, 0x1E19, 0x8FFC, 0x1E1B,
+ 0x8FFD, 0x09DB, 0x8FFE, 0x1E15, 0x8FFF, 0x1E18, 0x9000, 0x09D7, 0x9001,
+ 0x09D4, 0x9002, 0x1E17, 0x9003, 0x09DA, 0x9004, 0x1E1A, 0x9005, 0x09DC,
+ 0x9006, 0x09D5, 0x900B, 0x2081, 0x900C, 0x2084, 0x900D, 0x0BB6, 0x900F,
+ 0x0BC0, 0x9010, 0x0BBC, 0x9011, 0x2082, 0x9014, 0x0BC4, 0x9015, 0x0BBD,
+ 0x9016, 0x0BC2, 0x9017, 0x0BB8, 0x9019, 0x0BB5, 0x901A, 0x0BB7, 0x901B,
+ 0x0BC3, 0x901C, 0x2083, 0x901D, 0x0BBB, 0x901E, 0x0BBE, 0x901F, 0x0BBA,
+ 0x9020, 0x0BBF, 0x9021, 0x2085, 0x9022, 0x0BC1, 0x9023, 0x0BB9, 0x9024,
+ 0x2080, 0x902D, 0x231F, 0x902E, 0x0D82, 0x902F, 0x2321, 0x9031, 0x0D84,
+ 0x9032, 0x0D86, 0x9034, 0x2320, 0x9035, 0x0D83, 0x9036, 0x0D87, 0x9038,
+ 0x0D85, 0x903C, 0x0F3B, 0x903D, 0x25C6, 0x903E, 0x0F43, 0x903F, 0x25C3,
+ 0x9041, 0x0F44, 0x9042, 0x0F39, 0x9044, 0x25C4, 0x9047, 0x0F3E, 0x9049,
+ 0x25C5, 0x904A, 0x0F37, 0x904B, 0x0F36, 0x904D, 0x0F41, 0x904E, 0x0F40,
+ 0x904F, 0x0F3F, 0x9050, 0x0F3D, 0x9051, 0x0F42, 0x9052, 0x25C2, 0x9053,
+ 0x0F38, 0x9054, 0x0F3A, 0x9055, 0x0F3C, 0x9058, 0x10C4, 0x9059, 0x10C7,
+ 0x905B, 0x10CB, 0x905C, 0x10C5, 0x905D, 0x10CA, 0x905E, 0x10C8, 0x9060,
+ 0x10C3, 0x9062, 0x10C9, 0x9063, 0x10C6, 0x9067, 0x2A7F, 0x9068, 0x1249,
+ 0x9069, 0x1247, 0x906B, 0x2A80, 0x906D, 0x124A, 0x906E, 0x1248, 0x906F,
+ 0x2A7E, 0x9070, 0x2A7D, 0x9072, 0x1370, 0x9073, 0x2A7C, 0x9074, 0x136E,
+ 0x9075, 0x136D, 0x9076, 0x2CB5, 0x9077, 0x124B, 0x9078, 0x136F, 0x9079,
+ 0x2CB6, 0x907A, 0x1372, 0x907B, 0x2CB7, 0x907C, 0x1371, 0x907D, 0x1493,
+ 0x907E, 0x2E7E, 0x907F, 0x1492, 0x9080, 0x1497, 0x9081, 0x1495, 0x9082,
+ 0x1496, 0x9083, 0x153A, 0x9084, 0x1494, 0x9085, 0x2E7D, 0x9086, 0x2CB8,
+ 0x9087, 0x1539, 0x9088, 0x153B, 0x908A, 0x15D9, 0x908B, 0x15DA, 0x908D,
+ 0x3247, 0x908F, 0x170C, 0x9090, 0x170B, 0x9091, 0x051B, 0x9094, 0x181E,
+ 0x9095, 0x09DE, 0x9097, 0x181B, 0x9098, 0x181C, 0x9099, 0x181A, 0x909B,
+ 0x181D, 0x909E, 0x18ED, 0x909F, 0x18EA, 0x90A0, 0x18EF, 0x90A1, 0x18EB,
+ 0x90A2, 0x051C, 0x90A3, 0x051F, 0x90A5, 0x18EC, 0x90A6, 0x051E, 0x90A7,
+ 0x18EE, 0x90AA, 0x051D, 0x90AF, 0x1A52, 0x90B0, 0x1A54, 0x90B1, 0x0693,
+ 0x90B2, 0x1A50, 0x90B3, 0x1A53, 0x90B4, 0x1A51, 0x90B5, 0x0691, 0x90B6,
+ 0x0694, 0x90B8, 0x0692, 0x90BD, 0x1C0C, 0x90BE, 0x1C10, 0x90BF, 0x1C0D,
+ 0x90C1, 0x081C, 0x90C3, 0x081D, 0x90C5, 0x1C0F, 0x90C7, 0x1C11, 0x90C8,
+ 0x1C13, 0x90CA, 0x081A, 0x90CB, 0x1C12, 0x90CE, 0x081B, 0x90D4, 0x208C,
+ 0x90D5, 0x1C0E, 0x90D6, 0x1E1D, 0x90D7, 0x1E26, 0x90D8, 0x1E24, 0x90D9,
+ 0x1E1F, 0x90DA, 0x1E20, 0x90DB, 0x1E25, 0x90DC, 0x1E27, 0x90DD, 0x09E0,
+ 0x90DF, 0x1E22, 0x90E0, 0x1E1E, 0x90E1, 0x09DF, 0x90E2, 0x09E1, 0x90E3,
+ 0x1E21, 0x90E4, 0x1E28, 0x90E5, 0x1E23, 0x90E8, 0x0BC5, 0x90E9, 0x208F,
+ 0x90EA, 0x2087, 0x90EB, 0x208D, 0x90EC, 0x208E, 0x90ED, 0x0BC6, 0x90EF,
+ 0x2086, 0x90F0, 0x2088, 0x90F1, 0x1C0B, 0x90F2, 0x208A, 0x90F3, 0x208B,
+ 0x90F4, 0x2089, 0x90F5, 0x0D89, 0x90F9, 0x2328, 0x90FA, 0x2CB9, 0x90FB,
+ 0x2329, 0x90FC, 0x2326, 0x90FD, 0x0BC7, 0x90FE, 0x0D8B, 0x90FF, 0x2325,
+ 0x9100, 0x232B, 0x9101, 0x232A, 0x9102, 0x0D88, 0x9103, 0x232E, 0x9104,
+ 0x2324, 0x9105, 0x232D, 0x9106, 0x2322, 0x9107, 0x232C, 0x9108, 0x2327,
+ 0x9109, 0x0D8A, 0x910B, 0x25CD, 0x910D, 0x25C8, 0x910E, 0x25CE, 0x910F,
+ 0x25C9, 0x9110, 0x25C7, 0x9111, 0x25CA, 0x9112, 0x0F45, 0x9114, 0x25CC,
+ 0x9116, 0x25CB, 0x9117, 0x0F46, 0x9118, 0x10CD, 0x9119, 0x10CC, 0x911A,
+ 0x2827, 0x911B, 0x282A, 0x911C, 0x2822, 0x911D, 0x2826, 0x911E, 0x10CE,
+ 0x911F, 0x2825, 0x9120, 0x2823, 0x9121, 0x2829, 0x9122, 0x2824, 0x9123,
+ 0x2821, 0x9124, 0x2828, 0x9126, 0x2A86, 0x9127, 0x124E, 0x9128, 0x2FFB,
+ 0x9129, 0x2A83, 0x912A, 0x2A84, 0x912B, 0x2A82, 0x912C, 0x2323, 0x912D,
+ 0x124D, 0x912E, 0x2A87, 0x912F, 0x2A81, 0x9130, 0x124C, 0x9131, 0x124F,
+ 0x9132, 0x2A85, 0x9133, 0x2CBA, 0x9134, 0x1373, 0x9135, 0x2CBB, 0x9136,
+ 0x2CBC, 0x9138, 0x2E7F, 0x9139, 0x1498, 0x913A, 0x2FFC, 0x913B, 0x2FFD,
+ 0x913E, 0x2FFE, 0x913F, 0x3148, 0x9140, 0x3147, 0x9141, 0x3249, 0x9143,
+ 0x3248, 0x9144, 0x331F, 0x9145, 0x3320, 0x9146, 0x331E, 0x9147, 0x33C6,
+ 0x9148, 0x16DE, 0x9149, 0x0520, 0x914A, 0x081F, 0x914B, 0x081E, 0x914C,
+ 0x09E4, 0x914D, 0x09E3, 0x914E, 0x1E2A, 0x914F, 0x1E2B, 0x9150, 0x1E29,
+ 0x9152, 0x09E2, 0x9153, 0x2093, 0x9155, 0x2094, 0x9156, 0x2090, 0x9157,
+ 0x0BC8, 0x9158, 0x2091, 0x915A, 0x2092, 0x915F, 0x2331, 0x9160, 0x2333,
+ 0x9161, 0x232F, 0x9162, 0x2332, 0x9163, 0x0D8C, 0x9164, 0x2330, 0x9165,
+ 0x0D8D, 0x9168, 0x23E2, 0x9169, 0x0F49, 0x916A, 0x0F48, 0x916C, 0x0F47,
+ 0x916E, 0x25CF, 0x916F, 0x25D0, 0x9172, 0x282C, 0x9173, 0x282E, 0x9174,
+ 0x10D2, 0x9175, 0x10CF, 0x9177, 0x10D1, 0x9178, 0x10D0, 0x9179, 0x282D,
+ 0x917A, 0x282B, 0x9180, 0x2A8E, 0x9181, 0x2A8B, 0x9182, 0x2A8C, 0x9183,
+ 0x1253, 0x9184, 0x2A8D, 0x9185, 0x2A88, 0x9186, 0x2A89, 0x9187, 0x1250,
+ 0x9189, 0x1251, 0x918A, 0x2A8A, 0x918B, 0x1252, 0x918D, 0x2CC0, 0x918F,
+ 0x2CC1, 0x9190, 0x2CBE, 0x9191, 0x2CBF, 0x9192, 0x1374, 0x9193, 0x2CBD,
+ 0x9199, 0x2E83, 0x919A, 0x2E80, 0x919B, 0x2E82, 0x919C, 0x149B, 0x919D,
+ 0x2E86, 0x919E, 0x149A, 0x919F, 0x2E84, 0x91A0, 0x2E87, 0x91A1, 0x2E85,
+ 0x91A2, 0x2E81, 0x91A3, 0x1499, 0x91A5, 0x3000, 0x91A7, 0x3001, 0x91A8,
+ 0x2FFF, 0x91AA, 0x3003, 0x91AB, 0x153C, 0x91AC, 0x153D, 0x91AD, 0x314A,
+ 0x91AE, 0x15DC, 0x91AF, 0x3002, 0x91B0, 0x3149, 0x91B1, 0x15DB, 0x91B2,
+ 0x324C, 0x91B3, 0x324D, 0x91B4, 0x1650, 0x91B5, 0x324B, 0x91B7, 0x324A,
+ 0x91B9, 0x3321, 0x91BA, 0x1698, 0x91BC, 0x3446, 0x91BD, 0x34A3, 0x91BE,
+ 0x34A2, 0x91C0, 0x1730, 0x91C1, 0x174A, 0x91C2, 0x34A4, 0x91C3, 0x350B,
+ 0x91C5, 0x175C, 0x91C6, 0x0521, 0x91C7, 0x0695, 0x91C9, 0x0F4A, 0x91CB,
+ 0x1651, 0x91CC, 0x0522, 0x91CD, 0x0820, 0x91CE, 0x0BC9, 0x91CF, 0x0D8E,
+ 0x91D0, 0x153E, 0x91D1, 0x0696, 0x91D3, 0x1C15, 0x91D4, 0x1C14, 0x91D5,
+ 0x1E2C, 0x91D7, 0x09E7, 0x91D8, 0x09E5, 0x91D9, 0x09E9, 0x91DA, 0x1E2E,
+ 0x91DC, 0x09E8, 0x91DD, 0x09E6, 0x91E2, 0x1E2D, 0x91E3, 0x0BCC, 0x91E4,
+ 0x209A, 0x91E6, 0x0BCB, 0x91E7, 0x0BCD, 0x91E8, 0x209F, 0x91E9, 0x0BCF,
+ 0x91EA, 0x209C, 0x91EB, 0x209D, 0x91EC, 0x2095, 0x91ED, 0x0BCE, 0x91EE,
+ 0x20A0, 0x91F1, 0x2097, 0x91F3, 0x2098, 0x91F4, 0x2096, 0x91F5, 0x0BCA,
+ 0x91F7, 0x209E, 0x91F8, 0x2099, 0x91F9, 0x209B, 0x91FD, 0x233F, 0x91FF,
+ 0x233E, 0x9200, 0x233C, 0x9201, 0x2334, 0x9202, 0x2343, 0x9203, 0x2337,
+ 0x9204, 0x2341, 0x9205, 0x2348, 0x9206, 0x2340, 0x9207, 0x0D96, 0x9209,
+ 0x0D92, 0x920A, 0x2335, 0x920C, 0x233B, 0x920D, 0x0D94, 0x920F, 0x233A,
+ 0x9210, 0x0D95, 0x9211, 0x0D97, 0x9212, 0x233D, 0x9214, 0x0D8F, 0x9215,
+ 0x0D90, 0x9216, 0x2349, 0x9217, 0x2347, 0x9219, 0x2346, 0x921A, 0x2338,
+ 0x921C, 0x2344, 0x921E, 0x0D93, 0x9223, 0x0D91, 0x9224, 0x2345, 0x9225,
+ 0x2336, 0x9226, 0x2339, 0x9227, 0x2342, 0x922D, 0x2851, 0x922E, 0x25DA,
+ 0x9230, 0x25D3, 0x9231, 0x25E6, 0x9232, 0x25EF, 0x9233, 0x25D6, 0x9234,
+ 0x0F55, 0x9236, 0x25E3, 0x9237, 0x0F4B, 0x9238, 0x0F4D, 0x9239, 0x0F59,
+ 0x923A, 0x25D4, 0x923D, 0x0F4E, 0x923E, 0x0F50, 0x923F, 0x0F5A, 0x9240,
+ 0x0F4F, 0x9245, 0x0F58, 0x9246, 0x25DC, 0x9248, 0x25D1, 0x9249, 0x0F56,
+ 0x924A, 0x25DB, 0x924B, 0x0F52, 0x924C, 0x25ED, 0x924D, 0x0F57, 0x924E,
+ 0x25EB, 0x924F, 0x25DF, 0x9250, 0x25E9, 0x9251, 0x0F54, 0x9252, 0x25D2,
+ 0x9253, 0x25EC, 0x9254, 0x25E7, 0x9256, 0x25EE, 0x9257, 0x0F4C, 0x925A,
+ 0x0F5B, 0x925B, 0x0F51, 0x925E, 0x25D8, 0x9260, 0x25E0, 0x9261, 0x25E4,
+ 0x9263, 0x25E8, 0x9264, 0x0F53, 0x9265, 0x25D7, 0x9266, 0x25D5, 0x9267,
+ 0x25E1, 0x926C, 0x25DE, 0x926D, 0x25DD, 0x926F, 0x25E2, 0x9270, 0x25E5,
+ 0x9272, 0x25EA, 0x9276, 0x2831, 0x9278, 0x10D3, 0x9279, 0x283B, 0x927A,
+ 0x2833, 0x927B, 0x10D9, 0x927C, 0x10DD, 0x927D, 0x2844, 0x927E, 0x284C,
+ 0x927F, 0x283D, 0x9280, 0x10D5, 0x9282, 0x2841, 0x9283, 0x25D9, 0x9285,
+ 0x10D6, 0x9286, 0x2848, 0x9287, 0x284D, 0x9288, 0x2845, 0x928A, 0x2847,
+ 0x928B, 0x2850, 0x928C, 0x2849, 0x928D, 0x2837, 0x928E, 0x2840, 0x9291,
+ 0x10DE, 0x9293, 0x10DA, 0x9294, 0x2835, 0x9295, 0x2842, 0x9296, 0x10D8,
+ 0x9297, 0x283C, 0x9298, 0x10D7, 0x9299, 0x284A, 0x929A, 0x2839, 0x929B,
+ 0x2832, 0x929C, 0x10DB, 0x929D, 0x284F, 0x92A0, 0x2834, 0x92A1, 0x2846,
+ 0x92A2, 0x2843, 0x92A3, 0x283E, 0x92A4, 0x2830, 0x92A5, 0x282F, 0x92A6,
+ 0x2838, 0x92A7, 0x284B, 0x92A8, 0x10DC, 0x92A9, 0x284E, 0x92AA, 0x2836,
+ 0x92AB, 0x283A, 0x92AC, 0x10D4, 0x92B2, 0x125F, 0x92B3, 0x125A, 0x92B4,
+ 0x2AB0, 0x92B5, 0x2AAC, 0x92B6, 0x2A94, 0x92B7, 0x1256, 0x92B9, 0x36E9,
+ 0x92BB, 0x1255, 0x92BC, 0x125B, 0x92C0, 0x2A92, 0x92C1, 0x1259, 0x92C2,
+ 0x2A9E, 0x92C3, 0x2A90, 0x92C4, 0x2A91, 0x92C5, 0x1254, 0x92C6, 0x2AAF,
+ 0x92C7, 0x125D, 0x92C8, 0x2AA1, 0x92C9, 0x2AA6, 0x92CA, 0x2AA0, 0x92CB,
+ 0x2CD3, 0x92CC, 0x2A9C, 0x92CD, 0x2AA4, 0x92CE, 0x2AA2, 0x92CF, 0x2A95,
+ 0x92D0, 0x2A8F, 0x92D1, 0x2AAA, 0x92D2, 0x125C, 0x92D3, 0x2AAB, 0x92D5,
+ 0x2AA5, 0x92D7, 0x2A9A, 0x92D8, 0x2A98, 0x92D9, 0x2A93, 0x92DD, 0x2A9B,
+ 0x92DE, 0x2AA8, 0x92DF, 0x2A97, 0x92E0, 0x2AA7, 0x92E1, 0x2AAD, 0x92E4,
+ 0x1258, 0x92E6, 0x2AA3, 0x92E7, 0x2AA9, 0x92E8, 0x2A9F, 0x92E9, 0x2A99,
+ 0x92EA, 0x1257, 0x92EE, 0x283F, 0x92EF, 0x2A9D, 0x92F0, 0x125E, 0x92F1,
+ 0x2A96, 0x92F7, 0x2CD8, 0x92F8, 0x1377, 0x92F9, 0x2CD7, 0x92FA, 0x2CD5,
+ 0x92FB, 0x2CE7, 0x92FC, 0x137B, 0x92FE, 0x2CE4, 0x92FF, 0x2CDC, 0x9300,
+ 0x2CE6, 0x9301, 0x2CCE, 0x9302, 0x2CDA, 0x9304, 0x137D, 0x9306, 0x2CC6,
+ 0x9308, 0x2CC4, 0x9309, 0x2CE5, 0x930B, 0x2CE3, 0x930C, 0x2CE2, 0x930D,
+ 0x2CD2, 0x930E, 0x2CD1, 0x930F, 0x2CC7, 0x9310, 0x137F, 0x9312, 0x2CCD,
+ 0x9313, 0x2CD6, 0x9314, 0x2CE1, 0x9315, 0x1382, 0x9316, 0x2CE8, 0x9318,
+ 0x14A3, 0x9319, 0x1384, 0x931A, 0x137E, 0x931B, 0x2CCB, 0x931D, 0x2CD4,
+ 0x931E, 0x2CC3, 0x931F, 0x2CC5, 0x9320, 0x1375, 0x9321, 0x1381, 0x9322,
+ 0x137A, 0x9323, 0x2CCC, 0x9324, 0x2CDB, 0x9325, 0x2AAE, 0x9326, 0x1380,
+ 0x9327, 0x2CC2, 0x9328, 0x149E, 0x9329, 0x2CDD, 0x932A, 0x2CE0, 0x932B,
+ 0x137C, 0x932D, 0x2CD0, 0x932E, 0x1383, 0x932F, 0x1379, 0x9333, 0x1378,
+ 0x9334, 0x2CD9, 0x9335, 0x2CDF, 0x9336, 0x1376, 0x9338, 0x2CC9, 0x9339,
+ 0x2CDE, 0x933C, 0x2CCA, 0x9346, 0x2CCF, 0x9347, 0x2E8D, 0x9349, 0x2E92,
+ 0x934A, 0x14A0, 0x934B, 0x14A2, 0x934C, 0x2E98, 0x934D, 0x149C, 0x934E,
+ 0x2EA6, 0x934F, 0x2E9E, 0x9350, 0x2E93, 0x9351, 0x2E94, 0x9352, 0x2E9D,
+ 0x9354, 0x14A9, 0x9355, 0x2E9C, 0x9356, 0x2E8C, 0x9357, 0x2E9B, 0x9358,
+ 0x2E8F, 0x9359, 0x2EA7, 0x935A, 0x14A8, 0x935B, 0x14A6, 0x935C, 0x2E90,
+ 0x935E, 0x2EA3, 0x9360, 0x2E95, 0x9361, 0x2EA2, 0x9363, 0x2EA4, 0x9364,
+ 0x2E8B, 0x9365, 0x14A1, 0x9367, 0x2EA5, 0x936A, 0x2E99, 0x936C, 0x14A5,
+ 0x936D, 0x2E96, 0x9370, 0x14A7, 0x9371, 0x2E9F, 0x9375, 0x149F, 0x9376,
+ 0x2E91, 0x9377, 0x2EA0, 0x9379, 0x2E9A, 0x937A, 0x2CC8, 0x937B, 0x2EA1,
+ 0x937C, 0x2E8E, 0x937E, 0x14A4, 0x9380, 0x3014, 0x9382, 0x149D, 0x9383,
+ 0x2E89, 0x9388, 0x3011, 0x9389, 0x300A, 0x938A, 0x1540, 0x938C, 0x3005,
+ 0x938D, 0x3015, 0x938E, 0x300C, 0x938F, 0x2E97, 0x9391, 0x3017, 0x9392,
+ 0x3006, 0x9394, 0x153F, 0x9395, 0x3010, 0x9396, 0x1541, 0x9397, 0x1549,
+ 0x9398, 0x1547, 0x9399, 0x3012, 0x939A, 0x1548, 0x939B, 0x3008, 0x939D,
+ 0x3009, 0x939E, 0x300E, 0x939F, 0x3013, 0x93A1, 0x2E88, 0x93A2, 0x1542,
+ 0x93A3, 0x301C, 0x93A4, 0x3019, 0x93A5, 0x3160, 0x93A6, 0x300F, 0x93A7,
+ 0x300B, 0x93A8, 0x301A, 0x93A9, 0x3155, 0x93AA, 0x300D, 0x93AC, 0x1545,
+ 0x93AE, 0x1544, 0x93AF, 0x2E8A, 0x93B0, 0x1546, 0x93B1, 0x3016, 0x93B2,
+ 0x3018, 0x93B3, 0x1543, 0x93B4, 0x301B, 0x93B5, 0x3004, 0x93B7, 0x3007,
+ 0x93C0, 0x315E, 0x93C2, 0x314E, 0x93C3, 0x15E0, 0x93C4, 0x315C, 0x93C7,
+ 0x314C, 0x93C8, 0x15E1, 0x93CA, 0x3157, 0x93CC, 0x3153, 0x93CD, 0x15E6,
+ 0x93CE, 0x315D, 0x93CF, 0x314D, 0x93D0, 0x3150, 0x93D1, 0x15DE, 0x93D2,
+ 0x315F, 0x93D4, 0x3158, 0x93D5, 0x315B, 0x93D6, 0x15E4, 0x93D7, 0x15E9,
+ 0x93D8, 0x15E7, 0x93D9, 0x3154, 0x93DA, 0x314F, 0x93DC, 0x15E2, 0x93DD,
+ 0x15E3, 0x93DE, 0x314B, 0x93DF, 0x15DF, 0x93E1, 0x15DD, 0x93E2, 0x15E5,
+ 0x93E3, 0x315A, 0x93E4, 0x15E8, 0x93E6, 0x3156, 0x93E7, 0x3161, 0x93E8,
+ 0x15EA, 0x93EC, 0x3152, 0x93EE, 0x3159, 0x93F5, 0x325A, 0x93F6, 0x3269,
+ 0x93F7, 0x325C, 0x93F8, 0x3263, 0x93F9, 0x3151, 0x93FA, 0x3261, 0x93FB,
+ 0x3250, 0x93FC, 0x3267, 0x93FD, 0x1654, 0x93FE, 0x3254, 0x93FF, 0x3266,
+ 0x9400, 0x325B, 0x9403, 0x1653, 0x9406, 0x326B, 0x9407, 0x325D, 0x9409,
+ 0x3262, 0x940A, 0x3265, 0x940B, 0x324E, 0x940C, 0x3268, 0x940D, 0x3259,
+ 0x940E, 0x325E, 0x940F, 0x3252, 0x9410, 0x3256, 0x9411, 0x326A, 0x9412,
+ 0x3260, 0x9413, 0x324F, 0x9414, 0x3253, 0x9415, 0x3255, 0x9416, 0x325F,
+ 0x9418, 0x1652, 0x9419, 0x3258, 0x9420, 0x3251, 0x9428, 0x3257, 0x9429,
+ 0x3325, 0x942A, 0x3329, 0x942B, 0x169F, 0x942C, 0x332B, 0x942E, 0x1699,
+ 0x9430, 0x3327, 0x9431, 0x332D, 0x9432, 0x169E, 0x9433, 0x169A, 0x9435,
+ 0x169B, 0x9436, 0x3324, 0x9437, 0x332A, 0x9438, 0x169D, 0x9439, 0x3328,
+ 0x943A, 0x169C, 0x943B, 0x3323, 0x943C, 0x3264, 0x943D, 0x3326, 0x943F,
+ 0x3322, 0x9440, 0x332C, 0x9444, 0x16DF, 0x9445, 0x33CD, 0x9446, 0x33D0,
+ 0x9447, 0x33CC, 0x9448, 0x33CE, 0x9449, 0x33CF, 0x944A, 0x33C9, 0x944B,
+ 0x33CA, 0x944C, 0x33C7, 0x944F, 0x33CB, 0x9450, 0x33C8, 0x9451, 0x16E0,
+ 0x9452, 0x16E1, 0x9455, 0x3448, 0x9457, 0x344A, 0x945D, 0x3449, 0x945E,
+ 0x344B, 0x9460, 0x170E, 0x9462, 0x3447, 0x9463, 0x170D, 0x9464, 0x170F,
+ 0x9468, 0x34A6, 0x9469, 0x34A7, 0x946A, 0x1731, 0x946B, 0x34A5, 0x946D,
+ 0x34ED, 0x946E, 0x34EC, 0x946F, 0x34EE, 0x9470, 0x174C, 0x9471, 0x34EF,
+ 0x9472, 0x174B, 0x9473, 0x34F0, 0x9474, 0x350C, 0x9475, 0x350F, 0x9476,
+ 0x350E, 0x9477, 0x1755, 0x9478, 0x350D, 0x947C, 0x175F, 0x947D, 0x175D,
+ 0x947E, 0x175E, 0x947F, 0x1764, 0x9480, 0x3539, 0x9481, 0x353A, 0x9482,
+ 0x3538, 0x9483, 0x3540, 0x9577, 0x0697, 0x957A, 0x20A1, 0x957B, 0x234A,
+ 0x957C, 0x2AB1, 0x957D, 0x3162, 0x9580, 0x0698, 0x9582, 0x0821, 0x9583,
+ 0x09EA, 0x9586, 0x20A2, 0x9588, 0x20A3, 0x9589, 0x0BD0, 0x958B, 0x0D9A,
+ 0x958C, 0x234C, 0x958D, 0x234B, 0x958E, 0x0D9E, 0x958F, 0x0D99, 0x9590,
+ 0x234D, 0x9591, 0x0D9B, 0x9592, 0x0D9D, 0x9593, 0x0D9C, 0x9594, 0x0D98,
+ 0x9598, 0x0F5C, 0x959B, 0x25F3, 0x959C, 0x25F1, 0x959E, 0x25F2, 0x959F,
+ 0x25F0, 0x95A1, 0x10DF, 0x95A3, 0x10E2, 0x95A4, 0x10E4, 0x95A5, 0x10E3,
+ 0x95A8, 0x10E0, 0x95A9, 0x10E1, 0x95AB, 0x2AB3, 0x95AC, 0x2AB2, 0x95AD,
+ 0x1260, 0x95AE, 0x2AB4, 0x95B0, 0x2AB5, 0x95B1, 0x1261, 0x95B5, 0x2CF0,
+ 0x95B6, 0x2CEE, 0x95B7, 0x2EAD, 0x95B9, 0x2CEC, 0x95BA, 0x2CED, 0x95BB,
+ 0x1385, 0x95BC, 0x2CE9, 0x95BD, 0x2CF1, 0x95BE, 0x2CEB, 0x95BF, 0x2CEF,
+ 0x95C0, 0x2EA9, 0x95C3, 0x2EAB, 0x95C5, 0x2EAC, 0x95C6, 0x14AE, 0x95C7,
+ 0x2EA8, 0x95C8, 0x14AD, 0x95C9, 0x2EAA, 0x95CA, 0x14AA, 0x95CB, 0x14AB,
+ 0x95CC, 0x14AC, 0x95CD, 0x2CEA, 0x95D0, 0x154C, 0x95D1, 0x301F, 0x95D2,
+ 0x301D, 0x95D3, 0x301E, 0x95D4, 0x154A, 0x95D5, 0x154D, 0x95D6, 0x154B,
+ 0x95DA, 0x3163, 0x95DB, 0x3164, 0x95DC, 0x15EB, 0x95DE, 0x326C, 0x95DF,
+ 0x326E, 0x95E0, 0x326D, 0x95E1, 0x1655, 0x95E2, 0x16A0, 0x95E3, 0x3330,
+ 0x95E4, 0x332F, 0x95E5, 0x332E, 0x961C, 0x0699, 0x961E, 0x17B4, 0x9620,
+ 0x1821, 0x9621, 0x0414, 0x9622, 0x181F, 0x9623, 0x1822, 0x9624, 0x1820,
+ 0x9628, 0x18F1, 0x962A, 0x0526, 0x962C, 0x0527, 0x962D, 0x18F3, 0x962E,
+ 0x0524, 0x962F, 0x18F2, 0x9630, 0x18F0, 0x9631, 0x0525, 0x9632, 0x0523,
+ 0x9639, 0x1A55, 0x963A, 0x1A58, 0x963B, 0x069C, 0x963C, 0x1A57, 0x963D,
+ 0x1A56, 0x963F, 0x069B, 0x9640, 0x069A, 0x9642, 0x069E, 0x9643, 0x1A59,
+ 0x9644, 0x069D, 0x964A, 0x1C1A, 0x964B, 0x0823, 0x964C, 0x0824, 0x964D,
+ 0x0825, 0x964E, 0x1C1B, 0x964F, 0x1C17, 0x9650, 0x0822, 0x9651, 0x1C18,
+ 0x9653, 0x1C19, 0x9654, 0x1C16, 0x9658, 0x09F1, 0x965B, 0x09EE, 0x965C,
+ 0x1E2F, 0x965D, 0x09EF, 0x965E, 0x09F2, 0x965F, 0x1E30, 0x9661, 0x09ED,
+ 0x9662, 0x09EB, 0x9663, 0x09EC, 0x9664, 0x09F0, 0x966A, 0x0BD1, 0x966B,
+ 0x20A6, 0x966C, 0x0BD9, 0x966D, 0x20A5, 0x966F, 0x20A8, 0x9670, 0x0BD5,
+ 0x9671, 0x20A7, 0x9672, 0x0DA6, 0x9673, 0x0BD3, 0x9674, 0x0BD6, 0x9675,
+ 0x0BD2, 0x9676, 0x0BD7, 0x9677, 0x0BD8, 0x9678, 0x0BD4, 0x967C, 0x20A4,
+ 0x967D, 0x0DA2, 0x967E, 0x234F, 0x9680, 0x2353, 0x9683, 0x2352, 0x9684,
+ 0x0DA7, 0x9685, 0x0DA3, 0x9686, 0x0DA4, 0x9687, 0x234E, 0x9688, 0x2350,
+ 0x9689, 0x2351, 0x968A, 0x0D9F, 0x968B, 0x0DA1, 0x968D, 0x0DA5, 0x968E,
+ 0x0DA0, 0x9691, 0x25F6, 0x9692, 0x25F4, 0x9693, 0x25F5, 0x9694, 0x0F5E,
+ 0x9695, 0x0F5F, 0x9697, 0x25F7, 0x9698, 0x0F5D, 0x9699, 0x10E5, 0x969B,
+ 0x10E7, 0x969C, 0x10E6, 0x969E, 0x2852, 0x96A1, 0x2853, 0x96A2, 0x2AB7,
+ 0x96A4, 0x2AB6, 0x96A7, 0x1386, 0x96A8, 0x1387, 0x96A9, 0x2CF2, 0x96AA,
+ 0x1388, 0x96AC, 0x2EB0, 0x96AE, 0x2EAE, 0x96B0, 0x2EAF, 0x96B1, 0x14AF,
+ 0x96B3, 0x3020, 0x96B4, 0x15EC, 0x96B6, 0x0231, 0x96B8, 0x14B0, 0x96B9,
+ 0x069F, 0x96BB, 0x09F3, 0x96BC, 0x1E31, 0x96BF, 0x20A9, 0x96C0, 0x0BDA,
+ 0x96C1, 0x0DA8, 0x96C2, 0x2354, 0x96C3, 0x2356, 0x96C4, 0x0DAA, 0x96C5,
+ 0x0DA9, 0x96C6, 0x0DAB, 0x96C7, 0x0DAC, 0x96C8, 0x2355, 0x96C9, 0x0F62,
+ 0x96CA, 0x0F63, 0x96CB, 0x0F61, 0x96CC, 0x10E8, 0x96CD, 0x0F60, 0x96CE,
+ 0x25F8, 0x96D2, 0x10E9, 0x96D3, 0x2AB8, 0x96D4, 0x2CF3, 0x96D5, 0x1389,
+ 0x96D6, 0x14B1, 0x96D7, 0x3021, 0x96D8, 0x3025, 0x96D9, 0x1550, 0x96DA,
+ 0x3022, 0x96DB, 0x1551, 0x96DC, 0x154F, 0x96DD, 0x3026, 0x96DE, 0x1552,
+ 0x96DF, 0x3024, 0x96E1, 0x3165, 0x96E2, 0x154E, 0x96E3, 0x15ED, 0x96E5,
+ 0x34A8, 0x96E8, 0x06A0, 0x96E9, 0x0BDC, 0x96EA, 0x0BDB, 0x96EF, 0x0DAD,
+ 0x96F0, 0x2358, 0x96F1, 0x2357, 0x96F2, 0x0DAE, 0x96F5, 0x25FC, 0x96F6,
+ 0x0F67, 0x96F7, 0x0F64, 0x96F8, 0x25FB, 0x96F9, 0x0F66, 0x96FA, 0x25F9,
+ 0x96FB, 0x0F65, 0x96FD, 0x25FA, 0x96FF, 0x2854, 0x9700, 0x10EA, 0x9702,
+ 0x2ABB, 0x9704, 0x1262, 0x9705, 0x2AB9, 0x9706, 0x1263, 0x9707, 0x1264,
+ 0x9708, 0x2ABA, 0x9709, 0x1265, 0x970B, 0x2CF4, 0x970D, 0x138D, 0x970E,
+ 0x138A, 0x970F, 0x138F, 0x9710, 0x2CF6, 0x9711, 0x138B, 0x9712, 0x2CF5,
+ 0x9713, 0x138E, 0x9716, 0x138C, 0x9718, 0x2EB3, 0x9719, 0x2EB5, 0x971C,
+ 0x14B2, 0x971D, 0x2EB4, 0x971E, 0x14B3, 0x971F, 0x2EB2, 0x9720, 0x2EB1,
+ 0x9722, 0x3028, 0x9723, 0x3027, 0x9724, 0x1553, 0x9725, 0x3029, 0x9726,
+ 0x316A, 0x9727, 0x15EF, 0x9728, 0x3169, 0x9729, 0x3166, 0x972A, 0x15EE,
+ 0x972B, 0x3167, 0x972C, 0x3168, 0x972E, 0x326F, 0x972F, 0x3270, 0x9730,
+ 0x1656, 0x9732, 0x16A3, 0x9735, 0x3331, 0x9738, 0x16A1, 0x9739, 0x16A2,
+ 0x973A, 0x3332, 0x973D, 0x16E2, 0x973E, 0x16E3, 0x973F, 0x33D1, 0x9742,
+ 0x1732, 0x9743, 0x34AA, 0x9744, 0x1734, 0x9746, 0x34A9, 0x9747, 0x34AB,
+ 0x9748, 0x1733, 0x9749, 0x34F1, 0x974B, 0x3526, 0x9752, 0x06A1, 0x9756,
+ 0x0F68, 0x9758, 0x2855, 0x975A, 0x2ABC, 0x975B, 0x1390, 0x975C, 0x1391,
+ 0x975E, 0x06A2, 0x9760, 0x1266, 0x9761, 0x15F0, 0x9762, 0x0826, 0x9766,
+ 0x1392, 0x9768, 0x1710, 0x9769, 0x0827, 0x976A, 0x20AA, 0x976C, 0x2359,
+ 0x976E, 0x235B, 0x9770, 0x235A, 0x9772, 0x2600, 0x9773, 0x25FD, 0x9774,
+ 0x0F69, 0x9776, 0x0F6A, 0x9777, 0x25FE, 0x9778, 0x25FF, 0x977A, 0x2857,
+ 0x977B, 0x285C, 0x977C, 0x10EB, 0x977D, 0x2856, 0x977E, 0x2858, 0x977F,
+ 0x285F, 0x9780, 0x285A, 0x9781, 0x285E, 0x9782, 0x285B, 0x9783, 0x2859,
+ 0x9784, 0x285D, 0x9785, 0x10EC, 0x9788, 0x2ABF, 0x978A, 0x2ABD, 0x978B,
+ 0x1268, 0x978D, 0x1267, 0x978E, 0x2ABE, 0x978F, 0x1269, 0x9794, 0x2CF9,
+ 0x9797, 0x2CF8, 0x9798, 0x1393, 0x9799, 0x2CF7, 0x979A, 0x2EB6, 0x979C,
+ 0x2EB8, 0x979D, 0x2EBA, 0x979E, 0x2EB9, 0x97A0, 0x14B4, 0x97A1, 0x2EB7,
+ 0x97A2, 0x3030, 0x97A3, 0x1554, 0x97A4, 0x302E, 0x97A5, 0x3031, 0x97A6,
+ 0x1555, 0x97A8, 0x302C, 0x97AA, 0x302F, 0x97AB, 0x302D, 0x97AC, 0x302A,
+ 0x97AD, 0x1556, 0x97AE, 0x302B, 0x97B3, 0x316B, 0x97B6, 0x316D, 0x97B7,
+ 0x316C, 0x97B9, 0x3271, 0x97BB, 0x3272, 0x97BF, 0x3333, 0x97C1, 0x16E5,
+ 0x97C3, 0x16E4, 0x97C4, 0x344C, 0x97C5, 0x344D, 0x97C6, 0x1735, 0x97C7,
+ 0x34AC, 0x97C9, 0x1756, 0x97CB, 0x0828, 0x97CC, 0x0DAF, 0x97CD, 0x2861,
+ 0x97CE, 0x2860, 0x97CF, 0x2AC1, 0x97D0, 0x2AC0, 0x97D3, 0x14B5, 0x97D4,
+ 0x2EBC, 0x97D5, 0x2EBB, 0x97D6, 0x3034, 0x97D7, 0x3032, 0x97D8, 0x3035,
+ 0x97D9, 0x3033, 0x97DC, 0x15F1, 0x97DD, 0x316E, 0x97DE, 0x316F, 0x97DF,
+ 0x3170, 0x97E1, 0x3334, 0x97E3, 0x33D2, 0x97E5, 0x34AD, 0x97ED, 0x0829,
+ 0x97F0, 0x2CFA, 0x97F1, 0x2EBD, 0x97F3, 0x082A, 0x97F6, 0x10ED, 0x97F8,
+ 0x2CFB, 0x97F9, 0x1557, 0x97FA, 0x3036, 0x97FB, 0x15F2, 0x97FD, 0x3273,
+ 0x97FE, 0x3274, 0x97FF, 0x16A4, 0x9800, 0x344E, 0x9801, 0x082B, 0x9802,
+ 0x0BDF, 0x9803, 0x0BE0, 0x9804, 0x20AB, 0x9805, 0x0DB0, 0x9806, 0x0DB1,
+ 0x9807, 0x235C, 0x9808, 0x0DB2, 0x980A, 0x0F6E, 0x980C, 0x0F70, 0x980D,
+ 0x2602, 0x980E, 0x2603, 0x980F, 0x2601, 0x9810, 0x0F6B, 0x9811, 0x0F6C,
+ 0x9812, 0x0F6F, 0x9813, 0x0F6D, 0x9816, 0x2862, 0x9817, 0x10EE, 0x9818,
+ 0x10EF, 0x981B, 0x2AC8, 0x981C, 0x126C, 0x981D, 0x2AC3, 0x981E, 0x2AC2,
+ 0x9820, 0x2AC7, 0x9821, 0x126A, 0x9824, 0x139A, 0x9826, 0x2AC4, 0x9827,
+ 0x2AC9, 0x9828, 0x2AC6, 0x9829, 0x2AC5, 0x982B, 0x126B, 0x982D, 0x1398,
+ 0x982F, 0x2CFD, 0x9830, 0x1394, 0x9832, 0x2CFE, 0x9835, 0x2CFC, 0x9837,
+ 0x1397, 0x9838, 0x1395, 0x9839, 0x1399, 0x983B, 0x1396, 0x9841, 0x2EBE,
+ 0x9843, 0x2EC3, 0x9844, 0x2EBF, 0x9845, 0x2EC2, 0x9846, 0x14B6, 0x9848,
+ 0x2DF2, 0x9849, 0x2EC1, 0x984A, 0x2EC0, 0x984C, 0x155A, 0x984D, 0x1558,
+ 0x984E, 0x155B, 0x984F, 0x1559, 0x9850, 0x3037, 0x9851, 0x3038, 0x9852,
+ 0x3039, 0x9853, 0x155C, 0x9857, 0x3174, 0x9858, 0x15F4, 0x9859, 0x3172,
+ 0x985B, 0x15F5, 0x985C, 0x3171, 0x985D, 0x3173, 0x985E, 0x15F3, 0x985F,
+ 0x3278, 0x9860, 0x3275, 0x9862, 0x3276, 0x9863, 0x3277, 0x9864, 0x3335,
+ 0x9865, 0x16A6, 0x9867, 0x16A5, 0x9869, 0x33D4, 0x986A, 0x33D3, 0x986B,
+ 0x16E6, 0x986F, 0x1711, 0x9870, 0x1736, 0x9871, 0x174D, 0x9872, 0x34F2,
+ 0x9873, 0x3527, 0x9874, 0x3528, 0x98A8, 0x082C, 0x98A9, 0x235D, 0x98AC,
+ 0x2604, 0x98AD, 0x2863, 0x98AE, 0x2864, 0x98AF, 0x10F0, 0x98B1, 0x10F1,
+ 0x98B2, 0x2ACA, 0x98B3, 0x126D, 0x98B6, 0x14B7, 0x98B8, 0x303A, 0x98BA,
+ 0x155D, 0x98BB, 0x3177, 0x98BC, 0x15F6, 0x98BD, 0x3176, 0x98BE, 0x3178,
+ 0x98BF, 0x3175, 0x98C0, 0x3338, 0x98C1, 0x3279, 0x98C2, 0x327A, 0x98C4,
+ 0x1657, 0x98C6, 0x3337, 0x98C9, 0x3336, 0x98CB, 0x33D5, 0x98CC, 0x3529,
+ 0x98DB, 0x082D, 0x98DF, 0x082E, 0x98E2, 0x09F4, 0x98E3, 0x1E32, 0x98E5,
+ 0x20AC, 0x98E7, 0x0DB3, 0x98E9, 0x0DB6, 0x98EA, 0x0DB4, 0x98EB, 0x235E,
+ 0x98ED, 0x0DB8, 0x98EF, 0x0DB5, 0x98F2, 0x0DB7, 0x98F4, 0x0F72, 0x98F6,
+ 0x2605, 0x98F9, 0x2606, 0x98FA, 0x2ACC, 0x98FC, 0x0F71, 0x98FD, 0x0F73,
+ 0x98FE, 0x0F74, 0x9900, 0x2866, 0x9902, 0x2865, 0x9903, 0x10F2, 0x9905,
+ 0x10F3, 0x9907, 0x2867, 0x9908, 0x2ACB, 0x9909, 0x10F5, 0x990A, 0x126E,
+ 0x990C, 0x10F4, 0x9910, 0x139B, 0x9911, 0x2ACD, 0x9912, 0x1270, 0x9913,
+ 0x126F, 0x9914, 0x2ACE, 0x9915, 0x2AD1, 0x9916, 0x2ACF, 0x9917, 0x2AD0,
+ 0x9918, 0x1271, 0x991A, 0x13A0, 0x991B, 0x139E, 0x991E, 0x139D, 0x991F,
+ 0x2D00, 0x9921, 0x139F, 0x9924, 0x2CFF, 0x9925, 0x2EC4, 0x9927, 0x2D01,
+ 0x9928, 0x139C, 0x9929, 0x2D02, 0x992A, 0x2EC7, 0x992B, 0x2EC5, 0x992C,
+ 0x2EC6, 0x992D, 0x2ECB, 0x992E, 0x1561, 0x992F, 0x2ECA, 0x9930, 0x2ECD,
+ 0x9931, 0x2ECC, 0x9932, 0x2EC9, 0x9933, 0x2EC8, 0x9935, 0x14B8, 0x993A,
+ 0x303D, 0x993C, 0x303C, 0x993D, 0x1560, 0x993E, 0x155E, 0x993F, 0x155F,
+ 0x9941, 0x303B, 0x9943, 0x317B, 0x9945, 0x15F7, 0x9947, 0x317A, 0x9948,
+ 0x3179, 0x9949, 0x15F8, 0x994B, 0x327F, 0x994C, 0x327E, 0x994E, 0x327C,
+ 0x9950, 0x327B, 0x9951, 0x1659, 0x9952, 0x1658, 0x9953, 0x3280, 0x9954,
+ 0x33D6, 0x9955, 0x16E7, 0x9956, 0x333A, 0x9957, 0x16A7, 0x9958, 0x3339,
+ 0x9959, 0x327D, 0x995B, 0x33D7, 0x995C, 0x1712, 0x995E, 0x174E, 0x995F,
+ 0x34F3, 0x9961, 0x352A, 0x9996, 0x082F, 0x9997, 0x20AD, 0x9998, 0x2ECE,
+ 0x9999, 0x0830, 0x999C, 0x2869, 0x999D, 0x2868, 0x999E, 0x2D03, 0x99A1,
+ 0x2ED0, 0x99A3, 0x2ECF, 0x99A5, 0x1562, 0x99A6, 0x317C, 0x99A7, 0x317D,
+ 0x99A8, 0x165A, 0x99AB, 0x352B, 0x99AC, 0x09F5, 0x99AD, 0x0DBA, 0x99AE,
+ 0x0DB9, 0x99AF, 0x2607, 0x99B0, 0x2609, 0x99B1, 0x0F76, 0x99B2, 0x2608,
+ 0x99B3, 0x0F75, 0x99B4, 0x0F77, 0x99B5, 0x260A, 0x99B9, 0x286B, 0x99BA,
+ 0x286D, 0x99BB, 0x286C, 0x99BD, 0x286F, 0x99C1, 0x10F6, 0x99C2, 0x286E,
+ 0x99C3, 0x286A, 0x99C7, 0x2870, 0x99C9, 0x2AD8, 0x99CB, 0x2ADB, 0x99CC,
+ 0x2ADD, 0x99CD, 0x2AD3, 0x99CE, 0x2AD7, 0x99CF, 0x2AD4, 0x99D0, 0x1273,
+ 0x99D1, 0x1276, 0x99D2, 0x1278, 0x99D3, 0x2AD5, 0x99D4, 0x2AD6, 0x99D5,
+ 0x1277, 0x99D6, 0x2AD9, 0x99D7, 0x2ADC, 0x99D8, 0x2ADA, 0x99D9, 0x1279,
+ 0x99DB, 0x1275, 0x99DC, 0x2AD2, 0x99DD, 0x1272, 0x99DF, 0x1274, 0x99E2,
+ 0x13A2, 0x99E3, 0x2D09, 0x99E4, 0x2D07, 0x99E5, 0x2D06, 0x99E7, 0x2D0C,
+ 0x99E9, 0x2D0B, 0x99EA, 0x2D0A, 0x99EC, 0x2D05, 0x99ED, 0x13A1, 0x99EE,
+ 0x2D04, 0x99F0, 0x2D08, 0x99F1, 0x13A3, 0x99F4, 0x2ED3, 0x99F6, 0x2ED7,
+ 0x99F7, 0x2ED4, 0x99F8, 0x2ED6, 0x99F9, 0x2ED5, 0x99FA, 0x2ED2, 0x99FB,
+ 0x2ED8, 0x99FC, 0x2EDB, 0x99FD, 0x2ED9, 0x99FE, 0x2EDA, 0x99FF, 0x14BA,
+ 0x9A01, 0x14B9, 0x9A02, 0x2ED1, 0x9A03, 0x2EDC, 0x9A04, 0x3042, 0x9A05,
+ 0x3045, 0x9A06, 0x3047, 0x9A07, 0x3046, 0x9A09, 0x3040, 0x9A0A, 0x3044,
+ 0x9A0B, 0x303F, 0x9A0D, 0x3041, 0x9A0E, 0x1563, 0x9A0F, 0x303E, 0x9A11,
+ 0x3043, 0x9A14, 0x318A, 0x9A15, 0x317F, 0x9A16, 0x15F9, 0x9A19, 0x15FA,
+ 0x9A1A, 0x317E, 0x9A1B, 0x3183, 0x9A1C, 0x3189, 0x9A1D, 0x3181, 0x9A1E,
+ 0x3188, 0x9A20, 0x3185, 0x9A22, 0x3184, 0x9A23, 0x3187, 0x9A24, 0x3182,
+ 0x9A25, 0x3180, 0x9A27, 0x3186, 0x9A29, 0x3287, 0x9A2A, 0x3285, 0x9A2B,
+ 0x165B, 0x9A2C, 0x3284, 0x9A2D, 0x328A, 0x9A2E, 0x3288, 0x9A30, 0x165C,
+ 0x9A31, 0x3283, 0x9A32, 0x3281, 0x9A34, 0x3282, 0x9A35, 0x165E, 0x9A36,
+ 0x3286, 0x9A37, 0x165D, 0x9A38, 0x3289, 0x9A39, 0x333B, 0x9A3A, 0x3341,
+ 0x9A3D, 0x333C, 0x9A3E, 0x16AB, 0x9A3F, 0x3342, 0x9A40, 0x16AA, 0x9A41,
+ 0x3340, 0x9A42, 0x333F, 0x9A43, 0x16A9, 0x9A44, 0x333E, 0x9A45, 0x16A8,
+ 0x9A46, 0x333D, 0x9A48, 0x33DD, 0x9A49, 0x33DF, 0x9A4A, 0x33DE, 0x9A4C,
+ 0x33DB, 0x9A4D, 0x16E9, 0x9A4E, 0x33D8, 0x9A4F, 0x33DC, 0x9A50, 0x33E1,
+ 0x9A52, 0x33E0, 0x9A53, 0x33D9, 0x9A54, 0x33DA, 0x9A55, 0x16E8, 0x9A56,
+ 0x344F, 0x9A57, 0x1715, 0x9A59, 0x3450, 0x9A5A, 0x1713, 0x9A5B, 0x1714,
+ 0x9A5E, 0x34AE, 0x9A5F, 0x1737, 0x9A60, 0x3510, 0x9A62, 0x1757, 0x9A64,
+ 0x352C, 0x9A65, 0x1758, 0x9A66, 0x352D, 0x9A67, 0x352E, 0x9A68, 0x353C,
+ 0x9A69, 0x353B, 0x9A6A, 0x1767, 0x9A6B, 0x3544, 0x9AA8, 0x09F6, 0x9AAB,
+ 0x260C, 0x9AAD, 0x260B, 0x9AAF, 0x10F7, 0x9AB0, 0x10F8, 0x9AB1, 0x2871,
+ 0x9AB3, 0x2ADE, 0x9AB4, 0x2D0F, 0x9AB7, 0x127A, 0x9AB8, 0x13A4, 0x9AB9,
+ 0x2D0D, 0x9ABB, 0x2D10, 0x9ABC, 0x13A5, 0x9ABE, 0x2EDD, 0x9ABF, 0x2D0E,
+ 0x9AC0, 0x3048, 0x9AC1, 0x1564, 0x9AC2, 0x318B, 0x9AC6, 0x328D, 0x9AC7,
+ 0x328B, 0x9ACA, 0x328C, 0x9ACD, 0x3343, 0x9ACF, 0x16AC, 0x9AD0, 0x33E2,
+ 0x9AD1, 0x1718, 0x9AD2, 0x16EA, 0x9AD3, 0x1716, 0x9AD4, 0x1717, 0x9AD5,
+ 0x34AF, 0x9AD6, 0x174F, 0x9AD8, 0x09F7, 0x9ADC, 0x3049, 0x9ADF, 0x1E33,
+ 0x9AE1, 0x0F78, 0x9AE3, 0x2872, 0x9AE6, 0x10F9, 0x9AE7, 0x2873, 0x9AEB,
+ 0x2AE0, 0x9AEC, 0x2ADF, 0x9AED, 0x13A7, 0x9AEE, 0x127B, 0x9AEF, 0x127C,
+ 0x9AF1, 0x2AE3, 0x9AF2, 0x2AE2, 0x9AF3, 0x2AE1, 0x9AF6, 0x2D11, 0x9AF7,
+ 0x2D14, 0x9AF9, 0x2D13, 0x9AFA, 0x2D12, 0x9AFB, 0x13A6, 0x9AFC, 0x2EE1,
+ 0x9AFD, 0x2EDF, 0x9AFE, 0x2EDE, 0x9B01, 0x2EE0, 0x9B03, 0x1565, 0x9B04,
+ 0x304B, 0x9B05, 0x304C, 0x9B06, 0x1566, 0x9B08, 0x304A, 0x9B0A, 0x318D,
+ 0x9B0B, 0x318C, 0x9B0C, 0x318F, 0x9B0D, 0x15FB, 0x9B0E, 0x318E, 0x9B10,
+ 0x328E, 0x9B11, 0x3290, 0x9B12, 0x328F, 0x9B15, 0x3344, 0x9B16, 0x3347,
+ 0x9B17, 0x3345, 0x9B18, 0x3346, 0x9B19, 0x33E3, 0x9B1A, 0x16EB, 0x9B1E,
+ 0x3451, 0x9B1F, 0x3452, 0x9B20, 0x3453, 0x9B22, 0x1738, 0x9B23, 0x1750,
+ 0x9B24, 0x352F, 0x9B25, 0x09F8, 0x9B27, 0x127D, 0x9B28, 0x13A8, 0x9B29,
+ 0x304D, 0x9B2B, 0x33E4, 0x9B2E, 0x3511, 0x9B2F, 0x1E34, 0x9B31, 0x1768,
+ 0x9B32, 0x09F9, 0x9B33, 0x2D15, 0x9B35, 0x304E, 0x9B37, 0x3190, 0x9B3A,
+ 0x3348, 0x9B3B, 0x33E5, 0x9B3C, 0x09FA, 0x9B3E, 0x2874, 0x9B3F, 0x2875,
+ 0x9B41, 0x10FA, 0x9B42, 0x10FB, 0x9B43, 0x2AE5, 0x9B44, 0x127F, 0x9B45,
+ 0x127E, 0x9B46, 0x2AE4, 0x9B48, 0x2EE2, 0x9B4A, 0x304F, 0x9B4B, 0x3051,
+ 0x9B4C, 0x3050, 0x9B4D, 0x1569, 0x9B4E, 0x1568, 0x9B4F, 0x1567, 0x9B51,
+ 0x16AE, 0x9B52, 0x3349, 0x9B54, 0x16AD, 0x9B55, 0x33E7, 0x9B56, 0x33E6,
+ 0x9B58, 0x1739, 0x9B59, 0x34B0, 0x9B5A, 0x0BE1, 0x9B5B, 0x260D, 0x9B5F,
+ 0x2878, 0x9B60, 0x2876, 0x9B61, 0x2877, 0x9B64, 0x2AEE, 0x9B66, 0x2AE9,
+ 0x9B67, 0x2AE6, 0x9B68, 0x2AED, 0x9B6C, 0x2AEF, 0x9B6F, 0x1281, 0x9B70,
+ 0x2AEC, 0x9B71, 0x2AE8, 0x9B74, 0x2AE7, 0x9B75, 0x2AEB, 0x9B76, 0x2AEA,
+ 0x9B77, 0x1280, 0x9B7A, 0x2D20, 0x9B7B, 0x2D1B, 0x9B7C, 0x2D19, 0x9B7D,
+ 0x2D22, 0x9B7E, 0x2D1A, 0x9B80, 0x2D16, 0x9B82, 0x2D1C, 0x9B85, 0x2D17,
+ 0x9B86, 0x2EEB, 0x9B87, 0x2D18, 0x9B88, 0x2D23, 0x9B90, 0x2D1F, 0x9B91,
+ 0x13A9, 0x9B92, 0x2D1E, 0x9B93, 0x2D1D, 0x9B95, 0x2D21, 0x9B9A, 0x2EE3,
+ 0x9B9B, 0x2EE6, 0x9B9E, 0x2EE5, 0x9BA0, 0x2EED, 0x9BA1, 0x2EE8, 0x9BA2,
+ 0x2EEC, 0x9BA4, 0x2EEA, 0x9BA5, 0x2EE9, 0x9BA6, 0x2EE7, 0x9BA8, 0x2EE4,
+ 0x9BAA, 0x14BD, 0x9BAB, 0x14BC, 0x9BAD, 0x14BE, 0x9BAE, 0x14BB, 0x9BAF,
+ 0x2EEE, 0x9BB5, 0x3057, 0x9BB6, 0x305A, 0x9BB8, 0x3058, 0x9BB9, 0x305C,
+ 0x9BBD, 0x305D, 0x9BBF, 0x3055, 0x9BC0, 0x156E, 0x9BC1, 0x3056, 0x9BC3,
+ 0x3054, 0x9BC4, 0x305B, 0x9BC6, 0x3053, 0x9BC7, 0x3052, 0x9BC8, 0x156D,
+ 0x9BC9, 0x156B, 0x9BCA, 0x156A, 0x9BD3, 0x3059, 0x9BD4, 0x3199, 0x9BD5,
+ 0x319F, 0x9BD6, 0x15FE, 0x9BD7, 0x319A, 0x9BD9, 0x319D, 0x9BDA, 0x31A1,
+ 0x9BDB, 0x15FF, 0x9BDC, 0x319C, 0x9BDE, 0x3194, 0x9BE0, 0x3193, 0x9BE1,
+ 0x31A0, 0x9BE2, 0x3197, 0x9BE4, 0x3195, 0x9BE5, 0x319E, 0x9BE6, 0x3196,
+ 0x9BE7, 0x15FD, 0x9BE8, 0x15FC, 0x9BEA, 0x3191, 0x9BEB, 0x3192, 0x9BEC,
+ 0x319B, 0x9BF0, 0x3198, 0x9BF7, 0x3293, 0x9BF8, 0x3296, 0x9BFD, 0x156C,
+ 0x9C05, 0x3294, 0x9C06, 0x329A, 0x9C07, 0x3298, 0x9C08, 0x3292, 0x9C09,
+ 0x329D, 0x9C0B, 0x3291, 0x9C0D, 0x1660, 0x9C0E, 0x3299, 0x9C12, 0x3295,
+ 0x9C13, 0x165F, 0x9C14, 0x329C, 0x9C17, 0x329B, 0x9C1C, 0x334C, 0x9C1D,
+ 0x334B, 0x9C21, 0x3352, 0x9C23, 0x334E, 0x9C24, 0x3351, 0x9C25, 0x16B0,
+ 0x9C28, 0x334F, 0x9C29, 0x3350, 0x9C2B, 0x334A, 0x9C2C, 0x334D, 0x9C2D,
+ 0x16AF, 0x9C31, 0x16ED, 0x9C32, 0x33F2, 0x9C33, 0x33ED, 0x9C34, 0x33F1,
+ 0x9C36, 0x33F4, 0x9C37, 0x33F0, 0x9C39, 0x33EC, 0x9C3B, 0x16EF, 0x9C3C,
+ 0x33EF, 0x9C3D, 0x33F3, 0x9C3E, 0x16EE, 0x9C3F, 0x33EA, 0x9C40, 0x3297,
+ 0x9C41, 0x33EE, 0x9C44, 0x33EB, 0x9C46, 0x33E8, 0x9C48, 0x33E9, 0x9C49,
+ 0x16EC, 0x9C4A, 0x3457, 0x9C4B, 0x3459, 0x9C4C, 0x345C, 0x9C4D, 0x3458,
+ 0x9C4E, 0x345D, 0x9C50, 0x3456, 0x9C52, 0x3454, 0x9C54, 0x1719, 0x9C55,
+ 0x345A, 0x9C56, 0x171B, 0x9C57, 0x171A, 0x9C58, 0x3455, 0x9C59, 0x345B,
+ 0x9C5E, 0x34B5, 0x9C5F, 0x173A, 0x9C60, 0x34B6, 0x9C62, 0x34B4, 0x9C63,
+ 0x34B1, 0x9C66, 0x34B3, 0x9C67, 0x34B2, 0x9C68, 0x34F4, 0x9C6D, 0x34F6,
+ 0x9C6E, 0x34F5, 0x9C71, 0x3514, 0x9C73, 0x3513, 0x9C74, 0x3512, 0x9C75,
+ 0x3515, 0x9C77, 0x1760, 0x9C78, 0x1761, 0x9C79, 0x3541, 0x9C7A, 0x3545,
+ 0x9CE5, 0x0BE2, 0x9CE6, 0x235F, 0x9CE7, 0x2610, 0x9CE9, 0x0F79, 0x9CEA,
+ 0x260E, 0x9CED, 0x260F, 0x9CF1, 0x2879, 0x9CF2, 0x287A, 0x9CF3, 0x10FE,
+ 0x9CF4, 0x10FC, 0x9CF5, 0x287B, 0x9CF6, 0x10FD, 0x9CF7, 0x2AF4, 0x9CF9,
+ 0x2AF7, 0x9CFA, 0x2AF1, 0x9CFB, 0x2AF8, 0x9CFC, 0x2AF0, 0x9CFD, 0x2AF2,
+ 0x9CFF, 0x2AF3, 0x9D00, 0x2AF6, 0x9D03, 0x1284, 0x9D04, 0x2AFB, 0x9D05,
+ 0x2AFA, 0x9D06, 0x1282, 0x9D07, 0x2AF5, 0x9D08, 0x2AF9, 0x9D09, 0x1283,
+ 0x9D10, 0x2D2D, 0x9D12, 0x13AE, 0x9D14, 0x2D28, 0x9D15, 0x13AA, 0x9D17,
+ 0x2D25, 0x9D18, 0x2D2B, 0x9D19, 0x2D2E, 0x9D1B, 0x13AF, 0x9D1D, 0x2D2A,
+ 0x9D1E, 0x2D27, 0x9D1F, 0x2D2F, 0x9D20, 0x2D26, 0x9D22, 0x2D2C, 0x9D23,
+ 0x13AB, 0x9D25, 0x2D24, 0x9D26, 0x13AC, 0x9D28, 0x13AD, 0x9D29, 0x2D29,
+ 0x9D2D, 0x2F00, 0x9D2E, 0x2EF3, 0x9D2F, 0x2EF4, 0x9D30, 0x2EF7, 0x9D31,
+ 0x2EF5, 0x9D33, 0x2EEF, 0x9D36, 0x2EF2, 0x9D37, 0x2EFC, 0x9D38, 0x2EF6,
+ 0x9D3B, 0x14BF, 0x9D3D, 0x2EFE, 0x9D3E, 0x2EFB, 0x9D3F, 0x14C0, 0x9D40,
+ 0x2EFD, 0x9D41, 0x2EF0, 0x9D42, 0x2EF9, 0x9D43, 0x2EFA, 0x9D45, 0x2EF8,
+ 0x9D4A, 0x3061, 0x9D4B, 0x3063, 0x9D4C, 0x3066, 0x9D4F, 0x3060, 0x9D51,
+ 0x156F, 0x9D52, 0x3068, 0x9D53, 0x305F, 0x9D54, 0x3069, 0x9D56, 0x3065,
+ 0x9D57, 0x3067, 0x9D58, 0x306B, 0x9D59, 0x3064, 0x9D5A, 0x306C, 0x9D5B,
+ 0x3062, 0x9D5C, 0x305E, 0x9D5D, 0x1570, 0x9D5F, 0x306A, 0x9D60, 0x1571,
+ 0x9D61, 0x1601, 0x9D67, 0x2EF1, 0x9D68, 0x31BB, 0x9D69, 0x31B2, 0x9D6A,
+ 0x1603, 0x9D6B, 0x31AE, 0x9D6C, 0x1604, 0x9D6F, 0x31B7, 0x9D70, 0x31B1,
+ 0x9D71, 0x31A7, 0x9D72, 0x1602, 0x9D73, 0x31B4, 0x9D74, 0x31AF, 0x9D75,
+ 0x31B0, 0x9D77, 0x31A2, 0x9D78, 0x31A9, 0x9D79, 0x31B8, 0x9D7B, 0x31B5,
+ 0x9D7D, 0x31AD, 0x9D7F, 0x31B9, 0x9D80, 0x31A8, 0x9D81, 0x31A3, 0x9D82,
+ 0x31B6, 0x9D84, 0x31A5, 0x9D85, 0x31B3, 0x9D86, 0x31AA, 0x9D87, 0x31BA,
+ 0x9D88, 0x31A6, 0x9D89, 0x1600, 0x9D8A, 0x31A4, 0x9D8B, 0x31AB, 0x9D8C,
+ 0x31AC, 0x9D90, 0x32A4, 0x9D92, 0x32A2, 0x9D94, 0x32A7, 0x9D96, 0x32B3,
+ 0x9D97, 0x32AA, 0x9D98, 0x32A3, 0x9D99, 0x329F, 0x9D9A, 0x32AC, 0x9D9B,
+ 0x32A5, 0x9D9C, 0x32A8, 0x9D9D, 0x32A1, 0x9D9E, 0x32AF, 0x9D9F, 0x329E,
+ 0x9DA0, 0x32A6, 0x9DA1, 0x32AB, 0x9DA2, 0x32AD, 0x9DA3, 0x32B0, 0x9DA4,
+ 0x32A0, 0x9DA6, 0x32B4, 0x9DA7, 0x32B5, 0x9DA8, 0x32AE, 0x9DA9, 0x32B2,
+ 0x9DAA, 0x32A9, 0x9DAC, 0x3362, 0x9DAD, 0x3365, 0x9DAF, 0x16B1, 0x9DB1,
+ 0x3364, 0x9DB2, 0x3369, 0x9DB3, 0x3367, 0x9DB4, 0x16B2, 0x9DB5, 0x335E,
+ 0x9DB6, 0x3354, 0x9DB7, 0x3353, 0x9DB8, 0x16B4, 0x9DB9, 0x3360, 0x9DBA,
+ 0x3361, 0x9DBB, 0x335D, 0x9DBC, 0x3355, 0x9DBE, 0x335A, 0x9DBF, 0x32B1,
+ 0x9DC1, 0x3356, 0x9DC2, 0x16B3, 0x9DC3, 0x335C, 0x9DC5, 0x335B, 0x9DC7,
+ 0x3357, 0x9DC8, 0x3363, 0x9DCA, 0x3358, 0x9DCB, 0x33F9, 0x9DCC, 0x3366,
+ 0x9DCD, 0x3368, 0x9DCE, 0x335F, 0x9DCF, 0x3359, 0x9DD0, 0x33FA, 0x9DD1,
+ 0x33FC, 0x9DD2, 0x33F6, 0x9DD3, 0x16F0, 0x9DD5, 0x3403, 0x9DD6, 0x3401,
+ 0x9DD7, 0x16F1, 0x9DD8, 0x3400, 0x9DD9, 0x33FF, 0x9DDA, 0x33F8, 0x9DDB,
+ 0x33F5, 0x9DDC, 0x33FB, 0x9DDD, 0x3404, 0x9DDE, 0x33F7, 0x9DDF, 0x33FD,
+ 0x9DE1, 0x3466, 0x9DE2, 0x346B, 0x9DE3, 0x3461, 0x9DE4, 0x3464, 0x9DE5,
+ 0x171C, 0x9DE6, 0x3468, 0x9DE8, 0x346F, 0x9DE9, 0x33FE, 0x9DEB, 0x3462,
+ 0x9DEC, 0x346C, 0x9DED, 0x3470, 0x9DEE, 0x3467, 0x9DEF, 0x3460, 0x9DF0,
+ 0x346A, 0x9DF2, 0x3469, 0x9DF3, 0x346E, 0x9DF4, 0x346D, 0x9DF5, 0x3402,
+ 0x9DF6, 0x3465, 0x9DF7, 0x345F, 0x9DF8, 0x3463, 0x9DF9, 0x173B, 0x9DFA,
+ 0x173C, 0x9DFB, 0x345E, 0x9DFD, 0x34C1, 0x9DFE, 0x34B8, 0x9DFF, 0x34C0,
+ 0x9E00, 0x34BD, 0x9E01, 0x34BE, 0x9E02, 0x34B7, 0x9E03, 0x34BA, 0x9E04,
+ 0x34C2, 0x9E05, 0x34BC, 0x9E06, 0x34BB, 0x9E07, 0x34B9, 0x9E09, 0x34BF,
+ 0x9E0B, 0x34F7, 0x9E0D, 0x34F8, 0x9E0F, 0x34FA, 0x9E10, 0x34F9, 0x9E11,
+ 0x34FC, 0x9E12, 0x34FB, 0x9E13, 0x3517, 0x9E14, 0x3516, 0x9E15, 0x3530,
+ 0x9E17, 0x3531, 0x9E19, 0x353D, 0x9E1A, 0x1765, 0x9E1B, 0x1769, 0x9E1D,
+ 0x3546, 0x9E1E, 0x176A, 0x9E75, 0x0BE3, 0x9E79, 0x1661, 0x9E7A, 0x336A,
+ 0x9E7C, 0x173D, 0x9E7D, 0x173E, 0x9E7F, 0x0BE4, 0x9E80, 0x2611, 0x9E82,
+ 0x0F7A, 0x9E83, 0x2AFC, 0x9E86, 0x2D31, 0x9E87, 0x2D32, 0x9E88, 0x2D30,
+ 0x9E89, 0x2F02, 0x9E8A, 0x2F01, 0x9E8B, 0x14C1, 0x9E8C, 0x306E, 0x9E8D,
+ 0x2F03, 0x9E8E, 0x306D, 0x9E91, 0x31BD, 0x9E92, 0x1605, 0x9E93, 0x1607,
+ 0x9E94, 0x31BC, 0x9E97, 0x1606, 0x9E99, 0x32B6, 0x9E9A, 0x32B8, 0x9E9B,
+ 0x32B7, 0x9E9C, 0x336B, 0x9E9D, 0x16B5, 0x9E9F, 0x171D, 0x9EA0, 0x34C3,
+ 0x9EA1, 0x34FD, 0x9EA4, 0x354A, 0x9EA5, 0x0BE5, 0x9EA7, 0x287C, 0x9EA9,
+ 0x1285, 0x9EAD, 0x2D34, 0x9EAE, 0x2D33, 0x9EB0, 0x2F04, 0x9EB4, 0x1608,
+ 0x9EB5, 0x1662, 0x9EB6, 0x3405, 0x9EB7, 0x3542, 0x9EBB, 0x0BE6, 0x9EBC,
+ 0x10FF, 0x9EBE, 0x1286, 0x9EC0, 0x31BE, 0x9EC2, 0x3471, 0x9EC3, 0x0DBB,
+ 0x9EC8, 0x2F05, 0x9ECC, 0x1751, 0x9ECD, 0x0DBC, 0x9ECE, 0x1287, 0x9ECF,
+ 0x14C2, 0x9ED0, 0x3472, 0x9ED1, 0x0DBD, 0x9ED3, 0x2AFD, 0x9ED4, 0x13B1,
+ 0x9ED5, 0x2D35, 0x9ED6, 0x2D36, 0x9ED8, 0x13B0, 0x9EDA, 0x2F06, 0x9EDB,
+ 0x14C6, 0x9EDC, 0x14C4, 0x9EDD, 0x14C5, 0x9EDE, 0x14C3, 0x9EDF, 0x306F,
+ 0x9EE0, 0x1572, 0x9EE4, 0x32BA, 0x9EE5, 0x32B9, 0x9EE6, 0x32BC, 0x9EE7,
+ 0x32BB, 0x9EE8, 0x1663, 0x9EEB, 0x336C, 0x9EED, 0x336E, 0x9EEE, 0x336D,
+ 0x9EEF, 0x16B6, 0x9EF0, 0x3406, 0x9EF2, 0x3473, 0x9EF3, 0x3474, 0x9EF4,
+ 0x171E, 0x9EF5, 0x34FE, 0x9EF6, 0x3518, 0x9EF7, 0x1762, 0x9EF9, 0x2360,
+ 0x9EFA, 0x2D37, 0x9EFB, 0x2F07, 0x9EFC, 0x31BF, 0x9EFD, 0x2612, 0x9EFF,
+ 0x2F08, 0x9F00, 0x3071, 0x9F01, 0x3070, 0x9F06, 0x3475, 0x9F07, 0x173F,
+ 0x9F09, 0x34FF, 0x9F0A, 0x3519, 0x9F0E, 0x0F7B, 0x9F0F, 0x2AFE, 0x9F10,
+ 0x2AFF, 0x9F12, 0x2D38, 0x9F13, 0x0F7C, 0x9F15, 0x1573, 0x9F16, 0x3072,
+ 0x9F18, 0x3370, 0x9F19, 0x16B7, 0x9F1A, 0x3371, 0x9F1B, 0x336F, 0x9F1C,
+ 0x3476, 0x9F1E, 0x34C4, 0x9F20, 0x0F7D, 0x9F22, 0x2F0B, 0x9F23, 0x2F0A,
+ 0x9F24, 0x2F09, 0x9F25, 0x3073, 0x9F28, 0x3077, 0x9F29, 0x3076, 0x9F2A,
+ 0x3075, 0x9F2B, 0x3074, 0x9F2C, 0x1574, 0x9F2D, 0x31C0, 0x9F2E, 0x32BE,
+ 0x9F2F, 0x1664, 0x9F30, 0x32BD, 0x9F31, 0x3372, 0x9F32, 0x3409, 0x9F33,
+ 0x3408, 0x9F34, 0x16F2, 0x9F35, 0x3407, 0x9F36, 0x3479, 0x9F37, 0x3478,
+ 0x9F38, 0x3477, 0x9F3B, 0x1100, 0x9F3D, 0x2D39, 0x9F3E, 0x14C7, 0x9F40,
+ 0x31C1, 0x9F41, 0x31C2, 0x9F42, 0x340A, 0x9F43, 0x347A, 0x9F46, 0x34C5,
+ 0x9F47, 0x3500, 0x9F48, 0x3532, 0x9F49, 0x354C, 0x9F4A, 0x1101, 0x9F4B,
+ 0x14C8, 0x9F4C, 0x3078, 0x9F4D, 0x31C3, 0x9F4E, 0x3373, 0x9F4F, 0x347B,
+ 0x9F52, 0x1289, 0x9F54, 0x2F0C, 0x9F55, 0x3079, 0x9F56, 0x31C4, 0x9F57,
+ 0x31C5, 0x9F58, 0x31C6, 0x9F59, 0x32C3, 0x9F5B, 0x32BF, 0x9F5C, 0x16B8,
+ 0x9F5D, 0x32C2, 0x9F5E, 0x32C1, 0x9F5F, 0x1665, 0x9F60, 0x32C0, 0x9F61,
+ 0x1667, 0x9F63, 0x1666, 0x9F64, 0x3375, 0x9F65, 0x3374, 0x9F66, 0x16B9,
+ 0x9F67, 0x16BA, 0x9F6A, 0x16F4, 0x9F6B, 0x340B, 0x9F6C, 0x16F3, 0x9F6E,
+ 0x347E, 0x9F6F, 0x347F, 0x9F70, 0x347D, 0x9F71, 0x347C, 0x9F72, 0x1741,
+ 0x9F74, 0x34C6, 0x9F75, 0x34C7, 0x9F76, 0x34C8, 0x9F77, 0x1740, 0x9F78,
+ 0x3501, 0x9F79, 0x3504, 0x9F7A, 0x3503, 0x9F7B, 0x3502, 0x9F7E, 0x354B,
+ 0x9F8D, 0x13B2, 0x9F90, 0x157C, 0x9F91, 0x32C4, 0x9F92, 0x3376, 0x9F94,
+ 0x16F5, 0x9F95, 0x340C, 0x9F98, 0x354D, 0x9F9C, 0x13B3, 0x9FA0, 0x2F0D,
+ 0x9FA2, 0x340D, 0x9FA4, 0x351A, 0xE01F, 0x083A, 0xE026, 0x09FD, 0xE05B,
+ 0x030D, 0xE063, 0x016B, 0xE073, 0x0860, 0xE0F3, 0x0C23, 0xE12E, 0x17E4,
+ 0xE149, 0x212F, 0xE191, 0x115F, 0xE1BA, 0x0C79, 0xE1C9, 0x04C3, 0xE22C,
+ 0x18BD, 0xE22D, 0x0CBD, 0xE230, 0x0CA5, 0xE266, 0x0CCE, 0xE2A3, 0x0E84,
+ 0xE2BC, 0x0120, 0xE2EF, 0x1BA8, 0xE33A, 0x1055, 0xE340, 0x2DE8, 0xE34F,
+ 0x0121, 0xE35A, 0x106B, 0xE363, 0x1326, 0xE37C, 0x066B, 0xE37F, 0x132E,
+ 0xE3C5, 0x0D35, 0xE3D7, 0x27C2, 0xE3DC, 0x22AD, 0xE417, 0x134C, 0xE44A,
+ 0x09CE, 0xE478, 0x0BC7, 0xE485, 0x36E9, 0xE4C5, 0x1391, 0xE4DA, 0x16A4,
+ 0xE545, 0x3072, 0xE5D2, 0x0119, 0xE5D3, 0x011A, 0xE5D4, 0x011C, 0xE5D5,
+ 0x011B, 0xE5F4, 0x297C, 0xE6C6, 0x1D06, 0xE727, 0x29A1, 0xE7D3, 0x181B,
+ 0xE893, 0x2B24, 0xEB40, 0x2F50, 0xEB42, 0x1725, 0xEB45, 0x32ED, 0xEB6E,
+ 0x2AD9, 0xEB86, 0x1C14, 0xEB9E, 0x12E9, 0xEBA9, 0x2CAE, 0xEBBA, 0x1A64,
+ 0xEBC9, 0x1404, 0xEBCF, 0x2324, 0xEBD2, 0x346A, 0xEBDE, 0x2291, 0xEC01,
+ 0x1787, 0xEC02, 0x095F, 0xEC15, 0x1E99, 0xEC5B, 0x25C1, 0xEC5E, 0x0D0C,
+ 0xECA6, 0x05E6, 0xED28, 0x0728, 0xED6E, 0x24B6, 0xED7C, 0x1806, 0xED9E,
+ 0x3511, 0xEDE7, 0x0F82, 0xEE52, 0x05F2, 0xEE98, 0x247D, 0xF6B1, 0x01FA,
+ 0xF6B2, 0x01FB, 0xF6B3, 0x01FC, 0xF6B4, 0x01FD, 0xF6B5, 0x01FE, 0xF6B6,
+ 0x01FF, 0xF6B7, 0x0200, 0xF6B8, 0x0201, 0xF6B9, 0x0202, 0xF6BA, 0x0203,
+ 0xF6BB, 0x0204, 0xF6BC, 0x0205, 0xF6BD, 0x0206, 0xF6BE, 0x0207, 0xF6BF,
+ 0x0208, 0xF6C0, 0x0209, 0xF6C1, 0x020A, 0xF6C2, 0x020B, 0xF6C3, 0x020C,
+ 0xF6C4, 0x020D, 0xF6C5, 0x020E, 0xF6C6, 0x020F, 0xF6C7, 0x0210, 0xF6C8,
+ 0x0211, 0xF6C9, 0x0212, 0xF6CA, 0x0213, 0xF6CB, 0x0214, 0xF6CC, 0x0215,
+ 0xF6CD, 0x0216, 0xF6CE, 0x0217, 0xF6CF, 0x0219, 0xF6D0, 0x021A, 0xF6D1,
+ 0x021B, 0xF6D2, 0x021C, 0xF6D3, 0x021D, 0xF6D4, 0x021E, 0xF6D5, 0x021F,
+ 0xF6D6, 0x0220, 0xF6D7, 0x0221, 0xF6D8, 0x0222, 0xF6D9, 0x0223, 0xF6DA,
+ 0x0224, 0xF6DB, 0x0225, 0xF6DC, 0x0226, 0xF6DD, 0x0227, 0xF6DE, 0x0228,
+ 0xF6E0, 0x022A, 0xF6E1, 0x022B, 0xF6E2, 0x022C, 0xF6E4, 0x022E, 0xF6E6,
+ 0x0230, 0xF6E8, 0x35B3, 0xF6E9, 0x35B4, 0xF6EA, 0x35B5, 0xF6EB, 0x35B6,
+ 0xF6EC, 0x35B7, 0xF6ED, 0x35B8, 0xF6F0, 0x35BA, 0xF6F1, 0x35BB, 0xF6F2,
+ 0x35BC, 0xF6F3, 0x35BD, 0xF6F4, 0x35BE, 0xF6F5, 0x35BF, 0xF6F6, 0x35C0,
+ 0xF6F7, 0x35C1, 0xF6F8, 0x35C2, 0xF6F9, 0x35C3, 0xF6FA, 0x35C4, 0xF6FB,
+ 0x35C5, 0xF6FC, 0x35C6, 0xF6FD, 0x35C7, 0xF6FE, 0x35C8, 0xF6FF, 0x35C9,
+ 0xF700, 0x35CA, 0xF701, 0x35CB, 0xF702, 0x35CC, 0xF703, 0x35CD, 0xF704,
+ 0x35CE, 0xF705, 0x35CF, 0xF706, 0x35D0, 0xF707, 0x35D1, 0xF708, 0x35D2,
+ 0xF709, 0x35D3, 0xF70A, 0x35D4, 0xF70B, 0x35D5, 0xF70C, 0x35D6, 0xF70D,
+ 0x35D7, 0xF70E, 0x35D8, 0xF70F, 0x35D9, 0xF710, 0x35DA, 0xF711, 0x35DB,
+ 0xF712, 0x35DC, 0xF713, 0x35DD, 0xF714, 0x35DE, 0xF715, 0x35DF, 0xF716,
+ 0x35E0, 0xF717, 0x35E1, 0xF718, 0x35E2, 0xF719, 0x35E3, 0xF71A, 0x35E4,
+ 0xF71B, 0x35E5, 0xF71C, 0x35E6, 0xF71D, 0x35E7, 0xF71E, 0x35E8, 0xF71F,
+ 0x35E9, 0xF720, 0x35EA, 0xF721, 0x35EB, 0xF722, 0x35EC, 0xF723, 0x35ED,
+ 0xF724, 0x35EE, 0xF725, 0x35EF, 0xF726, 0x35F0, 0xF727, 0x35F1, 0xF728,
+ 0x35F2, 0xF729, 0x35F3, 0xF72A, 0x35F4, 0xF72B, 0x35F5, 0xF72C, 0x35F6,
+ 0xF72D, 0x35F7, 0xF72E, 0x35F8, 0xF72F, 0x35F9, 0xF730, 0x35FA, 0xF731,
+ 0x35FB, 0xF732, 0x35FC, 0xF733, 0x35FD, 0xF734, 0x35FE, 0xF735, 0x35FF,
+ 0xF736, 0x3600, 0xF737, 0x3601, 0xF738, 0x3602, 0xF739, 0x3603, 0xF73A,
+ 0x3604, 0xF73B, 0x3605, 0xF73C, 0x3606, 0xF73D, 0x3607, 0xF73E, 0x3608,
+ 0xF73F, 0x3609, 0xF740, 0x360A, 0xF741, 0x360B, 0xF742, 0x360C, 0xF743,
+ 0x360D, 0xF744, 0x360E, 0xF745, 0x360F, 0xF746, 0x3610, 0xF747, 0x3611,
+ 0xF748, 0x3612, 0xF749, 0x3613, 0xF74A, 0x3614, 0xF74B, 0x3615, 0xF74C,
+ 0x3616, 0xF74D, 0x3617, 0xF74E, 0x3618, 0xF74F, 0x3619, 0xF750, 0x361A,
+ 0xF751, 0x361B, 0xF752, 0x361C, 0xF753, 0x361D, 0xF754, 0x361E, 0xF755,
+ 0x361F, 0xF756, 0x3620, 0xF757, 0x3621, 0xF758, 0x3622, 0xF759, 0x3623,
+ 0xF75A, 0x3624, 0xF75B, 0x3625, 0xF75C, 0x3626, 0xF75D, 0x3627, 0xF75E,
+ 0x3628, 0xF75F, 0x3629, 0xF760, 0x362A, 0xF761, 0x362B, 0xF762, 0x362C,
+ 0xF763, 0x362D, 0xF764, 0x362E, 0xF765, 0x362F, 0xF766, 0x3630, 0xF767,
+ 0x3631, 0xF768, 0x3632, 0xF769, 0x3633, 0xF76A, 0x3634, 0xF76B, 0x3635,
+ 0xF76C, 0x3636, 0xF76D, 0x3637, 0xF76E, 0x3638, 0xF76F, 0x3639, 0xF770,
+ 0x363A, 0xF771, 0x363B, 0xF772, 0x363C, 0xF773, 0x363D, 0xF774, 0x363E,
+ 0xF775, 0x363F, 0xF776, 0x3640, 0xF777, 0x3641, 0xF778, 0x3642, 0xF779,
+ 0x3643, 0xF77A, 0x3644, 0xF77B, 0x3645, 0xF77C, 0x3646, 0xF77D, 0x3647,
+ 0xF77E, 0x3648, 0xF77F, 0x3649, 0xF780, 0x364A, 0xF781, 0x364B, 0xF782,
+ 0x364C, 0xF783, 0x364D, 0xF784, 0x364E, 0xF785, 0x364F, 0xF786, 0x3650,
+ 0xF787, 0x3651, 0xF788, 0x3652, 0xF789, 0x3653, 0xF78A, 0x3654, 0xF78B,
+ 0x3655, 0xF78C, 0x3656, 0xF78D, 0x3657, 0xF78E, 0x3658, 0xF78F, 0x3659,
+ 0xF790, 0x365A, 0xF791, 0x365B, 0xF792, 0x365C, 0xF793, 0x365D, 0xF794,
+ 0x365E, 0xF795, 0x365F, 0xF796, 0x3660, 0xF797, 0x3661, 0xF798, 0x3662,
+ 0xF799, 0x3663, 0xF79A, 0x3664, 0xF79B, 0x3665, 0xF79C, 0x3666, 0xF79D,
+ 0x3667, 0xF79E, 0x3668, 0xF79F, 0x3669, 0xF7A0, 0x366A, 0xF7A1, 0x366B,
+ 0xF7A2, 0x366C, 0xF7A3, 0x366D, 0xF7A4, 0x366E, 0xF7A5, 0x366F, 0xF7A6,
+ 0x3670, 0xF7A7, 0x3671, 0xF7A8, 0x3672, 0xF7A9, 0x3673, 0xF7AA, 0x3674,
+ 0xF7AB, 0x3675, 0xF7AC, 0x3676, 0xF7AD, 0x3677, 0xF7AE, 0x3678, 0xF7AF,
+ 0x3679, 0xF7B0, 0x367A, 0xF7B1, 0x367B, 0xF7B2, 0x367C, 0xF7B3, 0x367D,
+ 0xF7B4, 0x367E, 0xF7B5, 0x367F, 0xF7B6, 0x3680, 0xF7B7, 0x3681, 0xF7B8,
+ 0x3682, 0xF7B9, 0x3683, 0xF7BA, 0x3684, 0xF7BB, 0x3685, 0xF7BC, 0x3686,
+ 0xF7BD, 0x3687, 0xF7BE, 0x3688, 0xF7BF, 0x3689, 0xF7C0, 0x368A, 0xF7C1,
+ 0x368B, 0xF7C2, 0x368C, 0xF7C3, 0x368D, 0xF7C4, 0x368E, 0xF7C5, 0x368F,
+ 0xF7C6, 0x3690, 0xF7C7, 0x3691, 0xF7C8, 0x3692, 0xF7C9, 0x3693, 0xF7CA,
+ 0x3694, 0xF7CB, 0x3695, 0xF7CC, 0x3696, 0xF7CD, 0x3697, 0xF7CE, 0x3698,
+ 0xF7CF, 0x3699, 0xF7D0, 0x369A, 0xF7D1, 0x369B, 0xF7D2, 0x369C, 0xF7D3,
+ 0x369D, 0xF7D4, 0x369E, 0xF7D5, 0x369F, 0xF7D6, 0x36A0, 0xF7D7, 0x36A1,
+ 0xF7D8, 0x36A2, 0xF7D9, 0x36A3, 0xF7DA, 0x36A4, 0xF7DB, 0x36A5, 0xF7DC,
+ 0x36A6, 0xF7DD, 0x36A7, 0xF7DE, 0x36A8, 0xF7DF, 0x36A9, 0xF7E0, 0x36AA,
+ 0xF7E1, 0x36AB, 0xF7E2, 0x36AC, 0xF7E3, 0x36AD, 0xF7E4, 0x36AE, 0xF7E5,
+ 0x36AF, 0xF7E6, 0x36B0, 0xF7E7, 0x36B1, 0xF7E8, 0x36B2, 0xF7E9, 0x36B3,
+ 0xF7EA, 0x36B4, 0xF7EB, 0x36B5, 0xF7EC, 0x36B6, 0xF7ED, 0x36B7, 0xF7EE,
+ 0x36B8, 0xF817, 0x36E1, 0xF818, 0x36E2, 0xF819, 0x36E3, 0xF81A, 0x36E4,
+ 0xF81B, 0x36E5, 0xF81C, 0x36E6, 0xF81D, 0x36E7, 0xFA0C, 0x0274, 0xFA0D,
+ 0x2381, 0xFE30, 0x006D, 0xFE31, 0x007A, 0xFE33, 0x35AF, 0xFE34, 0x35B1,
+ 0xFE35, 0x0082, 0xFE36, 0x0083, 0xFE37, 0x0086, 0xFE38, 0x0087, 0xFE39,
+ 0x008A, 0xFE3A, 0x008B, 0xFE3B, 0x008E, 0xFE3C, 0x008F, 0xFE3D, 0x0092,
+ 0xFE3E, 0x0093, 0xFE3F, 0x0096, 0xFE40, 0x0097, 0xFE41, 0x009A, 0xFE42,
+ 0x009B, 0xFE43, 0x009E, 0xFE44, 0x009F, 0xFE49, 0x00C7, 0xFE4A, 0x00C8,
+ 0xFE4B, 0x00CB, 0xFE4C, 0x00CC, 0xFE4D, 0x00C9, 0xFE4E, 0x00CA, 0xFE4F,
+ 0x35B2, 0xFE50, 0x0070, 0xFE51, 0x0071, 0xFE52, 0x0072, 0xFE54, 0x0074,
+ 0xFE55, 0x0075, 0xFE56, 0x0076, 0xFE57, 0x0077, 0xFE59, 0x00A0, 0xFE5A,
+ 0x00A1, 0xFE5B, 0x00A2, 0xFE5C, 0x00A3, 0xFE5D, 0x00A4, 0xFE5E, 0x00A5,
+ 0xFE5F, 0x00CD, 0xFE60, 0x00CE, 0xFE61, 0x00CF, 0xFE62, 0x00DF, 0xFE63,
+ 0x00E0, 0xFE64, 0x00E1, 0xFE65, 0x00E2, 0xFE66, 0x00E3, 0xFE68, 0x0102,
+ 0xFE69, 0x010C, 0xFE6A, 0x010D, 0xFE6B, 0x010E, 0xFF01, 0x006C, 0xFF02,
+ 0x36E4, 0xFF03, 0x00AE, 0xFF04, 0x0103, 0xFF05, 0x0108, 0xFF06, 0x00AF,
+ 0xFF07, 0x36E3, 0xFF08, 0x0080, 0xFF09, 0x0081, 0xFF0A, 0x00B0, 0xFF0B,
+ 0x00D0, 0xFF0C, 0x0064, 0xFF0D, 0x00D1, 0xFF0E, 0x0067, 0xFF0F, 0x0101,
+ 0xFF10, 0x014D, 0xFF11, 0x014E, 0xFF12, 0x014F, 0xFF13, 0x0150, 0xFF14,
+ 0x0151, 0xFF15, 0x0152, 0xFF16, 0x0153, 0xFF17, 0x0154, 0xFF18, 0x0155,
+ 0xFF19, 0x0156, 0xFF1A, 0x006A, 0xFF1B, 0x0069, 0xFF1C, 0x00D6, 0xFF1D,
+ 0x00D8, 0xFF1E, 0x00D7, 0xFF1F, 0x006B, 0xFF20, 0x0109, 0xFF21, 0x016D,
+ 0xFF22, 0x016E, 0xFF23, 0x016F, 0xFF24, 0x0170, 0xFF25, 0x0171, 0xFF26,
+ 0x0172, 0xFF27, 0x0173, 0xFF28, 0x0174, 0xFF29, 0x0175, 0xFF2A, 0x0176,
+ 0xFF2B, 0x0177, 0xFF2C, 0x0178, 0xFF2D, 0x0179, 0xFF2E, 0x017A, 0xFF2F,
+ 0x017B, 0xFF30, 0x017C, 0xFF31, 0x017D, 0xFF32, 0x017E, 0xFF33, 0x017F,
+ 0xFF34, 0x0180, 0xFF35, 0x0181, 0xFF36, 0x0182, 0xFF37, 0x0183, 0xFF38,
+ 0x0184, 0xFF39, 0x0185, 0xFF3A, 0x0186, 0xFF3B, 0x35BE, 0xFF3C, 0x0102,
+ 0xFF3D, 0x35BF, 0xFF3E, 0x35B4, 0xFF3F, 0x00C5, 0xFF41, 0x0187, 0xFF42,
+ 0x0188, 0xFF43, 0x0189, 0xFF44, 0x018A, 0xFF45, 0x018B, 0xFF46, 0x018C,
+ 0xFF47, 0x018D, 0xFF48, 0x018E, 0xFF49, 0x018F, 0xFF4A, 0x0190, 0xFF4B,
+ 0x0191, 0xFF4C, 0x0192, 0xFF4D, 0x0193, 0xFF4E, 0x0194, 0xFF4F, 0x0195,
+ 0xFF50, 0x0196, 0xFF51, 0x0197, 0xFF52, 0x0198, 0xFF53, 0x0199, 0xFF54,
+ 0x019A, 0xFF55, 0x019B, 0xFF56, 0x019C, 0xFF57, 0x019D, 0xFF58, 0x019E,
+ 0xFF59, 0x019F, 0xFF5A, 0x01A0, 0xFF5B, 0x0084, 0xFF5C, 0x0078, 0xFF5D,
+ 0x0085, 0xFF5E, 0x00E4, 0xFF64, 0x0071, 0xFFE0, 0x0106, 0xFFE1, 0x0107,
+ 0xFFE2, 0x36E1, 0xFFE3, 0x00C4, 0xFFE4, 0x36E2, 0xFFE5, 0x0104,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.cpp b/core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.cpp
new file mode 100644
index 0000000000..a7d1b17986
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.cpp
@@ -0,0 +1,56 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h"
+
+#include "core/fpdfapi/fpdf_cmaps/cmap_int.h"
+#include "core/fpdfapi/fpdf_font/font_int.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_resource.h"
+#include "core/include/fxcrt/fx_basic.h" // For FX_ArraySize().
+
+static const FXCMAP_CMap g_FXCMAP_CNS1_cmaps[] = {
+ {"B5pc-H", FXCMAP_CMap::Range, g_FXCMAP_B5pc_H_0, 247, FXCMAP_CMap::None,
+ NULL, 0, 0},
+ {"B5pc-V", FXCMAP_CMap::Range, g_FXCMAP_B5pc_V_0, 12, FXCMAP_CMap::None,
+ NULL, 0, -1},
+ {"HKscs-B5-H", FXCMAP_CMap::Range, g_FXCMAP_HKscs_B5_H_5, 1210,
+ FXCMAP_CMap::None, NULL, 0, 0},
+ {"HKscs-B5-V", FXCMAP_CMap::Range, g_FXCMAP_HKscs_B5_V_5, 13,
+ FXCMAP_CMap::None, NULL, 0, -1},
+ {"ETen-B5-H", FXCMAP_CMap::Range, g_FXCMAP_ETen_B5_H_0, 254,
+ FXCMAP_CMap::None, NULL, 0, 0},
+ {"ETen-B5-V", FXCMAP_CMap::Range, g_FXCMAP_ETen_B5_V_0, 13,
+ FXCMAP_CMap::None, NULL, 0, -1},
+ {"ETenms-B5-H", FXCMAP_CMap::Range, g_FXCMAP_ETenms_B5_H_0, 1,
+ FXCMAP_CMap::None, NULL, 0, -2},
+ {"ETenms-B5-V", FXCMAP_CMap::Range, g_FXCMAP_ETenms_B5_V_0, 18,
+ FXCMAP_CMap::None, NULL, 0, -1},
+ {"CNS-EUC-H", FXCMAP_CMap::Range, g_FXCMAP_CNS_EUC_H_0, 157,
+ FXCMAP_CMap::Range, g_FXCMAP_CNS_EUC_H_0_DWord, 238, 0},
+ {"CNS-EUC-V", FXCMAP_CMap::Range, g_FXCMAP_CNS_EUC_V_0, 180,
+ FXCMAP_CMap::Range, g_FXCMAP_CNS_EUC_V_0_DWord, 261, 0},
+ {"UniCNS-UCS2-H", FXCMAP_CMap::Range, g_FXCMAP_UniCNS_UCS2_H_3, 16418,
+ FXCMAP_CMap::None, NULL, 0, 0},
+ {"UniCNS-UCS2-V", FXCMAP_CMap::Range, g_FXCMAP_UniCNS_UCS2_V_3, 13,
+ FXCMAP_CMap::None, NULL, 0, -1},
+ {"UniCNS-UTF16-H", FXCMAP_CMap::Single, g_FXCMAP_UniCNS_UTF16_H_0, 14557,
+ FXCMAP_CMap::None, NULL, 0, 0},
+ {"UniCNS-UTF16-V", FXCMAP_CMap::Range, g_FXCMAP_UniCNS_UCS2_V_3, 13,
+ FXCMAP_CMap::None, NULL, 0, -1},
+};
+
+void CPDF_ModuleMgr::LoadEmbeddedCNS1CMaps() {
+ CPDF_FontGlobals* pFontGlobals =
+ CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals();
+ pFontGlobals->m_EmbeddedCharsets[CIDSET_CNS1].m_pMapList =
+ g_FXCMAP_CNS1_cmaps;
+ pFontGlobals->m_EmbeddedCharsets[CIDSET_CNS1].m_Count =
+ FX_ArraySize(g_FXCMAP_CNS1_cmaps);
+ pFontGlobals->m_EmbeddedToUnicodes[CIDSET_CNS1].m_pMap =
+ g_FXCMAP_CNS1CID2Unicode_5;
+ pFontGlobals->m_EmbeddedToUnicodes[CIDSET_CNS1].m_Count = 19088;
+}
diff --git a/core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h b/core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h
new file mode 100644
index 0000000000..249d529b91
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/CNS1/cmaps_cns1.h
@@ -0,0 +1,29 @@
+// Copyright 2015 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_FPDFAPI_FPDF_CMAPS_CNS1_CMAPS_CNS1_H_
+#define CORE_FPDFAPI_FPDF_CMAPS_CNS1_CMAPS_CNS1_H_
+
+#include "core/include/fxcrt/fx_system.h" // For FX_WORD.
+
+extern const FX_WORD g_FXCMAP_B5pc_H_0[];
+extern const FX_WORD g_FXCMAP_B5pc_V_0[];
+extern const FX_WORD g_FXCMAP_HKscs_B5_H_5[];
+extern const FX_WORD g_FXCMAP_HKscs_B5_V_5[];
+extern const FX_WORD g_FXCMAP_ETen_B5_H_0[];
+extern const FX_WORD g_FXCMAP_ETen_B5_V_0[];
+extern const FX_WORD g_FXCMAP_ETenms_B5_H_0[];
+extern const FX_WORD g_FXCMAP_ETenms_B5_V_0[];
+extern const FX_WORD g_FXCMAP_CNS_EUC_H_0[];
+extern const FX_WORD g_FXCMAP_CNS_EUC_H_0_DWord[];
+extern const FX_WORD g_FXCMAP_CNS_EUC_V_0[];
+extern const FX_WORD g_FXCMAP_CNS_EUC_V_0_DWord[];
+extern const FX_WORD g_FXCMAP_UniCNS_UCS2_H_3[];
+extern const FX_WORD g_FXCMAP_UniCNS_UCS2_V_3[];
+extern const FX_WORD g_FXCMAP_UniCNS_UTF16_H_0[];
+extern const FX_WORD g_FXCMAP_CNS1CID2Unicode_5[];
+
+#endif // CORE_FPDFAPI_FPDF_CMAPS_CNS1_CMAPS_CNS1_H_
diff --git a/core/fpdfapi/fpdf_cmaps/GB1/Adobe-GB1-UCS2_5.cpp b/core/fpdfapi/fpdf_cmaps/GB1/Adobe-GB1-UCS2_5.cpp
new file mode 100644
index 0000000000..c6e5752ede
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/GB1/Adobe-GB1-UCS2_5.cpp
@@ -0,0 +1,3375 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h"
+
+const FX_WORD g_FXCMAP_GB1CID2Unicode_5[30284] = {
+ 0xFFFD, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x0030,
+ 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039,
+ 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, 0x0042,
+ 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B,
+ 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054,
+ 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D,
+ 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066,
+ 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+ 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x3000, 0x3001, 0x3002,
+ 0x00B7, 0x02C9, 0x02C7, 0x00A8, 0x3003, 0x3005, 0x2014, 0xFF5E, 0x2016,
+ 0x2026, 0x2018, 0x2019, 0x201C, 0x201D, 0x3014, 0x3015, 0x3008, 0x3009,
+ 0x300A, 0x300B, 0x300C, 0x300D, 0x300E, 0x300F, 0x3016, 0x3017, 0x3010,
+ 0x3011, 0x00B1, 0x00D7, 0x00F7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220F,
+ 0x222A, 0x2229, 0x2208, 0x2237, 0x221A, 0x22A5, 0x2225, 0x2220, 0x2312,
+ 0x2299, 0x222B, 0x222E, 0x2261, 0x224C, 0x2248, 0x223D, 0x221D, 0x2260,
+ 0x226E, 0x226F, 0x2264, 0x2265, 0x221E, 0x2235, 0x2234, 0x2642, 0x2640,
+ 0x00B0, 0x2032, 0x2033, 0x2103, 0xFF04, 0x00A4, 0xFFE0, 0xFFE1, 0x2030,
+ 0x00A7, 0x2116, 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, 0x25C7, 0x25C6,
+ 0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x203B, 0x2192, 0x2190, 0x2191, 0x2193,
+ 0x3013, 0x2488, 0x2489, 0x248A, 0x248B, 0x248C, 0x248D, 0x248E, 0x248F,
+ 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497, 0x2498,
+ 0x2499, 0x249A, 0x249B, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479,
+ 0x247A, 0x247B, 0x247C, 0x247D, 0x247E, 0x247F, 0x2480, 0x2481, 0x2482,
+ 0x2483, 0x2484, 0x2485, 0x2486, 0x2487, 0x2460, 0x2461, 0x2462, 0x2463,
+ 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x3220, 0x3221, 0x3222,
+ 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0x2160, 0x2161,
+ 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216A,
+ 0x216B, 0xFF01, 0xFF02, 0xFF03, 0xFFE5, 0xFF05, 0xFF06, 0xFF07, 0xFF08,
+ 0xFF09, 0xFF0A, 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F, 0xFF10, 0xFF11,
+ 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0xFF1A,
+ 0xFF1B, 0xFF1C, 0xFF1D, 0xFF1E, 0xFF1F, 0xFF20, 0xFF21, 0xFF22, 0xFF23,
+ 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C,
+ 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35,
+ 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF3B, 0xFF3C, 0xFF3D, 0xFF3E,
+ 0xFF3F, 0xFF40, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47,
+ 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50,
+ 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59,
+ 0xFF5A, 0xFF5B, 0xFF5C, 0xFF5D, 0xFFE3, 0x3041, 0x3042, 0x3043, 0x3044,
+ 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D,
+ 0x304E, 0x304F, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056,
+ 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F,
+ 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
+ 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071,
+ 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A,
+ 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083,
+ 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C,
+ 0x308D, 0x308E, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A1, 0x30A2,
+ 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA, 0x30AB,
+ 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4,
+ 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD,
+ 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6,
+ 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF,
+ 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8,
+ 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0, 0x30E1,
+ 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, 0x30E9, 0x30EA,
+ 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3,
+ 0x30F4, 0x30F5, 0x30F6, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396,
+ 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
+ 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9,
+ 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9,
+ 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3,
+ 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0xFF0C, 0x3002, 0x3001,
+ 0xFF1A, 0xFF1B, 0xFF01, 0xFF1F, 0xFE35, 0xFE36, 0xFE39, 0xFE3A, 0xFE3F,
+ 0xFE40, 0xFE3D, 0xFE3E, 0xFE41, 0xFE42, 0xFE43, 0xFE44, 0x3016, 0x3017,
+ 0xFE3B, 0xFE3C, 0xFE37, 0xFE38, 0xFE31, 0x2026, 0xFE33, 0xFE34, 0x0410,
+ 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418,
+ 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421,
+ 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A,
+ 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, 0x0430, 0x0431, 0x0432, 0x0433,
+ 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B,
+ 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444,
+ 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D,
+ 0x044E, 0x044F, 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, 0x011B,
+ 0x00E8, 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2, 0x00F2,
+ 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8, 0x01DA, 0x01DC, 0x00FC,
+ 0x00EA, 0x0251, 0x1E3F, 0x0144, 0x0148, 0x01F9, 0x0261, 0x3105, 0x3106,
+ 0x3107, 0x3108, 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E, 0x310F,
+ 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118,
+ 0x3119, 0x311A, 0x311B, 0x311C, 0x311D, 0x311E, 0x311F, 0x3120, 0x3121,
+ 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128, 0x3129, 0xE7CD,
+ 0x2500, 0x2501, 0x2502, 0x2503, 0x2504, 0x2505, 0x2506, 0x2507, 0x2508,
+ 0x2509, 0x250A, 0x250B, 0x250C, 0x250D, 0x250E, 0x250F, 0x2510, 0x2511,
+ 0x2512, 0x2513, 0x2514, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251A,
+ 0x251B, 0x251C, 0x251D, 0x251E, 0x251F, 0x2520, 0x2521, 0x2522, 0x2523,
+ 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252A, 0x252B, 0x252C,
+ 0x252D, 0x252E, 0x252F, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535,
+ 0x2536, 0x2537, 0x2538, 0x2539, 0x253A, 0x253B, 0x253C, 0x253D, 0x253E,
+ 0x253F, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547,
+ 0x2548, 0x2549, 0x254A, 0x254B, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025,
+ 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E,
+ 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040,
+ 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049,
+ 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052,
+ 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B,
+ 0x005C, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064,
+ 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D,
+ 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076,
+ 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x0101,
+ 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, 0x011B, 0x00E8, 0x012B, 0x00ED,
+ 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2, 0x00F2, 0x016B, 0x00FA, 0x01D4,
+ 0x00F9, 0x01D6, 0x01D8, 0x01DA, 0x01DC, 0x00FC, 0x00EA, 0x0251, 0x1E3F,
+ 0x0144, 0x0148, 0x01F9, 0x0261, 0x554A, 0x963F, 0x57C3, 0x6328, 0x54CE,
+ 0x5509, 0x54C0, 0x7691, 0x764C, 0x853C, 0x77EE, 0x827E, 0x788D, 0x7231,
+ 0x9698, 0x978D, 0x6C28, 0x5B89, 0x4FFA, 0x6309, 0x6697, 0x5CB8, 0x80FA,
+ 0x6848, 0x80AE, 0x6602, 0x76CE, 0x51F9, 0x6556, 0x71AC, 0x7FF1, 0x8884,
+ 0x50B2, 0x5965, 0x61CA, 0x6FB3, 0x82AD, 0x634C, 0x6252, 0x53ED, 0x5427,
+ 0x7B06, 0x516B, 0x75A4, 0x5DF4, 0x62D4, 0x8DCB, 0x9776, 0x628A, 0x8019,
+ 0x575D, 0x9738, 0x7F62, 0x7238, 0x767D, 0x67CF, 0x767E, 0x6446, 0x4F70,
+ 0x8D25, 0x62DC, 0x7A17, 0x6591, 0x73ED, 0x642C, 0x6273, 0x822C, 0x9881,
+ 0x677F, 0x7248, 0x626E, 0x62CC, 0x4F34, 0x74E3, 0x534A, 0x529E, 0x7ECA,
+ 0x90A6, 0x5E2E, 0x6886, 0x699C, 0x8180, 0x7ED1, 0x68D2, 0x78C5, 0x868C,
+ 0x9551, 0x508D, 0x8C24, 0x82DE, 0x80DE, 0x5305, 0x8912, 0x5265, 0x8584,
+ 0x96F9, 0x4FDD, 0x5821, 0x9971, 0x5B9D, 0x62B1, 0x62A5, 0x66B4, 0x8C79,
+ 0x9C8D, 0x7206, 0x676F, 0x7891, 0x60B2, 0x5351, 0x5317, 0x8F88, 0x80CC,
+ 0x8D1D, 0x94A1, 0x500D, 0x72C8, 0x5907, 0x60EB, 0x7119, 0x88AB, 0x5954,
+ 0x82EF, 0x672C, 0x7B28, 0x5D29, 0x7EF7, 0x752D, 0x6CF5, 0x8E66, 0x8FF8,
+ 0x903C, 0x9F3B, 0x6BD4, 0x9119, 0x7B14, 0x5F7C, 0x78A7, 0x84D6, 0x853D,
+ 0x6BD5, 0x6BD9, 0x6BD6, 0x5E01, 0x5E87, 0x75F9, 0x95ED, 0x655D, 0x5F0A,
+ 0x5FC5, 0x8F9F, 0x58C1, 0x81C2, 0x907F, 0x965B, 0x97AD, 0x8FB9, 0x7F16,
+ 0x8D2C, 0x6241, 0x4FBF, 0x53D8, 0x535E, 0x8FA8, 0x8FA9, 0x8FAB, 0x904D,
+ 0x6807, 0x5F6A, 0x8198, 0x8868, 0x9CD6, 0x618B, 0x522B, 0x762A, 0x5F6C,
+ 0x658C, 0x6FD2, 0x6EE8, 0x5BBE, 0x6448, 0x5175, 0x51B0, 0x67C4, 0x4E19,
+ 0x79C9, 0x997C, 0x70B3, 0x75C5, 0x5E76, 0x73BB, 0x83E0, 0x64AD, 0x62E8,
+ 0x94B5, 0x6CE2, 0x535A, 0x52C3, 0x640F, 0x94C2, 0x7B94, 0x4F2F, 0x5E1B,
+ 0x8236, 0x8116, 0x818A, 0x6E24, 0x6CCA, 0x9A73, 0x6355, 0x535C, 0x54FA,
+ 0x8865, 0x57E0, 0x4E0D, 0x5E03, 0x6B65, 0x7C3F, 0x90E8, 0x6016, 0x64E6,
+ 0x731C, 0x88C1, 0x6750, 0x624D, 0x8D22, 0x776C, 0x8E29, 0x91C7, 0x5F69,
+ 0x83DC, 0x8521, 0x9910, 0x53C2, 0x8695, 0x6B8B, 0x60ED, 0x60E8, 0x707F,
+ 0x82CD, 0x8231, 0x4ED3, 0x6CA7, 0x85CF, 0x64CD, 0x7CD9, 0x69FD, 0x66F9,
+ 0x8349, 0x5395, 0x7B56, 0x4FA7, 0x518C, 0x6D4B, 0x5C42, 0x8E6D, 0x63D2,
+ 0x53C9, 0x832C, 0x8336, 0x67E5, 0x78B4, 0x643D, 0x5BDF, 0x5C94, 0x5DEE,
+ 0x8BE7, 0x62C6, 0x67F4, 0x8C7A, 0x6400, 0x63BA, 0x8749, 0x998B, 0x8C17,
+ 0x7F20, 0x94F2, 0x4EA7, 0x9610, 0x98A4, 0x660C, 0x7316, 0x573A, 0x5C1D,
+ 0x5E38, 0x957F, 0x507F, 0x80A0, 0x5382, 0x655E, 0x7545, 0x5531, 0x5021,
+ 0x8D85, 0x6284, 0x949E, 0x671D, 0x5632, 0x6F6E, 0x5DE2, 0x5435, 0x7092,
+ 0x8F66, 0x626F, 0x64A4, 0x63A3, 0x5F7B, 0x6F88, 0x90F4, 0x81E3, 0x8FB0,
+ 0x5C18, 0x6668, 0x5FF1, 0x6C89, 0x9648, 0x8D81, 0x886C, 0x6491, 0x79F0,
+ 0x57CE, 0x6A59, 0x6210, 0x5448, 0x4E58, 0x7A0B, 0x60E9, 0x6F84, 0x8BDA,
+ 0x627F, 0x901E, 0x9A8B, 0x79E4, 0x5403, 0x75F4, 0x6301, 0x5319, 0x6C60,
+ 0x8FDF, 0x5F1B, 0x9A70, 0x803B, 0x9F7F, 0x4F88, 0x5C3A, 0x8D64, 0x7FC5,
+ 0x65A5, 0x70BD, 0x5145, 0x51B2, 0x866B, 0x5D07, 0x5BA0, 0x62BD, 0x916C,
+ 0x7574, 0x8E0C, 0x7A20, 0x6101, 0x7B79, 0x4EC7, 0x7EF8, 0x7785, 0x4E11,
+ 0x81ED, 0x521D, 0x51FA, 0x6A71, 0x53A8, 0x8E87, 0x9504, 0x96CF, 0x6EC1,
+ 0x9664, 0x695A, 0x7840, 0x50A8, 0x77D7, 0x6410, 0x89E6, 0x5904, 0x63E3,
+ 0x5DDD, 0x7A7F, 0x693D, 0x4F20, 0x8239, 0x5598, 0x4E32, 0x75AE, 0x7A97,
+ 0x5E62, 0x5E8A, 0x95EF, 0x521B, 0x5439, 0x708A, 0x6376, 0x9524, 0x5782,
+ 0x6625, 0x693F, 0x9187, 0x5507, 0x6DF3, 0x7EAF, 0x8822, 0x6233, 0x7EF0,
+ 0x75B5, 0x8328, 0x78C1, 0x96CC, 0x8F9E, 0x6148, 0x74F7, 0x8BCD, 0x6B64,
+ 0x523A, 0x8D50, 0x6B21, 0x806A, 0x8471, 0x56F1, 0x5306, 0x4ECE, 0x4E1B,
+ 0x51D1, 0x7C97, 0x918B, 0x7C07, 0x4FC3, 0x8E7F, 0x7BE1, 0x7A9C, 0x6467,
+ 0x5D14, 0x50AC, 0x8106, 0x7601, 0x7CB9, 0x6DEC, 0x7FE0, 0x6751, 0x5B58,
+ 0x5BF8, 0x78CB, 0x64AE, 0x6413, 0x63AA, 0x632B, 0x9519, 0x642D, 0x8FBE,
+ 0x7B54, 0x7629, 0x6253, 0x5927, 0x5446, 0x6B79, 0x50A3, 0x6234, 0x5E26,
+ 0x6B86, 0x4EE3, 0x8D37, 0x888B, 0x5F85, 0x902E, 0x6020, 0x803D, 0x62C5,
+ 0x4E39, 0x5355, 0x90F8, 0x63B8, 0x80C6, 0x65E6, 0x6C2E, 0x4F46, 0x60EE,
+ 0x6DE1, 0x8BDE, 0x5F39, 0x86CB, 0x5F53, 0x6321, 0x515A, 0x8361, 0x6863,
+ 0x5200, 0x6363, 0x8E48, 0x5012, 0x5C9B, 0x7977, 0x5BFC, 0x5230, 0x7A3B,
+ 0x60BC, 0x9053, 0x76D7, 0x5FB7, 0x5F97, 0x7684, 0x8E6C, 0x706F, 0x767B,
+ 0x7B49, 0x77AA, 0x51F3, 0x9093, 0x5824, 0x4F4E, 0x6EF4, 0x8FEA, 0x654C,
+ 0x7B1B, 0x72C4, 0x6DA4, 0x7FDF, 0x5AE1, 0x62B5, 0x5E95, 0x5730, 0x8482,
+ 0x7B2C, 0x5E1D, 0x5F1F, 0x9012, 0x7F14, 0x98A0, 0x6382, 0x6EC7, 0x7898,
+ 0x70B9, 0x5178, 0x975B, 0x57AB, 0x7535, 0x4F43, 0x7538, 0x5E97, 0x60E6,
+ 0x5960, 0x6DC0, 0x6BBF, 0x7889, 0x53FC, 0x96D5, 0x51CB, 0x5201, 0x6389,
+ 0x540A, 0x9493, 0x8C03, 0x8DCC, 0x7239, 0x789F, 0x8776, 0x8FED, 0x8C0D,
+ 0x53E0, 0x4E01, 0x76EF, 0x53EE, 0x9489, 0x9876, 0x9F0E, 0x952D, 0x5B9A,
+ 0x8BA2, 0x4E22, 0x4E1C, 0x51AC, 0x8463, 0x61C2, 0x52A8, 0x680B, 0x4F97,
+ 0x606B, 0x51BB, 0x6D1E, 0x515C, 0x6296, 0x6597, 0x9661, 0x8C46, 0x9017,
+ 0x75D8, 0x90FD, 0x7763, 0x6BD2, 0x728A, 0x72EC, 0x8BFB, 0x5835, 0x7779,
+ 0x8D4C, 0x675C, 0x9540, 0x809A, 0x5EA6, 0x6E21, 0x5992, 0x7AEF, 0x77ED,
+ 0x953B, 0x6BB5, 0x65AD, 0x7F0E, 0x5806, 0x5151, 0x961F, 0x5BF9, 0x58A9,
+ 0x5428, 0x8E72, 0x6566, 0x987F, 0x56E4, 0x949D, 0x76FE, 0x9041, 0x6387,
+ 0x54C6, 0x591A, 0x593A, 0x579B, 0x8EB2, 0x6735, 0x8DFA, 0x8235, 0x5241,
+ 0x60F0, 0x5815, 0x86FE, 0x5CE8, 0x9E45, 0x4FC4, 0x989D, 0x8BB9, 0x5A25,
+ 0x6076, 0x5384, 0x627C, 0x904F, 0x9102, 0x997F, 0x6069, 0x800C, 0x513F,
+ 0x8033, 0x5C14, 0x9975, 0x6D31, 0x4E8C, 0x8D30, 0x53D1, 0x7F5A, 0x7B4F,
+ 0x4F10, 0x4E4F, 0x9600, 0x6CD5, 0x73D0, 0x85E9, 0x5E06, 0x756A, 0x7FFB,
+ 0x6A0A, 0x77FE, 0x9492, 0x7E41, 0x51E1, 0x70E6, 0x53CD, 0x8FD4, 0x8303,
+ 0x8D29, 0x72AF, 0x996D, 0x6CDB, 0x574A, 0x82B3, 0x65B9, 0x80AA, 0x623F,
+ 0x9632, 0x59A8, 0x4EFF, 0x8BBF, 0x7EBA, 0x653E, 0x83F2, 0x975E, 0x5561,
+ 0x98DE, 0x80A5, 0x532A, 0x8BFD, 0x5420, 0x80BA, 0x5E9F, 0x6CB8, 0x8D39,
+ 0x82AC, 0x915A, 0x5429, 0x6C1B, 0x5206, 0x7EB7, 0x575F, 0x711A, 0x6C7E,
+ 0x7C89, 0x594B, 0x4EFD, 0x5FFF, 0x6124, 0x7CAA, 0x4E30, 0x5C01, 0x67AB,
+ 0x8702, 0x5CF0, 0x950B, 0x98CE, 0x75AF, 0x70FD, 0x9022, 0x51AF, 0x7F1D,
+ 0x8BBD, 0x5949, 0x51E4, 0x4F5B, 0x5426, 0x592B, 0x6577, 0x80A4, 0x5B75,
+ 0x6276, 0x62C2, 0x8F90, 0x5E45, 0x6C1F, 0x7B26, 0x4F0F, 0x4FD8, 0x670D,
+ 0x6D6E, 0x6DAA, 0x798F, 0x88B1, 0x5F17, 0x752B, 0x629A, 0x8F85, 0x4FEF,
+ 0x91DC, 0x65A7, 0x812F, 0x8151, 0x5E9C, 0x8150, 0x8D74, 0x526F, 0x8986,
+ 0x8D4B, 0x590D, 0x5085, 0x4ED8, 0x961C, 0x7236, 0x8179, 0x8D1F, 0x5BCC,
+ 0x8BA3, 0x9644, 0x5987, 0x7F1A, 0x5490, 0x5676, 0x560E, 0x8BE5, 0x6539,
+ 0x6982, 0x9499, 0x76D6, 0x6E89, 0x5E72, 0x7518, 0x6746, 0x67D1, 0x7AFF,
+ 0x809D, 0x8D76, 0x611F, 0x79C6, 0x6562, 0x8D63, 0x5188, 0x521A, 0x94A2,
+ 0x7F38, 0x809B, 0x7EB2, 0x5C97, 0x6E2F, 0x6760, 0x7BD9, 0x768B, 0x9AD8,
+ 0x818F, 0x7F94, 0x7CD5, 0x641E, 0x9550, 0x7A3F, 0x544A, 0x54E5, 0x6B4C,
+ 0x6401, 0x6208, 0x9E3D, 0x80F3, 0x7599, 0x5272, 0x9769, 0x845B, 0x683C,
+ 0x86E4, 0x9601, 0x9694, 0x94EC, 0x4E2A, 0x5404, 0x7ED9, 0x6839, 0x8DDF,
+ 0x8015, 0x66F4, 0x5E9A, 0x7FB9, 0x57C2, 0x803F, 0x6897, 0x5DE5, 0x653B,
+ 0x529F, 0x606D, 0x9F9A, 0x4F9B, 0x8EAC, 0x516C, 0x5BAB, 0x5F13, 0x5DE9,
+ 0x6C5E, 0x62F1, 0x8D21, 0x5171, 0x94A9, 0x52FE, 0x6C9F, 0x82DF, 0x72D7,
+ 0x57A2, 0x6784, 0x8D2D, 0x591F, 0x8F9C, 0x83C7, 0x5495, 0x7B8D, 0x4F30,
+ 0x6CBD, 0x5B64, 0x59D1, 0x9F13, 0x53E4, 0x86CA, 0x9AA8, 0x8C37, 0x80A1,
+ 0x6545, 0x987E, 0x56FA, 0x96C7, 0x522E, 0x74DC, 0x5250, 0x5BE1, 0x6302,
+ 0x8902, 0x4E56, 0x62D0, 0x602A, 0x68FA, 0x5173, 0x5B98, 0x51A0, 0x89C2,
+ 0x7BA1, 0x9986, 0x7F50, 0x60EF, 0x704C, 0x8D2F, 0x5149, 0x5E7F, 0x901B,
+ 0x7470, 0x89C4, 0x572D, 0x7845, 0x5F52, 0x9F9F, 0x95FA, 0x8F68, 0x9B3C,
+ 0x8BE1, 0x7678, 0x6842, 0x67DC, 0x8DEA, 0x8D35, 0x523D, 0x8F8A, 0x6EDA,
+ 0x68CD, 0x9505, 0x90ED, 0x56FD, 0x679C, 0x88F9, 0x8FC7, 0x54C8, 0x9AB8,
+ 0x5B69, 0x6D77, 0x6C26, 0x4EA5, 0x5BB3, 0x9A87, 0x9163, 0x61A8, 0x90AF,
+ 0x97E9, 0x542B, 0x6DB5, 0x5BD2, 0x51FD, 0x558A, 0x7F55, 0x7FF0, 0x64BC,
+ 0x634D, 0x65F1, 0x61BE, 0x608D, 0x710A, 0x6C57, 0x6C49, 0x592F, 0x676D,
+ 0x822A, 0x58D5, 0x568E, 0x8C6A, 0x6BEB, 0x90DD, 0x597D, 0x8017, 0x53F7,
+ 0x6D69, 0x5475, 0x559D, 0x8377, 0x83CF, 0x6838, 0x79BE, 0x548C, 0x4F55,
+ 0x5408, 0x76D2, 0x8C89, 0x9602, 0x6CB3, 0x6DB8, 0x8D6B, 0x8910, 0x9E64,
+ 0x8D3A, 0x563F, 0x9ED1, 0x75D5, 0x5F88, 0x72E0, 0x6068, 0x54FC, 0x4EA8,
+ 0x6A2A, 0x8861, 0x6052, 0x8F70, 0x54C4, 0x70D8, 0x8679, 0x9E3F, 0x6D2A,
+ 0x5B8F, 0x5F18, 0x7EA2, 0x5589, 0x4FAF, 0x7334, 0x543C, 0x539A, 0x5019,
+ 0x540E, 0x547C, 0x4E4E, 0x5FFD, 0x745A, 0x58F6, 0x846B, 0x80E1, 0x8774,
+ 0x72D0, 0x7CCA, 0x6E56, 0x5F27, 0x864E, 0x552C, 0x62A4, 0x4E92, 0x6CAA,
+ 0x6237, 0x82B1, 0x54D7, 0x534E, 0x733E, 0x6ED1, 0x753B, 0x5212, 0x5316,
+ 0x8BDD, 0x69D0, 0x5F8A, 0x6000, 0x6DEE, 0x574F, 0x6B22, 0x73AF, 0x6853,
+ 0x8FD8, 0x7F13, 0x6362, 0x60A3, 0x5524, 0x75EA, 0x8C62, 0x7115, 0x6DA3,
+ 0x5BA6, 0x5E7B, 0x8352, 0x614C, 0x9EC4, 0x78FA, 0x8757, 0x7C27, 0x7687,
+ 0x51F0, 0x60F6, 0x714C, 0x6643, 0x5E4C, 0x604D, 0x8C0E, 0x7070, 0x6325,
+ 0x8F89, 0x5FBD, 0x6062, 0x86D4, 0x56DE, 0x6BC1, 0x6094, 0x6167, 0x5349,
+ 0x60E0, 0x6666, 0x8D3F, 0x79FD, 0x4F1A, 0x70E9, 0x6C47, 0x8BB3, 0x8BF2,
+ 0x7ED8, 0x8364, 0x660F, 0x5A5A, 0x9B42, 0x6D51, 0x6DF7, 0x8C41, 0x6D3B,
+ 0x4F19, 0x706B, 0x83B7, 0x6216, 0x60D1, 0x970D, 0x8D27, 0x7978, 0x51FB,
+ 0x573E, 0x57FA, 0x673A, 0x7578, 0x7A3D, 0x79EF, 0x7B95, 0x808C, 0x9965,
+ 0x8FF9, 0x6FC0, 0x8BA5, 0x9E21, 0x59EC, 0x7EE9, 0x7F09, 0x5409, 0x6781,
+ 0x68D8, 0x8F91, 0x7C4D, 0x96C6, 0x53CA, 0x6025, 0x75BE, 0x6C72, 0x5373,
+ 0x5AC9, 0x7EA7, 0x6324, 0x51E0, 0x810A, 0x5DF1, 0x84DF, 0x6280, 0x5180,
+ 0x5B63, 0x4F0E, 0x796D, 0x5242, 0x60B8, 0x6D4E, 0x5BC4, 0x5BC2, 0x8BA1,
+ 0x8BB0, 0x65E2, 0x5FCC, 0x9645, 0x5993, 0x7EE7, 0x7EAA, 0x5609, 0x67B7,
+ 0x5939, 0x4F73, 0x5BB6, 0x52A0, 0x835A, 0x988A, 0x8D3E, 0x7532, 0x94BE,
+ 0x5047, 0x7A3C, 0x4EF7, 0x67B6, 0x9A7E, 0x5AC1, 0x6B7C, 0x76D1, 0x575A,
+ 0x5C16, 0x7B3A, 0x95F4, 0x714E, 0x517C, 0x80A9, 0x8270, 0x5978, 0x7F04,
+ 0x8327, 0x68C0, 0x67EC, 0x78B1, 0x7877, 0x62E3, 0x6361, 0x7B80, 0x4FED,
+ 0x526A, 0x51CF, 0x8350, 0x69DB, 0x9274, 0x8DF5, 0x8D31, 0x89C1, 0x952E,
+ 0x7BAD, 0x4EF6, 0x5065, 0x8230, 0x5251, 0x996F, 0x6E10, 0x6E85, 0x6DA7,
+ 0x5EFA, 0x50F5, 0x59DC, 0x5C06, 0x6D46, 0x6C5F, 0x7586, 0x848B, 0x6868,
+ 0x5956, 0x8BB2, 0x5320, 0x9171, 0x964D, 0x8549, 0x6912, 0x7901, 0x7126,
+ 0x80F6, 0x4EA4, 0x90CA, 0x6D47, 0x9A84, 0x5A07, 0x56BC, 0x6405, 0x94F0,
+ 0x77EB, 0x4FA5, 0x811A, 0x72E1, 0x89D2, 0x997A, 0x7F34, 0x7EDE, 0x527F,
+ 0x6559, 0x9175, 0x8F7F, 0x8F83, 0x53EB, 0x7A96, 0x63ED, 0x63A5, 0x7686,
+ 0x79F8, 0x8857, 0x9636, 0x622A, 0x52AB, 0x8282, 0x6854, 0x6770, 0x6377,
+ 0x776B, 0x7AED, 0x6D01, 0x7ED3, 0x89E3, 0x59D0, 0x6212, 0x85C9, 0x82A5,
+ 0x754C, 0x501F, 0x4ECB, 0x75A5, 0x8BEB, 0x5C4A, 0x5DFE, 0x7B4B, 0x65A4,
+ 0x91D1, 0x4ECA, 0x6D25, 0x895F, 0x7D27, 0x9526, 0x4EC5, 0x8C28, 0x8FDB,
+ 0x9773, 0x664B, 0x7981, 0x8FD1, 0x70EC, 0x6D78, 0x5C3D, 0x52B2, 0x8346,
+ 0x5162, 0x830E, 0x775B, 0x6676, 0x9CB8, 0x4EAC, 0x60CA, 0x7CBE, 0x7CB3,
+ 0x7ECF, 0x4E95, 0x8B66, 0x666F, 0x9888, 0x9759, 0x5883, 0x656C, 0x955C,
+ 0x5F84, 0x75C9, 0x9756, 0x7ADF, 0x7ADE, 0x51C0, 0x70AF, 0x7A98, 0x63EA,
+ 0x7A76, 0x7EA0, 0x7396, 0x97ED, 0x4E45, 0x7078, 0x4E5D, 0x9152, 0x53A9,
+ 0x6551, 0x65E7, 0x81FC, 0x8205, 0x548E, 0x5C31, 0x759A, 0x97A0, 0x62D8,
+ 0x72D9, 0x75BD, 0x5C45, 0x9A79, 0x83CA, 0x5C40, 0x5480, 0x77E9, 0x4E3E,
+ 0x6CAE, 0x805A, 0x62D2, 0x636E, 0x5DE8, 0x5177, 0x8DDD, 0x8E1E, 0x952F,
+ 0x4FF1, 0x53E5, 0x60E7, 0x70AC, 0x5267, 0x6350, 0x9E43, 0x5A1F, 0x5026,
+ 0x7737, 0x5377, 0x7EE2, 0x6485, 0x652B, 0x6289, 0x6398, 0x5014, 0x7235,
+ 0x89C9, 0x51B3, 0x8BC0, 0x7EDD, 0x5747, 0x83CC, 0x94A7, 0x519B, 0x541B,
+ 0x5CFB, 0x4FCA, 0x7AE3, 0x6D5A, 0x90E1, 0x9A8F, 0x5580, 0x5496, 0x5361,
+ 0x54AF, 0x5F00, 0x63E9, 0x6977, 0x51EF, 0x6168, 0x520A, 0x582A, 0x52D8,
+ 0x574E, 0x780D, 0x770B, 0x5EB7, 0x6177, 0x7CE0, 0x625B, 0x6297, 0x4EA2,
+ 0x7095, 0x8003, 0x62F7, 0x70E4, 0x9760, 0x5777, 0x82DB, 0x67EF, 0x68F5,
+ 0x78D5, 0x9897, 0x79D1, 0x58F3, 0x54B3, 0x53EF, 0x6E34, 0x514B, 0x523B,
+ 0x5BA2, 0x8BFE, 0x80AF, 0x5543, 0x57A6, 0x6073, 0x5751, 0x542D, 0x7A7A,
+ 0x6050, 0x5B54, 0x63A7, 0x62A0, 0x53E3, 0x6263, 0x5BC7, 0x67AF, 0x54ED,
+ 0x7A9F, 0x82E6, 0x9177, 0x5E93, 0x88E4, 0x5938, 0x57AE, 0x630E, 0x8DE8,
+ 0x80EF, 0x5757, 0x7B77, 0x4FA9, 0x5FEB, 0x5BBD, 0x6B3E, 0x5321, 0x7B50,
+ 0x72C2, 0x6846, 0x77FF, 0x7736, 0x65F7, 0x51B5, 0x4E8F, 0x76D4, 0x5CBF,
+ 0x7AA5, 0x8475, 0x594E, 0x9B41, 0x5080, 0x9988, 0x6127, 0x6E83, 0x5764,
+ 0x6606, 0x6346, 0x56F0, 0x62EC, 0x6269, 0x5ED3, 0x9614, 0x5783, 0x62C9,
+ 0x5587, 0x8721, 0x814A, 0x8FA3, 0x5566, 0x83B1, 0x6765, 0x8D56, 0x84DD,
+ 0x5A6A, 0x680F, 0x62E6, 0x7BEE, 0x9611, 0x5170, 0x6F9C, 0x8C30, 0x63FD,
+ 0x89C8, 0x61D2, 0x7F06, 0x70C2, 0x6EE5, 0x7405, 0x6994, 0x72FC, 0x5ECA,
+ 0x90CE, 0x6717, 0x6D6A, 0x635E, 0x52B3, 0x7262, 0x8001, 0x4F6C, 0x59E5,
+ 0x916A, 0x70D9, 0x6D9D, 0x52D2, 0x4E50, 0x96F7, 0x956D, 0x857E, 0x78CA,
+ 0x7D2F, 0x5121, 0x5792, 0x64C2, 0x808B, 0x7C7B, 0x6CEA, 0x68F1, 0x695E,
+ 0x51B7, 0x5398, 0x68A8, 0x7281, 0x9ECE, 0x7BF1, 0x72F8, 0x79BB, 0x6F13,
+ 0x7406, 0x674E, 0x91CC, 0x9CA4, 0x793C, 0x8389, 0x8354, 0x540F, 0x6817,
+ 0x4E3D, 0x5389, 0x52B1, 0x783E, 0x5386, 0x5229, 0x5088, 0x4F8B, 0x4FD0,
+ 0x75E2, 0x7ACB, 0x7C92, 0x6CA5, 0x96B6, 0x529B, 0x7483, 0x54E9, 0x4FE9,
+ 0x8054, 0x83B2, 0x8FDE, 0x9570, 0x5EC9, 0x601C, 0x6D9F, 0x5E18, 0x655B,
+ 0x8138, 0x94FE, 0x604B, 0x70BC, 0x7EC3, 0x7CAE, 0x51C9, 0x6881, 0x7CB1,
+ 0x826F, 0x4E24, 0x8F86, 0x91CF, 0x667E, 0x4EAE, 0x8C05, 0x64A9, 0x804A,
+ 0x50DA, 0x7597, 0x71CE, 0x5BE5, 0x8FBD, 0x6F66, 0x4E86, 0x6482, 0x9563,
+ 0x5ED6, 0x6599, 0x5217, 0x88C2, 0x70C8, 0x52A3, 0x730E, 0x7433, 0x6797,
+ 0x78F7, 0x9716, 0x4E34, 0x90BB, 0x9CDE, 0x6DCB, 0x51DB, 0x8D41, 0x541D,
+ 0x62CE, 0x73B2, 0x83F1, 0x96F6, 0x9F84, 0x94C3, 0x4F36, 0x7F9A, 0x51CC,
+ 0x7075, 0x9675, 0x5CAD, 0x9886, 0x53E6, 0x4EE4, 0x6E9C, 0x7409, 0x69B4,
+ 0x786B, 0x998F, 0x7559, 0x5218, 0x7624, 0x6D41, 0x67F3, 0x516D, 0x9F99,
+ 0x804B, 0x5499, 0x7B3C, 0x7ABF, 0x9686, 0x5784, 0x62E2, 0x9647, 0x697C,
+ 0x5A04, 0x6402, 0x7BD3, 0x6F0F, 0x964B, 0x82A6, 0x5362, 0x9885, 0x5E90,
+ 0x7089, 0x63B3, 0x5364, 0x864F, 0x9C81, 0x9E93, 0x788C, 0x9732, 0x8DEF,
+ 0x8D42, 0x9E7F, 0x6F5E, 0x7984, 0x5F55, 0x9646, 0x622E, 0x9A74, 0x5415,
+ 0x94DD, 0x4FA3, 0x65C5, 0x5C65, 0x5C61, 0x7F15, 0x8651, 0x6C2F, 0x5F8B,
+ 0x7387, 0x6EE4, 0x7EFF, 0x5CE6, 0x631B, 0x5B6A, 0x6EE6, 0x5375, 0x4E71,
+ 0x63A0, 0x7565, 0x62A1, 0x8F6E, 0x4F26, 0x4ED1, 0x6CA6, 0x7EB6, 0x8BBA,
+ 0x841D, 0x87BA, 0x7F57, 0x903B, 0x9523, 0x7BA9, 0x9AA1, 0x88F8, 0x843D,
+ 0x6D1B, 0x9A86, 0x7EDC, 0x5988, 0x9EBB, 0x739B, 0x7801, 0x8682, 0x9A6C,
+ 0x9A82, 0x561B, 0x5417, 0x57CB, 0x4E70, 0x9EA6, 0x5356, 0x8FC8, 0x8109,
+ 0x7792, 0x9992, 0x86EE, 0x6EE1, 0x8513, 0x66FC, 0x6162, 0x6F2B, 0x8C29,
+ 0x8292, 0x832B, 0x76F2, 0x6C13, 0x5FD9, 0x83BD, 0x732B, 0x8305, 0x951A,
+ 0x6BDB, 0x77DB, 0x94C6, 0x536F, 0x8302, 0x5192, 0x5E3D, 0x8C8C, 0x8D38,
+ 0x4E48, 0x73AB, 0x679A, 0x6885, 0x9176, 0x9709, 0x7164, 0x6CA1, 0x7709,
+ 0x5A92, 0x9541, 0x6BCF, 0x7F8E, 0x6627, 0x5BD0, 0x59B9, 0x5A9A, 0x95E8,
+ 0x95F7, 0x4EEC, 0x840C, 0x8499, 0x6AAC, 0x76DF, 0x9530, 0x731B, 0x68A6,
+ 0x5B5F, 0x772F, 0x919A, 0x9761, 0x7CDC, 0x8FF7, 0x8C1C, 0x5F25, 0x7C73,
+ 0x79D8, 0x89C5, 0x6CCC, 0x871C, 0x5BC6, 0x5E42, 0x68C9, 0x7720, 0x7EF5,
+ 0x5195, 0x514D, 0x52C9, 0x5A29, 0x7F05, 0x9762, 0x82D7, 0x63CF, 0x7784,
+ 0x85D0, 0x79D2, 0x6E3A, 0x5E99, 0x5999, 0x8511, 0x706D, 0x6C11, 0x62BF,
+ 0x76BF, 0x654F, 0x60AF, 0x95FD, 0x660E, 0x879F, 0x9E23, 0x94ED, 0x540D,
+ 0x547D, 0x8C2C, 0x6478, 0x6479, 0x8611, 0x6A21, 0x819C, 0x78E8, 0x6469,
+ 0x9B54, 0x62B9, 0x672B, 0x83AB, 0x58A8, 0x9ED8, 0x6CAB, 0x6F20, 0x5BDE,
+ 0x964C, 0x8C0B, 0x725F, 0x67D0, 0x62C7, 0x7261, 0x4EA9, 0x59C6, 0x6BCD,
+ 0x5893, 0x66AE, 0x5E55, 0x52DF, 0x6155, 0x6728, 0x76EE, 0x7766, 0x7267,
+ 0x7A46, 0x62FF, 0x54EA, 0x5450, 0x94A0, 0x90A3, 0x5A1C, 0x7EB3, 0x6C16,
+ 0x4E43, 0x5976, 0x8010, 0x5948, 0x5357, 0x7537, 0x96BE, 0x56CA, 0x6320,
+ 0x8111, 0x607C, 0x95F9, 0x6DD6, 0x5462, 0x9981, 0x5185, 0x5AE9, 0x80FD,
+ 0x59AE, 0x9713, 0x502A, 0x6CE5, 0x5C3C, 0x62DF, 0x4F60, 0x533F, 0x817B,
+ 0x9006, 0x6EBA, 0x852B, 0x62C8, 0x5E74, 0x78BE, 0x64B5, 0x637B, 0x5FF5,
+ 0x5A18, 0x917F, 0x9E1F, 0x5C3F, 0x634F, 0x8042, 0x5B7D, 0x556E, 0x954A,
+ 0x954D, 0x6D85, 0x60A8, 0x67E0, 0x72DE, 0x51DD, 0x5B81, 0x62E7, 0x6CDE,
+ 0x725B, 0x626D, 0x94AE, 0x7EBD, 0x8113, 0x6D53, 0x519C, 0x5F04, 0x5974,
+ 0x52AA, 0x6012, 0x5973, 0x6696, 0x8650, 0x759F, 0x632A, 0x61E6, 0x7CEF,
+ 0x8BFA, 0x54E6, 0x6B27, 0x9E25, 0x6BB4, 0x85D5, 0x5455, 0x5076, 0x6CA4,
+ 0x556A, 0x8DB4, 0x722C, 0x5E15, 0x6015, 0x7436, 0x62CD, 0x6392, 0x724C,
+ 0x5F98, 0x6E43, 0x6D3E, 0x6500, 0x6F58, 0x76D8, 0x78D0, 0x76FC, 0x7554,
+ 0x5224, 0x53DB, 0x4E53, 0x5E9E, 0x65C1, 0x802A, 0x80D6, 0x629B, 0x5486,
+ 0x5228, 0x70AE, 0x888D, 0x8DD1, 0x6CE1, 0x5478, 0x80DA, 0x57F9, 0x88F4,
+ 0x8D54, 0x966A, 0x914D, 0x4F69, 0x6C9B, 0x55B7, 0x76C6, 0x7830, 0x62A8,
+ 0x70F9, 0x6F8E, 0x5F6D, 0x84EC, 0x68DA, 0x787C, 0x7BF7, 0x81A8, 0x670B,
+ 0x9E4F, 0x6367, 0x78B0, 0x576F, 0x7812, 0x9739, 0x6279, 0x62AB, 0x5288,
+ 0x7435, 0x6BD7, 0x5564, 0x813E, 0x75B2, 0x76AE, 0x5339, 0x75DE, 0x50FB,
+ 0x5C41, 0x8B6C, 0x7BC7, 0x504F, 0x7247, 0x9A97, 0x98D8, 0x6F02, 0x74E2,
+ 0x7968, 0x6487, 0x77A5, 0x62FC, 0x9891, 0x8D2B, 0x54C1, 0x8058, 0x4E52,
+ 0x576A, 0x82F9, 0x840D, 0x5E73, 0x51ED, 0x74F6, 0x8BC4, 0x5C4F, 0x5761,
+ 0x6CFC, 0x9887, 0x5A46, 0x7834, 0x9B44, 0x8FEB, 0x7C95, 0x5256, 0x6251,
+ 0x94FA, 0x4EC6, 0x8386, 0x8461, 0x83E9, 0x84B2, 0x57D4, 0x6734, 0x5703,
+ 0x666E, 0x6D66, 0x8C31, 0x66DD, 0x7011, 0x671F, 0x6B3A, 0x6816, 0x621A,
+ 0x59BB, 0x4E03, 0x51C4, 0x6F06, 0x67D2, 0x6C8F, 0x5176, 0x68CB, 0x5947,
+ 0x6B67, 0x7566, 0x5D0E, 0x8110, 0x9F50, 0x65D7, 0x7948, 0x7941, 0x9A91,
+ 0x8D77, 0x5C82, 0x4E5E, 0x4F01, 0x542F, 0x5951, 0x780C, 0x5668, 0x6C14,
+ 0x8FC4, 0x5F03, 0x6C7D, 0x6CE3, 0x8BAB, 0x6390, 0x6070, 0x6D3D, 0x7275,
+ 0x6266, 0x948E, 0x94C5, 0x5343, 0x8FC1, 0x7B7E, 0x4EDF, 0x8C26, 0x4E7E,
+ 0x9ED4, 0x94B1, 0x94B3, 0x524D, 0x6F5C, 0x9063, 0x6D45, 0x8C34, 0x5811,
+ 0x5D4C, 0x6B20, 0x6B49, 0x67AA, 0x545B, 0x8154, 0x7F8C, 0x5899, 0x8537,
+ 0x5F3A, 0x62A2, 0x6A47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77A7, 0x4E54,
+ 0x4FA8, 0x5DE7, 0x9798, 0x64AC, 0x7FD8, 0x5CED, 0x4FCF, 0x7A8D, 0x5207,
+ 0x8304, 0x4E14, 0x602F, 0x7A83, 0x94A6, 0x4FB5, 0x4EB2, 0x79E6, 0x7434,
+ 0x52E4, 0x82B9, 0x64D2, 0x79BD, 0x5BDD, 0x6C81, 0x9752, 0x8F7B, 0x6C22,
+ 0x503E, 0x537F, 0x6E05, 0x64CE, 0x6674, 0x6C30, 0x60C5, 0x9877, 0x8BF7,
+ 0x5E86, 0x743C, 0x7A77, 0x79CB, 0x4E18, 0x90B1, 0x7403, 0x6C42, 0x56DA,
+ 0x914B, 0x6CC5, 0x8D8B, 0x533A, 0x86C6, 0x66F2, 0x8EAF, 0x5C48, 0x9A71,
+ 0x6E20, 0x53D6, 0x5A36, 0x9F8B, 0x8DA3, 0x53BB, 0x5708, 0x98A7, 0x6743,
+ 0x919B, 0x6CC9, 0x5168, 0x75CA, 0x62F3, 0x72AC, 0x5238, 0x529D, 0x7F3A,
+ 0x7094, 0x7638, 0x5374, 0x9E4A, 0x69B7, 0x786E, 0x96C0, 0x88D9, 0x7FA4,
+ 0x7136, 0x71C3, 0x5189, 0x67D3, 0x74E4, 0x58E4, 0x6518, 0x56B7, 0x8BA9,
+ 0x9976, 0x6270, 0x7ED5, 0x60F9, 0x70ED, 0x58EC, 0x4EC1, 0x4EBA, 0x5FCD,
+ 0x97E7, 0x4EFB, 0x8BA4, 0x5203, 0x598A, 0x7EAB, 0x6254, 0x4ECD, 0x65E5,
+ 0x620E, 0x8338, 0x84C9, 0x8363, 0x878D, 0x7194, 0x6EB6, 0x5BB9, 0x7ED2,
+ 0x5197, 0x63C9, 0x67D4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5B7A, 0x5982,
+ 0x8FB1, 0x4E73, 0x6C5D, 0x5165, 0x8925, 0x8F6F, 0x962E, 0x854A, 0x745E,
+ 0x9510, 0x95F0, 0x6DA6, 0x82E5, 0x5F31, 0x6492, 0x6D12, 0x8428, 0x816E,
+ 0x9CC3, 0x585E, 0x8D5B, 0x4E09, 0x53C1, 0x4F1E, 0x6563, 0x6851, 0x55D3,
+ 0x4E27, 0x6414, 0x9A9A, 0x626B, 0x5AC2, 0x745F, 0x8272, 0x6DA9, 0x68EE,
+ 0x50E7, 0x838E, 0x7802, 0x6740, 0x5239, 0x6C99, 0x7EB1, 0x50BB, 0x5565,
+ 0x715E, 0x7B5B, 0x6652, 0x73CA, 0x82EB, 0x6749, 0x5C71, 0x5220, 0x717D,
+ 0x886B, 0x95EA, 0x9655, 0x64C5, 0x8D61, 0x81B3, 0x5584, 0x6C55, 0x6247,
+ 0x7F2E, 0x5892, 0x4F24, 0x5546, 0x8D4F, 0x664C, 0x4E0A, 0x5C1A, 0x88F3,
+ 0x68A2, 0x634E, 0x7A0D, 0x70E7, 0x828D, 0x52FA, 0x97F6, 0x5C11, 0x54E8,
+ 0x90B5, 0x7ECD, 0x5962, 0x8D4A, 0x86C7, 0x820C, 0x820D, 0x8D66, 0x6444,
+ 0x5C04, 0x6151, 0x6D89, 0x793E, 0x8BBE, 0x7837, 0x7533, 0x547B, 0x4F38,
+ 0x8EAB, 0x6DF1, 0x5A20, 0x7EC5, 0x795E, 0x6C88, 0x5BA1, 0x5A76, 0x751A,
+ 0x80BE, 0x614E, 0x6E17, 0x58F0, 0x751F, 0x7525, 0x7272, 0x5347, 0x7EF3,
+ 0x7701, 0x76DB, 0x5269, 0x80DC, 0x5723, 0x5E08, 0x5931, 0x72EE, 0x65BD,
+ 0x6E7F, 0x8BD7, 0x5C38, 0x8671, 0x5341, 0x77F3, 0x62FE, 0x65F6, 0x4EC0,
+ 0x98DF, 0x8680, 0x5B9E, 0x8BC6, 0x53F2, 0x77E2, 0x4F7F, 0x5C4E, 0x9A76,
+ 0x59CB, 0x5F0F, 0x793A, 0x58EB, 0x4E16, 0x67FF, 0x4E8B, 0x62ED, 0x8A93,
+ 0x901D, 0x52BF, 0x662F, 0x55DC, 0x566C, 0x9002, 0x4ED5, 0x4F8D, 0x91CA,
+ 0x9970, 0x6C0F, 0x5E02, 0x6043, 0x5BA4, 0x89C6, 0x8BD5, 0x6536, 0x624B,
+ 0x9996, 0x5B88, 0x5BFF, 0x6388, 0x552E, 0x53D7, 0x7626, 0x517D, 0x852C,
+ 0x67A2, 0x68B3, 0x6B8A, 0x6292, 0x8F93, 0x53D4, 0x8212, 0x6DD1, 0x758F,
+ 0x4E66, 0x8D4E, 0x5B70, 0x719F, 0x85AF, 0x6691, 0x66D9, 0x7F72, 0x8700,
+ 0x9ECD, 0x9F20, 0x5C5E, 0x672F, 0x8FF0, 0x6811, 0x675F, 0x620D, 0x7AD6,
+ 0x5885, 0x5EB6, 0x6570, 0x6F31, 0x6055, 0x5237, 0x800D, 0x6454, 0x8870,
+ 0x7529, 0x5E05, 0x6813, 0x62F4, 0x971C, 0x53CC, 0x723D, 0x8C01, 0x6C34,
+ 0x7761, 0x7A0E, 0x542E, 0x77AC, 0x987A, 0x821C, 0x8BF4, 0x7855, 0x6714,
+ 0x70C1, 0x65AF, 0x6495, 0x5636, 0x601D, 0x79C1, 0x53F8, 0x4E1D, 0x6B7B,
+ 0x8086, 0x5BFA, 0x55E3, 0x56DB, 0x4F3A, 0x4F3C, 0x9972, 0x5DF3, 0x677E,
+ 0x8038, 0x6002, 0x9882, 0x9001, 0x5B8B, 0x8BBC, 0x8BF5, 0x641C, 0x8258,
+ 0x64DE, 0x55FD, 0x82CF, 0x9165, 0x4FD7, 0x7D20, 0x901F, 0x7C9F, 0x50F3,
+ 0x5851, 0x6EAF, 0x5BBF, 0x8BC9, 0x8083, 0x9178, 0x849C, 0x7B97, 0x867D,
+ 0x968B, 0x968F, 0x7EE5, 0x9AD3, 0x788E, 0x5C81, 0x7A57, 0x9042, 0x96A7,
+ 0x795F, 0x5B59, 0x635F, 0x7B0B, 0x84D1, 0x68AD, 0x5506, 0x7F29, 0x7410,
+ 0x7D22, 0x9501, 0x6240, 0x584C, 0x4ED6, 0x5B83, 0x5979, 0x5854, 0x736D,
+ 0x631E, 0x8E4B, 0x8E0F, 0x80CE, 0x82D4, 0x62AC, 0x53F0, 0x6CF0, 0x915E,
+ 0x592A, 0x6001, 0x6C70, 0x574D, 0x644A, 0x8D2A, 0x762B, 0x6EE9, 0x575B,
+ 0x6A80, 0x75F0, 0x6F6D, 0x8C2D, 0x8C08, 0x5766, 0x6BEF, 0x8892, 0x78B3,
+ 0x63A2, 0x53F9, 0x70AD, 0x6C64, 0x5858, 0x642A, 0x5802, 0x68E0, 0x819B,
+ 0x5510, 0x7CD6, 0x5018, 0x8EBA, 0x6DCC, 0x8D9F, 0x70EB, 0x638F, 0x6D9B,
+ 0x6ED4, 0x7EE6, 0x8404, 0x6843, 0x9003, 0x6DD8, 0x9676, 0x8BA8, 0x5957,
+ 0x7279, 0x85E4, 0x817E, 0x75BC, 0x8A8A, 0x68AF, 0x5254, 0x8E22, 0x9511,
+ 0x63D0, 0x9898, 0x8E44, 0x557C, 0x4F53, 0x66FF, 0x568F, 0x60D5, 0x6D95,
+ 0x5243, 0x5C49, 0x5929, 0x6DFB, 0x586B, 0x7530, 0x751C, 0x606C, 0x8214,
+ 0x8146, 0x6311, 0x6761, 0x8FE2, 0x773A, 0x8DF3, 0x8D34, 0x94C1, 0x5E16,
+ 0x5385, 0x542C, 0x70C3, 0x6C40, 0x5EF7, 0x505C, 0x4EAD, 0x5EAD, 0x633A,
+ 0x8247, 0x901A, 0x6850, 0x916E, 0x77B3, 0x540C, 0x94DC, 0x5F64, 0x7AE5,
+ 0x6876, 0x6345, 0x7B52, 0x7EDF, 0x75DB, 0x5077, 0x6295, 0x5934, 0x900F,
+ 0x51F8, 0x79C3, 0x7A81, 0x56FE, 0x5F92, 0x9014, 0x6D82, 0x5C60, 0x571F,
+ 0x5410, 0x5154, 0x6E4D, 0x56E2, 0x63A8, 0x9893, 0x817F, 0x8715, 0x892A,
+ 0x9000, 0x541E, 0x5C6F, 0x81C0, 0x62D6, 0x6258, 0x8131, 0x9E35, 0x9640,
+ 0x9A6E, 0x9A7C, 0x692D, 0x59A5, 0x62D3, 0x553E, 0x6316, 0x54C7, 0x86D9,
+ 0x6D3C, 0x5A03, 0x74E6, 0x889C, 0x6B6A, 0x5916, 0x8C4C, 0x5F2F, 0x6E7E,
+ 0x73A9, 0x987D, 0x4E38, 0x70F7, 0x5B8C, 0x7897, 0x633D, 0x665A, 0x7696,
+ 0x60CB, 0x5B9B, 0x5A49, 0x4E07, 0x8155, 0x6C6A, 0x738B, 0x4EA1, 0x6789,
+ 0x7F51, 0x5F80, 0x65FA, 0x671B, 0x5FD8, 0x5984, 0x5A01, 0x5DCD, 0x5FAE,
+ 0x5371, 0x97E6, 0x8FDD, 0x6845, 0x56F4, 0x552F, 0x60DF, 0x4E3A, 0x6F4D,
+ 0x7EF4, 0x82C7, 0x840E, 0x59D4, 0x4F1F, 0x4F2A, 0x5C3E, 0x7EAC, 0x672A,
+ 0x851A, 0x5473, 0x754F, 0x80C3, 0x5582, 0x9B4F, 0x4F4D, 0x6E2D, 0x8C13,
+ 0x5C09, 0x6170, 0x536B, 0x761F, 0x6E29, 0x868A, 0x6587, 0x95FB, 0x7EB9,
+ 0x543B, 0x7A33, 0x7D0A, 0x95EE, 0x55E1, 0x7FC1, 0x74EE, 0x631D, 0x8717,
+ 0x6DA1, 0x7A9D, 0x6211, 0x65A1, 0x5367, 0x63E1, 0x6C83, 0x5DEB, 0x545C,
+ 0x94A8, 0x4E4C, 0x6C61, 0x8BEC, 0x5C4B, 0x65E0, 0x829C, 0x68A7, 0x543E,
+ 0x5434, 0x6BCB, 0x6B66, 0x4E94, 0x6342, 0x5348, 0x821E, 0x4F0D, 0x4FAE,
+ 0x575E, 0x620A, 0x96FE, 0x6664, 0x7269, 0x52FF, 0x52A1, 0x609F, 0x8BEF,
+ 0x6614, 0x7199, 0x6790, 0x897F, 0x7852, 0x77FD, 0x6670, 0x563B, 0x5438,
+ 0x9521, 0x727A, 0x7A00, 0x606F, 0x5E0C, 0x6089, 0x819D, 0x5915, 0x60DC,
+ 0x7184, 0x70EF, 0x6EAA, 0x6C50, 0x7280, 0x6A84, 0x88AD, 0x5E2D, 0x4E60,
+ 0x5AB3, 0x559C, 0x94E3, 0x6D17, 0x7CFB, 0x9699, 0x620F, 0x7EC6, 0x778E,
+ 0x867E, 0x5323, 0x971E, 0x8F96, 0x6687, 0x5CE1, 0x4FA0, 0x72ED, 0x4E0B,
+ 0x53A6, 0x590F, 0x5413, 0x6380, 0x9528, 0x5148, 0x4ED9, 0x9C9C, 0x7EA4,
+ 0x54B8, 0x8D24, 0x8854, 0x8237, 0x95F2, 0x6D8E, 0x5F26, 0x5ACC, 0x663E,
+ 0x9669, 0x73B0, 0x732E, 0x53BF, 0x817A, 0x9985, 0x7FA1, 0x5BAA, 0x9677,
+ 0x9650, 0x7EBF, 0x76F8, 0x53A2, 0x9576, 0x9999, 0x7BB1, 0x8944, 0x6E58,
+ 0x4E61, 0x7FD4, 0x7965, 0x8BE6, 0x60F3, 0x54CD, 0x4EAB, 0x9879, 0x5DF7,
+ 0x6A61, 0x50CF, 0x5411, 0x8C61, 0x8427, 0x785D, 0x9704, 0x524A, 0x54EE,
+ 0x56A3, 0x9500, 0x6D88, 0x5BB5, 0x6DC6, 0x6653, 0x5C0F, 0x5B5D, 0x6821,
+ 0x8096, 0x5578, 0x7B11, 0x6548, 0x6954, 0x4E9B, 0x6B47, 0x874E, 0x978B,
+ 0x534F, 0x631F, 0x643A, 0x90AA, 0x659C, 0x80C1, 0x8C10, 0x5199, 0x68B0,
+ 0x5378, 0x87F9, 0x61C8, 0x6CC4, 0x6CFB, 0x8C22, 0x5C51, 0x85AA, 0x82AF,
+ 0x950C, 0x6B23, 0x8F9B, 0x65B0, 0x5FFB, 0x5FC3, 0x4FE1, 0x8845, 0x661F,
+ 0x8165, 0x7329, 0x60FA, 0x5174, 0x5211, 0x578B, 0x5F62, 0x90A2, 0x884C,
+ 0x9192, 0x5E78, 0x674F, 0x6027, 0x59D3, 0x5144, 0x51F6, 0x80F8, 0x5308,
+ 0x6C79, 0x96C4, 0x718A, 0x4F11, 0x4FEE, 0x7F9E, 0x673D, 0x55C5, 0x9508,
+ 0x79C0, 0x8896, 0x7EE3, 0x589F, 0x620C, 0x9700, 0x865A, 0x5618, 0x987B,
+ 0x5F90, 0x8BB8, 0x84C4, 0x9157, 0x53D9, 0x65ED, 0x5E8F, 0x755C, 0x6064,
+ 0x7D6E, 0x5A7F, 0x7EEA, 0x7EED, 0x8F69, 0x55A7, 0x5BA3, 0x60AC, 0x65CB,
+ 0x7384, 0x9009, 0x7663, 0x7729, 0x7EDA, 0x9774, 0x859B, 0x5B66, 0x7A74,
+ 0x96EA, 0x8840, 0x52CB, 0x718F, 0x5FAA, 0x65EC, 0x8BE2, 0x5BFB, 0x9A6F,
+ 0x5DE1, 0x6B89, 0x6C5B, 0x8BAD, 0x8BAF, 0x900A, 0x8FC5, 0x538B, 0x62BC,
+ 0x9E26, 0x9E2D, 0x5440, 0x4E2B, 0x82BD, 0x7259, 0x869C, 0x5D16, 0x8859,
+ 0x6DAF, 0x96C5, 0x54D1, 0x4E9A, 0x8BB6, 0x7109, 0x54BD, 0x9609, 0x70DF,
+ 0x6DF9, 0x76D0, 0x4E25, 0x7814, 0x8712, 0x5CA9, 0x5EF6, 0x8A00, 0x989C,
+ 0x960E, 0x708E, 0x6CBF, 0x5944, 0x63A9, 0x773C, 0x884D, 0x6F14, 0x8273,
+ 0x5830, 0x71D5, 0x538C, 0x781A, 0x96C1, 0x5501, 0x5F66, 0x7130, 0x5BB4,
+ 0x8C1A, 0x9A8C, 0x6B83, 0x592E, 0x9E2F, 0x79E7, 0x6768, 0x626C, 0x4F6F,
+ 0x75A1, 0x7F8A, 0x6D0B, 0x9633, 0x6C27, 0x4EF0, 0x75D2, 0x517B, 0x6837,
+ 0x6F3E, 0x9080, 0x8170, 0x5996, 0x7476, 0x6447, 0x5C27, 0x9065, 0x7A91,
+ 0x8C23, 0x59DA, 0x54AC, 0x8200, 0x836F, 0x8981, 0x8000, 0x6930, 0x564E,
+ 0x8036, 0x7237, 0x91CE, 0x51B6, 0x4E5F, 0x9875, 0x6396, 0x4E1A, 0x53F6,
+ 0x66F3, 0x814B, 0x591C, 0x6DB2, 0x4E00, 0x58F9, 0x533B, 0x63D6, 0x94F1,
+ 0x4F9D, 0x4F0A, 0x8863, 0x9890, 0x5937, 0x9057, 0x79FB, 0x4EEA, 0x80F0,
+ 0x7591, 0x6C82, 0x5B9C, 0x59E8, 0x5F5D, 0x6905, 0x8681, 0x501A, 0x5DF2,
+ 0x4E59, 0x77E3, 0x4EE5, 0x827A, 0x6291, 0x6613, 0x9091, 0x5C79, 0x4EBF,
+ 0x5F79, 0x81C6, 0x9038, 0x8084, 0x75AB, 0x4EA6, 0x88D4, 0x610F, 0x6BC5,
+ 0x5FC6, 0x4E49, 0x76CA, 0x6EA2, 0x8BE3, 0x8BAE, 0x8C0A, 0x8BD1, 0x5F02,
+ 0x7FFC, 0x7FCC, 0x7ECE, 0x8335, 0x836B, 0x56E0, 0x6BB7, 0x97F3, 0x9634,
+ 0x59FB, 0x541F, 0x94F6, 0x6DEB, 0x5BC5, 0x996E, 0x5C39, 0x5F15, 0x9690,
+ 0x5370, 0x82F1, 0x6A31, 0x5A74, 0x9E70, 0x5E94, 0x7F28, 0x83B9, 0x8424,
+ 0x8425, 0x8367, 0x8747, 0x8FCE, 0x8D62, 0x76C8, 0x5F71, 0x9896, 0x786C,
+ 0x6620, 0x54DF, 0x62E5, 0x4F63, 0x81C3, 0x75C8, 0x5EB8, 0x96CD, 0x8E0A,
+ 0x86F9, 0x548F, 0x6CF3, 0x6D8C, 0x6C38, 0x607F, 0x52C7, 0x7528, 0x5E7D,
+ 0x4F18, 0x60A0, 0x5FE7, 0x5C24, 0x7531, 0x90AE, 0x94C0, 0x72B9, 0x6CB9,
+ 0x6E38, 0x9149, 0x6709, 0x53CB, 0x53F3, 0x4F51, 0x91C9, 0x8BF1, 0x53C8,
+ 0x5E7C, 0x8FC2, 0x6DE4, 0x4E8E, 0x76C2, 0x6986, 0x865E, 0x611A, 0x8206,
+ 0x4F59, 0x4FDE, 0x903E, 0x9C7C, 0x6109, 0x6E1D, 0x6E14, 0x9685, 0x4E88,
+ 0x5A31, 0x96E8, 0x4E0E, 0x5C7F, 0x79B9, 0x5B87, 0x8BED, 0x7FBD, 0x7389,
+ 0x57DF, 0x828B, 0x90C1, 0x5401, 0x9047, 0x55BB, 0x5CEA, 0x5FA1, 0x6108,
+ 0x6B32, 0x72F1, 0x80B2, 0x8A89, 0x6D74, 0x5BD3, 0x88D5, 0x9884, 0x8C6B,
+ 0x9A6D, 0x9E33, 0x6E0A, 0x51A4, 0x5143, 0x57A3, 0x8881, 0x539F, 0x63F4,
+ 0x8F95, 0x56ED, 0x5458, 0x5706, 0x733F, 0x6E90, 0x7F18, 0x8FDC, 0x82D1,
+ 0x613F, 0x6028, 0x9662, 0x66F0, 0x7EA6, 0x8D8A, 0x8DC3, 0x94A5, 0x5CB3,
+ 0x7CA4, 0x6708, 0x60A6, 0x9605, 0x8018, 0x4E91, 0x90E7, 0x5300, 0x9668,
+ 0x5141, 0x8FD0, 0x8574, 0x915D, 0x6655, 0x97F5, 0x5B55, 0x531D, 0x7838,
+ 0x6742, 0x683D, 0x54C9, 0x707E, 0x5BB0, 0x8F7D, 0x518D, 0x5728, 0x54B1,
+ 0x6512, 0x6682, 0x8D5E, 0x8D43, 0x810F, 0x846C, 0x906D, 0x7CDF, 0x51FF,
+ 0x85FB, 0x67A3, 0x65E9, 0x6FA1, 0x86A4, 0x8E81, 0x566A, 0x9020, 0x7682,
+ 0x7076, 0x71E5, 0x8D23, 0x62E9, 0x5219, 0x6CFD, 0x8D3C, 0x600E, 0x589E,
+ 0x618E, 0x66FE, 0x8D60, 0x624E, 0x55B3, 0x6E23, 0x672D, 0x8F67, 0x94E1,
+ 0x95F8, 0x7728, 0x6805, 0x69A8, 0x548B, 0x4E4D, 0x70B8, 0x8BC8, 0x6458,
+ 0x658B, 0x5B85, 0x7A84, 0x503A, 0x5BE8, 0x77BB, 0x6BE1, 0x8A79, 0x7C98,
+ 0x6CBE, 0x76CF, 0x65A9, 0x8F97, 0x5D2D, 0x5C55, 0x8638, 0x6808, 0x5360,
+ 0x6218, 0x7AD9, 0x6E5B, 0x7EFD, 0x6A1F, 0x7AE0, 0x5F70, 0x6F33, 0x5F20,
+ 0x638C, 0x6DA8, 0x6756, 0x4E08, 0x5E10, 0x8D26, 0x4ED7, 0x80C0, 0x7634,
+ 0x969C, 0x62DB, 0x662D, 0x627E, 0x6CBC, 0x8D75, 0x7167, 0x7F69, 0x5146,
+ 0x8087, 0x53EC, 0x906E, 0x6298, 0x54F2, 0x86F0, 0x8F99, 0x8005, 0x9517,
+ 0x8517, 0x8FD9, 0x6D59, 0x73CD, 0x659F, 0x771F, 0x7504, 0x7827, 0x81FB,
+ 0x8D1E, 0x9488, 0x4FA6, 0x6795, 0x75B9, 0x8BCA, 0x9707, 0x632F, 0x9547,
+ 0x9635, 0x84B8, 0x6323, 0x7741, 0x5F81, 0x72F0, 0x4E89, 0x6014, 0x6574,
+ 0x62EF, 0x6B63, 0x653F, 0x5E27, 0x75C7, 0x90D1, 0x8BC1, 0x829D, 0x679D,
+ 0x652F, 0x5431, 0x8718, 0x77E5, 0x80A2, 0x8102, 0x6C41, 0x4E4B, 0x7EC7,
+ 0x804C, 0x76F4, 0x690D, 0x6B96, 0x6267, 0x503C, 0x4F84, 0x5740, 0x6307,
+ 0x6B62, 0x8DBE, 0x53EA, 0x65E8, 0x7EB8, 0x5FD7, 0x631A, 0x63B7, 0x81F3,
+ 0x81F4, 0x7F6E, 0x5E1C, 0x5CD9, 0x5236, 0x667A, 0x79E9, 0x7A1A, 0x8D28,
+ 0x7099, 0x75D4, 0x6EDE, 0x6CBB, 0x7A92, 0x4E2D, 0x76C5, 0x5FE0, 0x949F,
+ 0x8877, 0x7EC8, 0x79CD, 0x80BF, 0x91CD, 0x4EF2, 0x4F17, 0x821F, 0x5468,
+ 0x5DDE, 0x6D32, 0x8BCC, 0x7CA5, 0x8F74, 0x8098, 0x5E1A, 0x5492, 0x76B1,
+ 0x5B99, 0x663C, 0x9AA4, 0x73E0, 0x682A, 0x86DB, 0x6731, 0x732A, 0x8BF8,
+ 0x8BDB, 0x9010, 0x7AF9, 0x70DB, 0x716E, 0x62C4, 0x77A9, 0x5631, 0x4E3B,
+ 0x8457, 0x67F1, 0x52A9, 0x86C0, 0x8D2E, 0x94F8, 0x7B51, 0x4F4F, 0x6CE8,
+ 0x795D, 0x9A7B, 0x6293, 0x722A, 0x62FD, 0x4E13, 0x7816, 0x8F6C, 0x64B0,
+ 0x8D5A, 0x7BC6, 0x6869, 0x5E84, 0x88C5, 0x5986, 0x649E, 0x58EE, 0x72B6,
+ 0x690E, 0x9525, 0x8FFD, 0x8D58, 0x5760, 0x7F00, 0x8C06, 0x51C6, 0x6349,
+ 0x62D9, 0x5353, 0x684C, 0x7422, 0x8301, 0x914C, 0x5544, 0x7740, 0x707C,
+ 0x6D4A, 0x5179, 0x54A8, 0x8D44, 0x59FF, 0x6ECB, 0x6DC4, 0x5B5C, 0x7D2B,
+ 0x4ED4, 0x7C7D, 0x6ED3, 0x5B50, 0x81EA, 0x6E0D, 0x5B57, 0x9B03, 0x68D5,
+ 0x8E2A, 0x5B97, 0x7EFC, 0x603B, 0x7EB5, 0x90B9, 0x8D70, 0x594F, 0x63CD,
+ 0x79DF, 0x8DB3, 0x5352, 0x65CF, 0x7956, 0x8BC5, 0x963B, 0x7EC4, 0x94BB,
+ 0x7E82, 0x5634, 0x9189, 0x6700, 0x7F6A, 0x5C0A, 0x9075, 0x6628, 0x5DE6,
+ 0x4F50, 0x67DE, 0x505A, 0x4F5C, 0x5750, 0x5EA7, 0x4E8D, 0x4E0C, 0x5140,
+ 0x4E10, 0x5EFF, 0x5345, 0x4E15, 0x4E98, 0x4E1E, 0x9B32, 0x5B6C, 0x5669,
+ 0x4E28, 0x79BA, 0x4E3F, 0x5315, 0x4E47, 0x592D, 0x723B, 0x536E, 0x6C10,
+ 0x56DF, 0x80E4, 0x9997, 0x6BD3, 0x777E, 0x9F17, 0x4E36, 0x4E9F, 0x9F10,
+ 0x4E5C, 0x4E69, 0x4E93, 0x8288, 0x5B5B, 0x556C, 0x560F, 0x4EC4, 0x538D,
+ 0x539D, 0x53A3, 0x53A5, 0x53AE, 0x9765, 0x8D5D, 0x531A, 0x53F5, 0x5326,
+ 0x532E, 0x533E, 0x8D5C, 0x5366, 0x5363, 0x5202, 0x5208, 0x520E, 0x522D,
+ 0x5233, 0x523F, 0x5240, 0x524C, 0x525E, 0x5261, 0x525C, 0x84AF, 0x527D,
+ 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, 0x7F54, 0x4EBB, 0x4EC3, 0x4EC9,
+ 0x4EC2, 0x4EE8, 0x4EE1, 0x4EEB, 0x4EDE, 0x4F1B, 0x4EF3, 0x4F22, 0x4F64,
+ 0x4EF5, 0x4F25, 0x4F27, 0x4F09, 0x4F2B, 0x4F5E, 0x4F67, 0x6538, 0x4F5A,
+ 0x4F5D, 0x4F5F, 0x4F57, 0x4F32, 0x4F3D, 0x4F76, 0x4F74, 0x4F91, 0x4F89,
+ 0x4F83, 0x4F8F, 0x4F7E, 0x4F7B, 0x4FAA, 0x4F7C, 0x4FAC, 0x4F94, 0x4FE6,
+ 0x4FE8, 0x4FEA, 0x4FC5, 0x4FDA, 0x4FE3, 0x4FDC, 0x4FD1, 0x4FDF, 0x4FF8,
+ 0x5029, 0x504C, 0x4FF3, 0x502C, 0x500F, 0x502E, 0x502D, 0x4FFE, 0x501C,
+ 0x500C, 0x5025, 0x5028, 0x507E, 0x5043, 0x5055, 0x5048, 0x504E, 0x506C,
+ 0x507B, 0x50A5, 0x50A7, 0x50A9, 0x50BA, 0x50D6, 0x5106, 0x50ED, 0x50EC,
+ 0x50E6, 0x50EE, 0x5107, 0x510B, 0x4EDD, 0x6C3D, 0x4F58, 0x4F65, 0x4FCE,
+ 0x9FA0, 0x6C46, 0x7C74, 0x516E, 0x5DFD, 0x9EC9, 0x9998, 0x5181, 0x5914,
+ 0x52F9, 0x530D, 0x8A07, 0x5310, 0x51EB, 0x5919, 0x5155, 0x4EA0, 0x5156,
+ 0x4EB3, 0x886E, 0x88A4, 0x4EB5, 0x8114, 0x88D2, 0x7980, 0x5B34, 0x8803,
+ 0x7FB8, 0x51AB, 0x51B1, 0x51BD, 0x51BC, 0x51C7, 0x5196, 0x51A2, 0x51A5,
+ 0x8BA0, 0x8BA6, 0x8BA7, 0x8BAA, 0x8BB4, 0x8BB5, 0x8BB7, 0x8BC2, 0x8BC3,
+ 0x8BCB, 0x8BCF, 0x8BCE, 0x8BD2, 0x8BD3, 0x8BD4, 0x8BD6, 0x8BD8, 0x8BD9,
+ 0x8BDC, 0x8BDF, 0x8BE0, 0x8BE4, 0x8BE8, 0x8BE9, 0x8BEE, 0x8BF0, 0x8BF3,
+ 0x8BF6, 0x8BF9, 0x8BFC, 0x8BFF, 0x8C00, 0x8C02, 0x8C04, 0x8C07, 0x8C0C,
+ 0x8C0F, 0x8C11, 0x8C12, 0x8C14, 0x8C15, 0x8C16, 0x8C19, 0x8C1B, 0x8C18,
+ 0x8C1D, 0x8C1F, 0x8C20, 0x8C21, 0x8C25, 0x8C27, 0x8C2A, 0x8C2B, 0x8C2E,
+ 0x8C2F, 0x8C32, 0x8C33, 0x8C35, 0x8C36, 0x5369, 0x537A, 0x961D, 0x9622,
+ 0x9621, 0x9631, 0x962A, 0x963D, 0x963C, 0x9642, 0x9649, 0x9654, 0x965F,
+ 0x9667, 0x966C, 0x9672, 0x9674, 0x9688, 0x968D, 0x9697, 0x96B0, 0x9097,
+ 0x909B, 0x909D, 0x9099, 0x90AC, 0x90A1, 0x90B4, 0x90B3, 0x90B6, 0x90BA,
+ 0x90B8, 0x90B0, 0x90CF, 0x90C5, 0x90BE, 0x90D0, 0x90C4, 0x90C7, 0x90D3,
+ 0x90E6, 0x90E2, 0x90DC, 0x90D7, 0x90DB, 0x90EB, 0x90EF, 0x90FE, 0x9104,
+ 0x9122, 0x911E, 0x9123, 0x9131, 0x912F, 0x9139, 0x9143, 0x9146, 0x520D,
+ 0x5942, 0x52A2, 0x52AC, 0x52AD, 0x52BE, 0x54FF, 0x52D0, 0x52D6, 0x52F0,
+ 0x53DF, 0x71EE, 0x77CD, 0x5EF4, 0x51F5, 0x51FC, 0x9B2F, 0x53B6, 0x5F01,
+ 0x755A, 0x5DEF, 0x574C, 0x57A9, 0x57A1, 0x587E, 0x58BC, 0x58C5, 0x58D1,
+ 0x5729, 0x572C, 0x572A, 0x5733, 0x5739, 0x572E, 0x572F, 0x575C, 0x573B,
+ 0x5742, 0x5769, 0x5785, 0x576B, 0x5786, 0x577C, 0x577B, 0x5768, 0x576D,
+ 0x5776, 0x5773, 0x57AD, 0x57A4, 0x578C, 0x57B2, 0x57CF, 0x57A7, 0x57B4,
+ 0x5793, 0x57A0, 0x57D5, 0x57D8, 0x57DA, 0x57D9, 0x57D2, 0x57B8, 0x57F4,
+ 0x57EF, 0x57F8, 0x57E4, 0x57DD, 0x580B, 0x580D, 0x57FD, 0x57ED, 0x5800,
+ 0x581E, 0x5819, 0x5844, 0x5820, 0x5865, 0x586C, 0x5881, 0x5889, 0x589A,
+ 0x5880, 0x99A8, 0x9F19, 0x61FF, 0x8279, 0x827D, 0x827F, 0x828F, 0x828A,
+ 0x82A8, 0x8284, 0x828E, 0x8291, 0x8297, 0x8299, 0x82AB, 0x82B8, 0x82BE,
+ 0x82B0, 0x82C8, 0x82CA, 0x82E3, 0x8298, 0x82B7, 0x82AE, 0x82CB, 0x82CC,
+ 0x82C1, 0x82A9, 0x82B4, 0x82A1, 0x82AA, 0x829F, 0x82C4, 0x82CE, 0x82A4,
+ 0x82E1, 0x8309, 0x82F7, 0x82E4, 0x830F, 0x8307, 0x82DC, 0x82F4, 0x82D2,
+ 0x82D8, 0x830C, 0x82FB, 0x82D3, 0x8311, 0x831A, 0x8306, 0x8314, 0x8315,
+ 0x82E0, 0x82D5, 0x831C, 0x8351, 0x835B, 0x835C, 0x8308, 0x8392, 0x833C,
+ 0x8334, 0x8331, 0x839B, 0x835E, 0x832F, 0x834F, 0x8347, 0x8343, 0x835F,
+ 0x8340, 0x8317, 0x8360, 0x832D, 0x833A, 0x8333, 0x8366, 0x8365, 0x8368,
+ 0x831B, 0x8369, 0x836C, 0x836A, 0x836D, 0x836E, 0x83B0, 0x8378, 0x83B3,
+ 0x83B4, 0x83A0, 0x83AA, 0x8393, 0x839C, 0x8385, 0x837C, 0x83B6, 0x83A9,
+ 0x837D, 0x83B8, 0x837B, 0x8398, 0x839E, 0x83A8, 0x83BA, 0x83BC, 0x83C1,
+ 0x8401, 0x83E5, 0x83D8, 0x5807, 0x8418, 0x840B, 0x83DD, 0x83FD, 0x83D6,
+ 0x841C, 0x8438, 0x8411, 0x8406, 0x83D4, 0x83DF, 0x840F, 0x8403, 0x83F8,
+ 0x83F9, 0x83EA, 0x83C5, 0x83C0, 0x8426, 0x83F0, 0x83E1, 0x845C, 0x8451,
+ 0x845A, 0x8459, 0x8473, 0x8487, 0x8488, 0x847A, 0x8489, 0x8478, 0x843C,
+ 0x8446, 0x8469, 0x8476, 0x848C, 0x848E, 0x8431, 0x846D, 0x84C1, 0x84CD,
+ 0x84D0, 0x84E6, 0x84BD, 0x84D3, 0x84CA, 0x84BF, 0x84BA, 0x84E0, 0x84A1,
+ 0x84B9, 0x84B4, 0x8497, 0x84E5, 0x84E3, 0x850C, 0x750D, 0x8538, 0x84F0,
+ 0x8539, 0x851F, 0x853A, 0x8556, 0x853B, 0x84FF, 0x84FC, 0x8559, 0x8548,
+ 0x8568, 0x8564, 0x855E, 0x857A, 0x77A2, 0x8543, 0x8572, 0x857B, 0x85A4,
+ 0x85A8, 0x8587, 0x858F, 0x8579, 0x85AE, 0x859C, 0x8585, 0x85B9, 0x85B7,
+ 0x85B0, 0x85D3, 0x85C1, 0x85DC, 0x85FF, 0x8627, 0x8605, 0x8629, 0x8616,
+ 0x863C, 0x5EFE, 0x5F08, 0x593C, 0x5941, 0x8037, 0x5955, 0x595A, 0x5958,
+ 0x530F, 0x5C22, 0x5C25, 0x5C2C, 0x5C34, 0x624C, 0x626A, 0x629F, 0x62BB,
+ 0x62CA, 0x62DA, 0x62D7, 0x62EE, 0x6322, 0x62F6, 0x6339, 0x634B, 0x6343,
+ 0x63AD, 0x63F6, 0x6371, 0x637A, 0x638E, 0x63B4, 0x636D, 0x63AC, 0x638A,
+ 0x6369, 0x63AE, 0x63BC, 0x63F2, 0x63F8, 0x63E0, 0x63FF, 0x63C4, 0x63DE,
+ 0x63CE, 0x6452, 0x63C6, 0x63BE, 0x6445, 0x6441, 0x640B, 0x641B, 0x6420,
+ 0x640C, 0x6426, 0x6421, 0x645E, 0x6484, 0x646D, 0x6496, 0x647A, 0x64B7,
+ 0x64B8, 0x6499, 0x64BA, 0x64C0, 0x64D0, 0x64D7, 0x64E4, 0x64E2, 0x6509,
+ 0x6525, 0x652E, 0x5F0B, 0x5FD2, 0x7519, 0x5F11, 0x535F, 0x53F1, 0x53FD,
+ 0x53E9, 0x53E8, 0x53FB, 0x5412, 0x5416, 0x5406, 0x544B, 0x5452, 0x5453,
+ 0x5454, 0x5456, 0x5443, 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482,
+ 0x5494, 0x5477, 0x5471, 0x5464, 0x549A, 0x549B, 0x5484, 0x5476, 0x5466,
+ 0x549D, 0x54D0, 0x54AD, 0x54C2, 0x54B4, 0x54D2, 0x54A7, 0x54A6, 0x54D3,
+ 0x54D4, 0x5472, 0x54A3, 0x54D5, 0x54BB, 0x54BF, 0x54CC, 0x54D9, 0x54DA,
+ 0x54DC, 0x54A9, 0x54AA, 0x54A4, 0x54DD, 0x54CF, 0x54DE, 0x551B, 0x54E7,
+ 0x5520, 0x54FD, 0x5514, 0x54F3, 0x5522, 0x5523, 0x550F, 0x5511, 0x5527,
+ 0x552A, 0x5567, 0x558F, 0x55B5, 0x5549, 0x556D, 0x5541, 0x5555, 0x553F,
+ 0x5550, 0x553C, 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530,
+ 0x555C, 0x558B, 0x55D2, 0x5583, 0x55B1, 0x55B9, 0x5588, 0x5581, 0x559F,
+ 0x557E, 0x55D6, 0x5591, 0x557B, 0x55DF, 0x55BD, 0x55BE, 0x5594, 0x5599,
+ 0x55EA, 0x55F7, 0x55C9, 0x561F, 0x55D1, 0x55EB, 0x55EC, 0x55D4, 0x55E6,
+ 0x55DD, 0x55C4, 0x55EF, 0x55E5, 0x55F2, 0x55F3, 0x55CC, 0x55CD, 0x55E8,
+ 0x55F5, 0x55E4, 0x8F94, 0x561E, 0x5608, 0x560C, 0x5601, 0x5624, 0x5623,
+ 0x55FE, 0x5600, 0x5627, 0x562D, 0x5658, 0x5639, 0x5657, 0x562C, 0x564D,
+ 0x5662, 0x5659, 0x565C, 0x564C, 0x5654, 0x5686, 0x5664, 0x5671, 0x566B,
+ 0x567B, 0x567C, 0x5685, 0x5693, 0x56AF, 0x56D4, 0x56D7, 0x56DD, 0x56E1,
+ 0x56F5, 0x56EB, 0x56F9, 0x56FF, 0x5704, 0x570A, 0x5709, 0x571C, 0x5E0F,
+ 0x5E19, 0x5E14, 0x5E11, 0x5E31, 0x5E3B, 0x5E3C, 0x5E37, 0x5E44, 0x5E54,
+ 0x5E5B, 0x5E5E, 0x5E61, 0x5C8C, 0x5C7A, 0x5C8D, 0x5C90, 0x5C96, 0x5C88,
+ 0x5C98, 0x5C99, 0x5C91, 0x5C9A, 0x5C9C, 0x5CB5, 0x5CA2, 0x5CBD, 0x5CAC,
+ 0x5CAB, 0x5CB1, 0x5CA3, 0x5CC1, 0x5CB7, 0x5CC4, 0x5CD2, 0x5CE4, 0x5CCB,
+ 0x5CE5, 0x5D02, 0x5D03, 0x5D27, 0x5D26, 0x5D2E, 0x5D24, 0x5D1E, 0x5D06,
+ 0x5D1B, 0x5D58, 0x5D3E, 0x5D34, 0x5D3D, 0x5D6C, 0x5D5B, 0x5D6F, 0x5D5D,
+ 0x5D6B, 0x5D4B, 0x5D4A, 0x5D69, 0x5D74, 0x5D82, 0x5D99, 0x5D9D, 0x8C73,
+ 0x5DB7, 0x5DC5, 0x5F73, 0x5F77, 0x5F82, 0x5F87, 0x5F89, 0x5F8C, 0x5F95,
+ 0x5F99, 0x5F9C, 0x5FA8, 0x5FAD, 0x5FB5, 0x5FBC, 0x8862, 0x5F61, 0x72AD,
+ 0x72B0, 0x72B4, 0x72B7, 0x72B8, 0x72C3, 0x72C1, 0x72CE, 0x72CD, 0x72D2,
+ 0x72E8, 0x72EF, 0x72E9, 0x72F2, 0x72F4, 0x72F7, 0x7301, 0x72F3, 0x7303,
+ 0x72FA, 0x72FB, 0x7317, 0x7313, 0x7321, 0x730A, 0x731E, 0x731D, 0x7315,
+ 0x7322, 0x7339, 0x7325, 0x732C, 0x7338, 0x7331, 0x7350, 0x734D, 0x7357,
+ 0x7360, 0x736C, 0x736F, 0x737E, 0x821B, 0x5925, 0x98E7, 0x5924, 0x5902,
+ 0x9963, 0x9967, 0x9968, 0x9969, 0x996A, 0x996B, 0x996C, 0x9974, 0x9977,
+ 0x997D, 0x9980, 0x9984, 0x9987, 0x998A, 0x998D, 0x9990, 0x9991, 0x9993,
+ 0x9994, 0x9995, 0x5E80, 0x5E91, 0x5E8B, 0x5E96, 0x5EA5, 0x5EA0, 0x5EB9,
+ 0x5EB5, 0x5EBE, 0x5EB3, 0x8D53, 0x5ED2, 0x5ED1, 0x5EDB, 0x5EE8, 0x5EEA,
+ 0x81BA, 0x5FC4, 0x5FC9, 0x5FD6, 0x5FCF, 0x6003, 0x5FEE, 0x6004, 0x5FE1,
+ 0x5FE4, 0x5FFE, 0x6005, 0x6006, 0x5FEA, 0x5FED, 0x5FF8, 0x6019, 0x6035,
+ 0x6026, 0x601B, 0x600F, 0x600D, 0x6029, 0x602B, 0x600A, 0x603F, 0x6021,
+ 0x6078, 0x6079, 0x607B, 0x607A, 0x6042, 0x606A, 0x607D, 0x6096, 0x609A,
+ 0x60AD, 0x609D, 0x6083, 0x6092, 0x608C, 0x609B, 0x60EC, 0x60BB, 0x60B1,
+ 0x60DD, 0x60D8, 0x60C6, 0x60DA, 0x60B4, 0x6120, 0x6126, 0x6115, 0x6123,
+ 0x60F4, 0x6100, 0x610E, 0x612B, 0x614A, 0x6175, 0x61AC, 0x6194, 0x61A7,
+ 0x61B7, 0x61D4, 0x61F5, 0x5FDD, 0x96B3, 0x95E9, 0x95EB, 0x95F1, 0x95F3,
+ 0x95F5, 0x95F6, 0x95FC, 0x95FE, 0x9603, 0x9604, 0x9606, 0x9608, 0x960A,
+ 0x960B, 0x960C, 0x960D, 0x960F, 0x9612, 0x9615, 0x9616, 0x9617, 0x9619,
+ 0x961A, 0x4E2C, 0x723F, 0x6215, 0x6C35, 0x6C54, 0x6C5C, 0x6C4A, 0x6CA3,
+ 0x6C85, 0x6C90, 0x6C94, 0x6C8C, 0x6C68, 0x6C69, 0x6C74, 0x6C76, 0x6C86,
+ 0x6CA9, 0x6CD0, 0x6CD4, 0x6CAD, 0x6CF7, 0x6CF8, 0x6CF1, 0x6CD7, 0x6CB2,
+ 0x6CE0, 0x6CD6, 0x6CFA, 0x6CEB, 0x6CEE, 0x6CB1, 0x6CD3, 0x6CEF, 0x6CFE,
+ 0x6D39, 0x6D27, 0x6D0C, 0x6D43, 0x6D48, 0x6D07, 0x6D04, 0x6D19, 0x6D0E,
+ 0x6D2B, 0x6D4D, 0x6D2E, 0x6D35, 0x6D1A, 0x6D4F, 0x6D52, 0x6D54, 0x6D33,
+ 0x6D91, 0x6D6F, 0x6D9E, 0x6DA0, 0x6D5E, 0x6D93, 0x6D94, 0x6D5C, 0x6D60,
+ 0x6D7C, 0x6D63, 0x6E1A, 0x6DC7, 0x6DC5, 0x6DDE, 0x6E0E, 0x6DBF, 0x6DE0,
+ 0x6E11, 0x6DE6, 0x6DDD, 0x6DD9, 0x6E16, 0x6DAB, 0x6E0C, 0x6DAE, 0x6E2B,
+ 0x6E6E, 0x6E4E, 0x6E6B, 0x6EB2, 0x6E5F, 0x6E86, 0x6E53, 0x6E54, 0x6E32,
+ 0x6E25, 0x6E44, 0x6EDF, 0x6EB1, 0x6E98, 0x6EE0, 0x6F2D, 0x6EE2, 0x6EA5,
+ 0x6EA7, 0x6EBD, 0x6EBB, 0x6EB7, 0x6ED7, 0x6EB4, 0x6ECF, 0x6E8F, 0x6EC2,
+ 0x6E9F, 0x6F62, 0x6F46, 0x6F47, 0x6F24, 0x6F15, 0x6EF9, 0x6F2F, 0x6F36,
+ 0x6F4B, 0x6F74, 0x6F2A, 0x6F09, 0x6F29, 0x6F89, 0x6F8D, 0x6F8C, 0x6F78,
+ 0x6F72, 0x6F7C, 0x6F7A, 0x6FD1, 0x6FC9, 0x6FA7, 0x6FB9, 0x6FB6, 0x6FC2,
+ 0x6FE1, 0x6FEE, 0x6FDE, 0x6FE0, 0x6FEF, 0x701A, 0x7023, 0x701B, 0x7039,
+ 0x7035, 0x704F, 0x705E, 0x5B80, 0x5B84, 0x5B95, 0x5B93, 0x5BA5, 0x5BB8,
+ 0x752F, 0x9A9E, 0x6434, 0x5BE4, 0x5BEE, 0x8930, 0x5BF0, 0x8E47, 0x8B07,
+ 0x8FB6, 0x8FD3, 0x8FD5, 0x8FE5, 0x8FEE, 0x8FE4, 0x8FE9, 0x8FE6, 0x8FF3,
+ 0x8FE8, 0x9005, 0x9004, 0x900B, 0x9026, 0x9011, 0x900D, 0x9016, 0x9021,
+ 0x9035, 0x9036, 0x902D, 0x902F, 0x9044, 0x9051, 0x9052, 0x9050, 0x9068,
+ 0x9058, 0x9062, 0x905B, 0x66B9, 0x9074, 0x907D, 0x9082, 0x9088, 0x9083,
+ 0x908B, 0x5F50, 0x5F57, 0x5F56, 0x5F58, 0x5C3B, 0x54AB, 0x5C50, 0x5C59,
+ 0x5B71, 0x5C63, 0x5C66, 0x7FBC, 0x5F2A, 0x5F29, 0x5F2D, 0x8274, 0x5F3C,
+ 0x9B3B, 0x5C6E, 0x5981, 0x5983, 0x598D, 0x59A9, 0x59AA, 0x59A3, 0x5997,
+ 0x59CA, 0x59AB, 0x599E, 0x59A4, 0x59D2, 0x59B2, 0x59AF, 0x59D7, 0x59BE,
+ 0x5A05, 0x5A06, 0x59DD, 0x5A08, 0x59E3, 0x59D8, 0x59F9, 0x5A0C, 0x5A09,
+ 0x5A32, 0x5A34, 0x5A11, 0x5A23, 0x5A13, 0x5A40, 0x5A67, 0x5A4A, 0x5A55,
+ 0x5A3C, 0x5A62, 0x5A75, 0x80EC, 0x5AAA, 0x5A9B, 0x5A77, 0x5A7A, 0x5ABE,
+ 0x5AEB, 0x5AB2, 0x5AD2, 0x5AD4, 0x5AB8, 0x5AE0, 0x5AE3, 0x5AF1, 0x5AD6,
+ 0x5AE6, 0x5AD8, 0x5ADC, 0x5B09, 0x5B17, 0x5B16, 0x5B32, 0x5B37, 0x5B40,
+ 0x5C15, 0x5C1C, 0x5B5A, 0x5B65, 0x5B73, 0x5B51, 0x5B53, 0x5B62, 0x9A75,
+ 0x9A77, 0x9A78, 0x9A7A, 0x9A7F, 0x9A7D, 0x9A80, 0x9A81, 0x9A85, 0x9A88,
+ 0x9A8A, 0x9A90, 0x9A92, 0x9A93, 0x9A96, 0x9A98, 0x9A9B, 0x9A9C, 0x9A9D,
+ 0x9A9F, 0x9AA0, 0x9AA2, 0x9AA3, 0x9AA5, 0x9AA7, 0x7E9F, 0x7EA1, 0x7EA3,
+ 0x7EA5, 0x7EA8, 0x7EA9, 0x7EAD, 0x7EB0, 0x7EBE, 0x7EC0, 0x7EC1, 0x7EC2,
+ 0x7EC9, 0x7ECB, 0x7ECC, 0x7ED0, 0x7ED4, 0x7ED7, 0x7EDB, 0x7EE0, 0x7EE1,
+ 0x7EE8, 0x7EEB, 0x7EEE, 0x7EEF, 0x7EF1, 0x7EF2, 0x7F0D, 0x7EF6, 0x7EFA,
+ 0x7EFB, 0x7EFE, 0x7F01, 0x7F02, 0x7F03, 0x7F07, 0x7F08, 0x7F0B, 0x7F0C,
+ 0x7F0F, 0x7F11, 0x7F12, 0x7F17, 0x7F19, 0x7F1C, 0x7F1B, 0x7F1F, 0x7F21,
+ 0x7F22, 0x7F23, 0x7F24, 0x7F25, 0x7F26, 0x7F27, 0x7F2A, 0x7F2B, 0x7F2C,
+ 0x7F2D, 0x7F2F, 0x7F30, 0x7F31, 0x7F32, 0x7F33, 0x7F35, 0x5E7A, 0x757F,
+ 0x5DDB, 0x753E, 0x9095, 0x738E, 0x7391, 0x73AE, 0x73A2, 0x739F, 0x73CF,
+ 0x73C2, 0x73D1, 0x73B7, 0x73B3, 0x73C0, 0x73C9, 0x73C8, 0x73E5, 0x73D9,
+ 0x987C, 0x740A, 0x73E9, 0x73E7, 0x73DE, 0x73BA, 0x73F2, 0x740F, 0x742A,
+ 0x745B, 0x7426, 0x7425, 0x7428, 0x7430, 0x742E, 0x742C, 0x741B, 0x741A,
+ 0x7441, 0x745C, 0x7457, 0x7455, 0x7459, 0x7477, 0x746D, 0x747E, 0x749C,
+ 0x748E, 0x7480, 0x7481, 0x7487, 0x748B, 0x749E, 0x74A8, 0x74A9, 0x7490,
+ 0x74A7, 0x74D2, 0x74BA, 0x97EA, 0x97EB, 0x97EC, 0x674C, 0x6753, 0x675E,
+ 0x6748, 0x6769, 0x67A5, 0x6787, 0x676A, 0x6773, 0x6798, 0x67A7, 0x6775,
+ 0x67A8, 0x679E, 0x67AD, 0x678B, 0x6777, 0x677C, 0x67F0, 0x6809, 0x67D8,
+ 0x680A, 0x67E9, 0x67B0, 0x680C, 0x67D9, 0x67B5, 0x67DA, 0x67B3, 0x67DD,
+ 0x6800, 0x67C3, 0x67B8, 0x67E2, 0x680E, 0x67C1, 0x67FD, 0x6832, 0x6833,
+ 0x6860, 0x6861, 0x684E, 0x6862, 0x6844, 0x6864, 0x6883, 0x681D, 0x6855,
+ 0x6866, 0x6841, 0x6867, 0x6840, 0x683E, 0x684A, 0x6849, 0x6829, 0x68B5,
+ 0x688F, 0x6874, 0x6877, 0x6893, 0x686B, 0x68C2, 0x696E, 0x68FC, 0x691F,
+ 0x6920, 0x68F9, 0x6924, 0x68F0, 0x690B, 0x6901, 0x6957, 0x68E3, 0x6910,
+ 0x6971, 0x6939, 0x6960, 0x6942, 0x695D, 0x6984, 0x696B, 0x6980, 0x6998,
+ 0x6978, 0x6934, 0x69CC, 0x6987, 0x6988, 0x69CE, 0x6989, 0x6966, 0x6963,
+ 0x6979, 0x699B, 0x69A7, 0x69BB, 0x69AB, 0x69AD, 0x69D4, 0x69B1, 0x69C1,
+ 0x69CA, 0x69DF, 0x6995, 0x69E0, 0x698D, 0x69FF, 0x6A2F, 0x69ED, 0x6A17,
+ 0x6A18, 0x6A65, 0x69F2, 0x6A44, 0x6A3E, 0x6AA0, 0x6A50, 0x6A5B, 0x6A35,
+ 0x6A8E, 0x6A79, 0x6A3D, 0x6A28, 0x6A58, 0x6A7C, 0x6A91, 0x6A90, 0x6AA9,
+ 0x6A97, 0x6AAB, 0x7337, 0x7352, 0x6B81, 0x6B82, 0x6B87, 0x6B84, 0x6B92,
+ 0x6B93, 0x6B8D, 0x6B9A, 0x6B9B, 0x6BA1, 0x6BAA, 0x8F6B, 0x8F6D, 0x8F71,
+ 0x8F72, 0x8F73, 0x8F75, 0x8F76, 0x8F78, 0x8F77, 0x8F79, 0x8F7A, 0x8F7C,
+ 0x8F7E, 0x8F81, 0x8F82, 0x8F84, 0x8F87, 0x8F8B, 0x8F8D, 0x8F8E, 0x8F8F,
+ 0x8F98, 0x8F9A, 0x8ECE, 0x620B, 0x6217, 0x621B, 0x621F, 0x6222, 0x6221,
+ 0x6225, 0x6224, 0x622C, 0x81E7, 0x74EF, 0x74F4, 0x74FF, 0x750F, 0x7511,
+ 0x7513, 0x6534, 0x65EE, 0x65EF, 0x65F0, 0x660A, 0x6619, 0x6772, 0x6603,
+ 0x6615, 0x6600, 0x7085, 0x66F7, 0x661D, 0x6634, 0x6631, 0x6636, 0x6635,
+ 0x8006, 0x665F, 0x6654, 0x6641, 0x664F, 0x6656, 0x6661, 0x6657, 0x6677,
+ 0x6684, 0x668C, 0x66A7, 0x669D, 0x66BE, 0x66DB, 0x66DC, 0x66E6, 0x66E9,
+ 0x8D32, 0x8D33, 0x8D36, 0x8D3B, 0x8D3D, 0x8D40, 0x8D45, 0x8D46, 0x8D48,
+ 0x8D49, 0x8D47, 0x8D4D, 0x8D55, 0x8D59, 0x89C7, 0x89CA, 0x89CB, 0x89CC,
+ 0x89CE, 0x89CF, 0x89D0, 0x89D1, 0x726E, 0x729F, 0x725D, 0x7266, 0x726F,
+ 0x727E, 0x727F, 0x7284, 0x728B, 0x728D, 0x728F, 0x7292, 0x6308, 0x6332,
+ 0x63B0, 0x643F, 0x64D8, 0x8004, 0x6BEA, 0x6BF3, 0x6BFD, 0x6BF5, 0x6BF9,
+ 0x6C05, 0x6C07, 0x6C06, 0x6C0D, 0x6C15, 0x6C18, 0x6C19, 0x6C1A, 0x6C21,
+ 0x6C29, 0x6C24, 0x6C2A, 0x6C32, 0x6535, 0x6555, 0x656B, 0x724D, 0x7252,
+ 0x7256, 0x7230, 0x8662, 0x5216, 0x809F, 0x809C, 0x8093, 0x80BC, 0x670A,
+ 0x80BD, 0x80B1, 0x80AB, 0x80AD, 0x80B4, 0x80B7, 0x80E7, 0x80E8, 0x80E9,
+ 0x80EA, 0x80DB, 0x80C2, 0x80C4, 0x80D9, 0x80CD, 0x80D7, 0x6710, 0x80DD,
+ 0x80EB, 0x80F1, 0x80F4, 0x80ED, 0x810D, 0x810E, 0x80F2, 0x80FC, 0x6715,
+ 0x8112, 0x8C5A, 0x8136, 0x811E, 0x812C, 0x8118, 0x8132, 0x8148, 0x814C,
+ 0x8153, 0x8174, 0x8159, 0x815A, 0x8171, 0x8160, 0x8169, 0x817C, 0x817D,
+ 0x816D, 0x8167, 0x584D, 0x5AB5, 0x8188, 0x8182, 0x8191, 0x6ED5, 0x81A3,
+ 0x81AA, 0x81CC, 0x6726, 0x81CA, 0x81BB, 0x81C1, 0x81A6, 0x6B24, 0x6B37,
+ 0x6B39, 0x6B43, 0x6B46, 0x6B59, 0x98D1, 0x98D2, 0x98D3, 0x98D5, 0x98D9,
+ 0x98DA, 0x6BB3, 0x5F40, 0x6BC2, 0x89F3, 0x6590, 0x9F51, 0x6593, 0x65BC,
+ 0x65C6, 0x65C4, 0x65C3, 0x65CC, 0x65CE, 0x65D2, 0x65D6, 0x7080, 0x709C,
+ 0x7096, 0x709D, 0x70BB, 0x70C0, 0x70B7, 0x70AB, 0x70B1, 0x70E8, 0x70CA,
+ 0x7110, 0x7113, 0x7116, 0x712F, 0x7131, 0x7173, 0x715C, 0x7168, 0x7145,
+ 0x7172, 0x714A, 0x7178, 0x717A, 0x7198, 0x71B3, 0x71B5, 0x71A8, 0x71A0,
+ 0x71E0, 0x71D4, 0x71E7, 0x71F9, 0x721D, 0x7228, 0x706C, 0x7118, 0x7166,
+ 0x71B9, 0x623E, 0x623D, 0x6243, 0x6248, 0x6249, 0x793B, 0x7940, 0x7946,
+ 0x7949, 0x795B, 0x795C, 0x7953, 0x795A, 0x7962, 0x7957, 0x7960, 0x796F,
+ 0x7967, 0x797A, 0x7985, 0x798A, 0x799A, 0x79A7, 0x79B3, 0x5FD1, 0x5FD0,
+ 0x603C, 0x605D, 0x605A, 0x6067, 0x6041, 0x6059, 0x6063, 0x60AB, 0x6106,
+ 0x610D, 0x615D, 0x61A9, 0x619D, 0x61CB, 0x61D1, 0x6206, 0x8080, 0x807F,
+ 0x6C93, 0x6CF6, 0x6DFC, 0x77F6, 0x77F8, 0x7800, 0x7809, 0x7817, 0x7818,
+ 0x7811, 0x65AB, 0x782D, 0x781C, 0x781D, 0x7839, 0x783A, 0x783B, 0x781F,
+ 0x783C, 0x7825, 0x782C, 0x7823, 0x7829, 0x784E, 0x786D, 0x7856, 0x7857,
+ 0x7826, 0x7850, 0x7847, 0x784C, 0x786A, 0x789B, 0x7893, 0x789A, 0x7887,
+ 0x789C, 0x78A1, 0x78A3, 0x78B2, 0x78B9, 0x78A5, 0x78D4, 0x78D9, 0x78C9,
+ 0x78EC, 0x78F2, 0x7905, 0x78F4, 0x7913, 0x7924, 0x791E, 0x7934, 0x9F9B,
+ 0x9EF9, 0x9EFB, 0x9EFC, 0x76F1, 0x7704, 0x770D, 0x76F9, 0x7707, 0x7708,
+ 0x771A, 0x7722, 0x7719, 0x772D, 0x7726, 0x7735, 0x7738, 0x7750, 0x7751,
+ 0x7747, 0x7743, 0x775A, 0x7768, 0x7762, 0x7765, 0x777F, 0x778D, 0x777D,
+ 0x7780, 0x778C, 0x7791, 0x779F, 0x77A0, 0x77B0, 0x77B5, 0x77BD, 0x753A,
+ 0x7540, 0x754E, 0x754B, 0x7548, 0x755B, 0x7572, 0x7579, 0x7583, 0x7F58,
+ 0x7F61, 0x7F5F, 0x8A48, 0x7F68, 0x7F74, 0x7F71, 0x7F79, 0x7F81, 0x7F7E,
+ 0x76CD, 0x76E5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948B, 0x948A, 0x948C,
+ 0x948D, 0x948F, 0x9490, 0x9494, 0x9497, 0x9495, 0x949A, 0x949B, 0x949C,
+ 0x94A3, 0x94A4, 0x94AB, 0x94AA, 0x94AD, 0x94AC, 0x94AF, 0x94B0, 0x94B2,
+ 0x94B4, 0x94B6, 0x94B7, 0x94B8, 0x94B9, 0x94BA, 0x94BC, 0x94BD, 0x94BF,
+ 0x94C4, 0x94C8, 0x94C9, 0x94CA, 0x94CB, 0x94CC, 0x94CD, 0x94CE, 0x94D0,
+ 0x94D1, 0x94D2, 0x94D5, 0x94D6, 0x94D7, 0x94D9, 0x94D8, 0x94DB, 0x94DE,
+ 0x94DF, 0x94E0, 0x94E2, 0x94E4, 0x94E5, 0x94E7, 0x94E8, 0x94EA, 0x94E9,
+ 0x94EB, 0x94EE, 0x94EF, 0x94F3, 0x94F4, 0x94F5, 0x94F7, 0x94F9, 0x94FC,
+ 0x94FD, 0x94FF, 0x9503, 0x9502, 0x9506, 0x9507, 0x9509, 0x950A, 0x950D,
+ 0x950E, 0x950F, 0x9512, 0x9513, 0x9514, 0x9515, 0x9516, 0x9518, 0x951B,
+ 0x951D, 0x951E, 0x951F, 0x9522, 0x952A, 0x952B, 0x9529, 0x952C, 0x9531,
+ 0x9532, 0x9534, 0x9536, 0x9537, 0x9538, 0x953C, 0x953E, 0x953F, 0x9542,
+ 0x9535, 0x9544, 0x9545, 0x9546, 0x9549, 0x954C, 0x954E, 0x954F, 0x9552,
+ 0x9553, 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955B, 0x955E, 0x955F,
+ 0x955D, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567, 0x9568, 0x9569,
+ 0x956A, 0x956B, 0x956C, 0x956F, 0x9571, 0x9572, 0x9573, 0x953A, 0x77E7,
+ 0x77EC, 0x96C9, 0x79D5, 0x79ED, 0x79E3, 0x79EB, 0x7A06, 0x5D47, 0x7A03,
+ 0x7A02, 0x7A1E, 0x7A14, 0x7A39, 0x7A37, 0x7A51, 0x9ECF, 0x99A5, 0x7A70,
+ 0x7688, 0x768E, 0x7693, 0x7699, 0x76A4, 0x74DE, 0x74E0, 0x752C, 0x9E20,
+ 0x9E22, 0x9E28, 0x9E29, 0x9E2A, 0x9E2B, 0x9E2C, 0x9E32, 0x9E31, 0x9E36,
+ 0x9E38, 0x9E37, 0x9E39, 0x9E3A, 0x9E3E, 0x9E41, 0x9E42, 0x9E44, 0x9E46,
+ 0x9E47, 0x9E48, 0x9E49, 0x9E4B, 0x9E4C, 0x9E4E, 0x9E51, 0x9E55, 0x9E57,
+ 0x9E5A, 0x9E5B, 0x9E5C, 0x9E5E, 0x9E63, 0x9E66, 0x9E67, 0x9E68, 0x9E69,
+ 0x9E6A, 0x9E6B, 0x9E6C, 0x9E71, 0x9E6D, 0x9E73, 0x7592, 0x7594, 0x7596,
+ 0x75A0, 0x759D, 0x75AC, 0x75A3, 0x75B3, 0x75B4, 0x75B8, 0x75C4, 0x75B1,
+ 0x75B0, 0x75C3, 0x75C2, 0x75D6, 0x75CD, 0x75E3, 0x75E8, 0x75E6, 0x75E4,
+ 0x75EB, 0x75E7, 0x7603, 0x75F1, 0x75FC, 0x75FF, 0x7610, 0x7600, 0x7605,
+ 0x760C, 0x7617, 0x760A, 0x7625, 0x7618, 0x7615, 0x7619, 0x761B, 0x763C,
+ 0x7622, 0x7620, 0x7640, 0x762D, 0x7630, 0x763F, 0x7635, 0x7643, 0x763E,
+ 0x7633, 0x764D, 0x765E, 0x7654, 0x765C, 0x7656, 0x766B, 0x766F, 0x7FCA,
+ 0x7AE6, 0x7A78, 0x7A79, 0x7A80, 0x7A86, 0x7A88, 0x7A95, 0x7AA6, 0x7AA0,
+ 0x7AAC, 0x7AA8, 0x7AAD, 0x7AB3, 0x8864, 0x8869, 0x8872, 0x887D, 0x887F,
+ 0x8882, 0x88A2, 0x88C6, 0x88B7, 0x88BC, 0x88C9, 0x88E2, 0x88CE, 0x88E3,
+ 0x88E5, 0x88F1, 0x891A, 0x88FC, 0x88E8, 0x88FE, 0x88F0, 0x8921, 0x8919,
+ 0x8913, 0x891B, 0x890A, 0x8934, 0x892B, 0x8936, 0x8941, 0x8966, 0x897B,
+ 0x758B, 0x80E5, 0x76B2, 0x76B4, 0x77DC, 0x8012, 0x8014, 0x8016, 0x801C,
+ 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 0x8029, 0x8028, 0x8031, 0x800B,
+ 0x8035, 0x8043, 0x8046, 0x804D, 0x8052, 0x8069, 0x8071, 0x8983, 0x9878,
+ 0x9880, 0x9883, 0x9889, 0x988C, 0x988D, 0x988F, 0x9894, 0x989A, 0x989B,
+ 0x989E, 0x989F, 0x98A1, 0x98A2, 0x98A5, 0x98A6, 0x864D, 0x8654, 0x866C,
+ 0x866E, 0x867F, 0x867A, 0x867C, 0x867B, 0x86A8, 0x868D, 0x868B, 0x86AC,
+ 0x869D, 0x86A7, 0x86A3, 0x86AA, 0x8693, 0x86A9, 0x86B6, 0x86C4, 0x86B5,
+ 0x86CE, 0x86B0, 0x86BA, 0x86B1, 0x86AF, 0x86C9, 0x86CF, 0x86B4, 0x86E9,
+ 0x86F1, 0x86F2, 0x86ED, 0x86F3, 0x86D0, 0x8713, 0x86DE, 0x86F4, 0x86DF,
+ 0x86D8, 0x86D1, 0x8703, 0x8707, 0x86F8, 0x8708, 0x870A, 0x870D, 0x8709,
+ 0x8723, 0x873B, 0x871E, 0x8725, 0x872E, 0x871A, 0x873E, 0x8748, 0x8734,
+ 0x8731, 0x8729, 0x8737, 0x873F, 0x8782, 0x8722, 0x877D, 0x877E, 0x877B,
+ 0x8760, 0x8770, 0x874C, 0x876E, 0x878B, 0x8753, 0x8763, 0x877C, 0x8764,
+ 0x8759, 0x8765, 0x8793, 0x87AF, 0x87A8, 0x87D2, 0x87C6, 0x8788, 0x8785,
+ 0x87AD, 0x8797, 0x8783, 0x87AB, 0x87E5, 0x87AC, 0x87B5, 0x87B3, 0x87CB,
+ 0x87D3, 0x87BD, 0x87D1, 0x87C0, 0x87CA, 0x87DB, 0x87EA, 0x87E0, 0x87EE,
+ 0x8816, 0x8813, 0x87FE, 0x880A, 0x881B, 0x8821, 0x8839, 0x883C, 0x7F36,
+ 0x7F42, 0x7F44, 0x7F45, 0x8210, 0x7AFA, 0x7AFD, 0x7B08, 0x7B03, 0x7B04,
+ 0x7B15, 0x7B0A, 0x7B2B, 0x7B0F, 0x7B47, 0x7B38, 0x7B2A, 0x7B19, 0x7B2E,
+ 0x7B31, 0x7B20, 0x7B25, 0x7B24, 0x7B33, 0x7B3E, 0x7B1E, 0x7B58, 0x7B5A,
+ 0x7B45, 0x7B75, 0x7B4C, 0x7B5D, 0x7B60, 0x7B6E, 0x7B7B, 0x7B62, 0x7B72,
+ 0x7B71, 0x7B90, 0x7BA6, 0x7BA7, 0x7BB8, 0x7BAC, 0x7B9D, 0x7BA8, 0x7B85,
+ 0x7BAA, 0x7B9C, 0x7BA2, 0x7BAB, 0x7BB4, 0x7BD1, 0x7BC1, 0x7BCC, 0x7BDD,
+ 0x7BDA, 0x7BE5, 0x7BE6, 0x7BEA, 0x7C0C, 0x7BFE, 0x7BFC, 0x7C0F, 0x7C16,
+ 0x7C0B, 0x7C1F, 0x7C2A, 0x7C26, 0x7C38, 0x7C41, 0x7C40, 0x81FE, 0x8201,
+ 0x8202, 0x8204, 0x81EC, 0x8844, 0x8221, 0x8222, 0x8223, 0x822D, 0x822F,
+ 0x8228, 0x822B, 0x8238, 0x823B, 0x8233, 0x8234, 0x823E, 0x8244, 0x8249,
+ 0x824B, 0x824F, 0x825A, 0x825F, 0x8268, 0x887E, 0x8885, 0x8888, 0x88D8,
+ 0x88DF, 0x895E, 0x7F9D, 0x7F9F, 0x7FA7, 0x7FAF, 0x7FB0, 0x7FB2, 0x7C7C,
+ 0x6549, 0x7C91, 0x7C9D, 0x7C9C, 0x7C9E, 0x7CA2, 0x7CB2, 0x7CBC, 0x7CBD,
+ 0x7CC1, 0x7CC7, 0x7CCC, 0x7CCD, 0x7CC8, 0x7CC5, 0x7CD7, 0x7CE8, 0x826E,
+ 0x66A8, 0x7FBF, 0x7FCE, 0x7FD5, 0x7FE5, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FEE,
+ 0x7FF3, 0x7CF8, 0x7D77, 0x7DA6, 0x7DAE, 0x7E47, 0x7E9B, 0x9EB8, 0x9EB4,
+ 0x8D73, 0x8D84, 0x8D94, 0x8D91, 0x8DB1, 0x8D67, 0x8D6D, 0x8C47, 0x8C49,
+ 0x914A, 0x9150, 0x914E, 0x914F, 0x9164, 0x9162, 0x9161, 0x9170, 0x9169,
+ 0x916F, 0x917D, 0x917E, 0x9172, 0x9174, 0x9179, 0x918C, 0x9185, 0x9190,
+ 0x918D, 0x9191, 0x91A2, 0x91A3, 0x91AA, 0x91AD, 0x91AE, 0x91AF, 0x91B5,
+ 0x91B4, 0x91BA, 0x8C55, 0x9E7E, 0x8DB8, 0x8DEB, 0x8E05, 0x8E59, 0x8E69,
+ 0x8DB5, 0x8DBF, 0x8DBC, 0x8DBA, 0x8DC4, 0x8DD6, 0x8DD7, 0x8DDA, 0x8DDE,
+ 0x8DCE, 0x8DCF, 0x8DDB, 0x8DC6, 0x8DEC, 0x8DF7, 0x8DF8, 0x8DE3, 0x8DF9,
+ 0x8DFB, 0x8DE4, 0x8E09, 0x8DFD, 0x8E14, 0x8E1D, 0x8E1F, 0x8E2C, 0x8E2E,
+ 0x8E23, 0x8E2F, 0x8E3A, 0x8E40, 0x8E39, 0x8E35, 0x8E3D, 0x8E31, 0x8E49,
+ 0x8E41, 0x8E42, 0x8E51, 0x8E52, 0x8E4A, 0x8E70, 0x8E76, 0x8E7C, 0x8E6F,
+ 0x8E74, 0x8E85, 0x8E8F, 0x8E94, 0x8E90, 0x8E9C, 0x8E9E, 0x8C78, 0x8C82,
+ 0x8C8A, 0x8C85, 0x8C98, 0x8C94, 0x659B, 0x89D6, 0x89DE, 0x89DA, 0x89DC,
+ 0x89E5, 0x89EB, 0x89EF, 0x8A3E, 0x8B26, 0x9753, 0x96E9, 0x96F3, 0x96EF,
+ 0x9706, 0x9701, 0x9708, 0x970F, 0x970E, 0x972A, 0x972D, 0x9730, 0x973E,
+ 0x9F80, 0x9F83, 0x9F85, 0x9F86, 0x9F87, 0x9F88, 0x9F89, 0x9F8A, 0x9F8C,
+ 0x9EFE, 0x9F0B, 0x9F0D, 0x96B9, 0x96BC, 0x96BD, 0x96CE, 0x96D2, 0x77BF,
+ 0x96E0, 0x928E, 0x92AE, 0x92C8, 0x933E, 0x936A, 0x93CA, 0x938F, 0x943E,
+ 0x946B, 0x9C7F, 0x9C82, 0x9C85, 0x9C86, 0x9C87, 0x9C88, 0x7A23, 0x9C8B,
+ 0x9C8E, 0x9C90, 0x9C91, 0x9C92, 0x9C94, 0x9C95, 0x9C9A, 0x9C9B, 0x9C9E,
+ 0x9C9F, 0x9CA0, 0x9CA1, 0x9CA2, 0x9CA3, 0x9CA5, 0x9CA6, 0x9CA7, 0x9CA8,
+ 0x9CA9, 0x9CAB, 0x9CAD, 0x9CAE, 0x9CB0, 0x9CB1, 0x9CB2, 0x9CB3, 0x9CB4,
+ 0x9CB5, 0x9CB6, 0x9CB7, 0x9CBA, 0x9CBB, 0x9CBC, 0x9CBD, 0x9CC4, 0x9CC5,
+ 0x9CC6, 0x9CC7, 0x9CCA, 0x9CCB, 0x9CCC, 0x9CCD, 0x9CCE, 0x9CCF, 0x9CD0,
+ 0x9CD3, 0x9CD4, 0x9CD5, 0x9CD7, 0x9CD8, 0x9CD9, 0x9CDC, 0x9CDD, 0x9CDF,
+ 0x9CE2, 0x977C, 0x9785, 0x9791, 0x9792, 0x9794, 0x97AF, 0x97AB, 0x97A3,
+ 0x97B2, 0x97B4, 0x9AB1, 0x9AB0, 0x9AB7, 0x9E58, 0x9AB6, 0x9ABA, 0x9ABC,
+ 0x9AC1, 0x9AC0, 0x9AC5, 0x9AC2, 0x9ACB, 0x9ACC, 0x9AD1, 0x9B45, 0x9B43,
+ 0x9B47, 0x9B49, 0x9B48, 0x9B4D, 0x9B51, 0x98E8, 0x990D, 0x992E, 0x9955,
+ 0x9954, 0x9ADF, 0x9AE1, 0x9AE6, 0x9AEF, 0x9AEB, 0x9AFB, 0x9AED, 0x9AF9,
+ 0x9B08, 0x9B0F, 0x9B13, 0x9B1F, 0x9B23, 0x9EBD, 0x9EBE, 0x7E3B, 0x9E82,
+ 0x9E87, 0x9E88, 0x9E8B, 0x9E92, 0x93D6, 0x9E9D, 0x9E9F, 0x9EDB, 0x9EDC,
+ 0x9EDD, 0x9EE0, 0x9EDF, 0x9EE2, 0x9EE9, 0x9EE7, 0x9EE5, 0x9EEA, 0x9EEF,
+ 0x9F22, 0x9F2C, 0x9F2F, 0x9F39, 0x9F37, 0x9F3D, 0x9F3E, 0x9F44, 0x3007,
+ 0xFF5E, 0x2016, 0x3013, 0xFF0E, 0xFF1D, 0xFF3B, 0xFF3D, 0xFFE3, 0x00FC,
+ 0x00A9, 0x2122, 0x2026, 0x0020, 0x769A, 0x85F9, 0x7919, 0x611B, 0x9AAF,
+ 0x8956, 0x58E9, 0x7F77, 0x64FA, 0x6557, 0x9812, 0x8FA6, 0x7D46, 0x5E6B,
+ 0x7D81, 0x938A, 0x8B17, 0x98FD, 0x5BF6, 0x5831, 0x9B91, 0x8F29, 0x8C9D,
+ 0x92C7, 0x72FD, 0x5099, 0x618A, 0x7DB3, 0x7B46, 0x7562, 0x6583, 0x5E63,
+ 0x9589, 0x908A, 0x7DE8, 0x8CB6, 0x8B8A, 0x8FAF, 0x8FAE, 0x6A19, 0x9C49,
+ 0x765F, 0x7015, 0x6FF1, 0x8CD3, 0x64EF, 0x9905, 0x64A5, 0x9262, 0x9251,
+ 0x99C1, 0x88DC, 0x8CA1, 0x53C3, 0x8836, 0x6B98, 0x615A, 0x6158, 0x71E6,
+ 0x84BC, 0x8259, 0x5009, 0x6EC4, 0x53A0, 0x5074, 0x6E2C, 0x5C64, 0x8A6B,
+ 0x6519, 0x647B, 0x87EC, 0x995E, 0x8B92, 0x7E8F, 0x93DF, 0x7523, 0x95E1,
+ 0x986B, 0x5834, 0x5617, 0x9577, 0x511F, 0x8178, 0x5EE0, 0x66A2, 0x9214,
+ 0x8ECA, 0x5FB9, 0x5875, 0x9673, 0x896F, 0x7A31, 0x61F2, 0x8AA0, 0x9A01,
+ 0x9072, 0x99B3, 0x9F52, 0x71BE, 0x885D, 0x87F2, 0x5BF5, 0x7587, 0x8E8A,
+ 0x7C4C, 0x7DA2, 0x919C, 0x92E4, 0x96DB, 0x790E, 0x5132, 0x89F8, 0x8655,
+ 0x50B3, 0x7621, 0x95D6, 0x5275, 0x9318, 0x7D14, 0x7DBD, 0x8FAD, 0x8A5E,
+ 0x8CDC, 0x8070, 0x5F9E, 0x53E2, 0x8EA5, 0x7AC4, 0x932F, 0x9054, 0x5E36,
+ 0x8CB8, 0x64D4, 0x55AE, 0x9132, 0x64A3, 0x81BD, 0x619A, 0x8A95, 0x5F48,
+ 0x7576, 0x64CB, 0x9EE8, 0x8569, 0x6A94, 0x6417, 0x5CF6, 0x79B1, 0x5C0E,
+ 0x71C8, 0x9127, 0x6575, 0x6ECC, 0x905E, 0x7DE0, 0x985B, 0x9EDE, 0x588A,
+ 0x96FB, 0x6FB1, 0x91E3, 0x8ABF, 0x8ADC, 0x91D8, 0x9802, 0x9320, 0x8A02,
+ 0x6771, 0x52D5, 0x68DF, 0x51CD, 0x9B25, 0x72A2, 0x7368, 0x8B80, 0x8CED,
+ 0x934D, 0x935B, 0x65B7, 0x7DDE, 0x968A, 0x5C0D, 0x5678, 0x9813, 0x920D,
+ 0x596A, 0x58AE, 0x9D5D, 0x984D, 0x8A1B, 0x60E1, 0x9913, 0x5152, 0x723E,
+ 0x990C, 0x8CB3, 0x767C, 0x7F70, 0x95A5, 0x792C, 0x91E9, 0x7169, 0x7BC4,
+ 0x8CA9, 0x98EF, 0x8A2A, 0x7D21, 0x98DB, 0x8AB9, 0x5EE2, 0x8CBB, 0x7D1B,
+ 0x58B3, 0x596E, 0x61A4, 0x7CDE, 0x8C50, 0x6953, 0x92D2, 0x98A8, 0x760B,
+ 0x99AE, 0x7E2B, 0x8AF7, 0x9CF3, 0x819A, 0x8F3B, 0x64AB, 0x8F14, 0x8CE6,
+ 0x5FA9, 0x8CA0, 0x8A03, 0x5A66, 0x7E1B, 0x8A72, 0x9223, 0x84CB, 0x5E79,
+ 0x8D95, 0x8D1B, 0x5CA1, 0x525B, 0x92FC, 0x7DB1, 0x5D17, 0x93AC, 0x64F1,
+ 0x9D3F, 0x95A3, 0x927B, 0x500B, 0x7D66, 0x9F94, 0x978F, 0x8CA2, 0x920E,
+ 0x6E9D, 0x69CB, 0x8CFC, 0x8831, 0x9867, 0x526E, 0x95DC, 0x89C0, 0x9928,
+ 0x6163, 0x8CAB, 0x5EE3, 0x898F, 0x6B78, 0x9F9C, 0x95A8, 0x8ECC, 0x8A6D,
+ 0x6AC3, 0x8CB4, 0x528A, 0x8F25, 0x934B, 0x570B, 0x904E, 0x99ED, 0x97D3,
+ 0x6F22, 0x865F, 0x95A1, 0x9DB4, 0x8CC0, 0x8F5F, 0x9D3B, 0x7D05, 0x58FA,
+ 0x8B77, 0x6EEC, 0x5629, 0x83EF, 0x756B, 0x5283, 0x8A71, 0x61F7, 0x58DE,
+ 0x6B61, 0x74B0, 0x9084, 0x7DE9, 0x8B0A, 0x63EE, 0x8F1D, 0x8CC4, 0x7A62,
+ 0x6703, 0x71F4, 0x532F, 0x8AF1, 0x8AA8, 0x7E6A, 0x8477, 0x6E3E, 0x7372,
+ 0x8CA8, 0x798D, 0x64CA, 0x6A5F, 0x7A4D, 0x9951, 0x8B4F, 0x9DC4, 0x7E3E,
+ 0x7DDD, 0x6975, 0x8F2F, 0x7D1A, 0x64E0, 0x5E7E, 0x858A, 0x5291, 0x6FDF,
+ 0x8A08, 0x8A18, 0x969B, 0x7E7C, 0x7D00, 0x593E, 0x83A2, 0x9830, 0x8CC8,
+ 0x9240, 0x50F9, 0x99D5, 0x6BB2, 0x76E3, 0x5805, 0x7B8B, 0x9593, 0x8271,
+ 0x7DD8, 0x7E6D, 0x6AA2, 0x9E7C, 0x63C0, 0x64BF, 0x7C21, 0x5109, 0x85A6,
+ 0x6ABB, 0x9452, 0x8E10, 0x8CE4, 0x898B, 0x9375, 0x8266, 0x528D, 0x991E,
+ 0x6F38, 0x6FFA, 0x6F97, 0x5C07, 0x6F3F, 0x8523, 0x69F3, 0x596C, 0x8B1B,
+ 0x91AC, 0x81A0, 0x6F86, 0x9A55, 0x5B0C, 0x652A, 0x9278, 0x77EF, 0x50E5,
+ 0x9903, 0x7E73, 0x7D5E, 0x8F4E, 0x8F03, 0x968E, 0x7BC0, 0x6F54, 0x7D50,
+ 0x8AA1, 0x7DCA, 0x9326, 0x50C5, 0x8B39, 0x9032, 0x71FC, 0x76E1, 0x52C1,
+ 0x8396, 0x9BE8, 0x9A5A, 0x7D93, 0x9838, 0x93E1, 0x5F91, 0x75D9, 0x7AF6,
+ 0x7CFE, 0x820A, 0x99D2, 0x8209, 0x64DA, 0x92F8, 0x61FC, 0x5287, 0x9D51,
+ 0x7D79, 0x89BA, 0x8A23, 0x7D76, 0x921E, 0x8ECD, 0x99FF, 0x958B, 0x51F1,
+ 0x9846, 0x6BBB, 0x8AB2, 0x58BE, 0x61C7, 0x6473, 0x5EAB, 0x8932, 0x8A87,
+ 0x584A, 0x5108, 0x5BEC, 0x7926, 0x66E0, 0x8667, 0x5DCB, 0x7ABA, 0x994B,
+ 0x6F70, 0x64F4, 0x95CA, 0x881F, 0x81D8, 0x840A, 0x4F86, 0x8CF4, 0x85CD,
+ 0x6B04, 0x6514, 0x7C43, 0x95CC, 0x862D, 0x703E, 0x8B95, 0x652C, 0x89BD,
+ 0x61F6, 0x7E9C, 0x721B, 0x6FEB, 0x6488, 0x52DE, 0x6F87, 0x6A02, 0x9433,
+ 0x58D8, 0x985E, 0x7C6C, 0x96E2, 0x7055, 0x88CF, 0x9BC9, 0x79AE, 0x9E97,
+ 0x53B2, 0x52F5, 0x792B, 0x6B77, 0x701D, 0x96B8, 0x5006, 0x806F, 0x84EE,
+ 0x9023, 0x942E, 0x6190, 0x6F23, 0x7C3E, 0x6582, 0x81C9, 0x93C8, 0x6200,
+ 0x7149, 0x7DF4, 0x7CE7, 0x5169, 0x8F1B, 0x8AD2, 0x7642, 0x907C, 0x9410,
+ 0x7375, 0x81E8, 0x9130, 0x9C57, 0x8CC3, 0x9F61, 0x9234, 0x9748, 0x5DBA,
+ 0x9818, 0x993E, 0x5289, 0x9F8D, 0x807E, 0x56A8, 0x7C60, 0x58DF, 0x650F,
+ 0x96B4, 0x6A13, 0x5A41, 0x645F, 0x7C0D, 0x8606, 0x76E7, 0x9871, 0x5EEC,
+ 0x7210, 0x64C4, 0x6EF7, 0x865C, 0x9B6F, 0x8CC2, 0x9332, 0x9678, 0x9A62,
+ 0x92C1, 0x5C62, 0x7E37, 0x616E, 0x6FFE, 0x7DD1, 0x5DD2, 0x6523, 0x5B7F,
+ 0x7064, 0x4E82, 0x6384, 0x8F2A, 0x502B, 0x4F96, 0x6DEA, 0x7DB8, 0x8AD6,
+ 0x863F, 0x7F85, 0x908F, 0x947C, 0x7C6E, 0x9A3E, 0x99F1, 0x7D61, 0x5ABD,
+ 0x746A, 0x78BC, 0x879E, 0x99AC, 0x99E1, 0x55CE, 0x8CB7, 0x9EA5, 0x8CE3,
+ 0x9081, 0x779E, 0x9945, 0x883B, 0x6EFF, 0x8B3E, 0x9328, 0x925A, 0x8CBF,
+ 0x9382, 0x9580, 0x60B6, 0x5011, 0x9333, 0x5922, 0x8B0E, 0x5F4C, 0x8993,
+ 0x7DBF, 0x7DEC, 0x5EDF, 0x6EC5, 0x61AB, 0x95A9, 0x9CF4, 0x9298, 0x8B2C,
+ 0x8B00, 0x755D, 0x9209, 0x7D0D, 0x96E3, 0x6493, 0x8166, 0x60F1, 0x9B27,
+ 0x9912, 0x64EC, 0x81A9, 0x6506, 0x91C0, 0x9CE5, 0x8076, 0x5699, 0x9477,
+ 0x93B3, 0x6AB8, 0x7370, 0x5BE7, 0x64F0, 0x6FD8, 0x9215, 0x7D10, 0x81BF,
+ 0x6FC3, 0x8FB2, 0x7627, 0x8AFE, 0x6B50, 0x9DD7, 0x6BC6, 0x5614, 0x6F1A,
+ 0x76E4, 0x9F90, 0x8CE0, 0x5674, 0x9D6C, 0x9A19, 0x98C4, 0x983B, 0x8CA7,
+ 0x860B, 0x6191, 0x8A55, 0x6F51, 0x9817, 0x64B2, 0x92EA, 0x50D5, 0x6A38,
+ 0x8B5C, 0x81CD, 0x9F4A, 0x9A0E, 0x8C48, 0x5553, 0x6C23, 0x8A16, 0x727D,
+ 0x91FA, 0x925B, 0x9077, 0x7C3D, 0x8B19, 0x9322, 0x9257, 0x6DFA, 0x8B74,
+ 0x5879, 0x69CD, 0x55C6, 0x58BB, 0x8594, 0x6436, 0x936C, 0x6A4B, 0x55AC,
+ 0x50D1, 0x7FF9, 0x7AC5, 0x7ACA, 0x6B3D, 0x89AA, 0x5BE2, 0x8F15, 0x6C2B,
+ 0x50BE, 0x9803, 0x8ACB, 0x6176, 0x74CA, 0x7AAE, 0x8DA8, 0x5340, 0x8EC0,
+ 0x9A45, 0x9F72, 0x9874, 0x6B0A, 0x52F8, 0x9D72, 0x78BA, 0x8B93, 0x9952,
+ 0x64FE, 0x7E5E, 0x71B1, 0x97CC, 0x8A8D, 0x7D09, 0x69AE, 0x7D68, 0x8EDF,
+ 0x92ED, 0x958F, 0x6F64, 0x7051, 0x85A9, 0x9C13, 0x8CFD, 0x5098, 0x55AA,
+ 0x9A37, 0x6383, 0x6F80, 0x6BBA, 0x7D17, 0x7BE9, 0x66EC, 0x9583, 0x965D,
+ 0x8D0D, 0x7E55, 0x50B7, 0x8CDE, 0x71D2, 0x7D39, 0x8CD2, 0x6368, 0x651D,
+ 0x61FE, 0x8A2D, 0x7D33, 0x5BE9, 0x5B38, 0x814E, 0x6EF2, 0x8072, 0x7E69,
+ 0x52DD, 0x8056, 0x5E2B, 0x7345, 0x6FD5, 0x8A69, 0x6642, 0x8755, 0x5BE6,
+ 0x8B58, 0x99DB, 0x52E2, 0x9069, 0x91CB, 0x98FE, 0x8996, 0x8A66, 0x58FD,
+ 0x7378, 0x6A1E, 0x8F38, 0x66F8, 0x8D16, 0x5C6C, 0x8853, 0x6A39, 0x7AEA,
+ 0x6578, 0x5E25, 0x96D9, 0x8AB0, 0x9806, 0x8AAC, 0x78A9, 0x720D, 0x7D72,
+ 0x98FC, 0x9B06, 0x8073, 0x616B, 0x980C, 0x8A1F, 0x8AA6, 0x64FB, 0x8607,
+ 0x8A34, 0x8085, 0x96D6, 0x96A8, 0x7D8F, 0x6B72, 0x5B6B, 0x640D, 0x7E2E,
+ 0x7463, 0x9396, 0x737A, 0x64BB, 0x81FA, 0x614B, 0x6524, 0x8CAA, 0x7671,
+ 0x7058, 0x58C7, 0x8B5A, 0x8AC7, 0x5606, 0x6E6F, 0x71D9, 0x6FE4, 0x7E27,
+ 0x8A0E, 0x9A30, 0x8B04, 0x92BB, 0x984C, 0x9AD4, 0x689D, 0x8CBC, 0x9435,
+ 0x5EF3, 0x807D, 0x70F4, 0x9285, 0x7D71, 0x982D, 0x5716, 0x5857, 0x5718,
+ 0x983D, 0x9D15, 0x99B1, 0x99DD, 0x6A62, 0x7AAA, 0x896A, 0x5F4E, 0x7063,
+ 0x9811, 0x842C, 0x7DB2, 0x97CB, 0x9055, 0x570D, 0x7232, 0x6FF0, 0x7DAD,
+ 0x8466, 0x5049, 0x50DE, 0x7DEF, 0x8B02, 0x885B, 0x805E, 0x7D0B, 0x7A69,
+ 0x554F, 0x64BE, 0x8778, 0x6E26, 0x7AA9, 0x55DA, 0x93A2, 0x70CF, 0x8AA3,
+ 0x7121, 0x856A, 0x5862, 0x9727, 0x52D9, 0x8AA4, 0x932B, 0x72A7, 0x8972,
+ 0x7FD2, 0x9291, 0x6232, 0x7D30, 0x8766, 0x8F44, 0x5CFD, 0x4FE0, 0x72F9,
+ 0x5687, 0x9341, 0x9BAE, 0x7E96, 0x8CE2, 0x929C, 0x9591, 0x986F, 0x96AA,
+ 0x73FE, 0x737B, 0x7E23, 0x9921, 0x61B2, 0x7DAB, 0x9472, 0x9109, 0x8A73,
+ 0x97FF, 0x9805, 0x856D, 0x56C2, 0x92B7, 0x66C9, 0x562F, 0x5354, 0x633E,
+ 0x8105, 0x8AE7, 0x5BEB, 0x7009, 0x8B1D, 0x92C5, 0x91C1, 0x8208, 0x92B9,
+ 0x7D89, 0x9808, 0x8A31, 0x7DD2, 0x7E8C, 0x8ED2, 0x61F8, 0x9078, 0x766C,
+ 0x7D62, 0x5B78, 0x52DB, 0x8A62, 0x5C0B, 0x99B4, 0x8A13, 0x8A0A, 0x905C,
+ 0x58D3, 0x9D09, 0x9D28, 0x555E, 0x4E9E, 0x8A1D, 0x95B9, 0x9E7D, 0x56B4,
+ 0x9854, 0x95BB, 0x8277, 0x53AD, 0x786F, 0x8AFA, 0x9A57, 0x9D26, 0x694A,
+ 0x63DA, 0x760D, 0x967D, 0x7662, 0x990A, 0x6A23, 0x582F, 0x8B21, 0x85E5,
+ 0x723A, 0x9801, 0x696D, 0x8449, 0x91AB, 0x92A5, 0x9824, 0x907A, 0x5100,
+ 0x87FB, 0x85DD, 0x5104, 0x61B6, 0x7FA9, 0x8A63, 0x8B70, 0x8ABC, 0x8B6F,
+ 0x7E79, 0x852D, 0x9670, 0x9280, 0x98F2, 0x96B1, 0x6AFB, 0x5B30, 0x9DF9,
+ 0x61C9, 0x7E93, 0x7469, 0x87A2, 0x71DF, 0x7192, 0x8805, 0x8D0F, 0x7A4E,
+ 0x55B2, 0x64C1, 0x50AD, 0x7670, 0x8E34, 0x512A, 0x6182, 0x90F5, 0x923E,
+ 0x7336, 0x8A98, 0x8F3F, 0x9918, 0x9B5A, 0x6F01, 0x8207, 0x5DBC, 0x8A9E,
+ 0x9B31, 0x7344, 0x8B7D, 0x9810, 0x99AD, 0x9D1B, 0x6DF5, 0x8F45, 0x5712,
+ 0x54E1, 0x5713, 0x7DE3, 0x9060, 0x9858, 0x7D04, 0x8E8D, 0x9470, 0x95B2,
+ 0x96F2, 0x9116, 0x9695, 0x904B, 0x85F4, 0x9196, 0x6688, 0x96DC, 0x8F09,
+ 0x6522, 0x66AB, 0x8D0A, 0x8D1C, 0x81DF, 0x947F, 0x68D7, 0x7AC8, 0x8CAC,
+ 0x64C7, 0x5247, 0x6FA4, 0x8CCA, 0x8D08, 0x8ECB, 0x9358, 0x9598, 0x8A50,
+ 0x9F4B, 0x50B5, 0x6C08, 0x76DE, 0x65AC, 0x8F3E, 0x5D84, 0x68E7, 0x6230,
+ 0x7DBB, 0x5F35, 0x6F32, 0x5E33, 0x8CEC, 0x8139, 0x8D99, 0x87C4, 0x8F4D,
+ 0x937A, 0x9019, 0x8C9E, 0x91DD, 0x5075, 0x8A3A, 0x93AE, 0x9663, 0x5E40,
+ 0x7665, 0x912D, 0x8B49, 0x7E54, 0x8077, 0x57F7, 0x8879, 0x7D19, 0x646F,
+ 0x64F2, 0x5E5F, 0x8CEA, 0x6EEF, 0x9418, 0x7D42, 0x7A2E, 0x816B, 0x8846,
+ 0x8B05, 0x8EF8, 0x76BA, 0x665D, 0x9A5F, 0x8AF8, 0x8A85, 0x71ED, 0x77DA,
+ 0x56D1, 0x8CAF, 0x9444, 0x7BC9, 0x99D0, 0x5C08, 0x78DA, 0x8F49, 0x8CFA,
+ 0x6A01, 0x838A, 0x88DD, 0x599D, 0x58EF, 0x72C0, 0x9310, 0x8D05, 0x589C,
+ 0x7DB4, 0x8AC4, 0x6E96, 0x6FC1, 0x8CC7, 0x6F2C, 0x7D9C, 0x7E3D, 0x7E31,
+ 0x9112, 0x8A5B, 0x7D44, 0x947D, 0x55C7, 0x5399, 0x53B4, 0x9768, 0x8D0B,
+ 0x532D, 0x5331, 0x8CFE, 0x5244, 0x528C, 0x5274, 0x50B4, 0x5000, 0x5096,
+ 0x5115, 0x5102, 0x5114, 0x513C, 0x5137, 0x50E8, 0x50C2, 0x513B, 0x5110,
+ 0x513A, 0x50C9, 0x7CF4, 0x9ECC, 0x56C5, 0x9CEC, 0x893B, 0x81E0, 0x8A01,
+ 0x8A10, 0x8A0C, 0x8A15, 0x8B33, 0x8A4E, 0x8A25, 0x8A41, 0x8A36, 0x8A46,
+ 0x8A54, 0x8A58, 0x8A52, 0x8A86, 0x8A84, 0x8A7F, 0x8A70, 0x8A7C, 0x8A75,
+ 0x8A6C, 0x8A6E, 0x8ACD, 0x8AE2, 0x8A61, 0x8A9A, 0x8AA5, 0x8A91, 0x8A92,
+ 0x8ACF, 0x8AD1, 0x8AC9, 0x8ADB, 0x8AD7, 0x8AC2, 0x8AB6, 0x8AF6, 0x8AEB,
+ 0x8B14, 0x8B01, 0x8AE4, 0x8AED, 0x8AFC, 0x8AF3, 0x8AE6, 0x8AEE, 0x8ADE,
+ 0x8B28, 0x8B9C, 0x8B16, 0x8B1A, 0x8B10, 0x8B2B, 0x8B2D, 0x8B56, 0x8B59,
+ 0x8B4E, 0x8B9E, 0x8B6B, 0x8B96, 0x9658, 0x913A, 0x9114, 0x9134, 0x90DF,
+ 0x9136, 0x9106, 0x9148, 0x82BB, 0x52F1, 0x5DF0, 0x580A, 0x58D9, 0x58E2,
+ 0x58E0, 0x58DA, 0x57E1, 0x584F, 0x5816, 0x5852, 0x581D, 0x5864, 0x858C,
+ 0x8553, 0x85F6, 0x83A7, 0x8407, 0x84EF, 0x82E7, 0x8622, 0x8526, 0x584B,
+ 0x7162, 0x8558, 0x84FD, 0x854E, 0x8588, 0x85BA, 0x7296, 0x6ECE, 0x8541,
+ 0x85CE, 0x8552, 0x84C0, 0x8452, 0x8464, 0x8494, 0x8435, 0x859F, 0x8555,
+ 0x9DAF, 0x8493, 0x7E08, 0x8546, 0x8562, 0x851E, 0x9A40, 0x863A, 0x93A3,
+ 0x8577, 0x861E, 0x85FA, 0x8604, 0x85EA, 0x861A, 0x5969, 0x5C37, 0x636B,
+ 0x6476, 0x649F, 0x6451, 0x645C, 0x64B3, 0x6504, 0x6516, 0x64F7, 0x64FC,
+ 0x651B, 0x5630, 0x5638, 0x56C8, 0x56A6, 0x5504, 0x54BC, 0x5680, 0x565D,
+ 0x5660, 0x5635, 0x55F6, 0x5666, 0x5672, 0x568C, 0x5665, 0x561C, 0x562E,
+ 0x55E9, 0x5616, 0x56C0, 0x560D, 0x56B3, 0x56C1, 0x566F, 0x8F61, 0x56B6,
+ 0x5695, 0x5707, 0x5E43, 0x5E6C, 0x5E58, 0x5E57, 0x5D87, 0x5CF4, 0x5D50,
+ 0x5D2C, 0x5DA7, 0x5DA0, 0x5D97, 0x5D0D, 0x5DB8, 0x5D81, 0x5DD4, 0x5FA0,
+ 0x7377, 0x7341, 0x736A, 0x733B, 0x736B, 0x7380, 0x737C, 0x98E0, 0x9933,
+ 0x98E9, 0x993C, 0x98EA, 0x98EB, 0x98ED, 0x98F4, 0x9909, 0x9911, 0x991B,
+ 0x9937, 0x993F, 0x9943, 0x9948, 0x9949, 0x994A, 0x994C, 0x9962, 0x5EE1,
+ 0x8CE1, 0x61FA, 0x61AE, 0x616A, 0x613E, 0x60B5, 0x6134, 0x61CC, 0x615F,
+ 0x61E8, 0x60FB, 0x6137, 0x60F2, 0x6173, 0x611C, 0x6192, 0x9582, 0x9586,
+ 0x95C8, 0x958E, 0x9594, 0x958C, 0x95E5, 0x95AD, 0x95AB, 0x9B2E, 0x95AC,
+ 0x95BE, 0x95B6, 0x9B29, 0x95BF, 0x95BD, 0x95BC, 0x95C3, 0x95CB, 0x95D4,
+ 0x95D0, 0x95D5, 0x95DE, 0x7043, 0x6F59, 0x7027, 0x7018, 0x6FFC, 0x6D87,
+ 0x6D79, 0x6E5E, 0x6FAE, 0x700F, 0x6EF8, 0x6F6F, 0x6DF6, 0x6F7F, 0x7006,
+ 0x6FA0, 0x700B, 0x7067, 0x7044, 0x7005, 0x6F77, 0x7020, 0x701F, 0x7032,
+ 0x7028, 0x705D, 0x9A2B, 0x9087, 0x9015, 0x9090, 0x5C68, 0x5F33, 0x5AF5,
+ 0x5AD7, 0x5B00, 0x5A6D, 0x5B08, 0x5B4C, 0x5AA7, 0x5AFB, 0x5B0B, 0x5B21,
+ 0x5B2A, 0x5B19, 0x99D4, 0x99DF, 0x99D9, 0x9A36, 0x9A5B, 0x99D1, 0x99D8,
+ 0x9A4D, 0x9A4A, 0x99E2, 0x9A6A, 0x9A0F, 0x9A0D, 0x9A05, 0x9A42, 0x9A2D,
+ 0x9A16, 0x9A41, 0x9A2E, 0x9A38, 0x9A43, 0x9A44, 0x9A4F, 0x9A65, 0x9A64,
+ 0x7CF9, 0x7D06, 0x7D02, 0x7D07, 0x7D08, 0x7E8A, 0x7D1C, 0x7D15, 0x7D13,
+ 0x7D3A, 0x7D32, 0x7D31, 0x7E10, 0x7D3C, 0x7D40, 0x7D3F, 0x7D5D, 0x7D4E,
+ 0x7D73, 0x7D86, 0x7D83, 0x7D88, 0x7DBE, 0x7DBA, 0x7DCB, 0x7DD4, 0x7DC4,
+ 0x7D9E, 0x7DAC, 0x7DB9, 0x7DA3, 0x7DB0, 0x7DC7, 0x7DD9, 0x7DD7, 0x7DF9,
+ 0x7DF2, 0x7E62, 0x7DE6, 0x7DF6, 0x7DF1, 0x7E0B, 0x7DE1, 0x7E09, 0x7E1D,
+ 0x7E1F, 0x7E1E, 0x7E2D, 0x7E0A, 0x7E11, 0x7E7D, 0x7E39, 0x7E35, 0x7E32,
+ 0x7E46, 0x7E45, 0x7E88, 0x7E5A, 0x7E52, 0x7E6E, 0x7E7E, 0x7E70, 0x7E6F,
+ 0x7E98, 0x74A3, 0x744B, 0x74CF, 0x980A, 0x74BD, 0x743F, 0x7489, 0x74A6,
+ 0x74D4, 0x74DA, 0x97D9, 0x97DE, 0x97DC, 0x69AA, 0x6AEA, 0x6898, 0x68D6,
+ 0x6A05, 0x689F, 0x6ADB, 0x6AF3, 0x6AE8, 0x6ADF, 0x6A89, 0x690F, 0x6A48,
+ 0x6968, 0x69BF, 0x6A3A, 0x6A9C, 0x6B12, 0x6B1E, 0x6ADD, 0x69E7, 0x6B0F,
+ 0x6B16, 0x6AEC, 0x6ADA, 0x6AF8, 0x6AB3, 0x6AE7, 0x6AA3, 0x6AD3, 0x6ADE,
+ 0x6BA4, 0x6B9E, 0x6BAE, 0x6BAB, 0x6BAF, 0x8ED4, 0x8EDB, 0x8EF2, 0x8EFB,
+ 0x8F64, 0x8EF9, 0x8EFC, 0x8EEB, 0x8EE4, 0x8F62, 0x8EFA, 0x8EFE, 0x8F0A,
+ 0x8F07, 0x8F05, 0x8F12, 0x8F26, 0x8F1E, 0x8F1F, 0x8F1C, 0x8F33, 0x8F46,
+ 0x8F54, 0x6214, 0x6227, 0x750C, 0x66C7, 0x66C4, 0x6689, 0x66D6, 0x8CC1,
+ 0x8CB0, 0x8CBA, 0x8CBD, 0x8D04, 0x8CB2, 0x8CC5, 0x8D10, 0x8CD1, 0x8CDA,
+ 0x8CD5, 0x8CEB, 0x8CE7, 0x8CFB, 0x8998, 0x89AC, 0x89A1, 0x89BF, 0x89A6,
+ 0x89AF, 0x89B2, 0x89B7, 0x6BFF, 0x6C0C, 0x6C2C, 0x7258, 0x6727, 0x8156,
+ 0x81DA, 0x811B, 0x81BE, 0x8161, 0x81CF, 0x6B5F, 0x98AE, 0x98AF, 0x98B6,
+ 0x98BC, 0x98C6, 0x98C8, 0x8F42, 0x9F4F, 0x6595, 0x716C, 0x7152, 0x7197,
+ 0x71C1, 0x71DC, 0x71FE, 0x79B0, 0x798E, 0x79AA, 0x61DF, 0x6164, 0x61E3,
+ 0x6207, 0x6FA9, 0x78EF, 0x78AD, 0x7868, 0x78B8, 0x792A, 0x7931, 0x7864,
+ 0x78FD, 0x78E7, 0x78E3, 0x9F95, 0x7798, 0x775E, 0x77BC, 0x7F86, 0x7F88,
+ 0x91D2, 0x91D3, 0x91D4, 0x91D9, 0x91D7, 0x91D5, 0x91F7, 0x91E7, 0x91E4,
+ 0x9346, 0x91F5, 0x91F9, 0x9208, 0x9226, 0x9245, 0x9211, 0x9210, 0x9201,
+ 0x9227, 0x9204, 0x9225, 0x9200, 0x923A, 0x9266, 0x9237, 0x9233, 0x9255,
+ 0x923D, 0x9238, 0x925E, 0x926C, 0x926D, 0x923F, 0x9460, 0x9230, 0x9249,
+ 0x9248, 0x924D, 0x922E, 0x9239, 0x9438, 0x92AC, 0x92A0, 0x927A, 0x92AA,
+ 0x92EE, 0x92CF, 0x9403, 0x92E3, 0x943A, 0x92B1, 0x92A6, 0x93A7, 0x9296,
+ 0x92CC, 0x92A9, 0x93F5, 0x9293, 0x927F, 0x93A9, 0x929A, 0x931A, 0x92AB,
+ 0x9283, 0x940B, 0x92A8, 0x92A3, 0x9412, 0x9338, 0x92F1, 0x93D7, 0x92E5,
+ 0x92F0, 0x92EF, 0x92E8, 0x92BC, 0x92DD, 0x92F6, 0x9426, 0x9427, 0x92C3,
+ 0x92DF, 0x92E6, 0x9312, 0x9306, 0x9369, 0x931B, 0x9340, 0x9301, 0x9315,
+ 0x932E, 0x9343, 0x9307, 0x9308, 0x931F, 0x9319, 0x9365, 0x9347, 0x9376,
+ 0x9354, 0x9364, 0x93AA, 0x9370, 0x9384, 0x93E4, 0x93D8, 0x9428, 0x9387,
+ 0x93CC, 0x9398, 0x93B8, 0x93BF, 0x93A6, 0x93B0, 0x93B5, 0x944C, 0x93E2,
+ 0x93DC, 0x93DD, 0x93CD, 0x93DE, 0x93C3, 0x93C7, 0x93D1, 0x9414, 0x941D,
+ 0x93F7, 0x9465, 0x9413, 0x946D, 0x9420, 0x9479, 0x93F9, 0x9419, 0x944A,
+ 0x9432, 0x943F, 0x9454, 0x9463, 0x937E, 0x7A61, 0x9CE9, 0x9CF6, 0x9D07,
+ 0x9D06, 0x9D23, 0x9D87, 0x9E15, 0x9D1D, 0x9D1F, 0x9DE5, 0x9D2F, 0x9DD9,
+ 0x9D30, 0x9D42, 0x9E1E, 0x9D53, 0x9E1D, 0x9D60, 0x9D52, 0x9DF3, 0x9D5C,
+ 0x9D61, 0x9D93, 0x9D6A, 0x9D6F, 0x9D89, 0x9D98, 0x9D9A, 0x9DC0, 0x9DA5,
+ 0x9DA9, 0x9DC2, 0x9DBC, 0x9E1A, 0x9DD3, 0x9DDA, 0x9DEF, 0x9DE6, 0x9DF2,
+ 0x9DF8, 0x9E0C, 0x9DFA, 0x9E1B, 0x7664, 0x7658, 0x7667, 0x7602, 0x7646,
+ 0x7647, 0x7649, 0x761E, 0x763B, 0x766D, 0x766E, 0x7669, 0x7672, 0x7AC7,
+ 0x7AB6, 0x8960, 0x8933, 0x895D, 0x8947, 0x8938, 0x8964, 0x76B8, 0x802E,
+ 0x802C, 0x8079, 0x8075, 0x9807, 0x980E, 0x980F, 0x9821, 0x981C, 0x6F41,
+ 0x9826, 0x9837, 0x984E, 0x9853, 0x9873, 0x9862, 0x9859, 0x9865, 0x986C,
+ 0x9870, 0x87E3, 0x8806, 0x8706, 0x8823, 0x87F6, 0x86FA, 0x87EF, 0x8784,
+ 0x8810, 0x87C8, 0x8811, 0x87BB, 0x87CE, 0x7F4C, 0x7BE4, 0x7B67, 0x7C69,
+ 0x7BF3, 0x7C00, 0x7BCB, 0x7C5C, 0x7C1E, 0x7C2B, 0x7C23, 0x7C6A, 0x7C5F,
+ 0x8264, 0x826B, 0x88CA, 0x7FA5, 0x7CF2, 0x7CF6, 0x7CDD, 0x7E36, 0x9EA9,
+ 0x8DB2, 0x91C5, 0x91C3, 0x9E7A, 0x8E89, 0x8E4C, 0x8E92, 0x8E7A, 0x8E55,
+ 0x8E9A, 0x8E8B, 0x8E93, 0x8E91, 0x8EA1, 0x8E63, 0x8EAA, 0x8EA6, 0x89F4,
+ 0x89F6, 0x975A, 0x9742, 0x973D, 0x9744, 0x9F54, 0x9F5F, 0x9F59, 0x9F60,
+ 0x9F5C, 0x9F66, 0x9F6C, 0x9F6A, 0x9F77, 0x9EFD, 0x9EFF, 0x9F09, 0x8B8E,
+ 0x947E, 0x93E8, 0x9B77, 0x9B74, 0x9B81, 0x9B83, 0x9B8E, 0x9C78, 0x7A4C,
+ 0x9B92, 0x9C5F, 0x9B90, 0x9BAD, 0x9B9A, 0x9BAA, 0x9B9E, 0x9C6D, 0x9BAB,
+ 0x9B9D, 0x9C58, 0x9BC1, 0x9C7A, 0x9C31, 0x9C39, 0x9C23, 0x9C37, 0x9BC0,
+ 0x9BCA, 0x9BC7, 0x9BFD, 0x9BD6, 0x9BEA, 0x9BEB, 0x9BE1, 0x9BE4, 0x9BE7,
+ 0x9BDD, 0x9BE2, 0x9BF0, 0x9BDB, 0x9BF4, 0x9BD4, 0x9C5D, 0x9C08, 0x9C10,
+ 0x9C0D, 0x9C12, 0x9C09, 0x9BFF, 0x9C20, 0x9C32, 0x9C2D, 0x9C28, 0x9C25,
+ 0x9C29, 0x9C33, 0x9C3E, 0x9C48, 0x9C3B, 0x9C35, 0x9C45, 0x9C56, 0x9C54,
+ 0x9C52, 0x9C67, 0x97C3, 0x97BD, 0x97C9, 0x9DBB, 0x9ACF, 0x9AD6, 0x9AD5,
+ 0x9B58, 0x9B4E, 0x9957, 0x995C, 0x9B22, 0x9EF7, 0x9EF2, 0x896C, 0x95C6,
+ 0x9336, 0x5F46, 0x8514, 0x7E94, 0x9F63, 0x5679, 0x9F15, 0x5641, 0x9AEE,
+ 0x8907, 0x7A40, 0x98B3, 0x95A4, 0x9B0D, 0x8FF4, 0x5F59, 0x7A6B, 0x98E2,
+ 0x50A2, 0x8591, 0x5118, 0x6372, 0x524B, 0x774F, 0x7E8D, 0x66C6, 0x77AD,
+ 0x9E75, 0x56C9, 0x9EF4, 0x6FDB, 0x61DE, 0x77C7, 0x7030, 0x9EB5, 0x884A,
+ 0x95E2, 0x97C6, 0x7C64, 0x7E34, 0x97A6, 0x9EAF, 0x56CC, 0x98B1, 0x6AAF,
+ 0x7F4E, 0x7CF0, 0x4FC2, 0x7E6B, 0x9E79, 0x56AE, 0x9B1A, 0x846F, 0x79A6,
+ 0x7C72, 0x9AD2, 0x96BB, 0x7DFB, 0x88FD, 0x7843, 0x2170, 0x2171, 0x2172,
+ 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x02CA, 0x02CB,
+ 0x02D9, 0x2013, 0x2015, 0x2025, 0x2035, 0x2105, 0x2109, 0x2196, 0x2197,
+ 0x2198, 0x2199, 0x2215, 0x221F, 0x2223, 0x2252, 0x2266, 0x2267, 0x22BF,
+ 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558,
+ 0x2559, 0x255A, 0x255B, 0x255C, 0x255D, 0x255E, 0x255F, 0x2560, 0x2561,
+ 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256A,
+ 0x256B, 0x256C, 0x256D, 0x256E, 0x256F, 0x2570, 0x2571, 0x2572, 0x2573,
+ 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, 0x2588, 0x2589,
+ 0x258A, 0x258B, 0x258C, 0x258D, 0x258E, 0x258F, 0x2593, 0x2594, 0x2595,
+ 0x25BC, 0x25BD, 0x25E2, 0x25E3, 0x25E4, 0x25E5, 0x2609, 0x2295, 0x3012,
+ 0x301D, 0x301E, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027,
+ 0x3028, 0x3029, 0x32A3, 0x338E, 0x338F, 0x339C, 0x339D, 0x339E, 0x33A1,
+ 0x33C4, 0x33CE, 0x33D1, 0x33D2, 0x33D5, 0xFE30, 0xFFE2, 0xFFE4, 0x2121,
+ 0x3231, 0x2010, 0x30FC, 0x309B, 0x309C, 0x30FD, 0x30FE, 0x3006, 0x309D,
+ 0x309E, 0xFE49, 0xFE4A, 0xFE4B, 0xFE4C, 0xFE4D, 0xFE4E, 0xFE4F, 0xFE50,
+ 0xFE51, 0xFE52, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFE59, 0xFE5A, 0xFE5B,
+ 0xFE5C, 0xFE5D, 0xFE5E, 0xFE5F, 0xFE60, 0xFE61, 0xFE62, 0xFE63, 0xFE64,
+ 0xFE65, 0xFE66, 0xFE68, 0xFE69, 0xFE6A, 0xFE6B, 0x303E, 0x2FF0, 0x2FF1,
+ 0x2FF2, 0x2FF3, 0x2FF4, 0x2FF5, 0x2FF6, 0x2FF7, 0x2FF8, 0x2FF9, 0x2FFA,
+ 0x2FFB, 0x4E02, 0x4E04, 0x4E05, 0x4E06, 0x4E0F, 0x4E12, 0x4E17, 0x4E1F,
+ 0x4E20, 0x4E21, 0x4E23, 0x4E26, 0x4E29, 0x4E2E, 0x4E2F, 0x4E31, 0x4E33,
+ 0x4E35, 0x4E37, 0x4E3C, 0x4E40, 0x4E41, 0x4E42, 0x4E44, 0x4E46, 0x4E4A,
+ 0x4E51, 0x4E55, 0x4E57, 0x4E5A, 0x4E5B, 0x4E62, 0x4E63, 0x4E64, 0x4E65,
+ 0x4E67, 0x4E68, 0x4E6A, 0x4E6B, 0x4E6C, 0x4E6D, 0x4E6E, 0x4E6F, 0x4E72,
+ 0x4E74, 0x4E75, 0x4E76, 0x4E77, 0x4E78, 0x4E79, 0x4E7A, 0x4E7B, 0x4E7C,
+ 0x4E7D, 0x4E7F, 0x4E80, 0x4E81, 0x4E83, 0x4E84, 0x4E85, 0x4E87, 0x4E8A,
+ 0x4E90, 0x4E96, 0x4E97, 0x4E99, 0x4E9C, 0x4E9D, 0x4EA3, 0x4EAA, 0x4EAF,
+ 0x4EB0, 0x4EB1, 0x4EB4, 0x4EB6, 0x4EB7, 0x4EB8, 0x4EB9, 0x4EBC, 0x4EBD,
+ 0x4EBE, 0x4EC8, 0x4ECC, 0x4ECF, 0x4ED0, 0x4ED2, 0x4EDA, 0x4EDB, 0x4EDC,
+ 0x4EE0, 0x4EE2, 0x4EE6, 0x4EE7, 0x4EE9, 0x4EED, 0x4EEE, 0x4EEF, 0x4EF1,
+ 0x4EF4, 0x4EF8, 0x4EF9, 0x4EFA, 0x4EFC, 0x4EFE, 0x4F00, 0x4F02, 0x4F03,
+ 0x4F04, 0x4F05, 0x4F06, 0x4F07, 0x4F08, 0x4F0B, 0x4F0C, 0x4F12, 0x4F13,
+ 0x4F14, 0x4F15, 0x4F16, 0x4F1C, 0x4F1D, 0x4F21, 0x4F23, 0x4F28, 0x4F29,
+ 0x4F2C, 0x4F2D, 0x4F2E, 0x4F31, 0x4F33, 0x4F35, 0x4F37, 0x4F39, 0x4F3B,
+ 0x4F3E, 0x4F3F, 0x4F40, 0x4F41, 0x4F42, 0x4F44, 0x4F45, 0x4F47, 0x4F48,
+ 0x4F49, 0x4F4A, 0x4F4B, 0x4F4C, 0x4F52, 0x4F54, 0x4F56, 0x4F61, 0x4F62,
+ 0x4F66, 0x4F68, 0x4F6A, 0x4F6B, 0x4F6D, 0x4F6E, 0x4F71, 0x4F72, 0x4F75,
+ 0x4F77, 0x4F78, 0x4F79, 0x4F7A, 0x4F7D, 0x4F80, 0x4F81, 0x4F82, 0x4F85,
+ 0x4F87, 0x4F8A, 0x4F8C, 0x4F8E, 0x4F90, 0x4F92, 0x4F93, 0x4F95, 0x4F98,
+ 0x4F99, 0x4F9A, 0x4F9C, 0x4F9E, 0x4F9F, 0x4FA1, 0x4FA2, 0x4FA4, 0x4FAB,
+ 0x4FAD, 0x4FB0, 0x4FB1, 0x4FB2, 0x4FB3, 0x4FB4, 0x4FB6, 0x4FB7, 0x4FB8,
+ 0x4FB9, 0x4FBA, 0x4FBB, 0x4FBC, 0x4FBD, 0x4FBE, 0x4FC0, 0x4FC1, 0x4FC6,
+ 0x4FC7, 0x4FC8, 0x4FC9, 0x4FCB, 0x4FCC, 0x4FCD, 0x4FD2, 0x4FD3, 0x4FD4,
+ 0x4FD5, 0x4FD6, 0x4FD9, 0x4FDB, 0x4FE2, 0x4FE4, 0x4FE5, 0x4FE7, 0x4FEB,
+ 0x4FEC, 0x4FF0, 0x4FF2, 0x4FF4, 0x4FF5, 0x4FF6, 0x4FF7, 0x4FF9, 0x4FFB,
+ 0x4FFC, 0x4FFD, 0x4FFF, 0x5001, 0x5002, 0x5003, 0x5004, 0x5005, 0x5007,
+ 0x5008, 0x500A, 0x500E, 0x5010, 0x5013, 0x5015, 0x5016, 0x5017, 0x501B,
+ 0x501D, 0x501E, 0x5020, 0x5022, 0x5023, 0x5024, 0x5027, 0x502F, 0x5030,
+ 0x5031, 0x5032, 0x5033, 0x5034, 0x5035, 0x5036, 0x5037, 0x5038, 0x5039,
+ 0x503B, 0x503D, 0x503F, 0x5040, 0x5041, 0x5042, 0x5044, 0x5045, 0x5046,
+ 0x504A, 0x504B, 0x504D, 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5056,
+ 0x5057, 0x5058, 0x5059, 0x505B, 0x505D, 0x505E, 0x505F, 0x5060, 0x5061,
+ 0x5062, 0x5063, 0x5064, 0x5066, 0x5067, 0x5068, 0x5069, 0x506A, 0x506B,
+ 0x506D, 0x506E, 0x506F, 0x5070, 0x5071, 0x5072, 0x5073, 0x5078, 0x5079,
+ 0x507A, 0x507C, 0x507D, 0x5081, 0x5082, 0x5083, 0x5084, 0x5086, 0x5087,
+ 0x5089, 0x508A, 0x508B, 0x508C, 0x508E, 0x508F, 0x5090, 0x5091, 0x5092,
+ 0x5093, 0x5094, 0x5095, 0x5097, 0x509A, 0x509B, 0x509C, 0x509D, 0x509E,
+ 0x509F, 0x50A0, 0x50A1, 0x50A4, 0x50A6, 0x50AA, 0x50AB, 0x50AE, 0x50AF,
+ 0x50B0, 0x50B1, 0x50B6, 0x50B8, 0x50B9, 0x50BC, 0x50BD, 0x50BF, 0x50C0,
+ 0x50C1, 0x50C3, 0x50C4, 0x50C6, 0x50C7, 0x50C8, 0x50CA, 0x50CB, 0x50CC,
+ 0x50CD, 0x50CE, 0x50D0, 0x50D2, 0x50D3, 0x50D4, 0x50D7, 0x50D8, 0x50D9,
+ 0x50DB, 0x50DC, 0x50DD, 0x50DF, 0x50E0, 0x50E1, 0x50E2, 0x50E3, 0x50E4,
+ 0x50E9, 0x50EA, 0x50EB, 0x50EF, 0x50F0, 0x50F1, 0x50F2, 0x50F4, 0x50F6,
+ 0x50F7, 0x50F8, 0x50FA, 0x50FC, 0x50FD, 0x50FE, 0x50FF, 0x5101, 0x5103,
+ 0x5105, 0x510A, 0x510C, 0x510D, 0x510E, 0x510F, 0x5111, 0x5113, 0x5116,
+ 0x5117, 0x5119, 0x511A, 0x511B, 0x511C, 0x511D, 0x511E, 0x5120, 0x5122,
+ 0x5123, 0x5124, 0x5125, 0x5126, 0x5127, 0x5128, 0x5129, 0x512B, 0x512C,
+ 0x512D, 0x512E, 0x512F, 0x5130, 0x5131, 0x5133, 0x5134, 0x5135, 0x5136,
+ 0x5138, 0x5139, 0x513D, 0x513E, 0x5142, 0x5147, 0x514A, 0x514C, 0x514E,
+ 0x514F, 0x5150, 0x5153, 0x5157, 0x5158, 0x5159, 0x515B, 0x515D, 0x515E,
+ 0x515F, 0x5160, 0x5161, 0x5163, 0x5164, 0x5166, 0x5167, 0x516A, 0x516F,
+ 0x5172, 0x517A, 0x517E, 0x517F, 0x5183, 0x5184, 0x5186, 0x5187, 0x518A,
+ 0x518B, 0x518E, 0x518F, 0x5190, 0x5191, 0x5193, 0x5194, 0x5198, 0x519A,
+ 0x519D, 0x519E, 0x519F, 0x51A1, 0x51A3, 0x51A6, 0x51A7, 0x51A8, 0x51A9,
+ 0x51AA, 0x51AD, 0x51AE, 0x51B4, 0x51B8, 0x51B9, 0x51BA, 0x51BE, 0x51BF,
+ 0x51C1, 0x51C2, 0x51C3, 0x51C5, 0x51C8, 0x51CA, 0x51CE, 0x51D0, 0x51D2,
+ 0x51D3, 0x51D4, 0x51D5, 0x51D6, 0x51D7, 0x51D8, 0x51D9, 0x51DA, 0x51DC,
+ 0x51DE, 0x51DF, 0x51E2, 0x51E3, 0x51E5, 0x51E6, 0x51E7, 0x51E8, 0x51E9,
+ 0x51EA, 0x51EC, 0x51EE, 0x51F2, 0x51F4, 0x51F7, 0x51FE, 0x5204, 0x5205,
+ 0x5209, 0x520B, 0x520C, 0x520F, 0x5210, 0x5213, 0x5214, 0x5215, 0x521C,
+ 0x521E, 0x521F, 0x5221, 0x5222, 0x5223, 0x5225, 0x5226, 0x5227, 0x522A,
+ 0x522C, 0x522F, 0x5231, 0x5232, 0x5234, 0x5235, 0x523C, 0x523E, 0x5245,
+ 0x5246, 0x5248, 0x5249, 0x524E, 0x524F, 0x5252, 0x5253, 0x5255, 0x5257,
+ 0x5258, 0x5259, 0x525A, 0x525D, 0x525F, 0x5260, 0x5262, 0x5263, 0x5264,
+ 0x5266, 0x5268, 0x526B, 0x526C, 0x526D, 0x5270, 0x5271, 0x5273, 0x5276,
+ 0x5277, 0x5278, 0x5279, 0x527A, 0x527B, 0x527C, 0x527E, 0x5280, 0x5284,
+ 0x5285, 0x5286, 0x528B, 0x528E, 0x528F, 0x5292, 0x5294, 0x5295, 0x5296,
+ 0x5297, 0x5298, 0x5299, 0x529A, 0x529C, 0x52A4, 0x52A5, 0x52A6, 0x52A7,
+ 0x52AE, 0x52AF, 0x52B0, 0x52B4, 0x52B5, 0x52B6, 0x52B7, 0x52B8, 0x52B9,
+ 0x52BA, 0x52BB, 0x52BC, 0x52BD, 0x52C0, 0x52C2, 0x52C4, 0x52C5, 0x52C6,
+ 0x52C8, 0x52CA, 0x52CC, 0x52CD, 0x52CE, 0x52CF, 0x52D1, 0x52D3, 0x52D4,
+ 0x52D7, 0x52DA, 0x52DC, 0x52E0, 0x52E1, 0x52E3, 0x52E5, 0x52E6, 0x52E7,
+ 0x52E8, 0x52E9, 0x52EA, 0x52EB, 0x52EC, 0x52ED, 0x52EE, 0x52EF, 0x52F2,
+ 0x52F3, 0x52F4, 0x52F6, 0x52F7, 0x52FB, 0x52FC, 0x52FD, 0x5301, 0x5302,
+ 0x5303, 0x5304, 0x5307, 0x5309, 0x530A, 0x530B, 0x530C, 0x530E, 0x5311,
+ 0x5312, 0x5313, 0x5314, 0x5318, 0x531B, 0x531C, 0x531E, 0x531F, 0x5322,
+ 0x5324, 0x5325, 0x5327, 0x5328, 0x5329, 0x532B, 0x532C, 0x5330, 0x5332,
+ 0x5333, 0x5334, 0x5335, 0x5336, 0x5337, 0x5338, 0x533C, 0x533D, 0x5342,
+ 0x5344, 0x5346, 0x534B, 0x534C, 0x534D, 0x5350, 0x5358, 0x5359, 0x535B,
+ 0x535D, 0x5365, 0x5368, 0x536A, 0x536C, 0x536D, 0x5372, 0x5376, 0x5379,
+ 0x537B, 0x537C, 0x537D, 0x537E, 0x5380, 0x5381, 0x5383, 0x5387, 0x5388,
+ 0x538A, 0x538E, 0x538F, 0x5390, 0x5391, 0x5392, 0x5393, 0x5394, 0x5396,
+ 0x5397, 0x539B, 0x539C, 0x539E, 0x53A1, 0x53A4, 0x53A7, 0x53AA, 0x53AB,
+ 0x53AC, 0x53AF, 0x53B0, 0x53B1, 0x53B3, 0x53B5, 0x53B7, 0x53B8, 0x53B9,
+ 0x53BA, 0x53BC, 0x53BD, 0x53BE, 0x53C0, 0x53C4, 0x53C5, 0x53C6, 0x53C7,
+ 0x53CE, 0x53CF, 0x53D0, 0x53D2, 0x53D3, 0x53D5, 0x53DA, 0x53DC, 0x53DD,
+ 0x53DE, 0x53E1, 0x53E7, 0x53F4, 0x53FA, 0x53FE, 0x53FF, 0x5400, 0x5402,
+ 0x5405, 0x5407, 0x540B, 0x5414, 0x5418, 0x5419, 0x541A, 0x541C, 0x5422,
+ 0x5424, 0x5425, 0x542A, 0x5430, 0x5433, 0x5436, 0x5437, 0x543A, 0x543D,
+ 0x543F, 0x5441, 0x5442, 0x5444, 0x5445, 0x5447, 0x5449, 0x544C, 0x544D,
+ 0x544E, 0x544F, 0x5451, 0x545A, 0x545D, 0x545E, 0x545F, 0x5460, 0x5461,
+ 0x5463, 0x5465, 0x5467, 0x5469, 0x546A, 0x546B, 0x546C, 0x546D, 0x546E,
+ 0x546F, 0x5470, 0x5474, 0x5479, 0x547A, 0x547E, 0x547F, 0x5481, 0x5483,
+ 0x5485, 0x5487, 0x5488, 0x5489, 0x548A, 0x548D, 0x5491, 0x5493, 0x5497,
+ 0x5498, 0x549C, 0x549E, 0x549F, 0x54A0, 0x54A1, 0x54A2, 0x54A5, 0x54AE,
+ 0x54B0, 0x54B2, 0x54B5, 0x54B6, 0x54B7, 0x54B9, 0x54BA, 0x54BE, 0x54C3,
+ 0x54C5, 0x54CA, 0x54CB, 0x54D6, 0x54D8, 0x54DB, 0x54E0, 0x54E2, 0x54E3,
+ 0x54E4, 0x54EB, 0x54EC, 0x54EF, 0x54F0, 0x54F1, 0x54F4, 0x54F5, 0x54F6,
+ 0x54F7, 0x54F8, 0x54F9, 0x54FB, 0x54FE, 0x5500, 0x5502, 0x5503, 0x5505,
+ 0x5508, 0x550A, 0x550B, 0x550C, 0x550D, 0x550E, 0x5512, 0x5513, 0x5515,
+ 0x5516, 0x5517, 0x5518, 0x5519, 0x551A, 0x551C, 0x551D, 0x551E, 0x551F,
+ 0x5521, 0x5525, 0x5526, 0x5528, 0x5529, 0x552B, 0x552D, 0x5532, 0x5534,
+ 0x5535, 0x5536, 0x5538, 0x5539, 0x553A, 0x553B, 0x553D, 0x5540, 0x5542,
+ 0x5545, 0x5547, 0x5548, 0x554B, 0x554C, 0x554D, 0x554E, 0x5551, 0x5552,
+ 0x5554, 0x5557, 0x5558, 0x5559, 0x555A, 0x555B, 0x555D, 0x555F, 0x5560,
+ 0x5562, 0x5563, 0x5568, 0x5569, 0x556B, 0x556F, 0x5570, 0x5571, 0x5572,
+ 0x5573, 0x5574, 0x5579, 0x557A, 0x557D, 0x557F, 0x5585, 0x5586, 0x558C,
+ 0x558D, 0x558E, 0x5590, 0x5592, 0x5593, 0x5595, 0x5596, 0x5597, 0x559A,
+ 0x559B, 0x559E, 0x55A0, 0x55A1, 0x55A2, 0x55A3, 0x55A4, 0x55A5, 0x55A6,
+ 0x55A8, 0x55A9, 0x55AB, 0x55AD, 0x55AF, 0x55B0, 0x55B4, 0x55B6, 0x55B8,
+ 0x55BA, 0x55BC, 0x55BF, 0x55C0, 0x55C1, 0x55C2, 0x55C3, 0x55C8, 0x55CA,
+ 0x55CB, 0x55CF, 0x55D0, 0x55D5, 0x55D7, 0x55D8, 0x55D9, 0x55DB, 0x55DE,
+ 0x55E0, 0x55E2, 0x55E7, 0x55ED, 0x55EE, 0x55F0, 0x55F1, 0x55F4, 0x55F8,
+ 0x55F9, 0x55FA, 0x55FB, 0x55FC, 0x55FF, 0x5602, 0x5603, 0x5604, 0x5605,
+ 0x5607, 0x560A, 0x560B, 0x5610, 0x5611, 0x5612, 0x5613, 0x5615, 0x5619,
+ 0x561A, 0x561D, 0x5620, 0x5621, 0x5622, 0x5625, 0x5626, 0x5628, 0x562A,
+ 0x562B, 0x5633, 0x5637, 0x563A, 0x563C, 0x563D, 0x563E, 0x5640, 0x5642,
+ 0x5643, 0x5644, 0x5645, 0x5646, 0x5647, 0x5648, 0x5649, 0x564A, 0x564B,
+ 0x564F, 0x5650, 0x5651, 0x5652, 0x5653, 0x5655, 0x5656, 0x565A, 0x565B,
+ 0x565E, 0x565F, 0x5661, 0x5663, 0x5667, 0x566D, 0x566E, 0x5670, 0x5673,
+ 0x5675, 0x5677, 0x567A, 0x567D, 0x567E, 0x567F, 0x5681, 0x5682, 0x5683,
+ 0x5684, 0x5688, 0x5689, 0x568A, 0x568B, 0x568D, 0x5690, 0x5691, 0x5692,
+ 0x5694, 0x5696, 0x5697, 0x5698, 0x569A, 0x569B, 0x569C, 0x569D, 0x569E,
+ 0x569F, 0x56A0, 0x56A1, 0x56A2, 0x56A4, 0x56A5, 0x56A7, 0x56A9, 0x56AA,
+ 0x56AB, 0x56AC, 0x56AD, 0x56B0, 0x56B1, 0x56B2, 0x56B5, 0x56B8, 0x56B9,
+ 0x56BA, 0x56BB, 0x56BD, 0x56BE, 0x56BF, 0x56C3, 0x56C4, 0x56C6, 0x56C7,
+ 0x56CB, 0x56CD, 0x56CE, 0x56CF, 0x56D0, 0x56D2, 0x56D3, 0x56D5, 0x56D6,
+ 0x56D8, 0x56D9, 0x56DC, 0x56E3, 0x56E5, 0x56E6, 0x56E7, 0x56E8, 0x56E9,
+ 0x56EA, 0x56EC, 0x56EE, 0x56EF, 0x56F2, 0x56F3, 0x56F6, 0x56F7, 0x56F8,
+ 0x56FB, 0x56FC, 0x5700, 0x5701, 0x5702, 0x5705, 0x570C, 0x570E, 0x570F,
+ 0x5710, 0x5711, 0x5714, 0x5715, 0x5717, 0x5719, 0x571A, 0x571B, 0x571D,
+ 0x571E, 0x5720, 0x5721, 0x5722, 0x5724, 0x5725, 0x5726, 0x5727, 0x572B,
+ 0x5731, 0x5732, 0x5734, 0x5735, 0x5736, 0x5737, 0x5738, 0x573C, 0x573D,
+ 0x573F, 0x5741, 0x5743, 0x5744, 0x5745, 0x5746, 0x5748, 0x5749, 0x574B,
+ 0x5752, 0x5753, 0x5754, 0x5755, 0x5756, 0x5758, 0x5759, 0x5762, 0x5763,
+ 0x5765, 0x5767, 0x576C, 0x576E, 0x5770, 0x5771, 0x5772, 0x5774, 0x5775,
+ 0x5778, 0x5779, 0x577A, 0x577D, 0x577E, 0x577F, 0x5780, 0x5781, 0x5787,
+ 0x5788, 0x5789, 0x578A, 0x578D, 0x578E, 0x578F, 0x5790, 0x5791, 0x5794,
+ 0x5795, 0x5796, 0x5797, 0x5798, 0x5799, 0x579A, 0x579C, 0x579D, 0x579E,
+ 0x579F, 0x57A5, 0x57A8, 0x57AA, 0x57AC, 0x57AF, 0x57B0, 0x57B1, 0x57B3,
+ 0x57B5, 0x57B6, 0x57B7, 0x57B9, 0x57BA, 0x57BB, 0x57BC, 0x57BD, 0x57BE,
+ 0x57BF, 0x57C0, 0x57C1, 0x57C4, 0x57C5, 0x57C6, 0x57C7, 0x57C8, 0x57C9,
+ 0x57CA, 0x57CC, 0x57CD, 0x57D0, 0x57D1, 0x57D3, 0x57D6, 0x57D7, 0x57DB,
+ 0x57DC, 0x57DE, 0x57E2, 0x57E3, 0x57E5, 0x57E6, 0x57E7, 0x57E8, 0x57E9,
+ 0x57EA, 0x57EB, 0x57EC, 0x57EE, 0x57F0, 0x57F1, 0x57F2, 0x57F3, 0x57F5,
+ 0x57F6, 0x57FB, 0x57FC, 0x57FE, 0x57FF, 0x5801, 0x5803, 0x5804, 0x5808,
+ 0x5809, 0x580C, 0x580E, 0x580F, 0x5810, 0x5812, 0x5813, 0x5814, 0x5817,
+ 0x5818, 0x581A, 0x581B, 0x581C, 0x581F, 0x5822, 0x5823, 0x5825, 0x5826,
+ 0x5827, 0x5828, 0x5829, 0x582B, 0x582C, 0x582D, 0x582E, 0x5832, 0x5833,
+ 0x5836, 0x5837, 0x5838, 0x5839, 0x583A, 0x583B, 0x583C, 0x583D, 0x583E,
+ 0x583F, 0x5840, 0x5841, 0x5842, 0x5843, 0x5845, 0x5846, 0x5847, 0x5848,
+ 0x5849, 0x584E, 0x5850, 0x5853, 0x5855, 0x5856, 0x5859, 0x585A, 0x585B,
+ 0x585C, 0x585D, 0x585F, 0x5860, 0x5861, 0x5863, 0x5866, 0x5867, 0x5868,
+ 0x5869, 0x586A, 0x586D, 0x586E, 0x586F, 0x5870, 0x5871, 0x5872, 0x5873,
+ 0x5874, 0x5876, 0x5877, 0x5878, 0x587A, 0x587B, 0x587C, 0x587D, 0x587F,
+ 0x5882, 0x5884, 0x5886, 0x5887, 0x5888, 0x588B, 0x588C, 0x588D, 0x588E,
+ 0x588F, 0x5890, 0x5891, 0x5894, 0x5895, 0x5896, 0x5897, 0x5898, 0x589B,
+ 0x589D, 0x58A0, 0x58A1, 0x58A2, 0x58A3, 0x58A4, 0x58A5, 0x58A6, 0x58A7,
+ 0x58AA, 0x58AB, 0x58AC, 0x58AD, 0x58AF, 0x58B0, 0x58B1, 0x58B2, 0x58B4,
+ 0x58B5, 0x58B6, 0x58B7, 0x58B8, 0x58B9, 0x58BA, 0x58BD, 0x58BF, 0x58C0,
+ 0x58C2, 0x58C3, 0x58C4, 0x58C6, 0x58C8, 0x58C9, 0x58CA, 0x58CB, 0x58CC,
+ 0x58CD, 0x58CE, 0x58CF, 0x58D0, 0x58D2, 0x58D4, 0x58D6, 0x58D7, 0x58DB,
+ 0x58DC, 0x58DD, 0x58E1, 0x58E3, 0x58E5, 0x58E6, 0x58E7, 0x58E8, 0x58EA,
+ 0x58ED, 0x58F1, 0x58F2, 0x58F4, 0x58F5, 0x58F7, 0x58F8, 0x58FB, 0x58FC,
+ 0x58FE, 0x58FF, 0x5900, 0x5901, 0x5903, 0x5905, 0x5906, 0x5908, 0x5909,
+ 0x590A, 0x590B, 0x590C, 0x590E, 0x5910, 0x5911, 0x5912, 0x5913, 0x5917,
+ 0x5918, 0x591B, 0x591D, 0x591E, 0x5920, 0x5921, 0x5923, 0x5926, 0x5928,
+ 0x592C, 0x5930, 0x5932, 0x5933, 0x5935, 0x5936, 0x593B, 0x593D, 0x593F,
+ 0x5940, 0x5943, 0x5945, 0x5946, 0x594A, 0x594C, 0x594D, 0x5950, 0x5952,
+ 0x5953, 0x5959, 0x595B, 0x595C, 0x595D, 0x595E, 0x595F, 0x5961, 0x5963,
+ 0x5964, 0x5966, 0x5967, 0x5968, 0x596B, 0x596D, 0x596F, 0x5970, 0x5971,
+ 0x5972, 0x5975, 0x5977, 0x597A, 0x597B, 0x597C, 0x597E, 0x597F, 0x5980,
+ 0x5985, 0x5989, 0x598B, 0x598C, 0x598E, 0x598F, 0x5990, 0x5991, 0x5994,
+ 0x5995, 0x5998, 0x599A, 0x599B, 0x599C, 0x599F, 0x59A0, 0x59A1, 0x59A2,
+ 0x59A6, 0x59A7, 0x59AC, 0x59AD, 0x59B0, 0x59B1, 0x59B3, 0x59B4, 0x59B5,
+ 0x59B6, 0x59B7, 0x59B8, 0x59BA, 0x59BC, 0x59BD, 0x59BF, 0x59C0, 0x59C1,
+ 0x59C2, 0x59C3, 0x59C4, 0x59C5, 0x59C7, 0x59C8, 0x59C9, 0x59CC, 0x59CD,
+ 0x59CE, 0x59CF, 0x59D5, 0x59D6, 0x59D9, 0x59DB, 0x59DE, 0x59DF, 0x59E0,
+ 0x59E1, 0x59E2, 0x59E4, 0x59E6, 0x59E7, 0x59E9, 0x59EA, 0x59EB, 0x59ED,
+ 0x59EE, 0x59EF, 0x59F0, 0x59F1, 0x59F2, 0x59F3, 0x59F4, 0x59F5, 0x59F6,
+ 0x59F7, 0x59F8, 0x59FA, 0x59FC, 0x59FD, 0x59FE, 0x5A00, 0x5A02, 0x5A0A,
+ 0x5A0B, 0x5A0D, 0x5A0E, 0x5A0F, 0x5A10, 0x5A12, 0x5A14, 0x5A15, 0x5A16,
+ 0x5A17, 0x5A19, 0x5A1A, 0x5A1B, 0x5A1D, 0x5A1E, 0x5A21, 0x5A22, 0x5A24,
+ 0x5A26, 0x5A27, 0x5A28, 0x5A2A, 0x5A2B, 0x5A2C, 0x5A2D, 0x5A2E, 0x5A2F,
+ 0x5A30, 0x5A33, 0x5A35, 0x5A37, 0x5A38, 0x5A39, 0x5A3A, 0x5A3B, 0x5A3D,
+ 0x5A3E, 0x5A3F, 0x5A42, 0x5A43, 0x5A44, 0x5A45, 0x5A47, 0x5A48, 0x5A4B,
+ 0x5A4C, 0x5A4D, 0x5A4E, 0x5A4F, 0x5A50, 0x5A51, 0x5A52, 0x5A53, 0x5A54,
+ 0x5A56, 0x5A57, 0x5A58, 0x5A59, 0x5A5B, 0x5A5C, 0x5A5D, 0x5A5E, 0x5A5F,
+ 0x5A60, 0x5A61, 0x5A63, 0x5A64, 0x5A65, 0x5A68, 0x5A69, 0x5A6B, 0x5A6C,
+ 0x5A6E, 0x5A6F, 0x5A70, 0x5A71, 0x5A72, 0x5A73, 0x5A78, 0x5A79, 0x5A7B,
+ 0x5A7C, 0x5A7D, 0x5A7E, 0x5A80, 0x5A81, 0x5A82, 0x5A83, 0x5A84, 0x5A85,
+ 0x5A86, 0x5A87, 0x5A88, 0x5A89, 0x5A8A, 0x5A8B, 0x5A8C, 0x5A8D, 0x5A8E,
+ 0x5A8F, 0x5A90, 0x5A91, 0x5A93, 0x5A94, 0x5A95, 0x5A96, 0x5A97, 0x5A98,
+ 0x5A99, 0x5A9C, 0x5A9D, 0x5A9E, 0x5A9F, 0x5AA0, 0x5AA1, 0x5AA2, 0x5AA3,
+ 0x5AA4, 0x5AA5, 0x5AA6, 0x5AA8, 0x5AA9, 0x5AAB, 0x5AAC, 0x5AAD, 0x5AAE,
+ 0x5AAF, 0x5AB0, 0x5AB1, 0x5AB4, 0x5AB6, 0x5AB7, 0x5AB9, 0x5ABA, 0x5ABB,
+ 0x5ABC, 0x5ABF, 0x5AC0, 0x5AC3, 0x5AC4, 0x5AC5, 0x5AC6, 0x5AC7, 0x5AC8,
+ 0x5ACA, 0x5ACB, 0x5ACD, 0x5ACE, 0x5ACF, 0x5AD0, 0x5AD1, 0x5AD3, 0x5AD5,
+ 0x5AD9, 0x5ADA, 0x5ADB, 0x5ADD, 0x5ADE, 0x5ADF, 0x5AE2, 0x5AE4, 0x5AE5,
+ 0x5AE7, 0x5AE8, 0x5AEA, 0x5AEC, 0x5AED, 0x5AEE, 0x5AEF, 0x5AF0, 0x5AF2,
+ 0x5AF3, 0x5AF4, 0x5AF6, 0x5AF7, 0x5AF8, 0x5AF9, 0x5AFA, 0x5AFC, 0x5AFD,
+ 0x5AFE, 0x5AFF, 0x5B01, 0x5B02, 0x5B03, 0x5B04, 0x5B05, 0x5B06, 0x5B07,
+ 0x5B0A, 0x5B0D, 0x5B0E, 0x5B0F, 0x5B10, 0x5B11, 0x5B12, 0x5B13, 0x5B14,
+ 0x5B15, 0x5B18, 0x5B1A, 0x5B1B, 0x5B1C, 0x5B1D, 0x5B1E, 0x5B1F, 0x5B20,
+ 0x5B22, 0x5B23, 0x5B24, 0x5B25, 0x5B26, 0x5B27, 0x5B28, 0x5B29, 0x5B2B,
+ 0x5B2C, 0x5B2D, 0x5B2E, 0x5B2F, 0x5B31, 0x5B33, 0x5B35, 0x5B36, 0x5B39,
+ 0x5B3A, 0x5B3B, 0x5B3C, 0x5B3D, 0x5B3E, 0x5B3F, 0x5B41, 0x5B42, 0x5B43,
+ 0x5B44, 0x5B45, 0x5B46, 0x5B47, 0x5B48, 0x5B49, 0x5B4A, 0x5B4B, 0x5B4D,
+ 0x5B4E, 0x5B4F, 0x5B52, 0x5B56, 0x5B5E, 0x5B60, 0x5B61, 0x5B67, 0x5B68,
+ 0x5B6D, 0x5B6E, 0x5B6F, 0x5B72, 0x5B74, 0x5B76, 0x5B77, 0x5B79, 0x5B7B,
+ 0x5B7C, 0x5B7E, 0x5B82, 0x5B86, 0x5B8A, 0x5B8D, 0x5B8E, 0x5B90, 0x5B91,
+ 0x5B92, 0x5B94, 0x5B96, 0x5B9F, 0x5BA7, 0x5BA8, 0x5BA9, 0x5BAC, 0x5BAD,
+ 0x5BAE, 0x5BAF, 0x5BB1, 0x5BB2, 0x5BB7, 0x5BBA, 0x5BBB, 0x5BBC, 0x5BC0,
+ 0x5BC1, 0x5BC3, 0x5BC8, 0x5BC9, 0x5BCA, 0x5BCB, 0x5BCD, 0x5BCE, 0x5BCF,
+ 0x5BD1, 0x5BD4, 0x5BD5, 0x5BD6, 0x5BD7, 0x5BD8, 0x5BD9, 0x5BDA, 0x5BDB,
+ 0x5BDC, 0x5BE0, 0x5BE3, 0x5BEA, 0x5BED, 0x5BEF, 0x5BF1, 0x5BF2, 0x5BF3,
+ 0x5BF4, 0x5BF7, 0x5BFD, 0x5BFE, 0x5C00, 0x5C02, 0x5C03, 0x5C05, 0x5C0C,
+ 0x5C10, 0x5C12, 0x5C13, 0x5C17, 0x5C19, 0x5C1B, 0x5C1E, 0x5C1F, 0x5C20,
+ 0x5C21, 0x5C23, 0x5C26, 0x5C28, 0x5C29, 0x5C2A, 0x5C2B, 0x5C2D, 0x5C2E,
+ 0x5C2F, 0x5C30, 0x5C32, 0x5C33, 0x5C35, 0x5C36, 0x5C43, 0x5C44, 0x5C46,
+ 0x5C47, 0x5C4C, 0x5C4D, 0x5C52, 0x5C53, 0x5C54, 0x5C56, 0x5C57, 0x5C58,
+ 0x5C5A, 0x5C5B, 0x5C5C, 0x5C5D, 0x5C5F, 0x5C67, 0x5C69, 0x5C6A, 0x5C6B,
+ 0x5C6D, 0x5C70, 0x5C72, 0x5C73, 0x5C74, 0x5C75, 0x5C76, 0x5C77, 0x5C78,
+ 0x5C7B, 0x5C7C, 0x5C7D, 0x5C7E, 0x5C80, 0x5C83, 0x5C84, 0x5C85, 0x5C86,
+ 0x5C87, 0x5C89, 0x5C8A, 0x5C8B, 0x5C8E, 0x5C8F, 0x5C92, 0x5C93, 0x5C95,
+ 0x5C9D, 0x5C9E, 0x5C9F, 0x5CA0, 0x5CA4, 0x5CA5, 0x5CA6, 0x5CA7, 0x5CA8,
+ 0x5CAA, 0x5CAE, 0x5CAF, 0x5CB0, 0x5CB2, 0x5CB4, 0x5CB6, 0x5CB9, 0x5CBA,
+ 0x5CBB, 0x5CBC, 0x5CBE, 0x5CC0, 0x5CC2, 0x5CC3, 0x5CC5, 0x5CC6, 0x5CC7,
+ 0x5CC8, 0x5CC9, 0x5CCA, 0x5CCC, 0x5CCD, 0x5CCE, 0x5CCF, 0x5CD0, 0x5CD1,
+ 0x5CD3, 0x5CD4, 0x5CD5, 0x5CD6, 0x5CD7, 0x5CD8, 0x5CDA, 0x5CDB, 0x5CDC,
+ 0x5CDD, 0x5CDE, 0x5CDF, 0x5CE0, 0x5CE2, 0x5CE3, 0x5CE7, 0x5CE9, 0x5CEB,
+ 0x5CEC, 0x5CEE, 0x5CEF, 0x5CF1, 0x5CF2, 0x5CF3, 0x5CF5, 0x5CF7, 0x5CF8,
+ 0x5CF9, 0x5CFA, 0x5CFC, 0x5CFE, 0x5CFF, 0x5D00, 0x5D01, 0x5D04, 0x5D05,
+ 0x5D08, 0x5D09, 0x5D0A, 0x5D0B, 0x5D0C, 0x5D0F, 0x5D10, 0x5D11, 0x5D12,
+ 0x5D13, 0x5D15, 0x5D18, 0x5D19, 0x5D1A, 0x5D1C, 0x5D1D, 0x5D1F, 0x5D20,
+ 0x5D21, 0x5D22, 0x5D23, 0x5D25, 0x5D28, 0x5D2A, 0x5D2B, 0x5D2F, 0x5D30,
+ 0x5D31, 0x5D32, 0x5D33, 0x5D35, 0x5D36, 0x5D37, 0x5D38, 0x5D39, 0x5D3A,
+ 0x5D3B, 0x5D3C, 0x5D3F, 0x5D40, 0x5D41, 0x5D42, 0x5D43, 0x5D44, 0x5D45,
+ 0x5D46, 0x5D48, 0x5D49, 0x5D4D, 0x5D4E, 0x5D4F, 0x5D51, 0x5D52, 0x5D53,
+ 0x5D54, 0x5D55, 0x5D56, 0x5D57, 0x5D59, 0x5D5A, 0x5D5C, 0x5D5E, 0x5D5F,
+ 0x5D60, 0x5D61, 0x5D62, 0x5D63, 0x5D64, 0x5D65, 0x5D66, 0x5D67, 0x5D68,
+ 0x5D6A, 0x5D6D, 0x5D6E, 0x5D70, 0x5D71, 0x5D72, 0x5D73, 0x5D75, 0x5D76,
+ 0x5D77, 0x5D78, 0x5D79, 0x5D7A, 0x5D7B, 0x5D7C, 0x5D7D, 0x5D7E, 0x5D7F,
+ 0x5D80, 0x5D83, 0x5D85, 0x5D86, 0x5D88, 0x5D89, 0x5D8A, 0x5D8B, 0x5D8C,
+ 0x5D8D, 0x5D8E, 0x5D8F, 0x5D90, 0x5D91, 0x5D92, 0x5D93, 0x5D94, 0x5D95,
+ 0x5D96, 0x5D98, 0x5D9A, 0x5D9B, 0x5D9C, 0x5D9E, 0x5D9F, 0x5DA1, 0x5DA2,
+ 0x5DA3, 0x5DA4, 0x5DA5, 0x5DA6, 0x5DA8, 0x5DA9, 0x5DAA, 0x5DAB, 0x5DAC,
+ 0x5DAD, 0x5DAE, 0x5DAF, 0x5DB0, 0x5DB1, 0x5DB2, 0x5DB3, 0x5DB4, 0x5DB5,
+ 0x5DB6, 0x5DB9, 0x5DBB, 0x5DBD, 0x5DBE, 0x5DBF, 0x5DC0, 0x5DC1, 0x5DC2,
+ 0x5DC3, 0x5DC4, 0x5DC6, 0x5DC7, 0x5DC8, 0x5DC9, 0x5DCA, 0x5DCC, 0x5DCE,
+ 0x5DCF, 0x5DD0, 0x5DD1, 0x5DD3, 0x5DD5, 0x5DD6, 0x5DD7, 0x5DD8, 0x5DD9,
+ 0x5DDA, 0x5DDC, 0x5DDF, 0x5DE0, 0x5DE3, 0x5DE4, 0x5DEA, 0x5DEC, 0x5DED,
+ 0x5DF5, 0x5DF6, 0x5DF8, 0x5DF9, 0x5DFA, 0x5DFB, 0x5DFC, 0x5DFF, 0x5E00,
+ 0x5E04, 0x5E07, 0x5E09, 0x5E0A, 0x5E0B, 0x5E0D, 0x5E0E, 0x5E12, 0x5E13,
+ 0x5E17, 0x5E1E, 0x5E1F, 0x5E20, 0x5E21, 0x5E22, 0x5E23, 0x5E24, 0x5E28,
+ 0x5E29, 0x5E2A, 0x5E2C, 0x5E2F, 0x5E30, 0x5E32, 0x5E34, 0x5E35, 0x5E39,
+ 0x5E3A, 0x5E3E, 0x5E3F, 0x5E41, 0x5E46, 0x5E47, 0x5E48, 0x5E49, 0x5E4A,
+ 0x5E4B, 0x5E4D, 0x5E4E, 0x5E4F, 0x5E50, 0x5E51, 0x5E52, 0x5E53, 0x5E56,
+ 0x5E59, 0x5E5A, 0x5E5C, 0x5E5D, 0x5E60, 0x5E64, 0x5E65, 0x5E66, 0x5E67,
+ 0x5E68, 0x5E69, 0x5E6A, 0x5E6D, 0x5E6E, 0x5E6F, 0x5E70, 0x5E71, 0x5E75,
+ 0x5E77, 0x5E81, 0x5E82, 0x5E83, 0x5E85, 0x5E88, 0x5E89, 0x5E8C, 0x5E8D,
+ 0x5E8E, 0x5E92, 0x5E98, 0x5E9B, 0x5E9D, 0x5EA1, 0x5EA2, 0x5EA3, 0x5EA4,
+ 0x5EA8, 0x5EA9, 0x5EAA, 0x5EAC, 0x5EAE, 0x5EAF, 0x5EB0, 0x5EB1, 0x5EB2,
+ 0x5EB4, 0x5EBA, 0x5EBB, 0x5EBC, 0x5EBD, 0x5EBF, 0x5EC0, 0x5EC1, 0x5EC2,
+ 0x5EC3, 0x5EC4, 0x5EC5, 0x5EC6, 0x5EC7, 0x5EC8, 0x5ECB, 0x5ECC, 0x5ECD,
+ 0x5ECE, 0x5ECF, 0x5ED0, 0x5ED4, 0x5ED5, 0x5ED7, 0x5ED8, 0x5ED9, 0x5EDA,
+ 0x5EDC, 0x5EDD, 0x5EDE, 0x5EE4, 0x5EE5, 0x5EE6, 0x5EE7, 0x5EE9, 0x5EEB,
+ 0x5EED, 0x5EEE, 0x5EEF, 0x5EF0, 0x5EF1, 0x5EF2, 0x5EF5, 0x5EF8, 0x5EF9,
+ 0x5EFB, 0x5EFC, 0x5EFD, 0x5F05, 0x5F06, 0x5F07, 0x5F09, 0x5F0C, 0x5F0D,
+ 0x5F0E, 0x5F10, 0x5F12, 0x5F14, 0x5F16, 0x5F19, 0x5F1A, 0x5F1C, 0x5F1D,
+ 0x5F1E, 0x5F21, 0x5F22, 0x5F23, 0x5F24, 0x5F28, 0x5F2B, 0x5F2C, 0x5F2E,
+ 0x5F30, 0x5F32, 0x5F34, 0x5F36, 0x5F37, 0x5F38, 0x5F3B, 0x5F3D, 0x5F3E,
+ 0x5F3F, 0x5F41, 0x5F42, 0x5F43, 0x5F44, 0x5F45, 0x5F47, 0x5F49, 0x5F4A,
+ 0x5F4B, 0x5F4D, 0x5F4F, 0x5F51, 0x5F54, 0x5F5A, 0x5F5B, 0x5F5C, 0x5F5E,
+ 0x5F5F, 0x5F60, 0x5F63, 0x5F65, 0x5F67, 0x5F68, 0x5F6B, 0x5F6E, 0x5F6F,
+ 0x5F72, 0x5F74, 0x5F75, 0x5F76, 0x5F78, 0x5F7A, 0x5F7D, 0x5F7E, 0x5F7F,
+ 0x5F83, 0x5F86, 0x5F8D, 0x5F8E, 0x5F8F, 0x5F93, 0x5F94, 0x5F96, 0x5F9A,
+ 0x5F9B, 0x5F9D, 0x5F9F, 0x5FA2, 0x5FA3, 0x5FA4, 0x5FA5, 0x5FA6, 0x5FA7,
+ 0x5FAB, 0x5FAC, 0x5FAF, 0x5FB0, 0x5FB1, 0x5FB2, 0x5FB3, 0x5FB4, 0x5FB6,
+ 0x5FB8, 0x5FBA, 0x5FBB, 0x5FBE, 0x5FBF, 0x5FC0, 0x5FC1, 0x5FC2, 0x5FC7,
+ 0x5FC8, 0x5FCA, 0x5FCB, 0x5FCE, 0x5FD3, 0x5FD4, 0x5FD5, 0x5FDA, 0x5FDB,
+ 0x5FDC, 0x5FDE, 0x5FDF, 0x5FE2, 0x5FE3, 0x5FE5, 0x5FE6, 0x5FE8, 0x5FE9,
+ 0x5FEC, 0x5FEF, 0x5FF0, 0x5FF2, 0x5FF3, 0x5FF4, 0x5FF6, 0x5FF7, 0x5FF9,
+ 0x5FFA, 0x5FFC, 0x6007, 0x6008, 0x6009, 0x600B, 0x600C, 0x6010, 0x6011,
+ 0x6013, 0x6017, 0x6018, 0x601A, 0x601E, 0x601F, 0x6022, 0x6023, 0x6024,
+ 0x602C, 0x602D, 0x602E, 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6036,
+ 0x6037, 0x6038, 0x6039, 0x603A, 0x603D, 0x603E, 0x6040, 0x6044, 0x6045,
+ 0x6046, 0x6047, 0x6048, 0x6049, 0x604A, 0x604C, 0x604E, 0x604F, 0x6051,
+ 0x6053, 0x6054, 0x6056, 0x6057, 0x6058, 0x605B, 0x605C, 0x605E, 0x605F,
+ 0x6060, 0x6061, 0x6065, 0x6066, 0x606E, 0x6071, 0x6072, 0x6074, 0x6075,
+ 0x6077, 0x607E, 0x6080, 0x6081, 0x6082, 0x6085, 0x6086, 0x6087, 0x6088,
+ 0x608A, 0x608B, 0x608E, 0x608F, 0x6090, 0x6091, 0x6093, 0x6095, 0x6097,
+ 0x6098, 0x6099, 0x609C, 0x609E, 0x60A1, 0x60A2, 0x60A4, 0x60A5, 0x60A7,
+ 0x60A9, 0x60AA, 0x60AE, 0x60B0, 0x60B3, 0x60B7, 0x60B9, 0x60BA, 0x60BD,
+ 0x60BE, 0x60BF, 0x60C0, 0x60C1, 0x60C2, 0x60C3, 0x60C4, 0x60C7, 0x60C8,
+ 0x60C9, 0x60CC, 0x60CD, 0x60CE, 0x60CF, 0x60D0, 0x60D2, 0x60D3, 0x60D4,
+ 0x60D6, 0x60D7, 0x60D9, 0x60DB, 0x60DE, 0x60E2, 0x60E3, 0x60E4, 0x60E5,
+ 0x60EA, 0x60F5, 0x60F7, 0x60F8, 0x60FC, 0x60FD, 0x60FE, 0x60FF, 0x6102,
+ 0x6103, 0x6104, 0x6105, 0x6107, 0x610A, 0x610B, 0x610C, 0x6110, 0x6111,
+ 0x6112, 0x6113, 0x6114, 0x6116, 0x6117, 0x6118, 0x6119, 0x611D, 0x611E,
+ 0x6121, 0x6122, 0x6125, 0x6128, 0x6129, 0x612A, 0x612C, 0x612D, 0x612E,
+ 0x612F, 0x6130, 0x6131, 0x6132, 0x6133, 0x6135, 0x6136, 0x6138, 0x6139,
+ 0x613A, 0x613B, 0x613C, 0x613D, 0x6140, 0x6141, 0x6142, 0x6143, 0x6144,
+ 0x6145, 0x6146, 0x6147, 0x6149, 0x614D, 0x614F, 0x6150, 0x6152, 0x6153,
+ 0x6154, 0x6156, 0x6157, 0x6159, 0x615B, 0x615C, 0x615E, 0x6160, 0x6161,
+ 0x6165, 0x6166, 0x6169, 0x616C, 0x616D, 0x616F, 0x6171, 0x6172, 0x6174,
+ 0x6178, 0x6179, 0x617A, 0x617B, 0x617C, 0x617D, 0x617E, 0x617F, 0x6180,
+ 0x6181, 0x6183, 0x6184, 0x6185, 0x6186, 0x6187, 0x6188, 0x6189, 0x618C,
+ 0x618D, 0x618F, 0x6193, 0x6195, 0x6196, 0x6197, 0x6198, 0x6199, 0x619B,
+ 0x619C, 0x619E, 0x619F, 0x61A0, 0x61A1, 0x61A2, 0x61A3, 0x61A5, 0x61A6,
+ 0x61AA, 0x61AD, 0x61AF, 0x61B0, 0x61B1, 0x61B3, 0x61B4, 0x61B5, 0x61B8,
+ 0x61B9, 0x61BA, 0x61BB, 0x61BC, 0x61BD, 0x61BF, 0x61C0, 0x61C1, 0x61C3,
+ 0x61C4, 0x61C5, 0x61C6, 0x61CD, 0x61CE, 0x61CF, 0x61D0, 0x61D3, 0x61D5,
+ 0x61D6, 0x61D7, 0x61D8, 0x61D9, 0x61DA, 0x61DB, 0x61DC, 0x61DD, 0x61E0,
+ 0x61E1, 0x61E2, 0x61E4, 0x61E5, 0x61E7, 0x61E9, 0x61EA, 0x61EB, 0x61EC,
+ 0x61ED, 0x61EE, 0x61EF, 0x61F0, 0x61F1, 0x61F3, 0x61F4, 0x61F9, 0x61FB,
+ 0x61FD, 0x6201, 0x6202, 0x6203, 0x6204, 0x6205, 0x6209, 0x6213, 0x6219,
+ 0x621C, 0x621D, 0x621E, 0x6220, 0x6223, 0x6226, 0x6228, 0x6229, 0x622B,
+ 0x622D, 0x622F, 0x6231, 0x6235, 0x6236, 0x6238, 0x6239, 0x623A, 0x623B,
+ 0x623C, 0x6242, 0x6244, 0x6245, 0x6246, 0x624A, 0x624F, 0x6250, 0x6255,
+ 0x6256, 0x6257, 0x6259, 0x625A, 0x625C, 0x625D, 0x625E, 0x625F, 0x6260,
+ 0x6261, 0x6262, 0x6264, 0x6265, 0x6268, 0x6271, 0x6272, 0x6274, 0x6275,
+ 0x6277, 0x6278, 0x627A, 0x627B, 0x627D, 0x6281, 0x6282, 0x6283, 0x6285,
+ 0x6286, 0x6287, 0x6288, 0x628B, 0x628C, 0x628D, 0x628E, 0x628F, 0x6290,
+ 0x6294, 0x6299, 0x629C, 0x629D, 0x629E, 0x62A3, 0x62A6, 0x62A7, 0x62A9,
+ 0x62AA, 0x62AD, 0x62AE, 0x62AF, 0x62B0, 0x62B2, 0x62B3, 0x62B4, 0x62B6,
+ 0x62B7, 0x62B8, 0x62BA, 0x62BE, 0x62C0, 0x62C1, 0x62C3, 0x62CB, 0x62CF,
+ 0x62D1, 0x62D5, 0x62DD, 0x62DE, 0x62E0, 0x62E1, 0x62E4, 0x62EA, 0x62EB,
+ 0x62F0, 0x62F2, 0x62F5, 0x62F8, 0x62F9, 0x62FA, 0x62FB, 0x6300, 0x6303,
+ 0x6304, 0x6305, 0x6306, 0x630A, 0x630B, 0x630C, 0x630D, 0x630F, 0x6310,
+ 0x6312, 0x6313, 0x6314, 0x6315, 0x6317, 0x6318, 0x6319, 0x631C, 0x6326,
+ 0x6327, 0x6329, 0x632C, 0x632D, 0x632E, 0x6330, 0x6331, 0x6333, 0x6334,
+ 0x6335, 0x6336, 0x6337, 0x6338, 0x633B, 0x633C, 0x633F, 0x6340, 0x6341,
+ 0x6344, 0x6347, 0x6348, 0x634A, 0x6351, 0x6352, 0x6353, 0x6354, 0x6356,
+ 0x6357, 0x6358, 0x6359, 0x635A, 0x635B, 0x635C, 0x635D, 0x6360, 0x6364,
+ 0x6365, 0x6366, 0x636A, 0x636C, 0x636F, 0x6370, 0x6373, 0x6374, 0x6375,
+ 0x6378, 0x6379, 0x637C, 0x637D, 0x637E, 0x637F, 0x6381, 0x6385, 0x6386,
+ 0x638B, 0x638D, 0x6391, 0x6393, 0x6394, 0x6395, 0x6397, 0x6399, 0x639A,
+ 0x639B, 0x639C, 0x639D, 0x639E, 0x639F, 0x63A1, 0x63A4, 0x63A6, 0x63AB,
+ 0x63AF, 0x63B1, 0x63B2, 0x63B5, 0x63B6, 0x63B9, 0x63BB, 0x63BD, 0x63BF,
+ 0x63C1, 0x63C2, 0x63C3, 0x63C5, 0x63C7, 0x63C8, 0x63CA, 0x63CB, 0x63CC,
+ 0x63D1, 0x63D3, 0x63D4, 0x63D5, 0x63D7, 0x63D8, 0x63D9, 0x63DB, 0x63DC,
+ 0x63DD, 0x63DF, 0x63E2, 0x63E4, 0x63E5, 0x63E6, 0x63E7, 0x63E8, 0x63EB,
+ 0x63EC, 0x63EF, 0x63F0, 0x63F1, 0x63F3, 0x63F5, 0x63F7, 0x63F9, 0x63FA,
+ 0x63FB, 0x63FC, 0x63FE, 0x6403, 0x6404, 0x6406, 0x6407, 0x6408, 0x6409,
+ 0x640A, 0x640E, 0x6411, 0x6412, 0x6415, 0x6416, 0x6418, 0x6419, 0x641A,
+ 0x641D, 0x641F, 0x6422, 0x6423, 0x6424, 0x6425, 0x6427, 0x6428, 0x6429,
+ 0x642B, 0x642E, 0x642F, 0x6430, 0x6431, 0x6432, 0x6433, 0x6435, 0x6437,
+ 0x6438, 0x6439, 0x643B, 0x643C, 0x643E, 0x6440, 0x6442, 0x6443, 0x6449,
+ 0x644B, 0x644C, 0x644D, 0x644E, 0x644F, 0x6450, 0x6453, 0x6455, 0x6456,
+ 0x6457, 0x6459, 0x645A, 0x645B, 0x645D, 0x6460, 0x6461, 0x6462, 0x6463,
+ 0x6464, 0x6465, 0x6466, 0x6468, 0x646A, 0x646B, 0x646C, 0x646E, 0x6470,
+ 0x6471, 0x6472, 0x6474, 0x6475, 0x6477, 0x647C, 0x647D, 0x647E, 0x647F,
+ 0x6480, 0x6481, 0x6483, 0x6486, 0x6489, 0x648A, 0x648B, 0x648C, 0x648D,
+ 0x648E, 0x648F, 0x6490, 0x6494, 0x6497, 0x6498, 0x649A, 0x649B, 0x649C,
+ 0x649D, 0x64A0, 0x64A1, 0x64A2, 0x64A6, 0x64A7, 0x64A8, 0x64AA, 0x64AF,
+ 0x64B1, 0x64B4, 0x64B6, 0x64B9, 0x64BD, 0x64C3, 0x64C6, 0x64C8, 0x64C9,
+ 0x64CC, 0x64CF, 0x64D1, 0x64D3, 0x64D5, 0x64D6, 0x64D9, 0x64DB, 0x64DC,
+ 0x64DD, 0x64DF, 0x64E1, 0x64E3, 0x64E5, 0x64E7, 0x64E8, 0x64E9, 0x64EA,
+ 0x64EB, 0x64ED, 0x64EE, 0x64F3, 0x64F5, 0x64F6, 0x64F8, 0x64F9, 0x64FD,
+ 0x64FF, 0x6501, 0x6502, 0x6503, 0x6505, 0x6507, 0x6508, 0x650A, 0x650B,
+ 0x650C, 0x650D, 0x650E, 0x6510, 0x6511, 0x6513, 0x6515, 0x6517, 0x651A,
+ 0x651C, 0x651E, 0x651F, 0x6520, 0x6521, 0x6526, 0x6527, 0x6528, 0x6529,
+ 0x652D, 0x6530, 0x6531, 0x6532, 0x6533, 0x6537, 0x653A, 0x653C, 0x653D,
+ 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6546, 0x6547, 0x654A, 0x654B,
+ 0x654D, 0x654E, 0x6550, 0x6552, 0x6553, 0x6554, 0x6558, 0x655A, 0x655C,
+ 0x655F, 0x6560, 0x6561, 0x6564, 0x6565, 0x6567, 0x6568, 0x6569, 0x656A,
+ 0x656D, 0x656E, 0x656F, 0x6571, 0x6573, 0x6576, 0x6579, 0x657A, 0x657B,
+ 0x657C, 0x657D, 0x657E, 0x657F, 0x6580, 0x6581, 0x6584, 0x6585, 0x6586,
+ 0x6588, 0x6589, 0x658A, 0x658D, 0x658E, 0x658F, 0x6592, 0x6594, 0x6596,
+ 0x6598, 0x659A, 0x659D, 0x659E, 0x65A0, 0x65A2, 0x65A3, 0x65A6, 0x65A8,
+ 0x65AA, 0x65AE, 0x65B1, 0x65B2, 0x65B3, 0x65B4, 0x65B5, 0x65B6, 0x65B8,
+ 0x65BA, 0x65BB, 0x65BE, 0x65BF, 0x65C0, 0x65C2, 0x65C7, 0x65C8, 0x65C9,
+ 0x65CA, 0x65CD, 0x65D0, 0x65D1, 0x65D3, 0x65D4, 0x65D5, 0x65D8, 0x65D9,
+ 0x65DA, 0x65DB, 0x65DC, 0x65DD, 0x65DE, 0x65DF, 0x65E1, 0x65E3, 0x65E4,
+ 0x65EA, 0x65EB, 0x65F2, 0x65F3, 0x65F4, 0x65F5, 0x65F8, 0x65F9, 0x65FB,
+ 0x65FC, 0x65FD, 0x65FE, 0x65FF, 0x6601, 0x6604, 0x6605, 0x6607, 0x6608,
+ 0x6609, 0x660B, 0x660D, 0x6610, 0x6611, 0x6612, 0x6616, 0x6617, 0x6618,
+ 0x661A, 0x661B, 0x661C, 0x661E, 0x6621, 0x6622, 0x6623, 0x6624, 0x6626,
+ 0x6629, 0x662A, 0x662B, 0x662C, 0x662E, 0x6630, 0x6632, 0x6633, 0x6637,
+ 0x6638, 0x6639, 0x663A, 0x663B, 0x663D, 0x663F, 0x6640, 0x6644, 0x6645,
+ 0x6646, 0x6647, 0x6648, 0x6649, 0x664A, 0x664D, 0x664E, 0x6650, 0x6651,
+ 0x6658, 0x6659, 0x665B, 0x665C, 0x665E, 0x6660, 0x6662, 0x6663, 0x6665,
+ 0x6667, 0x6669, 0x666A, 0x666B, 0x666C, 0x666D, 0x6671, 0x6672, 0x6673,
+ 0x6675, 0x6678, 0x6679, 0x667B, 0x667C, 0x667D, 0x667F, 0x6680, 0x6681,
+ 0x6683, 0x6685, 0x6686, 0x668A, 0x668B, 0x668D, 0x668E, 0x668F, 0x6690,
+ 0x6692, 0x6693, 0x6694, 0x6695, 0x6698, 0x6699, 0x669A, 0x669B, 0x669C,
+ 0x669E, 0x669F, 0x66A0, 0x66A1, 0x66A3, 0x66A4, 0x66A5, 0x66A6, 0x66A9,
+ 0x66AA, 0x66AC, 0x66AD, 0x66AF, 0x66B0, 0x66B1, 0x66B2, 0x66B3, 0x66B5,
+ 0x66B6, 0x66B7, 0x66B8, 0x66BA, 0x66BB, 0x66BC, 0x66BD, 0x66BF, 0x66C0,
+ 0x66C1, 0x66C2, 0x66C3, 0x66C5, 0x66C8, 0x66CA, 0x66CB, 0x66CC, 0x66CD,
+ 0x66CE, 0x66CF, 0x66D0, 0x66D1, 0x66D2, 0x66D3, 0x66D4, 0x66D5, 0x66D7,
+ 0x66D8, 0x66DA, 0x66DE, 0x66DF, 0x66E1, 0x66E2, 0x66E3, 0x66E4, 0x66E5,
+ 0x66E7, 0x66E8, 0x66EA, 0x66EB, 0x66ED, 0x66EE, 0x66EF, 0x66F1, 0x66F5,
+ 0x66F6, 0x66FA, 0x66FB, 0x66FD, 0x6701, 0x6702, 0x6704, 0x6705, 0x6706,
+ 0x6707, 0x670C, 0x670E, 0x670F, 0x6711, 0x6712, 0x6713, 0x6716, 0x6718,
+ 0x6719, 0x671A, 0x671C, 0x671E, 0x6720, 0x6721, 0x6722, 0x6723, 0x6724,
+ 0x6725, 0x6729, 0x672E, 0x6730, 0x6732, 0x6733, 0x6736, 0x6737, 0x6738,
+ 0x6739, 0x673B, 0x673C, 0x673E, 0x673F, 0x6741, 0x6744, 0x6745, 0x6747,
+ 0x674A, 0x674B, 0x674D, 0x6752, 0x6754, 0x6755, 0x6757, 0x6758, 0x6759,
+ 0x675A, 0x675B, 0x675D, 0x6762, 0x6763, 0x6764, 0x6766, 0x6767, 0x676B,
+ 0x676C, 0x676E, 0x6774, 0x6776, 0x6778, 0x6779, 0x677A, 0x677B, 0x677D,
+ 0x6780, 0x6782, 0x6783, 0x6785, 0x6786, 0x6788, 0x678A, 0x678C, 0x678D,
+ 0x678E, 0x678F, 0x6791, 0x6792, 0x6793, 0x6794, 0x6796, 0x6799, 0x679B,
+ 0x679F, 0x67A0, 0x67A1, 0x67A4, 0x67A6, 0x67A9, 0x67AC, 0x67AE, 0x67B1,
+ 0x67B2, 0x67B4, 0x67B9, 0x67BA, 0x67BB, 0x67BC, 0x67BD, 0x67BE, 0x67BF,
+ 0x67C0, 0x67C2, 0x67C5, 0x67C6, 0x67C7, 0x67C8, 0x67C9, 0x67CA, 0x67CB,
+ 0x67CC, 0x67CD, 0x67CE, 0x67D5, 0x67D6, 0x67D7, 0x67DB, 0x67DF, 0x67E1,
+ 0x67E3, 0x67E4, 0x67E6, 0x67E7, 0x67E8, 0x67EA, 0x67EB, 0x67ED, 0x67EE,
+ 0x67F2, 0x67F5, 0x67F6, 0x67F7, 0x67F8, 0x67F9, 0x67FA, 0x67FB, 0x67FC,
+ 0x67FE, 0x6801, 0x6802, 0x6803, 0x6804, 0x6806, 0x680D, 0x6810, 0x6812,
+ 0x6814, 0x6815, 0x6818, 0x6819, 0x681A, 0x681B, 0x681C, 0x681E, 0x681F,
+ 0x6820, 0x6822, 0x6823, 0x6824, 0x6825, 0x6826, 0x6827, 0x6828, 0x682B,
+ 0x682C, 0x682D, 0x682E, 0x682F, 0x6830, 0x6831, 0x6834, 0x6835, 0x6836,
+ 0x683A, 0x683B, 0x683F, 0x6847, 0x684B, 0x684D, 0x684F, 0x6852, 0x6856,
+ 0x6857, 0x6858, 0x6859, 0x685A, 0x685B, 0x685C, 0x685D, 0x685E, 0x685F,
+ 0x686A, 0x686C, 0x686D, 0x686E, 0x686F, 0x6870, 0x6871, 0x6872, 0x6873,
+ 0x6875, 0x6878, 0x6879, 0x687A, 0x687B, 0x687C, 0x687D, 0x687E, 0x687F,
+ 0x6880, 0x6882, 0x6884, 0x6887, 0x6888, 0x6889, 0x688A, 0x688B, 0x688C,
+ 0x688D, 0x688E, 0x6890, 0x6891, 0x6892, 0x6894, 0x6895, 0x6896, 0x6899,
+ 0x689A, 0x689B, 0x689C, 0x689E, 0x68A0, 0x68A1, 0x68A3, 0x68A4, 0x68A5,
+ 0x68A9, 0x68AA, 0x68AB, 0x68AC, 0x68AE, 0x68B1, 0x68B2, 0x68B4, 0x68B6,
+ 0x68B7, 0x68B8, 0x68B9, 0x68BA, 0x68BB, 0x68BC, 0x68BD, 0x68BE, 0x68BF,
+ 0x68C1, 0x68C3, 0x68C4, 0x68C5, 0x68C6, 0x68C7, 0x68C8, 0x68CA, 0x68CC,
+ 0x68CE, 0x68CF, 0x68D0, 0x68D1, 0x68D3, 0x68D4, 0x68D9, 0x68DB, 0x68DC,
+ 0x68DD, 0x68DE, 0x68E1, 0x68E2, 0x68E4, 0x68E5, 0x68E6, 0x68E8, 0x68E9,
+ 0x68EA, 0x68EB, 0x68EC, 0x68ED, 0x68EF, 0x68F2, 0x68F3, 0x68F4, 0x68F6,
+ 0x68F7, 0x68F8, 0x68FB, 0x68FD, 0x68FE, 0x68FF, 0x6900, 0x6902, 0x6903,
+ 0x6904, 0x6906, 0x6907, 0x6908, 0x6909, 0x690A, 0x690C, 0x6911, 0x6913,
+ 0x6914, 0x6915, 0x6916, 0x6917, 0x6918, 0x6919, 0x691A, 0x691B, 0x691C,
+ 0x691D, 0x691E, 0x6921, 0x6922, 0x6923, 0x6925, 0x6926, 0x6927, 0x6928,
+ 0x6929, 0x692A, 0x692B, 0x692C, 0x692E, 0x692F, 0x6931, 0x6932, 0x6933,
+ 0x6935, 0x6936, 0x6937, 0x6938, 0x693A, 0x693B, 0x693C, 0x693E, 0x6940,
+ 0x6941, 0x6943, 0x6944, 0x6945, 0x6946, 0x6947, 0x6948, 0x6949, 0x694B,
+ 0x694C, 0x694D, 0x694E, 0x694F, 0x6950, 0x6951, 0x6952, 0x6955, 0x6956,
+ 0x6958, 0x6959, 0x695B, 0x695C, 0x695F, 0x6961, 0x6962, 0x6964, 0x6965,
+ 0x6967, 0x6969, 0x696A, 0x696C, 0x696F, 0x6970, 0x6972, 0x6973, 0x6974,
+ 0x6976, 0x697A, 0x697B, 0x697D, 0x697E, 0x697F, 0x6981, 0x6983, 0x6985,
+ 0x698A, 0x698B, 0x698C, 0x698E, 0x698F, 0x6990, 0x6991, 0x6992, 0x6993,
+ 0x6996, 0x6997, 0x6999, 0x699A, 0x699D, 0x699E, 0x699F, 0x69A0, 0x69A1,
+ 0x69A2, 0x69A3, 0x69A4, 0x69A5, 0x69A6, 0x69A9, 0x69AC, 0x69AF, 0x69B0,
+ 0x69B2, 0x69B3, 0x69B5, 0x69B6, 0x69B8, 0x69B9, 0x69BA, 0x69BC, 0x69BD,
+ 0x69BE, 0x69C0, 0x69C2, 0x69C3, 0x69C4, 0x69C5, 0x69C6, 0x69C7, 0x69C8,
+ 0x69C9, 0x69CF, 0x69D1, 0x69D2, 0x69D3, 0x69D5, 0x69D6, 0x69D7, 0x69D8,
+ 0x69D9, 0x69DA, 0x69DC, 0x69DD, 0x69DE, 0x69E1, 0x69E2, 0x69E3, 0x69E4,
+ 0x69E5, 0x69E6, 0x69E8, 0x69E9, 0x69EA, 0x69EB, 0x69EC, 0x69EE, 0x69EF,
+ 0x69F0, 0x69F1, 0x69F4, 0x69F5, 0x69F6, 0x69F7, 0x69F8, 0x69F9, 0x69FA,
+ 0x69FB, 0x69FC, 0x69FE, 0x6A00, 0x6A03, 0x6A04, 0x6A06, 0x6A07, 0x6A08,
+ 0x6A09, 0x6A0B, 0x6A0C, 0x6A0D, 0x6A0E, 0x6A0F, 0x6A10, 0x6A11, 0x6A12,
+ 0x6A14, 0x6A15, 0x6A16, 0x6A1A, 0x6A1B, 0x6A1C, 0x6A1D, 0x6A20, 0x6A22,
+ 0x6A24, 0x6A25, 0x6A26, 0x6A27, 0x6A29, 0x6A2B, 0x6A2C, 0x6A2D, 0x6A2E,
+ 0x6A30, 0x6A32, 0x6A33, 0x6A34, 0x6A36, 0x6A37, 0x6A3B, 0x6A3C, 0x6A3F,
+ 0x6A40, 0x6A41, 0x6A42, 0x6A43, 0x6A45, 0x6A46, 0x6A49, 0x6A4A, 0x6A4C,
+ 0x6A4D, 0x6A4E, 0x6A4F, 0x6A51, 0x6A52, 0x6A53, 0x6A54, 0x6A55, 0x6A56,
+ 0x6A57, 0x6A5A, 0x6A5C, 0x6A5D, 0x6A5E, 0x6A60, 0x6A63, 0x6A64, 0x6A66,
+ 0x6A67, 0x6A68, 0x6A69, 0x6A6A, 0x6A6B, 0x6A6C, 0x6A6D, 0x6A6E, 0x6A6F,
+ 0x6A70, 0x6A72, 0x6A73, 0x6A74, 0x6A75, 0x6A76, 0x6A77, 0x6A78, 0x6A7A,
+ 0x6A7B, 0x6A7D, 0x6A7E, 0x6A7F, 0x6A81, 0x6A82, 0x6A83, 0x6A85, 0x6A86,
+ 0x6A87, 0x6A88, 0x6A8A, 0x6A8B, 0x6A8C, 0x6A8D, 0x6A8F, 0x6A92, 0x6A93,
+ 0x6A95, 0x6A96, 0x6A98, 0x6A99, 0x6A9A, 0x6A9B, 0x6A9D, 0x6A9E, 0x6A9F,
+ 0x6AA1, 0x6AA4, 0x6AA5, 0x6AA6, 0x6AA7, 0x6AA8, 0x6AAA, 0x6AAD, 0x6AAE,
+ 0x6AB0, 0x6AB1, 0x6AB2, 0x6AB4, 0x6AB5, 0x6AB6, 0x6AB7, 0x6AB9, 0x6ABA,
+ 0x6ABC, 0x6ABD, 0x6ABE, 0x6ABF, 0x6AC0, 0x6AC1, 0x6AC2, 0x6AC4, 0x6AC5,
+ 0x6AC6, 0x6AC7, 0x6AC8, 0x6AC9, 0x6ACA, 0x6ACB, 0x6ACC, 0x6ACD, 0x6ACE,
+ 0x6ACF, 0x6AD0, 0x6AD1, 0x6AD2, 0x6AD4, 0x6AD5, 0x6AD6, 0x6AD7, 0x6AD8,
+ 0x6AD9, 0x6ADC, 0x6AE0, 0x6AE1, 0x6AE2, 0x6AE3, 0x6AE4, 0x6AE5, 0x6AE6,
+ 0x6AE9, 0x6AEB, 0x6AED, 0x6AEE, 0x6AEF, 0x6AF0, 0x6AF1, 0x6AF2, 0x6AF4,
+ 0x6AF5, 0x6AF6, 0x6AF7, 0x6AF9, 0x6AFA, 0x6AFC, 0x6AFD, 0x6AFE, 0x6AFF,
+ 0x6B00, 0x6B01, 0x6B02, 0x6B03, 0x6B05, 0x6B06, 0x6B07, 0x6B08, 0x6B09,
+ 0x6B0B, 0x6B0C, 0x6B0D, 0x6B0E, 0x6B10, 0x6B11, 0x6B13, 0x6B14, 0x6B15,
+ 0x6B17, 0x6B18, 0x6B19, 0x6B1A, 0x6B1B, 0x6B1C, 0x6B1D, 0x6B1F, 0x6B25,
+ 0x6B26, 0x6B28, 0x6B29, 0x6B2A, 0x6B2B, 0x6B2C, 0x6B2D, 0x6B2E, 0x6B2F,
+ 0x6B30, 0x6B31, 0x6B33, 0x6B34, 0x6B35, 0x6B36, 0x6B38, 0x6B3B, 0x6B3C,
+ 0x6B3F, 0x6B40, 0x6B41, 0x6B42, 0x6B44, 0x6B45, 0x6B48, 0x6B4A, 0x6B4B,
+ 0x6B4D, 0x6B4E, 0x6B4F, 0x6B51, 0x6B52, 0x6B53, 0x6B54, 0x6B55, 0x6B56,
+ 0x6B57, 0x6B58, 0x6B5A, 0x6B5B, 0x6B5C, 0x6B5D, 0x6B5E, 0x6B60, 0x6B68,
+ 0x6B69, 0x6B6B, 0x6B6C, 0x6B6D, 0x6B6E, 0x6B6F, 0x6B70, 0x6B71, 0x6B73,
+ 0x6B74, 0x6B75, 0x6B76, 0x6B7A, 0x6B7D, 0x6B7E, 0x6B7F, 0x6B80, 0x6B85,
+ 0x6B88, 0x6B8C, 0x6B8E, 0x6B8F, 0x6B90, 0x6B91, 0x6B94, 0x6B95, 0x6B97,
+ 0x6B99, 0x6B9C, 0x6B9D, 0x6B9F, 0x6BA0, 0x6BA2, 0x6BA3, 0x6BA5, 0x6BA6,
+ 0x6BA7, 0x6BA8, 0x6BA9, 0x6BAC, 0x6BAD, 0x6BB0, 0x6BB1, 0x6BB6, 0x6BB8,
+ 0x6BB9, 0x6BBC, 0x6BBD, 0x6BBE, 0x6BC0, 0x6BC3, 0x6BC4, 0x6BC7, 0x6BC8,
+ 0x6BC9, 0x6BCA, 0x6BCC, 0x6BCE, 0x6BD0, 0x6BD1, 0x6BD8, 0x6BDA, 0x6BDC,
+ 0x6BDD, 0x6BDE, 0x6BDF, 0x6BE0, 0x6BE2, 0x6BE3, 0x6BE4, 0x6BE5, 0x6BE6,
+ 0x6BE7, 0x6BE8, 0x6BE9, 0x6BEC, 0x6BED, 0x6BEE, 0x6BF0, 0x6BF1, 0x6BF2,
+ 0x6BF4, 0x6BF6, 0x6BF7, 0x6BF8, 0x6BFA, 0x6BFB, 0x6BFC, 0x6BFE, 0x6C00,
+ 0x6C01, 0x6C02, 0x6C03, 0x6C04, 0x6C09, 0x6C0A, 0x6C0B, 0x6C0E, 0x6C12,
+ 0x6C17, 0x6C1C, 0x6C1D, 0x6C1E, 0x6C20, 0x6C25, 0x6C2D, 0x6C31, 0x6C33,
+ 0x6C36, 0x6C37, 0x6C39, 0x6C3A, 0x6C3B, 0x6C3C, 0x6C3E, 0x6C3F, 0x6C43,
+ 0x6C44, 0x6C45, 0x6C48, 0x6C4B, 0x6C4C, 0x6C4D, 0x6C4E, 0x6C4F, 0x6C51,
+ 0x6C52, 0x6C53, 0x6C56, 0x6C58, 0x6C59, 0x6C5A, 0x6C62, 0x6C63, 0x6C65,
+ 0x6C66, 0x6C67, 0x6C6B, 0x6C6C, 0x6C6D, 0x6C6E, 0x6C6F, 0x6C71, 0x6C73,
+ 0x6C75, 0x6C77, 0x6C78, 0x6C7A, 0x6C7B, 0x6C7C, 0x6C7F, 0x6C80, 0x6C84,
+ 0x6C87, 0x6C8A, 0x6C8B, 0x6C8D, 0x6C8E, 0x6C91, 0x6C92, 0x6C95, 0x6C96,
+ 0x6C97, 0x6C98, 0x6C9A, 0x6C9C, 0x6C9D, 0x6C9E, 0x6CA0, 0x6CA2, 0x6CA8,
+ 0x6CAC, 0x6CAF, 0x6CB0, 0x6CB4, 0x6CB5, 0x6CB6, 0x6CB7, 0x6CBA, 0x6CC0,
+ 0x6CC1, 0x6CC2, 0x6CC3, 0x6CC6, 0x6CC7, 0x6CC8, 0x6CCB, 0x6CCD, 0x6CCE,
+ 0x6CCF, 0x6CD1, 0x6CD2, 0x6CD8, 0x6CD9, 0x6CDA, 0x6CDC, 0x6CDD, 0x6CDF,
+ 0x6CE4, 0x6CE6, 0x6CE7, 0x6CE9, 0x6CEC, 0x6CED, 0x6CF2, 0x6CF4, 0x6CF9,
+ 0x6CFF, 0x6D00, 0x6D02, 0x6D03, 0x6D05, 0x6D06, 0x6D08, 0x6D09, 0x6D0A,
+ 0x6D0D, 0x6D0F, 0x6D10, 0x6D11, 0x6D13, 0x6D14, 0x6D15, 0x6D16, 0x6D18,
+ 0x6D1C, 0x6D1D, 0x6D1F, 0x6D20, 0x6D21, 0x6D22, 0x6D23, 0x6D24, 0x6D26,
+ 0x6D28, 0x6D29, 0x6D2C, 0x6D2D, 0x6D2F, 0x6D30, 0x6D34, 0x6D36, 0x6D37,
+ 0x6D38, 0x6D3A, 0x6D3F, 0x6D40, 0x6D42, 0x6D44, 0x6D49, 0x6D4C, 0x6D50,
+ 0x6D55, 0x6D56, 0x6D57, 0x6D58, 0x6D5B, 0x6D5D, 0x6D5F, 0x6D61, 0x6D62,
+ 0x6D64, 0x6D65, 0x6D67, 0x6D68, 0x6D6B, 0x6D6C, 0x6D6D, 0x6D70, 0x6D71,
+ 0x6D72, 0x6D73, 0x6D75, 0x6D76, 0x6D7A, 0x6D7B, 0x6D7D, 0x6D7E, 0x6D7F,
+ 0x6D80, 0x6D81, 0x6D83, 0x6D84, 0x6D86, 0x6D8A, 0x6D8B, 0x6D8D, 0x6D8F,
+ 0x6D90, 0x6D92, 0x6D96, 0x6D97, 0x6D98, 0x6D99, 0x6D9A, 0x6D9C, 0x6DA2,
+ 0x6DA5, 0x6DAC, 0x6DAD, 0x6DB0, 0x6DB1, 0x6DB3, 0x6DB4, 0x6DB6, 0x6DB7,
+ 0x6DB9, 0x6DBA, 0x6DBB, 0x6DBC, 0x6DBD, 0x6DBE, 0x6DC1, 0x6DC2, 0x6DC3,
+ 0x6DC8, 0x6DC9, 0x6DCA, 0x6DCD, 0x6DCE, 0x6DCF, 0x6DD0, 0x6DD2, 0x6DD3,
+ 0x6DD4, 0x6DD5, 0x6DD7, 0x6DDA, 0x6DDB, 0x6DDC, 0x6DDF, 0x6DE2, 0x6DE3,
+ 0x6DE5, 0x6DE7, 0x6DE8, 0x6DE9, 0x6DED, 0x6DEF, 0x6DF0, 0x6DF2, 0x6DF4,
+ 0x6DF8, 0x6DFD, 0x6DFE, 0x6DFF, 0x6E00, 0x6E01, 0x6E02, 0x6E03, 0x6E04,
+ 0x6E06, 0x6E07, 0x6E08, 0x6E09, 0x6E0B, 0x6E0F, 0x6E12, 0x6E13, 0x6E15,
+ 0x6E18, 0x6E19, 0x6E1B, 0x6E1C, 0x6E1E, 0x6E1F, 0x6E22, 0x6E27, 0x6E28,
+ 0x6E2A, 0x6E2E, 0x6E30, 0x6E31, 0x6E33, 0x6E35, 0x6E36, 0x6E37, 0x6E39,
+ 0x6E3B, 0x6E3C, 0x6E3D, 0x6E3F, 0x6E40, 0x6E41, 0x6E42, 0x6E45, 0x6E46,
+ 0x6E47, 0x6E48, 0x6E49, 0x6E4A, 0x6E4B, 0x6E4C, 0x6E4F, 0x6E50, 0x6E51,
+ 0x6E52, 0x6E55, 0x6E57, 0x6E59, 0x6E5A, 0x6E5C, 0x6E5D, 0x6E60, 0x6E61,
+ 0x6E62, 0x6E63, 0x6E64, 0x6E65, 0x6E66, 0x6E67, 0x6E68, 0x6E69, 0x6E6A,
+ 0x6E6C, 0x6E6D, 0x6E70, 0x6E71, 0x6E72, 0x6E73, 0x6E74, 0x6E75, 0x6E76,
+ 0x6E77, 0x6E78, 0x6E79, 0x6E7A, 0x6E7B, 0x6E7C, 0x6E7D, 0x6E80, 0x6E81,
+ 0x6E82, 0x6E84, 0x6E87, 0x6E88, 0x6E8A, 0x6E8B, 0x6E8C, 0x6E8D, 0x6E8E,
+ 0x6E91, 0x6E92, 0x6E93, 0x6E94, 0x6E95, 0x6E97, 0x6E99, 0x6E9A, 0x6E9B,
+ 0x6E9E, 0x6EA0, 0x6EA1, 0x6EA3, 0x6EA4, 0x6EA6, 0x6EA8, 0x6EA9, 0x6EAB,
+ 0x6EAC, 0x6EAD, 0x6EAE, 0x6EB0, 0x6EB3, 0x6EB5, 0x6EB8, 0x6EB9, 0x6EBC,
+ 0x6EBE, 0x6EBF, 0x6EC0, 0x6EC3, 0x6EC6, 0x6EC8, 0x6EC9, 0x6ECA, 0x6ECD,
+ 0x6ED0, 0x6ED2, 0x6ED6, 0x6ED8, 0x6ED9, 0x6EDB, 0x6EDC, 0x6EDD, 0x6EE3,
+ 0x6EE7, 0x6EEA, 0x6EEB, 0x6EED, 0x6EEE, 0x6EF0, 0x6EF1, 0x6EF3, 0x6EF5,
+ 0x6EF6, 0x6EFA, 0x6EFB, 0x6EFC, 0x6EFD, 0x6EFE, 0x6F00, 0x6F03, 0x6F04,
+ 0x6F05, 0x6F07, 0x6F08, 0x6F0A, 0x6F0B, 0x6F0C, 0x6F0D, 0x6F0E, 0x6F10,
+ 0x6F11, 0x6F12, 0x6F16, 0x6F17, 0x6F18, 0x6F19, 0x6F1B, 0x6F1C, 0x6F1D,
+ 0x6F1E, 0x6F1F, 0x6F21, 0x6F25, 0x6F26, 0x6F27, 0x6F28, 0x6F2E, 0x6F30,
+ 0x6F34, 0x6F35, 0x6F37, 0x6F39, 0x6F3A, 0x6F3B, 0x6F3C, 0x6F3D, 0x6F40,
+ 0x6F42, 0x6F43, 0x6F44, 0x6F45, 0x6F48, 0x6F49, 0x6F4A, 0x6F4C, 0x6F4E,
+ 0x6F4F, 0x6F50, 0x6F52, 0x6F53, 0x6F55, 0x6F56, 0x6F57, 0x6F5A, 0x6F5B,
+ 0x6F5D, 0x6F5F, 0x6F60, 0x6F61, 0x6F63, 0x6F65, 0x6F67, 0x6F68, 0x6F69,
+ 0x6F6A, 0x6F6B, 0x6F6C, 0x6F71, 0x6F73, 0x6F75, 0x6F76, 0x6F79, 0x6F7B,
+ 0x6F7D, 0x6F7E, 0x6F81, 0x6F82, 0x6F83, 0x6F85, 0x6F8A, 0x6F8B, 0x6F8F,
+ 0x6F90, 0x6F91, 0x6F92, 0x6F93, 0x6F94, 0x6F95, 0x6F96, 0x6F98, 0x6F99,
+ 0x6F9A, 0x6F9B, 0x6F9D, 0x6F9E, 0x6F9F, 0x6FA2, 0x6FA3, 0x6FA5, 0x6FA6,
+ 0x6FA8, 0x6FAA, 0x6FAB, 0x6FAC, 0x6FAD, 0x6FAF, 0x6FB0, 0x6FB2, 0x6FB4,
+ 0x6FB5, 0x6FB7, 0x6FB8, 0x6FBA, 0x6FBB, 0x6FBC, 0x6FBD, 0x6FBE, 0x6FBF,
+ 0x6FC4, 0x6FC5, 0x6FC6, 0x6FC7, 0x6FC8, 0x6FCA, 0x6FCB, 0x6FCC, 0x6FCD,
+ 0x6FCE, 0x6FCF, 0x6FD0, 0x6FD3, 0x6FD4, 0x6FD6, 0x6FD7, 0x6FD9, 0x6FDA,
+ 0x6FDC, 0x6FDD, 0x6FE2, 0x6FE3, 0x6FE5, 0x6FE6, 0x6FE7, 0x6FE8, 0x6FE9,
+ 0x6FEA, 0x6FEC, 0x6FED, 0x6FF2, 0x6FF3, 0x6FF4, 0x6FF5, 0x6FF6, 0x6FF7,
+ 0x6FF8, 0x6FF9, 0x6FFB, 0x6FFD, 0x6FFF, 0x7000, 0x7001, 0x7002, 0x7003,
+ 0x7004, 0x7007, 0x7008, 0x700A, 0x700C, 0x700D, 0x700E, 0x7010, 0x7012,
+ 0x7013, 0x7014, 0x7016, 0x7017, 0x7019, 0x701C, 0x701E, 0x7021, 0x7022,
+ 0x7024, 0x7025, 0x7026, 0x7029, 0x702A, 0x702B, 0x702C, 0x702D, 0x702E,
+ 0x702F, 0x7031, 0x7033, 0x7034, 0x7036, 0x7037, 0x7038, 0x703A, 0x703B,
+ 0x703C, 0x703D, 0x703F, 0x7040, 0x7041, 0x7042, 0x7045, 0x7046, 0x7047,
+ 0x7048, 0x7049, 0x704A, 0x704B, 0x704D, 0x704E, 0x7050, 0x7052, 0x7053,
+ 0x7054, 0x7056, 0x7057, 0x7059, 0x705A, 0x705B, 0x705C, 0x705F, 0x7060,
+ 0x7061, 0x7062, 0x7065, 0x7066, 0x7068, 0x7069, 0x706A, 0x706E, 0x7071,
+ 0x7072, 0x7073, 0x7074, 0x7077, 0x7079, 0x707A, 0x707B, 0x707D, 0x7081,
+ 0x7082, 0x7083, 0x7084, 0x7086, 0x7087, 0x7088, 0x708B, 0x708C, 0x708D,
+ 0x708F, 0x7090, 0x7091, 0x7093, 0x7097, 0x7098, 0x709A, 0x709B, 0x709E,
+ 0x709F, 0x70A0, 0x70A1, 0x70A2, 0x70A3, 0x70A4, 0x70A5, 0x70A6, 0x70A7,
+ 0x70A8, 0x70A9, 0x70AA, 0x70B0, 0x70B2, 0x70B4, 0x70B5, 0x70B6, 0x70BA,
+ 0x70BE, 0x70BF, 0x70C4, 0x70C5, 0x70C6, 0x70C7, 0x70C9, 0x70CB, 0x70CC,
+ 0x70CD, 0x70CE, 0x70D0, 0x70D1, 0x70D2, 0x70D3, 0x70D4, 0x70D5, 0x70D6,
+ 0x70D7, 0x70DA, 0x70DC, 0x70DD, 0x70DE, 0x70E0, 0x70E1, 0x70E2, 0x70E3,
+ 0x70E5, 0x70EA, 0x70EE, 0x70F0, 0x70F1, 0x70F2, 0x70F3, 0x70F5, 0x70F6,
+ 0x70F8, 0x70FA, 0x70FB, 0x70FC, 0x70FE, 0x70FF, 0x7100, 0x7101, 0x7102,
+ 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x7108, 0x710B, 0x710C, 0x710D,
+ 0x710E, 0x710F, 0x7111, 0x7112, 0x7114, 0x7117, 0x711B, 0x711C, 0x711D,
+ 0x711E, 0x711F, 0x7120, 0x7122, 0x7123, 0x7124, 0x7125, 0x7127, 0x7128,
+ 0x7129, 0x712A, 0x712B, 0x712C, 0x712D, 0x712E, 0x7132, 0x7133, 0x7134,
+ 0x7135, 0x7137, 0x7138, 0x7139, 0x713A, 0x713B, 0x713C, 0x713D, 0x713E,
+ 0x713F, 0x7140, 0x7141, 0x7142, 0x7143, 0x7144, 0x7146, 0x7147, 0x7148,
+ 0x714B, 0x714D, 0x714F, 0x7150, 0x7151, 0x7153, 0x7154, 0x7155, 0x7156,
+ 0x7157, 0x7158, 0x7159, 0x715A, 0x715B, 0x715D, 0x715F, 0x7160, 0x7161,
+ 0x7163, 0x7165, 0x716A, 0x716B, 0x716D, 0x716F, 0x7170, 0x7171, 0x7174,
+ 0x7175, 0x7176, 0x7177, 0x7179, 0x717B, 0x717C, 0x717E, 0x717F, 0x7180,
+ 0x7181, 0x7182, 0x7183, 0x7185, 0x7186, 0x7187, 0x7188, 0x7189, 0x718B,
+ 0x718C, 0x718D, 0x718E, 0x7190, 0x7191, 0x7193, 0x7195, 0x7196, 0x719A,
+ 0x719B, 0x719C, 0x719D, 0x719E, 0x71A1, 0x71A2, 0x71A3, 0x71A4, 0x71A5,
+ 0x71A6, 0x71A7, 0x71A9, 0x71AA, 0x71AB, 0x71AD, 0x71AE, 0x71AF, 0x71B0,
+ 0x71B2, 0x71B4, 0x71B6, 0x71B7, 0x71B8, 0x71BA, 0x71BB, 0x71BC, 0x71BD,
+ 0x71BF, 0x71C0, 0x71C2, 0x71C4, 0x71C5, 0x71C6, 0x71C7, 0x71C9, 0x71CA,
+ 0x71CB, 0x71CC, 0x71CD, 0x71CF, 0x71D0, 0x71D1, 0x71D3, 0x71D6, 0x71D7,
+ 0x71D8, 0x71DA, 0x71DB, 0x71DD, 0x71DE, 0x71E1, 0x71E2, 0x71E3, 0x71E4,
+ 0x71E8, 0x71E9, 0x71EA, 0x71EB, 0x71EC, 0x71EF, 0x71F0, 0x71F1, 0x71F2,
+ 0x71F3, 0x71F5, 0x71F6, 0x71F7, 0x71F8, 0x71FA, 0x71FB, 0x71FD, 0x71FF,
+ 0x7200, 0x7201, 0x7202, 0x7203, 0x7204, 0x7205, 0x7207, 0x7208, 0x7209,
+ 0x720A, 0x720B, 0x720C, 0x720E, 0x720F, 0x7211, 0x7212, 0x7213, 0x7214,
+ 0x7215, 0x7216, 0x7217, 0x7218, 0x7219, 0x721A, 0x721C, 0x721E, 0x721F,
+ 0x7220, 0x7221, 0x7222, 0x7223, 0x7224, 0x7225, 0x7226, 0x7227, 0x7229,
+ 0x722B, 0x722D, 0x722E, 0x722F, 0x7233, 0x7234, 0x723C, 0x7240, 0x7241,
+ 0x7242, 0x7243, 0x7244, 0x7245, 0x7246, 0x7249, 0x724A, 0x724B, 0x724E,
+ 0x724F, 0x7250, 0x7251, 0x7253, 0x7254, 0x7255, 0x7257, 0x725A, 0x725C,
+ 0x725E, 0x7260, 0x7263, 0x7264, 0x7265, 0x7268, 0x726A, 0x726B, 0x726C,
+ 0x726D, 0x7270, 0x7271, 0x7273, 0x7274, 0x7276, 0x7277, 0x7278, 0x727B,
+ 0x727C, 0x7282, 0x7283, 0x7285, 0x7286, 0x7287, 0x7288, 0x7289, 0x728C,
+ 0x728E, 0x7290, 0x7291, 0x7293, 0x7294, 0x7295, 0x7297, 0x7298, 0x7299,
+ 0x729A, 0x729B, 0x729C, 0x729D, 0x729E, 0x72A0, 0x72A1, 0x72A3, 0x72A4,
+ 0x72A5, 0x72A6, 0x72A8, 0x72A9, 0x72AA, 0x72AB, 0x72AE, 0x72B1, 0x72B2,
+ 0x72B3, 0x72B5, 0x72BA, 0x72BB, 0x72BC, 0x72BD, 0x72BE, 0x72BF, 0x72C5,
+ 0x72C6, 0x72C7, 0x72C9, 0x72CA, 0x72CB, 0x72CC, 0x72CF, 0x72D1, 0x72D3,
+ 0x72D4, 0x72D5, 0x72D6, 0x72D8, 0x72DA, 0x72DB, 0x72DC, 0x72DD, 0x72DF,
+ 0x72E2, 0x72E3, 0x72E4, 0x72E5, 0x72E6, 0x72E7, 0x72EA, 0x72EB, 0x72F5,
+ 0x72F6, 0x72FE, 0x72FF, 0x7300, 0x7302, 0x7304, 0x7305, 0x7306, 0x7307,
+ 0x7308, 0x7309, 0x730B, 0x730C, 0x730D, 0x730F, 0x7310, 0x7311, 0x7312,
+ 0x7314, 0x7318, 0x7319, 0x731A, 0x731F, 0x7320, 0x7323, 0x7324, 0x7326,
+ 0x7327, 0x7328, 0x732D, 0x732F, 0x7330, 0x7332, 0x7333, 0x7335, 0x733A,
+ 0x733C, 0x733D, 0x7340, 0x7342, 0x7343, 0x7346, 0x7347, 0x7348, 0x7349,
+ 0x734A, 0x734B, 0x734C, 0x734E, 0x734F, 0x7351, 0x7353, 0x7354, 0x7355,
+ 0x7356, 0x7358, 0x7359, 0x735A, 0x735B, 0x735C, 0x735D, 0x735E, 0x735F,
+ 0x7361, 0x7362, 0x7363, 0x7364, 0x7365, 0x7366, 0x7367, 0x7369, 0x736E,
+ 0x7371, 0x7373, 0x7374, 0x7376, 0x7379, 0x737D, 0x737F, 0x7381, 0x7382,
+ 0x7383, 0x7385, 0x7386, 0x7388, 0x738A, 0x738C, 0x738D, 0x738F, 0x7390,
+ 0x7392, 0x7393, 0x7394, 0x7395, 0x7397, 0x7398, 0x7399, 0x739A, 0x739C,
+ 0x739D, 0x739E, 0x73A0, 0x73A1, 0x73A3, 0x73A4, 0x73A5, 0x73A6, 0x73A7,
+ 0x73A8, 0x73AA, 0x73AC, 0x73AD, 0x73B1, 0x73B4, 0x73B5, 0x73B6, 0x73B8,
+ 0x73B9, 0x73BC, 0x73BD, 0x73BE, 0x73BF, 0x73C1, 0x73C3, 0x73C4, 0x73C5,
+ 0x73C6, 0x73C7, 0x73CB, 0x73CC, 0x73CE, 0x73D2, 0x73D3, 0x73D4, 0x73D5,
+ 0x73D6, 0x73D7, 0x73D8, 0x73DA, 0x73DB, 0x73DC, 0x73DD, 0x73DF, 0x73E1,
+ 0x73E2, 0x73E3, 0x73E4, 0x73E6, 0x73E8, 0x73EA, 0x73EB, 0x73EC, 0x73EE,
+ 0x73EF, 0x73F0, 0x73F1, 0x73F3, 0x73F4, 0x73F5, 0x73F6, 0x73F7, 0x73F8,
+ 0x73F9, 0x73FA, 0x73FB, 0x73FC, 0x73FD, 0x73FF, 0x7400, 0x7401, 0x7402,
+ 0x7404, 0x7407, 0x7408, 0x740B, 0x740C, 0x740D, 0x740E, 0x7411, 0x7412,
+ 0x7413, 0x7414, 0x7415, 0x7416, 0x7417, 0x7418, 0x7419, 0x741C, 0x741D,
+ 0x741E, 0x741F, 0x7420, 0x7421, 0x7423, 0x7424, 0x7427, 0x7429, 0x742B,
+ 0x742D, 0x742F, 0x7431, 0x7432, 0x7437, 0x7438, 0x7439, 0x743A, 0x743B,
+ 0x743D, 0x743E, 0x7440, 0x7442, 0x7443, 0x7444, 0x7445, 0x7446, 0x7447,
+ 0x7448, 0x7449, 0x744A, 0x744C, 0x744D, 0x744E, 0x744F, 0x7450, 0x7451,
+ 0x7452, 0x7453, 0x7454, 0x7456, 0x7458, 0x745D, 0x7460, 0x7461, 0x7462,
+ 0x7464, 0x7465, 0x7466, 0x7467, 0x7468, 0x746B, 0x746C, 0x746E, 0x746F,
+ 0x7471, 0x7472, 0x7473, 0x7474, 0x7475, 0x7478, 0x7479, 0x747A, 0x747B,
+ 0x747C, 0x747D, 0x747F, 0x7482, 0x7484, 0x7485, 0x7486, 0x7488, 0x748A,
+ 0x748C, 0x748D, 0x748F, 0x7491, 0x7492, 0x7493, 0x7494, 0x7495, 0x7496,
+ 0x7497, 0x7498, 0x7499, 0x749A, 0x749B, 0x749D, 0x749F, 0x74A0, 0x74A1,
+ 0x74A2, 0x74A4, 0x74A5, 0x74AA, 0x74AB, 0x74AC, 0x74AD, 0x74AE, 0x74AF,
+ 0x74B1, 0x74B2, 0x74B3, 0x74B4, 0x74B5, 0x74B6, 0x74B7, 0x74B8, 0x74B9,
+ 0x74BB, 0x74BC, 0x74BE, 0x74BF, 0x74C0, 0x74C1, 0x74C2, 0x74C3, 0x74C4,
+ 0x74C5, 0x74C6, 0x74C7, 0x74C8, 0x74C9, 0x74CB, 0x74CC, 0x74CD, 0x74CE,
+ 0x74D0, 0x74D1, 0x74D3, 0x74D5, 0x74D6, 0x74D7, 0x74D8, 0x74D9, 0x74DB,
+ 0x74DD, 0x74DF, 0x74E1, 0x74E5, 0x74E7, 0x74E8, 0x74E9, 0x74EA, 0x74EB,
+ 0x74EC, 0x74ED, 0x74F0, 0x74F1, 0x74F2, 0x74F3, 0x74F5, 0x74F8, 0x74F9,
+ 0x74FA, 0x74FB, 0x74FC, 0x74FD, 0x74FE, 0x7500, 0x7501, 0x7502, 0x7503,
+ 0x7505, 0x7506, 0x7507, 0x7508, 0x7509, 0x750A, 0x750B, 0x750E, 0x7510,
+ 0x7512, 0x7514, 0x7515, 0x7516, 0x7517, 0x751B, 0x751D, 0x751E, 0x7520,
+ 0x7521, 0x7522, 0x7524, 0x7526, 0x7527, 0x752A, 0x752E, 0x7534, 0x7536,
+ 0x7539, 0x753C, 0x753D, 0x753F, 0x7541, 0x7542, 0x7543, 0x7544, 0x7546,
+ 0x7547, 0x7549, 0x754A, 0x754D, 0x7550, 0x7551, 0x7552, 0x7553, 0x7555,
+ 0x7556, 0x7557, 0x7558, 0x755E, 0x755F, 0x7560, 0x7561, 0x7563, 0x7564,
+ 0x7567, 0x7568, 0x7569, 0x756C, 0x756D, 0x756E, 0x756F, 0x7570, 0x7571,
+ 0x7573, 0x7575, 0x7577, 0x757A, 0x757B, 0x757C, 0x757D, 0x757E, 0x7580,
+ 0x7581, 0x7582, 0x7584, 0x7585, 0x7588, 0x7589, 0x758A, 0x758C, 0x758D,
+ 0x758E, 0x7590, 0x7593, 0x7595, 0x7598, 0x759B, 0x759C, 0x759E, 0x75A2,
+ 0x75A6, 0x75A7, 0x75A8, 0x75A9, 0x75AA, 0x75AD, 0x75B6, 0x75B7, 0x75BA,
+ 0x75BB, 0x75BF, 0x75C0, 0x75C1, 0x75C6, 0x75CB, 0x75CC, 0x75CE, 0x75CF,
+ 0x75D0, 0x75D1, 0x75D3, 0x75D7, 0x75DA, 0x75DC, 0x75DD, 0x75DF, 0x75E0,
+ 0x75E1, 0x75E5, 0x75E9, 0x75EC, 0x75ED, 0x75EE, 0x75EF, 0x75F2, 0x75F3,
+ 0x75F5, 0x75F6, 0x75F7, 0x75F8, 0x75FA, 0x75FB, 0x75FD, 0x75FE, 0x7604,
+ 0x7606, 0x7607, 0x7608, 0x7609, 0x760E, 0x760F, 0x7611, 0x7612, 0x7613,
+ 0x7614, 0x7616, 0x761A, 0x761C, 0x761D, 0x7623, 0x7628, 0x762C, 0x762E,
+ 0x762F, 0x7631, 0x7632, 0x7636, 0x7637, 0x7639, 0x763A, 0x763D, 0x7641,
+ 0x7644, 0x7645, 0x7648, 0x764A, 0x764B, 0x764E, 0x764F, 0x7650, 0x7651,
+ 0x7652, 0x7653, 0x7655, 0x7657, 0x7659, 0x765A, 0x765B, 0x765D, 0x7660,
+ 0x7661, 0x7666, 0x7668, 0x766A, 0x7673, 0x7674, 0x7675, 0x7676, 0x7677,
+ 0x7679, 0x767A, 0x767F, 0x7680, 0x7681, 0x7683, 0x7685, 0x7689, 0x768A,
+ 0x768C, 0x768D, 0x768F, 0x7690, 0x7692, 0x7694, 0x7695, 0x7697, 0x7698,
+ 0x769B, 0x769C, 0x769D, 0x769E, 0x769F, 0x76A0, 0x76A1, 0x76A2, 0x76A3,
+ 0x76A5, 0x76A6, 0x76A7, 0x76A8, 0x76A9, 0x76AA, 0x76AB, 0x76AC, 0x76AD,
+ 0x76AF, 0x76B0, 0x76B3, 0x76B5, 0x76B6, 0x76B7, 0x76B9, 0x76BB, 0x76BC,
+ 0x76BD, 0x76BE, 0x76C0, 0x76C1, 0x76C3, 0x76C4, 0x76C7, 0x76C9, 0x76CB,
+ 0x76CC, 0x76D3, 0x76D5, 0x76D9, 0x76DA, 0x76DC, 0x76DD, 0x76E0, 0x76E2,
+ 0x76E6, 0x76E8, 0x76E9, 0x76EA, 0x76EB, 0x76EC, 0x76ED, 0x76F0, 0x76F3,
+ 0x76F5, 0x76F6, 0x76F7, 0x76FA, 0x76FB, 0x76FD, 0x76FF, 0x7700, 0x7702,
+ 0x7703, 0x7705, 0x7706, 0x770A, 0x770C, 0x770E, 0x770F, 0x7710, 0x7711,
+ 0x7712, 0x7713, 0x7714, 0x7715, 0x7716, 0x7717, 0x7718, 0x771B, 0x771C,
+ 0x771D, 0x771E, 0x7721, 0x7723, 0x7724, 0x7725, 0x7727, 0x772A, 0x772B,
+ 0x772C, 0x772E, 0x7730, 0x7731, 0x7732, 0x7733, 0x7734, 0x7739, 0x773B,
+ 0x773D, 0x773E, 0x773F, 0x7742, 0x7744, 0x7745, 0x7746, 0x7748, 0x7749,
+ 0x774A, 0x774B, 0x774C, 0x774D, 0x774E, 0x7752, 0x7753, 0x7754, 0x7755,
+ 0x7756, 0x7757, 0x7758, 0x7759, 0x775C, 0x775D, 0x775F, 0x7760, 0x7764,
+ 0x7767, 0x7769, 0x776A, 0x776D, 0x776E, 0x776F, 0x7770, 0x7771, 0x7772,
+ 0x7773, 0x7774, 0x7775, 0x7776, 0x7777, 0x7778, 0x777A, 0x777B, 0x777C,
+ 0x7781, 0x7782, 0x7783, 0x7786, 0x7787, 0x7788, 0x7789, 0x778A, 0x778B,
+ 0x778F, 0x7790, 0x7793, 0x7794, 0x7795, 0x7796, 0x7797, 0x7799, 0x779A,
+ 0x779B, 0x779C, 0x779D, 0x77A1, 0x77A3, 0x77A4, 0x77A6, 0x77A8, 0x77AB,
+ 0x77AE, 0x77AF, 0x77B1, 0x77B2, 0x77B4, 0x77B6, 0x77B7, 0x77B8, 0x77B9,
+ 0x77BA, 0x77BE, 0x77C0, 0x77C1, 0x77C2, 0x77C3, 0x77C4, 0x77C5, 0x77C6,
+ 0x77C8, 0x77C9, 0x77CA, 0x77CB, 0x77CC, 0x77CE, 0x77CF, 0x77D0, 0x77D1,
+ 0x77D2, 0x77D3, 0x77D4, 0x77D5, 0x77D6, 0x77D8, 0x77D9, 0x77DD, 0x77DE,
+ 0x77DF, 0x77E0, 0x77E1, 0x77E4, 0x77E6, 0x77E8, 0x77EA, 0x77F0, 0x77F1,
+ 0x77F2, 0x77F4, 0x77F5, 0x77F7, 0x77F9, 0x77FA, 0x77FB, 0x77FC, 0x7803,
+ 0x7804, 0x7805, 0x7806, 0x7807, 0x7808, 0x780A, 0x780B, 0x780E, 0x780F,
+ 0x7810, 0x7813, 0x7815, 0x7819, 0x781B, 0x781E, 0x7820, 0x7821, 0x7822,
+ 0x7824, 0x7828, 0x782A, 0x782B, 0x782E, 0x782F, 0x7831, 0x7832, 0x7833,
+ 0x7835, 0x7836, 0x783D, 0x783F, 0x7841, 0x7842, 0x7844, 0x7846, 0x7848,
+ 0x7849, 0x784A, 0x784B, 0x784D, 0x784F, 0x7851, 0x7853, 0x7854, 0x7858,
+ 0x7859, 0x785A, 0x785B, 0x785C, 0x785E, 0x785F, 0x7860, 0x7861, 0x7862,
+ 0x7863, 0x7865, 0x7866, 0x7867, 0x7869, 0x7870, 0x7871, 0x7872, 0x7873,
+ 0x7874, 0x7875, 0x7876, 0x7878, 0x7879, 0x787A, 0x787B, 0x787D, 0x787E,
+ 0x787F, 0x7880, 0x7881, 0x7882, 0x7883, 0x7884, 0x7885, 0x7886, 0x7888,
+ 0x788A, 0x788B, 0x788F, 0x7890, 0x7892, 0x7894, 0x7895, 0x7896, 0x7899,
+ 0x789D, 0x789E, 0x78A0, 0x78A2, 0x78A4, 0x78A6, 0x78A8, 0x78AA, 0x78AB,
+ 0x78AC, 0x78AE, 0x78AF, 0x78B5, 0x78B6, 0x78B7, 0x78BB, 0x78BD, 0x78BF,
+ 0x78C0, 0x78C2, 0x78C3, 0x78C4, 0x78C6, 0x78C7, 0x78C8, 0x78CC, 0x78CD,
+ 0x78CE, 0x78CF, 0x78D1, 0x78D2, 0x78D3, 0x78D6, 0x78D7, 0x78D8, 0x78DB,
+ 0x78DC, 0x78DD, 0x78DE, 0x78DF, 0x78E0, 0x78E1, 0x78E2, 0x78E4, 0x78E5,
+ 0x78E6, 0x78E9, 0x78EA, 0x78EB, 0x78ED, 0x78EE, 0x78F0, 0x78F1, 0x78F3,
+ 0x78F5, 0x78F6, 0x78F8, 0x78F9, 0x78FB, 0x78FC, 0x78FE, 0x78FF, 0x7900,
+ 0x7902, 0x7903, 0x7904, 0x7906, 0x7907, 0x7908, 0x7909, 0x790A, 0x790B,
+ 0x790C, 0x790D, 0x790F, 0x7910, 0x7911, 0x7912, 0x7914, 0x7915, 0x7916,
+ 0x7917, 0x7918, 0x791A, 0x791B, 0x791C, 0x791D, 0x791F, 0x7920, 0x7921,
+ 0x7922, 0x7923, 0x7925, 0x7927, 0x7928, 0x7929, 0x792D, 0x792E, 0x792F,
+ 0x7930, 0x7932, 0x7933, 0x7935, 0x7936, 0x7937, 0x7938, 0x7939, 0x793D,
+ 0x793F, 0x7942, 0x7943, 0x7944, 0x7945, 0x7947, 0x794A, 0x794B, 0x794C,
+ 0x794D, 0x794E, 0x794F, 0x7950, 0x7951, 0x7952, 0x7954, 0x7955, 0x7958,
+ 0x7959, 0x7961, 0x7963, 0x7964, 0x7966, 0x7969, 0x796A, 0x796B, 0x796C,
+ 0x796E, 0x7970, 0x7971, 0x7972, 0x7973, 0x7974, 0x7975, 0x7976, 0x7979,
+ 0x797B, 0x797C, 0x797D, 0x797E, 0x797F, 0x7982, 0x7983, 0x7986, 0x7987,
+ 0x7988, 0x7989, 0x798B, 0x798C, 0x7990, 0x7991, 0x7992, 0x7993, 0x7994,
+ 0x7995, 0x7996, 0x7997, 0x7998, 0x7999, 0x799B, 0x799C, 0x799D, 0x799E,
+ 0x799F, 0x79A0, 0x79A1, 0x79A2, 0x79A3, 0x79A4, 0x79A5, 0x79A8, 0x79A9,
+ 0x79AB, 0x79AC, 0x79AD, 0x79AF, 0x79B2, 0x79B4, 0x79B5, 0x79B6, 0x79B7,
+ 0x79B8, 0x79BC, 0x79BF, 0x79C2, 0x79C4, 0x79C5, 0x79C7, 0x79C8, 0x79CA,
+ 0x79CC, 0x79CE, 0x79CF, 0x79D0, 0x79D3, 0x79D4, 0x79D6, 0x79D7, 0x79D9,
+ 0x79DA, 0x79DB, 0x79DC, 0x79DD, 0x79DE, 0x79E0, 0x79E1, 0x79E2, 0x79E5,
+ 0x79E8, 0x79EA, 0x79EC, 0x79EE, 0x79F1, 0x79F2, 0x79F3, 0x79F4, 0x79F5,
+ 0x79F6, 0x79F7, 0x79F9, 0x79FA, 0x79FC, 0x79FE, 0x79FF, 0x7A01, 0x7A04,
+ 0x7A05, 0x7A07, 0x7A08, 0x7A09, 0x7A0A, 0x7A0C, 0x7A0F, 0x7A10, 0x7A11,
+ 0x7A12, 0x7A13, 0x7A15, 0x7A16, 0x7A18, 0x7A19, 0x7A1B, 0x7A1C, 0x7A1D,
+ 0x7A1F, 0x7A21, 0x7A22, 0x7A24, 0x7A25, 0x7A26, 0x7A27, 0x7A28, 0x7A29,
+ 0x7A2A, 0x7A2B, 0x7A2C, 0x7A2D, 0x7A2F, 0x7A30, 0x7A32, 0x7A34, 0x7A35,
+ 0x7A36, 0x7A38, 0x7A3A, 0x7A3E, 0x7A41, 0x7A42, 0x7A43, 0x7A44, 0x7A45,
+ 0x7A47, 0x7A48, 0x7A49, 0x7A4A, 0x7A4B, 0x7A4F, 0x7A50, 0x7A52, 0x7A53,
+ 0x7A54, 0x7A55, 0x7A56, 0x7A58, 0x7A59, 0x7A5A, 0x7A5B, 0x7A5C, 0x7A5D,
+ 0x7A5E, 0x7A5F, 0x7A60, 0x7A63, 0x7A64, 0x7A65, 0x7A66, 0x7A67, 0x7A68,
+ 0x7A6A, 0x7A6C, 0x7A6D, 0x7A6E, 0x7A6F, 0x7A71, 0x7A72, 0x7A73, 0x7A75,
+ 0x7A7B, 0x7A7C, 0x7A7D, 0x7A7E, 0x7A82, 0x7A85, 0x7A87, 0x7A89, 0x7A8A,
+ 0x7A8B, 0x7A8C, 0x7A8E, 0x7A8F, 0x7A90, 0x7A93, 0x7A94, 0x7A99, 0x7A9A,
+ 0x7A9B, 0x7A9E, 0x7AA1, 0x7AA2, 0x7AA3, 0x7AA4, 0x7AA7, 0x7AAB, 0x7AAF,
+ 0x7AB0, 0x7AB1, 0x7AB2, 0x7AB4, 0x7AB5, 0x7AB7, 0x7AB8, 0x7AB9, 0x7ABB,
+ 0x7ABC, 0x7ABD, 0x7ABE, 0x7AC0, 0x7AC1, 0x7AC2, 0x7AC3, 0x7AC6, 0x7AC9,
+ 0x7ACC, 0x7ACD, 0x7ACE, 0x7ACF, 0x7AD0, 0x7AD1, 0x7AD2, 0x7AD3, 0x7AD4,
+ 0x7AD5, 0x7AD7, 0x7AD8, 0x7ADA, 0x7ADB, 0x7ADC, 0x7ADD, 0x7AE1, 0x7AE2,
+ 0x7AE4, 0x7AE7, 0x7AE8, 0x7AE9, 0x7AEB, 0x7AEC, 0x7AEE, 0x7AF0, 0x7AF1,
+ 0x7AF2, 0x7AF3, 0x7AF4, 0x7AF5, 0x7AF7, 0x7AF8, 0x7AFB, 0x7AFC, 0x7AFE,
+ 0x7B00, 0x7B01, 0x7B02, 0x7B05, 0x7B07, 0x7B09, 0x7B0C, 0x7B0D, 0x7B0E,
+ 0x7B10, 0x7B12, 0x7B13, 0x7B16, 0x7B17, 0x7B18, 0x7B1A, 0x7B1C, 0x7B1D,
+ 0x7B1F, 0x7B21, 0x7B22, 0x7B23, 0x7B27, 0x7B29, 0x7B2D, 0x7B2F, 0x7B30,
+ 0x7B32, 0x7B34, 0x7B35, 0x7B36, 0x7B37, 0x7B39, 0x7B3B, 0x7B3D, 0x7B3F,
+ 0x7B40, 0x7B41, 0x7B42, 0x7B43, 0x7B44, 0x7B48, 0x7B4A, 0x7B4D, 0x7B4E,
+ 0x7B53, 0x7B55, 0x7B57, 0x7B59, 0x7B5C, 0x7B5E, 0x7B5F, 0x7B61, 0x7B63,
+ 0x7B64, 0x7B65, 0x7B66, 0x7B68, 0x7B69, 0x7B6A, 0x7B6B, 0x7B6C, 0x7B6D,
+ 0x7B6F, 0x7B70, 0x7B73, 0x7B74, 0x7B76, 0x7B78, 0x7B7A, 0x7B7C, 0x7B7D,
+ 0x7B7F, 0x7B81, 0x7B82, 0x7B83, 0x7B84, 0x7B86, 0x7B87, 0x7B88, 0x7B89,
+ 0x7B8A, 0x7B8C, 0x7B8E, 0x7B8F, 0x7B91, 0x7B92, 0x7B93, 0x7B96, 0x7B98,
+ 0x7B99, 0x7B9A, 0x7B9B, 0x7B9E, 0x7B9F, 0x7BA0, 0x7BA3, 0x7BA4, 0x7BA5,
+ 0x7BAE, 0x7BAF, 0x7BB0, 0x7BB2, 0x7BB3, 0x7BB5, 0x7BB6, 0x7BB7, 0x7BB9,
+ 0x7BBA, 0x7BBB, 0x7BBC, 0x7BBD, 0x7BBE, 0x7BBF, 0x7BC2, 0x7BC3, 0x7BC5,
+ 0x7BC8, 0x7BCA, 0x7BCD, 0x7BCE, 0x7BCF, 0x7BD0, 0x7BD2, 0x7BD4, 0x7BD5,
+ 0x7BD6, 0x7BD7, 0x7BD8, 0x7BDB, 0x7BDC, 0x7BDE, 0x7BDF, 0x7BE0, 0x7BE2,
+ 0x7BE3, 0x7BE7, 0x7BE8, 0x7BEB, 0x7BEC, 0x7BED, 0x7BEF, 0x7BF0, 0x7BF2,
+ 0x7BF4, 0x7BF5, 0x7BF6, 0x7BF8, 0x7BF9, 0x7BFA, 0x7BFB, 0x7BFD, 0x7BFF,
+ 0x7C01, 0x7C02, 0x7C03, 0x7C04, 0x7C05, 0x7C06, 0x7C08, 0x7C09, 0x7C0A,
+ 0x7C0E, 0x7C10, 0x7C11, 0x7C12, 0x7C13, 0x7C14, 0x7C15, 0x7C17, 0x7C18,
+ 0x7C19, 0x7C1A, 0x7C1B, 0x7C1C, 0x7C1D, 0x7C20, 0x7C22, 0x7C24, 0x7C25,
+ 0x7C28, 0x7C29, 0x7C2C, 0x7C2D, 0x7C2E, 0x7C2F, 0x7C30, 0x7C31, 0x7C32,
+ 0x7C33, 0x7C34, 0x7C35, 0x7C36, 0x7C37, 0x7C39, 0x7C3A, 0x7C3B, 0x7C3C,
+ 0x7C42, 0x7C44, 0x7C45, 0x7C46, 0x7C47, 0x7C48, 0x7C49, 0x7C4A, 0x7C4B,
+ 0x7C4E, 0x7C4F, 0x7C50, 0x7C51, 0x7C52, 0x7C53, 0x7C54, 0x7C55, 0x7C56,
+ 0x7C57, 0x7C58, 0x7C59, 0x7C5A, 0x7C5B, 0x7C5D, 0x7C5E, 0x7C61, 0x7C62,
+ 0x7C63, 0x7C65, 0x7C66, 0x7C67, 0x7C68, 0x7C6B, 0x7C6D, 0x7C6F, 0x7C70,
+ 0x7C71, 0x7C75, 0x7C76, 0x7C77, 0x7C78, 0x7C79, 0x7C7A, 0x7C7E, 0x7C7F,
+ 0x7C80, 0x7C81, 0x7C82, 0x7C83, 0x7C84, 0x7C85, 0x7C86, 0x7C87, 0x7C88,
+ 0x7C8A, 0x7C8B, 0x7C8C, 0x7C8D, 0x7C8E, 0x7C8F, 0x7C90, 0x7C93, 0x7C94,
+ 0x7C96, 0x7C99, 0x7C9A, 0x7C9B, 0x7CA0, 0x7CA1, 0x7CA3, 0x7CA6, 0x7CA7,
+ 0x7CA8, 0x7CA9, 0x7CAB, 0x7CAC, 0x7CAD, 0x7CAF, 0x7CB0, 0x7CB4, 0x7CB5,
+ 0x7CB6, 0x7CB7, 0x7CB8, 0x7CBA, 0x7CBB, 0x7CBF, 0x7CC0, 0x7CC2, 0x7CC3,
+ 0x7CC4, 0x7CC6, 0x7CC9, 0x7CCB, 0x7CCE, 0x7CCF, 0x7CD0, 0x7CD1, 0x7CD2,
+ 0x7CD3, 0x7CD4, 0x7CD8, 0x7CDA, 0x7CDB, 0x7CE1, 0x7CE2, 0x7CE3, 0x7CE4,
+ 0x7CE5, 0x7CE6, 0x7CE9, 0x7CEA, 0x7CEB, 0x7CEC, 0x7CED, 0x7CEE, 0x7CF1,
+ 0x7CF3, 0x7CF5, 0x7CF7, 0x7CFA, 0x7CFC, 0x7CFD, 0x7CFF, 0x7D01, 0x7D03,
+ 0x7D0C, 0x7D0E, 0x7D0F, 0x7D11, 0x7D12, 0x7D16, 0x7D18, 0x7D1D, 0x7D1E,
+ 0x7D1F, 0x7D23, 0x7D24, 0x7D25, 0x7D26, 0x7D28, 0x7D29, 0x7D2A, 0x7D2C,
+ 0x7D2D, 0x7D2E, 0x7D34, 0x7D35, 0x7D36, 0x7D37, 0x7D38, 0x7D3B, 0x7D3D,
+ 0x7D3E, 0x7D41, 0x7D43, 0x7D45, 0x7D47, 0x7D48, 0x7D49, 0x7D4A, 0x7D4B,
+ 0x7D4C, 0x7D4D, 0x7D4F, 0x7D51, 0x7D52, 0x7D53, 0x7D54, 0x7D55, 0x7D56,
+ 0x7D57, 0x7D58, 0x7D59, 0x7D5A, 0x7D5B, 0x7D5C, 0x7D5F, 0x7D60, 0x7D63,
+ 0x7D64, 0x7D65, 0x7D67, 0x7D69, 0x7D6A, 0x7D6B, 0x7D6C, 0x7D6D, 0x7D6F,
+ 0x7D70, 0x7D74, 0x7D75, 0x7D78, 0x7D7A, 0x7D7B, 0x7D7C, 0x7D7D, 0x7D7E,
+ 0x7D7F, 0x7D80, 0x7D82, 0x7D84, 0x7D85, 0x7D87, 0x7D8A, 0x7D8B, 0x7D8C,
+ 0x7D8D, 0x7D8E, 0x7D90, 0x7D91, 0x7D92, 0x7D94, 0x7D95, 0x7D96, 0x7D97,
+ 0x7D98, 0x7D99, 0x7D9A, 0x7D9B, 0x7D9D, 0x7D9F, 0x7DA0, 0x7DA1, 0x7DA4,
+ 0x7DA5, 0x7DA7, 0x7DA8, 0x7DA9, 0x7DAA, 0x7DAF, 0x7DB5, 0x7DB6, 0x7DB7,
+ 0x7DBC, 0x7DC0, 0x7DC1, 0x7DC2, 0x7DC3, 0x7DC5, 0x7DC6, 0x7DC8, 0x7DC9,
+ 0x7DCC, 0x7DCD, 0x7DCE, 0x7DCF, 0x7DD0, 0x7DD3, 0x7DD5, 0x7DD6, 0x7DDA,
+ 0x7DDB, 0x7DDC, 0x7DDF, 0x7DE2, 0x7DE4, 0x7DE5, 0x7DE7, 0x7DEA, 0x7DEB,
+ 0x7DED, 0x7DEE, 0x7DF0, 0x7DF3, 0x7DF5, 0x7DF7, 0x7DF8, 0x7DFA, 0x7DFC,
+ 0x7DFD, 0x7DFE, 0x7DFF, 0x7E00, 0x7E01, 0x7E02, 0x7E03, 0x7E04, 0x7E05,
+ 0x7E06, 0x7E07, 0x7E0C, 0x7E0D, 0x7E0E, 0x7E0F, 0x7E12, 0x7E13, 0x7E14,
+ 0x7E15, 0x7E16, 0x7E17, 0x7E18, 0x7E19, 0x7E1A, 0x7E1C, 0x7E20, 0x7E21,
+ 0x7E22, 0x7E24, 0x7E25, 0x7E26, 0x7E28, 0x7E29, 0x7E2A, 0x7E2C, 0x7E2F,
+ 0x7E30, 0x7E33, 0x7E38, 0x7E3A, 0x7E3C, 0x7E3F, 0x7E40, 0x7E42, 0x7E43,
+ 0x7E44, 0x7E48, 0x7E49, 0x7E4A, 0x7E4B, 0x7E4C, 0x7E4D, 0x7E4E, 0x7E4F,
+ 0x7E50, 0x7E51, 0x7E53, 0x7E56, 0x7E57, 0x7E58, 0x7E59, 0x7E5B, 0x7E5C,
+ 0x7E5D, 0x7E5F, 0x7E60, 0x7E61, 0x7E63, 0x7E64, 0x7E65, 0x7E66, 0x7E67,
+ 0x7E68, 0x7E6C, 0x7E71, 0x7E72, 0x7E74, 0x7E75, 0x7E76, 0x7E77, 0x7E78,
+ 0x7E7A, 0x7E7B, 0x7E7F, 0x7E80, 0x7E81, 0x7E83, 0x7E84, 0x7E85, 0x7E86,
+ 0x7E87, 0x7E89, 0x7E8B, 0x7E8E, 0x7E90, 0x7E91, 0x7E92, 0x7E95, 0x7E97,
+ 0x7E99, 0x7E9A, 0x7E9D, 0x7E9E, 0x7EAE, 0x7EB4, 0x7EBB, 0x7EBC, 0x7ED6,
+ 0x7EE4, 0x7EEC, 0x7EF9, 0x7F0A, 0x7F10, 0x7F1E, 0x7F37, 0x7F39, 0x7F3B,
+ 0x7F3C, 0x7F3D, 0x7F3E, 0x7F3F, 0x7F40, 0x7F41, 0x7F43, 0x7F46, 0x7F47,
+ 0x7F48, 0x7F49, 0x7F4A, 0x7F4B, 0x7F4D, 0x7F4F, 0x7F52, 0x7F53, 0x7F56,
+ 0x7F59, 0x7F5B, 0x7F5C, 0x7F5D, 0x7F5E, 0x7F60, 0x7F63, 0x7F64, 0x7F65,
+ 0x7F66, 0x7F67, 0x7F6B, 0x7F6C, 0x7F6D, 0x7F6F, 0x7F73, 0x7F75, 0x7F76,
+ 0x7F78, 0x7F7A, 0x7F7B, 0x7F7C, 0x7F7D, 0x7F7F, 0x7F80, 0x7F82, 0x7F83,
+ 0x7F84, 0x7F87, 0x7F89, 0x7F8B, 0x7F8D, 0x7F8F, 0x7F90, 0x7F91, 0x7F92,
+ 0x7F93, 0x7F95, 0x7F96, 0x7F97, 0x7F98, 0x7F99, 0x7F9B, 0x7F9C, 0x7FA0,
+ 0x7FA2, 0x7FA3, 0x7FA6, 0x7FA8, 0x7FAA, 0x7FAB, 0x7FAC, 0x7FAD, 0x7FAE,
+ 0x7FB1, 0x7FB3, 0x7FB4, 0x7FB5, 0x7FB6, 0x7FB7, 0x7FBA, 0x7FBB, 0x7FBE,
+ 0x7FC0, 0x7FC2, 0x7FC3, 0x7FC4, 0x7FC6, 0x7FC7, 0x7FC8, 0x7FC9, 0x7FCB,
+ 0x7FCD, 0x7FCF, 0x7FD0, 0x7FD1, 0x7FD3, 0x7FD6, 0x7FD7, 0x7FD9, 0x7FDA,
+ 0x7FDB, 0x7FDC, 0x7FDD, 0x7FDE, 0x7FE2, 0x7FE3, 0x7FE4, 0x7FE7, 0x7FE8,
+ 0x7FEA, 0x7FEB, 0x7FEC, 0x7FED, 0x7FEF, 0x7FF2, 0x7FF4, 0x7FF5, 0x7FF6,
+ 0x7FF7, 0x7FF8, 0x7FFA, 0x7FFD, 0x7FFE, 0x7FFF, 0x8002, 0x8007, 0x8008,
+ 0x8009, 0x800A, 0x800E, 0x800F, 0x8011, 0x8013, 0x801A, 0x801B, 0x801D,
+ 0x801E, 0x801F, 0x8021, 0x8023, 0x8024, 0x802B, 0x802D, 0x802F, 0x8030,
+ 0x8032, 0x8034, 0x8039, 0x803A, 0x803C, 0x803E, 0x8040, 0x8041, 0x8044,
+ 0x8045, 0x8047, 0x8048, 0x8049, 0x804E, 0x804F, 0x8050, 0x8051, 0x8053,
+ 0x8055, 0x8057, 0x8059, 0x805B, 0x805C, 0x805D, 0x805F, 0x8060, 0x8061,
+ 0x8062, 0x8063, 0x8064, 0x8065, 0x8066, 0x8067, 0x8068, 0x806B, 0x806C,
+ 0x806D, 0x806E, 0x8074, 0x8078, 0x807A, 0x807B, 0x807C, 0x8081, 0x8082,
+ 0x8088, 0x808A, 0x808D, 0x808E, 0x808F, 0x8090, 0x8091, 0x8092, 0x8094,
+ 0x8095, 0x8097, 0x8099, 0x809E, 0x80A3, 0x80A6, 0x80A7, 0x80A8, 0x80AC,
+ 0x80B0, 0x80B3, 0x80B5, 0x80B6, 0x80B8, 0x80B9, 0x80BB, 0x80C5, 0x80C7,
+ 0x80C8, 0x80C9, 0x80CA, 0x80CB, 0x80CF, 0x80D0, 0x80D1, 0x80D2, 0x80D3,
+ 0x80D4, 0x80D5, 0x80D8, 0x80DF, 0x80E0, 0x80E2, 0x80E3, 0x80E6, 0x80EE,
+ 0x80F5, 0x80F7, 0x80F9, 0x80FB, 0x80FE, 0x80FF, 0x8100, 0x8101, 0x8103,
+ 0x8104, 0x8107, 0x8108, 0x810B, 0x810C, 0x8115, 0x8117, 0x8119, 0x811C,
+ 0x811D, 0x811F, 0x8120, 0x8121, 0x8122, 0x8123, 0x8124, 0x8125, 0x8126,
+ 0x8127, 0x8128, 0x8129, 0x812A, 0x812B, 0x812D, 0x812E, 0x8130, 0x8133,
+ 0x8134, 0x8135, 0x8137, 0x813A, 0x813B, 0x813C, 0x813D, 0x813F, 0x8140,
+ 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, 0x8147, 0x8149, 0x814D, 0x814F,
+ 0x8152, 0x8157, 0x8158, 0x815B, 0x815C, 0x815D, 0x815E, 0x815F, 0x8162,
+ 0x8163, 0x8164, 0x8168, 0x816A, 0x816C, 0x816F, 0x8172, 0x8173, 0x8175,
+ 0x8176, 0x8177, 0x8181, 0x8183, 0x8184, 0x8185, 0x8186, 0x8187, 0x8189,
+ 0x818B, 0x818C, 0x818D, 0x818E, 0x8190, 0x8192, 0x8193, 0x8194, 0x8195,
+ 0x8196, 0x8197, 0x8199, 0x819E, 0x819F, 0x81A1, 0x81A2, 0x81A4, 0x81A5,
+ 0x81A7, 0x81AB, 0x81AC, 0x81AD, 0x81AE, 0x81AF, 0x81B0, 0x81B1, 0x81B2,
+ 0x81B4, 0x81B5, 0x81B6, 0x81B7, 0x81B8, 0x81B9, 0x81BC, 0x81C4, 0x81C5,
+ 0x81C7, 0x81C8, 0x81CB, 0x81CE, 0x81D0, 0x81D1, 0x81D2, 0x81D3, 0x81D4,
+ 0x81D5, 0x81D6, 0x81D7, 0x81D9, 0x81DB, 0x81DC, 0x81DD, 0x81DE, 0x81E1,
+ 0x81E2, 0x81E4, 0x81E5, 0x81E6, 0x81E9, 0x81EB, 0x81EE, 0x81EF, 0x81F0,
+ 0x81F1, 0x81F2, 0x81F5, 0x81F6, 0x81F7, 0x81F8, 0x81F9, 0x81FD, 0x81FF,
+ 0x8203, 0x820B, 0x820E, 0x820F, 0x8211, 0x8213, 0x8215, 0x8216, 0x8217,
+ 0x8218, 0x8219, 0x821A, 0x821D, 0x8220, 0x8224, 0x8225, 0x8226, 0x8227,
+ 0x8229, 0x822E, 0x8232, 0x823A, 0x823C, 0x823D, 0x823F, 0x8240, 0x8241,
+ 0x8242, 0x8243, 0x8245, 0x8246, 0x8248, 0x824A, 0x824C, 0x824D, 0x824E,
+ 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255, 0x8256, 0x8257, 0x825B,
+ 0x825C, 0x825D, 0x825E, 0x8260, 0x8261, 0x8262, 0x8263, 0x8265, 0x8267,
+ 0x8269, 0x826A, 0x826C, 0x826D, 0x8275, 0x8276, 0x8278, 0x827B, 0x827C,
+ 0x8280, 0x8281, 0x8283, 0x8285, 0x8286, 0x8287, 0x8289, 0x828C, 0x8290,
+ 0x8293, 0x8294, 0x8295, 0x8296, 0x829A, 0x829B, 0x829E, 0x82A0, 0x82A2,
+ 0x82A3, 0x82A7, 0x82B2, 0x82B5, 0x82B6, 0x82BA, 0x82BC, 0x82BF, 0x82C0,
+ 0x82C2, 0x82C3, 0x82C5, 0x82C6, 0x82C9, 0x82D0, 0x82D6, 0x82D9, 0x82DA,
+ 0x82DD, 0x82E2, 0x82E8, 0x82E9, 0x82EA, 0x82EC, 0x82ED, 0x82EE, 0x82F0,
+ 0x82F2, 0x82F3, 0x82F5, 0x82F6, 0x82F8, 0x82FA, 0x82FC, 0x82FD, 0x82FE,
+ 0x82FF, 0x8300, 0x830A, 0x830B, 0x830D, 0x8310, 0x8312, 0x8313, 0x8316,
+ 0x8318, 0x8319, 0x831D, 0x831E, 0x831F, 0x8320, 0x8321, 0x8322, 0x8323,
+ 0x8324, 0x8325, 0x8326, 0x8329, 0x832A, 0x832E, 0x8330, 0x8332, 0x8337,
+ 0x833B, 0x833D, 0x833E, 0x833F, 0x8341, 0x8342, 0x8344, 0x8345, 0x8348,
+ 0x834A, 0x834B, 0x834C, 0x834D, 0x834E, 0x8353, 0x8355, 0x8356, 0x8357,
+ 0x8358, 0x8359, 0x835D, 0x8362, 0x8370, 0x8371, 0x8372, 0x8373, 0x8374,
+ 0x8375, 0x8376, 0x8379, 0x837A, 0x837E, 0x837F, 0x8380, 0x8381, 0x8382,
+ 0x8383, 0x8384, 0x8387, 0x8388, 0x838B, 0x838C, 0x838D, 0x838F, 0x8390,
+ 0x8391, 0x8394, 0x8395, 0x8397, 0x8399, 0x839A, 0x839D, 0x839F, 0x83A1,
+ 0x83A3, 0x83A4, 0x83A5, 0x83A6, 0x83AC, 0x83AD, 0x83AE, 0x83AF, 0x83B5,
+ 0x83BB, 0x83BE, 0x83BF, 0x83C2, 0x83C3, 0x83C4, 0x83C6, 0x83C8, 0x83C9,
+ 0x83CB, 0x83CD, 0x83CE, 0x83D0, 0x83D1, 0x83D2, 0x83D3, 0x83D5, 0x83D7,
+ 0x83D9, 0x83DA, 0x83DB, 0x83DE, 0x83E2, 0x83E3, 0x83E4, 0x83E6, 0x83E7,
+ 0x83E8, 0x83EB, 0x83EC, 0x83ED, 0x83EE, 0x83F3, 0x83F4, 0x83F5, 0x83F6,
+ 0x83F7, 0x83FA, 0x83FB, 0x83FC, 0x83FE, 0x83FF, 0x8400, 0x8402, 0x8405,
+ 0x8408, 0x8409, 0x8410, 0x8412, 0x8413, 0x8414, 0x8415, 0x8416, 0x8417,
+ 0x8419, 0x841A, 0x841B, 0x841E, 0x841F, 0x8420, 0x8421, 0x8422, 0x8423,
+ 0x8429, 0x842A, 0x842B, 0x842D, 0x842E, 0x842F, 0x8430, 0x8432, 0x8433,
+ 0x8434, 0x8436, 0x8437, 0x8439, 0x843A, 0x843B, 0x843E, 0x843F, 0x8440,
+ 0x8441, 0x8442, 0x8443, 0x8444, 0x8445, 0x8447, 0x8448, 0x844A, 0x844B,
+ 0x844C, 0x844D, 0x844E, 0x844F, 0x8450, 0x8453, 0x8454, 0x8455, 0x8456,
+ 0x8458, 0x845D, 0x845E, 0x845F, 0x8460, 0x8462, 0x8465, 0x8467, 0x8468,
+ 0x846A, 0x846E, 0x8470, 0x8472, 0x8474, 0x8479, 0x847B, 0x847C, 0x847D,
+ 0x847E, 0x847F, 0x8480, 0x8481, 0x8483, 0x8484, 0x8485, 0x8486, 0x848A,
+ 0x848D, 0x848F, 0x8490, 0x8491, 0x8492, 0x8495, 0x8496, 0x8498, 0x849A,
+ 0x849B, 0x849D, 0x849E, 0x849F, 0x84A0, 0x84A2, 0x84A3, 0x84A4, 0x84A5,
+ 0x84A6, 0x84A7, 0x84A8, 0x84A9, 0x84AA, 0x84AB, 0x84AC, 0x84AD, 0x84AE,
+ 0x84B0, 0x84B1, 0x84B3, 0x84B5, 0x84B6, 0x84B7, 0x84BB, 0x84BE, 0x84C2,
+ 0x84C3, 0x84C5, 0x84C6, 0x84C7, 0x84C8, 0x84CC, 0x84CE, 0x84CF, 0x84D2,
+ 0x84D4, 0x84D5, 0x84D7, 0x84D8, 0x84D9, 0x84DA, 0x84DB, 0x84DC, 0x84DE,
+ 0x84E1, 0x84E2, 0x84E4, 0x84E7, 0x84E8, 0x84E9, 0x84EA, 0x84EB, 0x84ED,
+ 0x84F1, 0x84F2, 0x84F3, 0x84F4, 0x84F5, 0x84F6, 0x84F7, 0x84F8, 0x84F9,
+ 0x84FA, 0x84FB, 0x84FE, 0x8500, 0x8501, 0x8502, 0x8503, 0x8504, 0x8505,
+ 0x8506, 0x8507, 0x8508, 0x8509, 0x850A, 0x850B, 0x850D, 0x850E, 0x850F,
+ 0x8510, 0x8512, 0x8515, 0x8516, 0x8518, 0x8519, 0x851B, 0x851C, 0x851D,
+ 0x8520, 0x8522, 0x8524, 0x8525, 0x8527, 0x8528, 0x8529, 0x852A, 0x852E,
+ 0x852F, 0x8530, 0x8531, 0x8532, 0x8533, 0x8534, 0x8535, 0x8536, 0x853E,
+ 0x853F, 0x8540, 0x8542, 0x8544, 0x8545, 0x8547, 0x854B, 0x854C, 0x854D,
+ 0x854F, 0x8550, 0x8551, 0x8554, 0x8557, 0x855A, 0x855B, 0x855C, 0x855D,
+ 0x855F, 0x8560, 0x8561, 0x8563, 0x8565, 0x8566, 0x8567, 0x856B, 0x856C,
+ 0x856E, 0x856F, 0x8570, 0x8571, 0x8573, 0x8575, 0x8576, 0x8578, 0x857C,
+ 0x857D, 0x857F, 0x8580, 0x8581, 0x8582, 0x8583, 0x8586, 0x8589, 0x858B,
+ 0x858D, 0x858E, 0x8590, 0x8592, 0x8593, 0x8595, 0x8596, 0x8597, 0x8598,
+ 0x8599, 0x859A, 0x859D, 0x859E, 0x85A0, 0x85A1, 0x85A2, 0x85A3, 0x85A5,
+ 0x85A7, 0x85AB, 0x85AC, 0x85AD, 0x85B1, 0x85B2, 0x85B3, 0x85B4, 0x85B5,
+ 0x85B6, 0x85B8, 0x85BB, 0x85BC, 0x85BD, 0x85BE, 0x85BF, 0x85C0, 0x85C2,
+ 0x85C3, 0x85C4, 0x85C5, 0x85C6, 0x85C7, 0x85C8, 0x85CA, 0x85CB, 0x85CC,
+ 0x85D1, 0x85D2, 0x85D4, 0x85D6, 0x85D7, 0x85D8, 0x85D9, 0x85DA, 0x85DB,
+ 0x85DE, 0x85DF, 0x85E0, 0x85E1, 0x85E2, 0x85E3, 0x85E6, 0x85E7, 0x85E8,
+ 0x85EB, 0x85EC, 0x85ED, 0x85EE, 0x85EF, 0x85F0, 0x85F1, 0x85F2, 0x85F3,
+ 0x85F5, 0x85F7, 0x85F8, 0x85FC, 0x85FD, 0x85FE, 0x8600, 0x8601, 0x8602,
+ 0x8603, 0x8608, 0x8609, 0x860A, 0x860C, 0x860D, 0x860E, 0x860F, 0x8610,
+ 0x8612, 0x8613, 0x8614, 0x8615, 0x8617, 0x8618, 0x8619, 0x861B, 0x861C,
+ 0x861D, 0x861F, 0x8620, 0x8621, 0x8623, 0x8624, 0x8625, 0x8626, 0x8628,
+ 0x862A, 0x862B, 0x862C, 0x862E, 0x862F, 0x8630, 0x8631, 0x8632, 0x8633,
+ 0x8634, 0x8635, 0x8636, 0x8637, 0x8639, 0x863B, 0x863D, 0x863E, 0x8640,
+ 0x8641, 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, 0x8648, 0x8649,
+ 0x864A, 0x864B, 0x864C, 0x8652, 0x8653, 0x8656, 0x8657, 0x8658, 0x8659,
+ 0x865B, 0x865D, 0x8660, 0x8661, 0x8663, 0x8664, 0x8665, 0x8666, 0x8668,
+ 0x8669, 0x866A, 0x866D, 0x866F, 0x8670, 0x8672, 0x8673, 0x8674, 0x8675,
+ 0x8676, 0x8677, 0x8678, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, 0x8688,
+ 0x8689, 0x868E, 0x868F, 0x8690, 0x8691, 0x8692, 0x8694, 0x8696, 0x8697,
+ 0x8698, 0x8699, 0x869A, 0x869B, 0x869E, 0x869F, 0x86A0, 0x86A1, 0x86A2,
+ 0x86A5, 0x86A6, 0x86AB, 0x86AD, 0x86AE, 0x86B2, 0x86B3, 0x86B7, 0x86B8,
+ 0x86B9, 0x86BB, 0x86BC, 0x86BD, 0x86BE, 0x86BF, 0x86C1, 0x86C2, 0x86C3,
+ 0x86C5, 0x86C8, 0x86CC, 0x86CD, 0x86D2, 0x86D3, 0x86D5, 0x86D6, 0x86D7,
+ 0x86DA, 0x86DC, 0x86DD, 0x86E0, 0x86E1, 0x86E2, 0x86E3, 0x86E5, 0x86E6,
+ 0x86E7, 0x86E8, 0x86EA, 0x86EB, 0x86EC, 0x86EF, 0x86F5, 0x86F6, 0x86F7,
+ 0x86FB, 0x86FC, 0x86FD, 0x86FF, 0x8701, 0x8704, 0x8705, 0x870B, 0x870C,
+ 0x870E, 0x870F, 0x8710, 0x8711, 0x8714, 0x8716, 0x8719, 0x871B, 0x871D,
+ 0x871F, 0x8720, 0x8724, 0x8726, 0x8727, 0x8728, 0x872A, 0x872B, 0x872C,
+ 0x872D, 0x872F, 0x8730, 0x8732, 0x8733, 0x8735, 0x8736, 0x8738, 0x8739,
+ 0x873A, 0x873C, 0x873D, 0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745,
+ 0x8746, 0x874A, 0x874B, 0x874D, 0x874F, 0x8750, 0x8751, 0x8752, 0x8754,
+ 0x8756, 0x8758, 0x875A, 0x875B, 0x875C, 0x875D, 0x875E, 0x875F, 0x8761,
+ 0x8762, 0x8767, 0x8768, 0x8769, 0x876A, 0x876B, 0x876C, 0x876D, 0x876F,
+ 0x8771, 0x8772, 0x8773, 0x8775, 0x8777, 0x8779, 0x877A, 0x877F, 0x8780,
+ 0x8781, 0x8786, 0x8787, 0x8789, 0x878A, 0x878C, 0x878E, 0x878F, 0x8790,
+ 0x8791, 0x8792, 0x8794, 0x8795, 0x8796, 0x8798, 0x8799, 0x879A, 0x879B,
+ 0x879C, 0x879D, 0x87A0, 0x87A1, 0x87A3, 0x87A4, 0x87A5, 0x87A6, 0x87A7,
+ 0x87A9, 0x87AA, 0x87AE, 0x87B0, 0x87B1, 0x87B2, 0x87B4, 0x87B6, 0x87B7,
+ 0x87B8, 0x87B9, 0x87BC, 0x87BE, 0x87BF, 0x87C1, 0x87C2, 0x87C3, 0x87C5,
+ 0x87C7, 0x87C9, 0x87CC, 0x87CD, 0x87CF, 0x87D0, 0x87D4, 0x87D5, 0x87D6,
+ 0x87D7, 0x87D8, 0x87D9, 0x87DA, 0x87DC, 0x87DD, 0x87DE, 0x87DF, 0x87E1,
+ 0x87E2, 0x87E4, 0x87E6, 0x87E7, 0x87E8, 0x87E9, 0x87EB, 0x87ED, 0x87F0,
+ 0x87F1, 0x87F3, 0x87F4, 0x87F5, 0x87F7, 0x87F8, 0x87FA, 0x87FC, 0x87FD,
+ 0x87FF, 0x8800, 0x8801, 0x8802, 0x8804, 0x8807, 0x8808, 0x8809, 0x880B,
+ 0x880C, 0x880D, 0x880E, 0x880F, 0x8812, 0x8814, 0x8817, 0x8818, 0x8819,
+ 0x881A, 0x881C, 0x881D, 0x881E, 0x8820, 0x8824, 0x8825, 0x8826, 0x8827,
+ 0x8828, 0x8829, 0x882A, 0x882B, 0x882C, 0x882D, 0x882E, 0x882F, 0x8830,
+ 0x8833, 0x8834, 0x8835, 0x8837, 0x8838, 0x883A, 0x883D, 0x883E, 0x883F,
+ 0x8841, 0x8842, 0x8843, 0x8847, 0x8848, 0x8849, 0x884B, 0x884E, 0x884F,
+ 0x8850, 0x8851, 0x8852, 0x8855, 0x8856, 0x8858, 0x885A, 0x885C, 0x885E,
+ 0x885F, 0x8860, 0x8866, 0x8867, 0x886A, 0x886D, 0x886F, 0x8871, 0x8873,
+ 0x8874, 0x8875, 0x8876, 0x8878, 0x887A, 0x887B, 0x887C, 0x8880, 0x8883,
+ 0x8886, 0x8887, 0x8889, 0x888A, 0x888C, 0x888E, 0x888F, 0x8890, 0x8891,
+ 0x8893, 0x8894, 0x8895, 0x8897, 0x8898, 0x8899, 0x889A, 0x889B, 0x889D,
+ 0x889E, 0x889F, 0x88A0, 0x88A1, 0x88A3, 0x88A5, 0x88A6, 0x88A7, 0x88A8,
+ 0x88A9, 0x88AA, 0x88AC, 0x88AE, 0x88AF, 0x88B0, 0x88B2, 0x88B3, 0x88B4,
+ 0x88B5, 0x88B6, 0x88B8, 0x88B9, 0x88BA, 0x88BB, 0x88BD, 0x88BE, 0x88BF,
+ 0x88C0, 0x88C3, 0x88C4, 0x88C7, 0x88C8, 0x88CB, 0x88CC, 0x88CD, 0x88D0,
+ 0x88D1, 0x88D3, 0x88D6, 0x88D7, 0x88DA, 0x88DB, 0x88DE, 0x88E0, 0x88E1,
+ 0x88E6, 0x88E7, 0x88E9, 0x88EA, 0x88EB, 0x88EC, 0x88ED, 0x88EE, 0x88EF,
+ 0x88F2, 0x88F5, 0x88F6, 0x88F7, 0x88FA, 0x88FB, 0x88FF, 0x8900, 0x8901,
+ 0x8903, 0x8904, 0x8905, 0x8906, 0x8908, 0x8909, 0x890B, 0x890C, 0x890D,
+ 0x890E, 0x890F, 0x8911, 0x8914, 0x8915, 0x8916, 0x8917, 0x8918, 0x891C,
+ 0x891D, 0x891E, 0x891F, 0x8920, 0x8922, 0x8923, 0x8924, 0x8926, 0x8927,
+ 0x8928, 0x8929, 0x892C, 0x892D, 0x892E, 0x892F, 0x8931, 0x8935, 0x8937,
+ 0x8939, 0x893A, 0x893C, 0x893D, 0x893E, 0x893F, 0x8940, 0x8942, 0x8943,
+ 0x8945, 0x8946, 0x8948, 0x8949, 0x894A, 0x894B, 0x894C, 0x894D, 0x894E,
+ 0x894F, 0x8950, 0x8951, 0x8952, 0x8953, 0x8954, 0x8955, 0x8957, 0x8958,
+ 0x8959, 0x895A, 0x895B, 0x895C, 0x8961, 0x8962, 0x8963, 0x8965, 0x8967,
+ 0x8968, 0x8969, 0x896B, 0x896D, 0x896E, 0x8970, 0x8971, 0x8973, 0x8974,
+ 0x8975, 0x8976, 0x8977, 0x8978, 0x8979, 0x897A, 0x897C, 0x897D, 0x897E,
+ 0x8980, 0x8982, 0x8984, 0x8985, 0x8987, 0x8988, 0x8989, 0x898A, 0x898C,
+ 0x898D, 0x898E, 0x8990, 0x8991, 0x8992, 0x8994, 0x8995, 0x8997, 0x8999,
+ 0x899A, 0x899B, 0x899C, 0x899D, 0x899E, 0x899F, 0x89A0, 0x89A2, 0x89A3,
+ 0x89A4, 0x89A5, 0x89A7, 0x89A8, 0x89A9, 0x89AB, 0x89AD, 0x89AE, 0x89B0,
+ 0x89B1, 0x89B3, 0x89B4, 0x89B5, 0x89B6, 0x89B8, 0x89B9, 0x89BB, 0x89BC,
+ 0x89BE, 0x89C3, 0x89CD, 0x89D3, 0x89D4, 0x89D5, 0x89D7, 0x89D8, 0x89D9,
+ 0x89DB, 0x89DD, 0x89DF, 0x89E0, 0x89E1, 0x89E2, 0x89E4, 0x89E7, 0x89E8,
+ 0x89E9, 0x89EA, 0x89EC, 0x89ED, 0x89EE, 0x89F0, 0x89F1, 0x89F2, 0x89F5,
+ 0x89F7, 0x89F9, 0x89FA, 0x89FB, 0x89FC, 0x89FD, 0x89FE, 0x89FF, 0x8A04,
+ 0x8A05, 0x8A06, 0x8A09, 0x8A0B, 0x8A0D, 0x8A0F, 0x8A11, 0x8A12, 0x8A14,
+ 0x8A17, 0x8A19, 0x8A1A, 0x8A1C, 0x8A1E, 0x8A20, 0x8A21, 0x8A22, 0x8A24,
+ 0x8A26, 0x8A27, 0x8A28, 0x8A29, 0x8A2B, 0x8A2C, 0x8A2E, 0x8A2F, 0x8A30,
+ 0x8A32, 0x8A33, 0x8A35, 0x8A37, 0x8A38, 0x8A39, 0x8A3B, 0x8A3C, 0x8A3D,
+ 0x8A3F, 0x8A40, 0x8A42, 0x8A43, 0x8A44, 0x8A45, 0x8A47, 0x8A49, 0x8A4A,
+ 0x8A4B, 0x8A4C, 0x8A4D, 0x8A4F, 0x8A51, 0x8A53, 0x8A56, 0x8A57, 0x8A59,
+ 0x8A5A, 0x8A5C, 0x8A5D, 0x8A5F, 0x8A60, 0x8A64, 0x8A65, 0x8A67, 0x8A68,
+ 0x8A6A, 0x8A6F, 0x8A74, 0x8A76, 0x8A77, 0x8A78, 0x8A7A, 0x8A7B, 0x8A7D,
+ 0x8A7E, 0x8A80, 0x8A81, 0x8A82, 0x8A83, 0x8A88, 0x8A8B, 0x8A8C, 0x8A8E,
+ 0x8A8F, 0x8A90, 0x8A94, 0x8A96, 0x8A97, 0x8A99, 0x8A9B, 0x8A9C, 0x8A9D,
+ 0x8A9F, 0x8AA2, 0x8AA7, 0x8AA9, 0x8AAA, 0x8AAB, 0x8AAD, 0x8AAE, 0x8AAF,
+ 0x8AB1, 0x8AB3, 0x8AB4, 0x8AB5, 0x8AB7, 0x8AB8, 0x8ABA, 0x8ABB, 0x8ABD,
+ 0x8ABE, 0x8AC0, 0x8AC1, 0x8AC3, 0x8AC5, 0x8AC6, 0x8AC8, 0x8ACA, 0x8ACC,
+ 0x8ACE, 0x8AD0, 0x8AD3, 0x8AD4, 0x8AD5, 0x8AD8, 0x8AD9, 0x8ADA, 0x8ADD,
+ 0x8ADF, 0x8AE0, 0x8AE1, 0x8AE3, 0x8AE5, 0x8AE8, 0x8AE9, 0x8AEA, 0x8AEC,
+ 0x8AEF, 0x8AF0, 0x8AF2, 0x8AF4, 0x8AF5, 0x8AF9, 0x8AFB, 0x8AFD, 0x8AFF,
+ 0x8B03, 0x8B06, 0x8B08, 0x8B09, 0x8B0B, 0x8B0C, 0x8B0D, 0x8B0F, 0x8B11,
+ 0x8B12, 0x8B13, 0x8B15, 0x8B18, 0x8B1C, 0x8B1E, 0x8B1F, 0x8B20, 0x8B22,
+ 0x8B23, 0x8B24, 0x8B25, 0x8B27, 0x8B29, 0x8B2A, 0x8B2E, 0x8B2F, 0x8B30,
+ 0x8B31, 0x8B32, 0x8B34, 0x8B35, 0x8B36, 0x8B37, 0x8B38, 0x8B3A, 0x8B3B,
+ 0x8B3C, 0x8B3D, 0x8B3F, 0x8B40, 0x8B41, 0x8B42, 0x8B43, 0x8B44, 0x8B45,
+ 0x8B46, 0x8B47, 0x8B48, 0x8B4A, 0x8B4B, 0x8B4C, 0x8B4D, 0x8B50, 0x8B51,
+ 0x8B52, 0x8B53, 0x8B54, 0x8B55, 0x8B57, 0x8B5B, 0x8B5D, 0x8B5E, 0x8B5F,
+ 0x8B60, 0x8B61, 0x8B62, 0x8B63, 0x8B64, 0x8B65, 0x8B67, 0x8B68, 0x8B69,
+ 0x8B6A, 0x8B6D, 0x8B6E, 0x8B71, 0x8B72, 0x8B73, 0x8B75, 0x8B76, 0x8B78,
+ 0x8B79, 0x8B7A, 0x8B7B, 0x8B7C, 0x8B7E, 0x8B7F, 0x8B81, 0x8B82, 0x8B83,
+ 0x8B84, 0x8B85, 0x8B86, 0x8B87, 0x8B88, 0x8B89, 0x8B8B, 0x8B8C, 0x8B8D,
+ 0x8B8F, 0x8B90, 0x8B91, 0x8B94, 0x8B97, 0x8B98, 0x8B99, 0x8B9A, 0x8B9B,
+ 0x8B9D, 0x8B9F, 0x8BAC, 0x8BB1, 0x8BBB, 0x8BC7, 0x8BD0, 0x8BEA, 0x8C09,
+ 0x8C1E, 0x8C38, 0x8C39, 0x8C3A, 0x8C3B, 0x8C3C, 0x8C3D, 0x8C3E, 0x8C3F,
+ 0x8C40, 0x8C42, 0x8C43, 0x8C44, 0x8C45, 0x8C4A, 0x8C4B, 0x8C4D, 0x8C4E,
+ 0x8C4F, 0x8C51, 0x8C52, 0x8C53, 0x8C54, 0x8C56, 0x8C57, 0x8C58, 0x8C59,
+ 0x8C5B, 0x8C5C, 0x8C5D, 0x8C5E, 0x8C5F, 0x8C60, 0x8C63, 0x8C64, 0x8C65,
+ 0x8C66, 0x8C67, 0x8C68, 0x8C69, 0x8C6C, 0x8C6D, 0x8C6E, 0x8C6F, 0x8C70,
+ 0x8C71, 0x8C72, 0x8C74, 0x8C75, 0x8C76, 0x8C77, 0x8C7B, 0x8C7C, 0x8C7D,
+ 0x8C7E, 0x8C7F, 0x8C80, 0x8C81, 0x8C83, 0x8C84, 0x8C86, 0x8C87, 0x8C88,
+ 0x8C8B, 0x8C8D, 0x8C8E, 0x8C8F, 0x8C90, 0x8C91, 0x8C92, 0x8C93, 0x8C95,
+ 0x8C96, 0x8C97, 0x8C99, 0x8C9A, 0x8C9B, 0x8C9C, 0x8C9F, 0x8CA3, 0x8CA4,
+ 0x8CA5, 0x8CA6, 0x8CAD, 0x8CAE, 0x8CB1, 0x8CB5, 0x8CB9, 0x8CBE, 0x8CC6,
+ 0x8CC9, 0x8CCB, 0x8CCC, 0x8CCD, 0x8CCE, 0x8CCF, 0x8CD0, 0x8CD4, 0x8CD6,
+ 0x8CD7, 0x8CD8, 0x8CD9, 0x8CDB, 0x8CDD, 0x8CDF, 0x8CE5, 0x8CE8, 0x8CE9,
+ 0x8CEE, 0x8CEF, 0x8CF0, 0x8CF1, 0x8CF2, 0x8CF3, 0x8CF5, 0x8CF6, 0x8CF7,
+ 0x8CF8, 0x8CF9, 0x8CFF, 0x8D00, 0x8D01, 0x8D02, 0x8D03, 0x8D06, 0x8D07,
+ 0x8D09, 0x8D0C, 0x8D0E, 0x8D11, 0x8D12, 0x8D13, 0x8D14, 0x8D15, 0x8D17,
+ 0x8D18, 0x8D19, 0x8D1A, 0x8D20, 0x8D51, 0x8D52, 0x8D57, 0x8D5F, 0x8D65,
+ 0x8D68, 0x8D69, 0x8D6A, 0x8D6C, 0x8D6E, 0x8D6F, 0x8D71, 0x8D72, 0x8D78,
+ 0x8D79, 0x8D7A, 0x8D7B, 0x8D7C, 0x8D7D, 0x8D7E, 0x8D7F, 0x8D80, 0x8D82,
+ 0x8D83, 0x8D86, 0x8D87, 0x8D88, 0x8D89, 0x8D8C, 0x8D8D, 0x8D8E, 0x8D8F,
+ 0x8D90, 0x8D92, 0x8D93, 0x8D96, 0x8D97, 0x8D98, 0x8D9A, 0x8D9B, 0x8D9C,
+ 0x8D9D, 0x8D9E, 0x8DA0, 0x8DA1, 0x8DA2, 0x8DA4, 0x8DA5, 0x8DA6, 0x8DA7,
+ 0x8DA9, 0x8DAA, 0x8DAB, 0x8DAC, 0x8DAD, 0x8DAE, 0x8DAF, 0x8DB0, 0x8DB6,
+ 0x8DB7, 0x8DB9, 0x8DBB, 0x8DBD, 0x8DC0, 0x8DC1, 0x8DC2, 0x8DC5, 0x8DC7,
+ 0x8DC8, 0x8DC9, 0x8DCA, 0x8DCD, 0x8DD0, 0x8DD2, 0x8DD3, 0x8DD4, 0x8DD5,
+ 0x8DD8, 0x8DD9, 0x8DDC, 0x8DE0, 0x8DE1, 0x8DE2, 0x8DE5, 0x8DE6, 0x8DE7,
+ 0x8DE9, 0x8DED, 0x8DEE, 0x8DF0, 0x8DF1, 0x8DF2, 0x8DF4, 0x8DF6, 0x8DFC,
+ 0x8DFE, 0x8DFF, 0x8E00, 0x8E01, 0x8E02, 0x8E03, 0x8E04, 0x8E06, 0x8E07,
+ 0x8E08, 0x8E0B, 0x8E0D, 0x8E0E, 0x8E11, 0x8E12, 0x8E13, 0x8E15, 0x8E16,
+ 0x8E17, 0x8E18, 0x8E19, 0x8E1A, 0x8E1B, 0x8E1C, 0x8E20, 0x8E21, 0x8E24,
+ 0x8E25, 0x8E26, 0x8E27, 0x8E28, 0x8E2B, 0x8E2D, 0x8E30, 0x8E32, 0x8E33,
+ 0x8E36, 0x8E37, 0x8E38, 0x8E3B, 0x8E3C, 0x8E3E, 0x8E3F, 0x8E43, 0x8E45,
+ 0x8E46, 0x8E4D, 0x8E4E, 0x8E4F, 0x8E50, 0x8E53, 0x8E54, 0x8E56, 0x8E57,
+ 0x8E58, 0x8E5A, 0x8E5B, 0x8E5C, 0x8E5D, 0x8E5E, 0x8E5F, 0x8E60, 0x8E61,
+ 0x8E62, 0x8E64, 0x8E65, 0x8E67, 0x8E68, 0x8E6A, 0x8E6B, 0x8E6E, 0x8E71,
+ 0x8E73, 0x8E75, 0x8E77, 0x8E78, 0x8E79, 0x8E7B, 0x8E7D, 0x8E7E, 0x8E80,
+ 0x8E82, 0x8E83, 0x8E84, 0x8E86, 0x8E88, 0x8E8C, 0x8E8E, 0x8E95, 0x8E96,
+ 0x8E97, 0x8E98, 0x8E99, 0x8E9B, 0x8E9D, 0x8E9F, 0x8EA0, 0x8EA2, 0x8EA3,
+ 0x8EA4, 0x8EA7, 0x8EA8, 0x8EA9, 0x8EAD, 0x8EAE, 0x8EB0, 0x8EB1, 0x8EB3,
+ 0x8EB4, 0x8EB5, 0x8EB6, 0x8EB7, 0x8EB8, 0x8EB9, 0x8EBB, 0x8EBC, 0x8EBD,
+ 0x8EBE, 0x8EBF, 0x8EC1, 0x8EC2, 0x8EC3, 0x8EC4, 0x8EC5, 0x8EC6, 0x8EC7,
+ 0x8EC8, 0x8EC9, 0x8ECF, 0x8ED0, 0x8ED1, 0x8ED3, 0x8ED5, 0x8ED6, 0x8ED7,
+ 0x8ED8, 0x8ED9, 0x8EDA, 0x8EDC, 0x8EDD, 0x8EDE, 0x8EE0, 0x8EE1, 0x8EE2,
+ 0x8EE3, 0x8EE5, 0x8EE6, 0x8EE7, 0x8EE8, 0x8EE9, 0x8EEA, 0x8EEC, 0x8EED,
+ 0x8EEE, 0x8EEF, 0x8EF0, 0x8EF1, 0x8EF3, 0x8EF4, 0x8EF5, 0x8EF6, 0x8EF7,
+ 0x8EFD, 0x8EFF, 0x8F00, 0x8F01, 0x8F02, 0x8F04, 0x8F06, 0x8F08, 0x8F0B,
+ 0x8F0C, 0x8F0D, 0x8F0E, 0x8F0F, 0x8F10, 0x8F11, 0x8F13, 0x8F16, 0x8F17,
+ 0x8F18, 0x8F19, 0x8F1A, 0x8F20, 0x8F21, 0x8F22, 0x8F23, 0x8F24, 0x8F27,
+ 0x8F28, 0x8F2B, 0x8F2C, 0x8F2D, 0x8F2E, 0x8F30, 0x8F31, 0x8F32, 0x8F34,
+ 0x8F35, 0x8F36, 0x8F37, 0x8F39, 0x8F3A, 0x8F3C, 0x8F3D, 0x8F40, 0x8F41,
+ 0x8F43, 0x8F47, 0x8F48, 0x8F4A, 0x8F4B, 0x8F4C, 0x8F4F, 0x8F50, 0x8F51,
+ 0x8F52, 0x8F53, 0x8F55, 0x8F56, 0x8F57, 0x8F58, 0x8F59, 0x8F5A, 0x8F5B,
+ 0x8F5C, 0x8F5D, 0x8F5E, 0x8F60, 0x8F63, 0x8F65, 0x8F6A, 0x8F80, 0x8F8C,
+ 0x8F92, 0x8F9D, 0x8FA0, 0x8FA1, 0x8FA2, 0x8FA4, 0x8FA5, 0x8FA7, 0x8FAA,
+ 0x8FAC, 0x8FB3, 0x8FB4, 0x8FB5, 0x8FB7, 0x8FB8, 0x8FBA, 0x8FBB, 0x8FBC,
+ 0x8FBF, 0x8FC0, 0x8FC3, 0x8FC6, 0x8FC9, 0x8FCA, 0x8FCB, 0x8FCC, 0x8FCD,
+ 0x8FCF, 0x8FD2, 0x8FD6, 0x8FD7, 0x8FDA, 0x8FE0, 0x8FE1, 0x8FE3, 0x8FE7,
+ 0x8FEC, 0x8FEF, 0x8FF1, 0x8FF2, 0x8FF5, 0x8FF6, 0x8FFA, 0x8FFB, 0x8FFC,
+ 0x8FFE, 0x8FFF, 0x9007, 0x9008, 0x900C, 0x900E, 0x9013, 0x9018, 0x901C,
+ 0x9024, 0x9025, 0x9027, 0x9028, 0x9029, 0x902A, 0x902B, 0x902C, 0x9030,
+ 0x9031, 0x9033, 0x9034, 0x9037, 0x9039, 0x903A, 0x903D, 0x903F, 0x9040,
+ 0x9043, 0x9045, 0x9046, 0x9048, 0x9049, 0x904A, 0x904C, 0x9056, 0x9059,
+ 0x905A, 0x905D, 0x905F, 0x9061, 0x9064, 0x9066, 0x9067, 0x906A, 0x906B,
+ 0x906C, 0x906F, 0x9070, 0x9071, 0x9073, 0x9076, 0x9079, 0x907B, 0x907E,
+ 0x9085, 0x9086, 0x9089, 0x908C, 0x908D, 0x908E, 0x9092, 0x9094, 0x9096,
+ 0x9098, 0x909A, 0x909C, 0x909E, 0x909F, 0x90A0, 0x90A4, 0x90A5, 0x90A7,
+ 0x90A8, 0x90A9, 0x90AB, 0x90AD, 0x90B2, 0x90B7, 0x90BC, 0x90BD, 0x90BF,
+ 0x90C0, 0x90C2, 0x90C3, 0x90C6, 0x90C8, 0x90C9, 0x90CB, 0x90CC, 0x90CD,
+ 0x90D2, 0x90D4, 0x90D5, 0x90D6, 0x90D8, 0x90D9, 0x90DA, 0x90DE, 0x90E0,
+ 0x90E3, 0x90E4, 0x90E5, 0x90E9, 0x90EA, 0x90EC, 0x90EE, 0x90F0, 0x90F1,
+ 0x90F2, 0x90F3, 0x90F6, 0x90F7, 0x90F9, 0x90FA, 0x90FB, 0x90FC, 0x90FF,
+ 0x9100, 0x9101, 0x9103, 0x9105, 0x9107, 0x9108, 0x910A, 0x910B, 0x910C,
+ 0x910D, 0x910E, 0x910F, 0x9110, 0x9111, 0x9113, 0x9115, 0x9117, 0x9118,
+ 0x911A, 0x911B, 0x911C, 0x911D, 0x911F, 0x9120, 0x9121, 0x9124, 0x9125,
+ 0x9126, 0x9128, 0x9129, 0x912A, 0x912B, 0x912C, 0x912E, 0x9133, 0x9135,
+ 0x9137, 0x9138, 0x913B, 0x913C, 0x913D, 0x913E, 0x913F, 0x9140, 0x9141,
+ 0x9142, 0x9144, 0x9145, 0x9147, 0x9151, 0x9153, 0x9154, 0x9155, 0x9156,
+ 0x9158, 0x9159, 0x915B, 0x915C, 0x915F, 0x9160, 0x9166, 0x9167, 0x9168,
+ 0x916B, 0x916D, 0x9173, 0x917A, 0x917B, 0x917C, 0x9180, 0x9181, 0x9182,
+ 0x9183, 0x9184, 0x9186, 0x9188, 0x918A, 0x918E, 0x918F, 0x9193, 0x9194,
+ 0x9195, 0x9197, 0x9198, 0x9199, 0x919D, 0x919E, 0x919F, 0x91A0, 0x91A1,
+ 0x91A4, 0x91A5, 0x91A6, 0x91A7, 0x91A8, 0x91A9, 0x91B0, 0x91B1, 0x91B2,
+ 0x91B3, 0x91B6, 0x91B7, 0x91B8, 0x91B9, 0x91BB, 0x91BC, 0x91BD, 0x91BE,
+ 0x91BF, 0x91C2, 0x91C4, 0x91C6, 0x91C8, 0x91D0, 0x91D6, 0x91DA, 0x91DB,
+ 0x91DE, 0x91DF, 0x91E0, 0x91E1, 0x91E2, 0x91E5, 0x91E6, 0x91E8, 0x91EA,
+ 0x91EB, 0x91EC, 0x91ED, 0x91EE, 0x91EF, 0x91F0, 0x91F1, 0x91F2, 0x91F3,
+ 0x91F4, 0x91F6, 0x91F8, 0x91FB, 0x91FC, 0x91FD, 0x91FE, 0x91FF, 0x9202,
+ 0x9203, 0x9205, 0x9206, 0x9207, 0x920A, 0x920B, 0x920C, 0x920F, 0x9212,
+ 0x9213, 0x9216, 0x9217, 0x9218, 0x9219, 0x921A, 0x921B, 0x921C, 0x921D,
+ 0x921F, 0x9220, 0x9221, 0x9222, 0x9224, 0x9228, 0x9229, 0x922A, 0x922B,
+ 0x922C, 0x922D, 0x922F, 0x9231, 0x9232, 0x9235, 0x9236, 0x923B, 0x923C,
+ 0x9241, 0x9242, 0x9243, 0x9244, 0x9246, 0x9247, 0x924A, 0x924B, 0x924C,
+ 0x924E, 0x924F, 0x9250, 0x9252, 0x9253, 0x9254, 0x9256, 0x9258, 0x9259,
+ 0x925C, 0x925D, 0x925F, 0x9260, 0x9261, 0x9263, 0x9264, 0x9265, 0x9267,
+ 0x9268, 0x9269, 0x926A, 0x926B, 0x926E, 0x926F, 0x9270, 0x9271, 0x9272,
+ 0x9273, 0x9275, 0x9276, 0x9277, 0x9279, 0x927C, 0x927D, 0x927E, 0x9281,
+ 0x9282, 0x9284, 0x9286, 0x9287, 0x9288, 0x9289, 0x928A, 0x928B, 0x928C,
+ 0x928D, 0x928F, 0x9290, 0x9292, 0x9294, 0x9295, 0x9297, 0x9299, 0x929B,
+ 0x929D, 0x929E, 0x929F, 0x92A1, 0x92A2, 0x92A4, 0x92A7, 0x92AD, 0x92AF,
+ 0x92B0, 0x92B2, 0x92B3, 0x92B4, 0x92B5, 0x92B6, 0x92B8, 0x92BA, 0x92BD,
+ 0x92BE, 0x92BF, 0x92C0, 0x92C2, 0x92C4, 0x92C6, 0x92C9, 0x92CA, 0x92CB,
+ 0x92CD, 0x92CE, 0x92D0, 0x92D1, 0x92D3, 0x92D4, 0x92D5, 0x92D6, 0x92D7,
+ 0x92D8, 0x92D9, 0x92DA, 0x92DB, 0x92DC, 0x92DE, 0x92E0, 0x92E1, 0x92E2,
+ 0x92E7, 0x92E9, 0x92EB, 0x92EC, 0x92F2, 0x92F3, 0x92F4, 0x92F5, 0x92F7,
+ 0x92F9, 0x92FA, 0x92FB, 0x92FD, 0x92FE, 0x92FF, 0x9300, 0x9302, 0x9303,
+ 0x9304, 0x9305, 0x9309, 0x930A, 0x930B, 0x930C, 0x930D, 0x930E, 0x930F,
+ 0x9311, 0x9313, 0x9314, 0x9316, 0x9317, 0x931C, 0x931D, 0x931E, 0x9321,
+ 0x9323, 0x9324, 0x9325, 0x9327, 0x9329, 0x932A, 0x932C, 0x932D, 0x9330,
+ 0x9331, 0x9334, 0x9335, 0x9337, 0x9339, 0x933A, 0x933B, 0x933C, 0x933D,
+ 0x933F, 0x9342, 0x9344, 0x9345, 0x9348, 0x9349, 0x934A, 0x934C, 0x934E,
+ 0x934F, 0x9350, 0x9351, 0x9352, 0x9353, 0x9355, 0x9356, 0x9357, 0x9359,
+ 0x935A, 0x935C, 0x935D, 0x935E, 0x935F, 0x9360, 0x9361, 0x9362, 0x9363,
+ 0x9366, 0x9367, 0x9368, 0x936B, 0x936D, 0x936E, 0x936F, 0x9371, 0x9372,
+ 0x9373, 0x9374, 0x9377, 0x9378, 0x9379, 0x937B, 0x937C, 0x937D, 0x937F,
+ 0x9380, 0x9381, 0x9383, 0x9385, 0x9386, 0x9388, 0x9389, 0x938B, 0x938C,
+ 0x938D, 0x938E, 0x9390, 0x9391, 0x9392, 0x9393, 0x9394, 0x9395, 0x9397,
+ 0x9399, 0x939A, 0x939B, 0x939C, 0x939D, 0x939E, 0x939F, 0x93A0, 0x93A1,
+ 0x93A4, 0x93A5, 0x93A8, 0x93AB, 0x93AD, 0x93AF, 0x93B1, 0x93B2, 0x93B4,
+ 0x93B6, 0x93B7, 0x93B9, 0x93BA, 0x93BB, 0x93BC, 0x93BD, 0x93BE, 0x93C0,
+ 0x93C1, 0x93C2, 0x93C4, 0x93C5, 0x93C6, 0x93C9, 0x93CB, 0x93CE, 0x93CF,
+ 0x93D0, 0x93D2, 0x93D3, 0x93D4, 0x93D5, 0x93D9, 0x93DA, 0x93DB, 0x93E0,
+ 0x93E3, 0x93E5, 0x93E6, 0x93E7, 0x93E9, 0x93EA, 0x93EB, 0x93EC, 0x93ED,
+ 0x93EE, 0x93EF, 0x93F0, 0x93F1, 0x93F2, 0x93F3, 0x93F4, 0x93F6, 0x93F8,
+ 0x93FA, 0x93FB, 0x93FC, 0x93FD, 0x93FE, 0x93FF, 0x9400, 0x9401, 0x9402,
+ 0x9404, 0x9405, 0x9406, 0x9407, 0x9408, 0x9409, 0x940A, 0x940C, 0x940D,
+ 0x940E, 0x940F, 0x9411, 0x9415, 0x9416, 0x9417, 0x941A, 0x941B, 0x941C,
+ 0x941E, 0x941F, 0x9421, 0x9422, 0x9423, 0x9424, 0x9425, 0x9429, 0x942A,
+ 0x942B, 0x942C, 0x942D, 0x942F, 0x9430, 0x9431, 0x9434, 0x9436, 0x9437,
+ 0x9439, 0x943B, 0x943C, 0x943D, 0x9440, 0x9441, 0x9442, 0x9443, 0x9445,
+ 0x9446, 0x9447, 0x9448, 0x9449, 0x944B, 0x944D, 0x944E, 0x944F, 0x9450,
+ 0x9451, 0x9453, 0x9455, 0x9456, 0x9457, 0x9458, 0x9459, 0x945A, 0x945B,
+ 0x945C, 0x945D, 0x945E, 0x945F, 0x9461, 0x9462, 0x9464, 0x9466, 0x9467,
+ 0x9468, 0x9469, 0x946A, 0x946C, 0x946E, 0x946F, 0x9471, 0x9473, 0x9474,
+ 0x9475, 0x9476, 0x9478, 0x947A, 0x947B, 0x9480, 0x9481, 0x9482, 0x9483,
+ 0x9484, 0x9491, 0x9496, 0x9498, 0x94C7, 0x94CF, 0x94D3, 0x94D4, 0x94DA,
+ 0x94E6, 0x94FB, 0x951C, 0x9520, 0x9527, 0x9533, 0x953D, 0x9543, 0x9548,
+ 0x954B, 0x9555, 0x955A, 0x9560, 0x956E, 0x9574, 0x9575, 0x9578, 0x9579,
+ 0x957A, 0x957B, 0x957C, 0x957D, 0x957E, 0x9581, 0x9584, 0x9585, 0x9587,
+ 0x9588, 0x958A, 0x958D, 0x9590, 0x9592, 0x9595, 0x9596, 0x9597, 0x9599,
+ 0x959A, 0x959B, 0x959C, 0x959D, 0x959E, 0x959F, 0x95A0, 0x95A2, 0x95A6,
+ 0x95A7, 0x95AA, 0x95AE, 0x95AF, 0x95B0, 0x95B1, 0x95B3, 0x95B4, 0x95B5,
+ 0x95B7, 0x95B8, 0x95BA, 0x95C0, 0x95C1, 0x95C2, 0x95C4, 0x95C5, 0x95C7,
+ 0x95C9, 0x95CD, 0x95CE, 0x95CF, 0x95D1, 0x95D2, 0x95D3, 0x95D7, 0x95D8,
+ 0x95D9, 0x95DA, 0x95DB, 0x95DD, 0x95DF, 0x95E0, 0x95E3, 0x95E4, 0x95E6,
+ 0x95E7, 0x95EC, 0x95FF, 0x9607, 0x9613, 0x9618, 0x961B, 0x961E, 0x9620,
+ 0x9623, 0x9624, 0x9625, 0x9626, 0x9627, 0x9628, 0x9629, 0x962B, 0x962C,
+ 0x962D, 0x962F, 0x9630, 0x9637, 0x9638, 0x9639, 0x963A, 0x963E, 0x9641,
+ 0x9643, 0x964A, 0x964E, 0x964F, 0x9651, 0x9652, 0x9653, 0x9656, 0x9657,
+ 0x9659, 0x965A, 0x965C, 0x965E, 0x9660, 0x9665, 0x9666, 0x966B, 0x966D,
+ 0x966E, 0x966F, 0x9671, 0x9679, 0x967A, 0x967B, 0x967C, 0x967E, 0x967F,
+ 0x9680, 0x9681, 0x9682, 0x9683, 0x9684, 0x9687, 0x9689, 0x968C, 0x9691,
+ 0x9692, 0x9693, 0x9696, 0x969A, 0x969D, 0x969E, 0x969F, 0x96A0, 0x96A1,
+ 0x96A2, 0x96A3, 0x96A4, 0x96A5, 0x96A6, 0x96A9, 0x96AB, 0x96AC, 0x96AD,
+ 0x96AE, 0x96AF, 0x96B2, 0x96B5, 0x96B7, 0x96BA, 0x96BF, 0x96C2, 0x96C3,
+ 0x96C8, 0x96CA, 0x96CB, 0x96D0, 0x96D1, 0x96D3, 0x96D4, 0x96D7, 0x96D8,
+ 0x96DA, 0x96DD, 0x96DE, 0x96DF, 0x96E1, 0x96E4, 0x96E5, 0x96E6, 0x96E7,
+ 0x96EB, 0x96EC, 0x96ED, 0x96EE, 0x96F0, 0x96F1, 0x96F4, 0x96F5, 0x96F8,
+ 0x96FA, 0x96FC, 0x96FD, 0x96FF, 0x9702, 0x9703, 0x9705, 0x970A, 0x970B,
+ 0x970C, 0x9710, 0x9711, 0x9712, 0x9714, 0x9715, 0x9717, 0x9718, 0x9719,
+ 0x971A, 0x971B, 0x971D, 0x971F, 0x9720, 0x9721, 0x9722, 0x9723, 0x9724,
+ 0x9725, 0x9726, 0x9728, 0x9729, 0x972B, 0x972C, 0x972E, 0x972F, 0x9731,
+ 0x9733, 0x9734, 0x9735, 0x9736, 0x9737, 0x973A, 0x973B, 0x973C, 0x973F,
+ 0x9740, 0x9741, 0x9743, 0x9745, 0x9746, 0x9747, 0x9749, 0x974A, 0x974B,
+ 0x974C, 0x974D, 0x974E, 0x974F, 0x9750, 0x9751, 0x9754, 0x9755, 0x9757,
+ 0x9758, 0x975C, 0x975D, 0x975F, 0x9763, 0x9764, 0x9766, 0x9767, 0x976A,
+ 0x976B, 0x976C, 0x976D, 0x976E, 0x976F, 0x9770, 0x9771, 0x9772, 0x9775,
+ 0x9777, 0x9778, 0x9779, 0x977A, 0x977B, 0x977D, 0x977E, 0x977F, 0x9780,
+ 0x9781, 0x9782, 0x9783, 0x9784, 0x9786, 0x9787, 0x9788, 0x9789, 0x978A,
+ 0x978C, 0x978E, 0x9790, 0x9793, 0x9795, 0x9796, 0x9797, 0x9799, 0x979A,
+ 0x979B, 0x979C, 0x979D, 0x979E, 0x979F, 0x97A1, 0x97A2, 0x97A4, 0x97A5,
+ 0x97A7, 0x97A8, 0x97A9, 0x97AA, 0x97AC, 0x97AE, 0x97B0, 0x97B1, 0x97B3,
+ 0x97B5, 0x97B6, 0x97B7, 0x97B8, 0x97B9, 0x97BA, 0x97BB, 0x97BC, 0x97BE,
+ 0x97BF, 0x97C0, 0x97C1, 0x97C2, 0x97C4, 0x97C5, 0x97C7, 0x97C8, 0x97CA,
+ 0x97CD, 0x97CE, 0x97CF, 0x97D0, 0x97D1, 0x97D2, 0x97D4, 0x97D5, 0x97D6,
+ 0x97D7, 0x97D8, 0x97DA, 0x97DB, 0x97DD, 0x97DF, 0x97E0, 0x97E1, 0x97E2,
+ 0x97E3, 0x97E4, 0x97E5, 0x97E8, 0x97EE, 0x97EF, 0x97F0, 0x97F1, 0x97F2,
+ 0x97F4, 0x97F7, 0x97F8, 0x97F9, 0x97FA, 0x97FB, 0x97FC, 0x97FD, 0x97FE,
+ 0x9800, 0x9804, 0x9809, 0x980B, 0x980D, 0x9814, 0x9815, 0x9816, 0x9819,
+ 0x981A, 0x981B, 0x981D, 0x981E, 0x981F, 0x9820, 0x9822, 0x9823, 0x9825,
+ 0x9827, 0x9828, 0x9829, 0x982A, 0x982B, 0x982C, 0x982E, 0x982F, 0x9831,
+ 0x9832, 0x9833, 0x9834, 0x9835, 0x9836, 0x9839, 0x983A, 0x983C, 0x983E,
+ 0x983F, 0x9840, 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9847, 0x9848,
+ 0x9849, 0x984A, 0x984B, 0x984F, 0x9850, 0x9851, 0x9852, 0x9855, 0x9856,
+ 0x9857, 0x985A, 0x985C, 0x985D, 0x985F, 0x9860, 0x9861, 0x9863, 0x9864,
+ 0x9866, 0x9868, 0x9869, 0x986A, 0x986D, 0x986E, 0x9872, 0x988B, 0x988E,
+ 0x9892, 0x9895, 0x9899, 0x98A3, 0x98A9, 0x98AA, 0x98AB, 0x98AC, 0x98AD,
+ 0x98B0, 0x98B2, 0x98B4, 0x98B5, 0x98B7, 0x98B8, 0x98B9, 0x98BA, 0x98BB,
+ 0x98BD, 0x98BE, 0x98BF, 0x98C0, 0x98C1, 0x98C2, 0x98C3, 0x98C5, 0x98C7,
+ 0x98C9, 0x98CA, 0x98CB, 0x98CC, 0x98CD, 0x98CF, 0x98D0, 0x98D4, 0x98D6,
+ 0x98D7, 0x98DC, 0x98DD, 0x98E1, 0x98E3, 0x98E4, 0x98E5, 0x98E6, 0x98EC,
+ 0x98EE, 0x98F0, 0x98F1, 0x98F3, 0x98F5, 0x98F6, 0x98F7, 0x98F8, 0x98F9,
+ 0x98FA, 0x98FB, 0x98FF, 0x9900, 0x9901, 0x9902, 0x9904, 0x9906, 0x9907,
+ 0x9908, 0x990B, 0x990E, 0x990F, 0x9914, 0x9915, 0x9916, 0x9917, 0x9919,
+ 0x991A, 0x991C, 0x991D, 0x991F, 0x9920, 0x9922, 0x9923, 0x9924, 0x9925,
+ 0x9926, 0x9927, 0x9929, 0x992A, 0x992B, 0x992C, 0x992D, 0x992F, 0x9930,
+ 0x9931, 0x9932, 0x9934, 0x9935, 0x9936, 0x9938, 0x9939, 0x993A, 0x993B,
+ 0x993D, 0x9940, 0x9941, 0x9942, 0x9944, 0x9946, 0x9947, 0x994D, 0x994E,
+ 0x994F, 0x9950, 0x9953, 0x9956, 0x9958, 0x9959, 0x995A, 0x995B, 0x995D,
+ 0x995F, 0x9960, 0x9961, 0x9964, 0x9966, 0x9973, 0x9978, 0x9979, 0x997B,
+ 0x997E, 0x9982, 0x9983, 0x9989, 0x998C, 0x998E, 0x999A, 0x999B, 0x999C,
+ 0x999D, 0x999E, 0x999F, 0x99A0, 0x99A1, 0x99A2, 0x99A3, 0x99A4, 0x99A6,
+ 0x99A7, 0x99A9, 0x99AA, 0x99AB, 0x99AF, 0x99B0, 0x99B2, 0x99B5, 0x99B6,
+ 0x99B7, 0x99B8, 0x99B9, 0x99BA, 0x99BB, 0x99BC, 0x99BD, 0x99BE, 0x99BF,
+ 0x99C0, 0x99C2, 0x99C3, 0x99C4, 0x99C5, 0x99C6, 0x99C7, 0x99C8, 0x99C9,
+ 0x99CA, 0x99CB, 0x99CC, 0x99CD, 0x99CE, 0x99CF, 0x99D3, 0x99D6, 0x99D7,
+ 0x99DA, 0x99DC, 0x99DE, 0x99E0, 0x99E3, 0x99E4, 0x99E5, 0x99E6, 0x99E7,
+ 0x99E8, 0x99E9, 0x99EA, 0x99EB, 0x99EC, 0x99EE, 0x99EF, 0x99F0, 0x99F2,
+ 0x99F3, 0x99F4, 0x99F5, 0x99F6, 0x99F7, 0x99F8, 0x99F9, 0x99FA, 0x99FB,
+ 0x99FC, 0x99FD, 0x99FE, 0x9A00, 0x9A02, 0x9A03, 0x9A04, 0x9A06, 0x9A07,
+ 0x9A08, 0x9A09, 0x9A0A, 0x9A0B, 0x9A0C, 0x9A10, 0x9A11, 0x9A12, 0x9A13,
+ 0x9A14, 0x9A15, 0x9A17, 0x9A18, 0x9A1A, 0x9A1B, 0x9A1C, 0x9A1D, 0x9A1E,
+ 0x9A1F, 0x9A20, 0x9A21, 0x9A22, 0x9A23, 0x9A24, 0x9A25, 0x9A26, 0x9A27,
+ 0x9A28, 0x9A29, 0x9A2A, 0x9A2C, 0x9A2F, 0x9A31, 0x9A32, 0x9A33, 0x9A34,
+ 0x9A35, 0x9A39, 0x9A3A, 0x9A3B, 0x9A3C, 0x9A3D, 0x9A3F, 0x9A46, 0x9A47,
+ 0x9A48, 0x9A49, 0x9A4B, 0x9A4C, 0x9A4E, 0x9A50, 0x9A51, 0x9A52, 0x9A53,
+ 0x9A54, 0x9A56, 0x9A58, 0x9A59, 0x9A5C, 0x9A5D, 0x9A5E, 0x9A60, 0x9A61,
+ 0x9A63, 0x9A66, 0x9A67, 0x9A68, 0x9A69, 0x9A6B, 0x9A72, 0x9A83, 0x9A89,
+ 0x9A8D, 0x9A8E, 0x9A94, 0x9A95, 0x9A99, 0x9AA6, 0x9AA9, 0x9AAA, 0x9AAB,
+ 0x9AAC, 0x9AAD, 0x9AAE, 0x9AB2, 0x9AB3, 0x9AB4, 0x9AB5, 0x9AB9, 0x9ABB,
+ 0x9ABD, 0x9ABE, 0x9ABF, 0x9AC3, 0x9AC4, 0x9AC6, 0x9AC7, 0x9AC8, 0x9AC9,
+ 0x9ACA, 0x9ACD, 0x9ACE, 0x9AD0, 0x9AD7, 0x9AD9, 0x9ADA, 0x9ADB, 0x9ADC,
+ 0x9ADD, 0x9ADE, 0x9AE0, 0x9AE2, 0x9AE3, 0x9AE4, 0x9AE5, 0x9AE7, 0x9AE8,
+ 0x9AE9, 0x9AEA, 0x9AEC, 0x9AF0, 0x9AF1, 0x9AF2, 0x9AF3, 0x9AF4, 0x9AF5,
+ 0x9AF6, 0x9AF7, 0x9AF8, 0x9AFA, 0x9AFC, 0x9AFD, 0x9AFE, 0x9AFF, 0x9B00,
+ 0x9B01, 0x9B02, 0x9B04, 0x9B05, 0x9B07, 0x9B09, 0x9B0A, 0x9B0B, 0x9B0C,
+ 0x9B0E, 0x9B10, 0x9B11, 0x9B12, 0x9B14, 0x9B15, 0x9B16, 0x9B17, 0x9B18,
+ 0x9B19, 0x9B1B, 0x9B1C, 0x9B1D, 0x9B1E, 0x9B20, 0x9B21, 0x9B24, 0x9B26,
+ 0x9B28, 0x9B2A, 0x9B2B, 0x9B2C, 0x9B2D, 0x9B30, 0x9B33, 0x9B34, 0x9B35,
+ 0x9B36, 0x9B37, 0x9B38, 0x9B39, 0x9B3A, 0x9B3D, 0x9B3E, 0x9B3F, 0x9B40,
+ 0x9B46, 0x9B4A, 0x9B4B, 0x9B4C, 0x9B50, 0x9B52, 0x9B53, 0x9B55, 0x9B56,
+ 0x9B57, 0x9B59, 0x9B5B, 0x9B5C, 0x9B5D, 0x9B5E, 0x9B5F, 0x9B60, 0x9B61,
+ 0x9B62, 0x9B63, 0x9B64, 0x9B65, 0x9B66, 0x9B67, 0x9B68, 0x9B69, 0x9B6A,
+ 0x9B6B, 0x9B6C, 0x9B6D, 0x9B6E, 0x9B70, 0x9B71, 0x9B72, 0x9B73, 0x9B75,
+ 0x9B76, 0x9B78, 0x9B79, 0x9B7A, 0x9B7B, 0x9B7C, 0x9B7D, 0x9B7E, 0x9B7F,
+ 0x9B80, 0x9B82, 0x9B84, 0x9B85, 0x9B86, 0x9B87, 0x9B88, 0x9B89, 0x9B8A,
+ 0x9B8B, 0x9B8C, 0x9B8D, 0x9B8F, 0x9B93, 0x9B94, 0x9B95, 0x9B96, 0x9B97,
+ 0x9B98, 0x9B99, 0x9B9B, 0x9B9C, 0x9B9F, 0x9BA0, 0x9BA1, 0x9BA2, 0x9BA3,
+ 0x9BA4, 0x9BA5, 0x9BA6, 0x9BA7, 0x9BA8, 0x9BA9, 0x9BAC, 0x9BAF, 0x9BB0,
+ 0x9BB1, 0x9BB2, 0x9BB3, 0x9BB4, 0x9BB5, 0x9BB6, 0x9BB7, 0x9BB8, 0x9BB9,
+ 0x9BBA, 0x9BBB, 0x9BBC, 0x9BBD, 0x9BBE, 0x9BBF, 0x9BC2, 0x9BC3, 0x9BC4,
+ 0x9BC5, 0x9BC6, 0x9BC8, 0x9BCB, 0x9BCC, 0x9BCD, 0x9BCE, 0x9BCF, 0x9BD0,
+ 0x9BD1, 0x9BD2, 0x9BD3, 0x9BD5, 0x9BD7, 0x9BD8, 0x9BD9, 0x9BDA, 0x9BDC,
+ 0x9BDE, 0x9BDF, 0x9BE0, 0x9BE3, 0x9BE5, 0x9BE6, 0x9BE9, 0x9BEC, 0x9BED,
+ 0x9BEE, 0x9BEF, 0x9BF1, 0x9BF2, 0x9BF3, 0x9BF5, 0x9BF6, 0x9BF7, 0x9BF8,
+ 0x9BF9, 0x9BFA, 0x9BFB, 0x9BFC, 0x9BFE, 0x9C00, 0x9C01, 0x9C02, 0x9C03,
+ 0x9C04, 0x9C05, 0x9C06, 0x9C07, 0x9C0A, 0x9C0B, 0x9C0C, 0x9C0E, 0x9C0F,
+ 0x9C11, 0x9C14, 0x9C15, 0x9C16, 0x9C17, 0x9C18, 0x9C19, 0x9C1A, 0x9C1B,
+ 0x9C1C, 0x9C1D, 0x9C1E, 0x9C1F, 0x9C21, 0x9C22, 0x9C24, 0x9C26, 0x9C27,
+ 0x9C2A, 0x9C2B, 0x9C2C, 0x9C2E, 0x9C2F, 0x9C30, 0x9C34, 0x9C36, 0x9C38,
+ 0x9C3A, 0x9C3C, 0x9C3D, 0x9C3F, 0x9C40, 0x9C41, 0x9C42, 0x9C43, 0x9C44,
+ 0x9C46, 0x9C47, 0x9C4A, 0x9C4B, 0x9C4C, 0x9C4D, 0x9C4E, 0x9C4F, 0x9C50,
+ 0x9C51, 0x9C53, 0x9C55, 0x9C59, 0x9C5A, 0x9C5B, 0x9C5C, 0x9C5E, 0x9C60,
+ 0x9C61, 0x9C62, 0x9C63, 0x9C64, 0x9C65, 0x9C66, 0x9C68, 0x9C69, 0x9C6A,
+ 0x9C6B, 0x9C6C, 0x9C6E, 0x9C6F, 0x9C70, 0x9C71, 0x9C72, 0x9C73, 0x9C74,
+ 0x9C75, 0x9C76, 0x9C77, 0x9C79, 0x9C7B, 0x9C7D, 0x9C7E, 0x9C80, 0x9C83,
+ 0x9C84, 0x9C89, 0x9C8A, 0x9C8C, 0x9C8F, 0x9C93, 0x9C96, 0x9C97, 0x9C98,
+ 0x9C99, 0x9C9D, 0x9CAA, 0x9CAC, 0x9CAF, 0x9CB9, 0x9CBE, 0x9CBF, 0x9CC0,
+ 0x9CC1, 0x9CC2, 0x9CC8, 0x9CC9, 0x9CD1, 0x9CD2, 0x9CDA, 0x9CDB, 0x9CE0,
+ 0x9CE1, 0x9CE3, 0x9CE4, 0x9CE6, 0x9CE7, 0x9CE8, 0x9CEA, 0x9CEB, 0x9CED,
+ 0x9CEE, 0x9CEF, 0x9CF0, 0x9CF1, 0x9CF2, 0x9CF5, 0x9CF7, 0x9CF8, 0x9CF9,
+ 0x9CFA, 0x9CFB, 0x9CFC, 0x9CFD, 0x9CFE, 0x9CFF, 0x9D00, 0x9D01, 0x9D02,
+ 0x9D03, 0x9D04, 0x9D05, 0x9D08, 0x9D0A, 0x9D0B, 0x9D0C, 0x9D0D, 0x9D0E,
+ 0x9D0F, 0x9D10, 0x9D11, 0x9D12, 0x9D13, 0x9D14, 0x9D16, 0x9D17, 0x9D18,
+ 0x9D19, 0x9D1A, 0x9D1C, 0x9D1E, 0x9D20, 0x9D21, 0x9D22, 0x9D24, 0x9D25,
+ 0x9D27, 0x9D29, 0x9D2A, 0x9D2B, 0x9D2C, 0x9D2D, 0x9D2E, 0x9D31, 0x9D32,
+ 0x9D33, 0x9D34, 0x9D35, 0x9D36, 0x9D37, 0x9D38, 0x9D39, 0x9D3A, 0x9D3C,
+ 0x9D3D, 0x9D3E, 0x9D40, 0x9D41, 0x9D43, 0x9D44, 0x9D45, 0x9D46, 0x9D47,
+ 0x9D48, 0x9D49, 0x9D4A, 0x9D4B, 0x9D4C, 0x9D4D, 0x9D4E, 0x9D4F, 0x9D50,
+ 0x9D54, 0x9D55, 0x9D56, 0x9D57, 0x9D58, 0x9D59, 0x9D5A, 0x9D5B, 0x9D5E,
+ 0x9D5F, 0x9D62, 0x9D63, 0x9D64, 0x9D65, 0x9D66, 0x9D67, 0x9D68, 0x9D69,
+ 0x9D6B, 0x9D6D, 0x9D6E, 0x9D70, 0x9D71, 0x9D73, 0x9D74, 0x9D75, 0x9D76,
+ 0x9D77, 0x9D78, 0x9D79, 0x9D7A, 0x9D7B, 0x9D7C, 0x9D7D, 0x9D7E, 0x9D7F,
+ 0x9D80, 0x9D81, 0x9D82, 0x9D83, 0x9D84, 0x9D85, 0x9D86, 0x9D88, 0x9D8A,
+ 0x9D8B, 0x9D8C, 0x9D8D, 0x9D8E, 0x9D8F, 0x9D90, 0x9D91, 0x9D92, 0x9D94,
+ 0x9D95, 0x9D96, 0x9D97, 0x9D99, 0x9D9B, 0x9D9C, 0x9D9D, 0x9D9E, 0x9D9F,
+ 0x9DA0, 0x9DA1, 0x9DA2, 0x9DA3, 0x9DA4, 0x9DA6, 0x9DA7, 0x9DA8, 0x9DAA,
+ 0x9DAB, 0x9DAC, 0x9DAD, 0x9DAE, 0x9DB0, 0x9DB1, 0x9DB2, 0x9DB3, 0x9DB5,
+ 0x9DB6, 0x9DB7, 0x9DB8, 0x9DB9, 0x9DBA, 0x9DBD, 0x9DBE, 0x9DBF, 0x9DC1,
+ 0x9DC3, 0x9DC5, 0x9DC6, 0x9DC7, 0x9DC8, 0x9DC9, 0x9DCA, 0x9DCB, 0x9DCC,
+ 0x9DCD, 0x9DCE, 0x9DCF, 0x9DD0, 0x9DD1, 0x9DD2, 0x9DD4, 0x9DD5, 0x9DD6,
+ 0x9DD8, 0x9DDB, 0x9DDC, 0x9DDD, 0x9DDE, 0x9DDF, 0x9DE0, 0x9DE1, 0x9DE2,
+ 0x9DE3, 0x9DE4, 0x9DE7, 0x9DE8, 0x9DE9, 0x9DEA, 0x9DEB, 0x9DEC, 0x9DED,
+ 0x9DEE, 0x9DF0, 0x9DF1, 0x9DF4, 0x9DF5, 0x9DF6, 0x9DF7, 0x9DFB, 0x9DFC,
+ 0x9DFD, 0x9DFE, 0x9DFF, 0x9E00, 0x9E01, 0x9E02, 0x9E03, 0x9E04, 0x9E05,
+ 0x9E06, 0x9E07, 0x9E08, 0x9E09, 0x9E0A, 0x9E0B, 0x9E0D, 0x9E0E, 0x9E0F,
+ 0x9E10, 0x9E11, 0x9E12, 0x9E13, 0x9E14, 0x9E16, 0x9E17, 0x9E18, 0x9E19,
+ 0x9E1C, 0x9E24, 0x9E27, 0x9E2E, 0x9E30, 0x9E34, 0x9E3B, 0x9E3C, 0x9E40,
+ 0x9E4D, 0x9E50, 0x9E52, 0x9E53, 0x9E54, 0x9E56, 0x9E59, 0x9E5D, 0x9E5F,
+ 0x9E60, 0x9E61, 0x9E62, 0x9E65, 0x9E6E, 0x9E6F, 0x9E72, 0x9E74, 0x9E76,
+ 0x9E77, 0x9E78, 0x9E7B, 0x9E80, 0x9E81, 0x9E83, 0x9E84, 0x9E85, 0x9E86,
+ 0x9E89, 0x9E8A, 0x9E8C, 0x9E8D, 0x9E8E, 0x9E8F, 0x9E90, 0x9E91, 0x9E94,
+ 0x9E95, 0x9E96, 0x9E98, 0x9E99, 0x9E9A, 0x9E9B, 0x9E9C, 0x9E9E, 0x9EA0,
+ 0x9EA1, 0x9EA2, 0x9EA3, 0x9EA4, 0x9EA7, 0x9EA8, 0x9EAA, 0x9EAB, 0x9EAC,
+ 0x9EAD, 0x9EAE, 0x9EB0, 0x9EB1, 0x9EB2, 0x9EB3, 0x9EB6, 0x9EB7, 0x9EB9,
+ 0x9EBA, 0x9EBC, 0x9EBF, 0x9EC0, 0x9EC1, 0x9EC2, 0x9EC3, 0x9EC5, 0x9EC6,
+ 0x9EC7, 0x9EC8, 0x9ECA, 0x9ECB, 0x9ED0, 0x9ED2, 0x9ED3, 0x9ED5, 0x9ED6,
+ 0x9ED7, 0x9ED9, 0x9EDA, 0x9EE1, 0x9EE3, 0x9EE4, 0x9EE6, 0x9EEB, 0x9EEC,
+ 0x9EED, 0x9EEE, 0x9EF0, 0x9EF1, 0x9EF3, 0x9EF5, 0x9EF6, 0x9EF8, 0x9EFA,
+ 0x9F00, 0x9F01, 0x9F02, 0x9F03, 0x9F04, 0x9F05, 0x9F06, 0x9F07, 0x9F08,
+ 0x9F0A, 0x9F0C, 0x9F0F, 0x9F11, 0x9F12, 0x9F14, 0x9F16, 0x9F18, 0x9F1A,
+ 0x9F1B, 0x9F1C, 0x9F1D, 0x9F1E, 0x9F1F, 0x9F21, 0x9F23, 0x9F24, 0x9F25,
+ 0x9F26, 0x9F27, 0x9F28, 0x9F29, 0x9F2A, 0x9F2B, 0x9F2D, 0x9F2E, 0x9F30,
+ 0x9F31, 0x9F32, 0x9F33, 0x9F34, 0x9F35, 0x9F36, 0x9F38, 0x9F3A, 0x9F3C,
+ 0x9F3F, 0x9F40, 0x9F41, 0x9F42, 0x9F43, 0x9F45, 0x9F46, 0x9F47, 0x9F48,
+ 0x9F49, 0x9F4C, 0x9F4D, 0x9F4E, 0x9F53, 0x9F55, 0x9F56, 0x9F57, 0x9F58,
+ 0x9F5A, 0x9F5B, 0x9F5D, 0x9F5E, 0x9F62, 0x9F64, 0x9F65, 0x9F67, 0x9F68,
+ 0x9F69, 0x9F6B, 0x9F6D, 0x9F6E, 0x9F6F, 0x9F70, 0x9F71, 0x9F73, 0x9F74,
+ 0x9F75, 0x9F76, 0x9F78, 0x9F79, 0x9F7A, 0x9F7B, 0x9F7C, 0x9F7D, 0x9F7E,
+ 0x9F81, 0x9F82, 0x9F8E, 0x9F8F, 0x9F91, 0x9F92, 0x9F93, 0x9F96, 0x9F97,
+ 0x9F98, 0x9F9D, 0x9F9E, 0x9FA1, 0x9FA2, 0x9FA3, 0x9FA4, 0x9FA5, 0xF92C,
+ 0xFA0D, 0xFA0E, 0xFA0F, 0xFA11, 0xFA13, 0xFA14, 0xFA18, 0xFA1F, 0xFA20,
+ 0xFA21, 0xFA23, 0xFA24, 0xFA27, 0xFA28, 0xFA29, 0x2E81, 0x0000, 0x0000,
+ 0x0000, 0x2E84, 0x3473, 0x3447, 0x2E88, 0x2E8B, 0x9FB4, 0x359E, 0x361A,
+ 0x360E, 0x2E8C, 0x2E97, 0x396E, 0x3918, 0x9FB5, 0x39CF, 0x39DF, 0x3A73,
+ 0x39D0, 0x9FB6, 0x9FB7, 0x3B4E, 0x3C6E, 0x3CE0, 0x2EA7, 0x0000, 0x9FB8,
+ 0x2EAA, 0x4056, 0x415F, 0x2EAE, 0x4337, 0x2EB3, 0x2EB6, 0x2EB7, 0x0000,
+ 0x43B1, 0x43AC, 0x2EBB, 0x43DD, 0x44D6, 0x4661, 0x464C, 0x9FB9, 0x4723,
+ 0x4729, 0x477C, 0x478D, 0x2ECA, 0x4947, 0x497A, 0x497D, 0x4982, 0x4983,
+ 0x4985, 0x4986, 0x499F, 0x499B, 0x49B7, 0x49B6, 0x9FBA, 0x0000, 0x4CA3,
+ 0x4C9F, 0x4CA0, 0x4CA1, 0x4C77, 0x4CA2, 0x4D13, 0x4D14, 0x4D15, 0x4D16,
+ 0x4D17, 0x4D18, 0x4D19, 0x4DAE, 0x9FBB, 0x0020, 0x0021, 0x0022, 0x0023,
+ 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C,
+ 0x002D, 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035,
+ 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E,
+ 0x003F, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050,
+ 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059,
+ 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062,
+ 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B,
+ 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074,
+ 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D,
+ 0x007E, 0x00FC, 0x00A9, 0x2122, 0x2026, 0x0021, 0x0022, 0x0023, 0x0024,
+ 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D,
+ 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036,
+ 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048,
+ 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051,
+ 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A,
+ 0x005B, 0x005C, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063,
+ 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C,
+ 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075,
+ 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E,
+ 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, 0x011B, 0x00E8, 0x012B,
+ 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2, 0x00F2, 0x016B, 0x00FA,
+ 0x01D4, 0x00F9, 0x01D6, 0x01D8, 0x01DA, 0x01DC, 0x00FC, 0x00EA, 0x0251,
+ 0x1E3F, 0x0144, 0x0148, 0x01F9, 0x0261, 0x0020, 0x20AC, 0x00A5, 0x20AC,
+ 0x0024, 0x303F, 0x20AC, 0x3041, 0x3047, 0x3043, 0x304B, 0x304B, 0x3051,
+ 0x3051, 0x3053, 0x3053, 0x3049, 0x3064, 0x3045, 0x308E, 0x3083, 0x3087,
+ 0x3085, 0x3094, 0x30A1, 0x30A7, 0x30A3, 0x30F5, 0x30F6, 0x30B3, 0x30B3,
+ 0x30A9, 0x30C3, 0x30A5, 0x30EE, 0x30E3, 0x30E7, 0x30E5, 0x30F7, 0x30F9,
+ 0x30F8, 0x30FA, 0x30FC, 0x3033, 0x3034, 0x3035, 0x3038, 0x3039, 0x303A,
+ 0x312A, 0x312B, 0x312C, 0x31A0, 0x31A1, 0x31A2, 0x31A3, 0x31A4, 0x31A5,
+ 0x31A6, 0x31A7, 0x31A8, 0x31A9, 0x31AA, 0x31AB, 0x31AC, 0x31AD, 0x31AE,
+ 0x31AF, 0x31B0, 0x31B1, 0x31B2, 0x31B3, 0x31B4, 0x31B5, 0x31B6, 0x31B7,
+ 0x2E80, 0x2E82, 0x2E83, 0x2E85, 0x2E86, 0x2E87, 0x2E89, 0x2E8A, 0x2E8D,
+ 0x2E8E, 0x2E8F, 0x2E90, 0x2E91, 0x2E92, 0x2E93, 0x2E94, 0x2E95, 0x2E96,
+ 0x2E98, 0x2E99, 0x2E9B, 0x2E9C, 0x2E9D, 0x2E9E, 0x2E9F, 0x2EA0, 0x2EA1,
+ 0x2EA2, 0x2EA3, 0x2EA4, 0x2EA5, 0x2EA6, 0x2EA8, 0x2EA9, 0x2EAB, 0x2EAC,
+ 0x2EAD, 0x2EAF, 0x2EB0, 0x2EB1, 0x2EB2, 0x2EB4, 0x2EB5, 0x2EB8, 0x2EB9,
+ 0x2EBA, 0x2EBC, 0x2EBD, 0x2EBE, 0x2EBF, 0x2EC0, 0x2EC1, 0x2EC2, 0x2EC3,
+ 0x2EC4, 0x2EC5, 0x2EC6, 0x2EC7, 0x2EC8, 0x2EC9, 0x2ECB, 0x2ECC, 0x2ECD,
+ 0x2ECE, 0x2ECF, 0x2ED0, 0x2ED1, 0x2ED2, 0x2ED3, 0x2ED4, 0x2ED5, 0x2ED6,
+ 0x2ED7, 0x2ED8, 0x2ED9, 0x2EDA, 0x2EDB, 0x2EDC, 0x2EDD, 0x2EDE, 0x2EDF,
+ 0x2EE0, 0x2EE1, 0x2EE2, 0x2EE3, 0x2EE4, 0x2EE5, 0x2EE6, 0x2EE7, 0x2EE8,
+ 0x2EE9, 0x2EEA, 0x2EEB, 0x2EEC, 0x2EED, 0x2EEE, 0x2EEF, 0x2EF0, 0x2EF1,
+ 0x2EF2, 0x2EF3, 0x3400, 0x3401, 0x3402, 0x3403, 0x3404, 0x3405, 0x3406,
+ 0x3407, 0x3408, 0x3409, 0x340A, 0x340B, 0x340C, 0x340D, 0x340E, 0x340F,
+ 0x3410, 0x3411, 0x3412, 0x3413, 0x3414, 0x3415, 0x3416, 0x3417, 0x3418,
+ 0x3419, 0x341A, 0x341B, 0x341C, 0x341D, 0x341E, 0x341F, 0x3420, 0x3421,
+ 0x3422, 0x3423, 0x3424, 0x3425, 0x3426, 0x3427, 0x3428, 0x3429, 0x342A,
+ 0x342B, 0x342C, 0x342D, 0x342E, 0x342F, 0x3430, 0x3431, 0x3432, 0x3433,
+ 0x3434, 0x3435, 0x3436, 0x3437, 0x3438, 0x3439, 0x343A, 0x343B, 0x343C,
+ 0x343D, 0x343E, 0x343F, 0x3440, 0x3441, 0x3442, 0x3443, 0x3444, 0x3445,
+ 0x3446, 0x3448, 0x3449, 0x344A, 0x344B, 0x344C, 0x344D, 0x344E, 0x344F,
+ 0x3450, 0x3451, 0x3452, 0x3453, 0x3454, 0x3455, 0x3456, 0x3457, 0x3458,
+ 0x3459, 0x345A, 0x345B, 0x345C, 0x345D, 0x345E, 0x345F, 0x3460, 0x3461,
+ 0x3462, 0x3463, 0x3464, 0x3465, 0x3466, 0x3467, 0x3468, 0x3469, 0x346A,
+ 0x346B, 0x346C, 0x346D, 0x346E, 0x346F, 0x3470, 0x3471, 0x3472, 0x3474,
+ 0x3475, 0x3476, 0x3477, 0x3478, 0x3479, 0x347A, 0x347B, 0x347C, 0x347D,
+ 0x347E, 0x347F, 0x3480, 0x3481, 0x3482, 0x3483, 0x3484, 0x3485, 0x3486,
+ 0x3487, 0x3488, 0x3489, 0x348A, 0x348B, 0x348C, 0x348D, 0x348E, 0x348F,
+ 0x3490, 0x3491, 0x3492, 0x3493, 0x3494, 0x3495, 0x3496, 0x3497, 0x3498,
+ 0x3499, 0x349A, 0x349B, 0x349C, 0x349D, 0x349E, 0x349F, 0x34A0, 0x34A1,
+ 0x34A2, 0x34A3, 0x34A4, 0x34A5, 0x34A6, 0x34A7, 0x34A8, 0x34A9, 0x34AA,
+ 0x34AB, 0x34AC, 0x34AD, 0x34AE, 0x34AF, 0x34B0, 0x34B1, 0x34B2, 0x34B3,
+ 0x34B4, 0x34B5, 0x34B6, 0x34B7, 0x34B8, 0x34B9, 0x34BA, 0x34BB, 0x34BC,
+ 0x34BD, 0x34BE, 0x34BF, 0x34C0, 0x34C1, 0x34C2, 0x34C3, 0x34C4, 0x34C5,
+ 0x34C6, 0x34C7, 0x34C8, 0x34C9, 0x34CA, 0x34CB, 0x34CC, 0x34CD, 0x34CE,
+ 0x34CF, 0x34D0, 0x34D1, 0x34D2, 0x34D3, 0x34D4, 0x34D5, 0x34D6, 0x34D7,
+ 0x34D8, 0x34D9, 0x34DA, 0x34DB, 0x34DC, 0x34DD, 0x34DE, 0x34DF, 0x34E0,
+ 0x34E1, 0x34E2, 0x34E3, 0x34E4, 0x34E5, 0x34E6, 0x34E7, 0x34E8, 0x34E9,
+ 0x34EA, 0x34EB, 0x34EC, 0x34ED, 0x34EE, 0x34EF, 0x34F0, 0x34F1, 0x34F2,
+ 0x34F3, 0x34F4, 0x34F5, 0x34F6, 0x34F7, 0x34F8, 0x34F9, 0x34FA, 0x34FB,
+ 0x34FC, 0x34FD, 0x34FE, 0x34FF, 0x3500, 0x3501, 0x3502, 0x3503, 0x3504,
+ 0x3505, 0x3506, 0x3507, 0x3508, 0x3509, 0x350A, 0x350B, 0x350C, 0x350D,
+ 0x350E, 0x350F, 0x3510, 0x3511, 0x3512, 0x3513, 0x3514, 0x3515, 0x3516,
+ 0x3517, 0x3518, 0x3519, 0x351A, 0x351B, 0x351C, 0x351D, 0x351E, 0x351F,
+ 0x3520, 0x3521, 0x3522, 0x3523, 0x3524, 0x3525, 0x3526, 0x3527, 0x3528,
+ 0x3529, 0x352A, 0x352B, 0x352C, 0x352D, 0x352E, 0x352F, 0x3530, 0x3531,
+ 0x3532, 0x3533, 0x3534, 0x3535, 0x3536, 0x3537, 0x3538, 0x3539, 0x353A,
+ 0x353B, 0x353C, 0x353D, 0x353E, 0x353F, 0x3540, 0x3541, 0x3542, 0x3543,
+ 0x3544, 0x3545, 0x3546, 0x3547, 0x3548, 0x3549, 0x354A, 0x354B, 0x354C,
+ 0x354D, 0x354E, 0x354F, 0x3550, 0x3551, 0x3552, 0x3553, 0x3554, 0x3555,
+ 0x3556, 0x3557, 0x3558, 0x3559, 0x355A, 0x355B, 0x355C, 0x355D, 0x355E,
+ 0x355F, 0x3560, 0x3561, 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567,
+ 0x3568, 0x3569, 0x356A, 0x356B, 0x356C, 0x356D, 0x356E, 0x356F, 0x3570,
+ 0x3571, 0x3572, 0x3573, 0x3574, 0x3575, 0x3576, 0x3577, 0x3578, 0x3579,
+ 0x357A, 0x357B, 0x357C, 0x357D, 0x357E, 0x357F, 0x3580, 0x3581, 0x3582,
+ 0x3583, 0x3584, 0x3585, 0x3586, 0x3587, 0x3588, 0x3589, 0x358A, 0x358B,
+ 0x358C, 0x358D, 0x358E, 0x358F, 0x3590, 0x3591, 0x3592, 0x3593, 0x3594,
+ 0x3595, 0x3596, 0x3597, 0x3598, 0x3599, 0x359A, 0x359B, 0x359C, 0x359D,
+ 0x359F, 0x35A0, 0x35A1, 0x35A2, 0x35A3, 0x35A4, 0x35A5, 0x35A6, 0x35A7,
+ 0x35A8, 0x35A9, 0x35AA, 0x35AB, 0x35AC, 0x35AD, 0x35AE, 0x35AF, 0x35B0,
+ 0x35B1, 0x35B2, 0x35B3, 0x35B4, 0x35B5, 0x35B6, 0x35B7, 0x35B8, 0x35B9,
+ 0x35BA, 0x35BB, 0x35BC, 0x35BD, 0x35BE, 0x35BF, 0x35C0, 0x35C1, 0x35C2,
+ 0x35C3, 0x35C4, 0x35C5, 0x35C6, 0x35C7, 0x35C8, 0x35C9, 0x35CA, 0x35CB,
+ 0x35CC, 0x35CD, 0x35CE, 0x35CF, 0x35D0, 0x35D1, 0x35D2, 0x35D3, 0x35D4,
+ 0x35D5, 0x35D6, 0x35D7, 0x35D8, 0x35D9, 0x35DA, 0x35DB, 0x35DC, 0x35DD,
+ 0x35DE, 0x35DF, 0x35E0, 0x35E1, 0x35E2, 0x35E3, 0x35E4, 0x35E5, 0x35E6,
+ 0x35E7, 0x35E8, 0x35E9, 0x35EA, 0x35EB, 0x35EC, 0x35ED, 0x35EE, 0x35EF,
+ 0x35F0, 0x35F1, 0x35F2, 0x35F3, 0x35F4, 0x35F5, 0x35F6, 0x35F7, 0x35F8,
+ 0x35F9, 0x35FA, 0x35FB, 0x35FC, 0x35FD, 0x35FE, 0x35FF, 0x3600, 0x3601,
+ 0x3602, 0x3603, 0x3604, 0x3605, 0x3606, 0x3607, 0x3608, 0x3609, 0x360A,
+ 0x360B, 0x360C, 0x360D, 0x360F, 0x3610, 0x3611, 0x3612, 0x3613, 0x3614,
+ 0x3615, 0x3616, 0x3617, 0x3618, 0x3619, 0x361B, 0x361C, 0x361D, 0x361E,
+ 0x361F, 0x3620, 0x3621, 0x3622, 0x3623, 0x3624, 0x3625, 0x3626, 0x3627,
+ 0x3628, 0x3629, 0x362A, 0x362B, 0x362C, 0x362D, 0x362E, 0x362F, 0x3630,
+ 0x3631, 0x3632, 0x3633, 0x3634, 0x3635, 0x3636, 0x3637, 0x3638, 0x3639,
+ 0x363A, 0x363B, 0x363C, 0x363D, 0x363E, 0x363F, 0x3640, 0x3641, 0x3642,
+ 0x3643, 0x3644, 0x3645, 0x3646, 0x3647, 0x3648, 0x3649, 0x364A, 0x364B,
+ 0x364C, 0x364D, 0x364E, 0x364F, 0x3650, 0x3651, 0x3652, 0x3653, 0x3654,
+ 0x3655, 0x3656, 0x3657, 0x3658, 0x3659, 0x365A, 0x365B, 0x365C, 0x365D,
+ 0x365E, 0x365F, 0x3660, 0x3661, 0x3662, 0x3663, 0x3664, 0x3665, 0x3666,
+ 0x3667, 0x3668, 0x3669, 0x366A, 0x366B, 0x366C, 0x366D, 0x366E, 0x366F,
+ 0x3670, 0x3671, 0x3672, 0x3673, 0x3674, 0x3675, 0x3676, 0x3677, 0x3678,
+ 0x3679, 0x367A, 0x367B, 0x367C, 0x367D, 0x367E, 0x367F, 0x3680, 0x3681,
+ 0x3682, 0x3683, 0x3684, 0x3685, 0x3686, 0x3687, 0x3688, 0x3689, 0x368A,
+ 0x368B, 0x368C, 0x368D, 0x368E, 0x368F, 0x3690, 0x3691, 0x3692, 0x3693,
+ 0x3694, 0x3695, 0x3696, 0x3697, 0x3698, 0x3699, 0x369A, 0x369B, 0x369C,
+ 0x369D, 0x369E, 0x369F, 0x36A0, 0x36A1, 0x36A2, 0x36A3, 0x36A4, 0x36A5,
+ 0x36A6, 0x36A7, 0x36A8, 0x36A9, 0x36AA, 0x36AB, 0x36AC, 0x36AD, 0x36AE,
+ 0x36AF, 0x36B0, 0x36B1, 0x36B2, 0x36B3, 0x36B4, 0x36B5, 0x36B6, 0x36B7,
+ 0x36B8, 0x36B9, 0x36BA, 0x36BB, 0x36BC, 0x36BD, 0x36BE, 0x36BF, 0x36C0,
+ 0x36C1, 0x36C2, 0x36C3, 0x36C4, 0x36C5, 0x36C6, 0x36C7, 0x36C8, 0x36C9,
+ 0x36CA, 0x36CB, 0x36CC, 0x36CD, 0x36CE, 0x36CF, 0x36D0, 0x36D1, 0x36D2,
+ 0x36D3, 0x36D4, 0x36D5, 0x36D6, 0x36D7, 0x36D8, 0x36D9, 0x36DA, 0x36DB,
+ 0x36DC, 0x36DD, 0x36DE, 0x36DF, 0x36E0, 0x36E1, 0x36E2, 0x36E3, 0x36E4,
+ 0x36E5, 0x36E6, 0x36E7, 0x36E8, 0x36E9, 0x36EA, 0x36EB, 0x36EC, 0x36ED,
+ 0x36EE, 0x36EF, 0x36F0, 0x36F1, 0x36F2, 0x36F3, 0x36F4, 0x36F5, 0x36F6,
+ 0x36F7, 0x36F8, 0x36F9, 0x36FA, 0x36FB, 0x36FC, 0x36FD, 0x36FE, 0x36FF,
+ 0x3700, 0x3701, 0x3702, 0x3703, 0x3704, 0x3705, 0x3706, 0x3707, 0x3708,
+ 0x3709, 0x370A, 0x370B, 0x370C, 0x370D, 0x370E, 0x370F, 0x3710, 0x3711,
+ 0x3712, 0x3713, 0x3714, 0x3715, 0x3716, 0x3717, 0x3718, 0x3719, 0x371A,
+ 0x371B, 0x371C, 0x371D, 0x371E, 0x371F, 0x3720, 0x3721, 0x3722, 0x3723,
+ 0x3724, 0x3725, 0x3726, 0x3727, 0x3728, 0x3729, 0x372A, 0x372B, 0x372C,
+ 0x372D, 0x372E, 0x372F, 0x3730, 0x3731, 0x3732, 0x3733, 0x3734, 0x3735,
+ 0x3736, 0x3737, 0x3738, 0x3739, 0x373A, 0x373B, 0x373C, 0x373D, 0x373E,
+ 0x373F, 0x3740, 0x3741, 0x3742, 0x3743, 0x3744, 0x3745, 0x3746, 0x3747,
+ 0x3748, 0x3749, 0x374A, 0x374B, 0x374C, 0x374D, 0x374E, 0x374F, 0x3750,
+ 0x3751, 0x3752, 0x3753, 0x3754, 0x3755, 0x3756, 0x3757, 0x3758, 0x3759,
+ 0x375A, 0x375B, 0x375C, 0x375D, 0x375E, 0x375F, 0x3760, 0x3761, 0x3762,
+ 0x3763, 0x3764, 0x3765, 0x3766, 0x3767, 0x3768, 0x3769, 0x376A, 0x376B,
+ 0x376C, 0x376D, 0x376E, 0x376F, 0x3770, 0x3771, 0x3772, 0x3773, 0x3774,
+ 0x3775, 0x3776, 0x3777, 0x3778, 0x3779, 0x377A, 0x377B, 0x377C, 0x377D,
+ 0x377E, 0x377F, 0x3780, 0x3781, 0x3782, 0x3783, 0x3784, 0x3785, 0x3786,
+ 0x3787, 0x3788, 0x3789, 0x378A, 0x378B, 0x378C, 0x378D, 0x378E, 0x378F,
+ 0x3790, 0x3791, 0x3792, 0x3793, 0x3794, 0x3795, 0x3796, 0x3797, 0x3798,
+ 0x3799, 0x379A, 0x379B, 0x379C, 0x379D, 0x379E, 0x379F, 0x37A0, 0x37A1,
+ 0x37A2, 0x37A3, 0x37A4, 0x37A5, 0x37A6, 0x37A7, 0x37A8, 0x37A9, 0x37AA,
+ 0x37AB, 0x37AC, 0x37AD, 0x37AE, 0x37AF, 0x37B0, 0x37B1, 0x37B2, 0x37B3,
+ 0x37B4, 0x37B5, 0x37B6, 0x37B7, 0x37B8, 0x37B9, 0x37BA, 0x37BB, 0x37BC,
+ 0x37BD, 0x37BE, 0x37BF, 0x37C0, 0x37C1, 0x37C2, 0x37C3, 0x37C4, 0x37C5,
+ 0x37C6, 0x37C7, 0x37C8, 0x37C9, 0x37CA, 0x37CB, 0x37CC, 0x37CD, 0x37CE,
+ 0x37CF, 0x37D0, 0x37D1, 0x37D2, 0x37D3, 0x37D4, 0x37D5, 0x37D6, 0x37D7,
+ 0x37D8, 0x37D9, 0x37DA, 0x37DB, 0x37DC, 0x37DD, 0x37DE, 0x37DF, 0x37E0,
+ 0x37E1, 0x37E2, 0x37E3, 0x37E4, 0x37E5, 0x37E6, 0x37E7, 0x37E8, 0x37E9,
+ 0x37EA, 0x37EB, 0x37EC, 0x37ED, 0x37EE, 0x37EF, 0x37F0, 0x37F1, 0x37F2,
+ 0x37F3, 0x37F4, 0x37F5, 0x37F6, 0x37F7, 0x37F8, 0x37F9, 0x37FA, 0x37FB,
+ 0x37FC, 0x37FD, 0x37FE, 0x37FF, 0x3800, 0x3801, 0x3802, 0x3803, 0x3804,
+ 0x3805, 0x3806, 0x3807, 0x3808, 0x3809, 0x380A, 0x380B, 0x380C, 0x380D,
+ 0x380E, 0x380F, 0x3810, 0x3811, 0x3812, 0x3813, 0x3814, 0x3815, 0x3816,
+ 0x3817, 0x3818, 0x3819, 0x381A, 0x381B, 0x381C, 0x381D, 0x381E, 0x381F,
+ 0x3820, 0x3821, 0x3822, 0x3823, 0x3824, 0x3825, 0x3826, 0x3827, 0x3828,
+ 0x3829, 0x382A, 0x382B, 0x382C, 0x382D, 0x382E, 0x382F, 0x3830, 0x3831,
+ 0x3832, 0x3833, 0x3834, 0x3835, 0x3836, 0x3837, 0x3838, 0x3839, 0x383A,
+ 0x383B, 0x383C, 0x383D, 0x383E, 0x383F, 0x3840, 0x3841, 0x3842, 0x3843,
+ 0x3844, 0x3845, 0x3846, 0x3847, 0x3848, 0x3849, 0x384A, 0x384B, 0x384C,
+ 0x384D, 0x384E, 0x384F, 0x3850, 0x3851, 0x3852, 0x3853, 0x3854, 0x3855,
+ 0x3856, 0x3857, 0x3858, 0x3859, 0x385A, 0x385B, 0x385C, 0x385D, 0x385E,
+ 0x385F, 0x3860, 0x3861, 0x3862, 0x3863, 0x3864, 0x3865, 0x3866, 0x3867,
+ 0x3868, 0x3869, 0x386A, 0x386B, 0x386C, 0x386D, 0x386E, 0x386F, 0x3870,
+ 0x3871, 0x3872, 0x3873, 0x3874, 0x3875, 0x3876, 0x3877, 0x3878, 0x3879,
+ 0x387A, 0x387B, 0x387C, 0x387D, 0x387E, 0x387F, 0x3880, 0x3881, 0x3882,
+ 0x3883, 0x3884, 0x3885, 0x3886, 0x3887, 0x3888, 0x3889, 0x388A, 0x388B,
+ 0x388C, 0x388D, 0x388E, 0x388F, 0x3890, 0x3891, 0x3892, 0x3893, 0x3894,
+ 0x3895, 0x3896, 0x3897, 0x3898, 0x3899, 0x389A, 0x389B, 0x389C, 0x389D,
+ 0x389E, 0x389F, 0x38A0, 0x38A1, 0x38A2, 0x38A3, 0x38A4, 0x38A5, 0x38A6,
+ 0x38A7, 0x38A8, 0x38A9, 0x38AA, 0x38AB, 0x38AC, 0x38AD, 0x38AE, 0x38AF,
+ 0x38B0, 0x38B1, 0x38B2, 0x38B3, 0x38B4, 0x38B5, 0x38B6, 0x38B7, 0x38B8,
+ 0x38B9, 0x38BA, 0x38BB, 0x38BC, 0x38BD, 0x38BE, 0x38BF, 0x38C0, 0x38C1,
+ 0x38C2, 0x38C3, 0x38C4, 0x38C5, 0x38C6, 0x38C7, 0x38C8, 0x38C9, 0x38CA,
+ 0x38CB, 0x38CC, 0x38CD, 0x38CE, 0x38CF, 0x38D0, 0x38D1, 0x38D2, 0x38D3,
+ 0x38D4, 0x38D5, 0x38D6, 0x38D7, 0x38D8, 0x38D9, 0x38DA, 0x38DB, 0x38DC,
+ 0x38DD, 0x38DE, 0x38DF, 0x38E0, 0x38E1, 0x38E2, 0x38E3, 0x38E4, 0x38E5,
+ 0x38E6, 0x38E7, 0x38E8, 0x38E9, 0x38EA, 0x38EB, 0x38EC, 0x38ED, 0x38EE,
+ 0x38EF, 0x38F0, 0x38F1, 0x38F2, 0x38F3, 0x38F4, 0x38F5, 0x38F6, 0x38F7,
+ 0x38F8, 0x38F9, 0x38FA, 0x38FB, 0x38FC, 0x38FD, 0x38FE, 0x38FF, 0x3900,
+ 0x3901, 0x3902, 0x3903, 0x3904, 0x3905, 0x3906, 0x3907, 0x3908, 0x3909,
+ 0x390A, 0x390B, 0x390C, 0x390D, 0x390E, 0x390F, 0x3910, 0x3911, 0x3912,
+ 0x3913, 0x3914, 0x3915, 0x3916, 0x3917, 0x3919, 0x391A, 0x391B, 0x391C,
+ 0x391D, 0x391E, 0x391F, 0x3920, 0x3921, 0x3922, 0x3923, 0x3924, 0x3925,
+ 0x3926, 0x3927, 0x3928, 0x3929, 0x392A, 0x392B, 0x392C, 0x392D, 0x392E,
+ 0x392F, 0x3930, 0x3931, 0x3932, 0x3933, 0x3934, 0x3935, 0x3936, 0x3937,
+ 0x3938, 0x3939, 0x393A, 0x393B, 0x393C, 0x393D, 0x393E, 0x393F, 0x3940,
+ 0x3941, 0x3942, 0x3943, 0x3944, 0x3945, 0x3946, 0x3947, 0x3948, 0x3949,
+ 0x394A, 0x394B, 0x394C, 0x394D, 0x394E, 0x394F, 0x3950, 0x3951, 0x3952,
+ 0x3953, 0x3954, 0x3955, 0x3956, 0x3957, 0x3958, 0x3959, 0x395A, 0x395B,
+ 0x395C, 0x395D, 0x395E, 0x395F, 0x3960, 0x3961, 0x3962, 0x3963, 0x3964,
+ 0x3965, 0x3966, 0x3967, 0x3968, 0x3969, 0x396A, 0x396B, 0x396C, 0x396D,
+ 0x396F, 0x3970, 0x3971, 0x3972, 0x3973, 0x3974, 0x3975, 0x3976, 0x3977,
+ 0x3978, 0x3979, 0x397A, 0x397B, 0x397C, 0x397D, 0x397E, 0x397F, 0x3980,
+ 0x3981, 0x3982, 0x3983, 0x3984, 0x3985, 0x3986, 0x3987, 0x3988, 0x3989,
+ 0x398A, 0x398B, 0x398C, 0x398D, 0x398E, 0x398F, 0x3990, 0x3991, 0x3992,
+ 0x3993, 0x3994, 0x3995, 0x3996, 0x3997, 0x3998, 0x3999, 0x399A, 0x399B,
+ 0x399C, 0x399D, 0x399E, 0x399F, 0x39A0, 0x39A1, 0x39A2, 0x39A3, 0x39A4,
+ 0x39A5, 0x39A6, 0x39A7, 0x39A8, 0x39A9, 0x39AA, 0x39AB, 0x39AC, 0x39AD,
+ 0x39AE, 0x39AF, 0x39B0, 0x39B1, 0x39B2, 0x39B3, 0x39B4, 0x39B5, 0x39B6,
+ 0x39B7, 0x39B8, 0x39B9, 0x39BA, 0x39BB, 0x39BC, 0x39BD, 0x39BE, 0x39BF,
+ 0x39C0, 0x39C1, 0x39C2, 0x39C3, 0x39C4, 0x39C5, 0x39C6, 0x39C7, 0x39C8,
+ 0x39C9, 0x39CA, 0x39CB, 0x39CC, 0x39CD, 0x39CE, 0x39D1, 0x39D2, 0x39D3,
+ 0x39D4, 0x39D5, 0x39D6, 0x39D7, 0x39D8, 0x39D9, 0x39DA, 0x39DB, 0x39DC,
+ 0x39DD, 0x39DE, 0x39E0, 0x39E1, 0x39E2, 0x39E3, 0x39E4, 0x39E5, 0x39E6,
+ 0x39E7, 0x39E8, 0x39E9, 0x39EA, 0x39EB, 0x39EC, 0x39ED, 0x39EE, 0x39EF,
+ 0x39F0, 0x39F1, 0x39F2, 0x39F3, 0x39F4, 0x39F5, 0x39F6, 0x39F7, 0x39F8,
+ 0x39F9, 0x39FA, 0x39FB, 0x39FC, 0x39FD, 0x39FE, 0x39FF, 0x3A00, 0x3A01,
+ 0x3A02, 0x3A03, 0x3A04, 0x3A05, 0x3A06, 0x3A07, 0x3A08, 0x3A09, 0x3A0A,
+ 0x3A0B, 0x3A0C, 0x3A0D, 0x3A0E, 0x3A0F, 0x3A10, 0x3A11, 0x3A12, 0x3A13,
+ 0x3A14, 0x3A15, 0x3A16, 0x3A17, 0x3A18, 0x3A19, 0x3A1A, 0x3A1B, 0x3A1C,
+ 0x3A1D, 0x3A1E, 0x3A1F, 0x3A20, 0x3A21, 0x3A22, 0x3A23, 0x3A24, 0x3A25,
+ 0x3A26, 0x3A27, 0x3A28, 0x3A29, 0x3A2A, 0x3A2B, 0x3A2C, 0x3A2D, 0x3A2E,
+ 0x3A2F, 0x3A30, 0x3A31, 0x3A32, 0x3A33, 0x3A34, 0x3A35, 0x3A36, 0x3A37,
+ 0x3A38, 0x3A39, 0x3A3A, 0x3A3B, 0x3A3C, 0x3A3D, 0x3A3E, 0x3A3F, 0x3A40,
+ 0x3A41, 0x3A42, 0x3A43, 0x3A44, 0x3A45, 0x3A46, 0x3A47, 0x3A48, 0x3A49,
+ 0x3A4A, 0x3A4B, 0x3A4C, 0x3A4D, 0x3A4E, 0x3A4F, 0x3A50, 0x3A51, 0x3A52,
+ 0x3A53, 0x3A54, 0x3A55, 0x3A56, 0x3A57, 0x3A58, 0x3A59, 0x3A5A, 0x3A5B,
+ 0x3A5C, 0x3A5D, 0x3A5E, 0x3A5F, 0x3A60, 0x3A61, 0x3A62, 0x3A63, 0x3A64,
+ 0x3A65, 0x3A66, 0x3A67, 0x3A68, 0x3A69, 0x3A6A, 0x3A6B, 0x3A6C, 0x3A6D,
+ 0x3A6E, 0x3A6F, 0x3A70, 0x3A71, 0x3A72, 0x3A74, 0x3A75, 0x3A76, 0x3A77,
+ 0x3A78, 0x3A79, 0x3A7A, 0x3A7B, 0x3A7C, 0x3A7D, 0x3A7E, 0x3A7F, 0x3A80,
+ 0x3A81, 0x3A82, 0x3A83, 0x3A84, 0x3A85, 0x3A86, 0x3A87, 0x3A88, 0x3A89,
+ 0x3A8A, 0x3A8B, 0x3A8C, 0x3A8D, 0x3A8E, 0x3A8F, 0x3A90, 0x3A91, 0x3A92,
+ 0x3A93, 0x3A94, 0x3A95, 0x3A96, 0x3A97, 0x3A98, 0x3A99, 0x3A9A, 0x3A9B,
+ 0x3A9C, 0x3A9D, 0x3A9E, 0x3A9F, 0x3AA0, 0x3AA1, 0x3AA2, 0x3AA3, 0x3AA4,
+ 0x3AA5, 0x3AA6, 0x3AA7, 0x3AA8, 0x3AA9, 0x3AAA, 0x3AAB, 0x3AAC, 0x3AAD,
+ 0x3AAE, 0x3AAF, 0x3AB0, 0x3AB1, 0x3AB2, 0x3AB3, 0x3AB4, 0x3AB5, 0x3AB6,
+ 0x3AB7, 0x3AB8, 0x3AB9, 0x3ABA, 0x3ABB, 0x3ABC, 0x3ABD, 0x3ABE, 0x3ABF,
+ 0x3AC0, 0x3AC1, 0x3AC2, 0x3AC3, 0x3AC4, 0x3AC5, 0x3AC6, 0x3AC7, 0x3AC8,
+ 0x3AC9, 0x3ACA, 0x3ACB, 0x3ACC, 0x3ACD, 0x3ACE, 0x3ACF, 0x3AD0, 0x3AD1,
+ 0x3AD2, 0x3AD3, 0x3AD4, 0x3AD5, 0x3AD6, 0x3AD7, 0x3AD8, 0x3AD9, 0x3ADA,
+ 0x3ADB, 0x3ADC, 0x3ADD, 0x3ADE, 0x3ADF, 0x3AE0, 0x3AE1, 0x3AE2, 0x3AE3,
+ 0x3AE4, 0x3AE5, 0x3AE6, 0x3AE7, 0x3AE8, 0x3AE9, 0x3AEA, 0x3AEB, 0x3AEC,
+ 0x3AED, 0x3AEE, 0x3AEF, 0x3AF0, 0x3AF1, 0x3AF2, 0x3AF3, 0x3AF4, 0x3AF5,
+ 0x3AF6, 0x3AF7, 0x3AF8, 0x3AF9, 0x3AFA, 0x3AFB, 0x3AFC, 0x3AFD, 0x3AFE,
+ 0x3AFF, 0x3B00, 0x3B01, 0x3B02, 0x3B03, 0x3B04, 0x3B05, 0x3B06, 0x3B07,
+ 0x3B08, 0x3B09, 0x3B0A, 0x3B0B, 0x3B0C, 0x3B0D, 0x3B0E, 0x3B0F, 0x3B10,
+ 0x3B11, 0x3B12, 0x3B13, 0x3B14, 0x3B15, 0x3B16, 0x3B17, 0x3B18, 0x3B19,
+ 0x3B1A, 0x3B1B, 0x3B1C, 0x3B1D, 0x3B1E, 0x3B1F, 0x3B20, 0x3B21, 0x3B22,
+ 0x3B23, 0x3B24, 0x3B25, 0x3B26, 0x3B27, 0x3B28, 0x3B29, 0x3B2A, 0x3B2B,
+ 0x3B2C, 0x3B2D, 0x3B2E, 0x3B2F, 0x3B30, 0x3B31, 0x3B32, 0x3B33, 0x3B34,
+ 0x3B35, 0x3B36, 0x3B37, 0x3B38, 0x3B39, 0x3B3A, 0x3B3B, 0x3B3C, 0x3B3D,
+ 0x3B3E, 0x3B3F, 0x3B40, 0x3B41, 0x3B42, 0x3B43, 0x3B44, 0x3B45, 0x3B46,
+ 0x3B47, 0x3B48, 0x3B49, 0x3B4A, 0x3B4B, 0x3B4C, 0x3B4D, 0x3B4F, 0x3B50,
+ 0x3B51, 0x3B52, 0x3B53, 0x3B54, 0x3B55, 0x3B56, 0x3B57, 0x3B58, 0x3B59,
+ 0x3B5A, 0x3B5B, 0x3B5C, 0x3B5D, 0x3B5E, 0x3B5F, 0x3B60, 0x3B61, 0x3B62,
+ 0x3B63, 0x3B64, 0x3B65, 0x3B66, 0x3B67, 0x3B68, 0x3B69, 0x3B6A, 0x3B6B,
+ 0x3B6C, 0x3B6D, 0x3B6E, 0x3B6F, 0x3B70, 0x3B71, 0x3B72, 0x3B73, 0x3B74,
+ 0x3B75, 0x3B76, 0x3B77, 0x3B78, 0x3B79, 0x3B7A, 0x3B7B, 0x3B7C, 0x3B7D,
+ 0x3B7E, 0x3B7F, 0x3B80, 0x3B81, 0x3B82, 0x3B83, 0x3B84, 0x3B85, 0x3B86,
+ 0x3B87, 0x3B88, 0x3B89, 0x3B8A, 0x3B8B, 0x3B8C, 0x3B8D, 0x3B8E, 0x3B8F,
+ 0x3B90, 0x3B91, 0x3B92, 0x3B93, 0x3B94, 0x3B95, 0x3B96, 0x3B97, 0x3B98,
+ 0x3B99, 0x3B9A, 0x3B9B, 0x3B9C, 0x3B9D, 0x3B9E, 0x3B9F, 0x3BA0, 0x3BA1,
+ 0x3BA2, 0x3BA3, 0x3BA4, 0x3BA5, 0x3BA6, 0x3BA7, 0x3BA8, 0x3BA9, 0x3BAA,
+ 0x3BAB, 0x3BAC, 0x3BAD, 0x3BAE, 0x3BAF, 0x3BB0, 0x3BB1, 0x3BB2, 0x3BB3,
+ 0x3BB4, 0x3BB5, 0x3BB6, 0x3BB7, 0x3BB8, 0x3BB9, 0x3BBA, 0x3BBB, 0x3BBC,
+ 0x3BBD, 0x3BBE, 0x3BBF, 0x3BC0, 0x3BC1, 0x3BC2, 0x3BC3, 0x3BC4, 0x3BC5,
+ 0x3BC6, 0x3BC7, 0x3BC8, 0x3BC9, 0x3BCA, 0x3BCB, 0x3BCC, 0x3BCD, 0x3BCE,
+ 0x3BCF, 0x3BD0, 0x3BD1, 0x3BD2, 0x3BD3, 0x3BD4, 0x3BD5, 0x3BD6, 0x3BD7,
+ 0x3BD8, 0x3BD9, 0x3BDA, 0x3BDB, 0x3BDC, 0x3BDD, 0x3BDE, 0x3BDF, 0x3BE0,
+ 0x3BE1, 0x3BE2, 0x3BE3, 0x3BE4, 0x3BE5, 0x3BE6, 0x3BE7, 0x3BE8, 0x3BE9,
+ 0x3BEA, 0x3BEB, 0x3BEC, 0x3BED, 0x3BEE, 0x3BEF, 0x3BF0, 0x3BF1, 0x3BF2,
+ 0x3BF3, 0x3BF4, 0x3BF5, 0x3BF6, 0x3BF7, 0x3BF8, 0x3BF9, 0x3BFA, 0x3BFB,
+ 0x3BFC, 0x3BFD, 0x3BFE, 0x3BFF, 0x3C00, 0x3C01, 0x3C02, 0x3C03, 0x3C04,
+ 0x3C05, 0x3C06, 0x3C07, 0x3C08, 0x3C09, 0x3C0A, 0x3C0B, 0x3C0C, 0x3C0D,
+ 0x3C0E, 0x3C0F, 0x3C10, 0x3C11, 0x3C12, 0x3C13, 0x3C14, 0x3C15, 0x3C16,
+ 0x3C17, 0x3C18, 0x3C19, 0x3C1A, 0x3C1B, 0x3C1C, 0x3C1D, 0x3C1E, 0x3C1F,
+ 0x3C20, 0x3C21, 0x3C22, 0x3C23, 0x3C24, 0x3C25, 0x3C26, 0x3C27, 0x3C28,
+ 0x3C29, 0x3C2A, 0x3C2B, 0x3C2C, 0x3C2D, 0x3C2E, 0x3C2F, 0x3C30, 0x3C31,
+ 0x3C32, 0x3C33, 0x3C34, 0x3C35, 0x3C36, 0x3C37, 0x3C38, 0x3C39, 0x3C3A,
+ 0x3C3B, 0x3C3C, 0x3C3D, 0x3C3E, 0x3C3F, 0x3C40, 0x3C41, 0x3C42, 0x3C43,
+ 0x3C44, 0x3C45, 0x3C46, 0x3C47, 0x3C48, 0x3C49, 0x3C4A, 0x3C4B, 0x3C4C,
+ 0x3C4D, 0x3C4E, 0x3C4F, 0x3C50, 0x3C51, 0x3C52, 0x3C53, 0x3C54, 0x3C55,
+ 0x3C56, 0x3C57, 0x3C58, 0x3C59, 0x3C5A, 0x3C5B, 0x3C5C, 0x3C5D, 0x3C5E,
+ 0x3C5F, 0x3C60, 0x3C61, 0x3C62, 0x3C63, 0x3C64, 0x3C65, 0x3C66, 0x3C67,
+ 0x3C68, 0x3C69, 0x3C6A, 0x3C6B, 0x3C6C, 0x3C6D, 0x3C6F, 0x3C70, 0x3C71,
+ 0x3C72, 0x3C73, 0x3C74, 0x3C75, 0x3C76, 0x3C77, 0x3C78, 0x3C79, 0x3C7A,
+ 0x3C7B, 0x3C7C, 0x3C7D, 0x3C7E, 0x3C7F, 0x3C80, 0x3C81, 0x3C82, 0x3C83,
+ 0x3C84, 0x3C85, 0x3C86, 0x3C87, 0x3C88, 0x3C89, 0x3C8A, 0x3C8B, 0x3C8C,
+ 0x3C8D, 0x3C8E, 0x3C8F, 0x3C90, 0x3C91, 0x3C92, 0x3C93, 0x3C94, 0x3C95,
+ 0x3C96, 0x3C97, 0x3C98, 0x3C99, 0x3C9A, 0x3C9B, 0x3C9C, 0x3C9D, 0x3C9E,
+ 0x3C9F, 0x3CA0, 0x3CA1, 0x3CA2, 0x3CA3, 0x3CA4, 0x3CA5, 0x3CA6, 0x3CA7,
+ 0x3CA8, 0x3CA9, 0x3CAA, 0x3CAB, 0x3CAC, 0x3CAD, 0x3CAE, 0x3CAF, 0x3CB0,
+ 0x3CB1, 0x3CB2, 0x3CB3, 0x3CB4, 0x3CB5, 0x3CB6, 0x3CB7, 0x3CB8, 0x3CB9,
+ 0x3CBA, 0x3CBB, 0x3CBC, 0x3CBD, 0x3CBE, 0x3CBF, 0x3CC0, 0x3CC1, 0x3CC2,
+ 0x3CC3, 0x3CC4, 0x3CC5, 0x3CC6, 0x3CC7, 0x3CC8, 0x3CC9, 0x3CCA, 0x3CCB,
+ 0x3CCC, 0x3CCD, 0x3CCE, 0x3CCF, 0x3CD0, 0x3CD1, 0x3CD2, 0x3CD3, 0x3CD4,
+ 0x3CD5, 0x3CD6, 0x3CD7, 0x3CD8, 0x3CD9, 0x3CDA, 0x3CDB, 0x3CDC, 0x3CDD,
+ 0x3CDE, 0x3CDF, 0x3CE1, 0x3CE2, 0x3CE3, 0x3CE4, 0x3CE5, 0x3CE6, 0x3CE7,
+ 0x3CE8, 0x3CE9, 0x3CEA, 0x3CEB, 0x3CEC, 0x3CED, 0x3CEE, 0x3CEF, 0x3CF0,
+ 0x3CF1, 0x3CF2, 0x3CF3, 0x3CF4, 0x3CF5, 0x3CF6, 0x3CF7, 0x3CF8, 0x3CF9,
+ 0x3CFA, 0x3CFB, 0x3CFC, 0x3CFD, 0x3CFE, 0x3CFF, 0x3D00, 0x3D01, 0x3D02,
+ 0x3D03, 0x3D04, 0x3D05, 0x3D06, 0x3D07, 0x3D08, 0x3D09, 0x3D0A, 0x3D0B,
+ 0x3D0C, 0x3D0D, 0x3D0E, 0x3D0F, 0x3D10, 0x3D11, 0x3D12, 0x3D13, 0x3D14,
+ 0x3D15, 0x3D16, 0x3D17, 0x3D18, 0x3D19, 0x3D1A, 0x3D1B, 0x3D1C, 0x3D1D,
+ 0x3D1E, 0x3D1F, 0x3D20, 0x3D21, 0x3D22, 0x3D23, 0x3D24, 0x3D25, 0x3D26,
+ 0x3D27, 0x3D28, 0x3D29, 0x3D2A, 0x3D2B, 0x3D2C, 0x3D2D, 0x3D2E, 0x3D2F,
+ 0x3D30, 0x3D31, 0x3D32, 0x3D33, 0x3D34, 0x3D35, 0x3D36, 0x3D37, 0x3D38,
+ 0x3D39, 0x3D3A, 0x3D3B, 0x3D3C, 0x3D3D, 0x3D3E, 0x3D3F, 0x3D40, 0x3D41,
+ 0x3D42, 0x3D43, 0x3D44, 0x3D45, 0x3D46, 0x3D47, 0x3D48, 0x3D49, 0x3D4A,
+ 0x3D4B, 0x3D4C, 0x3D4D, 0x3D4E, 0x3D4F, 0x3D50, 0x3D51, 0x3D52, 0x3D53,
+ 0x3D54, 0x3D55, 0x3D56, 0x3D57, 0x3D58, 0x3D59, 0x3D5A, 0x3D5B, 0x3D5C,
+ 0x3D5D, 0x3D5E, 0x3D5F, 0x3D60, 0x3D61, 0x3D62, 0x3D63, 0x3D64, 0x3D65,
+ 0x3D66, 0x3D67, 0x3D68, 0x3D69, 0x3D6A, 0x3D6B, 0x3D6C, 0x3D6D, 0x3D6E,
+ 0x3D6F, 0x3D70, 0x3D71, 0x3D72, 0x3D73, 0x3D74, 0x3D75, 0x3D76, 0x3D77,
+ 0x3D78, 0x3D79, 0x3D7A, 0x3D7B, 0x3D7C, 0x3D7D, 0x3D7E, 0x3D7F, 0x3D80,
+ 0x3D81, 0x3D82, 0x3D83, 0x3D84, 0x3D85, 0x3D86, 0x3D87, 0x3D88, 0x3D89,
+ 0x3D8A, 0x3D8B, 0x3D8C, 0x3D8D, 0x3D8E, 0x3D8F, 0x3D90, 0x3D91, 0x3D92,
+ 0x3D93, 0x3D94, 0x3D95, 0x3D96, 0x3D97, 0x3D98, 0x3D99, 0x3D9A, 0x3D9B,
+ 0x3D9C, 0x3D9D, 0x3D9E, 0x3D9F, 0x3DA0, 0x3DA1, 0x3DA2, 0x3DA3, 0x3DA4,
+ 0x3DA5, 0x3DA6, 0x3DA7, 0x3DA8, 0x3DA9, 0x3DAA, 0x3DAB, 0x3DAC, 0x3DAD,
+ 0x3DAE, 0x3DAF, 0x3DB0, 0x3DB1, 0x3DB2, 0x3DB3, 0x3DB4, 0x3DB5, 0x3DB6,
+ 0x3DB7, 0x3DB8, 0x3DB9, 0x3DBA, 0x3DBB, 0x3DBC, 0x3DBD, 0x3DBE, 0x3DBF,
+ 0x3DC0, 0x3DC1, 0x3DC2, 0x3DC3, 0x3DC4, 0x3DC5, 0x3DC6, 0x3DC7, 0x3DC8,
+ 0x3DC9, 0x3DCA, 0x3DCB, 0x3DCC, 0x3DCD, 0x3DCE, 0x3DCF, 0x3DD0, 0x3DD1,
+ 0x3DD2, 0x3DD3, 0x3DD4, 0x3DD5, 0x3DD6, 0x3DD7, 0x3DD8, 0x3DD9, 0x3DDA,
+ 0x3DDB, 0x3DDC, 0x3DDD, 0x3DDE, 0x3DDF, 0x3DE0, 0x3DE1, 0x3DE2, 0x3DE3,
+ 0x3DE4, 0x3DE5, 0x3DE6, 0x3DE7, 0x3DE8, 0x3DE9, 0x3DEA, 0x3DEB, 0x3DEC,
+ 0x3DED, 0x3DEE, 0x3DEF, 0x3DF0, 0x3DF1, 0x3DF2, 0x3DF3, 0x3DF4, 0x3DF5,
+ 0x3DF6, 0x3DF7, 0x3DF8, 0x3DF9, 0x3DFA, 0x3DFB, 0x3DFC, 0x3DFD, 0x3DFE,
+ 0x3DFF, 0x3E00, 0x3E01, 0x3E02, 0x3E03, 0x3E04, 0x3E05, 0x3E06, 0x3E07,
+ 0x3E08, 0x3E09, 0x3E0A, 0x3E0B, 0x3E0C, 0x3E0D, 0x3E0E, 0x3E0F, 0x3E10,
+ 0x3E11, 0x3E12, 0x3E13, 0x3E14, 0x3E15, 0x3E16, 0x3E17, 0x3E18, 0x3E19,
+ 0x3E1A, 0x3E1B, 0x3E1C, 0x3E1D, 0x3E1E, 0x3E1F, 0x3E20, 0x3E21, 0x3E22,
+ 0x3E23, 0x3E24, 0x3E25, 0x3E26, 0x3E27, 0x3E28, 0x3E29, 0x3E2A, 0x3E2B,
+ 0x3E2C, 0x3E2D, 0x3E2E, 0x3E2F, 0x3E30, 0x3E31, 0x3E32, 0x3E33, 0x3E34,
+ 0x3E35, 0x3E36, 0x3E37, 0x3E38, 0x3E39, 0x3E3A, 0x3E3B, 0x3E3C, 0x3E3D,
+ 0x3E3E, 0x3E3F, 0x3E40, 0x3E41, 0x3E42, 0x3E43, 0x3E44, 0x3E45, 0x3E46,
+ 0x3E47, 0x3E48, 0x3E49, 0x3E4A, 0x3E4B, 0x3E4C, 0x3E4D, 0x3E4E, 0x3E4F,
+ 0x3E50, 0x3E51, 0x3E52, 0x3E53, 0x3E54, 0x3E55, 0x3E56, 0x3E57, 0x3E58,
+ 0x3E59, 0x3E5A, 0x3E5B, 0x3E5C, 0x3E5D, 0x3E5E, 0x3E5F, 0x3E60, 0x3E61,
+ 0x3E62, 0x3E63, 0x3E64, 0x3E65, 0x3E66, 0x3E67, 0x3E68, 0x3E69, 0x3E6A,
+ 0x3E6B, 0x3E6C, 0x3E6D, 0x3E6E, 0x3E6F, 0x3E70, 0x3E71, 0x3E72, 0x3E73,
+ 0x3E74, 0x3E75, 0x3E76, 0x3E77, 0x3E78, 0x3E79, 0x3E7A, 0x3E7B, 0x3E7C,
+ 0x3E7D, 0x3E7E, 0x3E7F, 0x3E80, 0x3E81, 0x3E82, 0x3E83, 0x3E84, 0x3E85,
+ 0x3E86, 0x3E87, 0x3E88, 0x3E89, 0x3E8A, 0x3E8B, 0x3E8C, 0x3E8D, 0x3E8E,
+ 0x3E8F, 0x3E90, 0x3E91, 0x3E92, 0x3E93, 0x3E94, 0x3E95, 0x3E96, 0x3E97,
+ 0x3E98, 0x3E99, 0x3E9A, 0x3E9B, 0x3E9C, 0x3E9D, 0x3E9E, 0x3E9F, 0x3EA0,
+ 0x3EA1, 0x3EA2, 0x3EA3, 0x3EA4, 0x3EA5, 0x3EA6, 0x3EA7, 0x3EA8, 0x3EA9,
+ 0x3EAA, 0x3EAB, 0x3EAC, 0x3EAD, 0x3EAE, 0x3EAF, 0x3EB0, 0x3EB1, 0x3EB2,
+ 0x3EB3, 0x3EB4, 0x3EB5, 0x3EB6, 0x3EB7, 0x3EB8, 0x3EB9, 0x3EBA, 0x3EBB,
+ 0x3EBC, 0x3EBD, 0x3EBE, 0x3EBF, 0x3EC0, 0x3EC1, 0x3EC2, 0x3EC3, 0x3EC4,
+ 0x3EC5, 0x3EC6, 0x3EC7, 0x3EC8, 0x3EC9, 0x3ECA, 0x3ECB, 0x3ECC, 0x3ECD,
+ 0x3ECE, 0x3ECF, 0x3ED0, 0x3ED1, 0x3ED2, 0x3ED3, 0x3ED4, 0x3ED5, 0x3ED6,
+ 0x3ED7, 0x3ED8, 0x3ED9, 0x3EDA, 0x3EDB, 0x3EDC, 0x3EDD, 0x3EDE, 0x3EDF,
+ 0x3EE0, 0x3EE1, 0x3EE2, 0x3EE3, 0x3EE4, 0x3EE5, 0x3EE6, 0x3EE7, 0x3EE8,
+ 0x3EE9, 0x3EEA, 0x3EEB, 0x3EEC, 0x3EED, 0x3EEE, 0x3EEF, 0x3EF0, 0x3EF1,
+ 0x3EF2, 0x3EF3, 0x3EF4, 0x3EF5, 0x3EF6, 0x3EF7, 0x3EF8, 0x3EF9, 0x3EFA,
+ 0x3EFB, 0x3EFC, 0x3EFD, 0x3EFE, 0x3EFF, 0x3F00, 0x3F01, 0x3F02, 0x3F03,
+ 0x3F04, 0x3F05, 0x3F06, 0x3F07, 0x3F08, 0x3F09, 0x3F0A, 0x3F0B, 0x3F0C,
+ 0x3F0D, 0x3F0E, 0x3F0F, 0x3F10, 0x3F11, 0x3F12, 0x3F13, 0x3F14, 0x3F15,
+ 0x3F16, 0x3F17, 0x3F18, 0x3F19, 0x3F1A, 0x3F1B, 0x3F1C, 0x3F1D, 0x3F1E,
+ 0x3F1F, 0x3F20, 0x3F21, 0x3F22, 0x3F23, 0x3F24, 0x3F25, 0x3F26, 0x3F27,
+ 0x3F28, 0x3F29, 0x3F2A, 0x3F2B, 0x3F2C, 0x3F2D, 0x3F2E, 0x3F2F, 0x3F30,
+ 0x3F31, 0x3F32, 0x3F33, 0x3F34, 0x3F35, 0x3F36, 0x3F37, 0x3F38, 0x3F39,
+ 0x3F3A, 0x3F3B, 0x3F3C, 0x3F3D, 0x3F3E, 0x3F3F, 0x3F40, 0x3F41, 0x3F42,
+ 0x3F43, 0x3F44, 0x3F45, 0x3F46, 0x3F47, 0x3F48, 0x3F49, 0x3F4A, 0x3F4B,
+ 0x3F4C, 0x3F4D, 0x3F4E, 0x3F4F, 0x3F50, 0x3F51, 0x3F52, 0x3F53, 0x3F54,
+ 0x3F55, 0x3F56, 0x3F57, 0x3F58, 0x3F59, 0x3F5A, 0x3F5B, 0x3F5C, 0x3F5D,
+ 0x3F5E, 0x3F5F, 0x3F60, 0x3F61, 0x3F62, 0x3F63, 0x3F64, 0x3F65, 0x3F66,
+ 0x3F67, 0x3F68, 0x3F69, 0x3F6A, 0x3F6B, 0x3F6C, 0x3F6D, 0x3F6E, 0x3F6F,
+ 0x3F70, 0x3F71, 0x3F72, 0x3F73, 0x3F74, 0x3F75, 0x3F76, 0x3F77, 0x3F78,
+ 0x3F79, 0x3F7A, 0x3F7B, 0x3F7C, 0x3F7D, 0x3F7E, 0x3F7F, 0x3F80, 0x3F81,
+ 0x3F82, 0x3F83, 0x3F84, 0x3F85, 0x3F86, 0x3F87, 0x3F88, 0x3F89, 0x3F8A,
+ 0x3F8B, 0x3F8C, 0x3F8D, 0x3F8E, 0x3F8F, 0x3F90, 0x3F91, 0x3F92, 0x3F93,
+ 0x3F94, 0x3F95, 0x3F96, 0x3F97, 0x3F98, 0x3F99, 0x3F9A, 0x3F9B, 0x3F9C,
+ 0x3F9D, 0x3F9E, 0x3F9F, 0x3FA0, 0x3FA1, 0x3FA2, 0x3FA3, 0x3FA4, 0x3FA5,
+ 0x3FA6, 0x3FA7, 0x3FA8, 0x3FA9, 0x3FAA, 0x3FAB, 0x3FAC, 0x3FAD, 0x3FAE,
+ 0x3FAF, 0x3FB0, 0x3FB1, 0x3FB2, 0x3FB3, 0x3FB4, 0x3FB5, 0x3FB6, 0x3FB7,
+ 0x3FB8, 0x3FB9, 0x3FBA, 0x3FBB, 0x3FBC, 0x3FBD, 0x3FBE, 0x3FBF, 0x3FC0,
+ 0x3FC1, 0x3FC2, 0x3FC3, 0x3FC4, 0x3FC5, 0x3FC6, 0x3FC7, 0x3FC8, 0x3FC9,
+ 0x3FCA, 0x3FCB, 0x3FCC, 0x3FCD, 0x3FCE, 0x3FCF, 0x3FD0, 0x3FD1, 0x3FD2,
+ 0x3FD3, 0x3FD4, 0x3FD5, 0x3FD6, 0x3FD7, 0x3FD8, 0x3FD9, 0x3FDA, 0x3FDB,
+ 0x3FDC, 0x3FDD, 0x3FDE, 0x3FDF, 0x3FE0, 0x3FE1, 0x3FE2, 0x3FE3, 0x3FE4,
+ 0x3FE5, 0x3FE6, 0x3FE7, 0x3FE8, 0x3FE9, 0x3FEA, 0x3FEB, 0x3FEC, 0x3FED,
+ 0x3FEE, 0x3FEF, 0x3FF0, 0x3FF1, 0x3FF2, 0x3FF3, 0x3FF4, 0x3FF5, 0x3FF6,
+ 0x3FF7, 0x3FF8, 0x3FF9, 0x3FFA, 0x3FFB, 0x3FFC, 0x3FFD, 0x3FFE, 0x3FFF,
+ 0x4000, 0x4001, 0x4002, 0x4003, 0x4004, 0x4005, 0x4006, 0x4007, 0x4008,
+ 0x4009, 0x400A, 0x400B, 0x400C, 0x400D, 0x400E, 0x400F, 0x4010, 0x4011,
+ 0x4012, 0x4013, 0x4014, 0x4015, 0x4016, 0x4017, 0x4018, 0x4019, 0x401A,
+ 0x401B, 0x401C, 0x401D, 0x401E, 0x401F, 0x4020, 0x4021, 0x4022, 0x4023,
+ 0x4024, 0x4025, 0x4026, 0x4027, 0x4028, 0x4029, 0x402A, 0x402B, 0x402C,
+ 0x402D, 0x402E, 0x402F, 0x4030, 0x4031, 0x4032, 0x4033, 0x4034, 0x4035,
+ 0x4036, 0x4037, 0x4038, 0x4039, 0x403A, 0x403B, 0x403C, 0x403D, 0x403E,
+ 0x403F, 0x4040, 0x4041, 0x4042, 0x4043, 0x4044, 0x4045, 0x4046, 0x4047,
+ 0x4048, 0x4049, 0x404A, 0x404B, 0x404C, 0x404D, 0x404E, 0x404F, 0x4050,
+ 0x4051, 0x4052, 0x4053, 0x4054, 0x4055, 0x4057, 0x4058, 0x4059, 0x405A,
+ 0x405B, 0x405C, 0x405D, 0x405E, 0x405F, 0x4060, 0x4061, 0x4062, 0x4063,
+ 0x4064, 0x4065, 0x4066, 0x4067, 0x4068, 0x4069, 0x406A, 0x406B, 0x406C,
+ 0x406D, 0x406E, 0x406F, 0x4070, 0x4071, 0x4072, 0x4073, 0x4074, 0x4075,
+ 0x4076, 0x4077, 0x4078, 0x4079, 0x407A, 0x407B, 0x407C, 0x407D, 0x407E,
+ 0x407F, 0x4080, 0x4081, 0x4082, 0x4083, 0x4084, 0x4085, 0x4086, 0x4087,
+ 0x4088, 0x4089, 0x408A, 0x408B, 0x408C, 0x408D, 0x408E, 0x408F, 0x4090,
+ 0x4091, 0x4092, 0x4093, 0x4094, 0x4095, 0x4096, 0x4097, 0x4098, 0x4099,
+ 0x409A, 0x409B, 0x409C, 0x409D, 0x409E, 0x409F, 0x40A0, 0x40A1, 0x40A2,
+ 0x40A3, 0x40A4, 0x40A5, 0x40A6, 0x40A7, 0x40A8, 0x40A9, 0x40AA, 0x40AB,
+ 0x40AC, 0x40AD, 0x40AE, 0x40AF, 0x40B0, 0x40B1, 0x40B2, 0x40B3, 0x40B4,
+ 0x40B5, 0x40B6, 0x40B7, 0x40B8, 0x40B9, 0x40BA, 0x40BB, 0x40BC, 0x40BD,
+ 0x40BE, 0x40BF, 0x40C0, 0x40C1, 0x40C2, 0x40C3, 0x40C4, 0x40C5, 0x40C6,
+ 0x40C7, 0x40C8, 0x40C9, 0x40CA, 0x40CB, 0x40CC, 0x40CD, 0x40CE, 0x40CF,
+ 0x40D0, 0x40D1, 0x40D2, 0x40D3, 0x40D4, 0x40D5, 0x40D6, 0x40D7, 0x40D8,
+ 0x40D9, 0x40DA, 0x40DB, 0x40DC, 0x40DD, 0x40DE, 0x40DF, 0x40E0, 0x40E1,
+ 0x40E2, 0x40E3, 0x40E4, 0x40E5, 0x40E6, 0x40E7, 0x40E8, 0x40E9, 0x40EA,
+ 0x40EB, 0x40EC, 0x40ED, 0x40EE, 0x40EF, 0x40F0, 0x40F1, 0x40F2, 0x40F3,
+ 0x40F4, 0x40F5, 0x40F6, 0x40F7, 0x40F8, 0x40F9, 0x40FA, 0x40FB, 0x40FC,
+ 0x40FD, 0x40FE, 0x40FF, 0x4100, 0x4101, 0x4102, 0x4103, 0x4104, 0x4105,
+ 0x4106, 0x4107, 0x4108, 0x4109, 0x410A, 0x410B, 0x410C, 0x410D, 0x410E,
+ 0x410F, 0x4110, 0x4111, 0x4112, 0x4113, 0x4114, 0x4115, 0x4116, 0x4117,
+ 0x4118, 0x4119, 0x411A, 0x411B, 0x411C, 0x411D, 0x411E, 0x411F, 0x4120,
+ 0x4121, 0x4122, 0x4123, 0x4124, 0x4125, 0x4126, 0x4127, 0x4128, 0x4129,
+ 0x412A, 0x412B, 0x412C, 0x412D, 0x412E, 0x412F, 0x4130, 0x4131, 0x4132,
+ 0x4133, 0x4134, 0x4135, 0x4136, 0x4137, 0x4138, 0x4139, 0x413A, 0x413B,
+ 0x413C, 0x413D, 0x413E, 0x413F, 0x4140, 0x4141, 0x4142, 0x4143, 0x4144,
+ 0x4145, 0x4146, 0x4147, 0x4148, 0x4149, 0x414A, 0x414B, 0x414C, 0x414D,
+ 0x414E, 0x414F, 0x4150, 0x4151, 0x4152, 0x4153, 0x4154, 0x4155, 0x4156,
+ 0x4157, 0x4158, 0x4159, 0x415A, 0x415B, 0x415C, 0x415D, 0x415E, 0x4160,
+ 0x4161, 0x4162, 0x4163, 0x4164, 0x4165, 0x4166, 0x4167, 0x4168, 0x4169,
+ 0x416A, 0x416B, 0x416C, 0x416D, 0x416E, 0x416F, 0x4170, 0x4171, 0x4172,
+ 0x4173, 0x4174, 0x4175, 0x4176, 0x4177, 0x4178, 0x4179, 0x417A, 0x417B,
+ 0x417C, 0x417D, 0x417E, 0x417F, 0x4180, 0x4181, 0x4182, 0x4183, 0x4184,
+ 0x4185, 0x4186, 0x4187, 0x4188, 0x4189, 0x418A, 0x418B, 0x418C, 0x418D,
+ 0x418E, 0x418F, 0x4190, 0x4191, 0x4192, 0x4193, 0x4194, 0x4195, 0x4196,
+ 0x4197, 0x4198, 0x4199, 0x419A, 0x419B, 0x419C, 0x419D, 0x419E, 0x419F,
+ 0x41A0, 0x41A1, 0x41A2, 0x41A3, 0x41A4, 0x41A5, 0x41A6, 0x41A7, 0x41A8,
+ 0x41A9, 0x41AA, 0x41AB, 0x41AC, 0x41AD, 0x41AE, 0x41AF, 0x41B0, 0x41B1,
+ 0x41B2, 0x41B3, 0x41B4, 0x41B5, 0x41B6, 0x41B7, 0x41B8, 0x41B9, 0x41BA,
+ 0x41BB, 0x41BC, 0x41BD, 0x41BE, 0x41BF, 0x41C0, 0x41C1, 0x41C2, 0x41C3,
+ 0x41C4, 0x41C5, 0x41C6, 0x41C7, 0x41C8, 0x41C9, 0x41CA, 0x41CB, 0x41CC,
+ 0x41CD, 0x41CE, 0x41CF, 0x41D0, 0x41D1, 0x41D2, 0x41D3, 0x41D4, 0x41D5,
+ 0x41D6, 0x41D7, 0x41D8, 0x41D9, 0x41DA, 0x41DB, 0x41DC, 0x41DD, 0x41DE,
+ 0x41DF, 0x41E0, 0x41E1, 0x41E2, 0x41E3, 0x41E4, 0x41E5, 0x41E6, 0x41E7,
+ 0x41E8, 0x41E9, 0x41EA, 0x41EB, 0x41EC, 0x41ED, 0x41EE, 0x41EF, 0x41F0,
+ 0x41F1, 0x41F2, 0x41F3, 0x41F4, 0x41F5, 0x41F6, 0x41F7, 0x41F8, 0x41F9,
+ 0x41FA, 0x41FB, 0x41FC, 0x41FD, 0x41FE, 0x41FF, 0x4200, 0x4201, 0x4202,
+ 0x4203, 0x4204, 0x4205, 0x4206, 0x4207, 0x4208, 0x4209, 0x420A, 0x420B,
+ 0x420C, 0x420D, 0x420E, 0x420F, 0x4210, 0x4211, 0x4212, 0x4213, 0x4214,
+ 0x4215, 0x4216, 0x4217, 0x4218, 0x4219, 0x421A, 0x421B, 0x421C, 0x421D,
+ 0x421E, 0x421F, 0x4220, 0x4221, 0x4222, 0x4223, 0x4224, 0x4225, 0x4226,
+ 0x4227, 0x4228, 0x4229, 0x422A, 0x422B, 0x422C, 0x422D, 0x422E, 0x422F,
+ 0x4230, 0x4231, 0x4232, 0x4233, 0x4234, 0x4235, 0x4236, 0x4237, 0x4238,
+ 0x4239, 0x423A, 0x423B, 0x423C, 0x423D, 0x423E, 0x423F, 0x4240, 0x4241,
+ 0x4242, 0x4243, 0x4244, 0x4245, 0x4246, 0x4247, 0x4248, 0x4249, 0x424A,
+ 0x424B, 0x424C, 0x424D, 0x424E, 0x424F, 0x4250, 0x4251, 0x4252, 0x4253,
+ 0x4254, 0x4255, 0x4256, 0x4257, 0x4258, 0x4259, 0x425A, 0x425B, 0x425C,
+ 0x425D, 0x425E, 0x425F, 0x4260, 0x4261, 0x4262, 0x4263, 0x4264, 0x4265,
+ 0x4266, 0x4267, 0x4268, 0x4269, 0x426A, 0x426B, 0x426C, 0x426D, 0x426E,
+ 0x426F, 0x4270, 0x4271, 0x4272, 0x4273, 0x4274, 0x4275, 0x4276, 0x4277,
+ 0x4278, 0x4279, 0x427A, 0x427B, 0x427C, 0x427D, 0x427E, 0x427F, 0x4280,
+ 0x4281, 0x4282, 0x4283, 0x4284, 0x4285, 0x4286, 0x4287, 0x4288, 0x4289,
+ 0x428A, 0x428B, 0x428C, 0x428D, 0x428E, 0x428F, 0x4290, 0x4291, 0x4292,
+ 0x4293, 0x4294, 0x4295, 0x4296, 0x4297, 0x4298, 0x4299, 0x429A, 0x429B,
+ 0x429C, 0x429D, 0x429E, 0x429F, 0x42A0, 0x42A1, 0x42A2, 0x42A3, 0x42A4,
+ 0x42A5, 0x42A6, 0x42A7, 0x42A8, 0x42A9, 0x42AA, 0x42AB, 0x42AC, 0x42AD,
+ 0x42AE, 0x42AF, 0x42B0, 0x42B1, 0x42B2, 0x42B3, 0x42B4, 0x42B5, 0x42B6,
+ 0x42B7, 0x42B8, 0x42B9, 0x42BA, 0x42BB, 0x42BC, 0x42BD, 0x42BE, 0x42BF,
+ 0x42C0, 0x42C1, 0x42C2, 0x42C3, 0x42C4, 0x42C5, 0x42C6, 0x42C7, 0x42C8,
+ 0x42C9, 0x42CA, 0x42CB, 0x42CC, 0x42CD, 0x42CE, 0x42CF, 0x42D0, 0x42D1,
+ 0x42D2, 0x42D3, 0x42D4, 0x42D5, 0x42D6, 0x42D7, 0x42D8, 0x42D9, 0x42DA,
+ 0x42DB, 0x42DC, 0x42DD, 0x42DE, 0x42DF, 0x42E0, 0x42E1, 0x42E2, 0x42E3,
+ 0x42E4, 0x42E5, 0x42E6, 0x42E7, 0x42E8, 0x42E9, 0x42EA, 0x42EB, 0x42EC,
+ 0x42ED, 0x42EE, 0x42EF, 0x42F0, 0x42F1, 0x42F2, 0x42F3, 0x42F4, 0x42F5,
+ 0x42F6, 0x42F7, 0x42F8, 0x42F9, 0x42FA, 0x42FB, 0x42FC, 0x42FD, 0x42FE,
+ 0x42FF, 0x4300, 0x4301, 0x4302, 0x4303, 0x4304, 0x4305, 0x4306, 0x4307,
+ 0x4308, 0x4309, 0x430A, 0x430B, 0x430C, 0x430D, 0x430E, 0x430F, 0x4310,
+ 0x4311, 0x4312, 0x4313, 0x4314, 0x4315, 0x4316, 0x4317, 0x4318, 0x4319,
+ 0x431A, 0x431B, 0x431C, 0x431D, 0x431E, 0x431F, 0x4320, 0x4321, 0x4322,
+ 0x4323, 0x4324, 0x4325, 0x4326, 0x4327, 0x4328, 0x4329, 0x432A, 0x432B,
+ 0x432C, 0x432D, 0x432E, 0x432F, 0x4330, 0x4331, 0x4332, 0x4333, 0x4334,
+ 0x4335, 0x4336, 0x4338, 0x4339, 0x433A, 0x433B, 0x433C, 0x433D, 0x433E,
+ 0x433F, 0x4340, 0x4341, 0x4342, 0x4343, 0x4344, 0x4345, 0x4346, 0x4347,
+ 0x4348, 0x4349, 0x434A, 0x434B, 0x434C, 0x434D, 0x434E, 0x434F, 0x4350,
+ 0x4351, 0x4352, 0x4353, 0x4354, 0x4355, 0x4356, 0x4357, 0x4358, 0x4359,
+ 0x435A, 0x435B, 0x435C, 0x435D, 0x435E, 0x435F, 0x4360, 0x4361, 0x4362,
+ 0x4363, 0x4364, 0x4365, 0x4366, 0x4367, 0x4368, 0x4369, 0x436A, 0x436B,
+ 0x436C, 0x436D, 0x436E, 0x436F, 0x4370, 0x4371, 0x4372, 0x4373, 0x4374,
+ 0x4375, 0x4376, 0x4377, 0x4378, 0x4379, 0x437A, 0x437B, 0x437C, 0x437D,
+ 0x437E, 0x437F, 0x4380, 0x4381, 0x4382, 0x4383, 0x4384, 0x4385, 0x4386,
+ 0x4387, 0x4388, 0x4389, 0x438A, 0x438B, 0x438C, 0x438D, 0x438E, 0x438F,
+ 0x4390, 0x4391, 0x4392, 0x4393, 0x4394, 0x4395, 0x4396, 0x4397, 0x4398,
+ 0x4399, 0x439A, 0x439B, 0x439C, 0x439D, 0x439E, 0x439F, 0x43A0, 0x43A1,
+ 0x43A2, 0x43A3, 0x43A4, 0x43A5, 0x43A6, 0x43A7, 0x43A8, 0x43A9, 0x43AA,
+ 0x43AB, 0x43AD, 0x43AE, 0x43AF, 0x43B0, 0x43B2, 0x43B3, 0x43B4, 0x43B5,
+ 0x43B6, 0x43B7, 0x43B8, 0x43B9, 0x43BA, 0x43BB, 0x43BC, 0x43BD, 0x43BE,
+ 0x43BF, 0x43C0, 0x43C1, 0x43C2, 0x43C3, 0x43C4, 0x43C5, 0x43C6, 0x43C7,
+ 0x43C8, 0x43C9, 0x43CA, 0x43CB, 0x43CC, 0x43CD, 0x43CE, 0x43CF, 0x43D0,
+ 0x43D1, 0x43D2, 0x43D3, 0x43D4, 0x43D5, 0x43D6, 0x43D7, 0x43D8, 0x43D9,
+ 0x43DA, 0x43DB, 0x43DC, 0x43DE, 0x43DF, 0x43E0, 0x43E1, 0x43E2, 0x43E3,
+ 0x43E4, 0x43E5, 0x43E6, 0x43E7, 0x43E8, 0x43E9, 0x43EA, 0x43EB, 0x43EC,
+ 0x43ED, 0x43EE, 0x43EF, 0x43F0, 0x43F1, 0x43F2, 0x43F3, 0x43F4, 0x43F5,
+ 0x43F6, 0x43F7, 0x43F8, 0x43F9, 0x43FA, 0x43FB, 0x43FC, 0x43FD, 0x43FE,
+ 0x43FF, 0x4400, 0x4401, 0x4402, 0x4403, 0x4404, 0x4405, 0x4406, 0x4407,
+ 0x4408, 0x4409, 0x440A, 0x440B, 0x440C, 0x440D, 0x440E, 0x440F, 0x4410,
+ 0x4411, 0x4412, 0x4413, 0x4414, 0x4415, 0x4416, 0x4417, 0x4418, 0x4419,
+ 0x441A, 0x441B, 0x441C, 0x441D, 0x441E, 0x441F, 0x4420, 0x4421, 0x4422,
+ 0x4423, 0x4424, 0x4425, 0x4426, 0x4427, 0x4428, 0x4429, 0x442A, 0x442B,
+ 0x442C, 0x442D, 0x442E, 0x442F, 0x4430, 0x4431, 0x4432, 0x4433, 0x4434,
+ 0x4435, 0x4436, 0x4437, 0x4438, 0x4439, 0x443A, 0x443B, 0x443C, 0x443D,
+ 0x443E, 0x443F, 0x4440, 0x4441, 0x4442, 0x4443, 0x4444, 0x4445, 0x4446,
+ 0x4447, 0x4448, 0x4449, 0x444A, 0x444B, 0x444C, 0x444D, 0x444E, 0x444F,
+ 0x4450, 0x4451, 0x4452, 0x4453, 0x4454, 0x4455, 0x4456, 0x4457, 0x4458,
+ 0x4459, 0x445A, 0x445B, 0x445C, 0x445D, 0x445E, 0x445F, 0x4460, 0x4461,
+ 0x4462, 0x4463, 0x4464, 0x4465, 0x4466, 0x4467, 0x4468, 0x4469, 0x446A,
+ 0x446B, 0x446C, 0x446D, 0x446E, 0x446F, 0x4470, 0x4471, 0x4472, 0x4473,
+ 0x4474, 0x4475, 0x4476, 0x4477, 0x4478, 0x4479, 0x447A, 0x447B, 0x447C,
+ 0x447D, 0x447E, 0x447F, 0x4480, 0x4481, 0x4482, 0x4483, 0x4484, 0x4485,
+ 0x4486, 0x4487, 0x4488, 0x4489, 0x448A, 0x448B, 0x448C, 0x448D, 0x448E,
+ 0x448F, 0x4490, 0x4491, 0x4492, 0x4493, 0x4494, 0x4495, 0x4496, 0x4497,
+ 0x4498, 0x4499, 0x449A, 0x449B, 0x449C, 0x449D, 0x449E, 0x449F, 0x44A0,
+ 0x44A1, 0x44A2, 0x44A3, 0x44A4, 0x44A5, 0x44A6, 0x44A7, 0x44A8, 0x44A9,
+ 0x44AA, 0x44AB, 0x44AC, 0x44AD, 0x44AE, 0x44AF, 0x44B0, 0x44B1, 0x44B2,
+ 0x44B3, 0x44B4, 0x44B5, 0x44B6, 0x44B7, 0x44B8, 0x44B9, 0x44BA, 0x44BB,
+ 0x44BC, 0x44BD, 0x44BE, 0x44BF, 0x44C0, 0x44C1, 0x44C2, 0x44C3, 0x44C4,
+ 0x44C5, 0x44C6, 0x44C7, 0x44C8, 0x44C9, 0x44CA, 0x44CB, 0x44CC, 0x44CD,
+ 0x44CE, 0x44CF, 0x44D0, 0x44D1, 0x44D2, 0x44D3, 0x44D4, 0x44D5, 0x44D7,
+ 0x44D8, 0x44D9, 0x44DA, 0x44DB, 0x44DC, 0x44DD, 0x44DE, 0x44DF, 0x44E0,
+ 0x44E1, 0x44E2, 0x44E3, 0x44E4, 0x44E5, 0x44E6, 0x44E7, 0x44E8, 0x44E9,
+ 0x44EA, 0x44EB, 0x44EC, 0x44ED, 0x44EE, 0x44EF, 0x44F0, 0x44F1, 0x44F2,
+ 0x44F3, 0x44F4, 0x44F5, 0x44F6, 0x44F7, 0x44F8, 0x44F9, 0x44FA, 0x44FB,
+ 0x44FC, 0x44FD, 0x44FE, 0x44FF, 0x4500, 0x4501, 0x4502, 0x4503, 0x4504,
+ 0x4505, 0x4506, 0x4507, 0x4508, 0x4509, 0x450A, 0x450B, 0x450C, 0x450D,
+ 0x450E, 0x450F, 0x4510, 0x4511, 0x4512, 0x4513, 0x4514, 0x4515, 0x4516,
+ 0x4517, 0x4518, 0x4519, 0x451A, 0x451B, 0x451C, 0x451D, 0x451E, 0x451F,
+ 0x4520, 0x4521, 0x4522, 0x4523, 0x4524, 0x4525, 0x4526, 0x4527, 0x4528,
+ 0x4529, 0x452A, 0x452B, 0x452C, 0x452D, 0x452E, 0x452F, 0x4530, 0x4531,
+ 0x4532, 0x4533, 0x4534, 0x4535, 0x4536, 0x4537, 0x4538, 0x4539, 0x453A,
+ 0x453B, 0x453C, 0x453D, 0x453E, 0x453F, 0x4540, 0x4541, 0x4542, 0x4543,
+ 0x4544, 0x4545, 0x4546, 0x4547, 0x4548, 0x4549, 0x454A, 0x454B, 0x454C,
+ 0x454D, 0x454E, 0x454F, 0x4550, 0x4551, 0x4552, 0x4553, 0x4554, 0x4555,
+ 0x4556, 0x4557, 0x4558, 0x4559, 0x455A, 0x455B, 0x455C, 0x455D, 0x455E,
+ 0x455F, 0x4560, 0x4561, 0x4562, 0x4563, 0x4564, 0x4565, 0x4566, 0x4567,
+ 0x4568, 0x4569, 0x456A, 0x456B, 0x456C, 0x456D, 0x456E, 0x456F, 0x4570,
+ 0x4571, 0x4572, 0x4573, 0x4574, 0x4575, 0x4576, 0x4577, 0x4578, 0x4579,
+ 0x457A, 0x457B, 0x457C, 0x457D, 0x457E, 0x457F, 0x4580, 0x4581, 0x4582,
+ 0x4583, 0x4584, 0x4585, 0x4586, 0x4587, 0x4588, 0x4589, 0x458A, 0x458B,
+ 0x458C, 0x458D, 0x458E, 0x458F, 0x4590, 0x4591, 0x4592, 0x4593, 0x4594,
+ 0x4595, 0x4596, 0x4597, 0x4598, 0x4599, 0x459A, 0x459B, 0x459C, 0x459D,
+ 0x459E, 0x459F, 0x45A0, 0x45A1, 0x45A2, 0x45A3, 0x45A4, 0x45A5, 0x45A6,
+ 0x45A7, 0x45A8, 0x45A9, 0x45AA, 0x45AB, 0x45AC, 0x45AD, 0x45AE, 0x45AF,
+ 0x45B0, 0x45B1, 0x45B2, 0x45B3, 0x45B4, 0x45B5, 0x45B6, 0x45B7, 0x45B8,
+ 0x45B9, 0x45BA, 0x45BB, 0x45BC, 0x45BD, 0x45BE, 0x45BF, 0x45C0, 0x45C1,
+ 0x45C2, 0x45C3, 0x45C4, 0x45C5, 0x45C6, 0x45C7, 0x45C8, 0x45C9, 0x45CA,
+ 0x45CB, 0x45CC, 0x45CD, 0x45CE, 0x45CF, 0x45D0, 0x45D1, 0x45D2, 0x45D3,
+ 0x45D4, 0x45D5, 0x45D6, 0x45D7, 0x45D8, 0x45D9, 0x45DA, 0x45DB, 0x45DC,
+ 0x45DD, 0x45DE, 0x45DF, 0x45E0, 0x45E1, 0x45E2, 0x45E3, 0x45E4, 0x45E5,
+ 0x45E6, 0x45E7, 0x45E8, 0x45E9, 0x45EA, 0x45EB, 0x45EC, 0x45ED, 0x45EE,
+ 0x45EF, 0x45F0, 0x45F1, 0x45F2, 0x45F3, 0x45F4, 0x45F5, 0x45F6, 0x45F7,
+ 0x45F8, 0x45F9, 0x45FA, 0x45FB, 0x45FC, 0x45FD, 0x45FE, 0x45FF, 0x4600,
+ 0x4601, 0x4602, 0x4603, 0x4604, 0x4605, 0x4606, 0x4607, 0x4608, 0x4609,
+ 0x460A, 0x460B, 0x460C, 0x460D, 0x460E, 0x460F, 0x4610, 0x4611, 0x4612,
+ 0x4613, 0x4614, 0x4615, 0x4616, 0x4617, 0x4618, 0x4619, 0x461A, 0x461B,
+ 0x461C, 0x461D, 0x461E, 0x461F, 0x4620, 0x4621, 0x4622, 0x4623, 0x4624,
+ 0x4625, 0x4626, 0x4627, 0x4628, 0x4629, 0x462A, 0x462B, 0x462C, 0x462D,
+ 0x462E, 0x462F, 0x4630, 0x4631, 0x4632, 0x4633, 0x4634, 0x4635, 0x4636,
+ 0x4637, 0x4638, 0x4639, 0x463A, 0x463B, 0x463C, 0x463D, 0x463E, 0x463F,
+ 0x4640, 0x4641, 0x4642, 0x4643, 0x4644, 0x4645, 0x4646, 0x4647, 0x4648,
+ 0x4649, 0x464A, 0x464B, 0x464D, 0x464E, 0x464F, 0x4650, 0x4651, 0x4652,
+ 0x4653, 0x4654, 0x4655, 0x4656, 0x4657, 0x4658, 0x4659, 0x465A, 0x465B,
+ 0x465C, 0x465D, 0x465E, 0x465F, 0x4660, 0x4662, 0x4663, 0x4664, 0x4665,
+ 0x4666, 0x4667, 0x4668, 0x4669, 0x466A, 0x466B, 0x466C, 0x466D, 0x466E,
+ 0x466F, 0x4670, 0x4671, 0x4672, 0x4673, 0x4674, 0x4675, 0x4676, 0x4677,
+ 0x4678, 0x4679, 0x467A, 0x467B, 0x467C, 0x467D, 0x467E, 0x467F, 0x4680,
+ 0x4681, 0x4682, 0x4683, 0x4684, 0x4685, 0x4686, 0x4687, 0x4688, 0x4689,
+ 0x468A, 0x468B, 0x468C, 0x468D, 0x468E, 0x468F, 0x4690, 0x4691, 0x4692,
+ 0x4693, 0x4694, 0x4695, 0x4696, 0x4697, 0x4698, 0x4699, 0x469A, 0x469B,
+ 0x469C, 0x469D, 0x469E, 0x469F, 0x46A0, 0x46A1, 0x46A2, 0x46A3, 0x46A4,
+ 0x46A5, 0x46A6, 0x46A7, 0x46A8, 0x46A9, 0x46AA, 0x46AB, 0x46AC, 0x46AD,
+ 0x46AE, 0x46AF, 0x46B0, 0x46B1, 0x46B2, 0x46B3, 0x46B4, 0x46B5, 0x46B6,
+ 0x46B7, 0x46B8, 0x46B9, 0x46BA, 0x46BB, 0x46BC, 0x46BD, 0x46BE, 0x46BF,
+ 0x46C0, 0x46C1, 0x46C2, 0x46C3, 0x46C4, 0x46C5, 0x46C6, 0x46C7, 0x46C8,
+ 0x46C9, 0x46CA, 0x46CB, 0x46CC, 0x46CD, 0x46CE, 0x46CF, 0x46D0, 0x46D1,
+ 0x46D2, 0x46D3, 0x46D4, 0x46D5, 0x46D6, 0x46D7, 0x46D8, 0x46D9, 0x46DA,
+ 0x46DB, 0x46DC, 0x46DD, 0x46DE, 0x46DF, 0x46E0, 0x46E1, 0x46E2, 0x46E3,
+ 0x46E4, 0x46E5, 0x46E6, 0x46E7, 0x46E8, 0x46E9, 0x46EA, 0x46EB, 0x46EC,
+ 0x46ED, 0x46EE, 0x46EF, 0x46F0, 0x46F1, 0x46F2, 0x46F3, 0x46F4, 0x46F5,
+ 0x46F6, 0x46F7, 0x46F8, 0x46F9, 0x46FA, 0x46FB, 0x46FC, 0x46FD, 0x46FE,
+ 0x46FF, 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706, 0x4707,
+ 0x4708, 0x4709, 0x470A, 0x470B, 0x470C, 0x470D, 0x470E, 0x470F, 0x4710,
+ 0x4711, 0x4712, 0x4713, 0x4714, 0x4715, 0x4716, 0x4717, 0x4718, 0x4719,
+ 0x471A, 0x471B, 0x471C, 0x471D, 0x471E, 0x471F, 0x4720, 0x4721, 0x4722,
+ 0x4724, 0x4725, 0x4726, 0x4727, 0x4728, 0x472A, 0x472B, 0x472C, 0x472D,
+ 0x472E, 0x472F, 0x4730, 0x4731, 0x4732, 0x4733, 0x4734, 0x4735, 0x4736,
+ 0x4737, 0x4738, 0x4739, 0x473A, 0x473B, 0x473C, 0x473D, 0x473E, 0x473F,
+ 0x4740, 0x4741, 0x4742, 0x4743, 0x4744, 0x4745, 0x4746, 0x4747, 0x4748,
+ 0x4749, 0x474A, 0x474B, 0x474C, 0x474D, 0x474E, 0x474F, 0x4750, 0x4751,
+ 0x4752, 0x4753, 0x4754, 0x4755, 0x4756, 0x4757, 0x4758, 0x4759, 0x475A,
+ 0x475B, 0x475C, 0x475D, 0x475E, 0x475F, 0x4760, 0x4761, 0x4762, 0x4763,
+ 0x4764, 0x4765, 0x4766, 0x4767, 0x4768, 0x4769, 0x476A, 0x476B, 0x476C,
+ 0x476D, 0x476E, 0x476F, 0x4770, 0x4771, 0x4772, 0x4773, 0x4774, 0x4775,
+ 0x4776, 0x4777, 0x4778, 0x4779, 0x477A, 0x477B, 0x477D, 0x477E, 0x477F,
+ 0x4780, 0x4781, 0x4782, 0x4783, 0x4784, 0x4785, 0x4786, 0x4787, 0x4788,
+ 0x4789, 0x478A, 0x478B, 0x478C, 0x478E, 0x478F, 0x4790, 0x4791, 0x4792,
+ 0x4793, 0x4794, 0x4795, 0x4796, 0x4797, 0x4798, 0x4799, 0x479A, 0x479B,
+ 0x479C, 0x479D, 0x479E, 0x479F, 0x47A0, 0x47A1, 0x47A2, 0x47A3, 0x47A4,
+ 0x47A5, 0x47A6, 0x47A7, 0x47A8, 0x47A9, 0x47AA, 0x47AB, 0x47AC, 0x47AD,
+ 0x47AE, 0x47AF, 0x47B0, 0x47B1, 0x47B2, 0x47B3, 0x47B4, 0x47B5, 0x47B6,
+ 0x47B7, 0x47B8, 0x47B9, 0x47BA, 0x47BB, 0x47BC, 0x47BD, 0x47BE, 0x47BF,
+ 0x47C0, 0x47C1, 0x47C2, 0x47C3, 0x47C4, 0x47C5, 0x47C6, 0x47C7, 0x47C8,
+ 0x47C9, 0x47CA, 0x47CB, 0x47CC, 0x47CD, 0x47CE, 0x47CF, 0x47D0, 0x47D1,
+ 0x47D2, 0x47D3, 0x47D4, 0x47D5, 0x47D6, 0x47D7, 0x47D8, 0x47D9, 0x47DA,
+ 0x47DB, 0x47DC, 0x47DD, 0x47DE, 0x47DF, 0x47E0, 0x47E1, 0x47E2, 0x47E3,
+ 0x47E4, 0x47E5, 0x47E6, 0x47E7, 0x47E8, 0x47E9, 0x47EA, 0x47EB, 0x47EC,
+ 0x47ED, 0x47EE, 0x47EF, 0x47F0, 0x47F1, 0x47F2, 0x47F3, 0x47F4, 0x47F5,
+ 0x47F6, 0x47F7, 0x47F8, 0x47F9, 0x47FA, 0x47FB, 0x47FC, 0x47FD, 0x47FE,
+ 0x47FF, 0x4800, 0x4801, 0x4802, 0x4803, 0x4804, 0x4805, 0x4806, 0x4807,
+ 0x4808, 0x4809, 0x480A, 0x480B, 0x480C, 0x480D, 0x480E, 0x480F, 0x4810,
+ 0x4811, 0x4812, 0x4813, 0x4814, 0x4815, 0x4816, 0x4817, 0x4818, 0x4819,
+ 0x481A, 0x481B, 0x481C, 0x481D, 0x481E, 0x481F, 0x4820, 0x4821, 0x4822,
+ 0x4823, 0x4824, 0x4825, 0x4826, 0x4827, 0x4828, 0x4829, 0x482A, 0x482B,
+ 0x482C, 0x482D, 0x482E, 0x482F, 0x4830, 0x4831, 0x4832, 0x4833, 0x4834,
+ 0x4835, 0x4836, 0x4837, 0x4838, 0x4839, 0x483A, 0x483B, 0x483C, 0x483D,
+ 0x483E, 0x483F, 0x4840, 0x4841, 0x4842, 0x4843, 0x4844, 0x4845, 0x4846,
+ 0x4847, 0x4848, 0x4849, 0x484A, 0x484B, 0x484C, 0x484D, 0x484E, 0x484F,
+ 0x4850, 0x4851, 0x4852, 0x4853, 0x4854, 0x4855, 0x4856, 0x4857, 0x4858,
+ 0x4859, 0x485A, 0x485B, 0x485C, 0x485D, 0x485E, 0x485F, 0x4860, 0x4861,
+ 0x4862, 0x4863, 0x4864, 0x4865, 0x4866, 0x4867, 0x4868, 0x4869, 0x486A,
+ 0x486B, 0x486C, 0x486D, 0x486E, 0x486F, 0x4870, 0x4871, 0x4872, 0x4873,
+ 0x4874, 0x4875, 0x4876, 0x4877, 0x4878, 0x4879, 0x487A, 0x487B, 0x487C,
+ 0x487D, 0x487E, 0x487F, 0x4880, 0x4881, 0x4882, 0x4883, 0x4884, 0x4885,
+ 0x4886, 0x4887, 0x4888, 0x4889, 0x488A, 0x488B, 0x488C, 0x488D, 0x488E,
+ 0x488F, 0x4890, 0x4891, 0x4892, 0x4893, 0x4894, 0x4895, 0x4896, 0x4897,
+ 0x4898, 0x4899, 0x489A, 0x489B, 0x489C, 0x489D, 0x489E, 0x489F, 0x48A0,
+ 0x48A1, 0x48A2, 0x48A3, 0x48A4, 0x48A5, 0x48A6, 0x48A7, 0x48A8, 0x48A9,
+ 0x48AA, 0x48AB, 0x48AC, 0x48AD, 0x48AE, 0x48AF, 0x48B0, 0x48B1, 0x48B2,
+ 0x48B3, 0x48B4, 0x48B5, 0x48B6, 0x48B7, 0x48B8, 0x48B9, 0x48BA, 0x48BB,
+ 0x48BC, 0x48BD, 0x48BE, 0x48BF, 0x48C0, 0x48C1, 0x48C2, 0x48C3, 0x48C4,
+ 0x48C5, 0x48C6, 0x48C7, 0x48C8, 0x48C9, 0x48CA, 0x48CB, 0x48CC, 0x48CD,
+ 0x48CE, 0x48CF, 0x48D0, 0x48D1, 0x48D2, 0x48D3, 0x48D4, 0x48D5, 0x48D6,
+ 0x48D7, 0x48D8, 0x48D9, 0x48DA, 0x48DB, 0x48DC, 0x48DD, 0x48DE, 0x48DF,
+ 0x48E0, 0x48E1, 0x48E2, 0x48E3, 0x48E4, 0x48E5, 0x48E6, 0x48E7, 0x48E8,
+ 0x48E9, 0x48EA, 0x48EB, 0x48EC, 0x48ED, 0x48EE, 0x48EF, 0x48F0, 0x48F1,
+ 0x48F2, 0x48F3, 0x48F4, 0x48F5, 0x48F6, 0x48F7, 0x48F8, 0x48F9, 0x48FA,
+ 0x48FB, 0x48FC, 0x48FD, 0x48FE, 0x48FF, 0x4900, 0x4901, 0x4902, 0x4903,
+ 0x4904, 0x4905, 0x4906, 0x4907, 0x4908, 0x4909, 0x490A, 0x490B, 0x490C,
+ 0x490D, 0x490E, 0x490F, 0x4910, 0x4911, 0x4912, 0x4913, 0x4914, 0x4915,
+ 0x4916, 0x4917, 0x4918, 0x4919, 0x491A, 0x491B, 0x491C, 0x491D, 0x491E,
+ 0x491F, 0x4920, 0x4921, 0x4922, 0x4923, 0x4924, 0x4925, 0x4926, 0x4927,
+ 0x4928, 0x4929, 0x492A, 0x492B, 0x492C, 0x492D, 0x492E, 0x492F, 0x4930,
+ 0x4931, 0x4932, 0x4933, 0x4934, 0x4935, 0x4936, 0x4937, 0x4938, 0x4939,
+ 0x493A, 0x493B, 0x493C, 0x493D, 0x493E, 0x493F, 0x4940, 0x4941, 0x4942,
+ 0x4943, 0x4944, 0x4945, 0x4946, 0x4948, 0x4949, 0x494A, 0x494B, 0x494C,
+ 0x494D, 0x494E, 0x494F, 0x4950, 0x4951, 0x4952, 0x4953, 0x4954, 0x4955,
+ 0x4956, 0x4957, 0x4958, 0x4959, 0x495A, 0x495B, 0x495C, 0x495D, 0x495E,
+ 0x495F, 0x4960, 0x4961, 0x4962, 0x4963, 0x4964, 0x4965, 0x4966, 0x4967,
+ 0x4968, 0x4969, 0x496A, 0x496B, 0x496C, 0x496D, 0x496E, 0x496F, 0x4970,
+ 0x4971, 0x4972, 0x4973, 0x4974, 0x4975, 0x4976, 0x4977, 0x4978, 0x4979,
+ 0x497B, 0x497C, 0x497E, 0x497F, 0x4980, 0x4981, 0x4984, 0x4987, 0x4988,
+ 0x4989, 0x498A, 0x498B, 0x498C, 0x498D, 0x498E, 0x498F, 0x4990, 0x4991,
+ 0x4992, 0x4993, 0x4994, 0x4995, 0x4996, 0x4997, 0x4998, 0x4999, 0x499A,
+ 0x499C, 0x499D, 0x499E, 0x49A0, 0x49A1, 0x49A2, 0x49A3, 0x49A4, 0x49A5,
+ 0x49A6, 0x49A7, 0x49A8, 0x49A9, 0x49AA, 0x49AB, 0x49AC, 0x49AD, 0x49AE,
+ 0x49AF, 0x49B0, 0x49B1, 0x49B2, 0x49B3, 0x49B4, 0x49B5, 0x49B8, 0x49B9,
+ 0x49BA, 0x49BB, 0x49BC, 0x49BD, 0x49BE, 0x49BF, 0x49C0, 0x49C1, 0x49C2,
+ 0x49C3, 0x49C4, 0x49C5, 0x49C6, 0x49C7, 0x49C8, 0x49C9, 0x49CA, 0x49CB,
+ 0x49CC, 0x49CD, 0x49CE, 0x49CF, 0x49D0, 0x49D1, 0x49D2, 0x49D3, 0x49D4,
+ 0x49D5, 0x49D6, 0x49D7, 0x49D8, 0x49D9, 0x49DA, 0x49DB, 0x49DC, 0x49DD,
+ 0x49DE, 0x49DF, 0x49E0, 0x49E1, 0x49E2, 0x49E3, 0x49E4, 0x49E5, 0x49E6,
+ 0x49E7, 0x49E8, 0x49E9, 0x49EA, 0x49EB, 0x49EC, 0x49ED, 0x49EE, 0x49EF,
+ 0x49F0, 0x49F1, 0x49F2, 0x49F3, 0x49F4, 0x49F5, 0x49F6, 0x49F7, 0x49F8,
+ 0x49F9, 0x49FA, 0x49FB, 0x49FC, 0x49FD, 0x49FE, 0x49FF, 0x4A00, 0x4A01,
+ 0x4A02, 0x4A03, 0x4A04, 0x4A05, 0x4A06, 0x4A07, 0x4A08, 0x4A09, 0x4A0A,
+ 0x4A0B, 0x4A0C, 0x4A0D, 0x4A0E, 0x4A0F, 0x4A10, 0x4A11, 0x4A12, 0x4A13,
+ 0x4A14, 0x4A15, 0x4A16, 0x4A17, 0x4A18, 0x4A19, 0x4A1A, 0x4A1B, 0x4A1C,
+ 0x4A1D, 0x4A1E, 0x4A1F, 0x4A20, 0x4A21, 0x4A22, 0x4A23, 0x4A24, 0x4A25,
+ 0x4A26, 0x4A27, 0x4A28, 0x4A29, 0x4A2A, 0x4A2B, 0x4A2C, 0x4A2D, 0x4A2E,
+ 0x4A2F, 0x4A30, 0x4A31, 0x4A32, 0x4A33, 0x4A34, 0x4A35, 0x4A36, 0x4A37,
+ 0x4A38, 0x4A39, 0x4A3A, 0x4A3B, 0x4A3C, 0x4A3D, 0x4A3E, 0x4A3F, 0x4A40,
+ 0x4A41, 0x4A42, 0x4A43, 0x4A44, 0x4A45, 0x4A46, 0x4A47, 0x4A48, 0x4A49,
+ 0x4A4A, 0x4A4B, 0x4A4C, 0x4A4D, 0x4A4E, 0x4A4F, 0x4A50, 0x4A51, 0x4A52,
+ 0x4A53, 0x4A54, 0x4A55, 0x4A56, 0x4A57, 0x4A58, 0x4A59, 0x4A5A, 0x4A5B,
+ 0x4A5C, 0x4A5D, 0x4A5E, 0x4A5F, 0x4A60, 0x4A61, 0x4A62, 0x4A63, 0x4A64,
+ 0x4A65, 0x4A66, 0x4A67, 0x4A68, 0x4A69, 0x4A6A, 0x4A6B, 0x4A6C, 0x4A6D,
+ 0x4A6E, 0x4A6F, 0x4A70, 0x4A71, 0x4A72, 0x4A73, 0x4A74, 0x4A75, 0x4A76,
+ 0x4A77, 0x4A78, 0x4A79, 0x4A7A, 0x4A7B, 0x4A7C, 0x4A7D, 0x4A7E, 0x4A7F,
+ 0x4A80, 0x4A81, 0x4A82, 0x4A83, 0x4A84, 0x4A85, 0x4A86, 0x4A87, 0x4A88,
+ 0x4A89, 0x4A8A, 0x4A8B, 0x4A8C, 0x4A8D, 0x4A8E, 0x4A8F, 0x4A90, 0x4A91,
+ 0x4A92, 0x4A93, 0x4A94, 0x4A95, 0x4A96, 0x4A97, 0x4A98, 0x4A99, 0x4A9A,
+ 0x4A9B, 0x4A9C, 0x4A9D, 0x4A9E, 0x4A9F, 0x4AA0, 0x4AA1, 0x4AA2, 0x4AA3,
+ 0x4AA4, 0x4AA5, 0x4AA6, 0x4AA7, 0x4AA8, 0x4AA9, 0x4AAA, 0x4AAB, 0x4AAC,
+ 0x4AAD, 0x4AAE, 0x4AAF, 0x4AB0, 0x4AB1, 0x4AB2, 0x4AB3, 0x4AB4, 0x4AB5,
+ 0x4AB6, 0x4AB7, 0x4AB8, 0x4AB9, 0x4ABA, 0x4ABB, 0x4ABC, 0x4ABD, 0x4ABE,
+ 0x4ABF, 0x4AC0, 0x4AC1, 0x4AC2, 0x4AC3, 0x4AC4, 0x4AC5, 0x4AC6, 0x4AC7,
+ 0x4AC8, 0x4AC9, 0x4ACA, 0x4ACB, 0x4ACC, 0x4ACD, 0x4ACE, 0x4ACF, 0x4AD0,
+ 0x4AD1, 0x4AD2, 0x4AD3, 0x4AD4, 0x4AD5, 0x4AD6, 0x4AD7, 0x4AD8, 0x4AD9,
+ 0x4ADA, 0x4ADB, 0x4ADC, 0x4ADD, 0x4ADE, 0x4ADF, 0x4AE0, 0x4AE1, 0x4AE2,
+ 0x4AE3, 0x4AE4, 0x4AE5, 0x4AE6, 0x4AE7, 0x4AE8, 0x4AE9, 0x4AEA, 0x4AEB,
+ 0x4AEC, 0x4AED, 0x4AEE, 0x4AEF, 0x4AF0, 0x4AF1, 0x4AF2, 0x4AF3, 0x4AF4,
+ 0x4AF5, 0x4AF6, 0x4AF7, 0x4AF8, 0x4AF9, 0x4AFA, 0x4AFB, 0x4AFC, 0x4AFD,
+ 0x4AFE, 0x4AFF, 0x4B00, 0x4B01, 0x4B02, 0x4B03, 0x4B04, 0x4B05, 0x4B06,
+ 0x4B07, 0x4B08, 0x4B09, 0x4B0A, 0x4B0B, 0x4B0C, 0x4B0D, 0x4B0E, 0x4B0F,
+ 0x4B10, 0x4B11, 0x4B12, 0x4B13, 0x4B14, 0x4B15, 0x4B16, 0x4B17, 0x4B18,
+ 0x4B19, 0x4B1A, 0x4B1B, 0x4B1C, 0x4B1D, 0x4B1E, 0x4B1F, 0x4B20, 0x4B21,
+ 0x4B22, 0x4B23, 0x4B24, 0x4B25, 0x4B26, 0x4B27, 0x4B28, 0x4B29, 0x4B2A,
+ 0x4B2B, 0x4B2C, 0x4B2D, 0x4B2E, 0x4B2F, 0x4B30, 0x4B31, 0x4B32, 0x4B33,
+ 0x4B34, 0x4B35, 0x4B36, 0x4B37, 0x4B38, 0x4B39, 0x4B3A, 0x4B3B, 0x4B3C,
+ 0x4B3D, 0x4B3E, 0x4B3F, 0x4B40, 0x4B41, 0x4B42, 0x4B43, 0x4B44, 0x4B45,
+ 0x4B46, 0x4B47, 0x4B48, 0x4B49, 0x4B4A, 0x4B4B, 0x4B4C, 0x4B4D, 0x4B4E,
+ 0x4B4F, 0x4B50, 0x4B51, 0x4B52, 0x4B53, 0x4B54, 0x4B55, 0x4B56, 0x4B57,
+ 0x4B58, 0x4B59, 0x4B5A, 0x4B5B, 0x4B5C, 0x4B5D, 0x4B5E, 0x4B5F, 0x4B60,
+ 0x4B61, 0x4B62, 0x4B63, 0x4B64, 0x4B65, 0x4B66, 0x4B67, 0x4B68, 0x4B69,
+ 0x4B6A, 0x4B6B, 0x4B6C, 0x4B6D, 0x4B6E, 0x4B6F, 0x4B70, 0x4B71, 0x4B72,
+ 0x4B73, 0x4B74, 0x4B75, 0x4B76, 0x4B77, 0x4B78, 0x4B79, 0x4B7A, 0x4B7B,
+ 0x4B7C, 0x4B7D, 0x4B7E, 0x4B7F, 0x4B80, 0x4B81, 0x4B82, 0x4B83, 0x4B84,
+ 0x4B85, 0x4B86, 0x4B87, 0x4B88, 0x4B89, 0x4B8A, 0x4B8B, 0x4B8C, 0x4B8D,
+ 0x4B8E, 0x4B8F, 0x4B90, 0x4B91, 0x4B92, 0x4B93, 0x4B94, 0x4B95, 0x4B96,
+ 0x4B97, 0x4B98, 0x4B99, 0x4B9A, 0x4B9B, 0x4B9C, 0x4B9D, 0x4B9E, 0x4B9F,
+ 0x4BA0, 0x4BA1, 0x4BA2, 0x4BA3, 0x4BA4, 0x4BA5, 0x4BA6, 0x4BA7, 0x4BA8,
+ 0x4BA9, 0x4BAA, 0x4BAB, 0x4BAC, 0x4BAD, 0x4BAE, 0x4BAF, 0x4BB0, 0x4BB1,
+ 0x4BB2, 0x4BB3, 0x4BB4, 0x4BB5, 0x4BB6, 0x4BB7, 0x4BB8, 0x4BB9, 0x4BBA,
+ 0x4BBB, 0x4BBC, 0x4BBD, 0x4BBE, 0x4BBF, 0x4BC0, 0x4BC1, 0x4BC2, 0x4BC3,
+ 0x4BC4, 0x4BC5, 0x4BC6, 0x4BC7, 0x4BC8, 0x4BC9, 0x4BCA, 0x4BCB, 0x4BCC,
+ 0x4BCD, 0x4BCE, 0x4BCF, 0x4BD0, 0x4BD1, 0x4BD2, 0x4BD3, 0x4BD4, 0x4BD5,
+ 0x4BD6, 0x4BD7, 0x4BD8, 0x4BD9, 0x4BDA, 0x4BDB, 0x4BDC, 0x4BDD, 0x4BDE,
+ 0x4BDF, 0x4BE0, 0x4BE1, 0x4BE2, 0x4BE3, 0x4BE4, 0x4BE5, 0x4BE6, 0x4BE7,
+ 0x4BE8, 0x4BE9, 0x4BEA, 0x4BEB, 0x4BEC, 0x4BED, 0x4BEE, 0x4BEF, 0x4BF0,
+ 0x4BF1, 0x4BF2, 0x4BF3, 0x4BF4, 0x4BF5, 0x4BF6, 0x4BF7, 0x4BF8, 0x4BF9,
+ 0x4BFA, 0x4BFB, 0x4BFC, 0x4BFD, 0x4BFE, 0x4BFF, 0x4C00, 0x4C01, 0x4C02,
+ 0x4C03, 0x4C04, 0x4C05, 0x4C06, 0x4C07, 0x4C08, 0x4C09, 0x4C0A, 0x4C0B,
+ 0x4C0C, 0x4C0D, 0x4C0E, 0x4C0F, 0x4C10, 0x4C11, 0x4C12, 0x4C13, 0x4C14,
+ 0x4C15, 0x4C16, 0x4C17, 0x4C18, 0x4C19, 0x4C1A, 0x4C1B, 0x4C1C, 0x4C1D,
+ 0x4C1E, 0x4C1F, 0x4C20, 0x4C21, 0x4C22, 0x4C23, 0x4C24, 0x4C25, 0x4C26,
+ 0x4C27, 0x4C28, 0x4C29, 0x4C2A, 0x4C2B, 0x4C2C, 0x4C2D, 0x4C2E, 0x4C2F,
+ 0x4C30, 0x4C31, 0x4C32, 0x4C33, 0x4C34, 0x4C35, 0x4C36, 0x4C37, 0x4C38,
+ 0x4C39, 0x4C3A, 0x4C3B, 0x4C3C, 0x4C3D, 0x4C3E, 0x4C3F, 0x4C40, 0x4C41,
+ 0x4C42, 0x4C43, 0x4C44, 0x4C45, 0x4C46, 0x4C47, 0x4C48, 0x4C49, 0x4C4A,
+ 0x4C4B, 0x4C4C, 0x4C4D, 0x4C4E, 0x4C4F, 0x4C50, 0x4C51, 0x4C52, 0x4C53,
+ 0x4C54, 0x4C55, 0x4C56, 0x4C57, 0x4C58, 0x4C59, 0x4C5A, 0x4C5B, 0x4C5C,
+ 0x4C5D, 0x4C5E, 0x4C5F, 0x4C60, 0x4C61, 0x4C62, 0x4C63, 0x4C64, 0x4C65,
+ 0x4C66, 0x4C67, 0x4C68, 0x4C69, 0x4C6A, 0x4C6B, 0x4C6C, 0x4C6D, 0x4C6E,
+ 0x4C6F, 0x4C70, 0x4C71, 0x4C72, 0x4C73, 0x4C74, 0x4C75, 0x4C76, 0x4C78,
+ 0x4C79, 0x4C7A, 0x4C7B, 0x4C7C, 0x4C7D, 0x4C7E, 0x4C7F, 0x4C80, 0x4C81,
+ 0x4C82, 0x4C83, 0x4C84, 0x4C85, 0x4C86, 0x4C87, 0x4C88, 0x4C89, 0x4C8A,
+ 0x4C8B, 0x4C8C, 0x4C8D, 0x4C8E, 0x4C8F, 0x4C90, 0x4C91, 0x4C92, 0x4C93,
+ 0x4C94, 0x4C95, 0x4C96, 0x4C97, 0x4C98, 0x4C99, 0x4C9A, 0x4C9B, 0x4C9C,
+ 0x4C9D, 0x4C9E, 0x4CA4, 0x4CA5, 0x4CA6, 0x4CA7, 0x4CA8, 0x4CA9, 0x4CAA,
+ 0x4CAB, 0x4CAC, 0x4CAD, 0x4CAE, 0x4CAF, 0x4CB0, 0x4CB1, 0x4CB2, 0x4CB3,
+ 0x4CB4, 0x4CB5, 0x4CB6, 0x4CB7, 0x4CB8, 0x4CB9, 0x4CBA, 0x4CBB, 0x4CBC,
+ 0x4CBD, 0x4CBE, 0x4CBF, 0x4CC0, 0x4CC1, 0x4CC2, 0x4CC3, 0x4CC4, 0x4CC5,
+ 0x4CC6, 0x4CC7, 0x4CC8, 0x4CC9, 0x4CCA, 0x4CCB, 0x4CCC, 0x4CCD, 0x4CCE,
+ 0x4CCF, 0x4CD0, 0x4CD1, 0x4CD2, 0x4CD3, 0x4CD4, 0x4CD5, 0x4CD6, 0x4CD7,
+ 0x4CD8, 0x4CD9, 0x4CDA, 0x4CDB, 0x4CDC, 0x4CDD, 0x4CDE, 0x4CDF, 0x4CE0,
+ 0x4CE1, 0x4CE2, 0x4CE3, 0x4CE4, 0x4CE5, 0x4CE6, 0x4CE7, 0x4CE8, 0x4CE9,
+ 0x4CEA, 0x4CEB, 0x4CEC, 0x4CED, 0x4CEE, 0x4CEF, 0x4CF0, 0x4CF1, 0x4CF2,
+ 0x4CF3, 0x4CF4, 0x4CF5, 0x4CF6, 0x4CF7, 0x4CF8, 0x4CF9, 0x4CFA, 0x4CFB,
+ 0x4CFC, 0x4CFD, 0x4CFE, 0x4CFF, 0x4D00, 0x4D01, 0x4D02, 0x4D03, 0x4D04,
+ 0x4D05, 0x4D06, 0x4D07, 0x4D08, 0x4D09, 0x4D0A, 0x4D0B, 0x4D0C, 0x4D0D,
+ 0x4D0E, 0x4D0F, 0x4D10, 0x4D11, 0x4D12, 0x4D1A, 0x4D1B, 0x4D1C, 0x4D1D,
+ 0x4D1E, 0x4D1F, 0x4D20, 0x4D21, 0x4D22, 0x4D23, 0x4D24, 0x4D25, 0x4D26,
+ 0x4D27, 0x4D28, 0x4D29, 0x4D2A, 0x4D2B, 0x4D2C, 0x4D2D, 0x4D2E, 0x4D2F,
+ 0x4D30, 0x4D31, 0x4D32, 0x4D33, 0x4D34, 0x4D35, 0x4D36, 0x4D37, 0x4D38,
+ 0x4D39, 0x4D3A, 0x4D3B, 0x4D3C, 0x4D3D, 0x4D3E, 0x4D3F, 0x4D40, 0x4D41,
+ 0x4D42, 0x4D43, 0x4D44, 0x4D45, 0x4D46, 0x4D47, 0x4D48, 0x4D49, 0x4D4A,
+ 0x4D4B, 0x4D4C, 0x4D4D, 0x4D4E, 0x4D4F, 0x4D50, 0x4D51, 0x4D52, 0x4D53,
+ 0x4D54, 0x4D55, 0x4D56, 0x4D57, 0x4D58, 0x4D59, 0x4D5A, 0x4D5B, 0x4D5C,
+ 0x4D5D, 0x4D5E, 0x4D5F, 0x4D60, 0x4D61, 0x4D62, 0x4D63, 0x4D64, 0x4D65,
+ 0x4D66, 0x4D67, 0x4D68, 0x4D69, 0x4D6A, 0x4D6B, 0x4D6C, 0x4D6D, 0x4D6E,
+ 0x4D6F, 0x4D70, 0x4D71, 0x4D72, 0x4D73, 0x4D74, 0x4D75, 0x4D76, 0x4D77,
+ 0x4D78, 0x4D79, 0x4D7A, 0x4D7B, 0x4D7C, 0x4D7D, 0x4D7E, 0x4D7F, 0x4D80,
+ 0x4D81, 0x4D82, 0x4D83, 0x4D84, 0x4D85, 0x4D86, 0x4D87, 0x4D88, 0x4D89,
+ 0x4D8A, 0x4D8B, 0x4D8C, 0x4D8D, 0x4D8E, 0x4D8F, 0x4D90, 0x4D91, 0x4D92,
+ 0x4D93, 0x4D94, 0x4D95, 0x4D96, 0x4D97, 0x4D98, 0x4D99, 0x4D9A, 0x4D9B,
+ 0x4D9C, 0x4D9D, 0x4D9E, 0x4D9F, 0x4DA0, 0x4DA1, 0x4DA2, 0x4DA3, 0x4DA4,
+ 0x4DA5, 0x4DA6, 0x4DA7, 0x4DA8, 0x4DA9, 0x4DAA, 0x4DAB, 0x4DAC, 0x4DAD,
+ 0x4DAF, 0x4DB0, 0x4DB1, 0x4DB2, 0x4DB3, 0x4DB4, 0x4DB5, 0x20AC, 0x00A5,
+ 0x20AC, 0x0024, 0x303F, 0xA000, 0xA001, 0xA002, 0xA003, 0xA004, 0xA005,
+ 0xA006, 0xA007, 0xA008, 0xA009, 0xA00A, 0xA00B, 0xA00C, 0xA00D, 0xA00E,
+ 0xA00F, 0xA010, 0xA011, 0xA012, 0xA013, 0xA014, 0xA015, 0xA016, 0xA017,
+ 0xA018, 0xA019, 0xA01A, 0xA01B, 0xA01C, 0xA01D, 0xA01E, 0xA01F, 0xA020,
+ 0xA021, 0xA022, 0xA023, 0xA024, 0xA025, 0xA026, 0xA027, 0xA028, 0xA029,
+ 0xA02A, 0xA02B, 0xA02C, 0xA02D, 0xA02E, 0xA02F, 0xA030, 0xA031, 0xA032,
+ 0xA033, 0xA034, 0xA035, 0xA036, 0xA037, 0xA038, 0xA039, 0xA03A, 0xA03B,
+ 0xA03C, 0xA03D, 0xA03E, 0xA03F, 0xA040, 0xA041, 0xA042, 0xA043, 0xA044,
+ 0xA045, 0xA046, 0xA047, 0xA048, 0xA049, 0xA04A, 0xA04B, 0xA04C, 0xA04D,
+ 0xA04E, 0xA04F, 0xA050, 0xA051, 0xA052, 0xA053, 0xA054, 0xA055, 0xA056,
+ 0xA057, 0xA058, 0xA059, 0xA05A, 0xA05B, 0xA05C, 0xA05D, 0xA05E, 0xA05F,
+ 0xA060, 0xA061, 0xA062, 0xA063, 0xA064, 0xA065, 0xA066, 0xA067, 0xA068,
+ 0xA069, 0xA06A, 0xA06B, 0xA06C, 0xA06D, 0xA06E, 0xA06F, 0xA070, 0xA071,
+ 0xA072, 0xA073, 0xA074, 0xA075, 0xA076, 0xA077, 0xA078, 0xA079, 0xA07A,
+ 0xA07B, 0xA07C, 0xA07D, 0xA07E, 0xA07F, 0xA080, 0xA081, 0xA082, 0xA083,
+ 0xA084, 0xA085, 0xA086, 0xA087, 0xA088, 0xA089, 0xA08A, 0xA08B, 0xA08C,
+ 0xA08D, 0xA08E, 0xA08F, 0xA090, 0xA091, 0xA092, 0xA093, 0xA094, 0xA095,
+ 0xA096, 0xA097, 0xA098, 0xA099, 0xA09A, 0xA09B, 0xA09C, 0xA09D, 0xA09E,
+ 0xA09F, 0xA0A0, 0xA0A1, 0xA0A2, 0xA0A3, 0xA0A4, 0xA0A5, 0xA0A6, 0xA0A7,
+ 0xA0A8, 0xA0A9, 0xA0AA, 0xA0AB, 0xA0AC, 0xA0AD, 0xA0AE, 0xA0AF, 0xA0B0,
+ 0xA0B1, 0xA0B2, 0xA0B3, 0xA0B4, 0xA0B5, 0xA0B6, 0xA0B7, 0xA0B8, 0xA0B9,
+ 0xA0BA, 0xA0BB, 0xA0BC, 0xA0BD, 0xA0BE, 0xA0BF, 0xA0C0, 0xA0C1, 0xA0C2,
+ 0xA0C3, 0xA0C4, 0xA0C5, 0xA0C6, 0xA0C7, 0xA0C8, 0xA0C9, 0xA0CA, 0xA0CB,
+ 0xA0CC, 0xA0CD, 0xA0CE, 0xA0CF, 0xA0D0, 0xA0D1, 0xA0D2, 0xA0D3, 0xA0D4,
+ 0xA0D5, 0xA0D6, 0xA0D7, 0xA0D8, 0xA0D9, 0xA0DA, 0xA0DB, 0xA0DC, 0xA0DD,
+ 0xA0DE, 0xA0DF, 0xA0E0, 0xA0E1, 0xA0E2, 0xA0E3, 0xA0E4, 0xA0E5, 0xA0E6,
+ 0xA0E7, 0xA0E8, 0xA0E9, 0xA0EA, 0xA0EB, 0xA0EC, 0xA0ED, 0xA0EE, 0xA0EF,
+ 0xA0F0, 0xA0F1, 0xA0F2, 0xA0F3, 0xA0F4, 0xA0F5, 0xA0F6, 0xA0F7, 0xA0F8,
+ 0xA0F9, 0xA0FA, 0xA0FB, 0xA0FC, 0xA0FD, 0xA0FE, 0xA0FF, 0xA100, 0xA101,
+ 0xA102, 0xA103, 0xA104, 0xA105, 0xA106, 0xA107, 0xA108, 0xA109, 0xA10A,
+ 0xA10B, 0xA10C, 0xA10D, 0xA10E, 0xA10F, 0xA110, 0xA111, 0xA112, 0xA113,
+ 0xA114, 0xA115, 0xA116, 0xA117, 0xA118, 0xA119, 0xA11A, 0xA11B, 0xA11C,
+ 0xA11D, 0xA11E, 0xA11F, 0xA120, 0xA121, 0xA122, 0xA123, 0xA124, 0xA125,
+ 0xA126, 0xA127, 0xA128, 0xA129, 0xA12A, 0xA12B, 0xA12C, 0xA12D, 0xA12E,
+ 0xA12F, 0xA130, 0xA131, 0xA132, 0xA133, 0xA134, 0xA135, 0xA136, 0xA137,
+ 0xA138, 0xA139, 0xA13A, 0xA13B, 0xA13C, 0xA13D, 0xA13E, 0xA13F, 0xA140,
+ 0xA141, 0xA142, 0xA143, 0xA144, 0xA145, 0xA146, 0xA147, 0xA148, 0xA149,
+ 0xA14A, 0xA14B, 0xA14C, 0xA14D, 0xA14E, 0xA14F, 0xA150, 0xA151, 0xA152,
+ 0xA153, 0xA154, 0xA155, 0xA156, 0xA157, 0xA158, 0xA159, 0xA15A, 0xA15B,
+ 0xA15C, 0xA15D, 0xA15E, 0xA15F, 0xA160, 0xA161, 0xA162, 0xA163, 0xA164,
+ 0xA165, 0xA166, 0xA167, 0xA168, 0xA169, 0xA16A, 0xA16B, 0xA16C, 0xA16D,
+ 0xA16E, 0xA16F, 0xA170, 0xA171, 0xA172, 0xA173, 0xA174, 0xA175, 0xA176,
+ 0xA177, 0xA178, 0xA179, 0xA17A, 0xA17B, 0xA17C, 0xA17D, 0xA17E, 0xA17F,
+ 0xA180, 0xA181, 0xA182, 0xA183, 0xA184, 0xA185, 0xA186, 0xA187, 0xA188,
+ 0xA189, 0xA18A, 0xA18B, 0xA18C, 0xA18D, 0xA18E, 0xA18F, 0xA190, 0xA191,
+ 0xA192, 0xA193, 0xA194, 0xA195, 0xA196, 0xA197, 0xA198, 0xA199, 0xA19A,
+ 0xA19B, 0xA19C, 0xA19D, 0xA19E, 0xA19F, 0xA1A0, 0xA1A1, 0xA1A2, 0xA1A3,
+ 0xA1A4, 0xA1A5, 0xA1A6, 0xA1A7, 0xA1A8, 0xA1A9, 0xA1AA, 0xA1AB, 0xA1AC,
+ 0xA1AD, 0xA1AE, 0xA1AF, 0xA1B0, 0xA1B1, 0xA1B2, 0xA1B3, 0xA1B4, 0xA1B5,
+ 0xA1B6, 0xA1B7, 0xA1B8, 0xA1B9, 0xA1BA, 0xA1BB, 0xA1BC, 0xA1BD, 0xA1BE,
+ 0xA1BF, 0xA1C0, 0xA1C1, 0xA1C2, 0xA1C3, 0xA1C4, 0xA1C5, 0xA1C6, 0xA1C7,
+ 0xA1C8, 0xA1C9, 0xA1CA, 0xA1CB, 0xA1CC, 0xA1CD, 0xA1CE, 0xA1CF, 0xA1D0,
+ 0xA1D1, 0xA1D2, 0xA1D3, 0xA1D4, 0xA1D5, 0xA1D6, 0xA1D7, 0xA1D8, 0xA1D9,
+ 0xA1DA, 0xA1DB, 0xA1DC, 0xA1DD, 0xA1DE, 0xA1DF, 0xA1E0, 0xA1E1, 0xA1E2,
+ 0xA1E3, 0xA1E4, 0xA1E5, 0xA1E6, 0xA1E7, 0xA1E8, 0xA1E9, 0xA1EA, 0xA1EB,
+ 0xA1EC, 0xA1ED, 0xA1EE, 0xA1EF, 0xA1F0, 0xA1F1, 0xA1F2, 0xA1F3, 0xA1F4,
+ 0xA1F5, 0xA1F6, 0xA1F7, 0xA1F8, 0xA1F9, 0xA1FA, 0xA1FB, 0xA1FC, 0xA1FD,
+ 0xA1FE, 0xA1FF, 0xA200, 0xA201, 0xA202, 0xA203, 0xA204, 0xA205, 0xA206,
+ 0xA207, 0xA208, 0xA209, 0xA20A, 0xA20B, 0xA20C, 0xA20D, 0xA20E, 0xA20F,
+ 0xA210, 0xA211, 0xA212, 0xA213, 0xA214, 0xA215, 0xA216, 0xA217, 0xA218,
+ 0xA219, 0xA21A, 0xA21B, 0xA21C, 0xA21D, 0xA21E, 0xA21F, 0xA220, 0xA221,
+ 0xA222, 0xA223, 0xA224, 0xA225, 0xA226, 0xA227, 0xA228, 0xA229, 0xA22A,
+ 0xA22B, 0xA22C, 0xA22D, 0xA22E, 0xA22F, 0xA230, 0xA231, 0xA232, 0xA233,
+ 0xA234, 0xA235, 0xA236, 0xA237, 0xA238, 0xA239, 0xA23A, 0xA23B, 0xA23C,
+ 0xA23D, 0xA23E, 0xA23F, 0xA240, 0xA241, 0xA242, 0xA243, 0xA244, 0xA245,
+ 0xA246, 0xA247, 0xA248, 0xA249, 0xA24A, 0xA24B, 0xA24C, 0xA24D, 0xA24E,
+ 0xA24F, 0xA250, 0xA251, 0xA252, 0xA253, 0xA254, 0xA255, 0xA256, 0xA257,
+ 0xA258, 0xA259, 0xA25A, 0xA25B, 0xA25C, 0xA25D, 0xA25E, 0xA25F, 0xA260,
+ 0xA261, 0xA262, 0xA263, 0xA264, 0xA265, 0xA266, 0xA267, 0xA268, 0xA269,
+ 0xA26A, 0xA26B, 0xA26C, 0xA26D, 0xA26E, 0xA26F, 0xA270, 0xA271, 0xA272,
+ 0xA273, 0xA274, 0xA275, 0xA276, 0xA277, 0xA278, 0xA279, 0xA27A, 0xA27B,
+ 0xA27C, 0xA27D, 0xA27E, 0xA27F, 0xA280, 0xA281, 0xA282, 0xA283, 0xA284,
+ 0xA285, 0xA286, 0xA287, 0xA288, 0xA289, 0xA28A, 0xA28B, 0xA28C, 0xA28D,
+ 0xA28E, 0xA28F, 0xA290, 0xA291, 0xA292, 0xA293, 0xA294, 0xA295, 0xA296,
+ 0xA297, 0xA298, 0xA299, 0xA29A, 0xA29B, 0xA29C, 0xA29D, 0xA29E, 0xA29F,
+ 0xA2A0, 0xA2A1, 0xA2A2, 0xA2A3, 0xA2A4, 0xA2A5, 0xA2A6, 0xA2A7, 0xA2A8,
+ 0xA2A9, 0xA2AA, 0xA2AB, 0xA2AC, 0xA2AD, 0xA2AE, 0xA2AF, 0xA2B0, 0xA2B1,
+ 0xA2B2, 0xA2B3, 0xA2B4, 0xA2B5, 0xA2B6, 0xA2B7, 0xA2B8, 0xA2B9, 0xA2BA,
+ 0xA2BB, 0xA2BC, 0xA2BD, 0xA2BE, 0xA2BF, 0xA2C0, 0xA2C1, 0xA2C2, 0xA2C3,
+ 0xA2C4, 0xA2C5, 0xA2C6, 0xA2C7, 0xA2C8, 0xA2C9, 0xA2CA, 0xA2CB, 0xA2CC,
+ 0xA2CD, 0xA2CE, 0xA2CF, 0xA2D0, 0xA2D1, 0xA2D2, 0xA2D3, 0xA2D4, 0xA2D5,
+ 0xA2D6, 0xA2D7, 0xA2D8, 0xA2D9, 0xA2DA, 0xA2DB, 0xA2DC, 0xA2DD, 0xA2DE,
+ 0xA2DF, 0xA2E0, 0xA2E1, 0xA2E2, 0xA2E3, 0xA2E4, 0xA2E5, 0xA2E6, 0xA2E7,
+ 0xA2E8, 0xA2E9, 0xA2EA, 0xA2EB, 0xA2EC, 0xA2ED, 0xA2EE, 0xA2EF, 0xA2F0,
+ 0xA2F1, 0xA2F2, 0xA2F3, 0xA2F4, 0xA2F5, 0xA2F6, 0xA2F7, 0xA2F8, 0xA2F9,
+ 0xA2FA, 0xA2FB, 0xA2FC, 0xA2FD, 0xA2FE, 0xA2FF, 0xA300, 0xA301, 0xA302,
+ 0xA303, 0xA304, 0xA305, 0xA306, 0xA307, 0xA308, 0xA309, 0xA30A, 0xA30B,
+ 0xA30C, 0xA30D, 0xA30E, 0xA30F, 0xA310, 0xA311, 0xA312, 0xA313, 0xA314,
+ 0xA315, 0xA316, 0xA317, 0xA318, 0xA319, 0xA31A, 0xA31B, 0xA31C, 0xA31D,
+ 0xA31E, 0xA31F, 0xA320, 0xA321, 0xA322, 0xA323, 0xA324, 0xA325, 0xA326,
+ 0xA327, 0xA328, 0xA329, 0xA32A, 0xA32B, 0xA32C, 0xA32D, 0xA32E, 0xA32F,
+ 0xA330, 0xA331, 0xA332, 0xA333, 0xA334, 0xA335, 0xA336, 0xA337, 0xA338,
+ 0xA339, 0xA33A, 0xA33B, 0xA33C, 0xA33D, 0xA33E, 0xA33F, 0xA340, 0xA341,
+ 0xA342, 0xA343, 0xA344, 0xA345, 0xA346, 0xA347, 0xA348, 0xA349, 0xA34A,
+ 0xA34B, 0xA34C, 0xA34D, 0xA34E, 0xA34F, 0xA350, 0xA351, 0xA352, 0xA353,
+ 0xA354, 0xA355, 0xA356, 0xA357, 0xA358, 0xA359, 0xA35A, 0xA35B, 0xA35C,
+ 0xA35D, 0xA35E, 0xA35F, 0xA360, 0xA361, 0xA362, 0xA363, 0xA364, 0xA365,
+ 0xA366, 0xA367, 0xA368, 0xA369, 0xA36A, 0xA36B, 0xA36C, 0xA36D, 0xA36E,
+ 0xA36F, 0xA370, 0xA371, 0xA372, 0xA373, 0xA374, 0xA375, 0xA376, 0xA377,
+ 0xA378, 0xA379, 0xA37A, 0xA37B, 0xA37C, 0xA37D, 0xA37E, 0xA37F, 0xA380,
+ 0xA381, 0xA382, 0xA383, 0xA384, 0xA385, 0xA386, 0xA387, 0xA388, 0xA389,
+ 0xA38A, 0xA38B, 0xA38C, 0xA38D, 0xA38E, 0xA38F, 0xA390, 0xA391, 0xA392,
+ 0xA393, 0xA394, 0xA395, 0xA396, 0xA397, 0xA398, 0xA399, 0xA39A, 0xA39B,
+ 0xA39C, 0xA39D, 0xA39E, 0xA39F, 0xA3A0, 0xA3A1, 0xA3A2, 0xA3A3, 0xA3A4,
+ 0xA3A5, 0xA3A6, 0xA3A7, 0xA3A8, 0xA3A9, 0xA3AA, 0xA3AB, 0xA3AC, 0xA3AD,
+ 0xA3AE, 0xA3AF, 0xA3B0, 0xA3B1, 0xA3B2, 0xA3B3, 0xA3B4, 0xA3B5, 0xA3B6,
+ 0xA3B7, 0xA3B8, 0xA3B9, 0xA3BA, 0xA3BB, 0xA3BC, 0xA3BD, 0xA3BE, 0xA3BF,
+ 0xA3C0, 0xA3C1, 0xA3C2, 0xA3C3, 0xA3C4, 0xA3C5, 0xA3C6, 0xA3C7, 0xA3C8,
+ 0xA3C9, 0xA3CA, 0xA3CB, 0xA3CC, 0xA3CD, 0xA3CE, 0xA3CF, 0xA3D0, 0xA3D1,
+ 0xA3D2, 0xA3D3, 0xA3D4, 0xA3D5, 0xA3D6, 0xA3D7, 0xA3D8, 0xA3D9, 0xA3DA,
+ 0xA3DB, 0xA3DC, 0xA3DD, 0xA3DE, 0xA3DF, 0xA3E0, 0xA3E1, 0xA3E2, 0xA3E3,
+ 0xA3E4, 0xA3E5, 0xA3E6, 0xA3E7, 0xA3E8, 0xA3E9, 0xA3EA, 0xA3EB, 0xA3EC,
+ 0xA3ED, 0xA3EE, 0xA3EF, 0xA3F0, 0xA3F1, 0xA3F2, 0xA3F3, 0xA3F4, 0xA3F5,
+ 0xA3F6, 0xA3F7, 0xA3F8, 0xA3F9, 0xA3FA, 0xA3FB, 0xA3FC, 0xA3FD, 0xA3FE,
+ 0xA3FF, 0xA400, 0xA401, 0xA402, 0xA403, 0xA404, 0xA405, 0xA406, 0xA407,
+ 0xA408, 0xA409, 0xA40A, 0xA40B, 0xA40C, 0xA40D, 0xA40E, 0xA40F, 0xA410,
+ 0xA411, 0xA412, 0xA413, 0xA414, 0xA415, 0xA416, 0xA417, 0xA418, 0xA419,
+ 0xA41A, 0xA41B, 0xA41C, 0xA41D, 0xA41E, 0xA41F, 0xA420, 0xA421, 0xA422,
+ 0xA423, 0xA424, 0xA425, 0xA426, 0xA427, 0xA428, 0xA429, 0xA42A, 0xA42B,
+ 0xA42C, 0xA42D, 0xA42E, 0xA42F, 0xA430, 0xA431, 0xA432, 0xA433, 0xA434,
+ 0xA435, 0xA436, 0xA437, 0xA438, 0xA439, 0xA43A, 0xA43B, 0xA43C, 0xA43D,
+ 0xA43E, 0xA43F, 0xA440, 0xA441, 0xA442, 0xA443, 0xA444, 0xA445, 0xA446,
+ 0xA447, 0xA448, 0xA449, 0xA44A, 0xA44B, 0xA44C, 0xA44D, 0xA44E, 0xA44F,
+ 0xA450, 0xA451, 0xA452, 0xA453, 0xA454, 0xA455, 0xA456, 0xA457, 0xA458,
+ 0xA459, 0xA45A, 0xA45B, 0xA45C, 0xA45D, 0xA45E, 0xA45F, 0xA460, 0xA461,
+ 0xA462, 0xA463, 0xA464, 0xA465, 0xA466, 0xA467, 0xA468, 0xA469, 0xA46A,
+ 0xA46B, 0xA46C, 0xA46D, 0xA46E, 0xA46F, 0xA470, 0xA471, 0xA472, 0xA473,
+ 0xA474, 0xA475, 0xA476, 0xA477, 0xA478, 0xA479, 0xA47A, 0xA47B, 0xA47C,
+ 0xA47D, 0xA47E, 0xA47F, 0xA480, 0xA481, 0xA482, 0xA483, 0xA484, 0xA485,
+ 0xA486, 0xA487, 0xA488, 0xA489, 0xA48A, 0xA48B, 0xA48C, 0xA490, 0xA491,
+ 0xA492, 0xA493, 0xA494, 0xA495, 0xA496, 0xA497, 0xA498, 0xA499, 0xA49A,
+ 0xA49B, 0xA49C, 0xA49D, 0xA49E, 0xA49F, 0xA4A0, 0xA4A1, 0xA4A2, 0xA4A3,
+ 0xA4A4, 0xA4A5, 0xA4A6, 0xA4A7, 0xA4A8, 0xA4A9, 0xA4AA, 0xA4AB, 0xA4AC,
+ 0xA4AD, 0xA4AE, 0xA4AF, 0xA4B0, 0xA4B1, 0xA4B2, 0xA4B3, 0xA4B4, 0xA4B5,
+ 0xA4B6, 0xA4B7, 0xA4B8, 0xA4B9, 0xA4BA, 0xA4BB, 0xA4BC, 0xA4BD, 0xA4BE,
+ 0xA4BF, 0xA4C0, 0xA4C1, 0xA4C2, 0xA4C3, 0xA4C4, 0xA4C5, 0xA4C6,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/GB1/GB-EUC-H_0.cpp b/core/fpdfapi/fpdf_cmaps/GB1/GB-EUC-H_0.cpp
new file mode 100644
index 0000000000..0485aee635
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/GB1/GB-EUC-H_0.cpp
@@ -0,0 +1,40 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h"
+
+const FX_WORD g_FXCMAP_GB_EUC_H_0[90 * 3] = {
+ 0x0020, 0x0020, 0x1E24, 0x0021, 0x007E, 0x032E, 0xA1A1, 0xA1FE, 0x0060,
+ 0xA2B1, 0xA2E2, 0x00BE, 0xA2E5, 0xA2EE, 0x00F0, 0xA2F1, 0xA2FC, 0x00FA,
+ 0xA3A1, 0xA3FE, 0x0106, 0xA4A1, 0xA4F3, 0x0164, 0xA5A1, 0xA5F6, 0x01B7,
+ 0xA6A1, 0xA6B8, 0x020D, 0xA6C1, 0xA6F5, 0x0225, 0xA7A1, 0xA7C1, 0x025A,
+ 0xA7D1, 0xA7F1, 0x027B, 0xA8A1, 0xA8C0, 0x029C, 0xA8C5, 0xA8EA, 0x02BC,
+ 0xA9A4, 0xA9EF, 0x02E2, 0xAAA1, 0xAAFE, 0x032E, 0xABA1, 0xABC0, 0x038C,
+ 0xB0A1, 0xB0FE, 0x03AC, 0xB1A1, 0xB1FE, 0x040A, 0xB2A1, 0xB2FE, 0x0468,
+ 0xB3A1, 0xB3FE, 0x04C6, 0xB4A1, 0xB4FE, 0x0524, 0xB5A1, 0xB5FE, 0x0582,
+ 0xB6A1, 0xB6FE, 0x05E0, 0xB7A1, 0xB7FE, 0x063E, 0xB8A1, 0xB8FE, 0x069C,
+ 0xB9A1, 0xB9FE, 0x06FA, 0xBAA1, 0xBAFE, 0x0758, 0xBBA1, 0xBBFE, 0x07B6,
+ 0xBCA1, 0xBCFE, 0x0814, 0xBDA1, 0xBDFE, 0x0872, 0xBEA1, 0xBEFE, 0x08D0,
+ 0xBFA1, 0xBFFE, 0x092E, 0xC0A1, 0xC0FE, 0x098C, 0xC1A1, 0xC1FE, 0x09EA,
+ 0xC2A1, 0xC2FE, 0x0A48, 0xC3A1, 0xC3FE, 0x0AA6, 0xC4A1, 0xC4FE, 0x0B04,
+ 0xC5A1, 0xC5FE, 0x0B62, 0xC6A1, 0xC6FE, 0x0BC0, 0xC7A1, 0xC7FE, 0x0C1E,
+ 0xC8A1, 0xC8FE, 0x0C7C, 0xC9A1, 0xC9FE, 0x0CDA, 0xCAA1, 0xCAFE, 0x0D38,
+ 0xCBA1, 0xCBFE, 0x0D96, 0xCCA1, 0xCCFE, 0x0DF4, 0xCDA1, 0xCDFE, 0x0E52,
+ 0xCEA1, 0xCEFE, 0x0EB0, 0xCFA1, 0xCFFE, 0x0F0E, 0xD0A1, 0xD0FE, 0x0F6C,
+ 0xD1A1, 0xD1FE, 0x0FCA, 0xD2A1, 0xD2FE, 0x1028, 0xD3A1, 0xD3FE, 0x1086,
+ 0xD4A1, 0xD4FE, 0x10E4, 0xD5A1, 0xD5FE, 0x1142, 0xD6A1, 0xD6FE, 0x11A0,
+ 0xD7A1, 0xD7F9, 0x11FE, 0xD8A1, 0xD8FE, 0x1257, 0xD9A1, 0xD9FE, 0x12B5,
+ 0xDAA1, 0xDAFE, 0x1313, 0xDBA1, 0xDBFE, 0x1371, 0xDCA1, 0xDCFE, 0x13CF,
+ 0xDDA1, 0xDDFE, 0x142D, 0xDEA1, 0xDEFE, 0x148B, 0xDFA1, 0xDFFE, 0x14E9,
+ 0xE0A1, 0xE0FE, 0x1547, 0xE1A1, 0xE1FE, 0x15A5, 0xE2A1, 0xE2FE, 0x1603,
+ 0xE3A1, 0xE3FE, 0x1661, 0xE4A1, 0xE4FE, 0x16BF, 0xE5A1, 0xE5FE, 0x171D,
+ 0xE6A1, 0xE6FE, 0x177B, 0xE7A1, 0xE7FE, 0x17D9, 0xE8A1, 0xE8FE, 0x1837,
+ 0xE9A1, 0xE9FE, 0x1895, 0xEAA1, 0xEAFE, 0x18F3, 0xEBA1, 0xEBFE, 0x1951,
+ 0xECA1, 0xECFE, 0x19AF, 0xEDA1, 0xEDFE, 0x1A0D, 0xEEA1, 0xEEFE, 0x1A6B,
+ 0xEFA1, 0xEFFE, 0x1AC9, 0xF0A1, 0xF0FE, 0x1B27, 0xF1A1, 0xF1FE, 0x1B85,
+ 0xF2A1, 0xF2FE, 0x1BE3, 0xF3A1, 0xF3FE, 0x1C41, 0xF4A1, 0xF4FE, 0x1C9F,
+ 0xF5A1, 0xF5FE, 0x1CFD, 0xF6A1, 0xF6FE, 0x1D5B, 0xF7A1, 0xF7FE, 0x1DB9,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/GB1/GB-EUC-V_0.cpp b/core/fpdfapi/fpdf_cmaps/GB1/GB-EUC-V_0.cpp
new file mode 100644
index 0000000000..274d0d2fd2
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/GB1/GB-EUC-V_0.cpp
@@ -0,0 +1,17 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h"
+
+const FX_WORD g_FXCMAP_GB_EUC_V_0[20 * 3] = {
+ 0xA1A2, 0xA1A2, 0x023F, 0xA1A3, 0xA1A3, 0x023E, 0xA1AA, 0xA1AA, 0x0256,
+ 0xA1AB, 0xA1AC, 0x1E18, 0xA1AD, 0xA1AD, 0x0257, 0xA1B2, 0xA1BF, 0x0246,
+ 0xA1FE, 0xA1FE, 0x1E1A, 0xA3A1, 0xA3A1, 0x0242, 0xA3A8, 0xA3A9, 0x0244,
+ 0xA3AC, 0xA3AC, 0x023D, 0xA3AE, 0xA3AE, 0x1E1B, 0xA3BA, 0xA3BB, 0x0240,
+ 0xA3BD, 0xA3BD, 0x1E1C, 0xA3BF, 0xA3BF, 0x0243, 0xA3DB, 0xA3DB, 0x1E1D,
+ 0xA3DD, 0xA3DD, 0x1E1E, 0xA3DF, 0xA3DF, 0x0258, 0xA3FB, 0xA3FB, 0x0254,
+ 0xA3FD, 0xA3FD, 0x0255, 0xA3FE, 0xA3FE, 0x1E1F,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-H_2.cpp b/core/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-H_2.cpp
new file mode 100644
index 0000000000..7f668947b5
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-H_2.cpp
@@ -0,0 +1,1367 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h"
+
+const FX_WORD g_FXCMAP_GBK_EUC_H_2[4071 * 3] = {
+ 0x0020, 0x0020, 0x1E24, 0x0021, 0x007E, 0x032E, 0x8140, 0x8178, 0x2758,
+ 0x8179, 0x8179, 0x2059, 0x817A, 0x817E, 0x2791, 0x8180, 0x8185, 0x2796,
+ 0x8186, 0x8186, 0x21F1, 0x8187, 0x81EC, 0x279C, 0x81ED, 0x81ED, 0x1FF2,
+ 0x81EE, 0x81F5, 0x2802, 0x81F6, 0x81F6, 0x205D, 0x81F7, 0x81FE, 0x280A,
+ 0x8240, 0x8252, 0x2812, 0x8253, 0x8253, 0x269C, 0x8254, 0x8261, 0x2825,
+ 0x8262, 0x8262, 0x21B5, 0x8263, 0x8273, 0x2833, 0x8274, 0x8274, 0x22CC,
+ 0x8275, 0x8279, 0x2844, 0x827A, 0x827A, 0x2016, 0x827B, 0x827C, 0x2849,
+ 0x827D, 0x827D, 0x1E62, 0x827E, 0x827E, 0x284B, 0x8280, 0x8280, 0x1F20,
+ 0x8281, 0x8282, 0x284C, 0x8283, 0x8283, 0x207F, 0x8284, 0x828F, 0x284E,
+ 0x8290, 0x8290, 0x205C, 0x8291, 0x82A4, 0x285A, 0x82A5, 0x82A5, 0x2194,
+ 0x82A6, 0x82C7, 0x286E, 0x82C8, 0x82C8, 0x1E65, 0x82C9, 0x82C9, 0x2281,
+ 0x82CA, 0x82E0, 0x2890, 0x82E1, 0x82E1, 0x22CD, 0x82E2, 0x82E2, 0x28A7,
+ 0x82E3, 0x82E3, 0x210A, 0x82E4, 0x82E4, 0x1E3E, 0x82E5, 0x82EC, 0x28A8,
+ 0x82ED, 0x82ED, 0x267F, 0x82EE, 0x82F1, 0x28B0, 0x82F2, 0x82F2, 0x222E,
+ 0x82F3, 0x82F6, 0x28B4, 0x82F7, 0x82F7, 0x1E96, 0x82F8, 0x82F8, 0x22CB,
+ 0x82F9, 0x82F9, 0x226C, 0x82FA, 0x82FA, 0x28B8, 0x82FB, 0x82FB, 0x2117,
+ 0x82FC, 0x82FE, 0x28B9, 0x8340, 0x8340, 0x28BC, 0x8341, 0x8341, 0x20E8,
+ 0x8342, 0x8344, 0x28BD, 0x8345, 0x8345, 0x22D4, 0x8346, 0x8347, 0x28C0,
+ 0x8348, 0x8348, 0x1FB9, 0x8349, 0x834B, 0x28C2, 0x834C, 0x834C, 0x22D8,
+ 0x834D, 0x8352, 0x28C5, 0x8353, 0x8353, 0x20DF, 0x8354, 0x8356, 0x28CB,
+ 0x8357, 0x8357, 0x20C2, 0x8358, 0x835D, 0x28CE, 0x835E, 0x835E, 0x2195,
+ 0x835F, 0x8364, 0x28D4, 0x8365, 0x8365, 0x1FAC, 0x8366, 0x8366, 0x22D3,
+ 0x8367, 0x8371, 0x28DA, 0x8372, 0x8372, 0x1F81, 0x8373, 0x8377, 0x28E5,
+ 0x8378, 0x8378, 0x2210, 0x8379, 0x8379, 0x28EA, 0x837A, 0x837A, 0x22CF,
+ 0x837B, 0x837B, 0x28EB, 0x837C, 0x837C, 0x2213, 0x837D, 0x837D, 0x28EC,
+ 0x837E, 0x837E, 0x1FE4, 0x8380, 0x8380, 0x1F90, 0x8381, 0x8385, 0x28ED,
+ 0x8386, 0x8386, 0x22D6, 0x8387, 0x8388, 0x28F2, 0x8389, 0x8389, 0x22D0,
+ 0x838A, 0x838A, 0x22CE, 0x838B, 0x838C, 0x28F4, 0x838D, 0x838D, 0x2681,
+ 0x838E, 0x8393, 0x28F6, 0x8394, 0x8394, 0x1E76, 0x8395, 0x839D, 0x28FC,
+ 0x839E, 0x839E, 0x2231, 0x839F, 0x83A5, 0x2905, 0x83A6, 0x83A6, 0x1E93,
+ 0x83A7, 0x83AA, 0x290C, 0x83AB, 0x83AB, 0x22D2, 0x83AC, 0x83AD, 0x2910,
+ 0x83AE, 0x83AE, 0x22D7, 0x83AF, 0x83AF, 0x22D5, 0x83B0, 0x83B0, 0x22D1,
+ 0x83B1, 0x83B9, 0x2912, 0x83BA, 0x83BA, 0x1EE5, 0x83BB, 0x83C8, 0x291B,
+ 0x83C9, 0x83C9, 0x2025, 0x83CA, 0x83F5, 0x2929, 0x83F6, 0x83F6, 0x1ECF,
+ 0x83F7, 0x83FE, 0x2955, 0x8440, 0x844F, 0x295D, 0x8450, 0x8450, 0x1FD9,
+ 0x8451, 0x8470, 0x296D, 0x8471, 0x8471, 0x22C8, 0x8472, 0x8473, 0x298D,
+ 0x8474, 0x8474, 0x2263, 0x8475, 0x8476, 0x298F, 0x8477, 0x8477, 0x2683,
+ 0x8478, 0x847E, 0x2991, 0x8480, 0x8481, 0x2998, 0x8482, 0x8482, 0x1F17,
+ 0x8483, 0x848D, 0x299A, 0x848E, 0x848E, 0x1F2B, 0x848F, 0x8491, 0x29A5,
+ 0x8492, 0x8492, 0x22CA, 0x8493, 0x8493, 0x1E99, 0x8494, 0x849C, 0x29A8,
+ 0x849D, 0x849D, 0x1F4F, 0x849E, 0x84A0, 0x29B1, 0x84A1, 0x84A1, 0x1FCF,
+ 0x84A2, 0x84A2, 0x2036, 0x84A3, 0x84A3, 0x1F3A, 0x84A4, 0x84A4, 0x29B4,
+ 0x84A5, 0x84A5, 0x22C9, 0x84A6, 0x84A6, 0x1F99, 0x84A7, 0x84A8, 0x29B5,
+ 0x84A9, 0x84A9, 0x1F75, 0x84AA, 0x84C4, 0x29B7, 0x84C5, 0x84C5, 0x1FBE,
+ 0x84C6, 0x84D2, 0x29D2, 0x84D3, 0x84D3, 0x1ECD, 0x84D4, 0x84D4, 0x29DF,
+ 0x84D5, 0x84D5, 0x21A9, 0x84D6, 0x84D6, 0x29E0, 0x84D7, 0x84D7, 0x21E6,
+ 0x84D8, 0x84D8, 0x29E1, 0x84D9, 0x84D9, 0x2127, 0x84DA, 0x84DA, 0x2003,
+ 0x84DB, 0x84DC, 0x29E2, 0x84DD, 0x84DD, 0x2132, 0x84DE, 0x84E9, 0x29E4,
+ 0x84EA, 0x84EA, 0x2323, 0x84EB, 0x84ED, 0x29F0, 0x84EE, 0x84EE, 0x2011,
+ 0x84EF, 0x84F0, 0x29F3, 0x84F1, 0x84F1, 0x20F5, 0x84F2, 0x84FE, 0x29F5,
+ 0x8540, 0x8550, 0x2A02, 0x8551, 0x8551, 0x22C5, 0x8552, 0x8552, 0x1F5E,
+ 0x8553, 0x8553, 0x2A13, 0x8554, 0x8554, 0x22C6, 0x8555, 0x855D, 0x2A14,
+ 0x855E, 0x855E, 0x20EF, 0x855F, 0x8565, 0x2A1D, 0x8566, 0x8566, 0x21D0,
+ 0x8567, 0x857E, 0x2A24, 0x8580, 0x8586, 0x2A3C, 0x8587, 0x8587, 0x22C1,
+ 0x8588, 0x858A, 0x2A43, 0x858B, 0x858B, 0x1E64, 0x858C, 0x8591, 0x2A46,
+ 0x8592, 0x8592, 0x21F9, 0x8593, 0x8595, 0x2A4C, 0x8596, 0x8596, 0x2010,
+ 0x8597, 0x8597, 0x2A4F, 0x8598, 0x8598, 0x22C2, 0x8599, 0x85A1, 0x2A50,
+ 0x85A2, 0x85A2, 0x1E5A, 0x85A3, 0x85B1, 0x2A59, 0x85B2, 0x85B2, 0x1EA2,
+ 0x85B3, 0x85FE, 0x2A68, 0x8640, 0x8649, 0x2AB4, 0x864A, 0x864A, 0x236D,
+ 0x864B, 0x8653, 0x2ABE, 0x8654, 0x8654, 0x2247, 0x8655, 0x8667, 0x2AC7,
+ 0x8668, 0x8668, 0x236C, 0x8669, 0x867E, 0x2ADA, 0x8680, 0x8695, 0x2AF0,
+ 0x8696, 0x8696, 0x219C, 0x8697, 0x8698, 0x2B06, 0x8699, 0x8699, 0x20C9,
+ 0x869A, 0x86A0, 0x2B08, 0x86A1, 0x86A1, 0x21F0, 0x86A2, 0x86C9, 0x2B0F,
+ 0x86CA, 0x86CA, 0x210B, 0x86CB, 0x86CB, 0x2B37, 0x86CC, 0x86CC, 0x20DE,
+ 0x86CD, 0x86CD, 0x2B38, 0x86CE, 0x86CE, 0x1EAA, 0x86CF, 0x86D0, 0x2B39,
+ 0x86D1, 0x86D1, 0x222C, 0x86D2, 0x86DB, 0x2B3B, 0x86DC, 0x86DC, 0x20D8,
+ 0x86DD, 0x86DD, 0x22C0, 0x86DE, 0x86E0, 0x2B45, 0x86E1, 0x86E1, 0x206F,
+ 0x86E2, 0x86E7, 0x2B48, 0x86E8, 0x86E8, 0x21A1, 0x86E9, 0x86ED, 0x2B4E,
+ 0x86EE, 0x86EE, 0x2379, 0x86EF, 0x86F3, 0x2B53, 0x86F4, 0x86F4, 0x2372,
+ 0x86F5, 0x86FE, 0x2B58, 0x8740, 0x8740, 0x216A, 0x8741, 0x8743, 0x2B62,
+ 0x8744, 0x8744, 0x237C, 0x8745, 0x8748, 0x2B65, 0x8749, 0x8749, 0x20B0,
+ 0x874A, 0x874A, 0x2B69, 0x874B, 0x874B, 0x237A, 0x874C, 0x874C, 0x1E74,
+ 0x874D, 0x874E, 0x2B6A, 0x874F, 0x874F, 0x2377, 0x8750, 0x8756, 0x2B6C,
+ 0x8757, 0x8757, 0x1F4C, 0x8758, 0x8759, 0x2B73, 0x875A, 0x875A, 0x2378,
+ 0x875B, 0x875B, 0x21CF, 0x875C, 0x875C, 0x2368, 0x875D, 0x875D, 0x2B75,
+ 0x875E, 0x875E, 0x2371, 0x875F, 0x875F, 0x2B76, 0x8760, 0x8760, 0x2369,
+ 0x8761, 0x8765, 0x2B77, 0x8766, 0x8766, 0x2674, 0x8767, 0x8779, 0x2B7C,
+ 0x877A, 0x877A, 0x236F, 0x877B, 0x877C, 0x2B8F, 0x877D, 0x877D, 0x2370,
+ 0x877E, 0x877E, 0x2B91, 0x8780, 0x8780, 0x2B92, 0x8781, 0x8781, 0x2376,
+ 0x8782, 0x8782, 0x2373, 0x8783, 0x8785, 0x2B93, 0x8786, 0x8786, 0x237F,
+ 0x8787, 0x8787, 0x2B96, 0x8788, 0x8788, 0x2374, 0x8789, 0x8789, 0x2B97,
+ 0x878A, 0x878A, 0x20B5, 0x878B, 0x878C, 0x2B98, 0x878D, 0x878D, 0x1EDB,
+ 0x878E, 0x878E, 0x2672, 0x878F, 0x8792, 0x2B9A, 0x8793, 0x8793, 0x236E,
+ 0x8794, 0x8797, 0x2B9E, 0x8798, 0x8798, 0x21B7, 0x8799, 0x879C, 0x2BA2,
+ 0x879D, 0x879D, 0x2375, 0x879E, 0x87A2, 0x2BA6, 0x87A3, 0x87A3, 0x2382,
+ 0x87A4, 0x87A6, 0x2BAB, 0x87A7, 0x87A7, 0x209E, 0x87A8, 0x87B2, 0x2BAE,
+ 0x87B3, 0x87B3, 0x236B, 0x87B4, 0x87B4, 0x2BB9, 0x87B5, 0x87B5, 0x2039,
+ 0x87B6, 0x87BA, 0x2BBA, 0x87BB, 0x87BB, 0x269F, 0x87BC, 0x87BE, 0x2BBF,
+ 0x87BF, 0x87BF, 0x237D, 0x87C0, 0x87C0, 0x21F5, 0x87C1, 0x87C1, 0x2BC2,
+ 0x87C2, 0x87C2, 0x2381, 0x87C3, 0x87C9, 0x2BC3, 0x87CA, 0x87CA, 0x237B,
+ 0x87CB, 0x87CB, 0x237E, 0x87CC, 0x87CC, 0x21CC, 0x87CD, 0x87CE, 0x2BCA,
+ 0x87CF, 0x87CF, 0x22DB, 0x87D0, 0x87D1, 0x2BCC, 0x87D2, 0x87D2, 0x236A,
+ 0x87D3, 0x87D3, 0x2689, 0x87D4, 0x87D4, 0x2BCE, 0x87D5, 0x87D5, 0x2697,
+ 0x87D6, 0x87D9, 0x2BCF, 0x87DA, 0x87DA, 0x22A1, 0x87DB, 0x87F6, 0x2BD3,
+ 0x87F7, 0x87F7, 0x2383, 0x87F8, 0x87F8, 0x1F3D, 0x87F9, 0x87F9, 0x2BEF,
+ 0x87FA, 0x87FA, 0x218F, 0x87FB, 0x87FE, 0x2BF0, 0x8840, 0x8840, 0x2246,
+ 0x8841, 0x8841, 0x2248, 0x8842, 0x8843, 0x2BF4, 0x8844, 0x8844, 0x217E,
+ 0x8845, 0x8845, 0x2BF6, 0x8846, 0x8846, 0x2180, 0x8847, 0x887E, 0x2BF7,
+ 0x8880, 0x88B9, 0x2C2F, 0x88BA, 0x88BA, 0x232A, 0x88BB, 0x88CB, 0x2C69,
+ 0x88CC, 0x88CC, 0x228B, 0x88CD, 0x88D3, 0x2C7A, 0x88D4, 0x88D4, 0x1F85,
+ 0x88D5, 0x88D6, 0x2C81, 0x88D7, 0x88D7, 0x2325, 0x88D8, 0x88DE, 0x2C83,
+ 0x88DF, 0x88DF, 0x232C, 0x88E0, 0x88E4, 0x2C8A, 0x88E5, 0x88E5, 0x232E,
+ 0x88E6, 0x88F1, 0x2C8F, 0x88F2, 0x88F2, 0x2205, 0x88F3, 0x88F3, 0x1E38,
+ 0x88F4, 0x88F5, 0x2C9B, 0x88F6, 0x88F6, 0x1E73, 0x88F7, 0x88FE, 0x2C9D,
+ 0x8940, 0x894A, 0x2CA5, 0x894B, 0x894B, 0x1FE3, 0x894C, 0x894C, 0x2339,
+ 0x894D, 0x894D, 0x2CB0, 0x894E, 0x894E, 0x232B, 0x894F, 0x894F, 0x2CB1,
+ 0x8950, 0x8950, 0x232D, 0x8951, 0x8953, 0x2CB2, 0x8954, 0x8954, 0x217F,
+ 0x8955, 0x895C, 0x2CB5, 0x895D, 0x895D, 0x21A7, 0x895E, 0x895E, 0x2CBD,
+ 0x895F, 0x895F, 0x232F, 0x8960, 0x896C, 0x2CBE, 0x896D, 0x896D, 0x1E7D,
+ 0x896E, 0x8970, 0x2CCB, 0x8971, 0x8971, 0x20D6, 0x8972, 0x897B, 0x2CCE,
+ 0x897C, 0x897C, 0x1EC2, 0x897D, 0x897E, 0x2CD8, 0x8980, 0x898A, 0x2CDA,
+ 0x898B, 0x898B, 0x22B2, 0x898C, 0x8998, 0x2CE5, 0x8999, 0x8999, 0x1EDF,
+ 0x899A, 0x899D, 0x2CF2, 0x899E, 0x899E, 0x1EF9, 0x899F, 0x89A5, 0x2CF6,
+ 0x89A6, 0x89A6, 0x20D9, 0x89A7, 0x89A7, 0x2CFD, 0x89A8, 0x89A8, 0x1FDD,
+ 0x89A9, 0x89AE, 0x2CFE, 0x89AF, 0x89AF, 0x2167, 0x89B0, 0x89B9, 0x2D04,
+ 0x89BA, 0x89BA, 0x21ED, 0x89BB, 0x89BD, 0x2D0E, 0x89BE, 0x89BE, 0x2007,
+ 0x89BF, 0x89BF, 0x2326, 0x89C0, 0x89C0, 0x2329, 0x89C1, 0x89C3, 0x2D11,
+ 0x89C4, 0x89C4, 0x1F52, 0x89C5, 0x89C5, 0x203B, 0x89C6, 0x89C6, 0x2328,
+ 0x89C7, 0x89C7, 0x2D14, 0x89C8, 0x89C8, 0x2327, 0x89C9, 0x89CD, 0x2D15,
+ 0x89CE, 0x89CE, 0x1E2B, 0x89CF, 0x89D0, 0x2D1A, 0x89D1, 0x89D1, 0x22AE,
+ 0x89D2, 0x89D7, 0x2D1C, 0x89D8, 0x89D8, 0x1F49, 0x89D9, 0x89DA, 0x2D22,
+ 0x89DB, 0x89DB, 0x2138, 0x89DC, 0x89F3, 0x2D24, 0x89F4, 0x89F4, 0x2081,
+ 0x89F5, 0x89FE, 0x2D3C, 0x8A40, 0x8A40, 0x2D46, 0x8A41, 0x8A41, 0x1F7C,
+ 0x8A42, 0x8A58, 0x2D47, 0x8A59, 0x8A59, 0x235B, 0x8A5A, 0x8A5A, 0x1EDE,
+ 0x8A5B, 0x8A5B, 0x2D5E, 0x8A5C, 0x8A5C, 0x1FA2, 0x8A5D, 0x8A5D, 0x2D5F,
+ 0x8A5E, 0x8A5E, 0x1EFA, 0x8A5F, 0x8A78, 0x2D60, 0x8A79, 0x8A79, 0x22AD,
+ 0x8A7A, 0x8A7E, 0x2D7A, 0x8A80, 0x8AE3, 0x2D7F, 0x8AE4, 0x8AE4, 0x203F,
+ 0x8AE5, 0x8AFE, 0x2DE3, 0x8B40, 0x8B43, 0x2DFD, 0x8B44, 0x8B44, 0x1F0E,
+ 0x8B45, 0x8B48, 0x2E01, 0x8B49, 0x8B49, 0x23F9, 0x8B4A, 0x8B79, 0x2E05,
+ 0x8B7A, 0x8B7A, 0x23FC, 0x8B7B, 0x8B7E, 0x2E35, 0x8B80, 0x8B8B, 0x2E39,
+ 0x8B8C, 0x8B8C, 0x2069, 0x8B8D, 0x8B9D, 0x2E45, 0x8B9E, 0x8B9E, 0x23F7,
+ 0x8B9F, 0x8BB2, 0x2E56, 0x8BB3, 0x8BB3, 0x23F6, 0x8BB4, 0x8BB8, 0x2E6A,
+ 0x8BB9, 0x8BB9, 0x23FD, 0x8BBA, 0x8BBD, 0x2E6F, 0x8BBE, 0x8BBE, 0x23F8,
+ 0x8BBF, 0x8BC5, 0x2E73, 0x8BC6, 0x8BC6, 0x23FA, 0x8BC7, 0x8BC7, 0x2E7A,
+ 0x8BC8, 0x8BC8, 0x23FE, 0x8BC9, 0x8BC9, 0x1FA8, 0x8BCA, 0x8BD3, 0x2E7B,
+ 0x8BD4, 0x8BD4, 0x2401, 0x8BD5, 0x8BDB, 0x2E85, 0x8BDC, 0x8BDC, 0x23FF,
+ 0x8BDD, 0x8BE4, 0x2E8C, 0x8BE5, 0x8BE5, 0x2400, 0x8BE6, 0x8BEA, 0x2E94,
+ 0x8BEB, 0x8BEB, 0x2221, 0x8BEC, 0x8BEF, 0x2E99, 0x8BF0, 0x8BF0, 0x2122,
+ 0x8BF1, 0x8BFE, 0x2E9D, 0x8C40, 0x8C43, 0x2EAB, 0x8C44, 0x8C44, 0x23FB,
+ 0x8C45, 0x8C4E, 0x2EAF, 0x8C4F, 0x8C4F, 0x215A, 0x8C50, 0x8C56, 0x2EB9,
+ 0x8C57, 0x8C57, 0x21E5, 0x8C58, 0x8C5B, 0x2EC0, 0x8C5C, 0x8C5C, 0x2057,
+ 0x8C5D, 0x8C7E, 0x2EC4, 0x8C80, 0x8C8A, 0x2EE6, 0x8C8B, 0x8C8B, 0x20E5,
+ 0x8C8C, 0x8C8C, 0x2EF1, 0x8C8D, 0x8C8D, 0x212F, 0x8C8E, 0x8C8E, 0x20A3,
+ 0x8C8F, 0x8C8F, 0x2121, 0x8C90, 0x8C90, 0x2EF2, 0x8C91, 0x8C91, 0x21D4,
+ 0x8C92, 0x8C92, 0x1FE5, 0x8C93, 0x8C98, 0x2EF3, 0x8C99, 0x8C99, 0x1E8A,
+ 0x8C9A, 0x8C9A, 0x1E37, 0x8C9B, 0x8CA1, 0x2EF9, 0x8CA2, 0x8CA2, 0x1F9E,
+ 0x8CA3, 0x8CA3, 0x22A6, 0x8CA4, 0x8CA4, 0x21E8, 0x8CA5, 0x8CA5, 0x2F00,
+ 0x8CA6, 0x8CA6, 0x1EDA, 0x8CA7, 0x8CA7, 0x1EB9, 0x8CA8, 0x8CBF, 0x2F01,
+ 0x8CC0, 0x8CC0, 0x235C, 0x8CC1, 0x8CD1, 0x2F19, 0x8CD2, 0x8CD2, 0x2050,
+ 0x8CD3, 0x8CD3, 0x1E67, 0x8CD4, 0x8CD4, 0x2F2A, 0x8CD5, 0x8CD5, 0x23F4,
+ 0x8CD6, 0x8CD8, 0x2F2B, 0x8CD9, 0x8CD9, 0x213E, 0x8CDA, 0x8CF8, 0x2F2E,
+ 0x8CF9, 0x8CF9, 0x1F16, 0x8CFA, 0x8CFE, 0x2F4D, 0x8D40, 0x8D72, 0x2F52,
+ 0x8D73, 0x8D73, 0x2389, 0x8D74, 0x8D74, 0x2F85, 0x8D75, 0x8D75, 0x1EB7,
+ 0x8D76, 0x8D7A, 0x2F86, 0x8D7B, 0x8D7B, 0x21B4, 0x8D7C, 0x8D7E, 0x2F8B,
+ 0x8D80, 0x8D87, 0x2F8E, 0x8D88, 0x8D88, 0x238F, 0x8D89, 0x8D8E, 0x2F96,
+ 0x8D8F, 0x8D8F, 0x1F1A, 0x8D90, 0x8D9D, 0x2F9C, 0x8D9E, 0x8D9E, 0x238B,
+ 0x8D9F, 0x8DB8, 0x2FAA, 0x8DB9, 0x8DB9, 0x238A, 0x8DBA, 0x8DE1, 0x2FC4,
+ 0x8DE2, 0x8DE2, 0x2391, 0x8DE3, 0x8DE3, 0x2FEC, 0x8DE4, 0x8DE4, 0x2271,
+ 0x8DE5, 0x8DE6, 0x2FED, 0x8DE7, 0x8DE7, 0x2388, 0x8DE8, 0x8DF6, 0x2FEF,
+ 0x8DF7, 0x8DF7, 0x238E, 0x8DF8, 0x8DFD, 0x2FFE, 0x8DFE, 0x8DFE, 0x238D,
+ 0x8E40, 0x8E45, 0x3004, 0x8E46, 0x8E46, 0x238C, 0x8E47, 0x8E55, 0x300A,
+ 0x8E56, 0x8E56, 0x2390, 0x8E57, 0x8E57, 0x3019, 0x8E58, 0x8E58, 0x2033,
+ 0x8E59, 0x8E59, 0x301A, 0x8E5A, 0x8E5A, 0x223C, 0x8E5B, 0x8E67, 0x301B,
+ 0x8E68, 0x8E68, 0x1FE9, 0x8E69, 0x8E6D, 0x3028, 0x8E6E, 0x8E6E, 0x2055,
+ 0x8E6F, 0x8E6F, 0x302D, 0x8E70, 0x8E70, 0x2392, 0x8E71, 0x8E7E, 0x302E,
+ 0x8E80, 0x8E80, 0x2324, 0x8E81, 0x8E9A, 0x303C, 0x8E9B, 0x8E9B, 0x2143,
+ 0x8E9C, 0x8E9E, 0x3056, 0x8E9F, 0x8E9F, 0x2129, 0x8EA0, 0x8EA3, 0x3059,
+ 0x8EA4, 0x8EA4, 0x2277, 0x8EA5, 0x8EA6, 0x305D, 0x8EA7, 0x8EA7, 0x1EA7,
+ 0x8EA8, 0x8EAB, 0x305F, 0x8EAC, 0x8EAC, 0x2285, 0x8EAD, 0x8EAD, 0x3063,
+ 0x8EAE, 0x8EAE, 0x2384, 0x8EAF, 0x8EBC, 0x3064, 0x8EBD, 0x8EBD, 0x2387,
+ 0x8EBE, 0x8EBE, 0x2386, 0x8EBF, 0x8EC2, 0x3072, 0x8EC3, 0x8EC3, 0x2290,
+ 0x8EC4, 0x8EC4, 0x3076, 0x8EC5, 0x8EC5, 0x1E44, 0x8EC6, 0x8ECC, 0x3077,
+ 0x8ECD, 0x8ECD, 0x1E32, 0x8ECE, 0x8ECE, 0x2385, 0x8ECF, 0x8ED5, 0x307E,
+ 0x8ED6, 0x8ED6, 0x1F13, 0x8ED7, 0x8ED7, 0x1F73, 0x8ED8, 0x8EEB, 0x3085,
+ 0x8EEC, 0x8EEC, 0x1FE0, 0x8EED, 0x8EFE, 0x3099, 0x8F40, 0x8F51, 0x30AB,
+ 0x8F52, 0x8F52, 0x2087, 0x8F53, 0x8F53, 0x1E78, 0x8F54, 0x8F54, 0x23AE,
+ 0x8F55, 0x8F55, 0x1EF6, 0x8F56, 0x8F56, 0x1F31, 0x8F57, 0x8F5C, 0x30BD,
+ 0x8F5D, 0x8F5D, 0x2045, 0x8F5E, 0x8F63, 0x30C3, 0x8F64, 0x8F64, 0x2178,
+ 0x8F65, 0x8F7E, 0x30C9, 0x8F80, 0x8F85, 0x30E3, 0x8F86, 0x8F86, 0x23F5,
+ 0x8F87, 0x8F87, 0x30E9, 0x8F88, 0x8F88, 0x2275, 0x8F89, 0x8F94, 0x30EA,
+ 0x8F95, 0x8F95, 0x266E, 0x8F96, 0x8F96, 0x30F6, 0x8F97, 0x8F97, 0x1EB0,
+ 0x8F98, 0x8F9A, 0x30F7, 0x8F9B, 0x8F9B, 0x2083, 0x8F9C, 0x8F9C, 0x30FA,
+ 0x8F9D, 0x8F9D, 0x2188, 0x8F9E, 0x8FA0, 0x30FB, 0x8FA1, 0x8FA1, 0x267C,
+ 0x8FA2, 0x8FBC, 0x30FE, 0x8FBD, 0x8FBD, 0x1FC5, 0x8FBE, 0x8FC3, 0x3119,
+ 0x8FC4, 0x8FC4, 0x1EA1, 0x8FC5, 0x8FC5, 0x311F, 0x8FC6, 0x8FC6, 0x2393,
+ 0x8FC7, 0x8FCC, 0x3120, 0x8FCD, 0x8FCD, 0x1F0B, 0x8FCE, 0x8FD7, 0x3126,
+ 0x8FD8, 0x8FD8, 0x1E7C, 0x8FD9, 0x8FFE, 0x3130, 0x9040, 0x907E, 0x3156,
+ 0x9080, 0x909C, 0x3195, 0x909D, 0x909D, 0x23B4, 0x909E, 0x909E, 0x207E,
+ 0x909F, 0x90B9, 0x31B2, 0x90BA, 0x90BA, 0x1EE3, 0x90BB, 0x90BF, 0x31CD,
+ 0x90C0, 0x90C0, 0x2095, 0x90C1, 0x90C1, 0x23BB, 0x90C2, 0x90C4, 0x31D2,
+ 0x90C5, 0x90C5, 0x23B9, 0x90C6, 0x90DA, 0x31D5, 0x90DB, 0x90DB, 0x1E28,
+ 0x90DC, 0x90DC, 0x23BD, 0x90DD, 0x90EC, 0x31EA, 0x90ED, 0x90ED, 0x23B5,
+ 0x90EE, 0x90EF, 0x31FA, 0x90F0, 0x90F0, 0x23BA, 0x90F1, 0x90F6, 0x31FC,
+ 0x90F7, 0x90F7, 0x23B3, 0x90F8, 0x90FE, 0x3202, 0x9140, 0x9141, 0x3209,
+ 0x9142, 0x9142, 0x2162, 0x9143, 0x914A, 0x320B, 0x914B, 0x914B, 0x1E5E,
+ 0x914C, 0x914C, 0x3213, 0x914D, 0x914D, 0x1E5D, 0x914E, 0x9150, 0x3214,
+ 0x9151, 0x9151, 0x23B7, 0x9152, 0x9153, 0x3217, 0x9154, 0x9154, 0x1F2F,
+ 0x9155, 0x9155, 0x24DF, 0x9156, 0x9158, 0x3219, 0x9159, 0x9159, 0x23B2,
+ 0x915A, 0x915A, 0x214E, 0x915B, 0x915C, 0x321C, 0x915D, 0x915D, 0x2052,
+ 0x915E, 0x9160, 0x321E, 0x9161, 0x9161, 0x23BC, 0x9162, 0x9162, 0x3221,
+ 0x9163, 0x9163, 0x20EB, 0x9164, 0x916D, 0x3222, 0x916E, 0x916E, 0x2232,
+ 0x916F, 0x9175, 0x322C, 0x9176, 0x9176, 0x1E3F, 0x9177, 0x9179, 0x3233,
+ 0x917A, 0x917A, 0x201B, 0x917B, 0x917B, 0x20BC, 0x917C, 0x917C, 0x23BE,
+ 0x917D, 0x917E, 0x3236, 0x9180, 0x9183, 0x3238, 0x9184, 0x9184, 0x1EAE,
+ 0x9185, 0x918C, 0x323C, 0x918D, 0x918D, 0x1EFB, 0x918E, 0x9190, 0x3244,
+ 0x9191, 0x9191, 0x2089, 0x9192, 0x9192, 0x3247, 0x9193, 0x9193, 0x23B1,
+ 0x9194, 0x9196, 0x3248, 0x9197, 0x9197, 0x21C4, 0x9198, 0x919A, 0x324B,
+ 0x919B, 0x919B, 0x2214, 0x919C, 0x91A8, 0x324E, 0x91A9, 0x91A9, 0x1FDE,
+ 0x91AA, 0x91AA, 0x2223, 0x91AB, 0x91AB, 0x23B6, 0x91AC, 0x91B9, 0x325B,
+ 0x91BA, 0x91BA, 0x268C, 0x91BB, 0x91BB, 0x24DE, 0x91BC, 0x91BE, 0x3269,
+ 0x91BF, 0x91BF, 0x24E0, 0x91C0, 0x91C2, 0x326C, 0x91C3, 0x91C3, 0x23B8,
+ 0x91C4, 0x91CC, 0x326F, 0x91CD, 0x91CD, 0x1E81, 0x91CE, 0x91CF, 0x3278,
+ 0x91D0, 0x91D0, 0x1FFE, 0x91D1, 0x91D1, 0x1F51, 0x91D2, 0x91D2, 0x21E1,
+ 0x91D3, 0x91D3, 0x327A, 0x91D4, 0x91D4, 0x23B0, 0x91D5, 0x91D5, 0x327B,
+ 0x91D6, 0x91D6, 0x1FCE, 0x91D7, 0x91D7, 0x327C, 0x91D8, 0x91D8, 0x211E,
+ 0x91D9, 0x91D9, 0x2021, 0x91DA, 0x91DE, 0x327D, 0x91DF, 0x91DF, 0x24E1,
+ 0x91E0, 0x91E1, 0x3282, 0x91E2, 0x91E2, 0x24A3, 0x91E3, 0x91E9, 0x3284,
+ 0x91EA, 0x91EA, 0x24A4, 0x91EB, 0x91EF, 0x328B, 0x91F0, 0x91F0, 0x2273,
+ 0x91F1, 0x91F1, 0x3290, 0x91F2, 0x91F2, 0x21B0, 0x91F3, 0x91FE, 0x3291,
+ 0x9240, 0x927E, 0x329D, 0x9280, 0x92B5, 0x32DC, 0x92B6, 0x92B6, 0x21D1,
+ 0x92B7, 0x92CD, 0x3312, 0x92CE, 0x92CE, 0x211C, 0x92CF, 0x92CF, 0x3329,
+ 0x92D0, 0x92D0, 0x235D, 0x92D1, 0x92D3, 0x332A, 0x92D4, 0x92D4, 0x2682,
+ 0x92D5, 0x92DE, 0x332D, 0x92DF, 0x92DF, 0x210D, 0x92E0, 0x92E0, 0x205A,
+ 0x92E1, 0x92FD, 0x3337, 0x92FE, 0x92FE, 0x1F8D, 0x9340, 0x934F, 0x3354,
+ 0x9350, 0x9350, 0x21FF, 0x9351, 0x935C, 0x3364, 0x935D, 0x935D, 0x1F58,
+ 0x935E, 0x936F, 0x3370, 0x9370, 0x9370, 0x215B, 0x9371, 0x9375, 0x3382,
+ 0x9376, 0x9376, 0x1EB6, 0x9377, 0x937E, 0x3387, 0x9380, 0x938B, 0x338F,
+ 0x938C, 0x938C, 0x20DB, 0x938D, 0x939C, 0x339B, 0x939D, 0x939D, 0x2360,
+ 0x939E, 0x93A4, 0x33AB, 0x93A5, 0x93A5, 0x2361, 0x93A6, 0x93A6, 0x33B2,
+ 0x93A7, 0x93A7, 0x2040, 0x93A8, 0x93B3, 0x33B3, 0x93B4, 0x93B4, 0x228E,
+ 0x93B5, 0x93B7, 0x33BF, 0x93B8, 0x93B8, 0x1FDF, 0x93B9, 0x93BA, 0x33C2,
+ 0x93BB, 0x93BB, 0x235E, 0x93BC, 0x93BC, 0x33C4, 0x93BD, 0x93BD, 0x1E6A,
+ 0x93BE, 0x93C5, 0x33C5, 0x93C6, 0x93C6, 0x2002, 0x93C7, 0x93CE, 0x33CD,
+ 0x93CF, 0x93CF, 0x2093, 0x93D0, 0x93D6, 0x33D5, 0x93D7, 0x93D7, 0x235F,
+ 0x93D8, 0x93DA, 0x33DC, 0x93DB, 0x93DB, 0x1EAC, 0x93DC, 0x93DC, 0x1E54,
+ 0x93DD, 0x93E0, 0x33DF, 0x93E1, 0x93E1, 0x1F08, 0x93E2, 0x93E3, 0x33E3,
+ 0x93E4, 0x93E4, 0x20C0, 0x93E5, 0x93E5, 0x2362, 0x93E6, 0x93E8, 0x33E5,
+ 0x93E9, 0x93E9, 0x2160, 0x93EA, 0x93EA, 0x33E8, 0x93EB, 0x93EB, 0x219D,
+ 0x93EC, 0x93EC, 0x1F8E, 0x93ED, 0x93ED, 0x222D, 0x93EE, 0x93EE, 0x33E9,
+ 0x93EF, 0x93EF, 0x2047, 0x93F0, 0x93F0, 0x33EA, 0x93F1, 0x93F1, 0x2262,
+ 0x93F2, 0x93F3, 0x33EB, 0x93F4, 0x93F4, 0x1F67, 0x93F5, 0x93F5, 0x1EB2,
+ 0x93F6, 0x93F9, 0x33ED, 0x93FA, 0x93FA, 0x1EA9, 0x93FB, 0x93FD, 0x33F1,
+ 0x93FE, 0x93FE, 0x1FCC, 0x9440, 0x9443, 0x33F4, 0x9444, 0x9444, 0x1F72,
+ 0x9445, 0x944C, 0x33F8, 0x944D, 0x944D, 0x2098, 0x944E, 0x944F, 0x3400,
+ 0x9450, 0x9450, 0x1E52, 0x9451, 0x9451, 0x20A4, 0x9452, 0x9452, 0x1F1C,
+ 0x9453, 0x9453, 0x228F, 0x9454, 0x9454, 0x3402, 0x9455, 0x9455, 0x1FED,
+ 0x9456, 0x9457, 0x3403, 0x9458, 0x9458, 0x2365, 0x9459, 0x945A, 0x3405,
+ 0x945B, 0x945B, 0x1E2D, 0x945C, 0x945C, 0x2152, 0x945D, 0x945D, 0x2366,
+ 0x945E, 0x945E, 0x3407, 0x945F, 0x945F, 0x20FA, 0x9460, 0x9463, 0x3408,
+ 0x9464, 0x9464, 0x2363, 0x9465, 0x9465, 0x340C, 0x9466, 0x9466, 0x209A,
+ 0x9467, 0x946D, 0x340D, 0x946E, 0x946E, 0x203C, 0x946F, 0x9471, 0x3414,
+ 0x9472, 0x9472, 0x1FF6, 0x9473, 0x9473, 0x3417, 0x9474, 0x9474, 0x2364,
+ 0x9475, 0x9475, 0x3418, 0x9476, 0x9476, 0x1E69, 0x9477, 0x9477, 0x3419,
+ 0x9478, 0x9478, 0x2367, 0x9479, 0x9479, 0x341A, 0x947A, 0x947A, 0x211D,
+ 0x947B, 0x947E, 0x341B, 0x9480, 0x9480, 0x2259, 0x9481, 0x9481, 0x2056,
+ 0x9482, 0x9482, 0x2163, 0x9483, 0x9486, 0x341F, 0x9487, 0x9487, 0x1FA9,
+ 0x9488, 0x9488, 0x1FFC, 0x9489, 0x94A0, 0x3423, 0x94A1, 0x94A1, 0x1E2E,
+ 0x94A2, 0x94B2, 0x343B, 0x94B3, 0x94B3, 0x1EBC, 0x94B4, 0x94B4, 0x344C,
+ 0x94B5, 0x94B5, 0x2142, 0x94B6, 0x94BE, 0x344D, 0x94BF, 0x94BF, 0x201E,
+ 0x94C0, 0x94C0, 0x1E43, 0x94C1, 0x94CB, 0x3456, 0x94CC, 0x94CC, 0x24D4,
+ 0x94CD, 0x94D7, 0x3461, 0x94D8, 0x94D8, 0x226F, 0x94D9, 0x94DF, 0x346C,
+ 0x94E0, 0x94E0, 0x1ED7, 0x94E1, 0x94FE, 0x3473, 0x9540, 0x9571, 0x3491,
+ 0x9572, 0x9572, 0x212D, 0x9573, 0x957E, 0x34C3, 0x9580, 0x9582, 0x34CF,
+ 0x9583, 0x9583, 0x229B, 0x9584, 0x959D, 0x34D2, 0x959E, 0x959E, 0x2256,
+ 0x959F, 0x959F, 0x24A8, 0x95A0, 0x95B2, 0x34EC, 0x95B3, 0x95B3, 0x1E79,
+ 0x95B4, 0x95B9, 0x34FF, 0x95BA, 0x95BA, 0x225A, 0x95BB, 0x95CE, 0x3505,
+ 0x95CF, 0x95CF, 0x24A7, 0x95D0, 0x95D0, 0x3519, 0x95D1, 0x95D1, 0x2686,
+ 0x95D2, 0x95D2, 0x24A6, 0x95D3, 0x95D3, 0x351A, 0x95D4, 0x95D4, 0x21CE,
+ 0x95D5, 0x95E0, 0x351B, 0x95E1, 0x95E1, 0x24A9, 0x95E2, 0x95E6, 0x3527,
+ 0x95E7, 0x95E7, 0x1FE7, 0x95E8, 0x95F0, 0x352C, 0x95F1, 0x95F1, 0x2112,
+ 0x95F2, 0x95F7, 0x3535, 0x95F8, 0x95F8, 0x213C, 0x95F9, 0x95FD, 0x353B,
+ 0x95FE, 0x95FE, 0x1F5C, 0x9640, 0x9655, 0x3540, 0x9656, 0x9656, 0x24C4,
+ 0x9657, 0x967B, 0x3556, 0x967C, 0x967C, 0x1ECC, 0x967D, 0x967E, 0x357B,
+ 0x9680, 0x96FE, 0x357D, 0x9740, 0x9766, 0x35FC, 0x9767, 0x9767, 0x246A,
+ 0x9768, 0x976B, 0x3623, 0x976C, 0x976C, 0x2175, 0x976D, 0x976D, 0x3627,
+ 0x976E, 0x976E, 0x246D, 0x976F, 0x977E, 0x3628, 0x9780, 0x9795, 0x3638,
+ 0x9796, 0x9796, 0x246B, 0x9797, 0x9797, 0x225F, 0x9798, 0x979C, 0x364E,
+ 0x979D, 0x979D, 0x1ECE, 0x979E, 0x97A2, 0x3653, 0x97A3, 0x97A3, 0x2272,
+ 0x97A4, 0x97BE, 0x3658, 0x97BF, 0x97BF, 0x2473, 0x97C0, 0x97ED, 0x3673,
+ 0x97EE, 0x97EE, 0x21FE, 0x97EF, 0x97F6, 0x36A1, 0x97F7, 0x97F7, 0x1EFE,
+ 0x97F8, 0x97FE, 0x36A9, 0x9840, 0x9844, 0x36B0, 0x9845, 0x9845, 0x2475,
+ 0x9846, 0x9848, 0x36B5, 0x9849, 0x9849, 0x220A, 0x984A, 0x984E, 0x36B8,
+ 0x984F, 0x984F, 0x1F6F, 0x9850, 0x9870, 0x36BD, 0x9871, 0x9871, 0x2468,
+ 0x9872, 0x9872, 0x36DE, 0x9873, 0x9873, 0x2100, 0x9874, 0x987E, 0x36DF,
+ 0x9880, 0x9880, 0x36EA, 0x9881, 0x9881, 0x2476, 0x9882, 0x988A, 0x36EB,
+ 0x988B, 0x988B, 0x1F27, 0x988C, 0x988C, 0x20D7, 0x988D, 0x989F, 0x36F4,
+ 0x98A0, 0x98A0, 0x247C, 0x98A1, 0x98A9, 0x3707, 0x98AA, 0x98AA, 0x1FA1,
+ 0x98AB, 0x98B5, 0x3710, 0x98B6, 0x98B6, 0x22AA, 0x98B7, 0x98B7, 0x2005,
+ 0x98B8, 0x98B9, 0x371B, 0x98BA, 0x98BA, 0x246C, 0x98BB, 0x98C6, 0x371D,
+ 0x98C7, 0x98C7, 0x203E, 0x98C8, 0x98CA, 0x3729, 0x98CB, 0x98CB, 0x1E4C,
+ 0x98CC, 0x98CF, 0x372C, 0x98D0, 0x98D0, 0x213A, 0x98D1, 0x98D2, 0x3730,
+ 0x98D3, 0x98D3, 0x2204, 0x98D4, 0x98E2, 0x3732, 0x98E3, 0x98E3, 0x20C3,
+ 0x98E4, 0x98E4, 0x2140, 0x98E5, 0x98E5, 0x2477, 0x98E6, 0x98EE, 0x3741,
+ 0x98EF, 0x98EF, 0x2474, 0x98F0, 0x98F1, 0x374A, 0x98F2, 0x98F2, 0x20DD,
+ 0x98F3, 0x98FE, 0x374C, 0x9940, 0x9942, 0x3758, 0x9943, 0x9943, 0x1F68,
+ 0x9944, 0x9944, 0x375B, 0x9945, 0x9945, 0x2185, 0x9946, 0x9965, 0x375C,
+ 0x9966, 0x9966, 0x2472, 0x9967, 0x996D, 0x377C, 0x996E, 0x996E, 0x1EB5,
+ 0x996F, 0x9974, 0x3783, 0x9975, 0x9975, 0x2478, 0x9976, 0x9979, 0x3789,
+ 0x997A, 0x997A, 0x1F8B, 0x997B, 0x997B, 0x2484, 0x997C, 0x997E, 0x378D,
+ 0x9980, 0x9984, 0x3790, 0x9985, 0x9985, 0x2699, 0x9986, 0x9988, 0x3795,
+ 0x9989, 0x9989, 0x2482, 0x998A, 0x998D, 0x3798, 0x998E, 0x998E, 0x20A1,
+ 0x998F, 0x9990, 0x379C, 0x9991, 0x9991, 0x1F92, 0x9992, 0x9998, 0x379E,
+ 0x9999, 0x9999, 0x1F38, 0x999A, 0x99A8, 0x37A5, 0x99A9, 0x99A9, 0x2485,
+ 0x99AA, 0x99AF, 0x37B4, 0x99B0, 0x99B0, 0x2480, 0x99B1, 0x99B1, 0x246E,
+ 0x99B2, 0x99B2, 0x37BA, 0x99B3, 0x99B3, 0x247B, 0x99B4, 0x99B4, 0x2486,
+ 0x99B5, 0x99B5, 0x2471, 0x99B6, 0x99BC, 0x37BB, 0x99BD, 0x99BD, 0x2483,
+ 0x99BE, 0x99BE, 0x2470, 0x99BF, 0x99BF, 0x37C2, 0x99C0, 0x99C0, 0x2469,
+ 0x99C1, 0x99C1, 0x37C3, 0x99C2, 0x99C2, 0x247F, 0x99C3, 0x99C8, 0x37C4,
+ 0x99C9, 0x99C9, 0x246F, 0x99CA, 0x99CD, 0x37CA, 0x99CE, 0x99CE, 0x2481,
+ 0x99CF, 0x99D0, 0x37CE, 0x99D1, 0x99D1, 0x2220, 0x99D2, 0x99D9, 0x37D0,
+ 0x99DA, 0x99DA, 0x1FF5, 0x99DB, 0x99DF, 0x37D8, 0x99E0, 0x99E0, 0x20F4,
+ 0x99E1, 0x99E4, 0x37DD, 0x99E5, 0x99E5, 0x247D, 0x99E6, 0x99E7, 0x37E1,
+ 0x99E8, 0x99E8, 0x2479, 0x99E9, 0x99EB, 0x37E3, 0x99EC, 0x99EC, 0x247E,
+ 0x99ED, 0x99F3, 0x37E6, 0x99F4, 0x99F4, 0x247A, 0x99F5, 0x99FE, 0x37ED,
+ 0x9A40, 0x9A49, 0x37F7, 0x9A4A, 0x9A4A, 0x20E3, 0x9A4B, 0x9A56, 0x3801,
+ 0x9A57, 0x9A57, 0x20AD, 0x9A58, 0x9A64, 0x380D, 0x9A65, 0x9A65, 0x24CB,
+ 0x9A66, 0x9A66, 0x381A, 0x9A67, 0x9A67, 0x1F53, 0x9A68, 0x9A70, 0x381B,
+ 0x9A71, 0x9A71, 0x2159, 0x9A72, 0x9A75, 0x3824, 0x9A76, 0x9A76, 0x2013,
+ 0x9A77, 0x9A77, 0x1F33, 0x9A78, 0x9A7E, 0x3828, 0x9A80, 0x9A87, 0x382F,
+ 0x9A88, 0x9A88, 0x1E5C, 0x9A89, 0x9A8B, 0x3837, 0x9A8C, 0x9A8C, 0x2488,
+ 0x9A8D, 0x9A90, 0x383A, 0x9A91, 0x9A91, 0x2487, 0x9A92, 0x9A96, 0x383E,
+ 0x9A97, 0x9A97, 0x248A, 0x9A98, 0x9A99, 0x3843, 0x9A9A, 0x9A9A, 0x2489,
+ 0x9A9B, 0x9A9B, 0x248B, 0x9A9C, 0x9A9D, 0x3845, 0x9A9E, 0x9A9E, 0x1F83,
+ 0x9A9F, 0x9AA1, 0x3847, 0x9AA2, 0x9AA2, 0x210F, 0x9AA3, 0x9AA3, 0x1FDB,
+ 0x9AA4, 0x9AA9, 0x384A, 0x9AAA, 0x9AAA, 0x20AF, 0x9AAB, 0x9ACF, 0x3850,
+ 0x9AD0, 0x9AD0, 0x24C0, 0x9AD1, 0x9AD5, 0x3875, 0x9AD6, 0x9AD6, 0x226D,
+ 0x9AD7, 0x9AD9, 0x387A, 0x9ADA, 0x9ADA, 0x24C1, 0x9ADB, 0x9AE1, 0x387D,
+ 0x9AE2, 0x9AE2, 0x20CA, 0x9AE3, 0x9AE3, 0x3884, 0x9AE4, 0x9AE4, 0x20E7,
+ 0x9AE5, 0x9AE5, 0x24C2, 0x9AE6, 0x9AFE, 0x3885, 0x9B40, 0x9B7E, 0x389E,
+ 0x9B80, 0x9BD0, 0x38DD, 0x9BD1, 0x9BD1, 0x23DC, 0x9BD2, 0x9BDB, 0x392E,
+ 0x9BDC, 0x9BDC, 0x23DB, 0x9BDD, 0x9BFE, 0x3938, 0x9C40, 0x9C52, 0x395A,
+ 0x9C53, 0x9C53, 0x205E, 0x9C54, 0x9C58, 0x396D, 0x9C59, 0x9C59, 0x2244,
+ 0x9C5A, 0x9C5A, 0x23E2, 0x9C5B, 0x9C5B, 0x3972, 0x9C5C, 0x9C5C, 0x20D4,
+ 0x9C5D, 0x9C74, 0x3973, 0x9C75, 0x9C75, 0x219F, 0x9C76, 0x9C78, 0x398B,
+ 0x9C79, 0x9C79, 0x1E66, 0x9C7A, 0x9C7E, 0x398E, 0x9C80, 0x9C85, 0x3993,
+ 0x9C86, 0x9C86, 0x1F63, 0x9C87, 0x9C9C, 0x3999, 0x9C9D, 0x9C9D, 0x23DD,
+ 0x9C9E, 0x9CAA, 0x39AF, 0x9CAB, 0x9CAB, 0x216B, 0x9CAC, 0x9CC9, 0x39BC,
+ 0x9CCA, 0x9CCA, 0x22B5, 0x9CCB, 0x9CCE, 0x39DA, 0x9CCF, 0x9CCF, 0x1F26,
+ 0x9CD0, 0x9CE5, 0x39DE, 0x9CE6, 0x9CE6, 0x1E63, 0x9CE7, 0x9CE7, 0x2088,
+ 0x9CE8, 0x9CEB, 0x39F4, 0x9CEC, 0x9CEC, 0x1EBD, 0x9CED, 0x9CED, 0x39F8,
+ 0x9CEE, 0x9CEE, 0x2341, 0x9CEF, 0x9CFA, 0x39F9, 0x9CFB, 0x9CFB, 0x1F4B,
+ 0x9CFC, 0x9CFD, 0x3A05, 0x9CFE, 0x9CFE, 0x2292, 0x9D40, 0x9D41, 0x3A07,
+ 0x9D42, 0x9D42, 0x2124, 0x9D43, 0x9D45, 0x3A09, 0x9D46, 0x9D46, 0x2048,
+ 0x9D47, 0x9D47, 0x23E0, 0x9D48, 0x9D4C, 0x3A0C, 0x9D4D, 0x9D4D, 0x2077,
+ 0x9D4E, 0x9D4E, 0x3A11, 0x9D4F, 0x9D4F, 0x223A, 0x9D50, 0x9D60, 0x3A12,
+ 0x9D61, 0x9D61, 0x20B1, 0x9D62, 0x9D67, 0x3A23, 0x9D68, 0x9D68, 0x1F41,
+ 0x9D69, 0x9D69, 0x201C, 0x9D6A, 0x9D6D, 0x3A29, 0x9D6E, 0x9D6E, 0x22B8,
+ 0x9D6F, 0x9D70, 0x3A2D, 0x9D71, 0x9D71, 0x2276, 0x9D72, 0x9D74, 0x3A2F,
+ 0x9D75, 0x9D75, 0x1F9B, 0x9D76, 0x9D7A, 0x3A32, 0x9D7B, 0x9D7B, 0x1F9F,
+ 0x9D7C, 0x9D7C, 0x3A37, 0x9D7D, 0x9D7D, 0x25CA, 0x9D7E, 0x9D7E, 0x3A38,
+ 0x9D80, 0x9D89, 0x3A39, 0x9D8A, 0x9D8A, 0x20BE, 0x9D8B, 0x9D8C, 0x3A43,
+ 0x9D8D, 0x9D8D, 0x1FB4, 0x9D8E, 0x9D90, 0x3A45, 0x9D91, 0x9D91, 0x23D7,
+ 0x9D92, 0x9D98, 0x3A48, 0x9D99, 0x9D99, 0x2105, 0x9D9A, 0x9DA0, 0x3A4F,
+ 0x9DA1, 0x9DA1, 0x23E1, 0x9DA2, 0x9DA2, 0x1FEC, 0x9DA3, 0x9DA6, 0x3A56,
+ 0x9DA7, 0x9DA7, 0x23EA, 0x9DA8, 0x9DAB, 0x3A5A, 0x9DAC, 0x9DAC, 0x23E3,
+ 0x9DAD, 0x9DAD, 0x210E, 0x9DAE, 0x9DB1, 0x3A5E, 0x9DB2, 0x9DB2, 0x1FA6,
+ 0x9DB3, 0x9DB3, 0x2004, 0x9DB4, 0x9DBD, 0x3A62, 0x9DBE, 0x9DBE, 0x1F9D,
+ 0x9DBF, 0x9DC5, 0x3A6C, 0x9DC6, 0x9DC6, 0x23E5, 0x9DC7, 0x9DC8, 0x3A73,
+ 0x9DC9, 0x9DC9, 0x2264, 0x9DCA, 0x9DCC, 0x3A75, 0x9DCD, 0x9DCD, 0x24E2,
+ 0x9DCE, 0x9DD1, 0x3A78, 0x9DD2, 0x9DD2, 0x23DE, 0x9DD3, 0x9DD4, 0x3A7C,
+ 0x9DD5, 0x9DD5, 0x1EC4, 0x9DD6, 0x9DE0, 0x3A7E, 0x9DE1, 0x9DE1, 0x22B6,
+ 0x9DE2, 0x9DE2, 0x20A9, 0x9DE3, 0x9DF0, 0x3A89, 0x9DF1, 0x9DF1, 0x212B,
+ 0x9DF2, 0x9DF3, 0x3A97, 0x9DF4, 0x9DF4, 0x20A5, 0x9DF5, 0x9DF6, 0x3A99,
+ 0x9DF7, 0x9DF7, 0x268B, 0x9DF8, 0x9DF9, 0x3A9B, 0x9DFA, 0x9DFA, 0x1F76,
+ 0x9DFB, 0x9DFC, 0x3A9D, 0x9DFD, 0x9DFD, 0x216D, 0x9DFE, 0x9DFE, 0x3A9F,
+ 0x9E40, 0x9E44, 0x3AA0, 0x9E45, 0x9E45, 0x2001, 0x9E46, 0x9E47, 0x3AA5,
+ 0x9E48, 0x9E48, 0x2191, 0x9E49, 0x9E49, 0x1E50, 0x9E4A, 0x9E51, 0x3AA7,
+ 0x9E52, 0x9E52, 0x1F9C, 0x9E53, 0x9E53, 0x3AAF, 0x9E54, 0x9E54, 0x23DA,
+ 0x9E55, 0x9E55, 0x3AB0, 0x9E56, 0x9E56, 0x2053, 0x9E57, 0x9E5C, 0x3AB1,
+ 0x9E5D, 0x9E5D, 0x23E9, 0x9E5E, 0x9E5E, 0x23E4, 0x9E5F, 0x9E60, 0x3AB7,
+ 0x9E61, 0x9E61, 0x21D5, 0x9E62, 0x9E62, 0x3AB9, 0x9E63, 0x9E63, 0x23E6,
+ 0x9E64, 0x9E66, 0x3ABA, 0x9E67, 0x9E67, 0x23DF, 0x9E68, 0x9E6B, 0x3ABD,
+ 0x9E6C, 0x9E6C, 0x1E4F, 0x9E6D, 0x9E6E, 0x3AC1, 0x9E6F, 0x9E6F, 0x23D9,
+ 0x9E70, 0x9E71, 0x3AC3, 0x9E72, 0x9E72, 0x2014, 0x9E73, 0x9E73, 0x3AC5,
+ 0x9E74, 0x9E74, 0x23EC, 0x9E75, 0x9E75, 0x23EB, 0x9E76, 0x9E7A, 0x3AC6,
+ 0x9E7B, 0x9E7B, 0x23D8, 0x9E7C, 0x9E7C, 0x23EE, 0x9E7D, 0x9E7E, 0x3ACB,
+ 0x9E80, 0x9E84, 0x3ACD, 0x9E85, 0x9E85, 0x268E, 0x9E86, 0x9E86, 0x3AD2,
+ 0x9E87, 0x9E87, 0x23ED, 0x9E88, 0x9E90, 0x3AD3, 0x9E91, 0x9E91, 0x1FFA,
+ 0x9E92, 0x9E95, 0x3ADC, 0x9E96, 0x9E96, 0x23D6, 0x9E97, 0x9E97, 0x23E8,
+ 0x9E98, 0x9EA1, 0x3AE0, 0x9EA2, 0x9EA2, 0x2106, 0x9EA3, 0x9EA5, 0x3AEA,
+ 0x9EA6, 0x9EA6, 0x200B, 0x9EA7, 0x9EA8, 0x3AED, 0x9EA9, 0x9EA9, 0x2166,
+ 0x9EAA, 0x9EAD, 0x3AEF, 0x9EAE, 0x9EAE, 0x23EF, 0x9EAF, 0x9EB2, 0x3AF3,
+ 0x9EB3, 0x9EB3, 0x2189, 0x9EB4, 0x9EB4, 0x2058, 0x9EB5, 0x9EB6, 0x3AF7,
+ 0x9EB7, 0x9EB7, 0x23E7, 0x9EB8, 0x9EF4, 0x3AF9, 0x9EF5, 0x9EF5, 0x21A3,
+ 0x9EF6, 0x9EFE, 0x3B36, 0x9F40, 0x9F4D, 0x3B3F, 0x9F4E, 0x9F4E, 0x217A,
+ 0x9F4F, 0x9F6E, 0x3B4D, 0x9F6F, 0x9F6F, 0x21A5, 0x9F70, 0x9F7E, 0x3B6D,
+ 0x9F80, 0x9F91, 0x3B7C, 0x9F92, 0x9F92, 0x2022, 0x9F93, 0x9F97, 0x3B8E,
+ 0x9F98, 0x9F98, 0x24D6, 0x9F99, 0x9FA5, 0x3B93, 0x9FA6, 0x9FA6, 0x233A,
+ 0x9FA7, 0x9FA8, 0x3BA0, 0x9FA9, 0x9FA9, 0x1EEE, 0x9FAA, 0x9FAB, 0x3BA2,
+ 0x9FAC, 0x9FAC, 0x24D5, 0x9FAD, 0x9FC8, 0x3BA4, 0x9FC9, 0x9FC9, 0x2228,
+ 0x9FCA, 0x9FCC, 0x3BC0, 0x9FCD, 0x9FCD, 0x24D7, 0x9FCE, 0x9FE0, 0x3BC3,
+ 0x9FE1, 0x9FE1, 0x20FC, 0x9FE2, 0x9FEA, 0x3BD6, 0x9FEB, 0x9FEB, 0x1E87,
+ 0x9FEC, 0x9FED, 0x3BDF, 0x9FEE, 0x9FEE, 0x24D8, 0x9FEF, 0x9FF3, 0x3BE1,
+ 0x9FF4, 0x9FF4, 0x1EBA, 0x9FF5, 0x9FFC, 0x3BE6, 0x9FFD, 0x9FFD, 0x2119,
+ 0x9FFE, 0x9FFE, 0x3BEE, 0xA040, 0xA042, 0x3BEF, 0xA043, 0xA043, 0x216C,
+ 0xA044, 0xA045, 0x3BF2, 0xA046, 0xA046, 0x24D9, 0xA047, 0xA048, 0x3BF4,
+ 0xA049, 0xA049, 0x2227, 0xA04A, 0xA04D, 0x3BF6, 0xA04E, 0xA04E, 0x1E5F,
+ 0xA04F, 0xA053, 0x3BFA, 0xA054, 0xA054, 0x229F, 0xA055, 0xA059, 0x3BFF,
+ 0xA05A, 0xA05A, 0x1F5D, 0xA05B, 0xA060, 0x3C04, 0xA061, 0xA061, 0x1FBC,
+ 0xA062, 0xA062, 0x3C0A, 0xA063, 0xA063, 0x24DA, 0xA064, 0xA070, 0x3C0B,
+ 0xA071, 0xA071, 0x2149, 0xA072, 0xA073, 0x3C18, 0xA074, 0xA074, 0x2046,
+ 0xA075, 0xA07E, 0x3C1A, 0xA080, 0xA080, 0x2000, 0xA081, 0xA090, 0x3C24,
+ 0xA091, 0xA091, 0x2190, 0xA092, 0xA093, 0x3C34, 0xA094, 0xA094, 0x2208,
+ 0xA095, 0xA095, 0x3C36, 0xA096, 0xA096, 0x1EE6, 0xA097, 0xA0A8, 0x3C37,
+ 0xA0A9, 0xA0A9, 0x24C3, 0xA0AA, 0xA0BE, 0x3C49, 0xA0BF, 0xA0BF, 0x20CC,
+ 0xA0C0, 0xA0CD, 0x3C5E, 0xA0CE, 0xA0CE, 0x2340, 0xA0CF, 0xA0D8, 0x3C6C,
+ 0xA0D9, 0xA0D9, 0x1ED1, 0xA0DA, 0xA0DD, 0x3C76, 0xA0DE, 0xA0DE, 0x21AC,
+ 0xA0DF, 0xA0ED, 0x3C7A, 0xA0EE, 0xA0EE, 0x22AF, 0xA0EF, 0xA0FE, 0x3C89,
+ 0xA1A1, 0xA1FE, 0x0060, 0xA2A1, 0xA2AA, 0x26A9, 0xA2B1, 0xA2E2, 0x00BE,
+ 0xA2E5, 0xA2EE, 0x00F0, 0xA2F1, 0xA2FC, 0x00FA, 0xA3A1, 0xA3FE, 0x0106,
+ 0xA4A1, 0xA4F3, 0x0164, 0xA5A1, 0xA5F6, 0x01B7, 0xA6A1, 0xA6B8, 0x020D,
+ 0xA6C1, 0xA6F5, 0x0225, 0xA7A1, 0xA7C1, 0x025A, 0xA7D1, 0xA7F1, 0x027B,
+ 0xA840, 0xA87E, 0x26B3, 0xA880, 0xA895, 0x26F2, 0xA8A1, 0xA8C0, 0x029C,
+ 0xA8C5, 0xA8EA, 0x02BC, 0xA940, 0xA957, 0x2708, 0xA959, 0xA95A, 0x2720,
+ 0xA95C, 0xA95C, 0x2722, 0xA960, 0xA97E, 0x2723, 0xA980, 0xA995, 0x2742,
+ 0xA996, 0xA996, 0x1E17, 0xA9A4, 0xA9EF, 0x02E2, 0xAA40, 0xAA4C, 0x3C99,
+ 0xAA4D, 0xAA4D, 0x21B6, 0xAA4E, 0xAA4E, 0x1E3D, 0xAA4F, 0xAA70, 0x3CA6,
+ 0xAA71, 0xAA71, 0x2235, 0xAA72, 0xAA72, 0x3CC8, 0xAA73, 0xAA73, 0x2397,
+ 0xAA74, 0xAA76, 0x3CC9, 0xAA77, 0xAA77, 0x2395, 0xAA78, 0xAA79, 0x3CCC,
+ 0xAA7A, 0xAA7A, 0x223F, 0xAA7B, 0xAA7B, 0x212A, 0xAA7C, 0xAA7E, 0x3CCE,
+ 0xAA80, 0xAA99, 0x3CD1, 0xAA9A, 0xAA9A, 0x1ED2, 0xAA9B, 0xAA9B, 0x3CEB,
+ 0xAA9C, 0xAA9C, 0x2396, 0xAA9D, 0xAA9D, 0x2398, 0xAA9E, 0xAA9E, 0x3CEC,
+ 0xAA9F, 0xAA9F, 0x20A2, 0xAAA0, 0xAAA0, 0x3CED, 0xAAA1, 0xAAFE, 0x032E,
+ 0xAB40, 0xAB40, 0x1F64, 0xAB41, 0xAB42, 0x3CEE, 0xAB43, 0xAB43, 0x202B,
+ 0xAB44, 0xAB44, 0x3CF0, 0xAB45, 0xAB45, 0x2394, 0xAB46, 0xAB46, 0x2139,
+ 0xAB47, 0xAB47, 0x3CF1, 0xAB48, 0xAB48, 0x215F, 0xAB49, 0xAB49, 0x21C1,
+ 0xAB4A, 0xAB4A, 0x239A, 0xAB4B, 0xAB4C, 0x3CF2, 0xAB4D, 0xAB4D, 0x2399,
+ 0xAB4E, 0xAB7E, 0x3CF4, 0xAB80, 0xABA0, 0x3D25, 0xABA1, 0xABC0, 0x038C,
+ 0xAC40, 0xAC45, 0x3D46, 0xAC46, 0xAC46, 0x21C0, 0xAC47, 0xAC70, 0x3D4C,
+ 0xAC71, 0xAC71, 0x2460, 0xAC72, 0xAC7B, 0x3D76, 0xAC7C, 0xAC7C, 0x245C,
+ 0xAC7D, 0xAC7E, 0x3D80, 0xAC80, 0xAC8C, 0x3D82, 0xAC8D, 0xAC8D, 0x215D,
+ 0xAC8E, 0xAC92, 0x3D8F, 0xAC93, 0xAC93, 0x2225, 0xAC94, 0xAC94, 0x206A,
+ 0xAC95, 0xACA0, 0x3D94, 0xAD40, 0xAD48, 0x3DA0, 0xAD49, 0xAD49, 0x2461,
+ 0xAD4A, 0xAD5D, 0x3DA9, 0xAD5E, 0xAD5E, 0x245B, 0xAD5F, 0xAD60, 0x3DBD,
+ 0xAD61, 0xAD61, 0x2462, 0xAD62, 0xAD67, 0x3DBF, 0xAD68, 0xAD68, 0x1F54,
+ 0xAD69, 0xAD73, 0x3DC5, 0xAD74, 0xAD74, 0x245F, 0xAD75, 0xAD7E, 0x3DD0,
+ 0xAD80, 0xAD81, 0x3DDA, 0xAD82, 0xAD82, 0x20EC, 0xAD83, 0xAD86, 0x3DDC,
+ 0xAD87, 0xAD87, 0x245D, 0xAD88, 0xAD8A, 0x3DE0, 0xAD8B, 0xAD8B, 0x2463,
+ 0xAD8C, 0xAD90, 0x3DE3, 0xAD91, 0xAD91, 0x2464, 0xAD92, 0xADA0, 0x3DE8,
+ 0xAE40, 0xAE53, 0x3DF7, 0xAE54, 0xAE54, 0x24A5, 0xAE55, 0xAE61, 0x3E0B,
+ 0xAE62, 0xAE62, 0x1E70, 0xAE63, 0xAE7E, 0x3E18, 0xAE80, 0xAE80, 0x208F,
+ 0xAE81, 0xAE84, 0x3E34, 0xAE85, 0xAE85, 0x1E42, 0xAE86, 0xAE8A, 0x3E38,
+ 0xAE8B, 0xAE8B, 0x1F4E, 0xAE8C, 0xAE93, 0x3E3D, 0xAE94, 0xAE94, 0x1EB1,
+ 0xAE95, 0xAE9F, 0x3E45, 0xAEA0, 0xAEA0, 0x1E8B, 0xAF40, 0xAF63, 0x3E50,
+ 0xAF64, 0xAF64, 0x1FC6, 0xAF65, 0xAF7A, 0x3E74, 0xAF7B, 0xAF7B, 0x25AE,
+ 0xAF7C, 0xAF7E, 0x3E8A, 0xAF80, 0xAF81, 0x3E8D, 0xAF82, 0xAF82, 0x1F01,
+ 0xAF83, 0xAF83, 0x2200, 0xAF84, 0xAF8D, 0x3E8F, 0xAF8E, 0xAF8E, 0x25B2,
+ 0xAF8F, 0xAF8F, 0x1E97, 0xAF90, 0xAF90, 0x3E99, 0xAF91, 0xAF91, 0x20AB,
+ 0xAF92, 0xAF9B, 0x3E9A, 0xAF9C, 0xAF9C, 0x25B3, 0xAF9D, 0xAF9E, 0x3EA4,
+ 0xAF9F, 0xAF9F, 0x2028, 0xAFA0, 0xAFA0, 0x3EA6, 0xB040, 0xB040, 0x3EA7,
+ 0xB041, 0xB042, 0x25AF, 0xB043, 0xB043, 0x3EA8, 0xB044, 0xB044, 0x25B1,
+ 0xB045, 0xB04E, 0x3EA9, 0xB04F, 0xB04F, 0x25AC, 0xB050, 0xB053, 0x3EB3,
+ 0xB054, 0xB054, 0x1E4E, 0xB055, 0xB056, 0x3EB7, 0xB057, 0xB057, 0x2202,
+ 0xB058, 0xB058, 0x25AB, 0xB059, 0xB059, 0x2286, 0xB05A, 0xB05A, 0x3EB9,
+ 0xB05B, 0xB05B, 0x25AD, 0xB05C, 0xB05C, 0x3EBA, 0xB05D, 0xB05D, 0x25B6,
+ 0xB05E, 0xB05E, 0x3EBB, 0xB05F, 0xB05F, 0x21E3, 0xB060, 0xB061, 0x25B4,
+ 0xB062, 0xB062, 0x222F, 0xB063, 0xB063, 0x2165, 0xB064, 0xB064, 0x25B7,
+ 0xB065, 0xB06B, 0x3EBC, 0xB06C, 0xB06C, 0x1EE9, 0xB06D, 0xB07C, 0x3EC3,
+ 0xB07D, 0xB07D, 0x1E25, 0xB07E, 0xB07E, 0x3ED3, 0xB080, 0xB096, 0x3ED4,
+ 0xB097, 0xB097, 0x25C0, 0xB098, 0xB098, 0x3EEB, 0xB099, 0xB099, 0x229A,
+ 0xB09A, 0xB0A0, 0x3EEC, 0xB0A1, 0xB0FE, 0x03AC, 0xB140, 0xB14A, 0x3EF3,
+ 0xB14B, 0xB14B, 0x226E, 0xB14C, 0xB14C, 0x3EFE, 0xB14D, 0xB14D, 0x1FBD,
+ 0xB14E, 0xB14E, 0x3EFF, 0xB14F, 0xB14F, 0x1F84, 0xB150, 0xB150, 0x20B2,
+ 0xB151, 0xB151, 0x3F00, 0xB152, 0xB152, 0x2043, 0xB153, 0xB17E, 0x3F01,
+ 0xB180, 0xB196, 0x3F2D, 0xB197, 0xB197, 0x2684, 0xB198, 0xB1A0, 0x3F44,
+ 0xB1A1, 0xB1FE, 0x040A, 0xB240, 0xB240, 0x3F4D, 0xB241, 0xB241, 0x24EF,
+ 0xB242, 0xB266, 0x3F4E, 0xB267, 0xB267, 0x24EE, 0xB268, 0xB26C, 0x3F73,
+ 0xB26D, 0xB26D, 0x2074, 0xB26E, 0xB273, 0x3F78, 0xB274, 0xB274, 0x2687,
+ 0xB275, 0xB27E, 0x3F7E, 0xB280, 0xB280, 0x24F0, 0xB281, 0xB288, 0x3F88,
+ 0xB289, 0xB289, 0x268D, 0xB28A, 0xB299, 0x3F90, 0xB29A, 0xB29A, 0x22A0,
+ 0xB29B, 0xB2A0, 0x3FA0, 0xB2A1, 0xB2FE, 0x0468, 0xB340, 0xB342, 0x3FA6,
+ 0xB343, 0xB343, 0x1FAB, 0xB344, 0xB36F, 0x3FA9, 0xB370, 0xB370, 0x26A8,
+ 0xB371, 0xB37E, 0x3FD5, 0xB380, 0xB387, 0x3FE3, 0xB388, 0xB388, 0x24E9,
+ 0xB389, 0xB38B, 0x3FEB, 0xB38C, 0xB38C, 0x24E5, 0xB38D, 0xB38D, 0x3FEE,
+ 0xB38E, 0xB38E, 0x21FA, 0xB38F, 0xB3A0, 0x3FEF, 0xB3A1, 0xB3FE, 0x04C6,
+ 0xB440, 0xB453, 0x4001, 0xB454, 0xB454, 0x2148, 0xB455, 0xB457, 0x4015,
+ 0xB458, 0xB458, 0x24E4, 0xB459, 0xB45D, 0x4018, 0xB45E, 0xB45E, 0x24E6,
+ 0xB45F, 0xB45F, 0x20F7, 0xB460, 0xB460, 0x401D, 0xB461, 0xB461, 0x206B,
+ 0xB462, 0xB474, 0x401E, 0xB475, 0xB475, 0x22A7, 0xB476, 0xB47D, 0x4031,
+ 0xB47E, 0xB47E, 0x24EC, 0xB480, 0xB482, 0x4039, 0xB483, 0xB483, 0x24EB,
+ 0xB484, 0xB488, 0x403C, 0xB489, 0xB489, 0x24E3, 0xB48A, 0xB492, 0x4041,
+ 0xB493, 0xB493, 0x24EA, 0xB494, 0xB4A0, 0x404A, 0xB4A1, 0xB4FE, 0x0524,
+ 0xB540, 0xB540, 0x4057, 0xB541, 0xB541, 0x1E92, 0xB542, 0xB54A, 0x4058,
+ 0xB54B, 0xB54B, 0x1E27, 0xB54C, 0xB555, 0x4061, 0xB556, 0xB556, 0x1FE6,
+ 0xB557, 0xB559, 0x406B, 0xB55A, 0xB55A, 0x24E7, 0xB55B, 0xB55B, 0x2012,
+ 0xB55C, 0xB55C, 0x1EEC, 0xB55D, 0xB560, 0x406E, 0xB561, 0xB561, 0x24E8,
+ 0xB562, 0xB57E, 0x4072, 0xB580, 0xB59B, 0x408F, 0xB59C, 0xB59C, 0x1F66,
+ 0xB59D, 0xB59D, 0x24DC, 0xB59E, 0xB5A0, 0x40AB, 0xB5A1, 0xB5FE, 0x0582,
+ 0xB640, 0xB651, 0x40AE, 0xB652, 0xB652, 0x26A2, 0xB653, 0xB654, 0x40C0,
+ 0xB655, 0xB655, 0x24DD, 0xB656, 0xB658, 0x40C2, 0xB659, 0xB659, 0x200E,
+ 0xB65A, 0xB65A, 0x40C5, 0xB65B, 0xB65B, 0x24DB, 0xB65C, 0xB65C, 0x1EB8,
+ 0xB65D, 0xB67E, 0x40C6, 0xB680, 0xB6A0, 0x40E8, 0xB6A1, 0xB6FE, 0x05E0,
+ 0xB740, 0xB74D, 0x4109, 0xB74E, 0xB74E, 0x2295, 0xB74F, 0xB750, 0x4117,
+ 0xB751, 0xB751, 0x1E80, 0xB752, 0xB758, 0x4119, 0xB759, 0xB759, 0x2677,
+ 0xB75A, 0xB763, 0x4120, 0xB764, 0xB764, 0x2624, 0xB765, 0xB765, 0x1F69,
+ 0xB766, 0xB766, 0x222B, 0xB767, 0xB776, 0x412A, 0xB777, 0xB777, 0x257F,
+ 0xB778, 0xB778, 0x1F5B, 0xB779, 0xB77E, 0x413A, 0xB780, 0xB780, 0x219B,
+ 0xB781, 0xB781, 0x4140, 0xB782, 0xB782, 0x267D, 0xB783, 0xB7A0, 0x4141,
+ 0xB7A1, 0xB7FE, 0x063E, 0xB840, 0xB842, 0x415F, 0xB843, 0xB843, 0x21A0,
+ 0xB844, 0xB844, 0x2186, 0xB845, 0xB845, 0x4162, 0xB846, 0xB846, 0x20ED,
+ 0xB847, 0xB84C, 0x4163, 0xB84D, 0xB84D, 0x25B9, 0xB84E, 0xB850, 0x4169,
+ 0xB851, 0xB851, 0x1FEA, 0xB852, 0xB859, 0x416C, 0xB85A, 0xB85A, 0x1EA4,
+ 0xB85B, 0xB85B, 0x20E1, 0xB85C, 0xB85C, 0x4174, 0xB85D, 0xB85D, 0x25B8,
+ 0xB85E, 0xB85E, 0x2260, 0xB85F, 0xB85F, 0x4175, 0xB860, 0xB860, 0x20E2,
+ 0xB861, 0xB876, 0x4176, 0xB877, 0xB877, 0x2141, 0xB878, 0xB87E, 0x418C,
+ 0xB880, 0xB881, 0x4193, 0xB882, 0xB882, 0x1FC7, 0xB883, 0xB8A0, 0x4195,
+ 0xB8A1, 0xB8FE, 0x069C, 0xB940, 0xB94F, 0x41B3, 0xB950, 0xB950, 0x1E41,
+ 0xB951, 0xB960, 0x41C3, 0xB961, 0xB961, 0x25E4, 0xB962, 0xB97A, 0x41D3,
+ 0xB97B, 0xB97B, 0x1F86, 0xB97C, 0xB97E, 0x41EC, 0xB980, 0xB99C, 0x41EF,
+ 0xB99D, 0xB99D, 0x1FB3, 0xB99E, 0xB99F, 0x420C, 0xB9A0, 0xB9A0, 0x1EEF,
+ 0xB9A1, 0xB9FE, 0x06FA, 0xBA40, 0xBA41, 0x420E, 0xBA42, 0xBA42, 0x22A4,
+ 0xBA43, 0xBA43, 0x4210, 0xBA44, 0xBA44, 0x25E8, 0xBA45, 0xBA55, 0x4211,
+ 0xBA56, 0xBA56, 0x25E3, 0xBA57, 0xBA58, 0x4222, 0xBA59, 0xBA59, 0x2111,
+ 0xBA5A, 0xBA5F, 0x4224, 0xBA60, 0xBA60, 0x25E6, 0xBA61, 0xBA69, 0x422A,
+ 0xBA6A, 0xBA6A, 0x25E7, 0xBA6B, 0xBA73, 0x4233, 0xBA74, 0xBA74, 0x2041,
+ 0xBA75, 0xBA7E, 0x423C, 0xBA80, 0xBA83, 0x4246, 0xBA84, 0xBA84, 0x25EA,
+ 0xBA85, 0xBA85, 0x424A, 0xBA86, 0xBA86, 0x1F8F, 0xBA87, 0xBA87, 0x424B,
+ 0xBA88, 0xBA88, 0x25EC, 0xBA89, 0xBA8C, 0x424C, 0xBA8D, 0xBA8D, 0x25EB,
+ 0xBA8E, 0xBA9D, 0x4250, 0xBA9E, 0xBA9E, 0x20D0, 0xBA9F, 0xBA9F, 0x201D,
+ 0xBAA0, 0xBAA0, 0x4260, 0xBAA1, 0xBAFE, 0x0758, 0xBB40, 0xBB40, 0x1FF7,
+ 0xBB41, 0xBB48, 0x4261, 0xBB49, 0xBB49, 0x1E8D, 0xBB4A, 0xBB57, 0x4269,
+ 0xBB58, 0xBB58, 0x25E9, 0xBB59, 0xBB5A, 0x4277, 0xBB5B, 0xBB5B, 0x25EE,
+ 0xBB5C, 0xBB5C, 0x203A, 0xBB5D, 0xBB5F, 0x4279, 0xBB60, 0xBB60, 0x2693,
+ 0xBB61, 0xBB64, 0x427C, 0xBB65, 0xBB65, 0x25E5, 0xBB66, 0xBB66, 0x25ED,
+ 0xBB67, 0xBB67, 0x4280, 0xBB68, 0xBB68, 0x2009, 0xBB69, 0xBB69, 0x4281,
+ 0xBB6A, 0xBB6A, 0x2065, 0xBB6B, 0xBB6D, 0x4282, 0xBB6E, 0xBB6E, 0x26A3,
+ 0xBB6F, 0xBB7E, 0x4285, 0xBB80, 0xBBA0, 0x4295, 0xBBA1, 0xBBFE, 0x07B6,
+ 0xBC40, 0xBC51, 0x42B6, 0xBC52, 0xBC52, 0x25F5, 0xBC53, 0xBC53, 0x1EFC,
+ 0xBC54, 0xBC59, 0x42C8, 0xBC5A, 0xBC5A, 0x2024, 0xBC5B, 0xBC60, 0x42CE,
+ 0xBC61, 0xBC61, 0x269B, 0xBC62, 0xBC62, 0x42D4, 0xBC63, 0xBC63, 0x25F3,
+ 0xBC64, 0xBC64, 0x42D5, 0xBC65, 0xBC65, 0x22D9, 0xBC66, 0xBC66, 0x42D6,
+ 0xBC67, 0xBC67, 0x25F4, 0xBC68, 0xBC68, 0x42D7, 0xBC69, 0xBC69, 0x241B,
+ 0xBC6A, 0xBC6C, 0x42D8, 0xBC6D, 0xBC6D, 0x1FC8, 0xBC6E, 0xBC6E, 0x42DB,
+ 0xBC6F, 0xBC6F, 0x1F7B, 0xBC70, 0xBC70, 0x42DC, 0xBC71, 0xBC71, 0x241D,
+ 0xBC72, 0xBC72, 0x42DD, 0xBC73, 0xBC73, 0x224C, 0xBC74, 0xBC74, 0x1F48,
+ 0xBC75, 0xBC75, 0x241C, 0xBC76, 0xBC77, 0x241E, 0xBC78, 0xBC78, 0x20FF,
+ 0xBC79, 0xBC79, 0x219A, 0xBC7A, 0xBC7A, 0x42DE, 0xBC7B, 0xBC7B, 0x2091,
+ 0xBC7C, 0xBC7D, 0x42DF, 0xBC7E, 0xBC7E, 0x20A7, 0xBC80, 0xBC81, 0x42E1,
+ 0xBC82, 0xBC82, 0x2423, 0xBC83, 0xBC83, 0x1E9B, 0xBC84, 0xBC84, 0x2422,
+ 0xBC85, 0xBC85, 0x42E3, 0xBC86, 0xBC86, 0x2110, 0xBC87, 0xBC87, 0x42E4,
+ 0xBC88, 0xBC88, 0x228D, 0xBC89, 0xBC89, 0x1F71, 0xBC8A, 0xBC8A, 0x1EF8,
+ 0xBC8B, 0xBC8B, 0x2421, 0xBC8C, 0xBC8E, 0x42E5, 0xBC8F, 0xBC8F, 0x1EF3,
+ 0xBC90, 0xBC99, 0x42E8, 0xBC9A, 0xBC9A, 0x21B1, 0xBC9B, 0xBC9B, 0x2426,
+ 0xBC9C, 0xBC9C, 0x2425, 0xBC9D, 0xBC9D, 0x2120, 0xBC9E, 0xBCA0, 0x42F2,
+ 0xBCA1, 0xBCFE, 0x0814, 0xBD40, 0xBD41, 0x42F5, 0xBD42, 0xBD42, 0x211A,
+ 0xBD43, 0xBD43, 0x2424, 0xBD44, 0xBD44, 0x42F7, 0xBD45, 0xBD45, 0x2428,
+ 0xBD46, 0xBD47, 0x42F8, 0xBD48, 0xBD48, 0x242A, 0xBD49, 0xBD49, 0x2429,
+ 0xBD4A, 0xBD4A, 0x42FA, 0xBD4B, 0xBD4B, 0x2294, 0xBD4C, 0xBD4C, 0x42FB,
+ 0xBD4D, 0xBD4D, 0x22BE, 0xBD4E, 0xBD4E, 0x42FC, 0xBD4F, 0xBD4F, 0x1E31,
+ 0xBD50, 0xBD56, 0x42FD, 0xBD57, 0xBD57, 0x242C, 0xBD58, 0xBD58, 0x4304,
+ 0xBD59, 0xBD59, 0x1FB5, 0xBD5A, 0xBD65, 0x4305, 0xBD66, 0xBD66, 0x242B,
+ 0xBD67, 0xBD67, 0x1FAF, 0xBD68, 0xBD69, 0x4311, 0xBD6A, 0xBD6A, 0x2068,
+ 0xBD6B, 0xBD6B, 0x21E4, 0xBD6C, 0xBD6E, 0x4313, 0xBD6F, 0xBD6F, 0x1F21,
+ 0xBD70, 0xBD70, 0x4316, 0xBD71, 0xBD71, 0x2101, 0xBD72, 0xBD78, 0x4317,
+ 0xBD79, 0xBD79, 0x217C, 0xBD7A, 0xBD7A, 0x214A, 0xBD7B, 0xBD7B, 0x242D,
+ 0xBD7C, 0xBD7D, 0x431E, 0xBD7E, 0xBD7E, 0x1FD4, 0xBD80, 0xBD80, 0x4320,
+ 0xBD81, 0xBD81, 0x1FD1, 0xBD82, 0xBD88, 0x4321, 0xBD89, 0xBD89, 0x1E33,
+ 0xBD8A, 0xBD8A, 0x4328, 0xBD8B, 0xBD8B, 0x242F, 0xBD8C, 0xBD8D, 0x4329,
+ 0xBD8E, 0xBD8E, 0x242E, 0xBD8F, 0xBD8F, 0x432B, 0xBD90, 0xBD90, 0x2430,
+ 0xBD91, 0xBD91, 0x21DB, 0xBD92, 0xBD96, 0x432C, 0xBD97, 0xBD97, 0x2158,
+ 0xBD98, 0xBD9A, 0x4331, 0xBD9B, 0xBD9B, 0x1FC2, 0xBD9C, 0xBDA0, 0x4334,
+ 0xBDA1, 0xBDFE, 0x0872, 0xBE40, 0xBE42, 0x4339, 0xBE43, 0xBE43, 0x22B9,
+ 0xBE44, 0xBE44, 0x433C, 0xBE45, 0xBE45, 0x2436, 0xBE46, 0xBE48, 0x433D,
+ 0xBE49, 0xBE49, 0x1E8E, 0xBE4A, 0xBE4A, 0x2439, 0xBE4B, 0xBE50, 0x4340,
+ 0xBE51, 0xBE51, 0x21C5, 0xBE52, 0xBE52, 0x2437, 0xBE53, 0xBE53, 0x2192,
+ 0xBE54, 0xBE54, 0x4346, 0xBE55, 0xBE55, 0x243A, 0xBE56, 0xBE56, 0x1F19,
+ 0xBE57, 0xBE57, 0x218C, 0xBE58, 0xBE58, 0x1E40, 0xBE59, 0xBE59, 0x22B3,
+ 0xBE5A, 0xBE5C, 0x4347, 0xBE5D, 0xBE5D, 0x205F, 0xBE5E, 0xBE5E, 0x2438,
+ 0xBE5F, 0xBE5F, 0x2432, 0xBE60, 0xBE60, 0x2274, 0xBE61, 0xBE61, 0x434A,
+ 0xBE62, 0xBE62, 0x1E9C, 0xBE63, 0xBE63, 0x2431, 0xBE64, 0xBE64, 0x2085,
+ 0xBE65, 0xBE68, 0x434B, 0xBE69, 0xBE69, 0x2435, 0xBE6A, 0xBE6B, 0x434F,
+ 0xBE6C, 0xBE6C, 0x243B, 0xBE6D, 0xBE6E, 0x4351, 0xBE6F, 0xBE6F, 0x1FB7,
+ 0xBE70, 0xBE70, 0x2433, 0xBE71, 0xBE75, 0x4353, 0xBE76, 0xBE76, 0x2054,
+ 0xBE77, 0xBE77, 0x21DE, 0xBE78, 0xBE78, 0x4358, 0xBE79, 0xBE79, 0x2434,
+ 0xBE7A, 0xBE7B, 0x4359, 0xBE7C, 0xBE7C, 0x243D, 0xBE7D, 0xBE7D, 0x1F89,
+ 0xBE7E, 0xBE7E, 0x243C, 0xBE80, 0xBE82, 0x435B, 0xBE83, 0xBE83, 0x1F6E,
+ 0xBE84, 0xBE84, 0x1ED8, 0xBE85, 0xBE85, 0x435E, 0xBE86, 0xBE86, 0x1EBF,
+ 0xBE87, 0xBE87, 0x2445, 0xBE88, 0xBE88, 0x435F, 0xBE89, 0xBE89, 0x2249,
+ 0xBE8A, 0xBE8B, 0x4360, 0xBE8C, 0xBE8C, 0x2441, 0xBE8D, 0xBE8D, 0x4362,
+ 0xBE8E, 0xBE8E, 0x1E47, 0xBE8F, 0xBE8F, 0x1F56, 0xBE90, 0xBE91, 0x4363,
+ 0xBE92, 0xBE92, 0x2086, 0xBE93, 0xBE94, 0x4365, 0xBE95, 0xBE95, 0x2196,
+ 0xBE96, 0xBE96, 0x4367, 0xBE97, 0xBE97, 0x2443, 0xBE98, 0xBE98, 0x243F,
+ 0xBE99, 0xBE99, 0x4368, 0xBE9A, 0xBE9A, 0x2023, 0xBE9B, 0xBE9B, 0x4369,
+ 0xBE9C, 0xBE9C, 0x2442, 0xBE9D, 0xBE9E, 0x436A, 0xBE9F, 0xBE9F, 0x243E,
+ 0xBEA0, 0xBEA0, 0x436C, 0xBEA1, 0xBEFE, 0x08D0, 0xBF40, 0xBF40, 0x26A6,
+ 0xBF41, 0xBF4C, 0x436D, 0xBF4D, 0xBF4D, 0x234E, 0xBF4E, 0xBF4E, 0x2446,
+ 0xBF4F, 0xBF4F, 0x244B, 0xBF50, 0xBF50, 0x2444, 0xBF51, 0xBF54, 0x4379,
+ 0xBF55, 0xBF55, 0x2427, 0xBF56, 0xBF56, 0x244C, 0xBF57, 0xBF5F, 0x437D,
+ 0xBF60, 0xBF60, 0x1F0F, 0xBF61, 0xBF61, 0x4386, 0xBF62, 0xBF62, 0x2447,
+ 0xBF63, 0xBF63, 0x2449, 0xBF64, 0xBF64, 0x2448, 0xBF65, 0xBF67, 0x4387,
+ 0xBF68, 0xBF68, 0x21C2, 0xBF69, 0xBF6B, 0x438A, 0xBF6C, 0xBF6C, 0x216E,
+ 0xBF6D, 0xBF6F, 0x438D, 0xBF70, 0xBF70, 0x1F03, 0xBF71, 0xBF71, 0x4390,
+ 0xBF72, 0xBF72, 0x244A, 0xBF73, 0xBF73, 0x215C, 0xBF74, 0xBF75, 0x4391,
+ 0xBF76, 0xBF76, 0x22BB, 0xBF77, 0xBF77, 0x2450, 0xBF78, 0xBF78, 0x4393,
+ 0xBF79, 0xBF79, 0x2694, 0xBF7A, 0xBF7A, 0x244F, 0xBF7B, 0xBF7B, 0x25F6,
+ 0xBF7C, 0xBF7C, 0x2051, 0xBF7D, 0xBF7D, 0x4394, 0xBF7E, 0xBF7E, 0x244E,
+ 0xBF80, 0xBF81, 0x4395, 0xBF82, 0xBF82, 0x22BA, 0xBF83, 0xBF83, 0x1F6D,
+ 0xBF84, 0xBF88, 0x4397, 0xBF89, 0xBF89, 0x2452, 0xBF8A, 0xBF8A, 0x2451,
+ 0xBF8B, 0xBF94, 0x439C, 0xBF95, 0xBF95, 0x2455, 0xBF96, 0xBF96, 0x43A6,
+ 0xBF97, 0xBF97, 0x2289, 0xBF98, 0xBF98, 0x2116, 0xBF99, 0xBF9C, 0x43A7,
+ 0xBF9D, 0xBF9D, 0x2454, 0xBF9E, 0xBFA0, 0x43AB, 0xBFA1, 0xBFFE, 0x092E,
+ 0xC040, 0xC040, 0x20FB, 0xC041, 0xC043, 0x43AE, 0xC044, 0xC044, 0x2440,
+ 0xC045, 0xC04A, 0x43B1, 0xC04B, 0xC04B, 0x2126, 0xC04C, 0xC04C, 0x1F61,
+ 0xC04D, 0xC04D, 0x269D, 0xC04E, 0xC04E, 0x43B7, 0xC04F, 0xC04F, 0x1F8A,
+ 0xC050, 0xC050, 0x2456, 0xC051, 0xC051, 0x2459, 0xC052, 0xC052, 0x2458,
+ 0xC053, 0xC054, 0x43B8, 0xC055, 0xC055, 0x1FAE, 0xC056, 0xC05A, 0x43BA,
+ 0xC05B, 0xC05B, 0x221A, 0xC05C, 0xC05D, 0x43BF, 0xC05E, 0xC05E, 0x1F7A,
+ 0xC05F, 0xC05F, 0x244D, 0xC060, 0xC060, 0x2457, 0xC061, 0xC068, 0x43C1,
+ 0xC069, 0xC069, 0x2453, 0xC06A, 0xC06A, 0x43C9, 0xC06B, 0xC06B, 0x2420,
+ 0xC06C, 0xC06C, 0x43CA, 0xC06D, 0xC06D, 0x21DF, 0xC06E, 0xC06E, 0x2685,
+ 0xC06F, 0xC06F, 0x43CB, 0xC070, 0xC070, 0x1E6E, 0xC071, 0xC073, 0x43CC,
+ 0xC074, 0xC074, 0x2224, 0xC075, 0xC075, 0x2670, 0xC076, 0xC076, 0x43CF,
+ 0xC077, 0xC077, 0x21BA, 0xC078, 0xC078, 0x43D0, 0xC079, 0xC079, 0x245A,
+ 0xC07A, 0xC07B, 0x43D1, 0xC07C, 0xC07C, 0x1FFF, 0xC07D, 0xC07E, 0x43D3,
+ 0xC080, 0xC09A, 0x43D5, 0xC09B, 0xC09B, 0x25E2, 0xC09C, 0xC09C, 0x43F0,
+ 0xC09D, 0xC09D, 0x269A, 0xC09E, 0xC0A0, 0x43F1, 0xC0A1, 0xC0FE, 0x098C,
+ 0xC140, 0xC14F, 0x43F4, 0xC150, 0xC150, 0x1EEA, 0xC151, 0xC153, 0x4404,
+ 0xC154, 0xC154, 0x1E2C, 0xC155, 0xC15E, 0x4407, 0xC15F, 0xC15F, 0x2062,
+ 0xC160, 0xC160, 0x24F1, 0xC161, 0xC161, 0x4411, 0xC162, 0xC162, 0x24F2,
+ 0xC163, 0xC174, 0x4412, 0xC175, 0xC175, 0x25F2, 0xC176, 0xC177, 0x4424,
+ 0xC178, 0xC178, 0x2215, 0xC179, 0xC17E, 0x4426, 0xC180, 0xC194, 0x442C,
+ 0xC195, 0xC195, 0x21AE, 0xC196, 0xC1A0, 0x4441, 0xC1A1, 0xC1FE, 0x09EA,
+ 0xC240, 0xC24D, 0x444C, 0xC24E, 0xC24E, 0x20E0, 0xC24F, 0xC264, 0x445A,
+ 0xC265, 0xC265, 0x25C2, 0xC266, 0xC266, 0x4470, 0xC267, 0xC267, 0x25C1,
+ 0xC268, 0xC27C, 0x4471, 0xC27D, 0xC27D, 0x2128, 0xC27E, 0xC27E, 0x4486,
+ 0xC280, 0xC283, 0x4487, 0xC284, 0xC284, 0x2199, 0xC285, 0xC292, 0x448B,
+ 0xC293, 0xC293, 0x2017, 0xC294, 0xC294, 0x1EA0, 0xC295, 0xC295, 0x2125,
+ 0xC296, 0xC296, 0x214D, 0xC297, 0xC297, 0x4499, 0xC298, 0xC298, 0x25C4,
+ 0xC299, 0xC299, 0x209D, 0xC29A, 0xC29A, 0x228A, 0xC29B, 0xC29B, 0x449A,
+ 0xC29C, 0xC29C, 0x25C3, 0xC29D, 0xC29F, 0x449B, 0xC2A0, 0xC2A0, 0x2179,
+ 0xC2A1, 0xC2FE, 0x0A48, 0xC340, 0xC340, 0x2038, 0xC341, 0xC342, 0x449E,
+ 0xC343, 0xC343, 0x2155, 0xC344, 0xC37A, 0x44A0, 0xC37B, 0xC37B, 0x21D2,
+ 0xC37C, 0xC37E, 0x44D7, 0xC380, 0xC383, 0x44DA, 0xC384, 0xC384, 0x24C7,
+ 0xC385, 0xC39A, 0x44DE, 0xC39B, 0xC39B, 0x2279, 0xC39C, 0xC3A0, 0x44F4,
+ 0xC3A1, 0xC3FE, 0x0AA6, 0xC440, 0xC448, 0x44F9, 0xC449, 0xC449, 0x2123,
+ 0xC44A, 0xC44B, 0x4502, 0xC44C, 0xC44C, 0x24C5, 0xC44D, 0xC453, 0x4504,
+ 0xC454, 0xC454, 0x24C9, 0xC455, 0xC457, 0x450B, 0xC458, 0xC458, 0x2094,
+ 0xC459, 0xC45A, 0x450E, 0xC45B, 0xC45B, 0x2296, 0xC45C, 0xC462, 0x4510,
+ 0xC463, 0xC463, 0x1E77, 0xC464, 0xC476, 0x4517, 0xC477, 0xC477, 0x1F06,
+ 0xC478, 0xC479, 0x452A, 0xC47A, 0xC47A, 0x1FA5, 0xC47B, 0xC47E, 0x452C,
+ 0xC480, 0xC480, 0x4530, 0xC481, 0xC481, 0x2099, 0xC482, 0xC490, 0x4531,
+ 0xC491, 0xC491, 0x1EAD, 0xC492, 0xC492, 0x24C8, 0xC493, 0xC493, 0x20A8,
+ 0xC494, 0xC497, 0x4540, 0xC498, 0xC498, 0x201F, 0xC499, 0xC499, 0x4544,
+ 0xC49A, 0xC49A, 0x20C5, 0xC49B, 0xC49B, 0x4545, 0xC49C, 0xC49C, 0x24CA,
+ 0xC49D, 0xC4A0, 0x4546, 0xC4A1, 0xC4FE, 0x0B04, 0xC540, 0xC543, 0x454A,
+ 0xC544, 0xC544, 0x1FF0, 0xC545, 0xC545, 0x454E, 0xC546, 0xC546, 0x24C6,
+ 0xC547, 0xC54A, 0x454F, 0xC54B, 0xC54B, 0x225D, 0xC54C, 0xC54C, 0x22DE,
+ 0xC54D, 0xC551, 0x4553, 0xC552, 0xC552, 0x202C, 0xC553, 0xC55E, 0x4558,
+ 0xC55F, 0xC55F, 0x2161, 0xC560, 0xC562, 0x4564, 0xC563, 0xC563, 0x223B,
+ 0xC564, 0xC564, 0x21D9, 0xC565, 0xC565, 0x1FCB, 0xC566, 0xC566, 0x1FC9,
+ 0xC567, 0xC57E, 0x4567, 0xC580, 0xC592, 0x457F, 0xC593, 0xC593, 0x1E61,
+ 0xC594, 0xC59B, 0x4592, 0xC59C, 0xC59C, 0x25EF, 0xC59D, 0xC59D, 0x459A,
+ 0xC59E, 0xC59E, 0x1F98, 0xC59F, 0xC5A0, 0x459B, 0xC5A1, 0xC5FE, 0x0B62,
+ 0xC640, 0xC640, 0x459D, 0xC641, 0xC641, 0x25F0, 0xC642, 0xC643, 0x459E,
+ 0xC644, 0xC644, 0x1F88, 0xC645, 0xC646, 0x45A0, 0xC647, 0xC647, 0x21F8,
+ 0xC648, 0xC662, 0x45A2, 0xC663, 0xC663, 0x2322, 0xC664, 0xC671, 0x45BD,
+ 0xC672, 0xC672, 0x2336, 0xC673, 0xC67E, 0x45CB, 0xC680, 0xC6A0, 0x45D7,
+ 0xC6A1, 0xC6FE, 0x0BC0, 0xC740, 0xC765, 0x45F8, 0xC766, 0xC766, 0x22AB,
+ 0xC767, 0xC76E, 0x461E, 0xC76F, 0xC76F, 0x1FBF, 0xC770, 0xC775, 0x4626,
+ 0xC776, 0xC776, 0x1F7D, 0xC777, 0xC77A, 0x462C, 0xC77B, 0xC77B, 0x2333,
+ 0xC77C, 0xC77E, 0x4630, 0xC780, 0xC7A0, 0x4633, 0xC7A1, 0xC7FE, 0x0C1E,
+ 0xC840, 0xC840, 0x4654, 0xC841, 0xC841, 0x1F4D, 0xC842, 0xC84E, 0x4655,
+ 0xC84F, 0xC84F, 0x2334, 0xC850, 0xC851, 0x4662, 0xC852, 0xC852, 0x1FF1,
+ 0xC853, 0xC865, 0x4664, 0xC866, 0xC866, 0x218B, 0xC867, 0xC86D, 0x4677,
+ 0xC86E, 0xC86E, 0x2349, 0xC86F, 0xC87D, 0x467E, 0xC87E, 0xC87E, 0x220B,
+ 0xC880, 0xC886, 0x468D, 0xC887, 0xC887, 0x2346, 0xC888, 0xC891, 0x4694,
+ 0xC892, 0xC892, 0x2347, 0xC893, 0xC893, 0x469E, 0xC894, 0xC894, 0x2193,
+ 0xC895, 0xC898, 0x469F, 0xC899, 0xC899, 0x26A1, 0xC89A, 0xC89C, 0x46A3,
+ 0xC89D, 0xC89D, 0x1F62, 0xC89E, 0xC8A0, 0x46A6, 0xC8A1, 0xC8FE, 0x0C7C,
+ 0xC940, 0xC94E, 0x46A9, 0xC94F, 0xC94F, 0x234D, 0xC950, 0xC950, 0x2348,
+ 0xC951, 0xC96D, 0x46B8, 0xC96E, 0xC96E, 0x1E60, 0xC96F, 0xC96F, 0x46D5,
+ 0xC970, 0xC970, 0x2345, 0xC971, 0xC976, 0x46D6, 0xC977, 0xC977, 0x1F12,
+ 0xC978, 0xC97E, 0x46DC, 0xC980, 0xC98E, 0x46E3, 0xC98F, 0xC98F, 0x2018,
+ 0xC990, 0xC990, 0x2335, 0xC991, 0xC99B, 0x46F2, 0xC99C, 0xC99C, 0x233C,
+ 0xC99D, 0xC9A0, 0x46FD, 0xC9A1, 0xC9FE, 0x0CDA, 0xCA40, 0xCA4D, 0x4701,
+ 0xCA4E, 0xCA4E, 0x266F, 0xCA4F, 0xCA55, 0x470F, 0xCA56, 0xCA56, 0x2351,
+ 0xCA57, 0xCA58, 0x4716, 0xCA59, 0xCA59, 0x1FA0, 0xCA5A, 0xCA5B, 0x4718,
+ 0xCA5C, 0xCA5C, 0x2338, 0xCA5D, 0xCA60, 0x471A, 0xCA61, 0xCA61, 0x221B,
+ 0xCA62, 0xCA6D, 0x471E, 0xCA6E, 0xCA6E, 0x2342, 0xCA6F, 0xCA71, 0x472A,
+ 0xCA72, 0xCA72, 0x234F, 0xCA73, 0xCA76, 0x472D, 0xCA77, 0xCA77, 0x233D,
+ 0xCA78, 0xCA7A, 0x4731, 0xCA7B, 0xCA7B, 0x2344, 0xCA7C, 0xCA7C, 0x2331,
+ 0xCA7D, 0xCA7D, 0x4734, 0xCA7E, 0xCA7E, 0x234B, 0xCA80, 0xCA80, 0x4735,
+ 0xCA81, 0xCA81, 0x233B, 0xCA82, 0xCA88, 0x4736, 0xCA89, 0xCA89, 0x2350,
+ 0xCA8A, 0xCA8D, 0x473D, 0xCA8E, 0xCA8E, 0x1EB4, 0xCA8F, 0xCA8F, 0x21A6,
+ 0xCA90, 0xCA91, 0x4741, 0xCA92, 0xCA92, 0x21CB, 0xCA93, 0xCA99, 0x4743,
+ 0xCA9A, 0xCA9A, 0x2355, 0xCA9B, 0xCAA0, 0x474A, 0xCAA1, 0xCAFE, 0x0D38,
+ 0xCB40, 0xCB42, 0x4750, 0xCB43, 0xCB43, 0x233E, 0xCB44, 0xCB44, 0x4753,
+ 0xCB45, 0xCB45, 0x1F74, 0xCB46, 0xCB46, 0x4754, 0xCB47, 0xCB47, 0x2330,
+ 0xCB48, 0xCB4A, 0x4755, 0xCB4B, 0xCB4B, 0x2680, 0xCB4C, 0xCB4D, 0x4758,
+ 0xCB4E, 0xCB4E, 0x20DA, 0xCB4F, 0xCB56, 0x475A, 0xCB57, 0xCB57, 0x234A,
+ 0xCB58, 0xCB5C, 0x4762, 0xCB5D, 0xCB5D, 0x1F91, 0xCB5E, 0xCB5E, 0x4767,
+ 0xCB5F, 0xCB5F, 0x2107, 0xCB60, 0xCB69, 0x4768, 0xCB6A, 0xCB6A, 0x233F,
+ 0xCB6B, 0xCB7A, 0x4772, 0xCB7B, 0xCB7B, 0x1FF4, 0xCB7C, 0xCB7C, 0x2343,
+ 0xCB7D, 0xCB7E, 0x4782, 0xCB80, 0xCB86, 0x4784, 0xCB87, 0xCB87, 0x2212,
+ 0xCB88, 0xCB8D, 0x478B, 0xCB8E, 0xCB8E, 0x2207, 0xCB8F, 0xCB91, 0x4791,
+ 0xCB92, 0xCB92, 0x2359, 0xCB93, 0xCB9B, 0x4794, 0xCB9C, 0xCB9C, 0x2254,
+ 0xCB9D, 0xCB9D, 0x479D, 0xCB9E, 0xCB9E, 0x2332, 0xCB9F, 0xCBA0, 0x479E,
+ 0xCBA1, 0xCBFE, 0x0D96, 0xCC40, 0xCC40, 0x1E26, 0xCC41, 0xCC41, 0x2357,
+ 0xCC42, 0xCC48, 0x47A0, 0xCC49, 0xCC49, 0x2358, 0xCC4A, 0xCC4A, 0x2042,
+ 0xCC4B, 0xCC4B, 0x2153, 0xCC4C, 0xCC4E, 0x47A7, 0xCC4F, 0xCC4F, 0x20BB,
+ 0xCC50, 0xCC5B, 0x47AA, 0xCC5C, 0xCC5C, 0x235A, 0xCC5D, 0xCC5F, 0x47B6,
+ 0xCC60, 0xCC60, 0x2356, 0xCC61, 0xCC63, 0x47B9, 0xCC64, 0xCC64, 0x2337,
+ 0xCC65, 0xCC6C, 0x47BC, 0xCC6D, 0xCC6D, 0x1FF9, 0xCC6E, 0xCC78, 0x47C4,
+ 0xCC79, 0xCC79, 0x2353, 0xCC7A, 0xCC7C, 0x47CF, 0xCC7D, 0xCC7D, 0x2061,
+ 0xCC7E, 0xCC7E, 0x47D2, 0xCC80, 0xCC8D, 0x47D3, 0xCC8E, 0xCC8E, 0x1E95,
+ 0xCC8F, 0xCC93, 0x47E1, 0xCC94, 0xCC94, 0x2049, 0xCC95, 0xCC95, 0x47E6,
+ 0xCC96, 0xCC96, 0x1F42, 0xCC97, 0xCC9C, 0x47E7, 0xCC9D, 0xCC9D, 0x1FE8,
+ 0xCC9E, 0xCCA0, 0x47ED, 0xCCA1, 0xCCFE, 0x0DF4, 0xCD40, 0xCD7E, 0x47F0,
+ 0xCD80, 0xCD8F, 0x482F, 0xCD90, 0xCD90, 0x25DA, 0xCD91, 0xCD97, 0x483F,
+ 0xCD98, 0xCD98, 0x25D7, 0xCD99, 0xCDA0, 0x4846, 0xCDA1, 0xCDFE, 0x0E52,
+ 0xCE40, 0xCE66, 0x484E, 0xCE67, 0xCE67, 0x212E, 0xCE68, 0xCE71, 0x4875,
+ 0xCE72, 0xCE72, 0x21B2, 0xCE73, 0xCE7E, 0x487F, 0xCE80, 0xCE80, 0x488B,
+ 0xCE81, 0xCE81, 0x219E, 0xCE82, 0xCE86, 0x488C, 0xCE87, 0xCE87, 0x25DC,
+ 0xCE88, 0xCE9A, 0x4891, 0xCE9B, 0xCE9B, 0x206C, 0xCE9C, 0xCE9D, 0x48A4,
+ 0xCE9E, 0xCE9E, 0x2226, 0xCE9F, 0xCEA0, 0x48A6, 0xCEA1, 0xCEFE, 0x0EB0,
+ 0xCF40, 0xCF4D, 0x48A8, 0xCF4E, 0xCF4E, 0x25E0, 0xCF4F, 0xCF54, 0x48B6,
+ 0xCF55, 0xCF55, 0x227B, 0xCF56, 0xCF57, 0x48BC, 0xCF58, 0xCF58, 0x25DE,
+ 0xCF59, 0xCF5B, 0x48BE, 0xCF5C, 0xCF5C, 0x25E1, 0xCF5D, 0xCF6B, 0x48C1,
+ 0xCF6C, 0xCF6C, 0x25D5, 0xCF6D, 0xCF72, 0x48D0, 0xCF73, 0xCF73, 0x1E6B,
+ 0xCF74, 0xCF74, 0x48D6, 0xCF75, 0xCF75, 0x25DB, 0xCF76, 0xCF77, 0x48D7,
+ 0xCF78, 0xCF78, 0x1E89, 0xCF79, 0xCF7B, 0x48D9, 0xCF7C, 0xCF7C, 0x25D9,
+ 0xCF7D, 0xCF7E, 0x48DC, 0xCF80, 0xCF80, 0x48DE, 0xCF81, 0xCF81, 0x2211,
+ 0xCF82, 0xCF88, 0x48DF, 0xCF89, 0xCF89, 0x2229, 0xCF8A, 0xCF8A, 0x25D6,
+ 0xCF8B, 0xCF92, 0x48E6, 0xCF93, 0xCF93, 0x25DD, 0xCF94, 0xCF94, 0x25DF,
+ 0xCF95, 0xCF9D, 0x48EE, 0xCF9E, 0xCF9E, 0x1FEF, 0xCF9F, 0xCF9F, 0x48F7,
+ 0xCFA0, 0xCFA0, 0x25D8, 0xCFA1, 0xCFFE, 0x0F0E, 0xD040, 0xD04C, 0x48F8,
+ 0xD04D, 0xD04D, 0x1F29, 0xD04E, 0xD050, 0x4905, 0xD051, 0xD051, 0x1E5B,
+ 0xD052, 0xD054, 0x4908, 0xD055, 0xD055, 0x2076, 0xD056, 0xD05B, 0x490B,
+ 0xD05C, 0xD05C, 0x2297, 0xD05D, 0xD05F, 0x4911, 0xD060, 0xD060, 0x2690,
+ 0xD061, 0xD066, 0x4914, 0xD067, 0xD067, 0x213F, 0xD068, 0xD06B, 0x491A,
+ 0xD06C, 0xD06C, 0x2198, 0xD06D, 0xD06D, 0x491E, 0xD06E, 0xD06E, 0x1E88,
+ 0xD06F, 0xD07C, 0x491F, 0xD07D, 0xD07D, 0x228C, 0xD07E, 0xD07E, 0x492D,
+ 0xD080, 0xD0A0, 0x492E, 0xD0A1, 0xD0FE, 0x0F6C, 0xD140, 0xD154, 0x494F,
+ 0xD155, 0xD155, 0x25F1, 0xD156, 0xD158, 0x4964, 0xD159, 0xD159, 0x200C,
+ 0xD15A, 0xD160, 0x4967, 0xD161, 0xD161, 0x1E58, 0xD162, 0xD162, 0x22AC,
+ 0xD163, 0xD174, 0x496E, 0xD175, 0xD175, 0x26A7, 0xD176, 0xD17C, 0x4980,
+ 0xD17D, 0xD17D, 0x2676, 0xD17E, 0xD17E, 0x4987, 0xD180, 0xD19C, 0x4988,
+ 0xD19D, 0xD19D, 0x1FE1, 0xD19E, 0xD19E, 0x25BB, 0xD19F, 0xD1A0, 0x49A5,
+ 0xD1A1, 0xD1FE, 0x0FCA, 0xD240, 0xD240, 0x25BE, 0xD241, 0xD242, 0x49A7,
+ 0xD243, 0xD243, 0x22DD, 0xD244, 0xD24C, 0x49A9, 0xD24D, 0xD24D, 0x25BD,
+ 0xD24E, 0xD25B, 0x49B2, 0xD25C, 0xD25C, 0x1E2A, 0xD25D, 0xD262, 0x49C0,
+ 0xD263, 0xD263, 0x25BC, 0xD264, 0xD264, 0x25BA, 0xD265, 0xD267, 0x49C6,
+ 0xD268, 0xD268, 0x25BF, 0xD269, 0xD26C, 0x49C9, 0xD26D, 0xD26D, 0x2187,
+ 0xD26E, 0xD26E, 0x49CD, 0xD26F, 0xD26F, 0x266B, 0xD270, 0xD271, 0x49CE,
+ 0xD272, 0xD272, 0x1E7F, 0xD273, 0xD274, 0x49D0, 0xD275, 0xD275, 0x21AD,
+ 0xD276, 0xD27E, 0x49D2, 0xD280, 0xD289, 0x49DB, 0xD28A, 0xD28A, 0x1F96,
+ 0xD28B, 0xD28D, 0x49E5, 0xD28E, 0xD28E, 0x1F32, 0xD28F, 0xD291, 0x49E8,
+ 0xD292, 0xD292, 0x2084, 0xD293, 0xD294, 0x49EB, 0xD295, 0xD295, 0x2136,
+ 0xD296, 0xD296, 0x49ED, 0xD297, 0xD297, 0x24B8, 0xD298, 0xD29F, 0x49EE,
+ 0xD2A0, 0xD2A0, 0x24BA, 0xD2A1, 0xD2FE, 0x1028, 0xD340, 0xD343, 0x49F6,
+ 0xD344, 0xD344, 0x24BC, 0xD345, 0xD347, 0x49FA, 0xD348, 0xD348, 0x20E4,
+ 0xD349, 0xD349, 0x49FD, 0xD34A, 0xD34A, 0x24B9, 0xD34B, 0xD34C, 0x49FE,
+ 0xD34D, 0xD34D, 0x24BD, 0xD34E, 0xD34F, 0x4A00, 0xD350, 0xD350, 0x24BE,
+ 0xD351, 0xD354, 0x4A02, 0xD355, 0xD355, 0x24BF, 0xD356, 0xD357, 0x4A06,
+ 0xD358, 0xD358, 0x1FD2, 0xD359, 0xD35A, 0x4A08, 0xD35B, 0xD35B, 0x1FFD,
+ 0xD35C, 0xD35C, 0x4A0A, 0xD35D, 0xD35D, 0x24BB, 0xD35E, 0xD35E, 0x1F2D,
+ 0xD35F, 0xD377, 0x4A0B, 0xD378, 0xD378, 0x2609, 0xD379, 0xD379, 0x4A24,
+ 0xD37A, 0xD37A, 0x260A, 0xD37B, 0xD37B, 0x4A25, 0xD37C, 0xD37C, 0x1E94,
+ 0xD37D, 0xD37E, 0x4A26, 0xD380, 0xD384, 0x4A28, 0xD385, 0xD385, 0x22DF,
+ 0xD386, 0xD386, 0x1ECB, 0xD387, 0xD387, 0x1F0D, 0xD388, 0xD38A, 0x4A2D,
+ 0xD38B, 0xD38B, 0x1F77, 0xD38C, 0xD38C, 0x4A30, 0xD38D, 0xD38D, 0x21EB,
+ 0xD38E, 0xD38E, 0x4A31, 0xD38F, 0xD38F, 0x22E1, 0xD390, 0xD390, 0x4A32,
+ 0xD391, 0xD391, 0x216F, 0xD392, 0xD392, 0x4A33, 0xD393, 0xD393, 0x22E0,
+ 0xD394, 0xD395, 0x4A34, 0xD396, 0xD396, 0x21EA, 0xD397, 0xD397, 0x4A36,
+ 0xD398, 0xD398, 0x22E2, 0xD399, 0xD399, 0x20CB, 0xD39A, 0xD39A, 0x4A37,
+ 0xD39B, 0xD39B, 0x1F78, 0xD39C, 0xD39D, 0x4A38, 0xD39E, 0xD39E, 0x1EE2,
+ 0xD39F, 0xD39F, 0x4A3A, 0xD3A0, 0xD3A0, 0x21F2, 0xD3A1, 0xD3FE, 0x1086,
+ 0xD440, 0xD440, 0x4A3B, 0xD441, 0xD441, 0x2150, 0xD442, 0xD444, 0x4A3C,
+ 0xD445, 0xD445, 0x1FD3, 0xD446, 0xD446, 0x4A3F, 0xD447, 0xD447, 0x22E5,
+ 0xD448, 0xD44B, 0x4A40, 0xD44C, 0xD44C, 0x1EF2, 0xD44D, 0xD44E, 0x4A44,
+ 0xD44F, 0xD44F, 0x211F, 0xD450, 0xD452, 0x4A46, 0xD453, 0xD453, 0x21DD,
+ 0xD454, 0xD455, 0x4A49, 0xD456, 0xD456, 0x2154, 0xD457, 0xD457, 0x4A4B,
+ 0xD458, 0xD458, 0x22E7, 0xD459, 0xD45B, 0x4A4C, 0xD45C, 0xD45C, 0x2282,
+ 0xD45D, 0xD461, 0x4A4F, 0xD462, 0xD462, 0x22E6, 0xD463, 0xD466, 0x4A54,
+ 0xD467, 0xD467, 0x22E8, 0xD468, 0xD46D, 0x4A58, 0xD46E, 0xD46E, 0x22E4,
+ 0xD46F, 0xD46F, 0x4A5E, 0xD470, 0xD470, 0x226A, 0xD471, 0xD471, 0x4A5F,
+ 0xD472, 0xD472, 0x22EB, 0xD473, 0xD473, 0x4A60, 0xD474, 0xD474, 0x22E9,
+ 0xD475, 0xD475, 0x20BD, 0xD476, 0xD477, 0x4A61, 0xD478, 0xD478, 0x22EA,
+ 0xD479, 0xD47A, 0x4A63, 0xD47B, 0xD47B, 0x22BD, 0xD47C, 0xD47D, 0x4A65,
+ 0xD47E, 0xD47E, 0x1E9E, 0xD480, 0xD481, 0x4A67, 0xD482, 0xD482, 0x22F6,
+ 0xD483, 0xD483, 0x21E7, 0xD484, 0xD484, 0x2216, 0xD485, 0xD486, 0x4A69,
+ 0xD487, 0xD487, 0x2137, 0xD488, 0xD489, 0x4A6B, 0xD48A, 0xD48A, 0x212C,
+ 0xD48B, 0xD48B, 0x4A6D, 0xD48C, 0xD48C, 0x1E68, 0xD48D, 0xD48D, 0x22F2,
+ 0xD48E, 0xD48E, 0x1F37, 0xD48F, 0xD48F, 0x22F3, 0xD490, 0xD490, 0x4A6E,
+ 0xD491, 0xD491, 0x22EF, 0xD492, 0xD492, 0x1F50, 0xD493, 0xD493, 0x1F10,
+ 0xD494, 0xD494, 0x21C8, 0xD495, 0xD495, 0x4A6F, 0xD496, 0xD496, 0x22F1,
+ 0xD497, 0xD49B, 0x4A70, 0xD49C, 0xD49C, 0x22F0, 0xD49D, 0xD49E, 0x4A75,
+ 0xD49F, 0xD49F, 0x22EE, 0xD4A0, 0xD4A0, 0x4A77, 0xD4A1, 0xD4FE, 0x10E4,
+ 0xD540, 0xD542, 0x4A78, 0xD543, 0xD543, 0x22ED, 0xD544, 0xD544, 0x229E,
+ 0xD545, 0xD545, 0x22EC, 0xD546, 0xD546, 0x1FE2, 0xD547, 0xD549, 0x4A7B,
+ 0xD54A, 0xD54A, 0x20FE, 0xD54B, 0xD54D, 0x4A7E, 0xD54E, 0xD54F, 0x22F9,
+ 0xD550, 0xD550, 0x4A81, 0xD551, 0xD551, 0x1EAF, 0xD552, 0xD553, 0x4A82,
+ 0xD554, 0xD554, 0x2236, 0xD555, 0xD555, 0x4A84, 0xD556, 0xD556, 0x22F7,
+ 0xD557, 0xD559, 0x4A85, 0xD55A, 0xD55A, 0x223D, 0xD55B, 0xD55B, 0x4A88,
+ 0xD55C, 0xD55C, 0x1E82, 0xD55D, 0xD55D, 0x1FB6, 0xD55E, 0xD55E, 0x4A89,
+ 0xD55F, 0xD55F, 0x21A4, 0xD560, 0xD560, 0x21AA, 0xD561, 0xD561, 0x22F8,
+ 0xD562, 0xD562, 0x2151, 0xD563, 0xD563, 0x4A8A, 0xD564, 0xD564, 0x1F60,
+ 0xD565, 0xD567, 0x4A8B, 0xD568, 0xD568, 0x2147, 0xD569, 0xD56B, 0x4A8E,
+ 0xD56C, 0xD56C, 0x2145, 0xD56D, 0xD56D, 0x4A91, 0xD56E, 0xD56E, 0x1FDC,
+ 0xD56F, 0xD571, 0x4A92, 0xD572, 0xD572, 0x2301, 0xD573, 0xD574, 0x4A95,
+ 0xD575, 0xD575, 0x1EF5, 0xD576, 0xD577, 0x4A97, 0xD578, 0xD578, 0x2218,
+ 0xD579, 0xD57A, 0x4A99, 0xD57B, 0xD57B, 0x1EC6, 0xD57C, 0xD57D, 0x4A9B,
+ 0xD57E, 0xD57E, 0x2300, 0xD580, 0xD580, 0x4A9D, 0xD581, 0xD581, 0x22B4,
+ 0xD582, 0xD583, 0x4A9E, 0xD584, 0xD584, 0x2169, 0xD585, 0xD585, 0x4AA0,
+ 0xD586, 0xD586, 0x22FD, 0xD587, 0xD587, 0x4AA1, 0xD588, 0xD588, 0x20EA,
+ 0xD589, 0xD589, 0x4AA2, 0xD58A, 0xD58A, 0x22F4, 0xD58B, 0xD58B, 0x4AA3,
+ 0xD58C, 0xD58C, 0x22FB, 0xD58D, 0xD58D, 0x4AA4, 0xD58E, 0xD58E, 0x22FC,
+ 0xD58F, 0xD58F, 0x2027, 0xD590, 0xD592, 0x4AA5, 0xD593, 0xD593, 0x2060,
+ 0xD594, 0xD594, 0x22FF, 0xD595, 0xD597, 0x4AA8, 0xD598, 0xD598, 0x22FE,
+ 0xD599, 0xD599, 0x1EC7, 0xD59A, 0xD59A, 0x4AAB, 0xD59B, 0xD59B, 0x230C,
+ 0xD59C, 0xD59E, 0x4AAC, 0xD59F, 0xD59F, 0x22F5, 0xD5A0, 0xD5A0, 0x4AAF,
+ 0xD5A1, 0xD5FE, 0x1142, 0xD640, 0xD640, 0x2306, 0xD641, 0xD641, 0x4AB0,
+ 0xD642, 0xD642, 0x230A, 0xD643, 0xD643, 0x21D3, 0xD644, 0xD646, 0x4AB1,
+ 0xD647, 0xD647, 0x2303, 0xD648, 0xD648, 0x4AB4, 0xD649, 0xD649, 0x2307,
+ 0xD64A, 0xD64A, 0x230B, 0xD64B, 0xD64C, 0x4AB5, 0xD64D, 0xD64D, 0x1F5F,
+ 0xD64E, 0xD64E, 0x4AB7, 0xD64F, 0xD64F, 0x2309, 0xD650, 0xD651, 0x4AB8,
+ 0xD652, 0xD652, 0x2302, 0xD653, 0xD653, 0x1F04, 0xD654, 0xD654, 0x229D,
+ 0xD655, 0xD655, 0x4ABA, 0xD656, 0xD656, 0x21FB, 0xD657, 0xD657, 0x4ABB,
+ 0xD658, 0xD658, 0x2308, 0xD659, 0xD659, 0x4ABC, 0xD65A, 0xD65A, 0x20AC,
+ 0xD65B, 0xD65B, 0x4ABD, 0xD65C, 0xD65C, 0x208E, 0xD65D, 0xD65D, 0x2305,
+ 0xD65E, 0xD65E, 0x2197, 0xD65F, 0xD65F, 0x4ABE, 0xD660, 0xD660, 0x2171,
+ 0xD661, 0xD661, 0x2298, 0xD662, 0xD664, 0x4ABF, 0xD665, 0xD665, 0x1F57,
+ 0xD666, 0xD668, 0x4AC2, 0xD669, 0xD669, 0x2082, 0xD66A, 0xD66A, 0x4AC5,
+ 0xD66B, 0xD66B, 0x2311, 0xD66C, 0xD66E, 0x4AC6, 0xD66F, 0xD66F, 0x2304,
+ 0xD670, 0xD670, 0x4AC9, 0xD671, 0xD671, 0x230F, 0xD672, 0xD672, 0x1E35,
+ 0xD673, 0xD673, 0x4ACA, 0xD674, 0xD674, 0x20D1, 0xD675, 0xD675, 0x2310,
+ 0xD676, 0xD676, 0x1FA3, 0xD677, 0xD677, 0x4ACB, 0xD678, 0xD678, 0x21D6,
+ 0xD679, 0xD67B, 0x4ACC, 0xD67C, 0xD67C, 0x2206, 0xD67D, 0xD67E, 0x4ACF,
+ 0xD680, 0xD682, 0x4AD1, 0xD683, 0xD683, 0x230D, 0xD684, 0xD685, 0x4AD4,
+ 0xD686, 0xD686, 0x2312, 0xD687, 0xD687, 0x208D, 0xD688, 0xD688, 0x2313,
+ 0xD689, 0xD68D, 0x4AD6, 0xD68E, 0xD68E, 0x22E3, 0xD68F, 0xD693, 0x4ADB,
+ 0xD694, 0xD694, 0x1FBA, 0xD695, 0xD698, 0x4AE0, 0xD699, 0xD699, 0x2078,
+ 0xD69A, 0xD6A0, 0x4AE4, 0xD6A1, 0xD6FE, 0x11A0, 0xD740, 0xD742, 0x4AEB,
+ 0xD743, 0xD743, 0x2288, 0xD744, 0xD747, 0x4AEE, 0xD748, 0xD748, 0x2316,
+ 0xD749, 0xD749, 0x1F6B, 0xD74A, 0xD74F, 0x4AF2, 0xD750, 0xD750, 0x2314,
+ 0xD751, 0xD751, 0x4AF8, 0xD752, 0xD752, 0x2130, 0xD753, 0xD753, 0x2315,
+ 0xD754, 0xD754, 0x2168, 0xD755, 0xD755, 0x4AF9, 0xD756, 0xD756, 0x20C4,
+ 0xD757, 0xD763, 0x4AFA, 0xD764, 0xD764, 0x2318, 0xD765, 0xD766, 0x4B07,
+ 0xD767, 0xD767, 0x2219, 0xD768, 0xD768, 0x2217, 0xD769, 0xD76B, 0x4B09,
+ 0xD76C, 0xD76C, 0x20D5, 0xD76D, 0xD76E, 0x4B0C, 0xD76F, 0xD76F, 0x1F4A,
+ 0xD770, 0xD774, 0x4B0E, 0xD775, 0xD775, 0x2240, 0xD776, 0xD777, 0x4B13,
+ 0xD778, 0xD778, 0x1ED3, 0xD779, 0xD77E, 0x4B15, 0xD780, 0xD782, 0x4B1B,
+ 0xD783, 0xD783, 0x1E49, 0xD784, 0xD786, 0x4B1E, 0xD787, 0xD787, 0x261B,
+ 0xD788, 0xD78A, 0x4B21, 0xD78B, 0xD78B, 0x1E6D, 0xD78C, 0xD78C, 0x20F8,
+ 0xD78D, 0xD78D, 0x4B24, 0xD78E, 0xD78E, 0x1FFB, 0xD78F, 0xD78F, 0x2319,
+ 0xD790, 0xD794, 0x4B25, 0xD795, 0xD795, 0x230E, 0xD796, 0xD796, 0x4B2A,
+ 0xD797, 0xD797, 0x2317, 0xD798, 0xD7A0, 0x4B2B, 0xD7A1, 0xD7F9, 0x11FE,
+ 0xD840, 0xD84C, 0x4B34, 0xD84D, 0xD84D, 0x20C8, 0xD84E, 0xD852, 0x4B41,
+ 0xD853, 0xD853, 0x1EFD, 0xD854, 0xD87E, 0x4B46, 0xD880, 0xD88F, 0x4B71,
+ 0xD890, 0xD890, 0x1E3B, 0xD891, 0xD891, 0x227F, 0xD892, 0xD892, 0x4B81,
+ 0xD893, 0xD893, 0x1F0C, 0xD894, 0xD894, 0x1E59, 0xD895, 0xD895, 0x1F24,
+ 0xD896, 0xD899, 0x4B82, 0xD89A, 0xD89A, 0x20BA, 0xD89B, 0xD89B, 0x1F65,
+ 0xD89C, 0xD89C, 0x1EF0, 0xD89D, 0xD89D, 0x2164, 0xD89E, 0xD89E, 0x1F30,
+ 0xD89F, 0xD89F, 0x2261, 0xD8A0, 0xD8A0, 0x4B86, 0xD8A1, 0xD8FE, 0x1257,
+ 0xD940, 0xD940, 0x4B87, 0xD941, 0xD941, 0x22A2, 0xD942, 0xD942, 0x24AB,
+ 0xD943, 0xD943, 0x4B88, 0xD944, 0xD944, 0x24AF, 0xD945, 0xD945, 0x1EE8,
+ 0xD946, 0xD946, 0x1F39, 0xD947, 0xD947, 0x4B89, 0xD948, 0xD948, 0x1E48,
+ 0xD949, 0xD949, 0x2070, 0xD94A, 0xD94A, 0x1EA8, 0xD94B, 0xD94B, 0x4B8A,
+ 0xD94C, 0xD94C, 0x24AC, 0xD94D, 0xD94D, 0x1EF7, 0xD94E, 0xD94E, 0x2176,
+ 0xD94F, 0xD94F, 0x24AD, 0xD950, 0xD950, 0x4B8B, 0xD951, 0xD951, 0x207B,
+ 0xD952, 0xD952, 0x1F45, 0xD953, 0xD953, 0x24AA, 0xD954, 0xD954, 0x204B,
+ 0xD955, 0xD955, 0x202F, 0xD956, 0xD956, 0x1F5A, 0xD957, 0xD957, 0x24B0,
+ 0xD958, 0xD958, 0x4B8C, 0xD959, 0xD959, 0x22B7, 0xD95A, 0xD95A, 0x1F7F,
+ 0xD95B, 0xD95B, 0x4B8D, 0xD95C, 0xD95C, 0x2265, 0xD95D, 0xD962, 0x4B8E,
+ 0xD963, 0xD963, 0x24B2, 0xD964, 0xD964, 0x211B, 0xD965, 0xD965, 0x1E51,
+ 0xD966, 0xD966, 0x4B94, 0xD967, 0xD967, 0x24B4, 0xD968, 0xD96B, 0x4B95,
+ 0xD96C, 0xD96C, 0x24B3, 0xD96D, 0xD96D, 0x4B99, 0xD96E, 0xD96E, 0x1E9F,
+ 0xD96F, 0xD96F, 0x4B9A, 0xD970, 0xD970, 0x2118, 0xD971, 0xD971, 0x4B9B,
+ 0xD972, 0xD972, 0x20B4, 0xD973, 0xD973, 0x23AF, 0xD974, 0xD974, 0x21BB,
+ 0xD975, 0xD975, 0x2072, 0xD976, 0xD976, 0x1F95, 0xD977, 0xD977, 0x4B9C,
+ 0xD978, 0xD978, 0x1F0A, 0xD979, 0xD979, 0x24B6, 0xD97A, 0xD97B, 0x4B9D,
+ 0xD97C, 0xD97C, 0x2291, 0xD97D, 0xD97D, 0x24B5, 0xD97E, 0xD97E, 0x2278,
+ 0xD980, 0xD980, 0x1ED4, 0xD981, 0xD986, 0x4B9F, 0xD987, 0xD987, 0x1FF3,
+ 0xD988, 0xD98C, 0x4BA5, 0xD98D, 0xD98D, 0x22A9, 0xD98E, 0xD98E, 0x24B7,
+ 0xD98F, 0xD98F, 0x1F28, 0xD990, 0xD990, 0x2109, 0xD991, 0xD991, 0x22C7,
+ 0xD992, 0xD996, 0x4BAA, 0xD997, 0xD997, 0x24AE, 0xD998, 0xD998, 0x22B1,
+ 0xD999, 0xD99A, 0x4BAF, 0xD99B, 0xD99B, 0x2266, 0xD99C, 0xD99C, 0x4BB1,
+ 0xD99D, 0xD99D, 0x225B, 0xD99E, 0xD99E, 0x22C4, 0xD99F, 0xD99F, 0x4BB2,
+ 0xD9A0, 0xD9A0, 0x2115, 0xD9A1, 0xD9FE, 0x12B5, 0xDA40, 0xDA40, 0x4BB3,
+ 0xDA41, 0xDA41, 0x222A, 0xDA42, 0xDA42, 0x24B1, 0xDA43, 0xDA47, 0x4BB4,
+ 0xDA48, 0xDA48, 0x213D, 0xDA49, 0xDA4C, 0x4BB9, 0xDA4D, 0xDA4D, 0x1F15,
+ 0xDA4E, 0xDA4E, 0x225C, 0xDA4F, 0xDA72, 0x4BBD, 0xDA73, 0xDA73, 0x1F14,
+ 0xDA74, 0xDA76, 0x4BE1, 0xDA77, 0xDA77, 0x227A, 0xDA78, 0xDA7E, 0x4BE4,
+ 0xDA80, 0xDA84, 0x4BEB, 0xDA85, 0xDA85, 0x20EE, 0xDA86, 0xDA8D, 0x4BF0,
+ 0xDA8E, 0xDA8E, 0x25F8, 0xDA8F, 0xDAA0, 0x4BF8, 0xDAA1, 0xDAFE, 0x1313,
+ 0xDB40, 0xDB5F, 0x4C0A, 0xDB60, 0xDB60, 0x1F94, 0xDB61, 0xDB77, 0x4C2A,
+ 0xDB78, 0xDB78, 0x2230, 0xDB79, 0xDB7E, 0x4C41, 0xDB80, 0xDB83, 0x4C47,
+ 0xDB84, 0xDB84, 0x25FD, 0xDB85, 0xDB8A, 0x4C4B, 0xDB8B, 0xDB8B, 0x2600,
+ 0xDB8C, 0xDB97, 0x4C51, 0xDB98, 0xDB98, 0x2606, 0xDB99, 0xDBA0, 0x4C5D,
+ 0xDBA1, 0xDBFE, 0x1371, 0xDC40, 0xDC44, 0x4C65, 0xDC45, 0xDC45, 0x25FF,
+ 0xDC46, 0xDC4E, 0x4C6A, 0xDC4F, 0xDC4F, 0x25FC, 0xDC50, 0xDC50, 0x1E8C,
+ 0xDC51, 0xDC51, 0x2602, 0xDC52, 0xDC52, 0x4C73, 0xDC53, 0xDC53, 0x224D,
+ 0xDC54, 0xDC54, 0x4C74, 0xDC55, 0xDC55, 0x2604, 0xDC56, 0xDC56, 0x25FE,
+ 0xDC57, 0xDC57, 0x2603, 0xDC58, 0xDC5C, 0x4C75, 0xDC5D, 0xDC5D, 0x2601,
+ 0xDC5E, 0xDC61, 0x4C7A, 0xDC62, 0xDC62, 0x2605, 0xDC63, 0xDC65, 0x4C7E,
+ 0xDC66, 0xDC66, 0x1EA3, 0xDC67, 0xDC67, 0x2608, 0xDC68, 0xDC6A, 0x4C81,
+ 0xDC6B, 0xDC6B, 0x2607, 0xDC6C, 0xDC7B, 0x4C84, 0xDC7C, 0xDC7C, 0x20F0,
+ 0xDC7D, 0xDC7E, 0x4C94, 0xDC80, 0xDC86, 0x4C96, 0xDC87, 0xDC87, 0x1E7B,
+ 0xDC88, 0xDC88, 0x2267, 0xDC89, 0xDC89, 0x1F36, 0xDC8A, 0xDC8A, 0x1FD6,
+ 0xDC8B, 0xDC8D, 0x4C9D, 0xDC8E, 0xDC8E, 0x21E0, 0xDC8F, 0xDC8F, 0x4CA0,
+ 0xDC90, 0xDC90, 0x248C, 0xDC91, 0xDC96, 0x4CA1, 0xDC97, 0xDC97, 0x248D,
+ 0xDC98, 0xDC9A, 0x4CA7, 0xDC9B, 0xDC9B, 0x2102, 0xDC9C, 0xDC9F, 0x4CAA,
+ 0xDCA0, 0xDCA0, 0x2494, 0xDCA1, 0xDCFE, 0x13CF, 0xDD40, 0xDD45, 0x4CAE,
+ 0xDD46, 0xDD46, 0x2493, 0xDD47, 0xDD4C, 0x4CB4, 0xDD4D, 0xDD4D, 0x248E,
+ 0xDD4E, 0xDD52, 0x4CBA, 0xDD53, 0xDD53, 0x2299, 0xDD54, 0xDD54, 0x2491,
+ 0xDD55, 0xDD55, 0x2496, 0xDD56, 0xDD56, 0x248F, 0xDD57, 0xDD57, 0x2492,
+ 0xDD58, 0xDD58, 0x4CBF, 0xDD59, 0xDD59, 0x2497, 0xDD5A, 0xDD5D, 0x4CC0,
+ 0xDD5E, 0xDD5E, 0x1FB1, 0xDD5F, 0xDD5F, 0x4CC4, 0xDD60, 0xDD60, 0x249A,
+ 0xDD61, 0xDD61, 0x4CC5, 0xDD62, 0xDD62, 0x2499, 0xDD63, 0xDD63, 0x4CC6,
+ 0xDD64, 0xDD64, 0x2258, 0xDD65, 0xDD65, 0x2498, 0xDD66, 0xDD6C, 0x4CC7,
+ 0xDD6D, 0xDD6D, 0x249B, 0xDD6E, 0xDD6E, 0x4CCE, 0xDD6F, 0xDD6F, 0x1F09,
+ 0xDD70, 0xDD70, 0x20E6, 0xDD71, 0xDD75, 0x4CCF, 0xDD76, 0xDD76, 0x2026,
+ 0xDD77, 0xDD77, 0x249F, 0xDD78, 0xDD78, 0x1F59, 0xDD79, 0xDD7A, 0x249D,
+ 0xDD7B, 0xDD7E, 0x4CD4, 0xDD80, 0xDD80, 0x4CD8, 0xDD81, 0xDD81, 0x1F3B,
+ 0xDD82, 0xDD82, 0x249C, 0xDD83, 0xDD84, 0x4CD9, 0xDD85, 0xDD85, 0x1E3A,
+ 0xDD86, 0xDD86, 0x205B, 0xDD87, 0xDD8A, 0x4CDB, 0xDD8B, 0xDD8B, 0x1F70,
+ 0xDD8C, 0xDD8E, 0x4CDF, 0xDD8F, 0xDD8F, 0x24A0, 0xDD90, 0xDD93, 0x4CE2,
+ 0xDD94, 0xDD94, 0x213B, 0xDD95, 0xDD96, 0x4CE6, 0xDD97, 0xDD97, 0x1F07,
+ 0xDD98, 0xDD99, 0x4CE8, 0xDD9A, 0xDD9A, 0x2270, 0xDD9B, 0xDD9B, 0x2237,
+ 0xDD9C, 0xDD9D, 0x4CEA, 0xDD9E, 0xDD9E, 0x24D2, 0xDD9F, 0xDD9F, 0x4CEC,
+ 0xDDA0, 0xDDA0, 0x21B3, 0xDDA1, 0xDDFE, 0x142D, 0xDE40, 0xDE40, 0x2245,
+ 0xDE41, 0xDE41, 0x24A1, 0xDE42, 0xDE43, 0x4CED, 0xDE44, 0xDE44, 0x22A8,
+ 0xDE45, 0xDE47, 0x4CEF, 0xDE48, 0xDE48, 0x227C, 0xDE49, 0xDE49, 0x1FB0,
+ 0xDE4A, 0xDE4E, 0x4CF2, 0xDE4F, 0xDE4F, 0x24A2, 0xDE50, 0xDE59, 0x4CF7,
+ 0xDE5A, 0xDE5A, 0x1F46, 0xDE5B, 0xDE5B, 0x4D01, 0xDE5C, 0xDE5C, 0x2380,
+ 0xDE5D, 0xDE5D, 0x2495, 0xDE5E, 0xDE5E, 0x4D02, 0xDE5F, 0xDE5F, 0x2490,
+ 0xDE60, 0xDE6A, 0x4D03, 0xDE6B, 0xDE6B, 0x1E30, 0xDE6C, 0xDE6E, 0x4D0E,
+ 0xDE6F, 0xDE6F, 0x1E9D, 0xDE70, 0xDE70, 0x1E4B, 0xDE71, 0xDE71, 0x1E4A,
+ 0xDE72, 0xDE72, 0x20AA, 0xDE73, 0xDE7E, 0x4D11, 0xDE80, 0xDE91, 0x4D1D,
+ 0xDE92, 0xDE92, 0x267B, 0xDE93, 0xDE9E, 0x4D2F, 0xDE9F, 0xDE9F, 0x23F2,
+ 0xDEA0, 0xDEA0, 0x4D3B, 0xDEA1, 0xDEFE, 0x148B, 0xDF40, 0xDF40, 0x227E,
+ 0xDF41, 0xDF41, 0x4D3C, 0xDF42, 0xDF42, 0x2019, 0xDF43, 0xDF4C, 0x4D3D,
+ 0xDF4D, 0xDF4D, 0x1FBB, 0xDF4E, 0xDF5B, 0x4D47, 0xDF5C, 0xDF5C, 0x2253,
+ 0xDF5D, 0xDF5D, 0x4D55, 0xDF5E, 0xDF5E, 0x1F3E, 0xDF5F, 0xDF5F, 0x1EA6,
+ 0xDF60, 0xDF60, 0x218E, 0xDF61, 0xDF63, 0x4D56, 0xDF64, 0xDF64, 0x21EC,
+ 0xDF65, 0xDF65, 0x4D59, 0xDF66, 0xDF66, 0x1EBE, 0xDF67, 0xDF67, 0x4D5A,
+ 0xDF68, 0xDF68, 0x224A, 0xDF69, 0xDF6C, 0x4D5B, 0xDF6D, 0xDF6D, 0x2133,
+ 0xDF6E, 0xDF73, 0x4D5F, 0xDF74, 0xDF74, 0x1E84, 0xDF75, 0xDF76, 0x4D65,
+ 0xDF77, 0xDF77, 0x20CF, 0xDF78, 0xDF78, 0x21E2, 0xDF79, 0xDF79, 0x4D67,
+ 0xDF7A, 0xDF7A, 0x220F, 0xDF7B, 0xDF7B, 0x4D68, 0xDF7C, 0xDF7C, 0x2029,
+ 0xDF7D, 0xDF7D, 0x4D69, 0xDF7E, 0xDF7E, 0x2073, 0xDF80, 0xDF80, 0x1F55,
+ 0xDF81, 0xDF82, 0x4D6A, 0xDF83, 0xDF83, 0x23F1, 0xDF84, 0xDF84, 0x4D6C,
+ 0xDF85, 0xDF85, 0x1E46, 0xDF86, 0xDF88, 0x4D6D, 0xDF89, 0xDF89, 0x2063,
+ 0xDF8A, 0xDF8A, 0x23F3, 0xDF8B, 0xDFA0, 0x4D70, 0xDFA1, 0xDFFE, 0x14E9,
+ 0xE040, 0xE04F, 0x4D86, 0xE050, 0xE050, 0x231E, 0xE051, 0xE05C, 0x4D96,
+ 0xE05D, 0xE05D, 0x2233, 0xE05E, 0xE068, 0x4DA2, 0xE069, 0xE069, 0x2320,
+ 0xE06A, 0xE06B, 0x4DAD, 0xE06C, 0xE06C, 0x21C7, 0xE06D, 0xE074, 0x4DAF,
+ 0xE075, 0xE075, 0x22BC, 0xE076, 0xE076, 0x4DB7, 0xE077, 0xE077, 0x231C,
+ 0xE078, 0xE078, 0x4DB8, 0xE079, 0xE079, 0x2251, 0xE07A, 0xE07E, 0x4DB9,
+ 0xE080, 0xE086, 0x4DBE, 0xE087, 0xE087, 0x1EBB, 0xE088, 0xE08C, 0x4DC5,
+ 0xE08D, 0xE08D, 0x2287, 0xE08E, 0xE08E, 0x4DCA, 0xE08F, 0xE08F, 0x202D,
+ 0xE090, 0xE090, 0x1EAB, 0xE091, 0xE091, 0x4DCB, 0xE092, 0xE092, 0x231D,
+ 0xE093, 0xE093, 0x4DCC, 0xE094, 0xE094, 0x231F, 0xE095, 0xE096, 0x4DCD,
+ 0xE097, 0xE097, 0x231B, 0xE098, 0xE0A0, 0x4DCF, 0xE0A1, 0xE0FE, 0x1547,
+ 0xE140, 0xE141, 0x4DD8, 0xE142, 0xE142, 0x2321, 0xE143, 0xE163, 0x4DDA,
+ 0xE164, 0xE164, 0x2255, 0xE165, 0xE167, 0x4DFB, 0xE168, 0xE168, 0x1E8F,
+ 0xE169, 0xE173, 0x4DFE, 0xE174, 0xE174, 0x220C, 0xE175, 0xE175, 0x1FA4,
+ 0xE176, 0xE17E, 0x4E09, 0xE180, 0xE183, 0x4E12, 0xE184, 0xE184, 0x209B,
+ 0xE185, 0xE185, 0x21D8, 0xE186, 0xE186, 0x4E16, 0xE187, 0xE187, 0x25FA,
+ 0xE188, 0xE188, 0x4E17, 0xE189, 0xE189, 0x25F9, 0xE18A, 0xE18B, 0x4E18,
+ 0xE18C, 0xE18C, 0x2134, 0xE18D, 0xE18D, 0x4E1A, 0xE18E, 0xE190, 0x24F3,
+ 0xE191, 0xE191, 0x24F8, 0xE192, 0xE192, 0x4E1B, 0xE193, 0xE193, 0x24F7,
+ 0xE194, 0xE194, 0x1EC8, 0xE195, 0xE195, 0x24F6, 0xE196, 0xE197, 0x4E1C,
+ 0xE198, 0xE198, 0x2280, 0xE199, 0xE19D, 0x4E1E, 0xE19E, 0xE19E, 0x1EC5,
+ 0xE19F, 0xE19F, 0x24FB, 0xE1A0, 0xE1A0, 0x4E23, 0xE1A1, 0xE1FE, 0x15A5,
+ 0xE240, 0xE240, 0x4E24, 0xE241, 0xE241, 0x24FA, 0xE242, 0xE242, 0x4E25,
+ 0xE243, 0xE243, 0x1EED, 0xE244, 0xE24E, 0x4E26, 0xE24F, 0xE24F, 0x24FD,
+ 0xE250, 0xE250, 0x4E31, 0xE251, 0xE251, 0x24F9, 0xE252, 0xE252, 0x4E32,
+ 0xE253, 0xE253, 0x24FE, 0xE254, 0xE254, 0x20CD, 0xE255, 0xE259, 0x4E33,
+ 0xE25A, 0xE25A, 0x2508, 0xE25B, 0xE25B, 0x2504, 0xE25C, 0xE25D, 0x4E38,
+ 0xE25E, 0xE25E, 0x2506, 0xE25F, 0xE261, 0x4E3A, 0xE262, 0xE262, 0x24FF,
+ 0xE263, 0xE263, 0x2090, 0xE264, 0xE266, 0x4E3D, 0xE267, 0xE267, 0x1EDD,
+ 0xE268, 0xE268, 0x1F25, 0xE269, 0xE269, 0x4E40, 0xE26A, 0xE26A, 0x2503,
+ 0xE26B, 0xE26B, 0x2502, 0xE26C, 0xE26D, 0x4E41, 0xE26E, 0xE26E, 0x1E7A,
+ 0xE26F, 0xE26F, 0x20A6, 0xE270, 0xE277, 0x4E43, 0xE278, 0xE278, 0x1FD5,
+ 0xE279, 0xE27C, 0x4E4B, 0xE27D, 0xE27D, 0x1F11, 0xE27E, 0xE27E, 0x4E4F,
+ 0xE280, 0xE280, 0x2507, 0xE281, 0xE281, 0x2500, 0xE282, 0xE282, 0x2505,
+ 0xE283, 0xE288, 0x4E50, 0xE289, 0xE289, 0x2519, 0xE28A, 0xE28A, 0x4E56,
+ 0xE28B, 0xE28B, 0x2515, 0xE28C, 0xE28D, 0x4E57, 0xE28E, 0xE28E, 0x250C,
+ 0xE28F, 0xE28F, 0x2031, 0xE290, 0xE291, 0x4E59, 0xE292, 0xE292, 0x250B,
+ 0xE293, 0xE293, 0x250F, 0xE294, 0xE294, 0x251A, 0xE295, 0xE295, 0x2509,
+ 0xE296, 0xE297, 0x4E5B, 0xE298, 0xE298, 0x250E, 0xE299, 0xE299, 0x2234,
+ 0xE29A, 0xE29A, 0x2513, 0xE29B, 0xE29B, 0x1F80, 0xE29C, 0xE29F, 0x4E5D,
+ 0xE2A0, 0xE2A0, 0x2501, 0xE2A1, 0xE2FE, 0x1603, 0xE340, 0xE341, 0x4E61,
+ 0xE342, 0xE342, 0x2517, 0xE343, 0xE343, 0x2516, 0xE344, 0xE346, 0x4E63,
+ 0xE347, 0xE347, 0x2518, 0xE348, 0xE34A, 0x4E66, 0xE34B, 0xE34B, 0x1E56,
+ 0xE34C, 0xE34E, 0x4E69, 0xE34F, 0xE34F, 0x250D, 0xE350, 0xE350, 0x4E6C,
+ 0xE351, 0xE351, 0x20D3, 0xE352, 0xE353, 0x4E6D, 0xE354, 0xE354, 0x207A,
+ 0xE355, 0xE355, 0x20CE, 0xE356, 0xE357, 0x4E6F, 0xE358, 0xE358, 0x2510,
+ 0xE359, 0xE35B, 0x4E71, 0xE35C, 0xE35C, 0x1E55, 0xE35D, 0xE35F, 0x4E74,
+ 0xE360, 0xE360, 0x250A, 0xE361, 0xE365, 0x4E77, 0xE366, 0xE367, 0x2511,
+ 0xE368, 0xE370, 0x4E7C, 0xE371, 0xE371, 0x1FAA, 0xE372, 0xE372, 0x4E85,
+ 0xE373, 0xE373, 0x251E, 0xE374, 0xE374, 0x1F1F, 0xE375, 0xE377, 0x4E86,
+ 0xE378, 0xE378, 0x252D, 0xE379, 0xE379, 0x221D, 0xE37A, 0xE37B, 0x4E89,
+ 0xE37C, 0xE37C, 0x2532, 0xE37D, 0xE37D, 0x4E8B, 0xE37E, 0xE37E, 0x217B,
+ 0xE380, 0xE389, 0x4E8C, 0xE38A, 0xE38A, 0x21AF, 0xE38B, 0xE38B, 0x4E96,
+ 0xE38C, 0xE38C, 0x252C, 0xE38D, 0xE38E, 0x4E97, 0xE38F, 0xE38F, 0x2528,
+ 0xE390, 0xE390, 0x4E99, 0xE391, 0xE391, 0x208C, 0xE392, 0xE392, 0x4E9A,
+ 0xE393, 0xE393, 0x252F, 0xE394, 0xE394, 0x4E9B, 0xE395, 0xE395, 0x21BC,
+ 0xE396, 0xE398, 0x4E9C, 0xE399, 0xE399, 0x251D, 0xE39A, 0xE39B, 0x4E9F,
+ 0xE39C, 0xE39C, 0x2535, 0xE39D, 0xE39D, 0x4EA1, 0xE39E, 0xE39E, 0x220D,
+ 0xE39F, 0xE39F, 0x2526, 0xE3A0, 0xE3A0, 0x4EA2, 0xE3A1, 0xE3FE, 0x1661,
+ 0xE440, 0xE440, 0x2534, 0xE441, 0xE441, 0x252A, 0xE442, 0xE442, 0x251F,
+ 0xE443, 0xE443, 0x2531, 0xE444, 0xE444, 0x251C, 0xE445, 0xE447, 0x4EA3,
+ 0xE448, 0xE448, 0x2525, 0xE449, 0xE44D, 0x4EA6, 0xE44E, 0xE44E, 0x21CD,
+ 0xE44F, 0xE44F, 0x4EAB, 0xE450, 0xE450, 0x21DA, 0xE451, 0xE451, 0x4EAC,
+ 0xE452, 0xE452, 0x2172, 0xE453, 0xE453, 0x253E, 0xE454, 0xE457, 0x4EAD,
+ 0xE458, 0xE458, 0x204F, 0xE459, 0xE459, 0x4EB1, 0xE45A, 0xE45A, 0x2543,
+ 0xE45B, 0xE45B, 0x4EB2, 0xE45C, 0xE45C, 0x21D7, 0xE45D, 0xE45D, 0x4EB3,
+ 0xE45E, 0xE45E, 0x1E3C, 0xE45F, 0xE461, 0x4EB4, 0xE462, 0xE462, 0x2529,
+ 0xE463, 0xE464, 0x4EB7, 0xE465, 0xE465, 0x2521, 0xE466, 0xE467, 0x4EB9,
+ 0xE468, 0xE468, 0x1EFF, 0xE469, 0xE472, 0x4EBB, 0xE473, 0xE473, 0x253F,
+ 0xE474, 0xE474, 0x4EC5, 0xE475, 0xE475, 0x2544, 0xE476, 0xE478, 0x4EC6,
+ 0xE479, 0xE479, 0x2523, 0xE47A, 0xE47A, 0x1E90, 0xE47B, 0xE47B, 0x253A,
+ 0xE47C, 0xE47C, 0x2545, 0xE47D, 0xE47D, 0x4EC9, 0xE47E, 0xE47E, 0x253D,
+ 0xE480, 0xE480, 0x4ECA, 0xE481, 0xE481, 0x20C1, 0xE482, 0xE483, 0x4ECB,
+ 0xE484, 0xE484, 0x2103, 0xE485, 0xE485, 0x2520, 0xE486, 0xE486, 0x253C,
+ 0xE487, 0xE487, 0x253B, 0xE488, 0xE488, 0x2538, 0xE489, 0xE48C, 0x4ECD,
+ 0xE48D, 0xE48D, 0x2540, 0xE48E, 0xE48E, 0x4ED1, 0xE48F, 0xE48F, 0x1FCD,
+ 0xE490, 0xE492, 0x4ED2, 0xE493, 0xE493, 0x1F18, 0xE494, 0xE497, 0x4ED5,
+ 0xE498, 0xE498, 0x254B, 0xE499, 0xE49C, 0x4ED9, 0xE49D, 0xE49D, 0x2547,
+ 0xE49E, 0xE49F, 0x254F, 0xE4A0, 0xE4A0, 0x4EDD, 0xE4A1, 0xE4FE, 0x16BF,
+ 0xE540, 0xE545, 0x4EDE, 0xE546, 0xE546, 0x22B0, 0xE547, 0xE547, 0x4EE4,
+ 0xE548, 0xE548, 0x2546, 0xE549, 0xE54A, 0x4EE5, 0xE54B, 0xE54B, 0x254C,
+ 0xE54C, 0xE54D, 0x4EE7, 0xE54E, 0xE54E, 0x1E9A, 0xE54F, 0xE54F, 0x2552,
+ 0xE550, 0xE550, 0x2530, 0xE551, 0xE551, 0x2549, 0xE552, 0xE554, 0x4EE9,
+ 0xE555, 0xE555, 0x2551, 0xE556, 0xE556, 0x1ECA, 0xE557, 0xE557, 0x4EEC,
+ 0xE558, 0xE558, 0x20D2, 0xE559, 0xE55B, 0x4EED, 0xE55C, 0xE55C, 0x1FB8,
+ 0xE55D, 0xE55D, 0x4EF0, 0xE55E, 0xE55E, 0x2079, 0xE55F, 0xE560, 0x4EF1,
+ 0xE561, 0xE561, 0x21AB, 0xE562, 0xE563, 0x4EF3, 0xE564, 0xE564, 0x254D,
+ 0xE565, 0xE565, 0x1EA5, 0xE566, 0xE567, 0x4EF5, 0xE568, 0xE568, 0x204C,
+ 0xE569, 0xE569, 0x2080, 0xE56A, 0xE56B, 0x4EF7, 0xE56C, 0xE56C, 0x266D,
+ 0xE56D, 0xE56D, 0x4EF9, 0xE56E, 0xE56E, 0x2537, 0xE56F, 0xE574, 0x4EFA,
+ 0xE575, 0xE575, 0x254A, 0xE576, 0xE576, 0x21B8, 0xE577, 0xE577, 0x4F00,
+ 0xE578, 0xE578, 0x254E, 0xE579, 0xE57A, 0x4F01, 0xE57B, 0xE57B, 0x24FC,
+ 0xE57C, 0xE57C, 0x2554, 0xE57D, 0xE57E, 0x4F03, 0xE580, 0xE580, 0x4F05,
+ 0xE581, 0xE581, 0x1F3C, 0xE582, 0xE582, 0x4F06, 0xE583, 0xE583, 0x1ED5,
+ 0xE584, 0xE589, 0x4F07, 0xE58A, 0xE58A, 0x2556, 0xE58B, 0xE58D, 0x4F0D,
+ 0xE58E, 0xE58E, 0x2268, 0xE58F, 0xE590, 0x4F10, 0xE591, 0xE591, 0x1ED6,
+ 0xE592, 0xE599, 0x4F12, 0xE59A, 0xE59A, 0x2557, 0xE59B, 0xE59B, 0x2553,
+ 0xE59C, 0xE59E, 0x4F1A, 0xE59F, 0xE59F, 0x2548, 0xE5A0, 0xE5A0, 0x4F1D,
+ 0xE5A1, 0xE5FE, 0x171D, 0xE640, 0xE640, 0x20DC, 0xE641, 0xE643, 0x4F1E,
+ 0xE644, 0xE644, 0x2559, 0xE645, 0xE648, 0x4F21, 0xE649, 0xE649, 0x1F97,
+ 0xE64A, 0xE64A, 0x2555, 0xE64B, 0xE64D, 0x4F25, 0xE64E, 0xE64E, 0x227D,
+ 0xE64F, 0xE651, 0x4F28, 0xE652, 0xE652, 0x257E, 0xE653, 0xE655, 0x4F2B,
+ 0xE656, 0xE656, 0x207C, 0xE657, 0xE657, 0x4F2E, 0xE658, 0xE658, 0x255A,
+ 0xE659, 0xE65A, 0x4F2F, 0xE65B, 0xE65B, 0x255E, 0xE65C, 0xE65D, 0x4F31,
+ 0xE65E, 0xE65E, 0x1E34, 0xE65F, 0xE668, 0x4F33, 0xE669, 0xE669, 0x215E,
+ 0xE66A, 0xE66A, 0x4F3D, 0xE66B, 0xE66B, 0x2560, 0xE66C, 0xE674, 0x4F3E,
+ 0xE675, 0xE675, 0x21A2, 0xE676, 0xE676, 0x2354, 0xE677, 0xE678, 0x4F47,
+ 0xE679, 0xE679, 0x2563, 0xE67A, 0xE67A, 0x2527, 0xE67B, 0xE67B, 0x4F49,
+ 0xE67C, 0xE67C, 0x252E, 0xE67D, 0xE67D, 0x2558, 0xE67E, 0xE67E, 0x4F4A,
+ 0xE680, 0xE680, 0x1F1B, 0xE681, 0xE681, 0x4F4B, 0xE682, 0xE682, 0x2283,
+ 0xE683, 0xE683, 0x4F4C, 0xE684, 0xE684, 0x2564, 0xE685, 0xE686, 0x4F4D,
+ 0xE687, 0xE687, 0x20A0, 0xE688, 0xE688, 0x4F4F, 0xE689, 0xE689, 0x2565,
+ 0xE68A, 0xE68B, 0x4F50, 0xE68C, 0xE68C, 0x2561, 0xE68D, 0xE692, 0x4F52,
+ 0xE693, 0xE693, 0x2562, 0xE694, 0xE696, 0x4F58, 0xE697, 0xE697, 0x256C,
+ 0xE698, 0xE69A, 0x4F5B, 0xE69B, 0xE69B, 0x256D, 0xE69C, 0xE69C, 0x2020,
+ 0xE69D, 0xE69E, 0x4F5E, 0xE69F, 0xE69F, 0x255F, 0xE6A0, 0xE6A0, 0x256A,
+ 0xE6A1, 0xE6FE, 0x177B, 0xE740, 0xE742, 0x4F60, 0xE743, 0xE743, 0x256E,
+ 0xE744, 0xE747, 0x4F63, 0xE748, 0xE748, 0x2539, 0xE749, 0xE749, 0x255C,
+ 0xE74A, 0xE74C, 0x4F67, 0xE74D, 0xE74E, 0x2568, 0xE74F, 0xE74F, 0x256B,
+ 0xE750, 0xE750, 0x1E6F, 0xE751, 0xE751, 0x4F6A, 0xE752, 0xE752, 0x1FC4,
+ 0xE753, 0xE753, 0x2567, 0xE754, 0xE754, 0x4F6B, 0xE755, 0xE755, 0x255B,
+ 0xE756, 0xE758, 0x4F6C, 0xE759, 0xE759, 0x261D, 0xE75A, 0xE765, 0x4F6F,
+ 0xE766, 0xE766, 0x252B, 0xE767, 0xE767, 0x4F7B, 0xE768, 0xE768, 0x2571,
+ 0xE769, 0xE769, 0x4F7C, 0xE76A, 0xE76A, 0x2577, 0xE76B, 0xE773, 0x4F7D,
+ 0xE774, 0xE774, 0x2522, 0xE775, 0xE77B, 0x4F86, 0xE77C, 0xE77C, 0x2533,
+ 0xE77D, 0xE77E, 0x4F8D, 0xE780, 0xE781, 0x4F8F, 0xE782, 0xE782, 0x202A,
+ 0xE783, 0xE783, 0x4F91, 0xE784, 0xE784, 0x2536, 0xE785, 0xE785, 0x2573,
+ 0xE786, 0xE786, 0x256F, 0xE787, 0xE789, 0x4F92, 0xE78A, 0xE78A, 0x2293,
+ 0xE78B, 0xE78B, 0x2578, 0xE78C, 0xE78E, 0x4F95, 0xE78F, 0xE78F, 0x2570,
+ 0xE790, 0xE791, 0x4F98, 0xE792, 0xE792, 0x2575, 0xE793, 0xE797, 0x4F9A,
+ 0xE798, 0xE799, 0x2541, 0xE79A, 0xE79A, 0x255D, 0xE79B, 0xE79F, 0x4F9F,
+ 0xE7A0, 0xE7A0, 0x201A, 0xE7A1, 0xE7FE, 0x17D9, 0xE840, 0xE842, 0x4FA4,
+ 0xE843, 0xE843, 0x257A, 0xE844, 0xE844, 0x2006, 0xE845, 0xE845, 0x4FA7,
+ 0xE846, 0xE846, 0x2177, 0xE847, 0xE848, 0x4FA8, 0xE849, 0xE849, 0x251B,
+ 0xE84A, 0xE84A, 0x4FAA, 0xE84B, 0xE84B, 0x2524, 0xE84C, 0xE84E, 0x4FAB,
+ 0xE84F, 0xE84F, 0x257B, 0xE850, 0xE853, 0x4FAE, 0xE854, 0xE854, 0x22A3,
+ 0xE855, 0xE859, 0x4FB2, 0xE85A, 0xE85A, 0x2579, 0xE85B, 0xE85B, 0x4FB7,
+ 0xE85C, 0xE85C, 0x2566, 0xE85D, 0xE861, 0x4FB8, 0xE862, 0xE862, 0x1F93,
+ 0xE863, 0xE863, 0x4FBD, 0xE864, 0xE864, 0x257C, 0xE865, 0xE86F, 0x4FBE,
+ 0xE870, 0xE870, 0x2514, 0xE871, 0xE872, 0x4FC9, 0xE873, 0xE873, 0x257D,
+ 0xE874, 0xE874, 0x4FCB, 0xE875, 0xE875, 0x2572, 0xE876, 0xE87B, 0x4FCC,
+ 0xE87C, 0xE87C, 0x2574, 0xE87D, 0xE87E, 0x4FD2, 0xE880, 0xE880, 0x224E,
+ 0xE881, 0xE881, 0x4FD4, 0xE882, 0xE882, 0x21C6, 0xE883, 0xE886, 0x4FD5,
+ 0xE887, 0xE887, 0x209F, 0xE888, 0xE888, 0x4FD9, 0xE889, 0xE889, 0x2576,
+ 0xE88A, 0xE88B, 0x4FDA, 0xE88C, 0xE88C, 0x2064, 0xE88D, 0xE88D, 0x22BF,
+ 0xE88E, 0xE88E, 0x261C, 0xE88F, 0xE88F, 0x225E, 0xE890, 0xE8A0, 0x4FDC,
+ 0xE8A1, 0xE8FE, 0x1837, 0xE940, 0xE94B, 0x4FED, 0xE94C, 0xE94C, 0x1E75,
+ 0xE94D, 0xE953, 0x4FF9, 0xE954, 0xE954, 0x207D, 0xE955, 0xE955, 0x5000,
+ 0xE956, 0xE956, 0x23BF, 0xE957, 0xE957, 0x2113, 0xE958, 0xE959, 0x5001,
+ 0xE95A, 0xE95A, 0x23C0, 0xE95B, 0xE95C, 0x5003, 0xE95D, 0xE95D, 0x1E45,
+ 0xE95E, 0xE95E, 0x5005, 0xE95F, 0xE95F, 0x1FD8, 0xE960, 0xE960, 0x23C4,
+ 0xE961, 0xE961, 0x5006, 0xE962, 0xE962, 0x23C2, 0xE963, 0xE963, 0x2104,
+ 0xE964, 0xE964, 0x5007, 0xE965, 0xE965, 0x21BD, 0xE966, 0xE966, 0x5008,
+ 0xE967, 0xE967, 0x1F87, 0xE968, 0xE968, 0x23C3, 0xE969, 0xE96B, 0x5009,
+ 0xE96C, 0xE96C, 0x2269, 0xE96D, 0xE974, 0x500C, 0xE975, 0xE975, 0x1F43,
+ 0xE976, 0xE976, 0x5014, 0xE977, 0xE977, 0x1F1E, 0xE978, 0xE978, 0x2679,
+ 0xE979, 0xE979, 0x1EEB, 0xE97A, 0xE97B, 0x5015, 0xE97C, 0xE97C, 0x1F35,
+ 0xE97D, 0xE97D, 0x208A, 0xE97E, 0xE97E, 0x5017, 0xE980, 0xE980, 0x23C7,
+ 0xE981, 0xE981, 0x23C9, 0xE982, 0xE982, 0x23C6, 0xE983, 0xE986, 0x5018,
+ 0xE987, 0xE987, 0x224F, 0xE988, 0xE98A, 0x501C, 0xE98B, 0xE98B, 0x23CB,
+ 0xE98C, 0xE98D, 0x501F, 0xE98E, 0xE98E, 0x21F3, 0xE98F, 0xE98F, 0x5021,
+ 0xE990, 0xE990, 0x21F7, 0xE991, 0xE991, 0x23CF, 0xE992, 0xE992, 0x23CE,
+ 0xE993, 0xE993, 0x23CA, 0xE994, 0xE994, 0x23CD, 0xE995, 0xE997, 0x5022,
+ 0xE998, 0xE998, 0x23D0, 0xE999, 0xE99A, 0x5025, 0xE99B, 0xE99B, 0x266C,
+ 0xE99C, 0xE99C, 0x5027, 0xE99D, 0xE99D, 0x23C1, 0xE99E, 0xE99E, 0x5028,
+ 0xE99F, 0xE99F, 0x1FEE, 0xE9A0, 0xE9A0, 0x23D1, 0xE9A1, 0xE9FE, 0x1895,
+ 0xEA40, 0xEA40, 0x1FF8, 0xEA41, 0xEA43, 0x5029, 0xEA44, 0xEA44, 0x23D3,
+ 0xEA45, 0xEA47, 0x502C, 0xEA48, 0xEA48, 0x23D2, 0xEA49, 0xEA49, 0x23D4,
+ 0xEA4A, 0xEA4A, 0x1E98, 0xEA4B, 0xEA4F, 0x502F, 0xEA50, 0xEA50, 0x1F2C,
+ 0xEA51, 0xEA51, 0x5034, 0xEA52, 0xEA52, 0x23D5, 0xEA53, 0xEA54, 0x5035,
+ 0xEA55, 0xEA55, 0x1E71, 0xEA56, 0xEA56, 0x2691, 0xEA57, 0xEA58, 0x5037,
+ 0xEA59, 0xEA59, 0x23C5, 0xEA5A, 0xEA7E, 0x5039, 0xEA80, 0xEA80, 0x231A,
+ 0xEA81, 0xEA83, 0x505E, 0xEA84, 0xEA84, 0x2114, 0xEA85, 0xEA86, 0x5061,
+ 0xEA87, 0xEA87, 0x2284, 0xEA88, 0xEA8D, 0x5063, 0xEA8E, 0xEA8E, 0x221C,
+ 0xEA8F, 0xEA8F, 0x5069, 0xEA90, 0xEA90, 0x1E7E, 0xEA91, 0xEA91, 0x204D,
+ 0xEA92, 0xEA95, 0x506A, 0xEA96, 0xEA96, 0x2201, 0xEA97, 0xEA9F, 0x506E,
+ 0xEAA0, 0xEAA0, 0x1ED9, 0xEAA1, 0xEAFE, 0x18F3, 0xEB40, 0xEB40, 0x5077,
+ 0xEB41, 0xEB41, 0x1FB2, 0xEB42, 0xEB44, 0x5078, 0xEB45, 0xEB45, 0x2252,
+ 0xEB46, 0xEB47, 0x507B, 0xEB48, 0xEB48, 0x1F79, 0xEB49, 0xEB52, 0x507D,
+ 0xEB53, 0xEB53, 0x2157, 0xEB54, 0xEB54, 0x5087, 0xEB55, 0xEB55, 0x21BF,
+ 0xEB56, 0xEB5A, 0x5088, 0xEB5B, 0xEB5B, 0x221F, 0xEB5C, 0xEB5C, 0x508D,
+ 0xEB5D, 0xEB5D, 0x203D, 0xEB5E, 0xEB5F, 0x508E, 0xEB60, 0xEB60, 0x2015,
+ 0xEB61, 0xEB61, 0x5090, 0xEB62, 0xEB62, 0x26A5, 0xEB63, 0xEB6C, 0x5091,
+ 0xEB6D, 0xEB6D, 0x2156, 0xEB6E, 0xEB6F, 0x509B, 0xEB70, 0xEB70, 0x2144,
+ 0xEB71, 0xEB71, 0x509D, 0xEB72, 0xEB72, 0x1E91, 0xEB73, 0xEB73, 0x2257,
+ 0xEB74, 0xEB77, 0x509E, 0xEB78, 0xEB78, 0x200A, 0xEB79, 0xEB79, 0x2092,
+ 0xEB7A, 0xEB7E, 0x50A2, 0xEB80, 0xEB84, 0x50A7, 0xEB85, 0xEB85, 0x2250,
+ 0xEB86, 0xEB89, 0x50AC, 0xEB8A, 0xEB8A, 0x1EC3, 0xEB8B, 0xEBA0, 0x50B0,
+ 0xEBA1, 0xEBFE, 0x1951, 0xEC40, 0xEC45, 0x50C6, 0xEC46, 0xEC46, 0x21A8,
+ 0xEC47, 0xEC55, 0x50CC, 0xEC56, 0xEC56, 0x260D, 0xEC57, 0xEC59, 0x50DB,
+ 0xEC5A, 0xEC5A, 0x260C, 0xEC5B, 0xEC5B, 0x50DE, 0xEC5C, 0xEC5C, 0x260E,
+ 0xEC5D, 0xEC5F, 0x50DF, 0xEC60, 0xEC60, 0x2032, 0xEC61, 0xEC6D, 0x50E2,
+ 0xEC6E, 0xEC6E, 0x260B, 0xEC6F, 0xEC75, 0x50EF, 0xEC76, 0xEC76, 0x22C3,
+ 0xEC77, 0xEC7E, 0x50F6, 0xEC80, 0xEC95, 0x50FE, 0xEC96, 0xEC96, 0x1F23,
+ 0xEC97, 0xECA0, 0x5114, 0xECA1, 0xECFE, 0x19AF, 0xED40, 0xED45, 0x511E,
+ 0xED46, 0xED46, 0x2695, 0xED47, 0xED57, 0x5124, 0xED58, 0xED58, 0x265E,
+ 0xED59, 0xED5D, 0x5135, 0xED5E, 0xED5E, 0x265D, 0xED5F, 0xED60, 0x513A,
+ 0xED61, 0xED61, 0x2692, 0xED62, 0xED63, 0x513C, 0xED64, 0xED64, 0x265F,
+ 0xED65, 0xED65, 0x513E, 0xED66, 0xED66, 0x218D, 0xED67, 0xED67, 0x20FD,
+ 0xED68, 0xED6D, 0x513F, 0xED6E, 0xED6E, 0x1F40, 0xED6F, 0xED73, 0x5145,
+ 0xED74, 0xED74, 0x2465, 0xED75, 0xED76, 0x514A, 0xED77, 0xED77, 0x2467,
+ 0xED78, 0xED78, 0x514C, 0xED79, 0xED79, 0x2466, 0xED7A, 0xED7E, 0x514D,
+ 0xED80, 0xED90, 0x5152, 0xED91, 0xED91, 0x21C9, 0xED92, 0xED92, 0x5163,
+ 0xED93, 0xED93, 0x2209, 0xED94, 0xED94, 0x1EC9, 0xED95, 0xED95, 0x20E9,
+ 0xED96, 0xED96, 0x5164, 0xED97, 0xED97, 0x21CA, 0xED98, 0xED98, 0x2146,
+ 0xED99, 0xED99, 0x25C5, 0xED9A, 0xED9A, 0x21DC, 0xED9B, 0xED9B, 0x5165,
+ 0xED9C, 0xED9C, 0x245E, 0xED9D, 0xED9D, 0x5166, 0xED9E, 0xED9E, 0x214F,
+ 0xED9F, 0xED9F, 0x5167, 0xEDA0, 0xEDA0, 0x25C6, 0xEDA1, 0xEDFE, 0x1A0D,
+ 0xEE40, 0xEE40, 0x25C7, 0xEE41, 0xEE41, 0x2241, 0xEE42, 0xEE42, 0x218A,
+ 0xEE43, 0xEE43, 0x1E2F, 0xEE44, 0xEE44, 0x1EDC, 0xEE45, 0xEE47, 0x5168,
+ 0xEE48, 0xEE48, 0x20BF, 0xEE49, 0xEE49, 0x2034, 0xEE4A, 0xEE4C, 0x516B,
+ 0xEE4D, 0xEE4D, 0x25C9, 0xEE4E, 0xEE51, 0x516E, 0xEE52, 0xEE52, 0x25C8,
+ 0xEE53, 0xEE54, 0x5172, 0xEE55, 0xEE55, 0x220E, 0xEE56, 0xEE56, 0x5174,
+ 0xEE57, 0xEE57, 0x25CB, 0xEE58, 0xEE5D, 0x5175, 0xEE5E, 0xEE5E, 0x217D,
+ 0xEE5F, 0xEE60, 0x517B, 0xEE61, 0xEE61, 0x1F7E, 0xEE62, 0xEE67, 0x517D,
+ 0xEE68, 0xEE68, 0x25CC, 0xEE69, 0xEE69, 0x1FC3, 0xEE6A, 0xEE6B, 0x5183,
+ 0xEE6C, 0xEE6C, 0x20B9, 0xEE6D, 0xEE6D, 0x5185, 0xEE6E, 0xEE6E, 0x2181,
+ 0xEE6F, 0xEE76, 0x5186, 0xEE77, 0xEE77, 0x1FDA, 0xEE78, 0xEE7C, 0x518E,
+ 0xEE7D, 0xEE7D, 0x2173, 0xEE7E, 0xEE7E, 0x1EE1, 0xEE80, 0xEE80, 0x25CD,
+ 0xEE81, 0xEE84, 0x5193, 0xEE85, 0xEE85, 0x25CE, 0xEE86, 0xEE86, 0x21F6,
+ 0xEE87, 0xEE89, 0x5197, 0xEE8A, 0xEE8A, 0x224B, 0xEE8B, 0xEE8B, 0x25D1,
+ 0xEE8C, 0xEE8C, 0x519A, 0xEE8D, 0xEE8D, 0x1EC0, 0xEE8E, 0xEE8F, 0x519B,
+ 0xEE90, 0xEE90, 0x2008, 0xEE91, 0xEE93, 0x519D, 0xEE94, 0xEE94, 0x25D0,
+ 0xEE95, 0xEE96, 0x51A0, 0xEE97, 0xEE97, 0x25D2, 0xEE98, 0xEE98, 0x51A2,
+ 0xEE99, 0xEE99, 0x1F2A, 0xEE9A, 0xEE9C, 0x51A3, 0xEE9D, 0xEE9D, 0x1E72,
+ 0xEE9E, 0xEE9E, 0x25D3, 0xEE9F, 0xEEA0, 0x51A6, 0xEEA1, 0xEEFE, 0x1A6B,
+ 0xEF40, 0xEF40, 0x21BE, 0xEF41, 0xEF41, 0x25D4, 0xEF42, 0xEF42, 0x2044,
+ 0xEF43, 0xEF43, 0x51A8, 0xEF44, 0xEF44, 0x25CF, 0xEF45, 0xEF45, 0x20F3,
+ 0xEF46, 0xEF4B, 0x51A9, 0xEF4C, 0xEF4C, 0x1F00, 0xEF4D, 0xEF51, 0x51AF,
+ 0xEF52, 0xEF53, 0x24CC, 0xEF54, 0xEF54, 0x51B4, 0xEF55, 0xEF55, 0x2698,
+ 0xEF56, 0xEF56, 0x51B5, 0xEF57, 0xEF57, 0x2678, 0xEF58, 0xEF59, 0x51B6,
+ 0xEF5A, 0xEF5A, 0x24CE, 0xEF5B, 0xEF5F, 0x51B8, 0xEF60, 0xEF60, 0x24CF,
+ 0xEF61, 0xEF67, 0x51BD, 0xEF68, 0xEF68, 0x20B8, 0xEF69, 0xEF69, 0x51C4,
+ 0xEF6A, 0xEF6A, 0x24D0, 0xEF6B, 0xEF6B, 0x51C5, 0xEF6C, 0xEF6C, 0x24D1,
+ 0xEF6D, 0xEF76, 0x51C6, 0xEF77, 0xEF77, 0x1EF4, 0xEF78, 0xEF79, 0x51D0,
+ 0xEF7A, 0xEF7A, 0x239B, 0xEF7B, 0xEF7B, 0x51D2, 0xEF7C, 0xEF7C, 0x267E,
+ 0xEF7D, 0xEF7E, 0x51D3, 0xEF80, 0xEF81, 0x51D5, 0xEF82, 0xEF82, 0x239D,
+ 0xEF83, 0xEF84, 0x239F, 0xEF85, 0xEF85, 0x51D7, 0xEF86, 0xEF86, 0x23A1,
+ 0xEF87, 0xEF87, 0x51D8, 0xEF88, 0xEF88, 0x1EF1, 0xEF89, 0xEF8A, 0x51D9,
+ 0xEF8B, 0xEF8B, 0x221E, 0xEF8C, 0xEF8C, 0x51DB, 0xEF8D, 0xEF8D, 0x23A2,
+ 0xEF8E, 0xEF94, 0x51DC, 0xEF95, 0xEF95, 0x214B, 0xEF96, 0xEF96, 0x1E36,
+ 0xEF97, 0xEF97, 0x2135, 0xEF98, 0xEF9B, 0x51E3, 0xEF9C, 0xEF9C, 0x1FAD,
+ 0xEF9D, 0xEF9D, 0x51E7, 0xEF9E, 0xEF9E, 0x1E53, 0xEF9F, 0xEFA0, 0x51E8,
+ 0xEFA1, 0xEFFE, 0x1AC9, 0xF040, 0xF040, 0x51EA, 0xF041, 0xF041, 0x23A3,
+ 0xF042, 0xF042, 0x2203, 0xF043, 0xF043, 0x51EB, 0xF044, 0xF044, 0x1EE7,
+ 0xF045, 0xF046, 0x51EC, 0xF047, 0xF047, 0x23A4, 0xF048, 0xF048, 0x2097,
+ 0xF049, 0xF049, 0x1EE4, 0xF04A, 0xF04D, 0x51EE, 0xF04E, 0xF04E, 0x2238,
+ 0xF04F, 0xF050, 0x51F2, 0xF051, 0xF051, 0x23A5, 0xF052, 0xF053, 0x51F4,
+ 0xF054, 0xF054, 0x1F9A, 0xF055, 0xF056, 0x51F6, 0xF057, 0xF057, 0x21C3,
+ 0xF058, 0xF05D, 0x51F8, 0xF05E, 0xF05E, 0x1F2E, 0xF05F, 0xF067, 0x51FE,
+ 0xF068, 0xF068, 0x239C, 0xF069, 0xF06B, 0x5207, 0xF06C, 0xF06C, 0x23A6,
+ 0xF06D, 0xF070, 0x520A, 0xF071, 0xF071, 0x239E, 0xF072, 0xF072, 0x520E,
+ 0xF073, 0xF073, 0x2035, 0xF074, 0xF074, 0x23A7, 0xF075, 0xF077, 0x520F,
+ 0xF078, 0xF078, 0x23A8, 0xF079, 0xF079, 0x5212, 0xF07A, 0xF07A, 0x2075,
+ 0xF07B, 0xF07C, 0x5213, 0xF07D, 0xF07E, 0x23A9, 0xF080, 0xF080, 0x23AB,
+ 0xF081, 0xF081, 0x1FEB, 0xF082, 0xF082, 0x23AC, 0xF083, 0xF086, 0x5215,
+ 0xF087, 0xF087, 0x1F6A, 0xF088, 0xF088, 0x20F9, 0xF089, 0xF08A, 0x5219,
+ 0xF08B, 0xF08B, 0x2666, 0xF08C, 0xF08F, 0x521B, 0xF090, 0xF090, 0x2667,
+ 0xF091, 0xF091, 0x521F, 0xF092, 0xF092, 0x1E6C, 0xF093, 0xF095, 0x5220,
+ 0xF096, 0xF096, 0x23AD, 0xF097, 0xF0A0, 0x5223, 0xF0A1, 0xF0FE, 0x1B27,
+ 0xF140, 0xF151, 0x522D, 0xF152, 0xF152, 0x206D, 0xF153, 0xF153, 0x2242,
+ 0xF154, 0xF154, 0x1F02, 0xF155, 0xF156, 0x523F, 0xF157, 0xF157, 0x2183,
+ 0xF158, 0xF158, 0x5241, 0xF159, 0xF159, 0x1E85, 0xF15A, 0xF15A, 0x21E9,
+ 0xF15B, 0xF166, 0x5242, 0xF167, 0xF167, 0x1E57, 0xF168, 0xF175, 0x524E,
+ 0xF176, 0xF176, 0x22A5, 0xF177, 0xF177, 0x2407, 0xF178, 0xF178, 0x1FCA,
+ 0xF179, 0xF179, 0x525C, 0xF17A, 0xF17A, 0x2402, 0xF17B, 0xF17B, 0x1F82,
+ 0xF17C, 0xF17D, 0x525D, 0xF17E, 0xF17E, 0x2408, 0xF180, 0xF180, 0x2404,
+ 0xF181, 0xF181, 0x525F, 0xF182, 0xF182, 0x2131, 0xF183, 0xF183, 0x5260,
+ 0xF184, 0xF184, 0x2184, 0xF185, 0xF185, 0x5261, 0xF186, 0xF186, 0x2403,
+ 0xF187, 0xF187, 0x5262, 0xF188, 0xF188, 0x206E, 0xF189, 0xF189, 0x240B,
+ 0xF18A, 0xF193, 0x5263, 0xF194, 0xF194, 0x1F3F, 0xF195, 0xF197, 0x526D,
+ 0xF198, 0xF198, 0x2067, 0xF199, 0xF1A0, 0x5270, 0xF1A1, 0xF1FE, 0x1B85,
+ 0xF240, 0xF244, 0x5278, 0xF245, 0xF245, 0x1FD7, 0xF246, 0xF246, 0x527D,
+ 0xF247, 0xF247, 0x1E83, 0xF248, 0xF24A, 0x527E, 0xF24B, 0xF24B, 0x240F,
+ 0xF24C, 0xF252, 0x5281, 0xF253, 0xF253, 0x240E, 0xF254, 0xF254, 0x20C7,
+ 0xF255, 0xF255, 0x240D, 0xF256, 0xF25B, 0x5288, 0xF25C, 0xF25C, 0x2412,
+ 0xF25D, 0xF25E, 0x528E, 0xF25F, 0xF25F, 0x20B7, 0xF260, 0xF270, 0x5290,
+ 0xF271, 0xF271, 0x23F0, 0xF272, 0xF272, 0x52A1, 0xF273, 0xF273, 0x2411,
+ 0xF274, 0xF274, 0x2414, 0xF275, 0xF275, 0x52A2, 0xF276, 0xF276, 0x2170,
+ 0xF277, 0xF27B, 0x52A3, 0xF27C, 0xF27C, 0x2405, 0xF27D, 0xF27D, 0x210C,
+ 0xF27E, 0xF27E, 0x2415, 0xF280, 0xF284, 0x52A8, 0xF285, 0xF285, 0x2066,
+ 0xF286, 0xF286, 0x52AD, 0xF287, 0xF287, 0x2352, 0xF288, 0xF288, 0x2413,
+ 0xF289, 0xF289, 0x2410, 0xF28A, 0xF28B, 0x2416, 0xF28C, 0xF28C, 0x20F1,
+ 0xF28D, 0xF290, 0x52AE, 0xF291, 0xF291, 0x240A, 0xF292, 0xF293, 0x52B2,
+ 0xF294, 0xF294, 0x2409, 0xF295, 0xF295, 0x52B4, 0xF296, 0xF296, 0x2418,
+ 0xF297, 0xF29B, 0x52B5, 0xF29C, 0xF29C, 0x1FA7, 0xF29D, 0xF29D, 0x52BA,
+ 0xF29E, 0xF29E, 0x21FC, 0xF29F, 0xF2A0, 0x52BB, 0xF2A1, 0xF2FE, 0x1BE3,
+ 0xF340, 0xF340, 0x1FC1, 0xF341, 0xF341, 0x2406, 0xF342, 0xF344, 0x52BD,
+ 0xF345, 0xF345, 0x229C, 0xF346, 0xF347, 0x52C0, 0xF348, 0xF348, 0x204E,
+ 0xF349, 0xF349, 0x52C2, 0xF34A, 0xF34A, 0x241A, 0xF34B, 0xF34B, 0x2419,
+ 0xF34C, 0xF34F, 0x52C3, 0xF350, 0xF350, 0x240C, 0xF351, 0xF360, 0x52C7,
+ 0xF361, 0xF361, 0x1E29, 0xF362, 0xF373, 0x52D7, 0xF374, 0xF374, 0x2661,
+ 0xF375, 0xF375, 0x52E9, 0xF376, 0xF376, 0x26A4, 0xF377, 0xF377, 0x2174,
+ 0xF378, 0xF378, 0x2663, 0xF379, 0xF379, 0x2662, 0xF37A, 0xF37E, 0x52EA,
+ 0xF380, 0xF38B, 0x52EF, 0xF38C, 0xF38C, 0x2675, 0xF38D, 0xF39F, 0x52FB,
+ 0xF3A0, 0xF3A0, 0x214C, 0xF3A1, 0xF3FE, 0x1C41, 0xF440, 0xF444, 0x530E,
+ 0xF445, 0xF445, 0x267A, 0xF446, 0xF44F, 0x5313, 0xF450, 0xF450, 0x26A0,
+ 0xF451, 0xF456, 0x531D, 0xF457, 0xF457, 0x2668, 0xF458, 0xF458, 0x5323,
+ 0xF459, 0xF459, 0x1ED0, 0xF45A, 0xF45A, 0x5324, 0xF45B, 0xF45B, 0x2096,
+ 0xF45C, 0xF45C, 0x5325, 0xF45D, 0xF45D, 0x23CC, 0xF45E, 0xF461, 0x5326,
+ 0xF462, 0xF462, 0x23C8, 0xF463, 0xF463, 0x532A, 0xF464, 0xF464, 0x223E,
+ 0xF465, 0xF474, 0x532B, 0xF475, 0xF475, 0x2665, 0xF476, 0xF47B, 0x533B,
+ 0xF47C, 0xF47C, 0x2664, 0xF47D, 0xF47D, 0x5341, 0xF47E, 0xF47E, 0x2239,
+ 0xF480, 0xF493, 0x5342, 0xF494, 0xF494, 0x204A, 0xF495, 0xF498, 0x5356,
+ 0xF499, 0xF499, 0x261F, 0xF49A, 0xF49B, 0x535A, 0xF49C, 0xF49C, 0x261E,
+ 0xF49D, 0xF4A0, 0x535C, 0xF4A1, 0xF4FE, 0x1C9F, 0xF540, 0xF544, 0x5360,
+ 0xF545, 0xF545, 0x2620, 0xF546, 0xF546, 0x5365, 0xF547, 0xF547, 0x2621,
+ 0xF548, 0xF551, 0x5366, 0xF552, 0xF552, 0x2622, 0xF553, 0xF553, 0x5370,
+ 0xF554, 0xF554, 0x2627, 0xF555, 0xF555, 0x1E39, 0xF556, 0xF556, 0x2625,
+ 0xF557, 0xF55D, 0x5371, 0xF55E, 0xF55E, 0x2629, 0xF55F, 0xF560, 0x5378,
+ 0xF561, 0xF561, 0x262E, 0xF562, 0xF562, 0x262B, 0xF563, 0xF56D, 0x537A,
+ 0xF56E, 0xF56E, 0x262A, 0xF56F, 0xF56F, 0x262D, 0xF570, 0xF570, 0x5385,
+ 0xF571, 0xF571, 0x2628, 0xF572, 0xF572, 0x21B9, 0xF573, 0xF57E, 0x5386,
+ 0xF580, 0xF584, 0x5392, 0xF585, 0xF585, 0x2636, 0xF586, 0xF586, 0x2630,
+ 0xF587, 0xF58B, 0x5397, 0xF58C, 0xF58C, 0x2638, 0xF58D, 0xF58D, 0x539C,
+ 0xF58E, 0xF58E, 0x200D, 0xF58F, 0xF58F, 0x2637, 0xF590, 0xF598, 0x539D,
+ 0xF599, 0xF599, 0x2645, 0xF59A, 0xF59A, 0x53A6, 0xF59B, 0xF59B, 0x263A,
+ 0xF59C, 0xF59F, 0x53A7, 0xF5A0, 0xF5A0, 0x2643, 0xF5A1, 0xF5FE, 0x1CFD,
+ 0xF640, 0xF640, 0x53AB, 0xF641, 0xF641, 0x2640, 0xF642, 0xF644, 0x53AC,
+ 0xF645, 0xF645, 0x263D, 0xF646, 0xF646, 0x2641, 0xF647, 0xF647, 0x53AF,
+ 0xF648, 0xF648, 0x263E, 0xF649, 0xF64A, 0x53B0, 0xF64B, 0xF64B, 0x263F,
+ 0xF64C, 0xF64C, 0x1FC0, 0xF64D, 0xF64D, 0x53B2, 0xF64E, 0xF64F, 0x263B,
+ 0xF650, 0xF653, 0x53B3, 0xF654, 0xF654, 0x2642, 0xF655, 0xF657, 0x53B7,
+ 0xF658, 0xF658, 0x2644, 0xF659, 0xF660, 0x53BA, 0xF661, 0xF661, 0x2639,
+ 0xF662, 0xF662, 0x53C2, 0xF663, 0xF663, 0x264C, 0xF664, 0xF66B, 0x53C3,
+ 0xF66C, 0xF66C, 0x2647, 0xF66D, 0xF66D, 0x264B, 0xF66E, 0xF670, 0x53CB,
+ 0xF671, 0xF671, 0x2649, 0xF672, 0xF673, 0x53CE, 0xF674, 0xF674, 0x2648,
+ 0xF675, 0xF675, 0x53D0, 0xF676, 0xF676, 0x264A, 0xF677, 0xF677, 0x2108,
+ 0xF678, 0xF67E, 0x53D1, 0xF680, 0xF684, 0x53D8, 0xF685, 0xF685, 0x264D,
+ 0xF686, 0xF687, 0x53DD, 0xF688, 0xF688, 0x2634, 0xF689, 0xF689, 0x53DF,
+ 0xF68A, 0xF68A, 0x2651, 0xF68B, 0xF68C, 0x53E0, 0xF68D, 0xF68D, 0x2650,
+ 0xF68E, 0xF68E, 0x2652, 0xF68F, 0xF691, 0x53E2, 0xF692, 0xF692, 0x264F,
+ 0xF693, 0xF695, 0x53E5, 0xF696, 0xF696, 0x2632, 0xF697, 0xF697, 0x264E,
+ 0xF698, 0xF698, 0x2653, 0xF699, 0xF699, 0x53E8, 0xF69A, 0xF69A, 0x2657,
+ 0xF69B, 0xF69B, 0x53E9, 0xF69C, 0xF69C, 0x2635, 0xF69D, 0xF69D, 0x53EA,
+ 0xF69E, 0xF69E, 0x2633, 0xF69F, 0xF69F, 0x53EB, 0xF6A0, 0xF6A0, 0x2656,
+ 0xF6A1, 0xF6FE, 0x1D5B, 0xF740, 0xF741, 0x53EC, 0xF742, 0xF742, 0x2654,
+ 0xF743, 0xF748, 0x53EE, 0xF749, 0xF749, 0x2658, 0xF74A, 0xF74B, 0x53F4,
+ 0xF74C, 0xF74C, 0x2655, 0xF74D, 0xF74D, 0x1E4D, 0xF74E, 0xF755, 0x53F6,
+ 0xF756, 0xF756, 0x265B, 0xF757, 0xF757, 0x53FE, 0xF758, 0xF758, 0x265A,
+ 0xF759, 0xF759, 0x53FF, 0xF75A, 0xF75A, 0x2659, 0xF75B, 0xF75B, 0x202E,
+ 0xF75C, 0xF75C, 0x262F, 0xF75D, 0xF760, 0x5400, 0xF761, 0xF761, 0x2646,
+ 0xF762, 0xF762, 0x5404, 0xF763, 0xF763, 0x2626, 0xF764, 0xF76A, 0x5405,
+ 0xF76B, 0xF76B, 0x265C, 0xF76C, 0xF770, 0x540C, 0xF771, 0xF771, 0x262C,
+ 0xF772, 0xF77B, 0x5411, 0xF77C, 0xF77C, 0x2623, 0xF77D, 0xF77D, 0x541B,
+ 0xF77E, 0xF77E, 0x2631, 0xF780, 0xF7A0, 0x541C, 0xF7A1, 0xF7FE, 0x1DB9,
+ 0xF840, 0xF841, 0x543D, 0xF842, 0xF842, 0x209C, 0xF843, 0xF845, 0x543F,
+ 0xF846, 0xF846, 0x2580, 0xF847, 0xF848, 0x5442, 0xF849, 0xF849, 0x22DC,
+ 0xF84A, 0xF84F, 0x5444, 0xF850, 0xF850, 0x1F05, 0xF851, 0xF851, 0x208B,
+ 0xF852, 0xF852, 0x544A, 0xF853, 0xF853, 0x2581, 0xF854, 0xF862, 0x544B,
+ 0xF863, 0xF863, 0x2583, 0xF864, 0xF864, 0x2582, 0xF865, 0xF865, 0x545A,
+ 0xF866, 0xF866, 0x21EE, 0xF867, 0xF871, 0x545B, 0xF872, 0xF872, 0x2182,
+ 0xF873, 0xF877, 0x5466, 0xF878, 0xF878, 0x2243, 0xF879, 0xF879, 0x546B,
+ 0xF87A, 0xF87A, 0x2587, 0xF87B, 0xF87B, 0x546C, 0xF87C, 0xF87C, 0x2588,
+ 0xF87D, 0xF87E, 0x546D, 0xF880, 0xF880, 0x546F, 0xF881, 0xF881, 0x2584,
+ 0xF882, 0xF883, 0x5470, 0xF884, 0xF884, 0x21FD, 0xF885, 0xF885, 0x5472,
+ 0xF886, 0xF886, 0x21EF, 0xF887, 0xF88C, 0x5473, 0xF88D, 0xF88D, 0x258A,
+ 0xF88E, 0xF88E, 0x258C, 0xF88F, 0xF898, 0x5479, 0xF899, 0xF899, 0x1F47,
+ 0xF89A, 0xF89C, 0x5483, 0xF89D, 0xF89D, 0x1F1D, 0xF89E, 0xF89F, 0x5486,
+ 0xF8A0, 0xF8A0, 0x258D, 0xF940, 0xF94D, 0x5488, 0xF94E, 0xF94E, 0x1FD0,
+ 0xF94F, 0xF94F, 0x2592, 0xF950, 0xF950, 0x258F, 0xF951, 0xF958, 0x5496,
+ 0xF959, 0xF959, 0x2594, 0xF95A, 0xF95A, 0x1EE0, 0xF95B, 0xF95C, 0x549E,
+ 0xF95D, 0xF95D, 0x2591, 0xF95E, 0xF95E, 0x2595, 0xF95F, 0xF966, 0x54A0,
+ 0xF967, 0xF967, 0x2597, 0xF968, 0xF968, 0x54A8, 0xF969, 0xF969, 0x20B6,
+ 0xF96A, 0xF96B, 0x54A9, 0xF96C, 0xF96C, 0x2598, 0xF96D, 0xF96E, 0x54AB,
+ 0xF96F, 0xF96F, 0x20F6, 0xF970, 0xF97E, 0x54AD, 0xF980, 0xF984, 0x54BC,
+ 0xF985, 0xF985, 0x2585, 0xF986, 0xF986, 0x54C1, 0xF987, 0xF987, 0x2599,
+ 0xF988, 0xF990, 0x54C2, 0xF991, 0xF991, 0x2596, 0xF992, 0xF995, 0x54CB,
+ 0xF996, 0xF996, 0x259A, 0xF997, 0xF997, 0x54CF, 0xF998, 0xF998, 0x259B,
+ 0xF999, 0xF9A0, 0x54D0, 0xFA40, 0xFA41, 0x54D8, 0xFA42, 0xFA42, 0x259D,
+ 0xFA43, 0xFA45, 0x54DA, 0xFA46, 0xFA46, 0x259E, 0xFA47, 0xFA4B, 0x54DD,
+ 0xFA4C, 0xFA4C, 0x234C, 0xFA4D, 0xFA50, 0x54E2, 0xFA51, 0xFA51, 0x1F44,
+ 0xFA52, 0xFA57, 0x54E6, 0xFA58, 0xFA58, 0x2660, 0xFA59, 0xFA59, 0x25A0,
+ 0xFA5A, 0xFA5C, 0x54EC, 0xFA5D, 0xFA5D, 0x259C, 0xFA5E, 0xFA5E, 0x54EF,
+ 0xFA5F, 0xFA5F, 0x259F, 0xFA60, 0xFA60, 0x54F0, 0xFA61, 0xFA61, 0x1F6C,
+ 0xFA62, 0xFA6F, 0x54F1, 0xFA70, 0xFA70, 0x25A2, 0xFA71, 0xFA73, 0x54FF,
+ 0xFA74, 0xFA74, 0x20AE, 0xFA75, 0xFA75, 0x5502, 0xFA76, 0xFA76, 0x258B,
+ 0xFA77, 0xFA77, 0x25A3, 0xFA78, 0xFA7E, 0x5503, 0xFA80, 0xFA82, 0x550A,
+ 0xFA83, 0xFA83, 0x2589, 0xFA84, 0xFA84, 0x25A5, 0xFA85, 0xFA8C, 0x550D,
+ 0xFA8D, 0xFA8D, 0x25A4, 0xFA8E, 0xFA8F, 0x5515, 0xFA90, 0xFA90, 0x25A6,
+ 0xFA91, 0xFA91, 0x2593, 0xFA92, 0xFA95, 0x5517, 0xFA96, 0xFA96, 0x25A7,
+ 0xFA97, 0xFA97, 0x2222, 0xFA98, 0xFA98, 0x25A9, 0xFA99, 0xFAA0, 0x551B,
+ 0xFB40, 0xFB48, 0x5523, 0xFB49, 0xFB49, 0x25A8, 0xFB4A, 0xFB51, 0x552C,
+ 0xFB52, 0xFB52, 0x2586, 0xFB53, 0xFB56, 0x5534, 0xFB57, 0xFB57, 0x25A1,
+ 0xFB58, 0xFB58, 0x25AA, 0xFB59, 0xFB59, 0x5538, 0xFB5A, 0xFB5A, 0x2590,
+ 0xFB5B, 0xFB5B, 0x258E, 0xFB5C, 0xFB74, 0x5539, 0xFB75, 0xFB75, 0x2688,
+ 0xFB76, 0xFB78, 0x5552, 0xFB79, 0xFB79, 0x269E, 0xFB7A, 0xFB7A, 0x25FB,
+ 0xFB7B, 0xFB7B, 0x5555, 0xFB7C, 0xFB7C, 0x1F8C, 0xFB7D, 0xFB7D, 0x21F4,
+ 0xFB7E, 0xFB7E, 0x5556, 0xFB80, 0xFB8F, 0x5557, 0xFB90, 0xFB90, 0x200F,
+ 0xFB91, 0xFB9B, 0x5567, 0xFB9C, 0xFB9C, 0x2071, 0xFB9D, 0xFB9E, 0x5572,
+ 0xFB9F, 0xFB9F, 0x25F7, 0xFBA0, 0xFBA0, 0x5574, 0xFC40, 0xFC43, 0x5575,
+ 0xFC44, 0xFC44, 0x2696, 0xFC45, 0xFC48, 0x5579, 0xFC49, 0xFC49, 0x268F,
+ 0xFC4A, 0xFC59, 0x557D, 0xFC5A, 0xFC5A, 0x22DA, 0xFC5B, 0xFC62, 0x558D,
+ 0xFC63, 0xFC63, 0x1EC1, 0xFC64, 0xFC67, 0x5595, 0xFC68, 0xFC68, 0x1EB3,
+ 0xFC69, 0xFC6E, 0x5599, 0xFC6F, 0xFC6F, 0x266A, 0xFC70, 0xFC70, 0x559F,
+ 0xFC71, 0xFC71, 0x268A, 0xFC72, 0xFC73, 0x55A0, 0xFC74, 0xFC74, 0x2669,
+ 0xFC75, 0xFC76, 0x55A2, 0xFC77, 0xFC78, 0x2618, 0xFC79, 0xFC7E, 0x55A4,
+ 0xFC80, 0xFC82, 0x55AA, 0xFC83, 0xFC83, 0x261A, 0xFC84, 0xFC89, 0x55AD,
+ 0xFC8A, 0xFC8A, 0x2673, 0xFC8B, 0xFCA0, 0x55B3, 0xFD40, 0xFD51, 0x55C9,
+ 0xFD52, 0xFD52, 0x20C6, 0xFD53, 0xFD53, 0x226B, 0xFD54, 0xFD56, 0x55DB,
+ 0xFD57, 0xFD57, 0x24D3, 0xFD58, 0xFD58, 0x1E86, 0xFD59, 0xFD59, 0x55DE,
+ 0xFD5A, 0xFD5A, 0x260F, 0xFD5B, 0xFD5E, 0x55DF, 0xFD5F, 0xFD5F, 0x2611,
+ 0xFD60, 0xFD61, 0x55E3, 0xFD62, 0xFD62, 0x2613, 0xFD63, 0xFD64, 0x55E5,
+ 0xFD65, 0xFD65, 0x2610, 0xFD66, 0xFD66, 0x2612, 0xFD67, 0xFD67, 0x2030,
+ 0xFD68, 0xFD68, 0x55E7, 0xFD69, 0xFD69, 0x2671, 0xFD6A, 0xFD6B, 0x55E8,
+ 0xFD6C, 0xFD6C, 0x2614, 0xFD6D, 0xFD6F, 0x55EA, 0xFD70, 0xFD70, 0x2616,
+ 0xFD71, 0xFD71, 0x55ED, 0xFD72, 0xFD72, 0x2615, 0xFD73, 0xFD77, 0x55EE,
+ 0xFD78, 0xFD78, 0x20F2, 0xFD79, 0xFD7C, 0x55F3, 0xFD7D, 0xFD7D, 0x2617,
+ 0xFD7E, 0xFD7E, 0x55F7, 0xFD80, 0xFD87, 0x55F8, 0xFD88, 0xFD88, 0x2037,
+ 0xFD89, 0xFD8A, 0x5600, 0xFD8B, 0xFD8B, 0x20B3, 0xFD8C, 0xFD8E, 0x5602,
+ 0xFD8F, 0xFD8F, 0x1F22, 0xFD90, 0xFD90, 0x24ED, 0xFD91, 0xFD93, 0x5605,
+ 0xFD94, 0xFD94, 0x1F34, 0xFD95, 0xFD9C, 0x5608, 0xFD9D, 0xFD9D, 0x0A02,
+ 0xFD9E, 0xFD9E, 0x40D3, 0xFD9F, 0xFD9F, 0x200C, 0xFDA0, 0xFDA0, 0x5083,
+ 0xFE40, 0xFE40, 0x1259, 0xFE41, 0xFE7E, 0x5610, 0xFE80, 0xFEA0, 0x564E,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-V_2.cpp b/core/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-V_2.cpp
new file mode 100644
index 0000000000..ec35055da5
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/GB1/GBK-EUC-V_2.cpp
@@ -0,0 +1,17 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h"
+
+const FX_WORD g_FXCMAP_GBK_EUC_V_2[20 * 3] = {
+ 0xA1A2, 0xA1A2, 0x023F, 0xA1A3, 0xA1A3, 0x023E, 0xA1AA, 0xA1AA, 0x0256,
+ 0xA1AB, 0xA1AC, 0x1E18, 0xA1AD, 0xA1AD, 0x0257, 0xA1B2, 0xA1BF, 0x0246,
+ 0xA1FE, 0xA1FE, 0x1E1A, 0xA3A1, 0xA3A1, 0x0242, 0xA3A8, 0xA3A9, 0x0244,
+ 0xA3AC, 0xA3AC, 0x023D, 0xA3AE, 0xA3AE, 0x1E1B, 0xA3BA, 0xA3BB, 0x0240,
+ 0xA3BD, 0xA3BD, 0x1E1C, 0xA3BF, 0xA3BF, 0x0243, 0xA3DB, 0xA3DB, 0x1E1D,
+ 0xA3DD, 0xA3DD, 0x1E1E, 0xA3DF, 0xA3DF, 0x0258, 0xA3FB, 0xA3FB, 0x0254,
+ 0xA3FD, 0xA3FD, 0x0255, 0xA3FE, 0xA3FE, 0x1E1F,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/GB1/GBK2K-H_5.cpp b/core/fpdfapi/fpdf_cmaps/GB1/GBK2K-H_5.cpp
new file mode 100644
index 0000000000..bd0b1be516
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/GB1/GBK2K-H_5.cpp
@@ -0,0 +1,1822 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h"
+
+const FX_WORD g_FXCMAP_GBK2K_H_5[4071 * 3] = {
+ 0x0020, 0x007E, 0x0001, 0x8140, 0x8178, 0x2758, 0x8179, 0x8179, 0x2059,
+ 0x817A, 0x817E, 0x2791, 0x8180, 0x8185, 0x2796, 0x8186, 0x8186, 0x21F1,
+ 0x8187, 0x81EC, 0x279C, 0x81ED, 0x81ED, 0x1FF2, 0x81EE, 0x81F5, 0x2802,
+ 0x81F6, 0x81F6, 0x205D, 0x81F7, 0x81FE, 0x280A, 0x8240, 0x8252, 0x2812,
+ 0x8253, 0x8253, 0x269C, 0x8254, 0x8261, 0x2825, 0x8262, 0x8262, 0x21B5,
+ 0x8263, 0x8273, 0x2833, 0x8274, 0x8274, 0x22CC, 0x8275, 0x8279, 0x2844,
+ 0x827A, 0x827A, 0x2016, 0x827B, 0x827C, 0x2849, 0x827D, 0x827D, 0x1E62,
+ 0x827E, 0x827E, 0x284B, 0x8280, 0x8280, 0x1F20, 0x8281, 0x8282, 0x284C,
+ 0x8283, 0x8283, 0x207F, 0x8284, 0x828F, 0x284E, 0x8290, 0x8290, 0x205C,
+ 0x8291, 0x82A4, 0x285A, 0x82A5, 0x82A5, 0x2194, 0x82A6, 0x82C7, 0x286E,
+ 0x82C8, 0x82C8, 0x1E65, 0x82C9, 0x82C9, 0x2281, 0x82CA, 0x82E0, 0x2890,
+ 0x82E1, 0x82E1, 0x22CD, 0x82E2, 0x82E2, 0x28A7, 0x82E3, 0x82E3, 0x210A,
+ 0x82E4, 0x82E4, 0x1E3E, 0x82E5, 0x82EC, 0x28A8, 0x82ED, 0x82ED, 0x267F,
+ 0x82EE, 0x82F1, 0x28B0, 0x82F2, 0x82F2, 0x222E, 0x82F3, 0x82F6, 0x28B4,
+ 0x82F7, 0x82F7, 0x1E96, 0x82F8, 0x82F8, 0x22CB, 0x82F9, 0x82F9, 0x226C,
+ 0x82FA, 0x82FA, 0x28B8, 0x82FB, 0x82FB, 0x2117, 0x82FC, 0x82FE, 0x28B9,
+ 0x8340, 0x8340, 0x28BC, 0x8341, 0x8341, 0x20E8, 0x8342, 0x8344, 0x28BD,
+ 0x8345, 0x8345, 0x22D4, 0x8346, 0x8347, 0x28C0, 0x8348, 0x8348, 0x1FB9,
+ 0x8349, 0x834B, 0x28C2, 0x834C, 0x834C, 0x22D8, 0x834D, 0x8352, 0x28C5,
+ 0x8353, 0x8353, 0x20DF, 0x8354, 0x8356, 0x28CB, 0x8357, 0x8357, 0x20C2,
+ 0x8358, 0x835D, 0x28CE, 0x835E, 0x835E, 0x2195, 0x835F, 0x8364, 0x28D4,
+ 0x8365, 0x8365, 0x1FAC, 0x8366, 0x8366, 0x22D3, 0x8367, 0x8371, 0x28DA,
+ 0x8372, 0x8372, 0x1F81, 0x8373, 0x8377, 0x28E5, 0x8378, 0x8378, 0x2210,
+ 0x8379, 0x8379, 0x28EA, 0x837A, 0x837A, 0x22CF, 0x837B, 0x837B, 0x28EB,
+ 0x837C, 0x837C, 0x2213, 0x837D, 0x837D, 0x28EC, 0x837E, 0x837E, 0x1FE4,
+ 0x8380, 0x8380, 0x1F90, 0x8381, 0x8385, 0x28ED, 0x8386, 0x8386, 0x22D6,
+ 0x8387, 0x8388, 0x28F2, 0x8389, 0x8389, 0x22D0, 0x838A, 0x838A, 0x22CE,
+ 0x838B, 0x838C, 0x28F4, 0x838D, 0x838D, 0x2681, 0x838E, 0x8393, 0x28F6,
+ 0x8394, 0x8394, 0x1E76, 0x8395, 0x839D, 0x28FC, 0x839E, 0x839E, 0x2231,
+ 0x839F, 0x83A5, 0x2905, 0x83A6, 0x83A6, 0x1E93, 0x83A7, 0x83AA, 0x290C,
+ 0x83AB, 0x83AB, 0x22D2, 0x83AC, 0x83AD, 0x2910, 0x83AE, 0x83AE, 0x22D7,
+ 0x83AF, 0x83AF, 0x22D5, 0x83B0, 0x83B0, 0x22D1, 0x83B1, 0x83B9, 0x2912,
+ 0x83BA, 0x83BA, 0x1EE5, 0x83BB, 0x83C8, 0x291B, 0x83C9, 0x83C9, 0x2025,
+ 0x83CA, 0x83F5, 0x2929, 0x83F6, 0x83F6, 0x1ECF, 0x83F7, 0x83FE, 0x2955,
+ 0x8440, 0x844F, 0x295D, 0x8450, 0x8450, 0x1FD9, 0x8451, 0x8470, 0x296D,
+ 0x8471, 0x8471, 0x22C8, 0x8472, 0x8473, 0x298D, 0x8474, 0x8474, 0x2263,
+ 0x8475, 0x8476, 0x298F, 0x8477, 0x8477, 0x2683, 0x8478, 0x847E, 0x2991,
+ 0x8480, 0x8481, 0x2998, 0x8482, 0x8482, 0x1F17, 0x8483, 0x848D, 0x299A,
+ 0x848E, 0x848E, 0x1F2B, 0x848F, 0x8491, 0x29A5, 0x8492, 0x8492, 0x22CA,
+ 0x8493, 0x8493, 0x1E99, 0x8494, 0x849C, 0x29A8, 0x849D, 0x849D, 0x1F4F,
+ 0x849E, 0x84A0, 0x29B1, 0x84A1, 0x84A1, 0x1FCF, 0x84A2, 0x84A2, 0x2036,
+ 0x84A3, 0x84A3, 0x1F3A, 0x84A4, 0x84A4, 0x29B4, 0x84A5, 0x84A5, 0x22C9,
+ 0x84A6, 0x84A6, 0x1F99, 0x84A7, 0x84A8, 0x29B5, 0x84A9, 0x84A9, 0x1F75,
+ 0x84AA, 0x84C4, 0x29B7, 0x84C5, 0x84C5, 0x1FBE, 0x84C6, 0x84D2, 0x29D2,
+ 0x84D3, 0x84D3, 0x1ECD, 0x84D4, 0x84D4, 0x29DF, 0x84D5, 0x84D5, 0x21A9,
+ 0x84D6, 0x84D6, 0x29E0, 0x84D7, 0x84D7, 0x21E6, 0x84D8, 0x84D8, 0x29E1,
+ 0x84D9, 0x84D9, 0x2127, 0x84DA, 0x84DA, 0x2003, 0x84DB, 0x84DC, 0x29E2,
+ 0x84DD, 0x84DD, 0x2132, 0x84DE, 0x84E9, 0x29E4, 0x84EA, 0x84EA, 0x2323,
+ 0x84EB, 0x84ED, 0x29F0, 0x84EE, 0x84EE, 0x2011, 0x84EF, 0x84F0, 0x29F3,
+ 0x84F1, 0x84F1, 0x20F5, 0x84F2, 0x84FE, 0x29F5, 0x8540, 0x8550, 0x2A02,
+ 0x8551, 0x8551, 0x22C5, 0x8552, 0x8552, 0x1F5E, 0x8553, 0x8553, 0x2A13,
+ 0x8554, 0x8554, 0x22C6, 0x8555, 0x855D, 0x2A14, 0x855E, 0x855E, 0x20EF,
+ 0x855F, 0x8565, 0x2A1D, 0x8566, 0x8566, 0x21D0, 0x8567, 0x857E, 0x2A24,
+ 0x8580, 0x8586, 0x2A3C, 0x8587, 0x8587, 0x22C1, 0x8588, 0x858A, 0x2A43,
+ 0x858B, 0x858B, 0x1E64, 0x858C, 0x8591, 0x2A46, 0x8592, 0x8592, 0x21F9,
+ 0x8593, 0x8595, 0x2A4C, 0x8596, 0x8596, 0x2010, 0x8597, 0x8597, 0x2A4F,
+ 0x8598, 0x8598, 0x22C2, 0x8599, 0x85A1, 0x2A50, 0x85A2, 0x85A2, 0x1E5A,
+ 0x85A3, 0x85B1, 0x2A59, 0x85B2, 0x85B2, 0x1EA2, 0x85B3, 0x85FE, 0x2A68,
+ 0x8640, 0x8649, 0x2AB4, 0x864A, 0x864A, 0x236D, 0x864B, 0x8653, 0x2ABE,
+ 0x8654, 0x8654, 0x2247, 0x8655, 0x8667, 0x2AC7, 0x8668, 0x8668, 0x236C,
+ 0x8669, 0x867E, 0x2ADA, 0x8680, 0x8695, 0x2AF0, 0x8696, 0x8696, 0x219C,
+ 0x8697, 0x8698, 0x2B06, 0x8699, 0x8699, 0x20C9, 0x869A, 0x86A0, 0x2B08,
+ 0x86A1, 0x86A1, 0x21F0, 0x86A2, 0x86C9, 0x2B0F, 0x86CA, 0x86CA, 0x210B,
+ 0x86CB, 0x86CB, 0x2B37, 0x86CC, 0x86CC, 0x20DE, 0x86CD, 0x86CD, 0x2B38,
+ 0x86CE, 0x86CE, 0x1EAA, 0x86CF, 0x86D0, 0x2B39, 0x86D1, 0x86D1, 0x222C,
+ 0x86D2, 0x86DB, 0x2B3B, 0x86DC, 0x86DC, 0x20D8, 0x86DD, 0x86DD, 0x22C0,
+ 0x86DE, 0x86E0, 0x2B45, 0x86E1, 0x86E1, 0x206F, 0x86E2, 0x86E7, 0x2B48,
+ 0x86E8, 0x86E8, 0x21A1, 0x86E9, 0x86ED, 0x2B4E, 0x86EE, 0x86EE, 0x2379,
+ 0x86EF, 0x86F3, 0x2B53, 0x86F4, 0x86F4, 0x2372, 0x86F5, 0x86FE, 0x2B58,
+ 0x8740, 0x8740, 0x216A, 0x8741, 0x8743, 0x2B62, 0x8744, 0x8744, 0x237C,
+ 0x8745, 0x8748, 0x2B65, 0x8749, 0x8749, 0x20B0, 0x874A, 0x874A, 0x2B69,
+ 0x874B, 0x874B, 0x237A, 0x874C, 0x874C, 0x1E74, 0x874D, 0x874E, 0x2B6A,
+ 0x874F, 0x874F, 0x2377, 0x8750, 0x8756, 0x2B6C, 0x8757, 0x8757, 0x1F4C,
+ 0x8758, 0x8759, 0x2B73, 0x875A, 0x875A, 0x2378, 0x875B, 0x875B, 0x21CF,
+ 0x875C, 0x875C, 0x2368, 0x875D, 0x875D, 0x2B75, 0x875E, 0x875E, 0x2371,
+ 0x875F, 0x875F, 0x2B76, 0x8760, 0x8760, 0x2369, 0x8761, 0x8765, 0x2B77,
+ 0x8766, 0x8766, 0x2674, 0x8767, 0x8779, 0x2B7C, 0x877A, 0x877A, 0x236F,
+ 0x877B, 0x877C, 0x2B8F, 0x877D, 0x877D, 0x2370, 0x877E, 0x877E, 0x2B91,
+ 0x8780, 0x8780, 0x2B92, 0x8781, 0x8781, 0x2376, 0x8782, 0x8782, 0x2373,
+ 0x8783, 0x8785, 0x2B93, 0x8786, 0x8786, 0x237F, 0x8787, 0x8787, 0x2B96,
+ 0x8788, 0x8788, 0x2374, 0x8789, 0x8789, 0x2B97, 0x878A, 0x878A, 0x20B5,
+ 0x878B, 0x878C, 0x2B98, 0x878D, 0x878D, 0x1EDB, 0x878E, 0x878E, 0x2672,
+ 0x878F, 0x8792, 0x2B9A, 0x8793, 0x8793, 0x236E, 0x8794, 0x8797, 0x2B9E,
+ 0x8798, 0x8798, 0x21B7, 0x8799, 0x879C, 0x2BA2, 0x879D, 0x879D, 0x2375,
+ 0x879E, 0x87A2, 0x2BA6, 0x87A3, 0x87A3, 0x2382, 0x87A4, 0x87A6, 0x2BAB,
+ 0x87A7, 0x87A7, 0x209E, 0x87A8, 0x87B2, 0x2BAE, 0x87B3, 0x87B3, 0x236B,
+ 0x87B4, 0x87B4, 0x2BB9, 0x87B5, 0x87B5, 0x2039, 0x87B6, 0x87BA, 0x2BBA,
+ 0x87BB, 0x87BB, 0x269F, 0x87BC, 0x87BE, 0x2BBF, 0x87BF, 0x87BF, 0x237D,
+ 0x87C0, 0x87C0, 0x21F5, 0x87C1, 0x87C1, 0x2BC2, 0x87C2, 0x87C2, 0x2381,
+ 0x87C3, 0x87C9, 0x2BC3, 0x87CA, 0x87CA, 0x237B, 0x87CB, 0x87CB, 0x237E,
+ 0x87CC, 0x87CC, 0x21CC, 0x87CD, 0x87CE, 0x2BCA, 0x87CF, 0x87CF, 0x22DB,
+ 0x87D0, 0x87D1, 0x2BCC, 0x87D2, 0x87D2, 0x236A, 0x87D3, 0x87D3, 0x2689,
+ 0x87D4, 0x87D4, 0x2BCE, 0x87D5, 0x87D5, 0x2697, 0x87D6, 0x87D9, 0x2BCF,
+ 0x87DA, 0x87DA, 0x22A1, 0x87DB, 0x87F6, 0x2BD3, 0x87F7, 0x87F7, 0x2383,
+ 0x87F8, 0x87F8, 0x1F3D, 0x87F9, 0x87F9, 0x2BEF, 0x87FA, 0x87FA, 0x218F,
+ 0x87FB, 0x87FE, 0x2BF0, 0x8840, 0x8840, 0x2246, 0x8841, 0x8841, 0x2248,
+ 0x8842, 0x8843, 0x2BF4, 0x8844, 0x8844, 0x217E, 0x8845, 0x8845, 0x2BF6,
+ 0x8846, 0x8846, 0x2180, 0x8847, 0x887E, 0x2BF7, 0x8880, 0x88B9, 0x2C2F,
+ 0x88BA, 0x88BA, 0x232A, 0x88BB, 0x88CB, 0x2C69, 0x88CC, 0x88CC, 0x228B,
+ 0x88CD, 0x88D3, 0x2C7A, 0x88D4, 0x88D4, 0x1F85, 0x88D5, 0x88D6, 0x2C81,
+ 0x88D7, 0x88D7, 0x2325, 0x88D8, 0x88DE, 0x2C83, 0x88DF, 0x88DF, 0x232C,
+ 0x88E0, 0x88E4, 0x2C8A, 0x88E5, 0x88E5, 0x232E, 0x88E6, 0x88F1, 0x2C8F,
+ 0x88F2, 0x88F2, 0x2205, 0x88F3, 0x88F3, 0x1E38, 0x88F4, 0x88F5, 0x2C9B,
+ 0x88F6, 0x88F6, 0x1E73, 0x88F7, 0x88FE, 0x2C9D, 0x8940, 0x894A, 0x2CA5,
+ 0x894B, 0x894B, 0x1FE3, 0x894C, 0x894C, 0x2339, 0x894D, 0x894D, 0x2CB0,
+ 0x894E, 0x894E, 0x232B, 0x894F, 0x894F, 0x2CB1, 0x8950, 0x8950, 0x232D,
+ 0x8951, 0x8953, 0x2CB2, 0x8954, 0x8954, 0x217F, 0x8955, 0x895C, 0x2CB5,
+ 0x895D, 0x895D, 0x21A7, 0x895E, 0x895E, 0x2CBD, 0x895F, 0x895F, 0x232F,
+ 0x8960, 0x896C, 0x2CBE, 0x896D, 0x896D, 0x1E7D, 0x896E, 0x8970, 0x2CCB,
+ 0x8971, 0x8971, 0x20D6, 0x8972, 0x897B, 0x2CCE, 0x897C, 0x897C, 0x1EC2,
+ 0x897D, 0x897E, 0x2CD8, 0x8980, 0x898A, 0x2CDA, 0x898B, 0x898B, 0x22B2,
+ 0x898C, 0x8998, 0x2CE5, 0x8999, 0x8999, 0x1EDF, 0x899A, 0x899D, 0x2CF2,
+ 0x899E, 0x899E, 0x1EF9, 0x899F, 0x89A5, 0x2CF6, 0x89A6, 0x89A6, 0x20D9,
+ 0x89A7, 0x89A7, 0x2CFD, 0x89A8, 0x89A8, 0x1FDD, 0x89A9, 0x89AE, 0x2CFE,
+ 0x89AF, 0x89AF, 0x2167, 0x89B0, 0x89B9, 0x2D04, 0x89BA, 0x89BA, 0x21ED,
+ 0x89BB, 0x89BD, 0x2D0E, 0x89BE, 0x89BE, 0x2007, 0x89BF, 0x89BF, 0x2326,
+ 0x89C0, 0x89C0, 0x2329, 0x89C1, 0x89C3, 0x2D11, 0x89C4, 0x89C4, 0x1F52,
+ 0x89C5, 0x89C5, 0x203B, 0x89C6, 0x89C6, 0x2328, 0x89C7, 0x89C7, 0x2D14,
+ 0x89C8, 0x89C8, 0x2327, 0x89C9, 0x89CD, 0x2D15, 0x89CE, 0x89CE, 0x1E2B,
+ 0x89CF, 0x89D0, 0x2D1A, 0x89D1, 0x89D1, 0x22AE, 0x89D2, 0x89D7, 0x2D1C,
+ 0x89D8, 0x89D8, 0x1F49, 0x89D9, 0x89DA, 0x2D22, 0x89DB, 0x89DB, 0x2138,
+ 0x89DC, 0x89F3, 0x2D24, 0x89F4, 0x89F4, 0x2081, 0x89F5, 0x89FE, 0x2D3C,
+ 0x8A40, 0x8A40, 0x2D46, 0x8A41, 0x8A41, 0x1F7C, 0x8A42, 0x8A58, 0x2D47,
+ 0x8A59, 0x8A59, 0x235B, 0x8A5A, 0x8A5A, 0x1EDE, 0x8A5B, 0x8A5B, 0x2D5E,
+ 0x8A5C, 0x8A5C, 0x1FA2, 0x8A5D, 0x8A5D, 0x2D5F, 0x8A5E, 0x8A5E, 0x1EFA,
+ 0x8A5F, 0x8A78, 0x2D60, 0x8A79, 0x8A79, 0x22AD, 0x8A7A, 0x8A7E, 0x2D7A,
+ 0x8A80, 0x8AE3, 0x2D7F, 0x8AE4, 0x8AE4, 0x203F, 0x8AE5, 0x8AFE, 0x2DE3,
+ 0x8B40, 0x8B43, 0x2DFD, 0x8B44, 0x8B44, 0x1F0E, 0x8B45, 0x8B48, 0x2E01,
+ 0x8B49, 0x8B49, 0x23F9, 0x8B4A, 0x8B79, 0x2E05, 0x8B7A, 0x8B7A, 0x23FC,
+ 0x8B7B, 0x8B7E, 0x2E35, 0x8B80, 0x8B8B, 0x2E39, 0x8B8C, 0x8B8C, 0x2069,
+ 0x8B8D, 0x8B9D, 0x2E45, 0x8B9E, 0x8B9E, 0x23F7, 0x8B9F, 0x8BB2, 0x2E56,
+ 0x8BB3, 0x8BB3, 0x23F6, 0x8BB4, 0x8BB8, 0x2E6A, 0x8BB9, 0x8BB9, 0x23FD,
+ 0x8BBA, 0x8BBD, 0x2E6F, 0x8BBE, 0x8BBE, 0x23F8, 0x8BBF, 0x8BC5, 0x2E73,
+ 0x8BC6, 0x8BC6, 0x23FA, 0x8BC7, 0x8BC7, 0x2E7A, 0x8BC8, 0x8BC8, 0x23FE,
+ 0x8BC9, 0x8BC9, 0x1FA8, 0x8BCA, 0x8BD3, 0x2E7B, 0x8BD4, 0x8BD4, 0x2401,
+ 0x8BD5, 0x8BDB, 0x2E85, 0x8BDC, 0x8BDC, 0x23FF, 0x8BDD, 0x8BE4, 0x2E8C,
+ 0x8BE5, 0x8BE5, 0x2400, 0x8BE6, 0x8BEA, 0x2E94, 0x8BEB, 0x8BEB, 0x2221,
+ 0x8BEC, 0x8BEF, 0x2E99, 0x8BF0, 0x8BF0, 0x2122, 0x8BF1, 0x8BFE, 0x2E9D,
+ 0x8C40, 0x8C43, 0x2EAB, 0x8C44, 0x8C44, 0x23FB, 0x8C45, 0x8C4E, 0x2EAF,
+ 0x8C4F, 0x8C4F, 0x215A, 0x8C50, 0x8C56, 0x2EB9, 0x8C57, 0x8C57, 0x21E5,
+ 0x8C58, 0x8C5B, 0x2EC0, 0x8C5C, 0x8C5C, 0x2057, 0x8C5D, 0x8C7E, 0x2EC4,
+ 0x8C80, 0x8C8A, 0x2EE6, 0x8C8B, 0x8C8B, 0x20E5, 0x8C8C, 0x8C8C, 0x2EF1,
+ 0x8C8D, 0x8C8D, 0x212F, 0x8C8E, 0x8C8E, 0x20A3, 0x8C8F, 0x8C8F, 0x2121,
+ 0x8C90, 0x8C90, 0x2EF2, 0x8C91, 0x8C91, 0x21D4, 0x8C92, 0x8C92, 0x1FE5,
+ 0x8C93, 0x8C98, 0x2EF3, 0x8C99, 0x8C99, 0x1E8A, 0x8C9A, 0x8C9A, 0x1E37,
+ 0x8C9B, 0x8CA1, 0x2EF9, 0x8CA2, 0x8CA2, 0x1F9E, 0x8CA3, 0x8CA3, 0x22A6,
+ 0x8CA4, 0x8CA4, 0x21E8, 0x8CA5, 0x8CA5, 0x2F00, 0x8CA6, 0x8CA6, 0x1EDA,
+ 0x8CA7, 0x8CA7, 0x1EB9, 0x8CA8, 0x8CBF, 0x2F01, 0x8CC0, 0x8CC0, 0x235C,
+ 0x8CC1, 0x8CD1, 0x2F19, 0x8CD2, 0x8CD2, 0x2050, 0x8CD3, 0x8CD3, 0x1E67,
+ 0x8CD4, 0x8CD4, 0x2F2A, 0x8CD5, 0x8CD5, 0x23F4, 0x8CD6, 0x8CD8, 0x2F2B,
+ 0x8CD9, 0x8CD9, 0x213E, 0x8CDA, 0x8CF8, 0x2F2E, 0x8CF9, 0x8CF9, 0x1F16,
+ 0x8CFA, 0x8CFE, 0x2F4D, 0x8D40, 0x8D72, 0x2F52, 0x8D73, 0x8D73, 0x2389,
+ 0x8D74, 0x8D74, 0x2F85, 0x8D75, 0x8D75, 0x1EB7, 0x8D76, 0x8D7A, 0x2F86,
+ 0x8D7B, 0x8D7B, 0x21B4, 0x8D7C, 0x8D7E, 0x2F8B, 0x8D80, 0x8D87, 0x2F8E,
+ 0x8D88, 0x8D88, 0x238F, 0x8D89, 0x8D8E, 0x2F96, 0x8D8F, 0x8D8F, 0x1F1A,
+ 0x8D90, 0x8D9D, 0x2F9C, 0x8D9E, 0x8D9E, 0x238B, 0x8D9F, 0x8DB8, 0x2FAA,
+ 0x8DB9, 0x8DB9, 0x238A, 0x8DBA, 0x8DE1, 0x2FC4, 0x8DE2, 0x8DE2, 0x2391,
+ 0x8DE3, 0x8DE3, 0x2FEC, 0x8DE4, 0x8DE4, 0x2271, 0x8DE5, 0x8DE6, 0x2FED,
+ 0x8DE7, 0x8DE7, 0x2388, 0x8DE8, 0x8DF6, 0x2FEF, 0x8DF7, 0x8DF7, 0x238E,
+ 0x8DF8, 0x8DFD, 0x2FFE, 0x8DFE, 0x8DFE, 0x238D, 0x8E40, 0x8E45, 0x3004,
+ 0x8E46, 0x8E46, 0x238C, 0x8E47, 0x8E55, 0x300A, 0x8E56, 0x8E56, 0x2390,
+ 0x8E57, 0x8E57, 0x3019, 0x8E58, 0x8E58, 0x2033, 0x8E59, 0x8E59, 0x301A,
+ 0x8E5A, 0x8E5A, 0x223C, 0x8E5B, 0x8E67, 0x301B, 0x8E68, 0x8E68, 0x1FE9,
+ 0x8E69, 0x8E6D, 0x3028, 0x8E6E, 0x8E6E, 0x2055, 0x8E6F, 0x8E6F, 0x302D,
+ 0x8E70, 0x8E70, 0x2392, 0x8E71, 0x8E7E, 0x302E, 0x8E80, 0x8E80, 0x2324,
+ 0x8E81, 0x8E9A, 0x303C, 0x8E9B, 0x8E9B, 0x2143, 0x8E9C, 0x8E9E, 0x3056,
+ 0x8E9F, 0x8E9F, 0x2129, 0x8EA0, 0x8EA3, 0x3059, 0x8EA4, 0x8EA4, 0x2277,
+ 0x8EA5, 0x8EA6, 0x305D, 0x8EA7, 0x8EA7, 0x1EA7, 0x8EA8, 0x8EAB, 0x305F,
+ 0x8EAC, 0x8EAC, 0x2285, 0x8EAD, 0x8EAD, 0x3063, 0x8EAE, 0x8EAE, 0x2384,
+ 0x8EAF, 0x8EBC, 0x3064, 0x8EBD, 0x8EBD, 0x2387, 0x8EBE, 0x8EBE, 0x2386,
+ 0x8EBF, 0x8EC2, 0x3072, 0x8EC3, 0x8EC3, 0x2290, 0x8EC4, 0x8EC4, 0x3076,
+ 0x8EC5, 0x8EC5, 0x1E44, 0x8EC6, 0x8ECC, 0x3077, 0x8ECD, 0x8ECD, 0x1E32,
+ 0x8ECE, 0x8ECE, 0x2385, 0x8ECF, 0x8ED5, 0x307E, 0x8ED6, 0x8ED6, 0x1F13,
+ 0x8ED7, 0x8ED7, 0x1F73, 0x8ED8, 0x8EEB, 0x3085, 0x8EEC, 0x8EEC, 0x1FE0,
+ 0x8EED, 0x8EFE, 0x3099, 0x8F40, 0x8F51, 0x30AB, 0x8F52, 0x8F52, 0x2087,
+ 0x8F53, 0x8F53, 0x1E78, 0x8F54, 0x8F54, 0x23AE, 0x8F55, 0x8F55, 0x1EF6,
+ 0x8F56, 0x8F56, 0x1F31, 0x8F57, 0x8F5C, 0x30BD, 0x8F5D, 0x8F5D, 0x2045,
+ 0x8F5E, 0x8F63, 0x30C3, 0x8F64, 0x8F64, 0x2178, 0x8F65, 0x8F7E, 0x30C9,
+ 0x8F80, 0x8F85, 0x30E3, 0x8F86, 0x8F86, 0x23F5, 0x8F87, 0x8F87, 0x30E9,
+ 0x8F88, 0x8F88, 0x2275, 0x8F89, 0x8F94, 0x30EA, 0x8F95, 0x8F95, 0x266E,
+ 0x8F96, 0x8F96, 0x30F6, 0x8F97, 0x8F97, 0x1EB0, 0x8F98, 0x8F9A, 0x30F7,
+ 0x8F9B, 0x8F9B, 0x2083, 0x8F9C, 0x8F9C, 0x30FA, 0x8F9D, 0x8F9D, 0x2188,
+ 0x8F9E, 0x8FA0, 0x30FB, 0x8FA1, 0x8FA1, 0x267C, 0x8FA2, 0x8FBC, 0x30FE,
+ 0x8FBD, 0x8FBD, 0x1FC5, 0x8FBE, 0x8FC3, 0x3119, 0x8FC4, 0x8FC4, 0x1EA1,
+ 0x8FC5, 0x8FC5, 0x311F, 0x8FC6, 0x8FC6, 0x2393, 0x8FC7, 0x8FCC, 0x3120,
+ 0x8FCD, 0x8FCD, 0x1F0B, 0x8FCE, 0x8FD7, 0x3126, 0x8FD8, 0x8FD8, 0x1E7C,
+ 0x8FD9, 0x8FFE, 0x3130, 0x9040, 0x907E, 0x3156, 0x9080, 0x909C, 0x3195,
+ 0x909D, 0x909D, 0x23B4, 0x909E, 0x909E, 0x207E, 0x909F, 0x90B9, 0x31B2,
+ 0x90BA, 0x90BA, 0x1EE3, 0x90BB, 0x90BF, 0x31CD, 0x90C0, 0x90C0, 0x2095,
+ 0x90C1, 0x90C1, 0x23BB, 0x90C2, 0x90C4, 0x31D2, 0x90C5, 0x90C5, 0x23B9,
+ 0x90C6, 0x90DA, 0x31D5, 0x90DB, 0x90DB, 0x1E28, 0x90DC, 0x90DC, 0x23BD,
+ 0x90DD, 0x90EC, 0x31EA, 0x90ED, 0x90ED, 0x23B5, 0x90EE, 0x90EF, 0x31FA,
+ 0x90F0, 0x90F0, 0x23BA, 0x90F1, 0x90F6, 0x31FC, 0x90F7, 0x90F7, 0x23B3,
+ 0x90F8, 0x90FE, 0x3202, 0x9140, 0x9141, 0x3209, 0x9142, 0x9142, 0x2162,
+ 0x9143, 0x914A, 0x320B, 0x914B, 0x914B, 0x1E5E, 0x914C, 0x914C, 0x3213,
+ 0x914D, 0x914D, 0x1E5D, 0x914E, 0x9150, 0x3214, 0x9151, 0x9151, 0x23B7,
+ 0x9152, 0x9153, 0x3217, 0x9154, 0x9154, 0x1F2F, 0x9155, 0x9155, 0x24DF,
+ 0x9156, 0x9158, 0x3219, 0x9159, 0x9159, 0x23B2, 0x915A, 0x915A, 0x214E,
+ 0x915B, 0x915C, 0x321C, 0x915D, 0x915D, 0x2052, 0x915E, 0x9160, 0x321E,
+ 0x9161, 0x9161, 0x23BC, 0x9162, 0x9162, 0x3221, 0x9163, 0x9163, 0x20EB,
+ 0x9164, 0x916D, 0x3222, 0x916E, 0x916E, 0x2232, 0x916F, 0x9175, 0x322C,
+ 0x9176, 0x9176, 0x1E3F, 0x9177, 0x9179, 0x3233, 0x917A, 0x917A, 0x201B,
+ 0x917B, 0x917B, 0x20BC, 0x917C, 0x917C, 0x23BE, 0x917D, 0x917E, 0x3236,
+ 0x9180, 0x9183, 0x3238, 0x9184, 0x9184, 0x1EAE, 0x9185, 0x918C, 0x323C,
+ 0x918D, 0x918D, 0x1EFB, 0x918E, 0x9190, 0x3244, 0x9191, 0x9191, 0x2089,
+ 0x9192, 0x9192, 0x3247, 0x9193, 0x9193, 0x23B1, 0x9194, 0x9196, 0x3248,
+ 0x9197, 0x9197, 0x21C4, 0x9198, 0x919A, 0x324B, 0x919B, 0x919B, 0x2214,
+ 0x919C, 0x91A8, 0x324E, 0x91A9, 0x91A9, 0x1FDE, 0x91AA, 0x91AA, 0x2223,
+ 0x91AB, 0x91AB, 0x23B6, 0x91AC, 0x91B9, 0x325B, 0x91BA, 0x91BA, 0x268C,
+ 0x91BB, 0x91BB, 0x24DE, 0x91BC, 0x91BE, 0x3269, 0x91BF, 0x91BF, 0x24E0,
+ 0x91C0, 0x91C2, 0x326C, 0x91C3, 0x91C3, 0x23B8, 0x91C4, 0x91CC, 0x326F,
+ 0x91CD, 0x91CD, 0x1E81, 0x91CE, 0x91CF, 0x3278, 0x91D0, 0x91D0, 0x1FFE,
+ 0x91D1, 0x91D1, 0x1F51, 0x91D2, 0x91D2, 0x21E1, 0x91D3, 0x91D3, 0x327A,
+ 0x91D4, 0x91D4, 0x23B0, 0x91D5, 0x91D5, 0x327B, 0x91D6, 0x91D6, 0x1FCE,
+ 0x91D7, 0x91D7, 0x327C, 0x91D8, 0x91D8, 0x211E, 0x91D9, 0x91D9, 0x2021,
+ 0x91DA, 0x91DE, 0x327D, 0x91DF, 0x91DF, 0x24E1, 0x91E0, 0x91E1, 0x3282,
+ 0x91E2, 0x91E2, 0x24A3, 0x91E3, 0x91E9, 0x3284, 0x91EA, 0x91EA, 0x24A4,
+ 0x91EB, 0x91EF, 0x328B, 0x91F0, 0x91F0, 0x2273, 0x91F1, 0x91F1, 0x3290,
+ 0x91F2, 0x91F2, 0x21B0, 0x91F3, 0x91FE, 0x3291, 0x9240, 0x927E, 0x329D,
+ 0x9280, 0x92B5, 0x32DC, 0x92B6, 0x92B6, 0x21D1, 0x92B7, 0x92CD, 0x3312,
+ 0x92CE, 0x92CE, 0x211C, 0x92CF, 0x92CF, 0x3329, 0x92D0, 0x92D0, 0x235D,
+ 0x92D1, 0x92D3, 0x332A, 0x92D4, 0x92D4, 0x2682, 0x92D5, 0x92DE, 0x332D,
+ 0x92DF, 0x92DF, 0x210D, 0x92E0, 0x92E0, 0x205A, 0x92E1, 0x92FD, 0x3337,
+ 0x92FE, 0x92FE, 0x1F8D, 0x9340, 0x934F, 0x3354, 0x9350, 0x9350, 0x21FF,
+ 0x9351, 0x935C, 0x3364, 0x935D, 0x935D, 0x1F58, 0x935E, 0x936F, 0x3370,
+ 0x9370, 0x9370, 0x215B, 0x9371, 0x9375, 0x3382, 0x9376, 0x9376, 0x1EB6,
+ 0x9377, 0x937E, 0x3387, 0x9380, 0x938B, 0x338F, 0x938C, 0x938C, 0x20DB,
+ 0x938D, 0x939C, 0x339B, 0x939D, 0x939D, 0x2360, 0x939E, 0x93A4, 0x33AB,
+ 0x93A5, 0x93A5, 0x2361, 0x93A6, 0x93A6, 0x33B2, 0x93A7, 0x93A7, 0x2040,
+ 0x93A8, 0x93B3, 0x33B3, 0x93B4, 0x93B4, 0x228E, 0x93B5, 0x93B7, 0x33BF,
+ 0x93B8, 0x93B8, 0x1FDF, 0x93B9, 0x93BA, 0x33C2, 0x93BB, 0x93BB, 0x235E,
+ 0x93BC, 0x93BC, 0x33C4, 0x93BD, 0x93BD, 0x1E6A, 0x93BE, 0x93C5, 0x33C5,
+ 0x93C6, 0x93C6, 0x2002, 0x93C7, 0x93CE, 0x33CD, 0x93CF, 0x93CF, 0x2093,
+ 0x93D0, 0x93D6, 0x33D5, 0x93D7, 0x93D7, 0x235F, 0x93D8, 0x93DA, 0x33DC,
+ 0x93DB, 0x93DB, 0x1EAC, 0x93DC, 0x93DC, 0x1E54, 0x93DD, 0x93E0, 0x33DF,
+ 0x93E1, 0x93E1, 0x1F08, 0x93E2, 0x93E3, 0x33E3, 0x93E4, 0x93E4, 0x20C0,
+ 0x93E5, 0x93E5, 0x2362, 0x93E6, 0x93E8, 0x33E5, 0x93E9, 0x93E9, 0x2160,
+ 0x93EA, 0x93EA, 0x33E8, 0x93EB, 0x93EB, 0x219D, 0x93EC, 0x93EC, 0x1F8E,
+ 0x93ED, 0x93ED, 0x222D, 0x93EE, 0x93EE, 0x33E9, 0x93EF, 0x93EF, 0x2047,
+ 0x93F0, 0x93F0, 0x33EA, 0x93F1, 0x93F1, 0x2262, 0x93F2, 0x93F3, 0x33EB,
+ 0x93F4, 0x93F4, 0x1F67, 0x93F5, 0x93F5, 0x1EB2, 0x93F6, 0x93F9, 0x33ED,
+ 0x93FA, 0x93FA, 0x1EA9, 0x93FB, 0x93FD, 0x33F1, 0x93FE, 0x93FE, 0x1FCC,
+ 0x9440, 0x9443, 0x33F4, 0x9444, 0x9444, 0x1F72, 0x9445, 0x944C, 0x33F8,
+ 0x944D, 0x944D, 0x2098, 0x944E, 0x944F, 0x3400, 0x9450, 0x9450, 0x1E52,
+ 0x9451, 0x9451, 0x20A4, 0x9452, 0x9452, 0x1F1C, 0x9453, 0x9453, 0x228F,
+ 0x9454, 0x9454, 0x3402, 0x9455, 0x9455, 0x1FED, 0x9456, 0x9457, 0x3403,
+ 0x9458, 0x9458, 0x2365, 0x9459, 0x945A, 0x3405, 0x945B, 0x945B, 0x1E2D,
+ 0x945C, 0x945C, 0x2152, 0x945D, 0x945D, 0x2366, 0x945E, 0x945E, 0x3407,
+ 0x945F, 0x945F, 0x20FA, 0x9460, 0x9463, 0x3408, 0x9464, 0x9464, 0x2363,
+ 0x9465, 0x9465, 0x340C, 0x9466, 0x9466, 0x209A, 0x9467, 0x946D, 0x340D,
+ 0x946E, 0x946E, 0x203C, 0x946F, 0x9471, 0x3414, 0x9472, 0x9472, 0x1FF6,
+ 0x9473, 0x9473, 0x3417, 0x9474, 0x9474, 0x2364, 0x9475, 0x9475, 0x3418,
+ 0x9476, 0x9476, 0x1E69, 0x9477, 0x9477, 0x3419, 0x9478, 0x9478, 0x2367,
+ 0x9479, 0x9479, 0x341A, 0x947A, 0x947A, 0x211D, 0x947B, 0x947E, 0x341B,
+ 0x9480, 0x9480, 0x2259, 0x9481, 0x9481, 0x2056, 0x9482, 0x9482, 0x2163,
+ 0x9483, 0x9486, 0x341F, 0x9487, 0x9487, 0x1FA9, 0x9488, 0x9488, 0x1FFC,
+ 0x9489, 0x94A0, 0x3423, 0x94A1, 0x94A1, 0x1E2E, 0x94A2, 0x94B2, 0x343B,
+ 0x94B3, 0x94B3, 0x1EBC, 0x94B4, 0x94B4, 0x344C, 0x94B5, 0x94B5, 0x2142,
+ 0x94B6, 0x94BE, 0x344D, 0x94BF, 0x94BF, 0x201E, 0x94C0, 0x94C0, 0x1E43,
+ 0x94C1, 0x94CB, 0x3456, 0x94CC, 0x94CC, 0x24D4, 0x94CD, 0x94D7, 0x3461,
+ 0x94D8, 0x94D8, 0x226F, 0x94D9, 0x94DF, 0x346C, 0x94E0, 0x94E0, 0x1ED7,
+ 0x94E1, 0x94FE, 0x3473, 0x9540, 0x9571, 0x3491, 0x9572, 0x9572, 0x212D,
+ 0x9573, 0x957E, 0x34C3, 0x9580, 0x9582, 0x34CF, 0x9583, 0x9583, 0x229B,
+ 0x9584, 0x959D, 0x34D2, 0x959E, 0x959E, 0x2256, 0x959F, 0x959F, 0x24A8,
+ 0x95A0, 0x95B2, 0x34EC, 0x95B3, 0x95B3, 0x1E79, 0x95B4, 0x95B9, 0x34FF,
+ 0x95BA, 0x95BA, 0x225A, 0x95BB, 0x95CE, 0x3505, 0x95CF, 0x95CF, 0x24A7,
+ 0x95D0, 0x95D0, 0x3519, 0x95D1, 0x95D1, 0x2686, 0x95D2, 0x95D2, 0x24A6,
+ 0x95D3, 0x95D3, 0x351A, 0x95D4, 0x95D4, 0x21CE, 0x95D5, 0x95E0, 0x351B,
+ 0x95E1, 0x95E1, 0x24A9, 0x95E2, 0x95E6, 0x3527, 0x95E7, 0x95E7, 0x1FE7,
+ 0x95E8, 0x95F0, 0x352C, 0x95F1, 0x95F1, 0x2112, 0x95F2, 0x95F7, 0x3535,
+ 0x95F8, 0x95F8, 0x213C, 0x95F9, 0x95FD, 0x353B, 0x95FE, 0x95FE, 0x1F5C,
+ 0x9640, 0x9655, 0x3540, 0x9656, 0x9656, 0x24C4, 0x9657, 0x967B, 0x3556,
+ 0x967C, 0x967C, 0x1ECC, 0x967D, 0x967E, 0x357B, 0x9680, 0x96FE, 0x357D,
+ 0x9740, 0x9766, 0x35FC, 0x9767, 0x9767, 0x246A, 0x9768, 0x976B, 0x3623,
+ 0x976C, 0x976C, 0x2175, 0x976D, 0x976D, 0x3627, 0x976E, 0x976E, 0x246D,
+ 0x976F, 0x977E, 0x3628, 0x9780, 0x9795, 0x3638, 0x9796, 0x9796, 0x246B,
+ 0x9797, 0x9797, 0x225F, 0x9798, 0x979C, 0x364E, 0x979D, 0x979D, 0x1ECE,
+ 0x979E, 0x97A2, 0x3653, 0x97A3, 0x97A3, 0x2272, 0x97A4, 0x97BE, 0x3658,
+ 0x97BF, 0x97BF, 0x2473, 0x97C0, 0x97ED, 0x3673, 0x97EE, 0x97EE, 0x21FE,
+ 0x97EF, 0x97F6, 0x36A1, 0x97F7, 0x97F7, 0x1EFE, 0x97F8, 0x97FE, 0x36A9,
+ 0x9840, 0x9844, 0x36B0, 0x9845, 0x9845, 0x2475, 0x9846, 0x9848, 0x36B5,
+ 0x9849, 0x9849, 0x220A, 0x984A, 0x984E, 0x36B8, 0x984F, 0x984F, 0x1F6F,
+ 0x9850, 0x9870, 0x36BD, 0x9871, 0x9871, 0x2468, 0x9872, 0x9872, 0x36DE,
+ 0x9873, 0x9873, 0x2100, 0x9874, 0x987E, 0x36DF, 0x9880, 0x9880, 0x36EA,
+ 0x9881, 0x9881, 0x2476, 0x9882, 0x988A, 0x36EB, 0x988B, 0x988B, 0x1F27,
+ 0x988C, 0x988C, 0x20D7, 0x988D, 0x989F, 0x36F4, 0x98A0, 0x98A0, 0x247C,
+ 0x98A1, 0x98A9, 0x3707, 0x98AA, 0x98AA, 0x1FA1, 0x98AB, 0x98B5, 0x3710,
+ 0x98B6, 0x98B6, 0x22AA, 0x98B7, 0x98B7, 0x2005, 0x98B8, 0x98B9, 0x371B,
+ 0x98BA, 0x98BA, 0x246C, 0x98BB, 0x98C6, 0x371D, 0x98C7, 0x98C7, 0x203E,
+ 0x98C8, 0x98CA, 0x3729, 0x98CB, 0x98CB, 0x1E4C, 0x98CC, 0x98CF, 0x372C,
+ 0x98D0, 0x98D0, 0x213A, 0x98D1, 0x98D2, 0x3730, 0x98D3, 0x98D3, 0x2204,
+ 0x98D4, 0x98E2, 0x3732, 0x98E3, 0x98E3, 0x20C3, 0x98E4, 0x98E4, 0x2140,
+ 0x98E5, 0x98E5, 0x2477, 0x98E6, 0x98EE, 0x3741, 0x98EF, 0x98EF, 0x2474,
+ 0x98F0, 0x98F1, 0x374A, 0x98F2, 0x98F2, 0x20DD, 0x98F3, 0x98FE, 0x374C,
+ 0x9940, 0x9942, 0x3758, 0x9943, 0x9943, 0x1F68, 0x9944, 0x9944, 0x375B,
+ 0x9945, 0x9945, 0x2185, 0x9946, 0x9965, 0x375C, 0x9966, 0x9966, 0x2472,
+ 0x9967, 0x996D, 0x377C, 0x996E, 0x996E, 0x1EB5, 0x996F, 0x9974, 0x3783,
+ 0x9975, 0x9975, 0x2478, 0x9976, 0x9979, 0x3789, 0x997A, 0x997A, 0x1F8B,
+ 0x997B, 0x997B, 0x2484, 0x997C, 0x997E, 0x378D, 0x9980, 0x9984, 0x3790,
+ 0x9985, 0x9985, 0x2699, 0x9986, 0x9988, 0x3795, 0x9989, 0x9989, 0x2482,
+ 0x998A, 0x998D, 0x3798, 0x998E, 0x998E, 0x20A1, 0x998F, 0x9990, 0x379C,
+ 0x9991, 0x9991, 0x1F92, 0x9992, 0x9998, 0x379E, 0x9999, 0x9999, 0x1F38,
+ 0x999A, 0x99A8, 0x37A5, 0x99A9, 0x99A9, 0x2485, 0x99AA, 0x99AF, 0x37B4,
+ 0x99B0, 0x99B0, 0x2480, 0x99B1, 0x99B1, 0x246E, 0x99B2, 0x99B2, 0x37BA,
+ 0x99B3, 0x99B3, 0x247B, 0x99B4, 0x99B4, 0x2486, 0x99B5, 0x99B5, 0x2471,
+ 0x99B6, 0x99BC, 0x37BB, 0x99BD, 0x99BD, 0x2483, 0x99BE, 0x99BE, 0x2470,
+ 0x99BF, 0x99BF, 0x37C2, 0x99C0, 0x99C0, 0x2469, 0x99C1, 0x99C1, 0x37C3,
+ 0x99C2, 0x99C2, 0x247F, 0x99C3, 0x99C8, 0x37C4, 0x99C9, 0x99C9, 0x246F,
+ 0x99CA, 0x99CD, 0x37CA, 0x99CE, 0x99CE, 0x2481, 0x99CF, 0x99D0, 0x37CE,
+ 0x99D1, 0x99D1, 0x2220, 0x99D2, 0x99D9, 0x37D0, 0x99DA, 0x99DA, 0x1FF5,
+ 0x99DB, 0x99DF, 0x37D8, 0x99E0, 0x99E0, 0x20F4, 0x99E1, 0x99E4, 0x37DD,
+ 0x99E5, 0x99E5, 0x247D, 0x99E6, 0x99E7, 0x37E1, 0x99E8, 0x99E8, 0x2479,
+ 0x99E9, 0x99EB, 0x37E3, 0x99EC, 0x99EC, 0x247E, 0x99ED, 0x99F3, 0x37E6,
+ 0x99F4, 0x99F4, 0x247A, 0x99F5, 0x99FE, 0x37ED, 0x9A40, 0x9A49, 0x37F7,
+ 0x9A4A, 0x9A4A, 0x20E3, 0x9A4B, 0x9A56, 0x3801, 0x9A57, 0x9A57, 0x20AD,
+ 0x9A58, 0x9A64, 0x380D, 0x9A65, 0x9A65, 0x24CB, 0x9A66, 0x9A66, 0x381A,
+ 0x9A67, 0x9A67, 0x1F53, 0x9A68, 0x9A70, 0x381B, 0x9A71, 0x9A71, 0x2159,
+ 0x9A72, 0x9A75, 0x3824, 0x9A76, 0x9A76, 0x2013, 0x9A77, 0x9A77, 0x1F33,
+ 0x9A78, 0x9A7E, 0x3828, 0x9A80, 0x9A87, 0x382F, 0x9A88, 0x9A88, 0x1E5C,
+ 0x9A89, 0x9A8B, 0x3837, 0x9A8C, 0x9A8C, 0x2488, 0x9A8D, 0x9A90, 0x383A,
+ 0x9A91, 0x9A91, 0x2487, 0x9A92, 0x9A96, 0x383E, 0x9A97, 0x9A97, 0x248A,
+ 0x9A98, 0x9A99, 0x3843, 0x9A9A, 0x9A9A, 0x2489, 0x9A9B, 0x9A9B, 0x248B,
+ 0x9A9C, 0x9A9D, 0x3845, 0x9A9E, 0x9A9E, 0x1F83, 0x9A9F, 0x9AA1, 0x3847,
+ 0x9AA2, 0x9AA2, 0x210F, 0x9AA3, 0x9AA3, 0x1FDB, 0x9AA4, 0x9AA9, 0x384A,
+ 0x9AAA, 0x9AAA, 0x20AF, 0x9AAB, 0x9ACF, 0x3850, 0x9AD0, 0x9AD0, 0x24C0,
+ 0x9AD1, 0x9AD5, 0x3875, 0x9AD6, 0x9AD6, 0x226D, 0x9AD7, 0x9AD9, 0x387A,
+ 0x9ADA, 0x9ADA, 0x24C1, 0x9ADB, 0x9AE1, 0x387D, 0x9AE2, 0x9AE2, 0x20CA,
+ 0x9AE3, 0x9AE3, 0x3884, 0x9AE4, 0x9AE4, 0x20E7, 0x9AE5, 0x9AE5, 0x24C2,
+ 0x9AE6, 0x9AFE, 0x3885, 0x9B40, 0x9B7E, 0x389E, 0x9B80, 0x9BD0, 0x38DD,
+ 0x9BD1, 0x9BD1, 0x23DC, 0x9BD2, 0x9BDB, 0x392E, 0x9BDC, 0x9BDC, 0x23DB,
+ 0x9BDD, 0x9BFE, 0x3938, 0x9C40, 0x9C52, 0x395A, 0x9C53, 0x9C53, 0x205E,
+ 0x9C54, 0x9C58, 0x396D, 0x9C59, 0x9C59, 0x2244, 0x9C5A, 0x9C5A, 0x23E2,
+ 0x9C5B, 0x9C5B, 0x3972, 0x9C5C, 0x9C5C, 0x20D4, 0x9C5D, 0x9C74, 0x3973,
+ 0x9C75, 0x9C75, 0x219F, 0x9C76, 0x9C78, 0x398B, 0x9C79, 0x9C79, 0x1E66,
+ 0x9C7A, 0x9C7E, 0x398E, 0x9C80, 0x9C85, 0x3993, 0x9C86, 0x9C86, 0x1F63,
+ 0x9C87, 0x9C9C, 0x3999, 0x9C9D, 0x9C9D, 0x23DD, 0x9C9E, 0x9CAA, 0x39AF,
+ 0x9CAB, 0x9CAB, 0x216B, 0x9CAC, 0x9CC9, 0x39BC, 0x9CCA, 0x9CCA, 0x22B5,
+ 0x9CCB, 0x9CCE, 0x39DA, 0x9CCF, 0x9CCF, 0x1F26, 0x9CD0, 0x9CE5, 0x39DE,
+ 0x9CE6, 0x9CE6, 0x1E63, 0x9CE7, 0x9CE7, 0x2088, 0x9CE8, 0x9CEB, 0x39F4,
+ 0x9CEC, 0x9CEC, 0x1EBD, 0x9CED, 0x9CED, 0x39F8, 0x9CEE, 0x9CEE, 0x2341,
+ 0x9CEF, 0x9CFA, 0x39F9, 0x9CFB, 0x9CFB, 0x1F4B, 0x9CFC, 0x9CFD, 0x3A05,
+ 0x9CFE, 0x9CFE, 0x2292, 0x9D40, 0x9D41, 0x3A07, 0x9D42, 0x9D42, 0x2124,
+ 0x9D43, 0x9D45, 0x3A09, 0x9D46, 0x9D46, 0x2048, 0x9D47, 0x9D47, 0x23E0,
+ 0x9D48, 0x9D4C, 0x3A0C, 0x9D4D, 0x9D4D, 0x2077, 0x9D4E, 0x9D4E, 0x3A11,
+ 0x9D4F, 0x9D4F, 0x223A, 0x9D50, 0x9D60, 0x3A12, 0x9D61, 0x9D61, 0x20B1,
+ 0x9D62, 0x9D67, 0x3A23, 0x9D68, 0x9D68, 0x1F41, 0x9D69, 0x9D69, 0x201C,
+ 0x9D6A, 0x9D6D, 0x3A29, 0x9D6E, 0x9D6E, 0x22B8, 0x9D6F, 0x9D70, 0x3A2D,
+ 0x9D71, 0x9D71, 0x2276, 0x9D72, 0x9D74, 0x3A2F, 0x9D75, 0x9D75, 0x1F9B,
+ 0x9D76, 0x9D7A, 0x3A32, 0x9D7B, 0x9D7B, 0x1F9F, 0x9D7C, 0x9D7C, 0x3A37,
+ 0x9D7D, 0x9D7D, 0x25CA, 0x9D7E, 0x9D7E, 0x3A38, 0x9D80, 0x9D89, 0x3A39,
+ 0x9D8A, 0x9D8A, 0x20BE, 0x9D8B, 0x9D8C, 0x3A43, 0x9D8D, 0x9D8D, 0x1FB4,
+ 0x9D8E, 0x9D90, 0x3A45, 0x9D91, 0x9D91, 0x23D7, 0x9D92, 0x9D98, 0x3A48,
+ 0x9D99, 0x9D99, 0x2105, 0x9D9A, 0x9DA0, 0x3A4F, 0x9DA1, 0x9DA1, 0x23E1,
+ 0x9DA2, 0x9DA2, 0x1FEC, 0x9DA3, 0x9DA6, 0x3A56, 0x9DA7, 0x9DA7, 0x23EA,
+ 0x9DA8, 0x9DAB, 0x3A5A, 0x9DAC, 0x9DAC, 0x23E3, 0x9DAD, 0x9DAD, 0x210E,
+ 0x9DAE, 0x9DB1, 0x3A5E, 0x9DB2, 0x9DB2, 0x1FA6, 0x9DB3, 0x9DB3, 0x2004,
+ 0x9DB4, 0x9DBD, 0x3A62, 0x9DBE, 0x9DBE, 0x1F9D, 0x9DBF, 0x9DC5, 0x3A6C,
+ 0x9DC6, 0x9DC6, 0x23E5, 0x9DC7, 0x9DC8, 0x3A73, 0x9DC9, 0x9DC9, 0x2264,
+ 0x9DCA, 0x9DCC, 0x3A75, 0x9DCD, 0x9DCD, 0x24E2, 0x9DCE, 0x9DD1, 0x3A78,
+ 0x9DD2, 0x9DD2, 0x23DE, 0x9DD3, 0x9DD4, 0x3A7C, 0x9DD5, 0x9DD5, 0x1EC4,
+ 0x9DD6, 0x9DE0, 0x3A7E, 0x9DE1, 0x9DE1, 0x22B6, 0x9DE2, 0x9DE2, 0x20A9,
+ 0x9DE3, 0x9DF0, 0x3A89, 0x9DF1, 0x9DF1, 0x212B, 0x9DF2, 0x9DF3, 0x3A97,
+ 0x9DF4, 0x9DF4, 0x20A5, 0x9DF5, 0x9DF6, 0x3A99, 0x9DF7, 0x9DF7, 0x268B,
+ 0x9DF8, 0x9DF9, 0x3A9B, 0x9DFA, 0x9DFA, 0x1F76, 0x9DFB, 0x9DFC, 0x3A9D,
+ 0x9DFD, 0x9DFD, 0x216D, 0x9DFE, 0x9DFE, 0x3A9F, 0x9E40, 0x9E44, 0x3AA0,
+ 0x9E45, 0x9E45, 0x2001, 0x9E46, 0x9E47, 0x3AA5, 0x9E48, 0x9E48, 0x2191,
+ 0x9E49, 0x9E49, 0x1E50, 0x9E4A, 0x9E51, 0x3AA7, 0x9E52, 0x9E52, 0x1F9C,
+ 0x9E53, 0x9E53, 0x3AAF, 0x9E54, 0x9E54, 0x23DA, 0x9E55, 0x9E55, 0x3AB0,
+ 0x9E56, 0x9E56, 0x2053, 0x9E57, 0x9E5C, 0x3AB1, 0x9E5D, 0x9E5D, 0x23E9,
+ 0x9E5E, 0x9E5E, 0x23E4, 0x9E5F, 0x9E60, 0x3AB7, 0x9E61, 0x9E61, 0x21D5,
+ 0x9E62, 0x9E62, 0x3AB9, 0x9E63, 0x9E63, 0x23E6, 0x9E64, 0x9E66, 0x3ABA,
+ 0x9E67, 0x9E67, 0x23DF, 0x9E68, 0x9E6B, 0x3ABD, 0x9E6C, 0x9E6C, 0x1E4F,
+ 0x9E6D, 0x9E6E, 0x3AC1, 0x9E6F, 0x9E6F, 0x23D9, 0x9E70, 0x9E71, 0x3AC3,
+ 0x9E72, 0x9E72, 0x2014, 0x9E73, 0x9E73, 0x3AC5, 0x9E74, 0x9E74, 0x23EC,
+ 0x9E75, 0x9E75, 0x23EB, 0x9E76, 0x9E7A, 0x3AC6, 0x9E7B, 0x9E7B, 0x23D8,
+ 0x9E7C, 0x9E7C, 0x23EE, 0x9E7D, 0x9E7E, 0x3ACB, 0x9E80, 0x9E84, 0x3ACD,
+ 0x9E85, 0x9E85, 0x268E, 0x9E86, 0x9E86, 0x3AD2, 0x9E87, 0x9E87, 0x23ED,
+ 0x9E88, 0x9E90, 0x3AD3, 0x9E91, 0x9E91, 0x1FFA, 0x9E92, 0x9E95, 0x3ADC,
+ 0x9E96, 0x9E96, 0x23D6, 0x9E97, 0x9E97, 0x23E8, 0x9E98, 0x9EA1, 0x3AE0,
+ 0x9EA2, 0x9EA2, 0x2106, 0x9EA3, 0x9EA5, 0x3AEA, 0x9EA6, 0x9EA6, 0x200B,
+ 0x9EA7, 0x9EA8, 0x3AED, 0x9EA9, 0x9EA9, 0x2166, 0x9EAA, 0x9EAD, 0x3AEF,
+ 0x9EAE, 0x9EAE, 0x23EF, 0x9EAF, 0x9EB2, 0x3AF3, 0x9EB3, 0x9EB3, 0x2189,
+ 0x9EB4, 0x9EB4, 0x2058, 0x9EB5, 0x9EB6, 0x3AF7, 0x9EB7, 0x9EB7, 0x23E7,
+ 0x9EB8, 0x9EF4, 0x3AF9, 0x9EF5, 0x9EF5, 0x21A3, 0x9EF6, 0x9EFE, 0x3B36,
+ 0x9F40, 0x9F4D, 0x3B3F, 0x9F4E, 0x9F4E, 0x217A, 0x9F4F, 0x9F6E, 0x3B4D,
+ 0x9F6F, 0x9F6F, 0x21A5, 0x9F70, 0x9F7E, 0x3B6D, 0x9F80, 0x9F91, 0x3B7C,
+ 0x9F92, 0x9F92, 0x2022, 0x9F93, 0x9F97, 0x3B8E, 0x9F98, 0x9F98, 0x24D6,
+ 0x9F99, 0x9FA5, 0x3B93, 0x9FA6, 0x9FA6, 0x233A, 0x9FA7, 0x9FA8, 0x3BA0,
+ 0x9FA9, 0x9FA9, 0x1EEE, 0x9FAA, 0x9FAB, 0x3BA2, 0x9FAC, 0x9FAC, 0x24D5,
+ 0x9FAD, 0x9FC8, 0x3BA4, 0x9FC9, 0x9FC9, 0x2228, 0x9FCA, 0x9FCC, 0x3BC0,
+ 0x9FCD, 0x9FCD, 0x24D7, 0x9FCE, 0x9FE0, 0x3BC3, 0x9FE1, 0x9FE1, 0x20FC,
+ 0x9FE2, 0x9FEA, 0x3BD6, 0x9FEB, 0x9FEB, 0x1E87, 0x9FEC, 0x9FED, 0x3BDF,
+ 0x9FEE, 0x9FEE, 0x24D8, 0x9FEF, 0x9FF3, 0x3BE1, 0x9FF4, 0x9FF4, 0x1EBA,
+ 0x9FF5, 0x9FFC, 0x3BE6, 0x9FFD, 0x9FFD, 0x2119, 0x9FFE, 0x9FFE, 0x3BEE,
+ 0xA040, 0xA042, 0x3BEF, 0xA043, 0xA043, 0x216C, 0xA044, 0xA045, 0x3BF2,
+ 0xA046, 0xA046, 0x24D9, 0xA047, 0xA048, 0x3BF4, 0xA049, 0xA049, 0x2227,
+ 0xA04A, 0xA04D, 0x3BF6, 0xA04E, 0xA04E, 0x1E5F, 0xA04F, 0xA053, 0x3BFA,
+ 0xA054, 0xA054, 0x229F, 0xA055, 0xA059, 0x3BFF, 0xA05A, 0xA05A, 0x1F5D,
+ 0xA05B, 0xA060, 0x3C04, 0xA061, 0xA061, 0x1FBC, 0xA062, 0xA062, 0x3C0A,
+ 0xA063, 0xA063, 0x24DA, 0xA064, 0xA070, 0x3C0B, 0xA071, 0xA071, 0x2149,
+ 0xA072, 0xA073, 0x3C18, 0xA074, 0xA074, 0x2046, 0xA075, 0xA07E, 0x3C1A,
+ 0xA080, 0xA080, 0x2000, 0xA081, 0xA090, 0x3C24, 0xA091, 0xA091, 0x2190,
+ 0xA092, 0xA093, 0x3C34, 0xA094, 0xA094, 0x2208, 0xA095, 0xA095, 0x3C36,
+ 0xA096, 0xA096, 0x1EE6, 0xA097, 0xA0A8, 0x3C37, 0xA0A9, 0xA0A9, 0x24C3,
+ 0xA0AA, 0xA0BE, 0x3C49, 0xA0BF, 0xA0BF, 0x20CC, 0xA0C0, 0xA0CD, 0x3C5E,
+ 0xA0CE, 0xA0CE, 0x2340, 0xA0CF, 0xA0D8, 0x3C6C, 0xA0D9, 0xA0D9, 0x1ED1,
+ 0xA0DA, 0xA0DD, 0x3C76, 0xA0DE, 0xA0DE, 0x21AC, 0xA0DF, 0xA0ED, 0x3C7A,
+ 0xA0EE, 0xA0EE, 0x22AF, 0xA0EF, 0xA0FE, 0x3C89, 0xA1A1, 0xA1FE, 0x0060,
+ 0xA2A1, 0xA2AA, 0x26A9, 0xA2B1, 0xA2E2, 0x00BE, 0xA2E3, 0xA2E3, 0x5751,
+ 0xA2E5, 0xA2EE, 0x00F0, 0xA2F1, 0xA2FC, 0x00FA, 0xA3A1, 0xA3FE, 0x0106,
+ 0xA4A1, 0xA4F3, 0x0164, 0xA5A1, 0xA5F6, 0x01B7, 0xA6A1, 0xA6B8, 0x020D,
+ 0xA6C1, 0xA6F5, 0x0225, 0xA7A1, 0xA7C1, 0x025A, 0xA7D1, 0xA7F1, 0x027B,
+ 0xA840, 0xA87E, 0x26B3, 0xA880, 0xA895, 0x26F2, 0xA8A1, 0xA8C0, 0x029C,
+ 0xA8C5, 0xA8EA, 0x02BC, 0xA940, 0xA957, 0x2708, 0xA959, 0xA95A, 0x2720,
+ 0xA95C, 0xA95C, 0x2722, 0xA960, 0xA97E, 0x2723, 0xA980, 0xA995, 0x2742,
+ 0xA996, 0xA996, 0x1E17, 0xA9A4, 0xA9EF, 0x02E2, 0xAA40, 0xAA4C, 0x3C99,
+ 0xAA4D, 0xAA4D, 0x21B6, 0xAA4E, 0xAA4E, 0x1E3D, 0xAA4F, 0xAA70, 0x3CA6,
+ 0xAA71, 0xAA71, 0x2235, 0xAA72, 0xAA72, 0x3CC8, 0xAA73, 0xAA73, 0x2397,
+ 0xAA74, 0xAA76, 0x3CC9, 0xAA77, 0xAA77, 0x2395, 0xAA78, 0xAA79, 0x3CCC,
+ 0xAA7A, 0xAA7A, 0x223F, 0xAA7B, 0xAA7B, 0x212A, 0xAA7C, 0xAA7E, 0x3CCE,
+ 0xAA80, 0xAA99, 0x3CD1, 0xAA9A, 0xAA9A, 0x1ED2, 0xAA9B, 0xAA9B, 0x3CEB,
+ 0xAA9C, 0xAA9C, 0x2396, 0xAA9D, 0xAA9D, 0x2398, 0xAA9E, 0xAA9E, 0x3CEC,
+ 0xAA9F, 0xAA9F, 0x20A2, 0xAAA0, 0xAAA0, 0x3CED, 0xAAA1, 0xAAFE, 0x032E,
+ 0xAB40, 0xAB40, 0x1F64, 0xAB41, 0xAB42, 0x3CEE, 0xAB43, 0xAB43, 0x202B,
+ 0xAB44, 0xAB44, 0x3CF0, 0xAB45, 0xAB45, 0x2394, 0xAB46, 0xAB46, 0x2139,
+ 0xAB47, 0xAB47, 0x3CF1, 0xAB48, 0xAB48, 0x215F, 0xAB49, 0xAB49, 0x21C1,
+ 0xAB4A, 0xAB4A, 0x239A, 0xAB4B, 0xAB4C, 0x3CF2, 0xAB4D, 0xAB4D, 0x2399,
+ 0xAB4E, 0xAB7E, 0x3CF4, 0xAB80, 0xABA0, 0x3D25, 0xABA1, 0xABC0, 0x038C,
+ 0xAC40, 0xAC45, 0x3D46, 0xAC46, 0xAC46, 0x21C0, 0xAC47, 0xAC70, 0x3D4C,
+ 0xAC71, 0xAC71, 0x2460, 0xAC72, 0xAC7B, 0x3D76, 0xAC7C, 0xAC7C, 0x245C,
+ 0xAC7D, 0xAC7E, 0x3D80, 0xAC80, 0xAC8C, 0x3D82, 0xAC8D, 0xAC8D, 0x215D,
+ 0xAC8E, 0xAC92, 0x3D8F, 0xAC93, 0xAC93, 0x2225, 0xAC94, 0xAC94, 0x206A,
+ 0xAC95, 0xACA0, 0x3D94, 0xAD40, 0xAD48, 0x3DA0, 0xAD49, 0xAD49, 0x2461,
+ 0xAD4A, 0xAD5D, 0x3DA9, 0xAD5E, 0xAD5E, 0x245B, 0xAD5F, 0xAD60, 0x3DBD,
+ 0xAD61, 0xAD61, 0x2462, 0xAD62, 0xAD67, 0x3DBF, 0xAD68, 0xAD68, 0x1F54,
+ 0xAD69, 0xAD73, 0x3DC5, 0xAD74, 0xAD74, 0x245F, 0xAD75, 0xAD7E, 0x3DD0,
+ 0xAD80, 0xAD81, 0x3DDA, 0xAD82, 0xAD82, 0x20EC, 0xAD83, 0xAD86, 0x3DDC,
+ 0xAD87, 0xAD87, 0x245D, 0xAD88, 0xAD8A, 0x3DE0, 0xAD8B, 0xAD8B, 0x2463,
+ 0xAD8C, 0xAD90, 0x3DE3, 0xAD91, 0xAD91, 0x2464, 0xAD92, 0xADA0, 0x3DE8,
+ 0xAE40, 0xAE53, 0x3DF7, 0xAE54, 0xAE54, 0x24A5, 0xAE55, 0xAE61, 0x3E0B,
+ 0xAE62, 0xAE62, 0x1E70, 0xAE63, 0xAE7E, 0x3E18, 0xAE80, 0xAE80, 0x208F,
+ 0xAE81, 0xAE84, 0x3E34, 0xAE85, 0xAE85, 0x1E42, 0xAE86, 0xAE8A, 0x3E38,
+ 0xAE8B, 0xAE8B, 0x1F4E, 0xAE8C, 0xAE93, 0x3E3D, 0xAE94, 0xAE94, 0x1EB1,
+ 0xAE95, 0xAE9F, 0x3E45, 0xAEA0, 0xAEA0, 0x1E8B, 0xAF40, 0xAF63, 0x3E50,
+ 0xAF64, 0xAF64, 0x1FC6, 0xAF65, 0xAF7A, 0x3E74, 0xAF7B, 0xAF7B, 0x25AE,
+ 0xAF7C, 0xAF7E, 0x3E8A, 0xAF80, 0xAF81, 0x3E8D, 0xAF82, 0xAF82, 0x1F01,
+ 0xAF83, 0xAF83, 0x2200, 0xAF84, 0xAF8D, 0x3E8F, 0xAF8E, 0xAF8E, 0x25B2,
+ 0xAF8F, 0xAF8F, 0x1E97, 0xAF90, 0xAF90, 0x3E99, 0xAF91, 0xAF91, 0x20AB,
+ 0xAF92, 0xAF9B, 0x3E9A, 0xAF9C, 0xAF9C, 0x25B3, 0xAF9D, 0xAF9E, 0x3EA4,
+ 0xAF9F, 0xAF9F, 0x2028, 0xAFA0, 0xAFA0, 0x3EA6, 0xB040, 0xB040, 0x3EA7,
+ 0xB041, 0xB042, 0x25AF, 0xB043, 0xB043, 0x3EA8, 0xB044, 0xB044, 0x25B1,
+ 0xB045, 0xB04E, 0x3EA9, 0xB04F, 0xB04F, 0x25AC, 0xB050, 0xB053, 0x3EB3,
+ 0xB054, 0xB054, 0x1E4E, 0xB055, 0xB056, 0x3EB7, 0xB057, 0xB057, 0x2202,
+ 0xB058, 0xB058, 0x25AB, 0xB059, 0xB059, 0x2286, 0xB05A, 0xB05A, 0x3EB9,
+ 0xB05B, 0xB05B, 0x25AD, 0xB05C, 0xB05C, 0x3EBA, 0xB05D, 0xB05D, 0x25B6,
+ 0xB05E, 0xB05E, 0x3EBB, 0xB05F, 0xB05F, 0x21E3, 0xB060, 0xB061, 0x25B4,
+ 0xB062, 0xB062, 0x222F, 0xB063, 0xB063, 0x2165, 0xB064, 0xB064, 0x25B7,
+ 0xB065, 0xB06B, 0x3EBC, 0xB06C, 0xB06C, 0x1EE9, 0xB06D, 0xB07C, 0x3EC3,
+ 0xB07D, 0xB07D, 0x1E25, 0xB07E, 0xB07E, 0x3ED3, 0xB080, 0xB096, 0x3ED4,
+ 0xB097, 0xB097, 0x25C0, 0xB098, 0xB098, 0x3EEB, 0xB099, 0xB099, 0x229A,
+ 0xB09A, 0xB0A0, 0x3EEC, 0xB0A1, 0xB0FE, 0x03AC, 0xB140, 0xB14A, 0x3EF3,
+ 0xB14B, 0xB14B, 0x226E, 0xB14C, 0xB14C, 0x3EFE, 0xB14D, 0xB14D, 0x1FBD,
+ 0xB14E, 0xB14E, 0x3EFF, 0xB14F, 0xB14F, 0x1F84, 0xB150, 0xB150, 0x20B2,
+ 0xB151, 0xB151, 0x3F00, 0xB152, 0xB152, 0x2043, 0xB153, 0xB17E, 0x3F01,
+ 0xB180, 0xB196, 0x3F2D, 0xB197, 0xB197, 0x2684, 0xB198, 0xB1A0, 0x3F44,
+ 0xB1A1, 0xB1FE, 0x040A, 0xB240, 0xB240, 0x3F4D, 0xB241, 0xB241, 0x24EF,
+ 0xB242, 0xB266, 0x3F4E, 0xB267, 0xB267, 0x24EE, 0xB268, 0xB26C, 0x3F73,
+ 0xB26D, 0xB26D, 0x2074, 0xB26E, 0xB273, 0x3F78, 0xB274, 0xB274, 0x2687,
+ 0xB275, 0xB27E, 0x3F7E, 0xB280, 0xB280, 0x24F0, 0xB281, 0xB288, 0x3F88,
+ 0xB289, 0xB289, 0x268D, 0xB28A, 0xB299, 0x3F90, 0xB29A, 0xB29A, 0x22A0,
+ 0xB29B, 0xB2A0, 0x3FA0, 0xB2A1, 0xB2FE, 0x0468, 0xB340, 0xB342, 0x3FA6,
+ 0xB343, 0xB343, 0x1FAB, 0xB344, 0xB36F, 0x3FA9, 0xB370, 0xB370, 0x26A8,
+ 0xB371, 0xB37E, 0x3FD5, 0xB380, 0xB387, 0x3FE3, 0xB388, 0xB388, 0x24E9,
+ 0xB389, 0xB38B, 0x3FEB, 0xB38C, 0xB38C, 0x24E5, 0xB38D, 0xB38D, 0x3FEE,
+ 0xB38E, 0xB38E, 0x21FA, 0xB38F, 0xB3A0, 0x3FEF, 0xB3A1, 0xB3FE, 0x04C6,
+ 0xB440, 0xB453, 0x4001, 0xB454, 0xB454, 0x2148, 0xB455, 0xB457, 0x4015,
+ 0xB458, 0xB458, 0x24E4, 0xB459, 0xB45D, 0x4018, 0xB45E, 0xB45E, 0x24E6,
+ 0xB45F, 0xB45F, 0x20F7, 0xB460, 0xB460, 0x401D, 0xB461, 0xB461, 0x206B,
+ 0xB462, 0xB474, 0x401E, 0xB475, 0xB475, 0x22A7, 0xB476, 0xB47D, 0x4031,
+ 0xB47E, 0xB47E, 0x24EC, 0xB480, 0xB482, 0x4039, 0xB483, 0xB483, 0x24EB,
+ 0xB484, 0xB488, 0x403C, 0xB489, 0xB489, 0x24E3, 0xB48A, 0xB492, 0x4041,
+ 0xB493, 0xB493, 0x24EA, 0xB494, 0xB4A0, 0x404A, 0xB4A1, 0xB4FE, 0x0524,
+ 0xB540, 0xB540, 0x4057, 0xB541, 0xB541, 0x1E92, 0xB542, 0xB54A, 0x4058,
+ 0xB54B, 0xB54B, 0x1E27, 0xB54C, 0xB555, 0x4061, 0xB556, 0xB556, 0x1FE6,
+ 0xB557, 0xB559, 0x406B, 0xB55A, 0xB55A, 0x24E7, 0xB55B, 0xB55B, 0x2012,
+ 0xB55C, 0xB55C, 0x1EEC, 0xB55D, 0xB560, 0x406E, 0xB561, 0xB561, 0x24E8,
+ 0xB562, 0xB57E, 0x4072, 0xB580, 0xB59B, 0x408F, 0xB59C, 0xB59C, 0x1F66,
+ 0xB59D, 0xB59D, 0x24DC, 0xB59E, 0xB5A0, 0x40AB, 0xB5A1, 0xB5FE, 0x0582,
+ 0xB640, 0xB651, 0x40AE, 0xB652, 0xB652, 0x26A2, 0xB653, 0xB654, 0x40C0,
+ 0xB655, 0xB655, 0x24DD, 0xB656, 0xB658, 0x40C2, 0xB659, 0xB659, 0x200E,
+ 0xB65A, 0xB65A, 0x40C5, 0xB65B, 0xB65B, 0x24DB, 0xB65C, 0xB65C, 0x1EB8,
+ 0xB65D, 0xB67E, 0x40C6, 0xB680, 0xB6A0, 0x40E8, 0xB6A1, 0xB6FE, 0x05E0,
+ 0xB740, 0xB74D, 0x4109, 0xB74E, 0xB74E, 0x2295, 0xB74F, 0xB750, 0x4117,
+ 0xB751, 0xB751, 0x1E80, 0xB752, 0xB758, 0x4119, 0xB759, 0xB759, 0x2677,
+ 0xB75A, 0xB763, 0x4120, 0xB764, 0xB764, 0x2624, 0xB765, 0xB765, 0x1F69,
+ 0xB766, 0xB766, 0x222B, 0xB767, 0xB776, 0x412A, 0xB777, 0xB777, 0x257F,
+ 0xB778, 0xB778, 0x1F5B, 0xB779, 0xB77E, 0x413A, 0xB780, 0xB780, 0x219B,
+ 0xB781, 0xB781, 0x4140, 0xB782, 0xB782, 0x267D, 0xB783, 0xB7A0, 0x4141,
+ 0xB7A1, 0xB7FE, 0x063E, 0xB840, 0xB842, 0x415F, 0xB843, 0xB843, 0x21A0,
+ 0xB844, 0xB844, 0x2186, 0xB845, 0xB845, 0x4162, 0xB846, 0xB846, 0x20ED,
+ 0xB847, 0xB84C, 0x4163, 0xB84D, 0xB84D, 0x25B9, 0xB84E, 0xB850, 0x4169,
+ 0xB851, 0xB851, 0x1FEA, 0xB852, 0xB859, 0x416C, 0xB85A, 0xB85A, 0x1EA4,
+ 0xB85B, 0xB85B, 0x20E1, 0xB85C, 0xB85C, 0x4174, 0xB85D, 0xB85D, 0x25B8,
+ 0xB85E, 0xB85E, 0x2260, 0xB85F, 0xB85F, 0x4175, 0xB860, 0xB860, 0x20E2,
+ 0xB861, 0xB876, 0x4176, 0xB877, 0xB877, 0x2141, 0xB878, 0xB87E, 0x418C,
+ 0xB880, 0xB881, 0x4193, 0xB882, 0xB882, 0x1FC7, 0xB883, 0xB8A0, 0x4195,
+ 0xB8A1, 0xB8FE, 0x069C, 0xB940, 0xB94F, 0x41B3, 0xB950, 0xB950, 0x1E41,
+ 0xB951, 0xB960, 0x41C3, 0xB961, 0xB961, 0x25E4, 0xB962, 0xB97A, 0x41D3,
+ 0xB97B, 0xB97B, 0x1F86, 0xB97C, 0xB97E, 0x41EC, 0xB980, 0xB99C, 0x41EF,
+ 0xB99D, 0xB99D, 0x1FB3, 0xB99E, 0xB99F, 0x420C, 0xB9A0, 0xB9A0, 0x1EEF,
+ 0xB9A1, 0xB9FE, 0x06FA, 0xBA40, 0xBA41, 0x420E, 0xBA42, 0xBA42, 0x22A4,
+ 0xBA43, 0xBA43, 0x4210, 0xBA44, 0xBA44, 0x25E8, 0xBA45, 0xBA55, 0x4211,
+ 0xBA56, 0xBA56, 0x25E3, 0xBA57, 0xBA58, 0x4222, 0xBA59, 0xBA59, 0x2111,
+ 0xBA5A, 0xBA5F, 0x4224, 0xBA60, 0xBA60, 0x25E6, 0xBA61, 0xBA69, 0x422A,
+ 0xBA6A, 0xBA6A, 0x25E7, 0xBA6B, 0xBA73, 0x4233, 0xBA74, 0xBA74, 0x2041,
+ 0xBA75, 0xBA7E, 0x423C, 0xBA80, 0xBA83, 0x4246, 0xBA84, 0xBA84, 0x25EA,
+ 0xBA85, 0xBA85, 0x424A, 0xBA86, 0xBA86, 0x1F8F, 0xBA87, 0xBA87, 0x424B,
+ 0xBA88, 0xBA88, 0x25EC, 0xBA89, 0xBA8C, 0x424C, 0xBA8D, 0xBA8D, 0x25EB,
+ 0xBA8E, 0xBA9D, 0x4250, 0xBA9E, 0xBA9E, 0x20D0, 0xBA9F, 0xBA9F, 0x201D,
+ 0xBAA0, 0xBAA0, 0x4260, 0xBAA1, 0xBAFE, 0x0758, 0xBB40, 0xBB40, 0x1FF7,
+ 0xBB41, 0xBB48, 0x4261, 0xBB49, 0xBB49, 0x1E8D, 0xBB4A, 0xBB57, 0x4269,
+ 0xBB58, 0xBB58, 0x25E9, 0xBB59, 0xBB5A, 0x4277, 0xBB5B, 0xBB5B, 0x25EE,
+ 0xBB5C, 0xBB5C, 0x203A, 0xBB5D, 0xBB5F, 0x4279, 0xBB60, 0xBB60, 0x2693,
+ 0xBB61, 0xBB64, 0x427C, 0xBB65, 0xBB65, 0x25E5, 0xBB66, 0xBB66, 0x25ED,
+ 0xBB67, 0xBB67, 0x4280, 0xBB68, 0xBB68, 0x2009, 0xBB69, 0xBB69, 0x4281,
+ 0xBB6A, 0xBB6A, 0x2065, 0xBB6B, 0xBB6D, 0x4282, 0xBB6E, 0xBB6E, 0x26A3,
+ 0xBB6F, 0xBB7E, 0x4285, 0xBB80, 0xBBA0, 0x4295, 0xBBA1, 0xBBFE, 0x07B6,
+ 0xBC40, 0xBC51, 0x42B6, 0xBC52, 0xBC52, 0x25F5, 0xBC53, 0xBC53, 0x1EFC,
+ 0xBC54, 0xBC59, 0x42C8, 0xBC5A, 0xBC5A, 0x2024, 0xBC5B, 0xBC60, 0x42CE,
+ 0xBC61, 0xBC61, 0x269B, 0xBC62, 0xBC62, 0x42D4, 0xBC63, 0xBC63, 0x25F3,
+ 0xBC64, 0xBC64, 0x42D5, 0xBC65, 0xBC65, 0x22D9, 0xBC66, 0xBC66, 0x42D6,
+ 0xBC67, 0xBC67, 0x25F4, 0xBC68, 0xBC68, 0x42D7, 0xBC69, 0xBC69, 0x241B,
+ 0xBC6A, 0xBC6C, 0x42D8, 0xBC6D, 0xBC6D, 0x1FC8, 0xBC6E, 0xBC6E, 0x42DB,
+ 0xBC6F, 0xBC6F, 0x1F7B, 0xBC70, 0xBC70, 0x42DC, 0xBC71, 0xBC71, 0x241D,
+ 0xBC72, 0xBC72, 0x42DD, 0xBC73, 0xBC73, 0x224C, 0xBC74, 0xBC74, 0x1F48,
+ 0xBC75, 0xBC75, 0x241C, 0xBC76, 0xBC77, 0x241E, 0xBC78, 0xBC78, 0x20FF,
+ 0xBC79, 0xBC79, 0x219A, 0xBC7A, 0xBC7A, 0x42DE, 0xBC7B, 0xBC7B, 0x2091,
+ 0xBC7C, 0xBC7D, 0x42DF, 0xBC7E, 0xBC7E, 0x20A7, 0xBC80, 0xBC81, 0x42E1,
+ 0xBC82, 0xBC82, 0x2423, 0xBC83, 0xBC83, 0x1E9B, 0xBC84, 0xBC84, 0x2422,
+ 0xBC85, 0xBC85, 0x42E3, 0xBC86, 0xBC86, 0x2110, 0xBC87, 0xBC87, 0x42E4,
+ 0xBC88, 0xBC88, 0x228D, 0xBC89, 0xBC89, 0x1F71, 0xBC8A, 0xBC8A, 0x1EF8,
+ 0xBC8B, 0xBC8B, 0x2421, 0xBC8C, 0xBC8E, 0x42E5, 0xBC8F, 0xBC8F, 0x1EF3,
+ 0xBC90, 0xBC99, 0x42E8, 0xBC9A, 0xBC9A, 0x21B1, 0xBC9B, 0xBC9B, 0x2426,
+ 0xBC9C, 0xBC9C, 0x2425, 0xBC9D, 0xBC9D, 0x2120, 0xBC9E, 0xBCA0, 0x42F2,
+ 0xBCA1, 0xBCFE, 0x0814, 0xBD40, 0xBD41, 0x42F5, 0xBD42, 0xBD42, 0x211A,
+ 0xBD43, 0xBD43, 0x2424, 0xBD44, 0xBD44, 0x42F7, 0xBD45, 0xBD45, 0x2428,
+ 0xBD46, 0xBD47, 0x42F8, 0xBD48, 0xBD48, 0x242A, 0xBD49, 0xBD49, 0x2429,
+ 0xBD4A, 0xBD4A, 0x42FA, 0xBD4B, 0xBD4B, 0x2294, 0xBD4C, 0xBD4C, 0x42FB,
+ 0xBD4D, 0xBD4D, 0x22BE, 0xBD4E, 0xBD4E, 0x42FC, 0xBD4F, 0xBD4F, 0x1E31,
+ 0xBD50, 0xBD56, 0x42FD, 0xBD57, 0xBD57, 0x242C, 0xBD58, 0xBD58, 0x4304,
+ 0xBD59, 0xBD59, 0x1FB5, 0xBD5A, 0xBD65, 0x4305, 0xBD66, 0xBD66, 0x242B,
+ 0xBD67, 0xBD67, 0x1FAF, 0xBD68, 0xBD69, 0x4311, 0xBD6A, 0xBD6A, 0x2068,
+ 0xBD6B, 0xBD6B, 0x21E4, 0xBD6C, 0xBD6E, 0x4313, 0xBD6F, 0xBD6F, 0x1F21,
+ 0xBD70, 0xBD70, 0x4316, 0xBD71, 0xBD71, 0x2101, 0xBD72, 0xBD78, 0x4317,
+ 0xBD79, 0xBD79, 0x217C, 0xBD7A, 0xBD7A, 0x214A, 0xBD7B, 0xBD7B, 0x242D,
+ 0xBD7C, 0xBD7D, 0x431E, 0xBD7E, 0xBD7E, 0x1FD4, 0xBD80, 0xBD80, 0x4320,
+ 0xBD81, 0xBD81, 0x1FD1, 0xBD82, 0xBD88, 0x4321, 0xBD89, 0xBD89, 0x1E33,
+ 0xBD8A, 0xBD8A, 0x4328, 0xBD8B, 0xBD8B, 0x242F, 0xBD8C, 0xBD8D, 0x4329,
+ 0xBD8E, 0xBD8E, 0x242E, 0xBD8F, 0xBD8F, 0x432B, 0xBD90, 0xBD90, 0x2430,
+ 0xBD91, 0xBD91, 0x21DB, 0xBD92, 0xBD96, 0x432C, 0xBD97, 0xBD97, 0x2158,
+ 0xBD98, 0xBD9A, 0x4331, 0xBD9B, 0xBD9B, 0x1FC2, 0xBD9C, 0xBDA0, 0x4334,
+ 0xBDA1, 0xBDFE, 0x0872, 0xBE40, 0xBE42, 0x4339, 0xBE43, 0xBE43, 0x22B9,
+ 0xBE44, 0xBE44, 0x433C, 0xBE45, 0xBE45, 0x2436, 0xBE46, 0xBE48, 0x433D,
+ 0xBE49, 0xBE49, 0x1E8E, 0xBE4A, 0xBE4A, 0x2439, 0xBE4B, 0xBE50, 0x4340,
+ 0xBE51, 0xBE51, 0x21C5, 0xBE52, 0xBE52, 0x2437, 0xBE53, 0xBE53, 0x2192,
+ 0xBE54, 0xBE54, 0x4346, 0xBE55, 0xBE55, 0x243A, 0xBE56, 0xBE56, 0x1F19,
+ 0xBE57, 0xBE57, 0x218C, 0xBE58, 0xBE58, 0x1E40, 0xBE59, 0xBE59, 0x22B3,
+ 0xBE5A, 0xBE5C, 0x4347, 0xBE5D, 0xBE5D, 0x205F, 0xBE5E, 0xBE5E, 0x2438,
+ 0xBE5F, 0xBE5F, 0x2432, 0xBE60, 0xBE60, 0x2274, 0xBE61, 0xBE61, 0x434A,
+ 0xBE62, 0xBE62, 0x1E9C, 0xBE63, 0xBE63, 0x2431, 0xBE64, 0xBE64, 0x2085,
+ 0xBE65, 0xBE68, 0x434B, 0xBE69, 0xBE69, 0x2435, 0xBE6A, 0xBE6B, 0x434F,
+ 0xBE6C, 0xBE6C, 0x243B, 0xBE6D, 0xBE6E, 0x4351, 0xBE6F, 0xBE6F, 0x1FB7,
+ 0xBE70, 0xBE70, 0x2433, 0xBE71, 0xBE75, 0x4353, 0xBE76, 0xBE76, 0x2054,
+ 0xBE77, 0xBE77, 0x21DE, 0xBE78, 0xBE78, 0x4358, 0xBE79, 0xBE79, 0x2434,
+ 0xBE7A, 0xBE7B, 0x4359, 0xBE7C, 0xBE7C, 0x243D, 0xBE7D, 0xBE7D, 0x1F89,
+ 0xBE7E, 0xBE7E, 0x243C, 0xBE80, 0xBE82, 0x435B, 0xBE83, 0xBE83, 0x1F6E,
+ 0xBE84, 0xBE84, 0x1ED8, 0xBE85, 0xBE85, 0x435E, 0xBE86, 0xBE86, 0x1EBF,
+ 0xBE87, 0xBE87, 0x2445, 0xBE88, 0xBE88, 0x435F, 0xBE89, 0xBE89, 0x2249,
+ 0xBE8A, 0xBE8B, 0x4360, 0xBE8C, 0xBE8C, 0x2441, 0xBE8D, 0xBE8D, 0x4362,
+ 0xBE8E, 0xBE8E, 0x1E47, 0xBE8F, 0xBE8F, 0x1F56, 0xBE90, 0xBE91, 0x4363,
+ 0xBE92, 0xBE92, 0x2086, 0xBE93, 0xBE94, 0x4365, 0xBE95, 0xBE95, 0x2196,
+ 0xBE96, 0xBE96, 0x4367, 0xBE97, 0xBE97, 0x2443, 0xBE98, 0xBE98, 0x243F,
+ 0xBE99, 0xBE99, 0x4368, 0xBE9A, 0xBE9A, 0x2023, 0xBE9B, 0xBE9B, 0x4369,
+ 0xBE9C, 0xBE9C, 0x2442, 0xBE9D, 0xBE9E, 0x436A, 0xBE9F, 0xBE9F, 0x243E,
+ 0xBEA0, 0xBEA0, 0x436C, 0xBEA1, 0xBEFE, 0x08D0, 0xBF40, 0xBF40, 0x26A6,
+ 0xBF41, 0xBF4C, 0x436D, 0xBF4D, 0xBF4D, 0x234E, 0xBF4E, 0xBF4E, 0x2446,
+ 0xBF4F, 0xBF4F, 0x244B, 0xBF50, 0xBF50, 0x2444, 0xBF51, 0xBF54, 0x4379,
+ 0xBF55, 0xBF55, 0x2427, 0xBF56, 0xBF56, 0x244C, 0xBF57, 0xBF5F, 0x437D,
+ 0xBF60, 0xBF60, 0x1F0F, 0xBF61, 0xBF61, 0x4386, 0xBF62, 0xBF62, 0x2447,
+ 0xBF63, 0xBF63, 0x2449, 0xBF64, 0xBF64, 0x2448, 0xBF65, 0xBF67, 0x4387,
+ 0xBF68, 0xBF68, 0x21C2, 0xBF69, 0xBF6B, 0x438A, 0xBF6C, 0xBF6C, 0x216E,
+ 0xBF6D, 0xBF6F, 0x438D, 0xBF70, 0xBF70, 0x1F03, 0xBF71, 0xBF71, 0x4390,
+ 0xBF72, 0xBF72, 0x244A, 0xBF73, 0xBF73, 0x215C, 0xBF74, 0xBF75, 0x4391,
+ 0xBF76, 0xBF76, 0x22BB, 0xBF77, 0xBF77, 0x2450, 0xBF78, 0xBF78, 0x4393,
+ 0xBF79, 0xBF79, 0x2694, 0xBF7A, 0xBF7A, 0x244F, 0xBF7B, 0xBF7B, 0x25F6,
+ 0xBF7C, 0xBF7C, 0x2051, 0xBF7D, 0xBF7D, 0x4394, 0xBF7E, 0xBF7E, 0x244E,
+ 0xBF80, 0xBF81, 0x4395, 0xBF82, 0xBF82, 0x22BA, 0xBF83, 0xBF83, 0x1F6D,
+ 0xBF84, 0xBF88, 0x4397, 0xBF89, 0xBF89, 0x2452, 0xBF8A, 0xBF8A, 0x2451,
+ 0xBF8B, 0xBF94, 0x439C, 0xBF95, 0xBF95, 0x2455, 0xBF96, 0xBF96, 0x43A6,
+ 0xBF97, 0xBF97, 0x2289, 0xBF98, 0xBF98, 0x2116, 0xBF99, 0xBF9C, 0x43A7,
+ 0xBF9D, 0xBF9D, 0x2454, 0xBF9E, 0xBFA0, 0x43AB, 0xBFA1, 0xBFFE, 0x092E,
+ 0xC040, 0xC040, 0x20FB, 0xC041, 0xC043, 0x43AE, 0xC044, 0xC044, 0x2440,
+ 0xC045, 0xC04A, 0x43B1, 0xC04B, 0xC04B, 0x2126, 0xC04C, 0xC04C, 0x1F61,
+ 0xC04D, 0xC04D, 0x269D, 0xC04E, 0xC04E, 0x43B7, 0xC04F, 0xC04F, 0x1F8A,
+ 0xC050, 0xC050, 0x2456, 0xC051, 0xC051, 0x2459, 0xC052, 0xC052, 0x2458,
+ 0xC053, 0xC054, 0x43B8, 0xC055, 0xC055, 0x1FAE, 0xC056, 0xC05A, 0x43BA,
+ 0xC05B, 0xC05B, 0x221A, 0xC05C, 0xC05D, 0x43BF, 0xC05E, 0xC05E, 0x1F7A,
+ 0xC05F, 0xC05F, 0x244D, 0xC060, 0xC060, 0x2457, 0xC061, 0xC068, 0x43C1,
+ 0xC069, 0xC069, 0x2453, 0xC06A, 0xC06A, 0x43C9, 0xC06B, 0xC06B, 0x2420,
+ 0xC06C, 0xC06C, 0x43CA, 0xC06D, 0xC06D, 0x21DF, 0xC06E, 0xC06E, 0x2685,
+ 0xC06F, 0xC06F, 0x43CB, 0xC070, 0xC070, 0x1E6E, 0xC071, 0xC073, 0x43CC,
+ 0xC074, 0xC074, 0x2224, 0xC075, 0xC075, 0x2670, 0xC076, 0xC076, 0x43CF,
+ 0xC077, 0xC077, 0x21BA, 0xC078, 0xC078, 0x43D0, 0xC079, 0xC079, 0x245A,
+ 0xC07A, 0xC07B, 0x43D1, 0xC07C, 0xC07C, 0x1FFF, 0xC07D, 0xC07E, 0x43D3,
+ 0xC080, 0xC09A, 0x43D5, 0xC09B, 0xC09B, 0x25E2, 0xC09C, 0xC09C, 0x43F0,
+ 0xC09D, 0xC09D, 0x269A, 0xC09E, 0xC0A0, 0x43F1, 0xC0A1, 0xC0FE, 0x098C,
+ 0xC140, 0xC14F, 0x43F4, 0xC150, 0xC150, 0x1EEA, 0xC151, 0xC153, 0x4404,
+ 0xC154, 0xC154, 0x1E2C, 0xC155, 0xC15E, 0x4407, 0xC15F, 0xC15F, 0x2062,
+ 0xC160, 0xC160, 0x24F1, 0xC161, 0xC161, 0x4411, 0xC162, 0xC162, 0x24F2,
+ 0xC163, 0xC174, 0x4412, 0xC175, 0xC175, 0x25F2, 0xC176, 0xC177, 0x4424,
+ 0xC178, 0xC178, 0x2215, 0xC179, 0xC17E, 0x4426, 0xC180, 0xC194, 0x442C,
+ 0xC195, 0xC195, 0x21AE, 0xC196, 0xC1A0, 0x4441, 0xC1A1, 0xC1FE, 0x09EA,
+ 0xC240, 0xC24D, 0x444C, 0xC24E, 0xC24E, 0x20E0, 0xC24F, 0xC264, 0x445A,
+ 0xC265, 0xC265, 0x25C2, 0xC266, 0xC266, 0x4470, 0xC267, 0xC267, 0x25C1,
+ 0xC268, 0xC27C, 0x4471, 0xC27D, 0xC27D, 0x2128, 0xC27E, 0xC27E, 0x4486,
+ 0xC280, 0xC283, 0x4487, 0xC284, 0xC284, 0x2199, 0xC285, 0xC292, 0x448B,
+ 0xC293, 0xC293, 0x2017, 0xC294, 0xC294, 0x1EA0, 0xC295, 0xC295, 0x2125,
+ 0xC296, 0xC296, 0x214D, 0xC297, 0xC297, 0x4499, 0xC298, 0xC298, 0x25C4,
+ 0xC299, 0xC299, 0x209D, 0xC29A, 0xC29A, 0x228A, 0xC29B, 0xC29B, 0x449A,
+ 0xC29C, 0xC29C, 0x25C3, 0xC29D, 0xC29F, 0x449B, 0xC2A0, 0xC2A0, 0x2179,
+ 0xC2A1, 0xC2FE, 0x0A48, 0xC340, 0xC340, 0x2038, 0xC341, 0xC342, 0x449E,
+ 0xC343, 0xC343, 0x2155, 0xC344, 0xC37A, 0x44A0, 0xC37B, 0xC37B, 0x21D2,
+ 0xC37C, 0xC37E, 0x44D7, 0xC380, 0xC383, 0x44DA, 0xC384, 0xC384, 0x24C7,
+ 0xC385, 0xC39A, 0x44DE, 0xC39B, 0xC39B, 0x2279, 0xC39C, 0xC3A0, 0x44F4,
+ 0xC3A1, 0xC3FE, 0x0AA6, 0xC440, 0xC448, 0x44F9, 0xC449, 0xC449, 0x2123,
+ 0xC44A, 0xC44B, 0x4502, 0xC44C, 0xC44C, 0x24C5, 0xC44D, 0xC453, 0x4504,
+ 0xC454, 0xC454, 0x24C9, 0xC455, 0xC457, 0x450B, 0xC458, 0xC458, 0x2094,
+ 0xC459, 0xC45A, 0x450E, 0xC45B, 0xC45B, 0x2296, 0xC45C, 0xC462, 0x4510,
+ 0xC463, 0xC463, 0x1E77, 0xC464, 0xC476, 0x4517, 0xC477, 0xC477, 0x1F06,
+ 0xC478, 0xC479, 0x452A, 0xC47A, 0xC47A, 0x1FA5, 0xC47B, 0xC47E, 0x452C,
+ 0xC480, 0xC480, 0x4530, 0xC481, 0xC481, 0x2099, 0xC482, 0xC490, 0x4531,
+ 0xC491, 0xC491, 0x1EAD, 0xC492, 0xC492, 0x24C8, 0xC493, 0xC493, 0x20A8,
+ 0xC494, 0xC497, 0x4540, 0xC498, 0xC498, 0x201F, 0xC499, 0xC499, 0x4544,
+ 0xC49A, 0xC49A, 0x20C5, 0xC49B, 0xC49B, 0x4545, 0xC49C, 0xC49C, 0x24CA,
+ 0xC49D, 0xC4A0, 0x4546, 0xC4A1, 0xC4FE, 0x0B04, 0xC540, 0xC543, 0x454A,
+ 0xC544, 0xC544, 0x1FF0, 0xC545, 0xC545, 0x454E, 0xC546, 0xC546, 0x24C6,
+ 0xC547, 0xC54A, 0x454F, 0xC54B, 0xC54B, 0x225D, 0xC54C, 0xC54C, 0x22DE,
+ 0xC54D, 0xC551, 0x4553, 0xC552, 0xC552, 0x202C, 0xC553, 0xC55E, 0x4558,
+ 0xC55F, 0xC55F, 0x2161, 0xC560, 0xC562, 0x4564, 0xC563, 0xC563, 0x223B,
+ 0xC564, 0xC564, 0x21D9, 0xC565, 0xC565, 0x1FCB, 0xC566, 0xC566, 0x1FC9,
+ 0xC567, 0xC57E, 0x4567, 0xC580, 0xC592, 0x457F, 0xC593, 0xC593, 0x1E61,
+ 0xC594, 0xC59B, 0x4592, 0xC59C, 0xC59C, 0x25EF, 0xC59D, 0xC59D, 0x459A,
+ 0xC59E, 0xC59E, 0x1F98, 0xC59F, 0xC5A0, 0x459B, 0xC5A1, 0xC5FE, 0x0B62,
+ 0xC640, 0xC640, 0x459D, 0xC641, 0xC641, 0x25F0, 0xC642, 0xC643, 0x459E,
+ 0xC644, 0xC644, 0x1F88, 0xC645, 0xC646, 0x45A0, 0xC647, 0xC647, 0x21F8,
+ 0xC648, 0xC662, 0x45A2, 0xC663, 0xC663, 0x2322, 0xC664, 0xC671, 0x45BD,
+ 0xC672, 0xC672, 0x2336, 0xC673, 0xC67E, 0x45CB, 0xC680, 0xC6A0, 0x45D7,
+ 0xC6A1, 0xC6FE, 0x0BC0, 0xC740, 0xC765, 0x45F8, 0xC766, 0xC766, 0x22AB,
+ 0xC767, 0xC76E, 0x461E, 0xC76F, 0xC76F, 0x1FBF, 0xC770, 0xC775, 0x4626,
+ 0xC776, 0xC776, 0x1F7D, 0xC777, 0xC77A, 0x462C, 0xC77B, 0xC77B, 0x2333,
+ 0xC77C, 0xC77E, 0x4630, 0xC780, 0xC7A0, 0x4633, 0xC7A1, 0xC7FE, 0x0C1E,
+ 0xC840, 0xC840, 0x4654, 0xC841, 0xC841, 0x1F4D, 0xC842, 0xC84E, 0x4655,
+ 0xC84F, 0xC84F, 0x2334, 0xC850, 0xC851, 0x4662, 0xC852, 0xC852, 0x1FF1,
+ 0xC853, 0xC865, 0x4664, 0xC866, 0xC866, 0x218B, 0xC867, 0xC86D, 0x4677,
+ 0xC86E, 0xC86E, 0x2349, 0xC86F, 0xC87D, 0x467E, 0xC87E, 0xC87E, 0x220B,
+ 0xC880, 0xC886, 0x468D, 0xC887, 0xC887, 0x2346, 0xC888, 0xC891, 0x4694,
+ 0xC892, 0xC892, 0x2347, 0xC893, 0xC893, 0x469E, 0xC894, 0xC894, 0x2193,
+ 0xC895, 0xC898, 0x469F, 0xC899, 0xC899, 0x26A1, 0xC89A, 0xC89C, 0x46A3,
+ 0xC89D, 0xC89D, 0x1F62, 0xC89E, 0xC8A0, 0x46A6, 0xC8A1, 0xC8FE, 0x0C7C,
+ 0xC940, 0xC94E, 0x46A9, 0xC94F, 0xC94F, 0x234D, 0xC950, 0xC950, 0x2348,
+ 0xC951, 0xC96D, 0x46B8, 0xC96E, 0xC96E, 0x1E60, 0xC96F, 0xC96F, 0x46D5,
+ 0xC970, 0xC970, 0x2345, 0xC971, 0xC976, 0x46D6, 0xC977, 0xC977, 0x1F12,
+ 0xC978, 0xC97E, 0x46DC, 0xC980, 0xC98E, 0x46E3, 0xC98F, 0xC98F, 0x2018,
+ 0xC990, 0xC990, 0x2335, 0xC991, 0xC99B, 0x46F2, 0xC99C, 0xC99C, 0x233C,
+ 0xC99D, 0xC9A0, 0x46FD, 0xC9A1, 0xC9FE, 0x0CDA, 0xCA40, 0xCA4D, 0x4701,
+ 0xCA4E, 0xCA4E, 0x266F, 0xCA4F, 0xCA55, 0x470F, 0xCA56, 0xCA56, 0x2351,
+ 0xCA57, 0xCA58, 0x4716, 0xCA59, 0xCA59, 0x1FA0, 0xCA5A, 0xCA5B, 0x4718,
+ 0xCA5C, 0xCA5C, 0x2338, 0xCA5D, 0xCA60, 0x471A, 0xCA61, 0xCA61, 0x221B,
+ 0xCA62, 0xCA6D, 0x471E, 0xCA6E, 0xCA6E, 0x2342, 0xCA6F, 0xCA71, 0x472A,
+ 0xCA72, 0xCA72, 0x234F, 0xCA73, 0xCA76, 0x472D, 0xCA77, 0xCA77, 0x233D,
+ 0xCA78, 0xCA7A, 0x4731, 0xCA7B, 0xCA7B, 0x2344, 0xCA7C, 0xCA7C, 0x2331,
+ 0xCA7D, 0xCA7D, 0x4734, 0xCA7E, 0xCA7E, 0x234B, 0xCA80, 0xCA80, 0x4735,
+ 0xCA81, 0xCA81, 0x233B, 0xCA82, 0xCA88, 0x4736, 0xCA89, 0xCA89, 0x2350,
+ 0xCA8A, 0xCA8D, 0x473D, 0xCA8E, 0xCA8E, 0x1EB4, 0xCA8F, 0xCA8F, 0x21A6,
+ 0xCA90, 0xCA91, 0x4741, 0xCA92, 0xCA92, 0x21CB, 0xCA93, 0xCA99, 0x4743,
+ 0xCA9A, 0xCA9A, 0x2355, 0xCA9B, 0xCAA0, 0x474A, 0xCAA1, 0xCAFE, 0x0D38,
+ 0xCB40, 0xCB42, 0x4750, 0xCB43, 0xCB43, 0x233E, 0xCB44, 0xCB44, 0x4753,
+ 0xCB45, 0xCB45, 0x1F74, 0xCB46, 0xCB46, 0x4754, 0xCB47, 0xCB47, 0x2330,
+ 0xCB48, 0xCB4A, 0x4755, 0xCB4B, 0xCB4B, 0x2680, 0xCB4C, 0xCB4D, 0x4758,
+ 0xCB4E, 0xCB4E, 0x20DA, 0xCB4F, 0xCB56, 0x475A, 0xCB57, 0xCB57, 0x234A,
+ 0xCB58, 0xCB5C, 0x4762, 0xCB5D, 0xCB5D, 0x1F91, 0xCB5E, 0xCB5E, 0x4767,
+ 0xCB5F, 0xCB5F, 0x2107, 0xCB60, 0xCB69, 0x4768, 0xCB6A, 0xCB6A, 0x233F,
+ 0xCB6B, 0xCB7A, 0x4772, 0xCB7B, 0xCB7B, 0x1FF4, 0xCB7C, 0xCB7C, 0x2343,
+ 0xCB7D, 0xCB7E, 0x4782, 0xCB80, 0xCB86, 0x4784, 0xCB87, 0xCB87, 0x2212,
+ 0xCB88, 0xCB8D, 0x478B, 0xCB8E, 0xCB8E, 0x2207, 0xCB8F, 0xCB91, 0x4791,
+ 0xCB92, 0xCB92, 0x2359, 0xCB93, 0xCB9B, 0x4794, 0xCB9C, 0xCB9C, 0x2254,
+ 0xCB9D, 0xCB9D, 0x479D, 0xCB9E, 0xCB9E, 0x2332, 0xCB9F, 0xCBA0, 0x479E,
+ 0xCBA1, 0xCBFE, 0x0D96, 0xCC40, 0xCC40, 0x1E26, 0xCC41, 0xCC41, 0x2357,
+ 0xCC42, 0xCC48, 0x47A0, 0xCC49, 0xCC49, 0x2358, 0xCC4A, 0xCC4A, 0x2042,
+ 0xCC4B, 0xCC4B, 0x2153, 0xCC4C, 0xCC4E, 0x47A7, 0xCC4F, 0xCC4F, 0x20BB,
+ 0xCC50, 0xCC5B, 0x47AA, 0xCC5C, 0xCC5C, 0x235A, 0xCC5D, 0xCC5F, 0x47B6,
+ 0xCC60, 0xCC60, 0x2356, 0xCC61, 0xCC63, 0x47B9, 0xCC64, 0xCC64, 0x2337,
+ 0xCC65, 0xCC6C, 0x47BC, 0xCC6D, 0xCC6D, 0x1FF9, 0xCC6E, 0xCC78, 0x47C4,
+ 0xCC79, 0xCC79, 0x2353, 0xCC7A, 0xCC7C, 0x47CF, 0xCC7D, 0xCC7D, 0x2061,
+ 0xCC7E, 0xCC7E, 0x47D2, 0xCC80, 0xCC8D, 0x47D3, 0xCC8E, 0xCC8E, 0x1E95,
+ 0xCC8F, 0xCC93, 0x47E1, 0xCC94, 0xCC94, 0x2049, 0xCC95, 0xCC95, 0x47E6,
+ 0xCC96, 0xCC96, 0x1F42, 0xCC97, 0xCC9C, 0x47E7, 0xCC9D, 0xCC9D, 0x1FE8,
+ 0xCC9E, 0xCCA0, 0x47ED, 0xCCA1, 0xCCFE, 0x0DF4, 0xCD40, 0xCD7E, 0x47F0,
+ 0xCD80, 0xCD8F, 0x482F, 0xCD90, 0xCD90, 0x25DA, 0xCD91, 0xCD97, 0x483F,
+ 0xCD98, 0xCD98, 0x25D7, 0xCD99, 0xCDA0, 0x4846, 0xCDA1, 0xCDFE, 0x0E52,
+ 0xCE40, 0xCE66, 0x484E, 0xCE67, 0xCE67, 0x212E, 0xCE68, 0xCE71, 0x4875,
+ 0xCE72, 0xCE72, 0x21B2, 0xCE73, 0xCE7E, 0x487F, 0xCE80, 0xCE80, 0x488B,
+ 0xCE81, 0xCE81, 0x219E, 0xCE82, 0xCE86, 0x488C, 0xCE87, 0xCE87, 0x25DC,
+ 0xCE88, 0xCE9A, 0x4891, 0xCE9B, 0xCE9B, 0x206C, 0xCE9C, 0xCE9D, 0x48A4,
+ 0xCE9E, 0xCE9E, 0x2226, 0xCE9F, 0xCEA0, 0x48A6, 0xCEA1, 0xCEFE, 0x0EB0,
+ 0xCF40, 0xCF4D, 0x48A8, 0xCF4E, 0xCF4E, 0x25E0, 0xCF4F, 0xCF54, 0x48B6,
+ 0xCF55, 0xCF55, 0x227B, 0xCF56, 0xCF57, 0x48BC, 0xCF58, 0xCF58, 0x25DE,
+ 0xCF59, 0xCF5B, 0x48BE, 0xCF5C, 0xCF5C, 0x25E1, 0xCF5D, 0xCF6B, 0x48C1,
+ 0xCF6C, 0xCF6C, 0x25D5, 0xCF6D, 0xCF72, 0x48D0, 0xCF73, 0xCF73, 0x1E6B,
+ 0xCF74, 0xCF74, 0x48D6, 0xCF75, 0xCF75, 0x25DB, 0xCF76, 0xCF77, 0x48D7,
+ 0xCF78, 0xCF78, 0x1E89, 0xCF79, 0xCF7B, 0x48D9, 0xCF7C, 0xCF7C, 0x25D9,
+ 0xCF7D, 0xCF7E, 0x48DC, 0xCF80, 0xCF80, 0x48DE, 0xCF81, 0xCF81, 0x2211,
+ 0xCF82, 0xCF88, 0x48DF, 0xCF89, 0xCF89, 0x2229, 0xCF8A, 0xCF8A, 0x25D6,
+ 0xCF8B, 0xCF92, 0x48E6, 0xCF93, 0xCF93, 0x25DD, 0xCF94, 0xCF94, 0x25DF,
+ 0xCF95, 0xCF9D, 0x48EE, 0xCF9E, 0xCF9E, 0x1FEF, 0xCF9F, 0xCF9F, 0x48F7,
+ 0xCFA0, 0xCFA0, 0x25D8, 0xCFA1, 0xCFFE, 0x0F0E, 0xD040, 0xD04C, 0x48F8,
+ 0xD04D, 0xD04D, 0x1F29, 0xD04E, 0xD050, 0x4905, 0xD051, 0xD051, 0x1E5B,
+ 0xD052, 0xD054, 0x4908, 0xD055, 0xD055, 0x2076, 0xD056, 0xD05B, 0x490B,
+ 0xD05C, 0xD05C, 0x2297, 0xD05D, 0xD05F, 0x4911, 0xD060, 0xD060, 0x2690,
+ 0xD061, 0xD066, 0x4914, 0xD067, 0xD067, 0x213F, 0xD068, 0xD06B, 0x491A,
+ 0xD06C, 0xD06C, 0x2198, 0xD06D, 0xD06D, 0x491E, 0xD06E, 0xD06E, 0x1E88,
+ 0xD06F, 0xD07C, 0x491F, 0xD07D, 0xD07D, 0x228C, 0xD07E, 0xD07E, 0x492D,
+ 0xD080, 0xD0A0, 0x492E, 0xD0A1, 0xD0FE, 0x0F6C, 0xD140, 0xD154, 0x494F,
+ 0xD155, 0xD155, 0x25F1, 0xD156, 0xD158, 0x4964, 0xD159, 0xD159, 0x200C,
+ 0xD15A, 0xD160, 0x4967, 0xD161, 0xD161, 0x1E58, 0xD162, 0xD162, 0x22AC,
+ 0xD163, 0xD174, 0x496E, 0xD175, 0xD175, 0x26A7, 0xD176, 0xD17C, 0x4980,
+ 0xD17D, 0xD17D, 0x2676, 0xD17E, 0xD17E, 0x4987, 0xD180, 0xD19C, 0x4988,
+ 0xD19D, 0xD19D, 0x1FE1, 0xD19E, 0xD19E, 0x25BB, 0xD19F, 0xD1A0, 0x49A5,
+ 0xD1A1, 0xD1FE, 0x0FCA, 0xD240, 0xD240, 0x25BE, 0xD241, 0xD242, 0x49A7,
+ 0xD243, 0xD243, 0x22DD, 0xD244, 0xD24C, 0x49A9, 0xD24D, 0xD24D, 0x25BD,
+ 0xD24E, 0xD25B, 0x49B2, 0xD25C, 0xD25C, 0x1E2A, 0xD25D, 0xD262, 0x49C0,
+ 0xD263, 0xD263, 0x25BC, 0xD264, 0xD264, 0x25BA, 0xD265, 0xD267, 0x49C6,
+ 0xD268, 0xD268, 0x25BF, 0xD269, 0xD26C, 0x49C9, 0xD26D, 0xD26D, 0x2187,
+ 0xD26E, 0xD26E, 0x49CD, 0xD26F, 0xD26F, 0x266B, 0xD270, 0xD271, 0x49CE,
+ 0xD272, 0xD272, 0x1E7F, 0xD273, 0xD274, 0x49D0, 0xD275, 0xD275, 0x21AD,
+ 0xD276, 0xD27E, 0x49D2, 0xD280, 0xD289, 0x49DB, 0xD28A, 0xD28A, 0x1F96,
+ 0xD28B, 0xD28D, 0x49E5, 0xD28E, 0xD28E, 0x1F32, 0xD28F, 0xD291, 0x49E8,
+ 0xD292, 0xD292, 0x2084, 0xD293, 0xD294, 0x49EB, 0xD295, 0xD295, 0x2136,
+ 0xD296, 0xD296, 0x49ED, 0xD297, 0xD297, 0x24B8, 0xD298, 0xD29F, 0x49EE,
+ 0xD2A0, 0xD2A0, 0x24BA, 0xD2A1, 0xD2FE, 0x1028, 0xD340, 0xD343, 0x49F6,
+ 0xD344, 0xD344, 0x24BC, 0xD345, 0xD347, 0x49FA, 0xD348, 0xD348, 0x20E4,
+ 0xD349, 0xD349, 0x49FD, 0xD34A, 0xD34A, 0x24B9, 0xD34B, 0xD34C, 0x49FE,
+ 0xD34D, 0xD34D, 0x24BD, 0xD34E, 0xD34F, 0x4A00, 0xD350, 0xD350, 0x24BE,
+ 0xD351, 0xD354, 0x4A02, 0xD355, 0xD355, 0x24BF, 0xD356, 0xD357, 0x4A06,
+ 0xD358, 0xD358, 0x1FD2, 0xD359, 0xD35A, 0x4A08, 0xD35B, 0xD35B, 0x1FFD,
+ 0xD35C, 0xD35C, 0x4A0A, 0xD35D, 0xD35D, 0x24BB, 0xD35E, 0xD35E, 0x1F2D,
+ 0xD35F, 0xD377, 0x4A0B, 0xD378, 0xD378, 0x2609, 0xD379, 0xD379, 0x4A24,
+ 0xD37A, 0xD37A, 0x260A, 0xD37B, 0xD37B, 0x4A25, 0xD37C, 0xD37C, 0x1E94,
+ 0xD37D, 0xD37E, 0x4A26, 0xD380, 0xD384, 0x4A28, 0xD385, 0xD385, 0x22DF,
+ 0xD386, 0xD386, 0x1ECB, 0xD387, 0xD387, 0x1F0D, 0xD388, 0xD38A, 0x4A2D,
+ 0xD38B, 0xD38B, 0x1F77, 0xD38C, 0xD38C, 0x4A30, 0xD38D, 0xD38D, 0x21EB,
+ 0xD38E, 0xD38E, 0x4A31, 0xD38F, 0xD38F, 0x22E1, 0xD390, 0xD390, 0x4A32,
+ 0xD391, 0xD391, 0x216F, 0xD392, 0xD392, 0x4A33, 0xD393, 0xD393, 0x22E0,
+ 0xD394, 0xD395, 0x4A34, 0xD396, 0xD396, 0x21EA, 0xD397, 0xD397, 0x4A36,
+ 0xD398, 0xD398, 0x22E2, 0xD399, 0xD399, 0x20CB, 0xD39A, 0xD39A, 0x4A37,
+ 0xD39B, 0xD39B, 0x1F78, 0xD39C, 0xD39D, 0x4A38, 0xD39E, 0xD39E, 0x1EE2,
+ 0xD39F, 0xD39F, 0x4A3A, 0xD3A0, 0xD3A0, 0x21F2, 0xD3A1, 0xD3FE, 0x1086,
+ 0xD440, 0xD440, 0x4A3B, 0xD441, 0xD441, 0x2150, 0xD442, 0xD444, 0x4A3C,
+ 0xD445, 0xD445, 0x1FD3, 0xD446, 0xD446, 0x4A3F, 0xD447, 0xD447, 0x22E5,
+ 0xD448, 0xD44B, 0x4A40, 0xD44C, 0xD44C, 0x1EF2, 0xD44D, 0xD44E, 0x4A44,
+ 0xD44F, 0xD44F, 0x211F, 0xD450, 0xD452, 0x4A46, 0xD453, 0xD453, 0x21DD,
+ 0xD454, 0xD455, 0x4A49, 0xD456, 0xD456, 0x2154, 0xD457, 0xD457, 0x4A4B,
+ 0xD458, 0xD458, 0x22E7, 0xD459, 0xD45B, 0x4A4C, 0xD45C, 0xD45C, 0x2282,
+ 0xD45D, 0xD461, 0x4A4F, 0xD462, 0xD462, 0x22E6, 0xD463, 0xD466, 0x4A54,
+ 0xD467, 0xD467, 0x22E8, 0xD468, 0xD46D, 0x4A58, 0xD46E, 0xD46E, 0x22E4,
+ 0xD46F, 0xD46F, 0x4A5E, 0xD470, 0xD470, 0x226A, 0xD471, 0xD471, 0x4A5F,
+ 0xD472, 0xD472, 0x22EB, 0xD473, 0xD473, 0x4A60, 0xD474, 0xD474, 0x22E9,
+ 0xD475, 0xD475, 0x20BD, 0xD476, 0xD477, 0x4A61, 0xD478, 0xD478, 0x22EA,
+ 0xD479, 0xD47A, 0x4A63, 0xD47B, 0xD47B, 0x22BD, 0xD47C, 0xD47D, 0x4A65,
+ 0xD47E, 0xD47E, 0x1E9E, 0xD480, 0xD481, 0x4A67, 0xD482, 0xD482, 0x22F6,
+ 0xD483, 0xD483, 0x21E7, 0xD484, 0xD484, 0x2216, 0xD485, 0xD486, 0x4A69,
+ 0xD487, 0xD487, 0x2137, 0xD488, 0xD489, 0x4A6B, 0xD48A, 0xD48A, 0x212C,
+ 0xD48B, 0xD48B, 0x4A6D, 0xD48C, 0xD48C, 0x1E68, 0xD48D, 0xD48D, 0x22F2,
+ 0xD48E, 0xD48E, 0x1F37, 0xD48F, 0xD48F, 0x22F3, 0xD490, 0xD490, 0x4A6E,
+ 0xD491, 0xD491, 0x22EF, 0xD492, 0xD492, 0x1F50, 0xD493, 0xD493, 0x1F10,
+ 0xD494, 0xD494, 0x21C8, 0xD495, 0xD495, 0x4A6F, 0xD496, 0xD496, 0x22F1,
+ 0xD497, 0xD49B, 0x4A70, 0xD49C, 0xD49C, 0x22F0, 0xD49D, 0xD49E, 0x4A75,
+ 0xD49F, 0xD49F, 0x22EE, 0xD4A0, 0xD4A0, 0x4A77, 0xD4A1, 0xD4FE, 0x10E4,
+ 0xD540, 0xD542, 0x4A78, 0xD543, 0xD543, 0x22ED, 0xD544, 0xD544, 0x229E,
+ 0xD545, 0xD545, 0x22EC, 0xD546, 0xD546, 0x1FE2, 0xD547, 0xD549, 0x4A7B,
+ 0xD54A, 0xD54A, 0x20FE, 0xD54B, 0xD54D, 0x4A7E, 0xD54E, 0xD54F, 0x22F9,
+ 0xD550, 0xD550, 0x4A81, 0xD551, 0xD551, 0x1EAF, 0xD552, 0xD553, 0x4A82,
+ 0xD554, 0xD554, 0x2236, 0xD555, 0xD555, 0x4A84, 0xD556, 0xD556, 0x22F7,
+ 0xD557, 0xD559, 0x4A85, 0xD55A, 0xD55A, 0x223D, 0xD55B, 0xD55B, 0x4A88,
+ 0xD55C, 0xD55C, 0x1E82, 0xD55D, 0xD55D, 0x1FB6, 0xD55E, 0xD55E, 0x4A89,
+ 0xD55F, 0xD55F, 0x21A4, 0xD560, 0xD560, 0x21AA, 0xD561, 0xD561, 0x22F8,
+ 0xD562, 0xD562, 0x2151, 0xD563, 0xD563, 0x4A8A, 0xD564, 0xD564, 0x1F60,
+ 0xD565, 0xD567, 0x4A8B, 0xD568, 0xD568, 0x2147, 0xD569, 0xD56B, 0x4A8E,
+ 0xD56C, 0xD56C, 0x2145, 0xD56D, 0xD56D, 0x4A91, 0xD56E, 0xD56E, 0x1FDC,
+ 0xD56F, 0xD571, 0x4A92, 0xD572, 0xD572, 0x2301, 0xD573, 0xD574, 0x4A95,
+ 0xD575, 0xD575, 0x1EF5, 0xD576, 0xD577, 0x4A97, 0xD578, 0xD578, 0x2218,
+ 0xD579, 0xD57A, 0x4A99, 0xD57B, 0xD57B, 0x1EC6, 0xD57C, 0xD57D, 0x4A9B,
+ 0xD57E, 0xD57E, 0x2300, 0xD580, 0xD580, 0x4A9D, 0xD581, 0xD581, 0x22B4,
+ 0xD582, 0xD583, 0x4A9E, 0xD584, 0xD584, 0x2169, 0xD585, 0xD585, 0x4AA0,
+ 0xD586, 0xD586, 0x22FD, 0xD587, 0xD587, 0x4AA1, 0xD588, 0xD588, 0x20EA,
+ 0xD589, 0xD589, 0x4AA2, 0xD58A, 0xD58A, 0x22F4, 0xD58B, 0xD58B, 0x4AA3,
+ 0xD58C, 0xD58C, 0x22FB, 0xD58D, 0xD58D, 0x4AA4, 0xD58E, 0xD58E, 0x22FC,
+ 0xD58F, 0xD58F, 0x2027, 0xD590, 0xD592, 0x4AA5, 0xD593, 0xD593, 0x2060,
+ 0xD594, 0xD594, 0x22FF, 0xD595, 0xD597, 0x4AA8, 0xD598, 0xD598, 0x22FE,
+ 0xD599, 0xD599, 0x1EC7, 0xD59A, 0xD59A, 0x4AAB, 0xD59B, 0xD59B, 0x230C,
+ 0xD59C, 0xD59E, 0x4AAC, 0xD59F, 0xD59F, 0x22F5, 0xD5A0, 0xD5A0, 0x4AAF,
+ 0xD5A1, 0xD5FE, 0x1142, 0xD640, 0xD640, 0x2306, 0xD641, 0xD641, 0x4AB0,
+ 0xD642, 0xD642, 0x230A, 0xD643, 0xD643, 0x21D3, 0xD644, 0xD646, 0x4AB1,
+ 0xD647, 0xD647, 0x2303, 0xD648, 0xD648, 0x4AB4, 0xD649, 0xD649, 0x2307,
+ 0xD64A, 0xD64A, 0x230B, 0xD64B, 0xD64C, 0x4AB5, 0xD64D, 0xD64D, 0x1F5F,
+ 0xD64E, 0xD64E, 0x4AB7, 0xD64F, 0xD64F, 0x2309, 0xD650, 0xD651, 0x4AB8,
+ 0xD652, 0xD652, 0x2302, 0xD653, 0xD653, 0x1F04, 0xD654, 0xD654, 0x229D,
+ 0xD655, 0xD655, 0x4ABA, 0xD656, 0xD656, 0x21FB, 0xD657, 0xD657, 0x4ABB,
+ 0xD658, 0xD658, 0x2308, 0xD659, 0xD659, 0x4ABC, 0xD65A, 0xD65A, 0x20AC,
+ 0xD65B, 0xD65B, 0x4ABD, 0xD65C, 0xD65C, 0x208E, 0xD65D, 0xD65D, 0x2305,
+ 0xD65E, 0xD65E, 0x2197, 0xD65F, 0xD65F, 0x4ABE, 0xD660, 0xD660, 0x2171,
+ 0xD661, 0xD661, 0x2298, 0xD662, 0xD664, 0x4ABF, 0xD665, 0xD665, 0x1F57,
+ 0xD666, 0xD668, 0x4AC2, 0xD669, 0xD669, 0x2082, 0xD66A, 0xD66A, 0x4AC5,
+ 0xD66B, 0xD66B, 0x2311, 0xD66C, 0xD66E, 0x4AC6, 0xD66F, 0xD66F, 0x2304,
+ 0xD670, 0xD670, 0x4AC9, 0xD671, 0xD671, 0x230F, 0xD672, 0xD672, 0x1E35,
+ 0xD673, 0xD673, 0x4ACA, 0xD674, 0xD674, 0x20D1, 0xD675, 0xD675, 0x2310,
+ 0xD676, 0xD676, 0x1FA3, 0xD677, 0xD677, 0x4ACB, 0xD678, 0xD678, 0x21D6,
+ 0xD679, 0xD67B, 0x4ACC, 0xD67C, 0xD67C, 0x2206, 0xD67D, 0xD67E, 0x4ACF,
+ 0xD680, 0xD682, 0x4AD1, 0xD683, 0xD683, 0x230D, 0xD684, 0xD685, 0x4AD4,
+ 0xD686, 0xD686, 0x2312, 0xD687, 0xD687, 0x208D, 0xD688, 0xD688, 0x2313,
+ 0xD689, 0xD68D, 0x4AD6, 0xD68E, 0xD68E, 0x22E3, 0xD68F, 0xD693, 0x4ADB,
+ 0xD694, 0xD694, 0x1FBA, 0xD695, 0xD698, 0x4AE0, 0xD699, 0xD699, 0x2078,
+ 0xD69A, 0xD6A0, 0x4AE4, 0xD6A1, 0xD6FE, 0x11A0, 0xD740, 0xD742, 0x4AEB,
+ 0xD743, 0xD743, 0x2288, 0xD744, 0xD747, 0x4AEE, 0xD748, 0xD748, 0x2316,
+ 0xD749, 0xD749, 0x1F6B, 0xD74A, 0xD74F, 0x4AF2, 0xD750, 0xD750, 0x2314,
+ 0xD751, 0xD751, 0x4AF8, 0xD752, 0xD752, 0x2130, 0xD753, 0xD753, 0x2315,
+ 0xD754, 0xD754, 0x2168, 0xD755, 0xD755, 0x4AF9, 0xD756, 0xD756, 0x20C4,
+ 0xD757, 0xD763, 0x4AFA, 0xD764, 0xD764, 0x2318, 0xD765, 0xD766, 0x4B07,
+ 0xD767, 0xD767, 0x2219, 0xD768, 0xD768, 0x2217, 0xD769, 0xD76B, 0x4B09,
+ 0xD76C, 0xD76C, 0x20D5, 0xD76D, 0xD76E, 0x4B0C, 0xD76F, 0xD76F, 0x1F4A,
+ 0xD770, 0xD774, 0x4B0E, 0xD775, 0xD775, 0x2240, 0xD776, 0xD777, 0x4B13,
+ 0xD778, 0xD778, 0x1ED3, 0xD779, 0xD77E, 0x4B15, 0xD780, 0xD782, 0x4B1B,
+ 0xD783, 0xD783, 0x1E49, 0xD784, 0xD786, 0x4B1E, 0xD787, 0xD787, 0x261B,
+ 0xD788, 0xD78A, 0x4B21, 0xD78B, 0xD78B, 0x1E6D, 0xD78C, 0xD78C, 0x20F8,
+ 0xD78D, 0xD78D, 0x4B24, 0xD78E, 0xD78E, 0x1FFB, 0xD78F, 0xD78F, 0x2319,
+ 0xD790, 0xD794, 0x4B25, 0xD795, 0xD795, 0x230E, 0xD796, 0xD796, 0x4B2A,
+ 0xD797, 0xD797, 0x2317, 0xD798, 0xD7A0, 0x4B2B, 0xD7A1, 0xD7F9, 0x11FE,
+ 0xD840, 0xD84C, 0x4B34, 0xD84D, 0xD84D, 0x20C8, 0xD84E, 0xD852, 0x4B41,
+ 0xD853, 0xD853, 0x1EFD, 0xD854, 0xD87E, 0x4B46, 0xD880, 0xD88F, 0x4B71,
+ 0xD890, 0xD890, 0x1E3B, 0xD891, 0xD891, 0x227F, 0xD892, 0xD892, 0x4B81,
+ 0xD893, 0xD893, 0x1F0C, 0xD894, 0xD894, 0x1E59, 0xD895, 0xD895, 0x1F24,
+ 0xD896, 0xD899, 0x4B82, 0xD89A, 0xD89A, 0x20BA, 0xD89B, 0xD89B, 0x1F65,
+ 0xD89C, 0xD89C, 0x1EF0, 0xD89D, 0xD89D, 0x2164, 0xD89E, 0xD89E, 0x1F30,
+ 0xD89F, 0xD89F, 0x2261, 0xD8A0, 0xD8A0, 0x4B86, 0xD8A1, 0xD8FE, 0x1257,
+ 0xD940, 0xD940, 0x4B87, 0xD941, 0xD941, 0x22A2, 0xD942, 0xD942, 0x24AB,
+ 0xD943, 0xD943, 0x4B88, 0xD944, 0xD944, 0x24AF, 0xD945, 0xD945, 0x1EE8,
+ 0xD946, 0xD946, 0x1F39, 0xD947, 0xD947, 0x4B89, 0xD948, 0xD948, 0x1E48,
+ 0xD949, 0xD949, 0x2070, 0xD94A, 0xD94A, 0x1EA8, 0xD94B, 0xD94B, 0x4B8A,
+ 0xD94C, 0xD94C, 0x24AC, 0xD94D, 0xD94D, 0x1EF7, 0xD94E, 0xD94E, 0x2176,
+ 0xD94F, 0xD94F, 0x24AD, 0xD950, 0xD950, 0x4B8B, 0xD951, 0xD951, 0x207B,
+ 0xD952, 0xD952, 0x1F45, 0xD953, 0xD953, 0x24AA, 0xD954, 0xD954, 0x204B,
+ 0xD955, 0xD955, 0x202F, 0xD956, 0xD956, 0x1F5A, 0xD957, 0xD957, 0x24B0,
+ 0xD958, 0xD958, 0x4B8C, 0xD959, 0xD959, 0x22B7, 0xD95A, 0xD95A, 0x1F7F,
+ 0xD95B, 0xD95B, 0x4B8D, 0xD95C, 0xD95C, 0x2265, 0xD95D, 0xD962, 0x4B8E,
+ 0xD963, 0xD963, 0x24B2, 0xD964, 0xD964, 0x211B, 0xD965, 0xD965, 0x1E51,
+ 0xD966, 0xD966, 0x4B94, 0xD967, 0xD967, 0x24B4, 0xD968, 0xD96B, 0x4B95,
+ 0xD96C, 0xD96C, 0x24B3, 0xD96D, 0xD96D, 0x4B99, 0xD96E, 0xD96E, 0x1E9F,
+ 0xD96F, 0xD96F, 0x4B9A, 0xD970, 0xD970, 0x2118, 0xD971, 0xD971, 0x4B9B,
+ 0xD972, 0xD972, 0x20B4, 0xD973, 0xD973, 0x23AF, 0xD974, 0xD974, 0x21BB,
+ 0xD975, 0xD975, 0x2072, 0xD976, 0xD976, 0x1F95, 0xD977, 0xD977, 0x4B9C,
+ 0xD978, 0xD978, 0x1F0A, 0xD979, 0xD979, 0x24B6, 0xD97A, 0xD97B, 0x4B9D,
+ 0xD97C, 0xD97C, 0x2291, 0xD97D, 0xD97D, 0x24B5, 0xD97E, 0xD97E, 0x2278,
+ 0xD980, 0xD980, 0x1ED4, 0xD981, 0xD986, 0x4B9F, 0xD987, 0xD987, 0x1FF3,
+ 0xD988, 0xD98C, 0x4BA5, 0xD98D, 0xD98D, 0x22A9, 0xD98E, 0xD98E, 0x24B7,
+ 0xD98F, 0xD98F, 0x1F28, 0xD990, 0xD990, 0x2109, 0xD991, 0xD991, 0x22C7,
+ 0xD992, 0xD996, 0x4BAA, 0xD997, 0xD997, 0x24AE, 0xD998, 0xD998, 0x22B1,
+ 0xD999, 0xD99A, 0x4BAF, 0xD99B, 0xD99B, 0x2266, 0xD99C, 0xD99C, 0x4BB1,
+ 0xD99D, 0xD99D, 0x225B, 0xD99E, 0xD99E, 0x22C4, 0xD99F, 0xD99F, 0x4BB2,
+ 0xD9A0, 0xD9A0, 0x2115, 0xD9A1, 0xD9FE, 0x12B5, 0xDA40, 0xDA40, 0x4BB3,
+ 0xDA41, 0xDA41, 0x222A, 0xDA42, 0xDA42, 0x24B1, 0xDA43, 0xDA47, 0x4BB4,
+ 0xDA48, 0xDA48, 0x213D, 0xDA49, 0xDA4C, 0x4BB9, 0xDA4D, 0xDA4D, 0x1F15,
+ 0xDA4E, 0xDA4E, 0x225C, 0xDA4F, 0xDA72, 0x4BBD, 0xDA73, 0xDA73, 0x1F14,
+ 0xDA74, 0xDA76, 0x4BE1, 0xDA77, 0xDA77, 0x227A, 0xDA78, 0xDA7E, 0x4BE4,
+ 0xDA80, 0xDA84, 0x4BEB, 0xDA85, 0xDA85, 0x20EE, 0xDA86, 0xDA8D, 0x4BF0,
+ 0xDA8E, 0xDA8E, 0x25F8, 0xDA8F, 0xDAA0, 0x4BF8, 0xDAA1, 0xDAFE, 0x1313,
+ 0xDB40, 0xDB5F, 0x4C0A, 0xDB60, 0xDB60, 0x1F94, 0xDB61, 0xDB77, 0x4C2A,
+ 0xDB78, 0xDB78, 0x2230, 0xDB79, 0xDB7E, 0x4C41, 0xDB80, 0xDB83, 0x4C47,
+ 0xDB84, 0xDB84, 0x25FD, 0xDB85, 0xDB8A, 0x4C4B, 0xDB8B, 0xDB8B, 0x2600,
+ 0xDB8C, 0xDB97, 0x4C51, 0xDB98, 0xDB98, 0x2606, 0xDB99, 0xDBA0, 0x4C5D,
+ 0xDBA1, 0xDBFE, 0x1371, 0xDC40, 0xDC44, 0x4C65, 0xDC45, 0xDC45, 0x25FF,
+ 0xDC46, 0xDC4E, 0x4C6A, 0xDC4F, 0xDC4F, 0x25FC, 0xDC50, 0xDC50, 0x1E8C,
+ 0xDC51, 0xDC51, 0x2602, 0xDC52, 0xDC52, 0x4C73, 0xDC53, 0xDC53, 0x224D,
+ 0xDC54, 0xDC54, 0x4C74, 0xDC55, 0xDC55, 0x2604, 0xDC56, 0xDC56, 0x25FE,
+ 0xDC57, 0xDC57, 0x2603, 0xDC58, 0xDC5C, 0x4C75, 0xDC5D, 0xDC5D, 0x2601,
+ 0xDC5E, 0xDC61, 0x4C7A, 0xDC62, 0xDC62, 0x2605, 0xDC63, 0xDC65, 0x4C7E,
+ 0xDC66, 0xDC66, 0x1EA3, 0xDC67, 0xDC67, 0x2608, 0xDC68, 0xDC6A, 0x4C81,
+ 0xDC6B, 0xDC6B, 0x2607, 0xDC6C, 0xDC7B, 0x4C84, 0xDC7C, 0xDC7C, 0x20F0,
+ 0xDC7D, 0xDC7E, 0x4C94, 0xDC80, 0xDC86, 0x4C96, 0xDC87, 0xDC87, 0x1E7B,
+ 0xDC88, 0xDC88, 0x2267, 0xDC89, 0xDC89, 0x1F36, 0xDC8A, 0xDC8A, 0x1FD6,
+ 0xDC8B, 0xDC8D, 0x4C9D, 0xDC8E, 0xDC8E, 0x21E0, 0xDC8F, 0xDC8F, 0x4CA0,
+ 0xDC90, 0xDC90, 0x248C, 0xDC91, 0xDC96, 0x4CA1, 0xDC97, 0xDC97, 0x248D,
+ 0xDC98, 0xDC9A, 0x4CA7, 0xDC9B, 0xDC9B, 0x2102, 0xDC9C, 0xDC9F, 0x4CAA,
+ 0xDCA0, 0xDCA0, 0x2494, 0xDCA1, 0xDCFE, 0x13CF, 0xDD40, 0xDD45, 0x4CAE,
+ 0xDD46, 0xDD46, 0x2493, 0xDD47, 0xDD4C, 0x4CB4, 0xDD4D, 0xDD4D, 0x248E,
+ 0xDD4E, 0xDD52, 0x4CBA, 0xDD53, 0xDD53, 0x2299, 0xDD54, 0xDD54, 0x2491,
+ 0xDD55, 0xDD55, 0x2496, 0xDD56, 0xDD56, 0x248F, 0xDD57, 0xDD57, 0x2492,
+ 0xDD58, 0xDD58, 0x4CBF, 0xDD59, 0xDD59, 0x2497, 0xDD5A, 0xDD5D, 0x4CC0,
+ 0xDD5E, 0xDD5E, 0x1FB1, 0xDD5F, 0xDD5F, 0x4CC4, 0xDD60, 0xDD60, 0x249A,
+ 0xDD61, 0xDD61, 0x4CC5, 0xDD62, 0xDD62, 0x2499, 0xDD63, 0xDD63, 0x4CC6,
+ 0xDD64, 0xDD64, 0x2258, 0xDD65, 0xDD65, 0x2498, 0xDD66, 0xDD6C, 0x4CC7,
+ 0xDD6D, 0xDD6D, 0x249B, 0xDD6E, 0xDD6E, 0x4CCE, 0xDD6F, 0xDD6F, 0x1F09,
+ 0xDD70, 0xDD70, 0x20E6, 0xDD71, 0xDD75, 0x4CCF, 0xDD76, 0xDD76, 0x2026,
+ 0xDD77, 0xDD77, 0x249F, 0xDD78, 0xDD78, 0x1F59, 0xDD79, 0xDD7A, 0x249D,
+ 0xDD7B, 0xDD7E, 0x4CD4, 0xDD80, 0xDD80, 0x4CD8, 0xDD81, 0xDD81, 0x1F3B,
+ 0xDD82, 0xDD82, 0x249C, 0xDD83, 0xDD84, 0x4CD9, 0xDD85, 0xDD85, 0x1E3A,
+ 0xDD86, 0xDD86, 0x205B, 0xDD87, 0xDD8A, 0x4CDB, 0xDD8B, 0xDD8B, 0x1F70,
+ 0xDD8C, 0xDD8E, 0x4CDF, 0xDD8F, 0xDD8F, 0x24A0, 0xDD90, 0xDD93, 0x4CE2,
+ 0xDD94, 0xDD94, 0x213B, 0xDD95, 0xDD96, 0x4CE6, 0xDD97, 0xDD97, 0x1F07,
+ 0xDD98, 0xDD99, 0x4CE8, 0xDD9A, 0xDD9A, 0x2270, 0xDD9B, 0xDD9B, 0x2237,
+ 0xDD9C, 0xDD9D, 0x4CEA, 0xDD9E, 0xDD9E, 0x24D2, 0xDD9F, 0xDD9F, 0x4CEC,
+ 0xDDA0, 0xDDA0, 0x21B3, 0xDDA1, 0xDDFE, 0x142D, 0xDE40, 0xDE40, 0x2245,
+ 0xDE41, 0xDE41, 0x24A1, 0xDE42, 0xDE43, 0x4CED, 0xDE44, 0xDE44, 0x22A8,
+ 0xDE45, 0xDE47, 0x4CEF, 0xDE48, 0xDE48, 0x227C, 0xDE49, 0xDE49, 0x1FB0,
+ 0xDE4A, 0xDE4E, 0x4CF2, 0xDE4F, 0xDE4F, 0x24A2, 0xDE50, 0xDE59, 0x4CF7,
+ 0xDE5A, 0xDE5A, 0x1F46, 0xDE5B, 0xDE5B, 0x4D01, 0xDE5C, 0xDE5C, 0x2380,
+ 0xDE5D, 0xDE5D, 0x2495, 0xDE5E, 0xDE5E, 0x4D02, 0xDE5F, 0xDE5F, 0x2490,
+ 0xDE60, 0xDE6A, 0x4D03, 0xDE6B, 0xDE6B, 0x1E30, 0xDE6C, 0xDE6E, 0x4D0E,
+ 0xDE6F, 0xDE6F, 0x1E9D, 0xDE70, 0xDE70, 0x1E4B, 0xDE71, 0xDE71, 0x1E4A,
+ 0xDE72, 0xDE72, 0x20AA, 0xDE73, 0xDE7E, 0x4D11, 0xDE80, 0xDE91, 0x4D1D,
+ 0xDE92, 0xDE92, 0x267B, 0xDE93, 0xDE9E, 0x4D2F, 0xDE9F, 0xDE9F, 0x23F2,
+ 0xDEA0, 0xDEA0, 0x4D3B, 0xDEA1, 0xDEFE, 0x148B, 0xDF40, 0xDF40, 0x227E,
+ 0xDF41, 0xDF41, 0x4D3C, 0xDF42, 0xDF42, 0x2019, 0xDF43, 0xDF4C, 0x4D3D,
+ 0xDF4D, 0xDF4D, 0x1FBB, 0xDF4E, 0xDF5B, 0x4D47, 0xDF5C, 0xDF5C, 0x2253,
+ 0xDF5D, 0xDF5D, 0x4D55, 0xDF5E, 0xDF5E, 0x1F3E, 0xDF5F, 0xDF5F, 0x1EA6,
+ 0xDF60, 0xDF60, 0x218E, 0xDF61, 0xDF63, 0x4D56, 0xDF64, 0xDF64, 0x21EC,
+ 0xDF65, 0xDF65, 0x4D59, 0xDF66, 0xDF66, 0x1EBE, 0xDF67, 0xDF67, 0x4D5A,
+ 0xDF68, 0xDF68, 0x224A, 0xDF69, 0xDF6C, 0x4D5B, 0xDF6D, 0xDF6D, 0x2133,
+ 0xDF6E, 0xDF73, 0x4D5F, 0xDF74, 0xDF74, 0x1E84, 0xDF75, 0xDF76, 0x4D65,
+ 0xDF77, 0xDF77, 0x20CF, 0xDF78, 0xDF78, 0x21E2, 0xDF79, 0xDF79, 0x4D67,
+ 0xDF7A, 0xDF7A, 0x220F, 0xDF7B, 0xDF7B, 0x4D68, 0xDF7C, 0xDF7C, 0x2029,
+ 0xDF7D, 0xDF7D, 0x4D69, 0xDF7E, 0xDF7E, 0x2073, 0xDF80, 0xDF80, 0x1F55,
+ 0xDF81, 0xDF82, 0x4D6A, 0xDF83, 0xDF83, 0x23F1, 0xDF84, 0xDF84, 0x4D6C,
+ 0xDF85, 0xDF85, 0x1E46, 0xDF86, 0xDF88, 0x4D6D, 0xDF89, 0xDF89, 0x2063,
+ 0xDF8A, 0xDF8A, 0x23F3, 0xDF8B, 0xDFA0, 0x4D70, 0xDFA1, 0xDFFE, 0x14E9,
+ 0xE040, 0xE04F, 0x4D86, 0xE050, 0xE050, 0x231E, 0xE051, 0xE05C, 0x4D96,
+ 0xE05D, 0xE05D, 0x2233, 0xE05E, 0xE068, 0x4DA2, 0xE069, 0xE069, 0x2320,
+ 0xE06A, 0xE06B, 0x4DAD, 0xE06C, 0xE06C, 0x21C7, 0xE06D, 0xE074, 0x4DAF,
+ 0xE075, 0xE075, 0x22BC, 0xE076, 0xE076, 0x4DB7, 0xE077, 0xE077, 0x231C,
+ 0xE078, 0xE078, 0x4DB8, 0xE079, 0xE079, 0x2251, 0xE07A, 0xE07E, 0x4DB9,
+ 0xE080, 0xE086, 0x4DBE, 0xE087, 0xE087, 0x1EBB, 0xE088, 0xE08C, 0x4DC5,
+ 0xE08D, 0xE08D, 0x2287, 0xE08E, 0xE08E, 0x4DCA, 0xE08F, 0xE08F, 0x202D,
+ 0xE090, 0xE090, 0x1EAB, 0xE091, 0xE091, 0x4DCB, 0xE092, 0xE092, 0x231D,
+ 0xE093, 0xE093, 0x4DCC, 0xE094, 0xE094, 0x231F, 0xE095, 0xE096, 0x4DCD,
+ 0xE097, 0xE097, 0x231B, 0xE098, 0xE0A0, 0x4DCF, 0xE0A1, 0xE0FE, 0x1547,
+ 0xE140, 0xE141, 0x4DD8, 0xE142, 0xE142, 0x2321, 0xE143, 0xE163, 0x4DDA,
+ 0xE164, 0xE164, 0x2255, 0xE165, 0xE167, 0x4DFB, 0xE168, 0xE168, 0x1E8F,
+ 0xE169, 0xE173, 0x4DFE, 0xE174, 0xE174, 0x220C, 0xE175, 0xE175, 0x1FA4,
+ 0xE176, 0xE17E, 0x4E09, 0xE180, 0xE183, 0x4E12, 0xE184, 0xE184, 0x209B,
+ 0xE185, 0xE185, 0x21D8, 0xE186, 0xE186, 0x4E16, 0xE187, 0xE187, 0x25FA,
+ 0xE188, 0xE188, 0x4E17, 0xE189, 0xE189, 0x25F9, 0xE18A, 0xE18B, 0x4E18,
+ 0xE18C, 0xE18C, 0x2134, 0xE18D, 0xE18D, 0x4E1A, 0xE18E, 0xE190, 0x24F3,
+ 0xE191, 0xE191, 0x24F8, 0xE192, 0xE192, 0x4E1B, 0xE193, 0xE193, 0x24F7,
+ 0xE194, 0xE194, 0x1EC8, 0xE195, 0xE195, 0x24F6, 0xE196, 0xE197, 0x4E1C,
+ 0xE198, 0xE198, 0x2280, 0xE199, 0xE19D, 0x4E1E, 0xE19E, 0xE19E, 0x1EC5,
+ 0xE19F, 0xE19F, 0x24FB, 0xE1A0, 0xE1A0, 0x4E23, 0xE1A1, 0xE1FE, 0x15A5,
+ 0xE240, 0xE240, 0x4E24, 0xE241, 0xE241, 0x24FA, 0xE242, 0xE242, 0x4E25,
+ 0xE243, 0xE243, 0x1EED, 0xE244, 0xE24E, 0x4E26, 0xE24F, 0xE24F, 0x24FD,
+ 0xE250, 0xE250, 0x4E31, 0xE251, 0xE251, 0x24F9, 0xE252, 0xE252, 0x4E32,
+ 0xE253, 0xE253, 0x24FE, 0xE254, 0xE254, 0x20CD, 0xE255, 0xE259, 0x4E33,
+ 0xE25A, 0xE25A, 0x2508, 0xE25B, 0xE25B, 0x2504, 0xE25C, 0xE25D, 0x4E38,
+ 0xE25E, 0xE25E, 0x2506, 0xE25F, 0xE261, 0x4E3A, 0xE262, 0xE262, 0x24FF,
+ 0xE263, 0xE263, 0x2090, 0xE264, 0xE266, 0x4E3D, 0xE267, 0xE267, 0x1EDD,
+ 0xE268, 0xE268, 0x1F25, 0xE269, 0xE269, 0x4E40, 0xE26A, 0xE26A, 0x2503,
+ 0xE26B, 0xE26B, 0x2502, 0xE26C, 0xE26D, 0x4E41, 0xE26E, 0xE26E, 0x1E7A,
+ 0xE26F, 0xE26F, 0x20A6, 0xE270, 0xE277, 0x4E43, 0xE278, 0xE278, 0x1FD5,
+ 0xE279, 0xE27C, 0x4E4B, 0xE27D, 0xE27D, 0x1F11, 0xE27E, 0xE27E, 0x4E4F,
+ 0xE280, 0xE280, 0x2507, 0xE281, 0xE281, 0x2500, 0xE282, 0xE282, 0x2505,
+ 0xE283, 0xE288, 0x4E50, 0xE289, 0xE289, 0x2519, 0xE28A, 0xE28A, 0x4E56,
+ 0xE28B, 0xE28B, 0x2515, 0xE28C, 0xE28D, 0x4E57, 0xE28E, 0xE28E, 0x250C,
+ 0xE28F, 0xE28F, 0x2031, 0xE290, 0xE291, 0x4E59, 0xE292, 0xE292, 0x250B,
+ 0xE293, 0xE293, 0x250F, 0xE294, 0xE294, 0x251A, 0xE295, 0xE295, 0x2509,
+ 0xE296, 0xE297, 0x4E5B, 0xE298, 0xE298, 0x250E, 0xE299, 0xE299, 0x2234,
+ 0xE29A, 0xE29A, 0x2513, 0xE29B, 0xE29B, 0x1F80, 0xE29C, 0xE29F, 0x4E5D,
+ 0xE2A0, 0xE2A0, 0x2501, 0xE2A1, 0xE2FE, 0x1603, 0xE340, 0xE341, 0x4E61,
+ 0xE342, 0xE342, 0x2517, 0xE343, 0xE343, 0x2516, 0xE344, 0xE346, 0x4E63,
+ 0xE347, 0xE347, 0x2518, 0xE348, 0xE34A, 0x4E66, 0xE34B, 0xE34B, 0x1E56,
+ 0xE34C, 0xE34E, 0x4E69, 0xE34F, 0xE34F, 0x250D, 0xE350, 0xE350, 0x4E6C,
+ 0xE351, 0xE351, 0x20D3, 0xE352, 0xE353, 0x4E6D, 0xE354, 0xE354, 0x207A,
+ 0xE355, 0xE355, 0x20CE, 0xE356, 0xE357, 0x4E6F, 0xE358, 0xE358, 0x2510,
+ 0xE359, 0xE35B, 0x4E71, 0xE35C, 0xE35C, 0x1E55, 0xE35D, 0xE35F, 0x4E74,
+ 0xE360, 0xE360, 0x250A, 0xE361, 0xE365, 0x4E77, 0xE366, 0xE367, 0x2511,
+ 0xE368, 0xE370, 0x4E7C, 0xE371, 0xE371, 0x1FAA, 0xE372, 0xE372, 0x4E85,
+ 0xE373, 0xE373, 0x251E, 0xE374, 0xE374, 0x1F1F, 0xE375, 0xE377, 0x4E86,
+ 0xE378, 0xE378, 0x252D, 0xE379, 0xE379, 0x221D, 0xE37A, 0xE37B, 0x4E89,
+ 0xE37C, 0xE37C, 0x2532, 0xE37D, 0xE37D, 0x4E8B, 0xE37E, 0xE37E, 0x217B,
+ 0xE380, 0xE389, 0x4E8C, 0xE38A, 0xE38A, 0x21AF, 0xE38B, 0xE38B, 0x4E96,
+ 0xE38C, 0xE38C, 0x252C, 0xE38D, 0xE38E, 0x4E97, 0xE38F, 0xE38F, 0x2528,
+ 0xE390, 0xE390, 0x4E99, 0xE391, 0xE391, 0x208C, 0xE392, 0xE392, 0x4E9A,
+ 0xE393, 0xE393, 0x252F, 0xE394, 0xE394, 0x4E9B, 0xE395, 0xE395, 0x21BC,
+ 0xE396, 0xE398, 0x4E9C, 0xE399, 0xE399, 0x251D, 0xE39A, 0xE39B, 0x4E9F,
+ 0xE39C, 0xE39C, 0x2535, 0xE39D, 0xE39D, 0x4EA1, 0xE39E, 0xE39E, 0x220D,
+ 0xE39F, 0xE39F, 0x2526, 0xE3A0, 0xE3A0, 0x4EA2, 0xE3A1, 0xE3FE, 0x1661,
+ 0xE440, 0xE440, 0x2534, 0xE441, 0xE441, 0x252A, 0xE442, 0xE442, 0x251F,
+ 0xE443, 0xE443, 0x2531, 0xE444, 0xE444, 0x251C, 0xE445, 0xE447, 0x4EA3,
+ 0xE448, 0xE448, 0x2525, 0xE449, 0xE44D, 0x4EA6, 0xE44E, 0xE44E, 0x21CD,
+ 0xE44F, 0xE44F, 0x4EAB, 0xE450, 0xE450, 0x21DA, 0xE451, 0xE451, 0x4EAC,
+ 0xE452, 0xE452, 0x2172, 0xE453, 0xE453, 0x253E, 0xE454, 0xE457, 0x4EAD,
+ 0xE458, 0xE458, 0x204F, 0xE459, 0xE459, 0x4EB1, 0xE45A, 0xE45A, 0x2543,
+ 0xE45B, 0xE45B, 0x4EB2, 0xE45C, 0xE45C, 0x21D7, 0xE45D, 0xE45D, 0x4EB3,
+ 0xE45E, 0xE45E, 0x1E3C, 0xE45F, 0xE461, 0x4EB4, 0xE462, 0xE462, 0x2529,
+ 0xE463, 0xE464, 0x4EB7, 0xE465, 0xE465, 0x2521, 0xE466, 0xE467, 0x4EB9,
+ 0xE468, 0xE468, 0x1EFF, 0xE469, 0xE472, 0x4EBB, 0xE473, 0xE473, 0x253F,
+ 0xE474, 0xE474, 0x4EC5, 0xE475, 0xE475, 0x2544, 0xE476, 0xE478, 0x4EC6,
+ 0xE479, 0xE479, 0x2523, 0xE47A, 0xE47A, 0x1E90, 0xE47B, 0xE47B, 0x253A,
+ 0xE47C, 0xE47C, 0x2545, 0xE47D, 0xE47D, 0x4EC9, 0xE47E, 0xE47E, 0x253D,
+ 0xE480, 0xE480, 0x4ECA, 0xE481, 0xE481, 0x20C1, 0xE482, 0xE483, 0x4ECB,
+ 0xE484, 0xE484, 0x2103, 0xE485, 0xE485, 0x2520, 0xE486, 0xE486, 0x253C,
+ 0xE487, 0xE487, 0x253B, 0xE488, 0xE488, 0x2538, 0xE489, 0xE48C, 0x4ECD,
+ 0xE48D, 0xE48D, 0x2540, 0xE48E, 0xE48E, 0x4ED1, 0xE48F, 0xE48F, 0x1FCD,
+ 0xE490, 0xE492, 0x4ED2, 0xE493, 0xE493, 0x1F18, 0xE494, 0xE497, 0x4ED5,
+ 0xE498, 0xE498, 0x254B, 0xE499, 0xE49C, 0x4ED9, 0xE49D, 0xE49D, 0x2547,
+ 0xE49E, 0xE49F, 0x254F, 0xE4A0, 0xE4A0, 0x4EDD, 0xE4A1, 0xE4FE, 0x16BF,
+ 0xE540, 0xE545, 0x4EDE, 0xE546, 0xE546, 0x22B0, 0xE547, 0xE547, 0x4EE4,
+ 0xE548, 0xE548, 0x2546, 0xE549, 0xE54A, 0x4EE5, 0xE54B, 0xE54B, 0x254C,
+ 0xE54C, 0xE54D, 0x4EE7, 0xE54E, 0xE54E, 0x1E9A, 0xE54F, 0xE54F, 0x2552,
+ 0xE550, 0xE550, 0x2530, 0xE551, 0xE551, 0x2549, 0xE552, 0xE554, 0x4EE9,
+ 0xE555, 0xE555, 0x2551, 0xE556, 0xE556, 0x1ECA, 0xE557, 0xE557, 0x4EEC,
+ 0xE558, 0xE558, 0x20D2, 0xE559, 0xE55B, 0x4EED, 0xE55C, 0xE55C, 0x1FB8,
+ 0xE55D, 0xE55D, 0x4EF0, 0xE55E, 0xE55E, 0x2079, 0xE55F, 0xE560, 0x4EF1,
+ 0xE561, 0xE561, 0x21AB, 0xE562, 0xE563, 0x4EF3, 0xE564, 0xE564, 0x254D,
+ 0xE565, 0xE565, 0x1EA5, 0xE566, 0xE567, 0x4EF5, 0xE568, 0xE568, 0x204C,
+ 0xE569, 0xE569, 0x2080, 0xE56A, 0xE56B, 0x4EF7, 0xE56C, 0xE56C, 0x266D,
+ 0xE56D, 0xE56D, 0x4EF9, 0xE56E, 0xE56E, 0x2537, 0xE56F, 0xE574, 0x4EFA,
+ 0xE575, 0xE575, 0x254A, 0xE576, 0xE576, 0x21B8, 0xE577, 0xE577, 0x4F00,
+ 0xE578, 0xE578, 0x254E, 0xE579, 0xE57A, 0x4F01, 0xE57B, 0xE57B, 0x24FC,
+ 0xE57C, 0xE57C, 0x2554, 0xE57D, 0xE57E, 0x4F03, 0xE580, 0xE580, 0x4F05,
+ 0xE581, 0xE581, 0x1F3C, 0xE582, 0xE582, 0x4F06, 0xE583, 0xE583, 0x1ED5,
+ 0xE584, 0xE589, 0x4F07, 0xE58A, 0xE58A, 0x2556, 0xE58B, 0xE58D, 0x4F0D,
+ 0xE58E, 0xE58E, 0x2268, 0xE58F, 0xE590, 0x4F10, 0xE591, 0xE591, 0x1ED6,
+ 0xE592, 0xE599, 0x4F12, 0xE59A, 0xE59A, 0x2557, 0xE59B, 0xE59B, 0x2553,
+ 0xE59C, 0xE59E, 0x4F1A, 0xE59F, 0xE59F, 0x2548, 0xE5A0, 0xE5A0, 0x4F1D,
+ 0xE5A1, 0xE5FE, 0x171D, 0xE640, 0xE640, 0x20DC, 0xE641, 0xE643, 0x4F1E,
+ 0xE644, 0xE644, 0x2559, 0xE645, 0xE648, 0x4F21, 0xE649, 0xE649, 0x1F97,
+ 0xE64A, 0xE64A, 0x2555, 0xE64B, 0xE64D, 0x4F25, 0xE64E, 0xE64E, 0x227D,
+ 0xE64F, 0xE651, 0x4F28, 0xE652, 0xE652, 0x257E, 0xE653, 0xE655, 0x4F2B,
+ 0xE656, 0xE656, 0x207C, 0xE657, 0xE657, 0x4F2E, 0xE658, 0xE658, 0x255A,
+ 0xE659, 0xE65A, 0x4F2F, 0xE65B, 0xE65B, 0x255E, 0xE65C, 0xE65D, 0x4F31,
+ 0xE65E, 0xE65E, 0x1E34, 0xE65F, 0xE668, 0x4F33, 0xE669, 0xE669, 0x215E,
+ 0xE66A, 0xE66A, 0x4F3D, 0xE66B, 0xE66B, 0x2560, 0xE66C, 0xE674, 0x4F3E,
+ 0xE675, 0xE675, 0x21A2, 0xE676, 0xE676, 0x2354, 0xE677, 0xE678, 0x4F47,
+ 0xE679, 0xE679, 0x2563, 0xE67A, 0xE67A, 0x2527, 0xE67B, 0xE67B, 0x4F49,
+ 0xE67C, 0xE67C, 0x252E, 0xE67D, 0xE67D, 0x2558, 0xE67E, 0xE67E, 0x4F4A,
+ 0xE680, 0xE680, 0x1F1B, 0xE681, 0xE681, 0x4F4B, 0xE682, 0xE682, 0x2283,
+ 0xE683, 0xE683, 0x4F4C, 0xE684, 0xE684, 0x2564, 0xE685, 0xE686, 0x4F4D,
+ 0xE687, 0xE687, 0x20A0, 0xE688, 0xE688, 0x4F4F, 0xE689, 0xE689, 0x2565,
+ 0xE68A, 0xE68B, 0x4F50, 0xE68C, 0xE68C, 0x2561, 0xE68D, 0xE692, 0x4F52,
+ 0xE693, 0xE693, 0x2562, 0xE694, 0xE696, 0x4F58, 0xE697, 0xE697, 0x256C,
+ 0xE698, 0xE69A, 0x4F5B, 0xE69B, 0xE69B, 0x256D, 0xE69C, 0xE69C, 0x2020,
+ 0xE69D, 0xE69E, 0x4F5E, 0xE69F, 0xE69F, 0x255F, 0xE6A0, 0xE6A0, 0x256A,
+ 0xE6A1, 0xE6FE, 0x177B, 0xE740, 0xE742, 0x4F60, 0xE743, 0xE743, 0x256E,
+ 0xE744, 0xE747, 0x4F63, 0xE748, 0xE748, 0x2539, 0xE749, 0xE749, 0x255C,
+ 0xE74A, 0xE74C, 0x4F67, 0xE74D, 0xE74E, 0x2568, 0xE74F, 0xE74F, 0x256B,
+ 0xE750, 0xE750, 0x1E6F, 0xE751, 0xE751, 0x4F6A, 0xE752, 0xE752, 0x1FC4,
+ 0xE753, 0xE753, 0x2567, 0xE754, 0xE754, 0x4F6B, 0xE755, 0xE755, 0x255B,
+ 0xE756, 0xE758, 0x4F6C, 0xE759, 0xE759, 0x261D, 0xE75A, 0xE765, 0x4F6F,
+ 0xE766, 0xE766, 0x252B, 0xE767, 0xE767, 0x4F7B, 0xE768, 0xE768, 0x2571,
+ 0xE769, 0xE769, 0x4F7C, 0xE76A, 0xE76A, 0x2577, 0xE76B, 0xE773, 0x4F7D,
+ 0xE774, 0xE774, 0x2522, 0xE775, 0xE77B, 0x4F86, 0xE77C, 0xE77C, 0x2533,
+ 0xE77D, 0xE77E, 0x4F8D, 0xE780, 0xE781, 0x4F8F, 0xE782, 0xE782, 0x202A,
+ 0xE783, 0xE783, 0x4F91, 0xE784, 0xE784, 0x2536, 0xE785, 0xE785, 0x2573,
+ 0xE786, 0xE786, 0x256F, 0xE787, 0xE789, 0x4F92, 0xE78A, 0xE78A, 0x2293,
+ 0xE78B, 0xE78B, 0x2578, 0xE78C, 0xE78E, 0x4F95, 0xE78F, 0xE78F, 0x2570,
+ 0xE790, 0xE791, 0x4F98, 0xE792, 0xE792, 0x2575, 0xE793, 0xE797, 0x4F9A,
+ 0xE798, 0xE799, 0x2541, 0xE79A, 0xE79A, 0x255D, 0xE79B, 0xE79F, 0x4F9F,
+ 0xE7A0, 0xE7A0, 0x201A, 0xE7A1, 0xE7FE, 0x17D9, 0xE840, 0xE842, 0x4FA4,
+ 0xE843, 0xE843, 0x257A, 0xE844, 0xE844, 0x2006, 0xE845, 0xE845, 0x4FA7,
+ 0xE846, 0xE846, 0x2177, 0xE847, 0xE848, 0x4FA8, 0xE849, 0xE849, 0x251B,
+ 0xE84A, 0xE84A, 0x4FAA, 0xE84B, 0xE84B, 0x2524, 0xE84C, 0xE84E, 0x4FAB,
+ 0xE84F, 0xE84F, 0x257B, 0xE850, 0xE853, 0x4FAE, 0xE854, 0xE854, 0x22A3,
+ 0xE855, 0xE859, 0x4FB2, 0xE85A, 0xE85A, 0x2579, 0xE85B, 0xE85B, 0x4FB7,
+ 0xE85C, 0xE85C, 0x2566, 0xE85D, 0xE861, 0x4FB8, 0xE862, 0xE862, 0x1F93,
+ 0xE863, 0xE863, 0x4FBD, 0xE864, 0xE864, 0x257C, 0xE865, 0xE86F, 0x4FBE,
+ 0xE870, 0xE870, 0x2514, 0xE871, 0xE872, 0x4FC9, 0xE873, 0xE873, 0x257D,
+ 0xE874, 0xE874, 0x4FCB, 0xE875, 0xE875, 0x2572, 0xE876, 0xE87B, 0x4FCC,
+ 0xE87C, 0xE87C, 0x2574, 0xE87D, 0xE87E, 0x4FD2, 0xE880, 0xE880, 0x224E,
+ 0xE881, 0xE881, 0x4FD4, 0xE882, 0xE882, 0x21C6, 0xE883, 0xE886, 0x4FD5,
+ 0xE887, 0xE887, 0x209F, 0xE888, 0xE888, 0x4FD9, 0xE889, 0xE889, 0x2576,
+ 0xE88A, 0xE88B, 0x4FDA, 0xE88C, 0xE88C, 0x2064, 0xE88D, 0xE88D, 0x22BF,
+ 0xE88E, 0xE88E, 0x261C, 0xE88F, 0xE88F, 0x225E, 0xE890, 0xE8A0, 0x4FDC,
+ 0xE8A1, 0xE8FE, 0x1837, 0xE940, 0xE94B, 0x4FED, 0xE94C, 0xE94C, 0x1E75,
+ 0xE94D, 0xE953, 0x4FF9, 0xE954, 0xE954, 0x207D, 0xE955, 0xE955, 0x5000,
+ 0xE956, 0xE956, 0x23BF, 0xE957, 0xE957, 0x2113, 0xE958, 0xE959, 0x5001,
+ 0xE95A, 0xE95A, 0x23C0, 0xE95B, 0xE95C, 0x5003, 0xE95D, 0xE95D, 0x1E45,
+ 0xE95E, 0xE95E, 0x5005, 0xE95F, 0xE95F, 0x1FD8, 0xE960, 0xE960, 0x23C4,
+ 0xE961, 0xE961, 0x5006, 0xE962, 0xE962, 0x23C2, 0xE963, 0xE963, 0x2104,
+ 0xE964, 0xE964, 0x5007, 0xE965, 0xE965, 0x21BD, 0xE966, 0xE966, 0x5008,
+ 0xE967, 0xE967, 0x1F87, 0xE968, 0xE968, 0x23C3, 0xE969, 0xE96B, 0x5009,
+ 0xE96C, 0xE96C, 0x2269, 0xE96D, 0xE974, 0x500C, 0xE975, 0xE975, 0x1F43,
+ 0xE976, 0xE976, 0x5014, 0xE977, 0xE977, 0x1F1E, 0xE978, 0xE978, 0x2679,
+ 0xE979, 0xE979, 0x1EEB, 0xE97A, 0xE97B, 0x5015, 0xE97C, 0xE97C, 0x1F35,
+ 0xE97D, 0xE97D, 0x208A, 0xE97E, 0xE97E, 0x5017, 0xE980, 0xE980, 0x23C7,
+ 0xE981, 0xE981, 0x23C9, 0xE982, 0xE982, 0x23C6, 0xE983, 0xE986, 0x5018,
+ 0xE987, 0xE987, 0x224F, 0xE988, 0xE98A, 0x501C, 0xE98B, 0xE98B, 0x23CB,
+ 0xE98C, 0xE98D, 0x501F, 0xE98E, 0xE98E, 0x21F3, 0xE98F, 0xE98F, 0x5021,
+ 0xE990, 0xE990, 0x21F7, 0xE991, 0xE991, 0x23CF, 0xE992, 0xE992, 0x23CE,
+ 0xE993, 0xE993, 0x23CA, 0xE994, 0xE994, 0x23CD, 0xE995, 0xE997, 0x5022,
+ 0xE998, 0xE998, 0x23D0, 0xE999, 0xE99A, 0x5025, 0xE99B, 0xE99B, 0x266C,
+ 0xE99C, 0xE99C, 0x5027, 0xE99D, 0xE99D, 0x23C1, 0xE99E, 0xE99E, 0x5028,
+ 0xE99F, 0xE99F, 0x1FEE, 0xE9A0, 0xE9A0, 0x23D1, 0xE9A1, 0xE9FE, 0x1895,
+ 0xEA40, 0xEA40, 0x1FF8, 0xEA41, 0xEA43, 0x5029, 0xEA44, 0xEA44, 0x23D3,
+ 0xEA45, 0xEA47, 0x502C, 0xEA48, 0xEA48, 0x23D2, 0xEA49, 0xEA49, 0x23D4,
+ 0xEA4A, 0xEA4A, 0x1E98, 0xEA4B, 0xEA4F, 0x502F, 0xEA50, 0xEA50, 0x1F2C,
+ 0xEA51, 0xEA51, 0x5034, 0xEA52, 0xEA52, 0x23D5, 0xEA53, 0xEA54, 0x5035,
+ 0xEA55, 0xEA55, 0x1E71, 0xEA56, 0xEA56, 0x2691, 0xEA57, 0xEA58, 0x5037,
+ 0xEA59, 0xEA59, 0x23C5, 0xEA5A, 0xEA7E, 0x5039, 0xEA80, 0xEA80, 0x231A,
+ 0xEA81, 0xEA83, 0x505E, 0xEA84, 0xEA84, 0x2114, 0xEA85, 0xEA86, 0x5061,
+ 0xEA87, 0xEA87, 0x2284, 0xEA88, 0xEA8D, 0x5063, 0xEA8E, 0xEA8E, 0x221C,
+ 0xEA8F, 0xEA8F, 0x5069, 0xEA90, 0xEA90, 0x1E7E, 0xEA91, 0xEA91, 0x204D,
+ 0xEA92, 0xEA95, 0x506A, 0xEA96, 0xEA96, 0x2201, 0xEA97, 0xEA9F, 0x506E,
+ 0xEAA0, 0xEAA0, 0x1ED9, 0xEAA1, 0xEAFE, 0x18F3, 0xEB40, 0xEB40, 0x5077,
+ 0xEB41, 0xEB41, 0x1FB2, 0xEB42, 0xEB44, 0x5078, 0xEB45, 0xEB45, 0x2252,
+ 0xEB46, 0xEB47, 0x507B, 0xEB48, 0xEB48, 0x1F79, 0xEB49, 0xEB52, 0x507D,
+ 0xEB53, 0xEB53, 0x2157, 0xEB54, 0xEB54, 0x5087, 0xEB55, 0xEB55, 0x21BF,
+ 0xEB56, 0xEB5A, 0x5088, 0xEB5B, 0xEB5B, 0x221F, 0xEB5C, 0xEB5C, 0x508D,
+ 0xEB5D, 0xEB5D, 0x203D, 0xEB5E, 0xEB5F, 0x508E, 0xEB60, 0xEB60, 0x2015,
+ 0xEB61, 0xEB61, 0x5090, 0xEB62, 0xEB62, 0x26A5, 0xEB63, 0xEB6C, 0x5091,
+ 0xEB6D, 0xEB6D, 0x2156, 0xEB6E, 0xEB6F, 0x509B, 0xEB70, 0xEB70, 0x2144,
+ 0xEB71, 0xEB71, 0x509D, 0xEB72, 0xEB72, 0x1E91, 0xEB73, 0xEB73, 0x2257,
+ 0xEB74, 0xEB77, 0x509E, 0xEB78, 0xEB78, 0x200A, 0xEB79, 0xEB79, 0x2092,
+ 0xEB7A, 0xEB7E, 0x50A2, 0xEB80, 0xEB84, 0x50A7, 0xEB85, 0xEB85, 0x2250,
+ 0xEB86, 0xEB89, 0x50AC, 0xEB8A, 0xEB8A, 0x1EC3, 0xEB8B, 0xEBA0, 0x50B0,
+ 0xEBA1, 0xEBFE, 0x1951, 0xEC40, 0xEC45, 0x50C6, 0xEC46, 0xEC46, 0x21A8,
+ 0xEC47, 0xEC55, 0x50CC, 0xEC56, 0xEC56, 0x260D, 0xEC57, 0xEC59, 0x50DB,
+ 0xEC5A, 0xEC5A, 0x260C, 0xEC5B, 0xEC5B, 0x50DE, 0xEC5C, 0xEC5C, 0x260E,
+ 0xEC5D, 0xEC5F, 0x50DF, 0xEC60, 0xEC60, 0x2032, 0xEC61, 0xEC6D, 0x50E2,
+ 0xEC6E, 0xEC6E, 0x260B, 0xEC6F, 0xEC75, 0x50EF, 0xEC76, 0xEC76, 0x22C3,
+ 0xEC77, 0xEC7E, 0x50F6, 0xEC80, 0xEC95, 0x50FE, 0xEC96, 0xEC96, 0x1F23,
+ 0xEC97, 0xECA0, 0x5114, 0xECA1, 0xECFE, 0x19AF, 0xED40, 0xED45, 0x511E,
+ 0xED46, 0xED46, 0x2695, 0xED47, 0xED57, 0x5124, 0xED58, 0xED58, 0x265E,
+ 0xED59, 0xED5D, 0x5135, 0xED5E, 0xED5E, 0x265D, 0xED5F, 0xED60, 0x513A,
+ 0xED61, 0xED61, 0x2692, 0xED62, 0xED63, 0x513C, 0xED64, 0xED64, 0x265F,
+ 0xED65, 0xED65, 0x513E, 0xED66, 0xED66, 0x218D, 0xED67, 0xED67, 0x20FD,
+ 0xED68, 0xED6D, 0x513F, 0xED6E, 0xED6E, 0x1F40, 0xED6F, 0xED73, 0x5145,
+ 0xED74, 0xED74, 0x2465, 0xED75, 0xED76, 0x514A, 0xED77, 0xED77, 0x2467,
+ 0xED78, 0xED78, 0x514C, 0xED79, 0xED79, 0x2466, 0xED7A, 0xED7E, 0x514D,
+ 0xED80, 0xED90, 0x5152, 0xED91, 0xED91, 0x21C9, 0xED92, 0xED92, 0x5163,
+ 0xED93, 0xED93, 0x2209, 0xED94, 0xED94, 0x1EC9, 0xED95, 0xED95, 0x20E9,
+ 0xED96, 0xED96, 0x5164, 0xED97, 0xED97, 0x21CA, 0xED98, 0xED98, 0x2146,
+ 0xED99, 0xED99, 0x25C5, 0xED9A, 0xED9A, 0x21DC, 0xED9B, 0xED9B, 0x5165,
+ 0xED9C, 0xED9C, 0x245E, 0xED9D, 0xED9D, 0x5166, 0xED9E, 0xED9E, 0x214F,
+ 0xED9F, 0xED9F, 0x5167, 0xEDA0, 0xEDA0, 0x25C6, 0xEDA1, 0xEDFE, 0x1A0D,
+ 0xEE40, 0xEE40, 0x25C7, 0xEE41, 0xEE41, 0x2241, 0xEE42, 0xEE42, 0x218A,
+ 0xEE43, 0xEE43, 0x1E2F, 0xEE44, 0xEE44, 0x1EDC, 0xEE45, 0xEE47, 0x5168,
+ 0xEE48, 0xEE48, 0x20BF, 0xEE49, 0xEE49, 0x2034, 0xEE4A, 0xEE4C, 0x516B,
+ 0xEE4D, 0xEE4D, 0x25C9, 0xEE4E, 0xEE51, 0x516E, 0xEE52, 0xEE52, 0x25C8,
+ 0xEE53, 0xEE54, 0x5172, 0xEE55, 0xEE55, 0x220E, 0xEE56, 0xEE56, 0x5174,
+ 0xEE57, 0xEE57, 0x25CB, 0xEE58, 0xEE5D, 0x5175, 0xEE5E, 0xEE5E, 0x217D,
+ 0xEE5F, 0xEE60, 0x517B, 0xEE61, 0xEE61, 0x1F7E, 0xEE62, 0xEE67, 0x517D,
+ 0xEE68, 0xEE68, 0x25CC, 0xEE69, 0xEE69, 0x1FC3, 0xEE6A, 0xEE6B, 0x5183,
+ 0xEE6C, 0xEE6C, 0x20B9, 0xEE6D, 0xEE6D, 0x5185, 0xEE6E, 0xEE6E, 0x2181,
+ 0xEE6F, 0xEE76, 0x5186, 0xEE77, 0xEE77, 0x1FDA, 0xEE78, 0xEE7C, 0x518E,
+ 0xEE7D, 0xEE7D, 0x2173, 0xEE7E, 0xEE7E, 0x1EE1, 0xEE80, 0xEE80, 0x25CD,
+ 0xEE81, 0xEE84, 0x5193, 0xEE85, 0xEE85, 0x25CE, 0xEE86, 0xEE86, 0x21F6,
+ 0xEE87, 0xEE89, 0x5197, 0xEE8A, 0xEE8A, 0x224B, 0xEE8B, 0xEE8B, 0x25D1,
+ 0xEE8C, 0xEE8C, 0x519A, 0xEE8D, 0xEE8D, 0x1EC0, 0xEE8E, 0xEE8F, 0x519B,
+ 0xEE90, 0xEE90, 0x2008, 0xEE91, 0xEE93, 0x519D, 0xEE94, 0xEE94, 0x25D0,
+ 0xEE95, 0xEE96, 0x51A0, 0xEE97, 0xEE97, 0x25D2, 0xEE98, 0xEE98, 0x51A2,
+ 0xEE99, 0xEE99, 0x1F2A, 0xEE9A, 0xEE9C, 0x51A3, 0xEE9D, 0xEE9D, 0x1E72,
+ 0xEE9E, 0xEE9E, 0x25D3, 0xEE9F, 0xEEA0, 0x51A6, 0xEEA1, 0xEEFE, 0x1A6B,
+ 0xEF40, 0xEF40, 0x21BE, 0xEF41, 0xEF41, 0x25D4, 0xEF42, 0xEF42, 0x2044,
+ 0xEF43, 0xEF43, 0x51A8, 0xEF44, 0xEF44, 0x25CF, 0xEF45, 0xEF45, 0x20F3,
+ 0xEF46, 0xEF4B, 0x51A9, 0xEF4C, 0xEF4C, 0x1F00, 0xEF4D, 0xEF51, 0x51AF,
+ 0xEF52, 0xEF53, 0x24CC, 0xEF54, 0xEF54, 0x51B4, 0xEF55, 0xEF55, 0x2698,
+ 0xEF56, 0xEF56, 0x51B5, 0xEF57, 0xEF57, 0x2678, 0xEF58, 0xEF59, 0x51B6,
+ 0xEF5A, 0xEF5A, 0x24CE, 0xEF5B, 0xEF5F, 0x51B8, 0xEF60, 0xEF60, 0x24CF,
+ 0xEF61, 0xEF67, 0x51BD, 0xEF68, 0xEF68, 0x20B8, 0xEF69, 0xEF69, 0x51C4,
+ 0xEF6A, 0xEF6A, 0x24D0, 0xEF6B, 0xEF6B, 0x51C5, 0xEF6C, 0xEF6C, 0x24D1,
+ 0xEF6D, 0xEF76, 0x51C6, 0xEF77, 0xEF77, 0x1EF4, 0xEF78, 0xEF79, 0x51D0,
+ 0xEF7A, 0xEF7A, 0x239B, 0xEF7B, 0xEF7B, 0x51D2, 0xEF7C, 0xEF7C, 0x267E,
+ 0xEF7D, 0xEF7E, 0x51D3, 0xEF80, 0xEF81, 0x51D5, 0xEF82, 0xEF82, 0x239D,
+ 0xEF83, 0xEF84, 0x239F, 0xEF85, 0xEF85, 0x51D7, 0xEF86, 0xEF86, 0x23A1,
+ 0xEF87, 0xEF87, 0x51D8, 0xEF88, 0xEF88, 0x1EF1, 0xEF89, 0xEF8A, 0x51D9,
+ 0xEF8B, 0xEF8B, 0x221E, 0xEF8C, 0xEF8C, 0x51DB, 0xEF8D, 0xEF8D, 0x23A2,
+ 0xEF8E, 0xEF94, 0x51DC, 0xEF95, 0xEF95, 0x214B, 0xEF96, 0xEF96, 0x1E36,
+ 0xEF97, 0xEF97, 0x2135, 0xEF98, 0xEF9B, 0x51E3, 0xEF9C, 0xEF9C, 0x1FAD,
+ 0xEF9D, 0xEF9D, 0x51E7, 0xEF9E, 0xEF9E, 0x1E53, 0xEF9F, 0xEFA0, 0x51E8,
+ 0xEFA1, 0xEFFE, 0x1AC9, 0xF040, 0xF040, 0x51EA, 0xF041, 0xF041, 0x23A3,
+ 0xF042, 0xF042, 0x2203, 0xF043, 0xF043, 0x51EB, 0xF044, 0xF044, 0x1EE7,
+ 0xF045, 0xF046, 0x51EC, 0xF047, 0xF047, 0x23A4, 0xF048, 0xF048, 0x2097,
+ 0xF049, 0xF049, 0x1EE4, 0xF04A, 0xF04D, 0x51EE, 0xF04E, 0xF04E, 0x2238,
+ 0xF04F, 0xF050, 0x51F2, 0xF051, 0xF051, 0x23A5, 0xF052, 0xF053, 0x51F4,
+ 0xF054, 0xF054, 0x1F9A, 0xF055, 0xF056, 0x51F6, 0xF057, 0xF057, 0x21C3,
+ 0xF058, 0xF05D, 0x51F8, 0xF05E, 0xF05E, 0x1F2E, 0xF05F, 0xF067, 0x51FE,
+ 0xF068, 0xF068, 0x239C, 0xF069, 0xF06B, 0x5207, 0xF06C, 0xF06C, 0x23A6,
+ 0xF06D, 0xF070, 0x520A, 0xF071, 0xF071, 0x239E, 0xF072, 0xF072, 0x520E,
+ 0xF073, 0xF073, 0x2035, 0xF074, 0xF074, 0x23A7, 0xF075, 0xF077, 0x520F,
+ 0xF078, 0xF078, 0x23A8, 0xF079, 0xF079, 0x5212, 0xF07A, 0xF07A, 0x2075,
+ 0xF07B, 0xF07C, 0x5213, 0xF07D, 0xF07E, 0x23A9, 0xF080, 0xF080, 0x23AB,
+ 0xF081, 0xF081, 0x1FEB, 0xF082, 0xF082, 0x23AC, 0xF083, 0xF086, 0x5215,
+ 0xF087, 0xF087, 0x1F6A, 0xF088, 0xF088, 0x20F9, 0xF089, 0xF08A, 0x5219,
+ 0xF08B, 0xF08B, 0x2666, 0xF08C, 0xF08F, 0x521B, 0xF090, 0xF090, 0x2667,
+ 0xF091, 0xF091, 0x521F, 0xF092, 0xF092, 0x1E6C, 0xF093, 0xF095, 0x5220,
+ 0xF096, 0xF096, 0x23AD, 0xF097, 0xF0A0, 0x5223, 0xF0A1, 0xF0FE, 0x1B27,
+ 0xF140, 0xF151, 0x522D, 0xF152, 0xF152, 0x206D, 0xF153, 0xF153, 0x2242,
+ 0xF154, 0xF154, 0x1F02, 0xF155, 0xF156, 0x523F, 0xF157, 0xF157, 0x2183,
+ 0xF158, 0xF158, 0x5241, 0xF159, 0xF159, 0x1E85, 0xF15A, 0xF15A, 0x21E9,
+ 0xF15B, 0xF166, 0x5242, 0xF167, 0xF167, 0x1E57, 0xF168, 0xF175, 0x524E,
+ 0xF176, 0xF176, 0x22A5, 0xF177, 0xF177, 0x2407, 0xF178, 0xF178, 0x1FCA,
+ 0xF179, 0xF179, 0x525C, 0xF17A, 0xF17A, 0x2402, 0xF17B, 0xF17B, 0x1F82,
+ 0xF17C, 0xF17D, 0x525D, 0xF17E, 0xF17E, 0x2408, 0xF180, 0xF180, 0x2404,
+ 0xF181, 0xF181, 0x525F, 0xF182, 0xF182, 0x2131, 0xF183, 0xF183, 0x5260,
+ 0xF184, 0xF184, 0x2184, 0xF185, 0xF185, 0x5261, 0xF186, 0xF186, 0x2403,
+ 0xF187, 0xF187, 0x5262, 0xF188, 0xF188, 0x206E, 0xF189, 0xF189, 0x240B,
+ 0xF18A, 0xF193, 0x5263, 0xF194, 0xF194, 0x1F3F, 0xF195, 0xF197, 0x526D,
+ 0xF198, 0xF198, 0x2067, 0xF199, 0xF1A0, 0x5270, 0xF1A1, 0xF1FE, 0x1B85,
+ 0xF240, 0xF244, 0x5278, 0xF245, 0xF245, 0x1FD7, 0xF246, 0xF246, 0x527D,
+ 0xF247, 0xF247, 0x1E83, 0xF248, 0xF24A, 0x527E, 0xF24B, 0xF24B, 0x240F,
+ 0xF24C, 0xF252, 0x5281, 0xF253, 0xF253, 0x240E, 0xF254, 0xF254, 0x20C7,
+ 0xF255, 0xF255, 0x240D, 0xF256, 0xF25B, 0x5288, 0xF25C, 0xF25C, 0x2412,
+ 0xF25D, 0xF25E, 0x528E, 0xF25F, 0xF25F, 0x20B7, 0xF260, 0xF270, 0x5290,
+ 0xF271, 0xF271, 0x23F0, 0xF272, 0xF272, 0x52A1, 0xF273, 0xF273, 0x2411,
+ 0xF274, 0xF274, 0x2414, 0xF275, 0xF275, 0x52A2, 0xF276, 0xF276, 0x2170,
+ 0xF277, 0xF27B, 0x52A3, 0xF27C, 0xF27C, 0x2405, 0xF27D, 0xF27D, 0x210C,
+ 0xF27E, 0xF27E, 0x2415, 0xF280, 0xF284, 0x52A8, 0xF285, 0xF285, 0x2066,
+ 0xF286, 0xF286, 0x52AD, 0xF287, 0xF287, 0x2352, 0xF288, 0xF288, 0x2413,
+ 0xF289, 0xF289, 0x2410, 0xF28A, 0xF28B, 0x2416, 0xF28C, 0xF28C, 0x20F1,
+ 0xF28D, 0xF290, 0x52AE, 0xF291, 0xF291, 0x240A, 0xF292, 0xF293, 0x52B2,
+ 0xF294, 0xF294, 0x2409, 0xF295, 0xF295, 0x52B4, 0xF296, 0xF296, 0x2418,
+ 0xF297, 0xF29B, 0x52B5, 0xF29C, 0xF29C, 0x1FA7, 0xF29D, 0xF29D, 0x52BA,
+ 0xF29E, 0xF29E, 0x21FC, 0xF29F, 0xF2A0, 0x52BB, 0xF2A1, 0xF2FE, 0x1BE3,
+ 0xF340, 0xF340, 0x1FC1, 0xF341, 0xF341, 0x2406, 0xF342, 0xF344, 0x52BD,
+ 0xF345, 0xF345, 0x229C, 0xF346, 0xF347, 0x52C0, 0xF348, 0xF348, 0x204E,
+ 0xF349, 0xF349, 0x52C2, 0xF34A, 0xF34A, 0x241A, 0xF34B, 0xF34B, 0x2419,
+ 0xF34C, 0xF34F, 0x52C3, 0xF350, 0xF350, 0x240C, 0xF351, 0xF360, 0x52C7,
+ 0xF361, 0xF361, 0x1E29, 0xF362, 0xF373, 0x52D7, 0xF374, 0xF374, 0x2661,
+ 0xF375, 0xF375, 0x52E9, 0xF376, 0xF376, 0x26A4, 0xF377, 0xF377, 0x2174,
+ 0xF378, 0xF378, 0x2663, 0xF379, 0xF379, 0x2662, 0xF37A, 0xF37E, 0x52EA,
+ 0xF380, 0xF38B, 0x52EF, 0xF38C, 0xF38C, 0x2675, 0xF38D, 0xF39F, 0x52FB,
+ 0xF3A0, 0xF3A0, 0x214C, 0xF3A1, 0xF3FE, 0x1C41, 0xF440, 0xF444, 0x530E,
+ 0xF445, 0xF445, 0x267A, 0xF446, 0xF44F, 0x5313, 0xF450, 0xF450, 0x26A0,
+ 0xF451, 0xF456, 0x531D, 0xF457, 0xF457, 0x2668, 0xF458, 0xF458, 0x5323,
+ 0xF459, 0xF459, 0x1ED0, 0xF45A, 0xF45A, 0x5324, 0xF45B, 0xF45B, 0x2096,
+ 0xF45C, 0xF45C, 0x5325, 0xF45D, 0xF45D, 0x23CC, 0xF45E, 0xF461, 0x5326,
+ 0xF462, 0xF462, 0x23C8, 0xF463, 0xF463, 0x532A, 0xF464, 0xF464, 0x223E,
+ 0xF465, 0xF474, 0x532B, 0xF475, 0xF475, 0x2665, 0xF476, 0xF47B, 0x533B,
+ 0xF47C, 0xF47C, 0x2664, 0xF47D, 0xF47D, 0x5341, 0xF47E, 0xF47E, 0x2239,
+ 0xF480, 0xF493, 0x5342, 0xF494, 0xF494, 0x204A, 0xF495, 0xF498, 0x5356,
+ 0xF499, 0xF499, 0x261F, 0xF49A, 0xF49B, 0x535A, 0xF49C, 0xF49C, 0x261E,
+ 0xF49D, 0xF4A0, 0x535C, 0xF4A1, 0xF4FE, 0x1C9F, 0xF540, 0xF544, 0x5360,
+ 0xF545, 0xF545, 0x2620, 0xF546, 0xF546, 0x5365, 0xF547, 0xF547, 0x2621,
+ 0xF548, 0xF551, 0x5366, 0xF552, 0xF552, 0x2622, 0xF553, 0xF553, 0x5370,
+ 0xF554, 0xF554, 0x2627, 0xF555, 0xF555, 0x1E39, 0xF556, 0xF556, 0x2625,
+ 0xF557, 0xF55D, 0x5371, 0xF55E, 0xF55E, 0x2629, 0xF55F, 0xF560, 0x5378,
+ 0xF561, 0xF561, 0x262E, 0xF562, 0xF562, 0x262B, 0xF563, 0xF56D, 0x537A,
+ 0xF56E, 0xF56E, 0x262A, 0xF56F, 0xF56F, 0x262D, 0xF570, 0xF570, 0x5385,
+ 0xF571, 0xF571, 0x2628, 0xF572, 0xF572, 0x21B9, 0xF573, 0xF57E, 0x5386,
+ 0xF580, 0xF584, 0x5392, 0xF585, 0xF585, 0x2636, 0xF586, 0xF586, 0x2630,
+ 0xF587, 0xF58B, 0x5397, 0xF58C, 0xF58C, 0x2638, 0xF58D, 0xF58D, 0x539C,
+ 0xF58E, 0xF58E, 0x200D, 0xF58F, 0xF58F, 0x2637, 0xF590, 0xF598, 0x539D,
+ 0xF599, 0xF599, 0x2645, 0xF59A, 0xF59A, 0x53A6, 0xF59B, 0xF59B, 0x263A,
+ 0xF59C, 0xF59F, 0x53A7, 0xF5A0, 0xF5A0, 0x2643, 0xF5A1, 0xF5FE, 0x1CFD,
+ 0xF640, 0xF640, 0x53AB, 0xF641, 0xF641, 0x2640, 0xF642, 0xF644, 0x53AC,
+ 0xF645, 0xF645, 0x263D, 0xF646, 0xF646, 0x2641, 0xF647, 0xF647, 0x53AF,
+ 0xF648, 0xF648, 0x263E, 0xF649, 0xF64A, 0x53B0, 0xF64B, 0xF64B, 0x263F,
+ 0xF64C, 0xF64C, 0x1FC0, 0xF64D, 0xF64D, 0x53B2, 0xF64E, 0xF64F, 0x263B,
+ 0xF650, 0xF653, 0x53B3, 0xF654, 0xF654, 0x2642, 0xF655, 0xF657, 0x53B7,
+ 0xF658, 0xF658, 0x2644, 0xF659, 0xF660, 0x53BA, 0xF661, 0xF661, 0x2639,
+ 0xF662, 0xF662, 0x53C2, 0xF663, 0xF663, 0x264C, 0xF664, 0xF66B, 0x53C3,
+ 0xF66C, 0xF66C, 0x2647, 0xF66D, 0xF66D, 0x264B, 0xF66E, 0xF670, 0x53CB,
+ 0xF671, 0xF671, 0x2649, 0xF672, 0xF673, 0x53CE, 0xF674, 0xF674, 0x2648,
+ 0xF675, 0xF675, 0x53D0, 0xF676, 0xF676, 0x264A, 0xF677, 0xF677, 0x2108,
+ 0xF678, 0xF67E, 0x53D1, 0xF680, 0xF684, 0x53D8, 0xF685, 0xF685, 0x264D,
+ 0xF686, 0xF687, 0x53DD, 0xF688, 0xF688, 0x2634, 0xF689, 0xF689, 0x53DF,
+ 0xF68A, 0xF68A, 0x2651, 0xF68B, 0xF68C, 0x53E0, 0xF68D, 0xF68D, 0x2650,
+ 0xF68E, 0xF68E, 0x2652, 0xF68F, 0xF691, 0x53E2, 0xF692, 0xF692, 0x264F,
+ 0xF693, 0xF695, 0x53E5, 0xF696, 0xF696, 0x2632, 0xF697, 0xF697, 0x264E,
+ 0xF698, 0xF698, 0x2653, 0xF699, 0xF699, 0x53E8, 0xF69A, 0xF69A, 0x2657,
+ 0xF69B, 0xF69B, 0x53E9, 0xF69C, 0xF69C, 0x2635, 0xF69D, 0xF69D, 0x53EA,
+ 0xF69E, 0xF69E, 0x2633, 0xF69F, 0xF69F, 0x53EB, 0xF6A0, 0xF6A0, 0x2656,
+ 0xF6A1, 0xF6FE, 0x1D5B, 0xF740, 0xF741, 0x53EC, 0xF742, 0xF742, 0x2654,
+ 0xF743, 0xF748, 0x53EE, 0xF749, 0xF749, 0x2658, 0xF74A, 0xF74B, 0x53F4,
+ 0xF74C, 0xF74C, 0x2655, 0xF74D, 0xF74D, 0x1E4D, 0xF74E, 0xF755, 0x53F6,
+ 0xF756, 0xF756, 0x265B, 0xF757, 0xF757, 0x53FE, 0xF758, 0xF758, 0x265A,
+ 0xF759, 0xF759, 0x53FF, 0xF75A, 0xF75A, 0x2659, 0xF75B, 0xF75B, 0x202E,
+ 0xF75C, 0xF75C, 0x262F, 0xF75D, 0xF760, 0x5400, 0xF761, 0xF761, 0x2646,
+ 0xF762, 0xF762, 0x5404, 0xF763, 0xF763, 0x2626, 0xF764, 0xF76A, 0x5405,
+ 0xF76B, 0xF76B, 0x265C, 0xF76C, 0xF770, 0x540C, 0xF771, 0xF771, 0x262C,
+ 0xF772, 0xF77B, 0x5411, 0xF77C, 0xF77C, 0x2623, 0xF77D, 0xF77D, 0x541B,
+ 0xF77E, 0xF77E, 0x2631, 0xF780, 0xF7A0, 0x541C, 0xF7A1, 0xF7FE, 0x1DB9,
+ 0xF840, 0xF841, 0x543D, 0xF842, 0xF842, 0x209C, 0xF843, 0xF845, 0x543F,
+ 0xF846, 0xF846, 0x2580, 0xF847, 0xF848, 0x5442, 0xF849, 0xF849, 0x22DC,
+ 0xF84A, 0xF84F, 0x5444, 0xF850, 0xF850, 0x1F05, 0xF851, 0xF851, 0x208B,
+ 0xF852, 0xF852, 0x544A, 0xF853, 0xF853, 0x2581, 0xF854, 0xF862, 0x544B,
+ 0xF863, 0xF863, 0x2583, 0xF864, 0xF864, 0x2582, 0xF865, 0xF865, 0x545A,
+ 0xF866, 0xF866, 0x21EE, 0xF867, 0xF871, 0x545B, 0xF872, 0xF872, 0x2182,
+ 0xF873, 0xF877, 0x5466, 0xF878, 0xF878, 0x2243, 0xF879, 0xF879, 0x546B,
+ 0xF87A, 0xF87A, 0x2587, 0xF87B, 0xF87B, 0x546C, 0xF87C, 0xF87C, 0x2588,
+ 0xF87D, 0xF87E, 0x546D, 0xF880, 0xF880, 0x546F, 0xF881, 0xF881, 0x2584,
+ 0xF882, 0xF883, 0x5470, 0xF884, 0xF884, 0x21FD, 0xF885, 0xF885, 0x5472,
+ 0xF886, 0xF886, 0x21EF, 0xF887, 0xF88C, 0x5473, 0xF88D, 0xF88D, 0x258A,
+ 0xF88E, 0xF88E, 0x258C, 0xF88F, 0xF898, 0x5479, 0xF899, 0xF899, 0x1F47,
+ 0xF89A, 0xF89C, 0x5483, 0xF89D, 0xF89D, 0x1F1D, 0xF89E, 0xF89F, 0x5486,
+ 0xF8A0, 0xF8A0, 0x258D, 0xF940, 0xF94D, 0x5488, 0xF94E, 0xF94E, 0x1FD0,
+ 0xF94F, 0xF94F, 0x2592, 0xF950, 0xF950, 0x258F, 0xF951, 0xF958, 0x5496,
+ 0xF959, 0xF959, 0x2594, 0xF95A, 0xF95A, 0x1EE0, 0xF95B, 0xF95C, 0x549E,
+ 0xF95D, 0xF95D, 0x2591, 0xF95E, 0xF95E, 0x2595, 0xF95F, 0xF966, 0x54A0,
+ 0xF967, 0xF967, 0x2597, 0xF968, 0xF968, 0x54A8, 0xF969, 0xF969, 0x20B6,
+ 0xF96A, 0xF96B, 0x54A9, 0xF96C, 0xF96C, 0x2598, 0xF96D, 0xF96E, 0x54AB,
+ 0xF96F, 0xF96F, 0x20F6, 0xF970, 0xF97E, 0x54AD, 0xF980, 0xF984, 0x54BC,
+ 0xF985, 0xF985, 0x2585, 0xF986, 0xF986, 0x54C1, 0xF987, 0xF987, 0x2599,
+ 0xF988, 0xF990, 0x54C2, 0xF991, 0xF991, 0x2596, 0xF992, 0xF995, 0x54CB,
+ 0xF996, 0xF996, 0x259A, 0xF997, 0xF997, 0x54CF, 0xF998, 0xF998, 0x259B,
+ 0xF999, 0xF9A0, 0x54D0, 0xFA40, 0xFA41, 0x54D8, 0xFA42, 0xFA42, 0x259D,
+ 0xFA43, 0xFA45, 0x54DA, 0xFA46, 0xFA46, 0x259E, 0xFA47, 0xFA4B, 0x54DD,
+ 0xFA4C, 0xFA4C, 0x234C, 0xFA4D, 0xFA50, 0x54E2, 0xFA51, 0xFA51, 0x1F44,
+ 0xFA52, 0xFA57, 0x54E6, 0xFA58, 0xFA58, 0x2660, 0xFA59, 0xFA59, 0x25A0,
+ 0xFA5A, 0xFA5C, 0x54EC, 0xFA5D, 0xFA5D, 0x259C, 0xFA5E, 0xFA5E, 0x54EF,
+ 0xFA5F, 0xFA5F, 0x259F, 0xFA60, 0xFA60, 0x54F0, 0xFA61, 0xFA61, 0x1F6C,
+ 0xFA62, 0xFA6F, 0x54F1, 0xFA70, 0xFA70, 0x25A2, 0xFA71, 0xFA73, 0x54FF,
+ 0xFA74, 0xFA74, 0x20AE, 0xFA75, 0xFA75, 0x5502, 0xFA76, 0xFA76, 0x258B,
+ 0xFA77, 0xFA77, 0x25A3, 0xFA78, 0xFA7E, 0x5503, 0xFA80, 0xFA82, 0x550A,
+ 0xFA83, 0xFA83, 0x2589, 0xFA84, 0xFA84, 0x25A5, 0xFA85, 0xFA8C, 0x550D,
+ 0xFA8D, 0xFA8D, 0x25A4, 0xFA8E, 0xFA8F, 0x5515, 0xFA90, 0xFA90, 0x25A6,
+ 0xFA91, 0xFA91, 0x2593, 0xFA92, 0xFA95, 0x5517, 0xFA96, 0xFA96, 0x25A7,
+ 0xFA97, 0xFA97, 0x2222, 0xFA98, 0xFA98, 0x25A9, 0xFA99, 0xFAA0, 0x551B,
+ 0xFB40, 0xFB48, 0x5523, 0xFB49, 0xFB49, 0x25A8, 0xFB4A, 0xFB51, 0x552C,
+ 0xFB52, 0xFB52, 0x2586, 0xFB53, 0xFB56, 0x5534, 0xFB57, 0xFB57, 0x25A1,
+ 0xFB58, 0xFB58, 0x25AA, 0xFB59, 0xFB59, 0x5538, 0xFB5A, 0xFB5A, 0x2590,
+ 0xFB5B, 0xFB5B, 0x258E, 0xFB5C, 0xFB74, 0x5539, 0xFB75, 0xFB75, 0x2688,
+ 0xFB76, 0xFB78, 0x5552, 0xFB79, 0xFB79, 0x269E, 0xFB7A, 0xFB7A, 0x25FB,
+ 0xFB7B, 0xFB7B, 0x5555, 0xFB7C, 0xFB7C, 0x1F8C, 0xFB7D, 0xFB7D, 0x21F4,
+ 0xFB7E, 0xFB7E, 0x5556, 0xFB80, 0xFB8F, 0x5557, 0xFB90, 0xFB90, 0x200F,
+ 0xFB91, 0xFB9B, 0x5567, 0xFB9C, 0xFB9C, 0x2071, 0xFB9D, 0xFB9E, 0x5572,
+ 0xFB9F, 0xFB9F, 0x25F7, 0xFBA0, 0xFBA0, 0x5574, 0xFC40, 0xFC43, 0x5575,
+ 0xFC44, 0xFC44, 0x2696, 0xFC45, 0xFC48, 0x5579, 0xFC49, 0xFC49, 0x268F,
+ 0xFC4A, 0xFC59, 0x557D, 0xFC5A, 0xFC5A, 0x22DA, 0xFC5B, 0xFC62, 0x558D,
+ 0xFC63, 0xFC63, 0x1EC1, 0xFC64, 0xFC67, 0x5595, 0xFC68, 0xFC68, 0x1EB3,
+ 0xFC69, 0xFC6E, 0x5599, 0xFC6F, 0xFC6F, 0x266A, 0xFC70, 0xFC70, 0x559F,
+ 0xFC71, 0xFC71, 0x268A, 0xFC72, 0xFC73, 0x55A0, 0xFC74, 0xFC74, 0x2669,
+ 0xFC75, 0xFC76, 0x55A2, 0xFC77, 0xFC78, 0x2618, 0xFC79, 0xFC7E, 0x55A4,
+ 0xFC80, 0xFC82, 0x55AA, 0xFC83, 0xFC83, 0x261A, 0xFC84, 0xFC89, 0x55AD,
+ 0xFC8A, 0xFC8A, 0x2673, 0xFC8B, 0xFCA0, 0x55B3, 0xFD40, 0xFD51, 0x55C9,
+ 0xFD52, 0xFD52, 0x20C6, 0xFD53, 0xFD53, 0x226B, 0xFD54, 0xFD56, 0x55DB,
+ 0xFD57, 0xFD57, 0x24D3, 0xFD58, 0xFD58, 0x1E86, 0xFD59, 0xFD59, 0x55DE,
+ 0xFD5A, 0xFD5A, 0x260F, 0xFD5B, 0xFD5E, 0x55DF, 0xFD5F, 0xFD5F, 0x2611,
+ 0xFD60, 0xFD61, 0x55E3, 0xFD62, 0xFD62, 0x2613, 0xFD63, 0xFD64, 0x55E5,
+ 0xFD65, 0xFD65, 0x2610, 0xFD66, 0xFD66, 0x2612, 0xFD67, 0xFD67, 0x2030,
+ 0xFD68, 0xFD68, 0x55E7, 0xFD69, 0xFD69, 0x2671, 0xFD6A, 0xFD6B, 0x55E8,
+ 0xFD6C, 0xFD6C, 0x2614, 0xFD6D, 0xFD6F, 0x55EA, 0xFD70, 0xFD70, 0x2616,
+ 0xFD71, 0xFD71, 0x55ED, 0xFD72, 0xFD72, 0x2615, 0xFD73, 0xFD77, 0x55EE,
+ 0xFD78, 0xFD78, 0x20F2, 0xFD79, 0xFD7C, 0x55F3, 0xFD7D, 0xFD7D, 0x2617,
+ 0xFD7E, 0xFD7E, 0x55F7, 0xFD80, 0xFD87, 0x55F8, 0xFD88, 0xFD88, 0x2037,
+ 0xFD89, 0xFD8A, 0x5600, 0xFD8B, 0xFD8B, 0x20B3, 0xFD8C, 0xFD8E, 0x5602,
+ 0xFD8F, 0xFD8F, 0x1F22, 0xFD90, 0xFD90, 0x24ED, 0xFD91, 0xFD93, 0x5605,
+ 0xFD94, 0xFD94, 0x1F34, 0xFD95, 0xFD9C, 0x5608, 0xFD9D, 0xFD9D, 0x0A02,
+ 0xFD9E, 0xFD9E, 0x40D3, 0xFD9F, 0xFD9F, 0x200C, 0xFDA0, 0xFDA0, 0x5083,
+ 0xFE40, 0xFE40, 0x1259, 0xFE41, 0xFE7E, 0x5610, 0xFE80, 0xFEA0, 0x564E,
+};
+
+const FX_WORD g_FXCMAP_GBK2K_H_5_DWord[1017 * 4] = {
+ 0x8130, 0x8436, 0x8436, 0x5752, 0x8138, 0xFD38, 0xFD39, 0x579C, 0x8138,
+ 0xFE30, 0xFE39, 0x579E, 0x8139, 0x8130, 0x8137, 0x57A8, 0x8139, 0x8139,
+ 0x8139, 0x57B0, 0x8139, 0x8230, 0x8239, 0x57B1, 0x8139, 0x8330, 0x8339,
+ 0x57BB, 0x8139, 0x8430, 0x8439, 0x57C5, 0x8139, 0x8530, 0x8539, 0x57CF,
+ 0x8139, 0x8630, 0x8639, 0x57D9, 0x8139, 0x8730, 0x8739, 0x57E3, 0x8139,
+ 0x8830, 0x8839, 0x57ED, 0x8139, 0x8930, 0x8939, 0x57F7, 0x8139, 0x8B32,
+ 0x8B32, 0x1042, 0x8139, 0x8B33, 0x8B33, 0x1263, 0x8139, 0x8B34, 0x8B34,
+ 0x1272, 0x8139, 0x8B35, 0x8B35, 0x1265, 0x8139, 0x8B36, 0x8B36, 0x1059,
+ 0x8139, 0x8B37, 0x8B37, 0x2793, 0x8139, 0x8B38, 0x8B38, 0x063D, 0x8139,
+ 0x8B39, 0x8B39, 0x1303, 0x8139, 0x8C30, 0x8C30, 0x0CA6, 0x8139, 0x8C31,
+ 0x8C31, 0x0638, 0x8139, 0x8C32, 0x8C32, 0x0CC6, 0x8139, 0x8C33, 0x8C33,
+ 0x03D6, 0x8139, 0x8C34, 0x8C34, 0x129D, 0x8139, 0x8C35, 0x8C35, 0x1314,
+ 0x8139, 0x8C36, 0x8C36, 0x130F, 0x8139, 0x8C37, 0x8C37, 0x082B, 0x8139,
+ 0x8C38, 0x8C38, 0x1399, 0x8139, 0x8C39, 0x8C39, 0x0597, 0x8139, 0x8D30,
+ 0x8D30, 0x09EF, 0x8139, 0x8D31, 0x8D31, 0x12FC, 0x8139, 0x8D32, 0x8D32,
+ 0x1266, 0x8139, 0x8D33, 0x8D33, 0x1284, 0x8139, 0x8D34, 0x8D34, 0x2A1A,
+ 0x8139, 0x8D35, 0x8D35, 0x0D45, 0x8139, 0x8D36, 0x8D36, 0x047E, 0x8139,
+ 0x8D37, 0x8D37, 0x1352, 0x8139, 0x8D38, 0x8D38, 0x04CC, 0x8139, 0x8D39,
+ 0x8D39, 0x139C, 0x8139, 0x8E30, 0x8E30, 0x10BB, 0x8139, 0x8E31, 0x8E31,
+ 0x0967, 0x8139, 0x8E32, 0x8E32, 0x1593, 0x8139, 0x8E33, 0x8E33, 0x0E72,
+ 0x8139, 0x8E34, 0x8E34, 0x0D56, 0x8139, 0x8E35, 0x8E35, 0x161C, 0x8139,
+ 0x8E36, 0x8E36, 0x2D2D, 0x8139, 0x8E37, 0x8E37, 0x0F13, 0x8139, 0x8E38,
+ 0x8E38, 0x0576, 0x8139, 0x8E39, 0x8E39, 0x0B6F, 0x8139, 0x8F30, 0x8F30,
+ 0x1230, 0x8139, 0x8F31, 0x8F31, 0x172E, 0x8139, 0x8F32, 0x8F32, 0x056A,
+ 0x8139, 0x8F33, 0x8F33, 0x0F6C, 0x8139, 0x8F34, 0x8F34, 0x14B6, 0x8139,
+ 0x8F35, 0x8F35, 0x0D43, 0x8139, 0x8F36, 0x8F36, 0x1774, 0x8139, 0x8F37,
+ 0x8F37, 0x0CF6, 0x8139, 0x8F38, 0x8F38, 0x1815, 0x8139, 0x8F39, 0x8F39,
+ 0x06FD, 0x8139, 0x9030, 0x9030, 0x082D, 0x8139, 0x9031, 0x9031, 0x08BE,
+ 0x8139, 0x9032, 0x9032, 0x06C4, 0x8139, 0x9033, 0x9033, 0x1813, 0x8139,
+ 0x9034, 0x9034, 0x073C, 0x8139, 0x9035, 0x9035, 0x1398, 0x8139, 0x9036,
+ 0x9036, 0x14AD, 0x8139, 0x9037, 0x9037, 0x14F6, 0x8139, 0x9038, 0x9038,
+ 0x0706, 0x8139, 0x9039, 0x9039, 0x1762, 0x8139, 0x9130, 0x9130, 0x15EE,
+ 0x8139, 0x9131, 0x9131, 0x15E0, 0x8139, 0x9132, 0x9132, 0x0F8F, 0x8139,
+ 0x9133, 0x9133, 0x06E5, 0x8139, 0x9134, 0x9134, 0x3292, 0x8139, 0x9135,
+ 0x9135, 0x0D6D, 0x8139, 0x9136, 0x9136, 0x11A6, 0x8139, 0x9137, 0x9137,
+ 0x1909, 0x8139, 0x9138, 0x9138, 0x0ED3, 0x8139, 0x9139, 0x9139, 0x05F6,
+ 0x8139, 0x9230, 0x9230, 0x08C0, 0x8139, 0x9231, 0x9231, 0x065A, 0x8139,
+ 0x9232, 0x9232, 0x0EED, 0x8139, 0x9233, 0x9233, 0x0CB0, 0x8139, 0x9234,
+ 0x9234, 0x10FE, 0x8139, 0x9235, 0x9235, 0x1105, 0x8139, 0x9236, 0x9236,
+ 0x0B21, 0x8139, 0x9237, 0x9237, 0x0C34, 0x8139, 0x9238, 0x9238, 0x11B8,
+ 0x8139, 0x9239, 0x9239, 0x0578, 0x8139, 0x9330, 0x9330, 0x19BD, 0x8139,
+ 0x9331, 0x9331, 0x0EF2, 0x8139, 0x9332, 0x9332, 0x0431, 0x8139, 0x9333,
+ 0x9333, 0x0AB0, 0x8139, 0x9334, 0x9334, 0x0D66, 0x8139, 0x9335, 0x9335,
+ 0x0C17, 0x8139, 0x9336, 0x9336, 0x0DA3, 0x8139, 0x9337, 0x9337, 0x0805,
+ 0x8139, 0x9338, 0x9338, 0x1203, 0x8139, 0x9339, 0x9339, 0x06B3, 0x8139,
+ 0x9430, 0x9430, 0x1269, 0x8139, 0x9431, 0x9431, 0x169D, 0x8139, 0x9432,
+ 0x9432, 0x0BCB, 0x8139, 0x9433, 0x9433, 0x0FE9, 0x8139, 0x9434, 0x9434,
+ 0x0B64, 0x8139, 0x9435, 0x9435, 0x0C89, 0x8139, 0x9436, 0x9436, 0x0FC9,
+ 0x8139, 0x9437, 0x9437, 0x10D6, 0x8139, 0x9438, 0x9438, 0x0728, 0x8139,
+ 0x9439, 0x9439, 0x0E90, 0x8139, 0x9530, 0x9530, 0x06C5, 0x8139, 0x9531,
+ 0x9531, 0x0D33, 0x8139, 0x9532, 0x9532, 0x10A8, 0x8139, 0x9533, 0x9533,
+ 0x0E42, 0x8139, 0x9534, 0x9534, 0x1BC6, 0x8139, 0x9535, 0x9535, 0x1B60,
+ 0x8139, 0x9536, 0x9536, 0x3EBF, 0x8139, 0x9537, 0x9537, 0x03E2, 0x8139,
+ 0x9538, 0x9538, 0x0BC3, 0x8139, 0x9539, 0x9539, 0x0AF8, 0x8139, 0x9630,
+ 0x9630, 0x0B22, 0x8139, 0x9631, 0x9631, 0x0AB1, 0x8139, 0x9632, 0x9632,
+ 0x0D4F, 0x8139, 0x9633, 0x9633, 0x0D46, 0x8139, 0x9634, 0x9634, 0x0D55,
+ 0x8139, 0x9635, 0x9635, 0x40CB, 0x8139, 0x9636, 0x9636, 0x0783, 0x8139,
+ 0x9637, 0x9637, 0x0FD1, 0x8139, 0x9638, 0x9638, 0x09EB, 0x8139, 0x9639,
+ 0x9639, 0x11F0, 0x8139, 0x9730, 0x9730, 0x0ADC, 0x8139, 0x9731, 0x9731,
+ 0x1CE7, 0x8139, 0x9732, 0x9732, 0x1C5E, 0x8139, 0x9733, 0x9733, 0x0EA9,
+ 0x8139, 0x9734, 0x9734, 0x101B, 0x8139, 0x9735, 0x9735, 0x10D5, 0x8139,
+ 0x9736, 0x9736, 0x09BA, 0x8139, 0x9737, 0x9737, 0x0637, 0x8139, 0x9738,
+ 0x9738, 0x1BCB, 0x8139, 0x9739, 0x9739, 0x0639, 0x8139, 0x9830, 0x9830,
+ 0x1A1E, 0x8139, 0x9831, 0x9831, 0x0CBD, 0x8139, 0x9832, 0x9832, 0x04E1,
+ 0x8139, 0x9833, 0x9833, 0x1231, 0x8139, 0x9834, 0x9834, 0x11C0, 0x8139,
+ 0x9835, 0x9835, 0x08F9, 0x8139, 0x9836, 0x9836, 0x0D19, 0x8139, 0x9837,
+ 0x9837, 0x1618, 0x8139, 0x9838, 0x9838, 0x11DA, 0x8139, 0x9839, 0x9839,
+ 0x1CDC, 0x8139, 0x9930, 0x9930, 0x0CE4, 0x8139, 0x9931, 0x9931, 0x45A2,
+ 0x8139, 0x9932, 0x9932, 0x1BF0, 0x8139, 0x9933, 0x9933, 0x050B, 0x8139,
+ 0x9934, 0x9934, 0x0FD3, 0x8139, 0x9935, 0x9935, 0x0F9B, 0x8139, 0x9936,
+ 0x9936, 0x1049, 0x8139, 0x9937, 0x9937, 0x49DC, 0x8139, 0x9938, 0x9938,
+ 0x1F96, 0x8139, 0x9939, 0x9939, 0x0898, 0x8139, 0x9A30, 0x9A30, 0x0FFD,
+ 0x8139, 0x9A31, 0x9A31, 0x0721, 0x8139, 0x9A32, 0x9A32, 0x05F8, 0x8139,
+ 0x9A33, 0x9A33, 0x1D15, 0x8139, 0x9A34, 0x9A34, 0x1D50, 0x8139, 0x9A35,
+ 0x9A35, 0x1E3B, 0x8139, 0x9A36, 0x9A36, 0x0505, 0x8139, 0x9A37, 0x9A37,
+ 0x123C, 0x8139, 0x9A38, 0x9A38, 0x1240, 0x8139, 0x9A39, 0x9A39, 0x0D26,
+ 0x8139, 0x9B30, 0x9B30, 0x1E7B, 0x8139, 0x9B31, 0x9B31, 0x0F8C, 0x8139,
+ 0x9B32, 0x9B32, 0x04E2, 0x8139, 0x9B33, 0x9B33, 0x4D13, 0x8139, 0x9B34,
+ 0x9B34, 0x105F, 0x8139, 0x9B35, 0x9B35, 0x10B4, 0x8139, 0x9B36, 0x9B36,
+ 0x4E18, 0x8139, 0x9B37, 0x9B37, 0x09DA, 0x8139, 0x9B38, 0x9B38, 0x08C1,
+ 0x8139, 0x9B39, 0x9B39, 0x1E75, 0x8139, 0x9C30, 0x9C30, 0x207D, 0x8139,
+ 0x9C31, 0x9C31, 0x06B2, 0x8139, 0x9C32, 0x9C32, 0x09EE, 0x8139, 0x9C33,
+ 0x9C33, 0x1D79, 0x8139, 0x9C34, 0x9C34, 0x10CF, 0x8139, 0x9C35, 0x9C35,
+ 0x50EA, 0x8139, 0x9C36, 0x9C36, 0x0664, 0x8139, 0x9C37, 0x9C37, 0x0AEB,
+ 0x8139, 0x9C38, 0x9C38, 0x06EA, 0x8139, 0x9C39, 0x9C39, 0x218D, 0x8139,
+ 0x9D30, 0x9D30, 0x08F1, 0x8139, 0x9D31, 0x9D31, 0x107B, 0x8139, 0x9D32,
+ 0x9D32, 0x2209, 0x8139, 0x9D33, 0x9D33, 0x1F00, 0x8139, 0x9D34, 0x9D34,
+ 0x1EF4, 0x8139, 0x9D35, 0x9D35, 0x0D4A, 0x8139, 0x9D36, 0x9D36, 0x0D6E,
+ 0x8139, 0x9D37, 0x9D37, 0x0F50, 0x8139, 0x9D38, 0x9D38, 0x206D, 0x8139,
+ 0x9D39, 0x9D39, 0x0720, 0x8139, 0x9E30, 0x9E30, 0x06DA, 0x8139, 0x9E31,
+ 0x9E31, 0x1DEC, 0x8139, 0x9E32, 0x9E32, 0x1ED0, 0x8139, 0x9E33, 0x9E33,
+ 0x139B, 0x8139, 0x9E34, 0x9E34, 0x1260, 0x8139, 0x9E35, 0x9E35, 0x0746,
+ 0x8139, 0x9E36, 0x9E36, 0x2239, 0x8139, 0x9E37, 0x9E37, 0x209C, 0x8139,
+ 0x9E38, 0x9E38, 0x2688, 0x8139, 0x9E39, 0x9E39, 0x0A60, 0x8139, 0x9F30,
+ 0x9F30, 0x2071, 0x8139, 0x9F31, 0x9F31, 0x0A90, 0x8139, 0x9F32, 0x9F32,
+ 0x5586, 0x8139, 0x9F33, 0x9F33, 0x0D89, 0x8139, 0x9F34, 0x9F34, 0x0791,
+ 0x8139, 0x9F35, 0x9F35, 0x1A55, 0x8139, 0x9F36, 0x9F36, 0x2618, 0x8139,
+ 0x9F37, 0x9F37, 0x05E5, 0x8139, 0x9F38, 0x9F38, 0x071D, 0x8139, 0x9F39,
+ 0x9F39, 0x0D8A, 0x8139, 0xA030, 0xA030, 0x0430, 0x8139, 0xA031, 0xA031,
+ 0x20C6, 0x8139, 0xA032, 0xA032, 0x1E86, 0x8139, 0xA033, 0xA033, 0x2037,
+ 0x8139, 0xA034, 0xA034, 0x1F34, 0x8139, 0xA035, 0xA035, 0x12F3, 0x8139,
+ 0xA533, 0xA535, 0x577B, 0x8139, 0xA538, 0xA539, 0x577E, 0x8139, 0xA630,
+ 0xA630, 0x5780, 0x8139, 0xA634, 0xA634, 0x5755, 0x8139, 0xA636, 0xA636,
+ 0x5767, 0x8139, 0xA735, 0xA735, 0x5776, 0x8139, 0xA736, 0xA736, 0x5778,
+ 0x8139, 0xA737, 0xA737, 0x5777, 0x8139, 0xA738, 0xA738, 0x5779, 0x8139,
+ 0xA836, 0xA838, 0x5781, 0x8139, 0xB434, 0xB439, 0x5784, 0x8139, 0xB530,
+ 0xB539, 0x578A, 0x8139, 0xB630, 0xB637, 0x5794, 0x8139, 0xEE39, 0xEE39,
+ 0x5801, 0x8139, 0xEF30, 0xEF39, 0x5802, 0x8139, 0xF030, 0xF039, 0x580C,
+ 0x8139, 0xF130, 0xF139, 0x5816, 0x8139, 0xF230, 0xF239, 0x5820, 0x8139,
+ 0xF330, 0xF339, 0x582A, 0x8139, 0xF430, 0xF439, 0x5834, 0x8139, 0xF530,
+ 0xF539, 0x583E, 0x8139, 0xF630, 0xF639, 0x5848, 0x8139, 0xF730, 0xF739,
+ 0x5852, 0x8139, 0xF830, 0xF839, 0x585C, 0x8139, 0xF930, 0xF939, 0x5866,
+ 0x8139, 0xFA30, 0xFA39, 0x5870, 0x8139, 0xFB30, 0xFB39, 0x587A, 0x8139,
+ 0xFC30, 0xFC39, 0x5884, 0x8139, 0xFD30, 0xFD39, 0x588E, 0x8139, 0xFE30,
+ 0xFE39, 0x5898, 0x8230, 0x8130, 0x8139, 0x58A2, 0x8230, 0x8230, 0x8239,
+ 0x58AC, 0x8230, 0x8330, 0x8339, 0x58B6, 0x8230, 0x8430, 0x8439, 0x58C0,
+ 0x8230, 0x8530, 0x8539, 0x58CA, 0x8230, 0x8630, 0x8639, 0x58D4, 0x8230,
+ 0x8730, 0x8739, 0x58DE, 0x8230, 0x8830, 0x8839, 0x58E8, 0x8230, 0x8930,
+ 0x8939, 0x58F2, 0x8230, 0x8A30, 0x8A39, 0x58FC, 0x8230, 0x8B30, 0x8B39,
+ 0x5906, 0x8230, 0x8C30, 0x8C39, 0x5910, 0x8230, 0x8D30, 0x8D39, 0x591A,
+ 0x8230, 0x8E30, 0x8E39, 0x5924, 0x8230, 0x8F30, 0x8F39, 0x592E, 0x8230,
+ 0x9030, 0x9039, 0x5938, 0x8230, 0x9130, 0x9139, 0x5942, 0x8230, 0x9230,
+ 0x9239, 0x594C, 0x8230, 0x9330, 0x9339, 0x5956, 0x8230, 0x9430, 0x9439,
+ 0x5960, 0x8230, 0x9530, 0x9539, 0x596A, 0x8230, 0x9630, 0x9639, 0x5974,
+ 0x8230, 0x9730, 0x9739, 0x597E, 0x8230, 0x9830, 0x9839, 0x5988, 0x8230,
+ 0x9930, 0x9939, 0x5992, 0x8230, 0x9A30, 0x9A39, 0x599C, 0x8230, 0x9B30,
+ 0x9B39, 0x59A6, 0x8230, 0x9C30, 0x9C39, 0x59B0, 0x8230, 0x9D30, 0x9D39,
+ 0x59BA, 0x8230, 0x9E30, 0x9E39, 0x59C4, 0x8230, 0x9F30, 0x9F39, 0x59CE,
+ 0x8230, 0xA030, 0xA039, 0x59D8, 0x8230, 0xA130, 0xA139, 0x59E2, 0x8230,
+ 0xA230, 0xA239, 0x59EC, 0x8230, 0xA330, 0xA339, 0x59F6, 0x8230, 0xA430,
+ 0xA439, 0x5A00, 0x8230, 0xA530, 0xA539, 0x5A0A, 0x8230, 0xA630, 0xA639,
+ 0x5A14, 0x8230, 0xA730, 0xA739, 0x5A1E, 0x8230, 0xA830, 0xA839, 0x5A28,
+ 0x8230, 0xA930, 0xA939, 0x5A32, 0x8230, 0xAA30, 0xAA39, 0x5A3C, 0x8230,
+ 0xAB30, 0xAB39, 0x5A46, 0x8230, 0xAC30, 0xAC39, 0x5A50, 0x8230, 0xAD30,
+ 0xAD39, 0x5A5A, 0x8230, 0xAE30, 0xAE39, 0x5A64, 0x8230, 0xAF30, 0xAF39,
+ 0x5A6E, 0x8230, 0xB030, 0xB039, 0x5A78, 0x8230, 0xB130, 0xB139, 0x5A82,
+ 0x8230, 0xB230, 0xB239, 0x5A8C, 0x8230, 0xB330, 0xB339, 0x5A96, 0x8230,
+ 0xB430, 0xB439, 0x5AA0, 0x8230, 0xB530, 0xB539, 0x5AAA, 0x8230, 0xB630,
+ 0xB639, 0x5AB4, 0x8230, 0xB730, 0xB739, 0x5ABE, 0x8230, 0xB830, 0xB839,
+ 0x5AC8, 0x8230, 0xB930, 0xB939, 0x5AD2, 0x8230, 0xBA30, 0xBA39, 0x5ADC,
+ 0x8230, 0xBB30, 0xBB39, 0x5AE6, 0x8230, 0xBC30, 0xBC39, 0x5AF0, 0x8230,
+ 0xBD30, 0xBD39, 0x5AFA, 0x8230, 0xBE30, 0xBE39, 0x5B04, 0x8230, 0xBF30,
+ 0xBF39, 0x5B0E, 0x8230, 0xC030, 0xC039, 0x5B18, 0x8230, 0xC130, 0xC139,
+ 0x5B22, 0x8230, 0xC230, 0xC239, 0x5B2C, 0x8230, 0xC330, 0xC339, 0x5B36,
+ 0x8230, 0xC430, 0xC439, 0x5B40, 0x8230, 0xC530, 0xC539, 0x5B4A, 0x8230,
+ 0xC630, 0xC639, 0x5B54, 0x8230, 0xC730, 0xC739, 0x5B5E, 0x8230, 0xC830,
+ 0xC839, 0x5B68, 0x8230, 0xC930, 0xC939, 0x5B72, 0x8230, 0xCA30, 0xCA39,
+ 0x5B7C, 0x8230, 0xCB30, 0xCB39, 0x5B86, 0x8230, 0xCC30, 0xCC39, 0x5B90,
+ 0x8230, 0xCD30, 0xCD39, 0x5B9A, 0x8230, 0xCE30, 0xCE39, 0x5BA4, 0x8230,
+ 0xCF30, 0xCF39, 0x5BAE, 0x8230, 0xD030, 0xD039, 0x5BB8, 0x8230, 0xD130,
+ 0xD139, 0x5BC2, 0x8230, 0xD230, 0xD239, 0x5BCC, 0x8230, 0xD330, 0xD339,
+ 0x5BD6, 0x8230, 0xD430, 0xD439, 0x5BE0, 0x8230, 0xD530, 0xD539, 0x5BEA,
+ 0x8230, 0xD630, 0xD639, 0x5BF4, 0x8230, 0xD730, 0xD739, 0x5BFE, 0x8230,
+ 0xD830, 0xD839, 0x5C08, 0x8230, 0xD930, 0xD939, 0x5C12, 0x8230, 0xDA30,
+ 0xDA39, 0x5C1C, 0x8230, 0xDB30, 0xDB39, 0x5C26, 0x8230, 0xDC30, 0xDC39,
+ 0x5C30, 0x8230, 0xDD30, 0xDD39, 0x5C3A, 0x8230, 0xDE30, 0xDE39, 0x5C44,
+ 0x8230, 0xDF30, 0xDF39, 0x5C4E, 0x8230, 0xE030, 0xE039, 0x5C58, 0x8230,
+ 0xE130, 0xE139, 0x5C62, 0x8230, 0xE230, 0xE239, 0x5C6C, 0x8230, 0xE330,
+ 0xE339, 0x5C76, 0x8230, 0xE430, 0xE439, 0x5C80, 0x8230, 0xE530, 0xE539,
+ 0x5C8A, 0x8230, 0xE630, 0xE639, 0x5C94, 0x8230, 0xE730, 0xE739, 0x5C9E,
+ 0x8230, 0xE830, 0xE839, 0x5CA8, 0x8230, 0xE930, 0xE939, 0x5CB2, 0x8230,
+ 0xEA30, 0xEA39, 0x5CBC, 0x8230, 0xEB30, 0xEB39, 0x5CC6, 0x8230, 0xEC30,
+ 0xEC39, 0x5CD0, 0x8230, 0xED30, 0xED39, 0x5CDA, 0x8230, 0xEE30, 0xEE39,
+ 0x5CE4, 0x8230, 0xEF30, 0xEF39, 0x5CEE, 0x8230, 0xF030, 0xF039, 0x5CF8,
+ 0x8230, 0xF130, 0xF139, 0x5D02, 0x8230, 0xF230, 0xF239, 0x5D0C, 0x8230,
+ 0xF330, 0xF339, 0x5D16, 0x8230, 0xF430, 0xF439, 0x5D20, 0x8230, 0xF530,
+ 0xF539, 0x5D2A, 0x8230, 0xF630, 0xF639, 0x5D34, 0x8230, 0xF730, 0xF739,
+ 0x5D3E, 0x8230, 0xF830, 0xF839, 0x5D48, 0x8230, 0xF930, 0xF939, 0x5D52,
+ 0x8230, 0xFA30, 0xFA39, 0x5D5C, 0x8230, 0xFB30, 0xFB39, 0x5D66, 0x8230,
+ 0xFC30, 0xFC39, 0x5D70, 0x8230, 0xFD30, 0xFD39, 0x5D7A, 0x8230, 0xFE30,
+ 0xFE39, 0x5D84, 0x8231, 0x8130, 0x8139, 0x5D8E, 0x8231, 0x8230, 0x8239,
+ 0x5D98, 0x8231, 0x8330, 0x8339, 0x5DA2, 0x8231, 0x8430, 0x8439, 0x5DAC,
+ 0x8231, 0x8530, 0x8539, 0x5DB6, 0x8231, 0x8630, 0x8639, 0x5DC0, 0x8231,
+ 0x8730, 0x8739, 0x5DCA, 0x8231, 0x8830, 0x8839, 0x5DD4, 0x8231, 0x8930,
+ 0x8939, 0x5DDE, 0x8231, 0x8A30, 0x8A39, 0x5DE8, 0x8231, 0x8B30, 0x8B39,
+ 0x5DF2, 0x8231, 0x8C30, 0x8C39, 0x5DFC, 0x8231, 0x8D30, 0x8D39, 0x5E06,
+ 0x8231, 0x8E30, 0x8E39, 0x5E10, 0x8231, 0x8F30, 0x8F39, 0x5E1A, 0x8231,
+ 0x9030, 0x9039, 0x5E24, 0x8231, 0x9130, 0x9139, 0x5E2E, 0x8231, 0x9230,
+ 0x9239, 0x5E38, 0x8231, 0x9330, 0x9339, 0x5E42, 0x8231, 0x9430, 0x9439,
+ 0x5E4C, 0x8231, 0x9530, 0x9539, 0x5E56, 0x8231, 0x9630, 0x9639, 0x5E60,
+ 0x8231, 0x9730, 0x9739, 0x5E6A, 0x8231, 0x9830, 0x9839, 0x5E74, 0x8231,
+ 0x9930, 0x9939, 0x5E7E, 0x8231, 0x9A30, 0x9A39, 0x5E88, 0x8231, 0x9B30,
+ 0x9B39, 0x5E92, 0x8231, 0x9C30, 0x9C39, 0x5E9C, 0x8231, 0x9D30, 0x9D39,
+ 0x5EA6, 0x8231, 0x9E30, 0x9E39, 0x5EB0, 0x8231, 0x9F30, 0x9F39, 0x5EBA,
+ 0x8231, 0xA030, 0xA039, 0x5EC4, 0x8231, 0xA130, 0xA139, 0x5ECE, 0x8231,
+ 0xA230, 0xA239, 0x5ED8, 0x8231, 0xA330, 0xA339, 0x5EE2, 0x8231, 0xA430,
+ 0xA439, 0x5EEC, 0x8231, 0xA530, 0xA539, 0x5EF6, 0x8231, 0xA630, 0xA639,
+ 0x5F00, 0x8231, 0xA730, 0xA739, 0x5F0A, 0x8231, 0xA830, 0xA839, 0x5F14,
+ 0x8231, 0xA930, 0xA939, 0x5F1E, 0x8231, 0xAA30, 0xAA39, 0x5F28, 0x8231,
+ 0xAB30, 0xAB39, 0x5F32, 0x8231, 0xAC30, 0xAC39, 0x5F3C, 0x8231, 0xAD30,
+ 0xAD39, 0x5F46, 0x8231, 0xAE30, 0xAE39, 0x5F50, 0x8231, 0xAF30, 0xAF39,
+ 0x5F5A, 0x8231, 0xB030, 0xB039, 0x5F64, 0x8231, 0xB130, 0xB139, 0x5F6E,
+ 0x8231, 0xB230, 0xB239, 0x5F78, 0x8231, 0xB330, 0xB339, 0x5F82, 0x8231,
+ 0xB430, 0xB439, 0x5F8C, 0x8231, 0xB530, 0xB539, 0x5F96, 0x8231, 0xB630,
+ 0xB639, 0x5FA0, 0x8231, 0xB730, 0xB739, 0x5FAA, 0x8231, 0xB830, 0xB839,
+ 0x5FB4, 0x8231, 0xB930, 0xB939, 0x5FBE, 0x8231, 0xBA30, 0xBA39, 0x5FC8,
+ 0x8231, 0xBB30, 0xBB39, 0x5FD2, 0x8231, 0xBC30, 0xBC39, 0x5FDC, 0x8231,
+ 0xBD30, 0xBD39, 0x5FE6, 0x8231, 0xBE30, 0xBE39, 0x5FF0, 0x8231, 0xBF30,
+ 0xBF39, 0x5FFA, 0x8231, 0xC030, 0xC039, 0x6004, 0x8231, 0xC130, 0xC139,
+ 0x600E, 0x8231, 0xC230, 0xC239, 0x6018, 0x8231, 0xC330, 0xC339, 0x6022,
+ 0x8231, 0xC430, 0xC439, 0x602C, 0x8231, 0xC530, 0xC539, 0x6036, 0x8231,
+ 0xC630, 0xC639, 0x6040, 0x8231, 0xC730, 0xC739, 0x604A, 0x8231, 0xC830,
+ 0xC839, 0x6054, 0x8231, 0xC930, 0xC939, 0x605E, 0x8231, 0xCA30, 0xCA39,
+ 0x6068, 0x8231, 0xCB30, 0xCB39, 0x6072, 0x8231, 0xCC30, 0xCC39, 0x607C,
+ 0x8231, 0xCD30, 0xCD39, 0x6086, 0x8231, 0xCE30, 0xCE39, 0x6090, 0x8231,
+ 0xCF30, 0xCF39, 0x609A, 0x8231, 0xD030, 0xD039, 0x60A4, 0x8231, 0xD130,
+ 0xD139, 0x60AE, 0x8231, 0xD230, 0xD239, 0x60B8, 0x8231, 0xD330, 0xD339,
+ 0x60C2, 0x8231, 0xD430, 0xD439, 0x60CC, 0x8231, 0xD530, 0xD539, 0x60D6,
+ 0x8231, 0xD630, 0xD639, 0x60E0, 0x8231, 0xD730, 0xD739, 0x60EA, 0x8231,
+ 0xD830, 0xD839, 0x60F4, 0x8231, 0xD930, 0xD939, 0x60FE, 0x8231, 0xDA30,
+ 0xDA39, 0x6108, 0x8231, 0xDB30, 0xDB39, 0x6112, 0x8231, 0xDC30, 0xDC39,
+ 0x611C, 0x8231, 0xDD30, 0xDD39, 0x6126, 0x8231, 0xDE30, 0xDE39, 0x6130,
+ 0x8231, 0xDF30, 0xDF39, 0x613A, 0x8231, 0xE030, 0xE039, 0x6144, 0x8231,
+ 0xE130, 0xE139, 0x614E, 0x8231, 0xE230, 0xE239, 0x6158, 0x8231, 0xE330,
+ 0xE339, 0x6162, 0x8231, 0xE430, 0xE439, 0x616C, 0x8231, 0xE530, 0xE539,
+ 0x6176, 0x8231, 0xE630, 0xE639, 0x6180, 0x8231, 0xE730, 0xE739, 0x618A,
+ 0x8231, 0xE830, 0xE839, 0x6194, 0x8231, 0xE930, 0xE939, 0x619E, 0x8231,
+ 0xEA30, 0xEA39, 0x61A8, 0x8231, 0xEB30, 0xEB39, 0x61B2, 0x8231, 0xEC30,
+ 0xEC39, 0x61BC, 0x8231, 0xED30, 0xED39, 0x61C6, 0x8231, 0xEE30, 0xEE39,
+ 0x61D0, 0x8231, 0xEF30, 0xEF39, 0x61DA, 0x8231, 0xF030, 0xF039, 0x61E4,
+ 0x8231, 0xF130, 0xF139, 0x61EE, 0x8231, 0xF230, 0xF239, 0x61F8, 0x8231,
+ 0xF330, 0xF339, 0x6202, 0x8231, 0xF430, 0xF439, 0x620C, 0x8231, 0xF530,
+ 0xF539, 0x6216, 0x8231, 0xF630, 0xF639, 0x6220, 0x8231, 0xF730, 0xF739,
+ 0x622A, 0x8231, 0xF830, 0xF839, 0x6234, 0x8231, 0xF930, 0xF939, 0x623E,
+ 0x8231, 0xFA30, 0xFA39, 0x6248, 0x8231, 0xFB30, 0xFB39, 0x6252, 0x8231,
+ 0xFC30, 0xFC39, 0x625C, 0x8231, 0xFD30, 0xFD39, 0x6266, 0x8231, 0xFE30,
+ 0xFE39, 0x6270, 0x8232, 0x8130, 0x8139, 0x627A, 0x8232, 0x8230, 0x8239,
+ 0x6284, 0x8232, 0x8330, 0x8339, 0x628E, 0x8232, 0x8430, 0x8439, 0x6298,
+ 0x8232, 0x8530, 0x8539, 0x62A2, 0x8232, 0x8630, 0x8639, 0x62AC, 0x8232,
+ 0x8730, 0x8739, 0x62B6, 0x8232, 0x8830, 0x8839, 0x62C0, 0x8232, 0x8930,
+ 0x8939, 0x62CA, 0x8232, 0x8A30, 0x8A39, 0x62D4, 0x8232, 0x8B30, 0x8B39,
+ 0x62DE, 0x8232, 0x8C30, 0x8C39, 0x62E8, 0x8232, 0x8D30, 0x8D39, 0x62F2,
+ 0x8232, 0x8E30, 0x8E39, 0x62FC, 0x8232, 0x8F30, 0x8F39, 0x6306, 0x8232,
+ 0x9030, 0x9039, 0x6310, 0x8232, 0x9130, 0x9139, 0x631A, 0x8232, 0x9230,
+ 0x9239, 0x6324, 0x8232, 0x9330, 0x9339, 0x632E, 0x8232, 0x9430, 0x9439,
+ 0x6338, 0x8232, 0x9530, 0x9539, 0x6342, 0x8232, 0x9630, 0x9639, 0x634C,
+ 0x8232, 0x9730, 0x9739, 0x6356, 0x8232, 0x9830, 0x9839, 0x6360, 0x8232,
+ 0x9930, 0x9939, 0x636A, 0x8232, 0x9A30, 0x9A39, 0x6374, 0x8232, 0x9B30,
+ 0x9B39, 0x637E, 0x8232, 0x9C30, 0x9C39, 0x6388, 0x8232, 0x9D30, 0x9D39,
+ 0x6392, 0x8232, 0x9E30, 0x9E39, 0x639C, 0x8232, 0x9F30, 0x9F39, 0x63A6,
+ 0x8232, 0xA030, 0xA039, 0x63B0, 0x8232, 0xA130, 0xA139, 0x63BA, 0x8232,
+ 0xA230, 0xA239, 0x63C4, 0x8232, 0xA330, 0xA339, 0x63CE, 0x8232, 0xA430,
+ 0xA439, 0x63D8, 0x8232, 0xA530, 0xA539, 0x63E2, 0x8232, 0xA630, 0xA639,
+ 0x63EC, 0x8232, 0xA730, 0xA739, 0x63F6, 0x8232, 0xA830, 0xA839, 0x6400,
+ 0x8232, 0xA930, 0xA939, 0x640A, 0x8232, 0xAA30, 0xAA39, 0x6414, 0x8232,
+ 0xAB30, 0xAB39, 0x641E, 0x8232, 0xAC30, 0xAC39, 0x6428, 0x8232, 0xAD30,
+ 0xAD39, 0x6432, 0x8232, 0xAE30, 0xAE39, 0x643C, 0x8232, 0xAF30, 0xAF39,
+ 0x6446, 0x8232, 0xB030, 0xB039, 0x6450, 0x8232, 0xB130, 0xB139, 0x645A,
+ 0x8232, 0xB230, 0xB239, 0x6464, 0x8232, 0xB330, 0xB339, 0x646E, 0x8232,
+ 0xB430, 0xB439, 0x6478, 0x8232, 0xB530, 0xB539, 0x6482, 0x8232, 0xB630,
+ 0xB639, 0x648C, 0x8232, 0xB730, 0xB739, 0x6496, 0x8232, 0xB830, 0xB839,
+ 0x64A0, 0x8232, 0xB930, 0xB939, 0x64AA, 0x8232, 0xBA30, 0xBA39, 0x64B4,
+ 0x8232, 0xBB30, 0xBB39, 0x64BE, 0x8232, 0xBC30, 0xBC39, 0x64C8, 0x8232,
+ 0xBD30, 0xBD39, 0x64D2, 0x8232, 0xBE30, 0xBE39, 0x64DC, 0x8232, 0xBF30,
+ 0xBF39, 0x64E6, 0x8232, 0xC030, 0xC039, 0x64F0, 0x8232, 0xC130, 0xC139,
+ 0x64FA, 0x8232, 0xC230, 0xC239, 0x6504, 0x8232, 0xC330, 0xC339, 0x650E,
+ 0x8232, 0xC430, 0xC439, 0x6518, 0x8232, 0xC530, 0xC539, 0x6522, 0x8232,
+ 0xC630, 0xC639, 0x652C, 0x8232, 0xC730, 0xC739, 0x6536, 0x8232, 0xC830,
+ 0xC839, 0x6540, 0x8232, 0xC930, 0xC939, 0x654A, 0x8232, 0xCA30, 0xCA39,
+ 0x6554, 0x8232, 0xCB30, 0xCB39, 0x655E, 0x8232, 0xCC30, 0xCC39, 0x6568,
+ 0x8232, 0xCD30, 0xCD39, 0x6572, 0x8232, 0xCE30, 0xCE39, 0x657C, 0x8232,
+ 0xCF30, 0xCF39, 0x6586, 0x8232, 0xD030, 0xD039, 0x6590, 0x8232, 0xD130,
+ 0xD139, 0x659A, 0x8232, 0xD230, 0xD239, 0x65A4, 0x8232, 0xD330, 0xD339,
+ 0x65AE, 0x8232, 0xD430, 0xD439, 0x65B8, 0x8232, 0xD530, 0xD539, 0x65C2,
+ 0x8232, 0xD630, 0xD639, 0x65CC, 0x8232, 0xD730, 0xD739, 0x65D6, 0x8232,
+ 0xD830, 0xD839, 0x65E0, 0x8232, 0xD930, 0xD939, 0x65EA, 0x8232, 0xDA30,
+ 0xDA39, 0x65F4, 0x8232, 0xDB30, 0xDB39, 0x65FE, 0x8232, 0xDC30, 0xDC39,
+ 0x6608, 0x8232, 0xDD30, 0xDD39, 0x6612, 0x8232, 0xDE30, 0xDE39, 0x661C,
+ 0x8232, 0xDF30, 0xDF39, 0x6626, 0x8232, 0xE030, 0xE039, 0x6630, 0x8232,
+ 0xE130, 0xE139, 0x663A, 0x8232, 0xE230, 0xE239, 0x6644, 0x8232, 0xE330,
+ 0xE339, 0x664E, 0x8232, 0xE430, 0xE439, 0x6658, 0x8232, 0xE530, 0xE539,
+ 0x6662, 0x8232, 0xE630, 0xE639, 0x666C, 0x8232, 0xE730, 0xE739, 0x6676,
+ 0x8232, 0xE830, 0xE839, 0x6680, 0x8232, 0xE930, 0xE939, 0x668A, 0x8232,
+ 0xEA30, 0xEA39, 0x6694, 0x8232, 0xEB30, 0xEB39, 0x669E, 0x8232, 0xEC30,
+ 0xEC39, 0x66A8, 0x8232, 0xED30, 0xED39, 0x66B2, 0x8232, 0xEE30, 0xEE39,
+ 0x66BC, 0x8232, 0xEF30, 0xEF39, 0x66C6, 0x8232, 0xF030, 0xF039, 0x66D0,
+ 0x8232, 0xF130, 0xF139, 0x66DA, 0x8232, 0xF230, 0xF239, 0x66E4, 0x8232,
+ 0xF330, 0xF339, 0x66EE, 0x8232, 0xF430, 0xF439, 0x66F8, 0x8232, 0xF530,
+ 0xF539, 0x6702, 0x8232, 0xF630, 0xF639, 0x670C, 0x8232, 0xF730, 0xF739,
+ 0x6716, 0x8232, 0xF830, 0xF839, 0x6720, 0x8232, 0xF930, 0xF939, 0x672A,
+ 0x8232, 0xFA30, 0xFA39, 0x6734, 0x8232, 0xFB30, 0xFB39, 0x673E, 0x8232,
+ 0xFC30, 0xFC39, 0x6748, 0x8232, 0xFD30, 0xFD39, 0x6752, 0x8232, 0xFE30,
+ 0xFE39, 0x675C, 0x8233, 0x8130, 0x8139, 0x6766, 0x8233, 0x8230, 0x8239,
+ 0x6770, 0x8233, 0x8330, 0x8339, 0x677A, 0x8233, 0x8430, 0x8439, 0x6784,
+ 0x8233, 0x8530, 0x8539, 0x678E, 0x8233, 0x8630, 0x8639, 0x6798, 0x8233,
+ 0x8730, 0x8739, 0x67A2, 0x8233, 0x8830, 0x8839, 0x67AC, 0x8233, 0x8930,
+ 0x8939, 0x67B6, 0x8233, 0x8A30, 0x8A39, 0x67C0, 0x8233, 0x8B30, 0x8B39,
+ 0x67CA, 0x8233, 0x8C30, 0x8C39, 0x67D4, 0x8233, 0x8D30, 0x8D39, 0x67DE,
+ 0x8233, 0x8E30, 0x8E39, 0x67E8, 0x8233, 0x8F30, 0x8F39, 0x67F2, 0x8233,
+ 0x9030, 0x9039, 0x67FC, 0x8233, 0x9130, 0x9139, 0x6806, 0x8233, 0x9230,
+ 0x9239, 0x6810, 0x8233, 0x9330, 0x9339, 0x681A, 0x8233, 0x9430, 0x9439,
+ 0x6824, 0x8233, 0x9530, 0x9539, 0x682E, 0x8233, 0x9630, 0x9639, 0x6838,
+ 0x8233, 0x9730, 0x9739, 0x6842, 0x8233, 0x9830, 0x9839, 0x684C, 0x8233,
+ 0x9930, 0x9939, 0x6856, 0x8233, 0x9A30, 0x9A39, 0x6860, 0x8233, 0x9B30,
+ 0x9B39, 0x686A, 0x8233, 0x9C30, 0x9C39, 0x6874, 0x8233, 0x9D30, 0x9D39,
+ 0x687E, 0x8233, 0x9E30, 0x9E39, 0x6888, 0x8233, 0x9F30, 0x9F39, 0x6892,
+ 0x8233, 0xA030, 0xA039, 0x689C, 0x8233, 0xA130, 0xA139, 0x68A6, 0x8233,
+ 0xA230, 0xA239, 0x68B0, 0x8233, 0xA330, 0xA339, 0x68BA, 0x8233, 0xA430,
+ 0xA439, 0x68C4, 0x8233, 0xA530, 0xA539, 0x68CE, 0x8233, 0xA630, 0xA639,
+ 0x68D8, 0x8233, 0xA730, 0xA739, 0x68E2, 0x8233, 0xA830, 0xA839, 0x68EC,
+ 0x8233, 0xA930, 0xA939, 0x68F6, 0x8233, 0xAA30, 0xAA39, 0x6900, 0x8233,
+ 0xAB30, 0xAB39, 0x690A, 0x8233, 0xAC30, 0xAC39, 0x6914, 0x8233, 0xAD30,
+ 0xAD39, 0x691E, 0x8233, 0xAE30, 0xAE39, 0x6928, 0x8233, 0xAF30, 0xAF39,
+ 0x6932, 0x8233, 0xB030, 0xB039, 0x693C, 0x8233, 0xB130, 0xB139, 0x6946,
+ 0x8233, 0xB230, 0xB239, 0x6950, 0x8233, 0xB330, 0xB339, 0x695A, 0x8233,
+ 0xB430, 0xB439, 0x6964, 0x8233, 0xB530, 0xB539, 0x696E, 0x8233, 0xB630,
+ 0xB639, 0x6978, 0x8233, 0xB730, 0xB739, 0x6982, 0x8233, 0xB830, 0xB839,
+ 0x698C, 0x8233, 0xB930, 0xB939, 0x6996, 0x8233, 0xBA30, 0xBA39, 0x69A0,
+ 0x8233, 0xBB30, 0xBB39, 0x69AA, 0x8233, 0xBC30, 0xBC39, 0x69B4, 0x8233,
+ 0xBD30, 0xBD39, 0x69BE, 0x8233, 0xBE30, 0xBE39, 0x69C8, 0x8233, 0xBF30,
+ 0xBF39, 0x69D2, 0x8233, 0xC030, 0xC039, 0x69DC, 0x8233, 0xC130, 0xC139,
+ 0x69E6, 0x8233, 0xC230, 0xC239, 0x69F0, 0x8233, 0xC330, 0xC339, 0x69FA,
+ 0x8233, 0xC430, 0xC439, 0x6A04, 0x8233, 0xC530, 0xC539, 0x6A0E, 0x8233,
+ 0xC630, 0xC639, 0x6A18, 0x8233, 0xC730, 0xC739, 0x6A22, 0x8233, 0xC830,
+ 0xC839, 0x6A2C, 0x8233, 0xC930, 0xC939, 0x6A36, 0x8233, 0xCA30, 0xCA39,
+ 0x6A40, 0x8233, 0xCB30, 0xCB39, 0x6A4A, 0x8233, 0xCC30, 0xCC39, 0x6A54,
+ 0x8233, 0xCD30, 0xCD39, 0x6A5E, 0x8233, 0xCE30, 0xCE39, 0x6A68, 0x8233,
+ 0xCF30, 0xCF39, 0x6A72, 0x8233, 0xD030, 0xD039, 0x6A7C, 0x8233, 0xD130,
+ 0xD139, 0x6A86, 0x8233, 0xD230, 0xD239, 0x6A90, 0x8233, 0xD330, 0xD339,
+ 0x6A9A, 0x8233, 0xD430, 0xD439, 0x6AA4, 0x8233, 0xD530, 0xD539, 0x6AAE,
+ 0x8233, 0xD630, 0xD639, 0x6AB8, 0x8233, 0xD730, 0xD739, 0x6AC2, 0x8233,
+ 0xD830, 0xD839, 0x6ACC, 0x8233, 0xD930, 0xD939, 0x6AD6, 0x8233, 0xDA30,
+ 0xDA39, 0x6AE0, 0x8233, 0xDB30, 0xDB39, 0x6AEA, 0x8233, 0xDC30, 0xDC39,
+ 0x6AF4, 0x8233, 0xDD30, 0xDD39, 0x6AFE, 0x8233, 0xDE30, 0xDE39, 0x6B08,
+ 0x8233, 0xDF30, 0xDF39, 0x6B12, 0x8233, 0xE030, 0xE039, 0x6B1C, 0x8233,
+ 0xE130, 0xE139, 0x6B26, 0x8233, 0xE230, 0xE239, 0x6B30, 0x8233, 0xE330,
+ 0xE339, 0x6B3A, 0x8233, 0xE430, 0xE439, 0x6B44, 0x8233, 0xE530, 0xE539,
+ 0x6B4E, 0x8233, 0xE630, 0xE639, 0x6B58, 0x8233, 0xE730, 0xE739, 0x6B62,
+ 0x8233, 0xE830, 0xE839, 0x6B6C, 0x8233, 0xE930, 0xE939, 0x6B76, 0x8233,
+ 0xEA30, 0xEA39, 0x6B80, 0x8233, 0xEB30, 0xEB39, 0x6B8A, 0x8233, 0xEC30,
+ 0xEC39, 0x6B94, 0x8233, 0xED30, 0xED39, 0x6B9E, 0x8233, 0xEE30, 0xEE39,
+ 0x6BA8, 0x8233, 0xEF30, 0xEF39, 0x6BB2, 0x8233, 0xF030, 0xF039, 0x6BBC,
+ 0x8233, 0xF130, 0xF139, 0x6BC6, 0x8233, 0xF230, 0xF239, 0x6BD0, 0x8233,
+ 0xF330, 0xF339, 0x6BDA, 0x8233, 0xF430, 0xF439, 0x6BE4, 0x8233, 0xF530,
+ 0xF539, 0x6BEE, 0x8233, 0xF630, 0xF639, 0x6BF8, 0x8233, 0xF730, 0xF739,
+ 0x6C02, 0x8233, 0xF830, 0xF839, 0x6C0C, 0x8233, 0xF930, 0xF939, 0x6C16,
+ 0x8233, 0xFA30, 0xFA39, 0x6C20, 0x8233, 0xFB30, 0xFB39, 0x6C2A, 0x8233,
+ 0xFC30, 0xFC39, 0x6C34, 0x8233, 0xFD30, 0xFD39, 0x6C3E, 0x8233, 0xFE30,
+ 0xFE39, 0x6C48, 0x8234, 0x8130, 0x8139, 0x6C52, 0x8234, 0x8230, 0x8239,
+ 0x6C5C, 0x8234, 0x8330, 0x8339, 0x6C66, 0x8234, 0x8430, 0x8439, 0x6C70,
+ 0x8234, 0x8530, 0x8539, 0x6C7A, 0x8234, 0x8630, 0x8639, 0x6C84, 0x8234,
+ 0x8730, 0x8739, 0x6C8E, 0x8234, 0x8830, 0x8839, 0x6C98, 0x8234, 0x8930,
+ 0x8939, 0x6CA2, 0x8234, 0x8A30, 0x8A39, 0x6CAC, 0x8234, 0x8B30, 0x8B39,
+ 0x6CB6, 0x8234, 0x8C30, 0x8C39, 0x6CC0, 0x8234, 0x8D30, 0x8D39, 0x6CCA,
+ 0x8234, 0x8E30, 0x8E39, 0x6CD4, 0x8234, 0x8F30, 0x8F39, 0x6CDE, 0x8234,
+ 0x9030, 0x9039, 0x6CE8, 0x8234, 0x9130, 0x9139, 0x6CF2, 0x8234, 0x9230,
+ 0x9239, 0x6CFC, 0x8234, 0x9330, 0x9339, 0x6D06, 0x8234, 0x9430, 0x9439,
+ 0x6D10, 0x8234, 0x9530, 0x9539, 0x6D1A, 0x8234, 0x9630, 0x9639, 0x6D24,
+ 0x8234, 0x9730, 0x9739, 0x6D2E, 0x8234, 0x9830, 0x9839, 0x6D38, 0x8234,
+ 0x9930, 0x9939, 0x6D42, 0x8234, 0x9A30, 0x9A39, 0x6D4C, 0x8234, 0x9B30,
+ 0x9B39, 0x6D56, 0x8234, 0x9C30, 0x9C39, 0x6D60, 0x8234, 0x9D30, 0x9D39,
+ 0x6D6A, 0x8234, 0x9E30, 0x9E39, 0x6D74, 0x8234, 0x9F30, 0x9F39, 0x6D7E,
+ 0x8234, 0xA030, 0xA039, 0x6D88, 0x8234, 0xA130, 0xA139, 0x6D92, 0x8234,
+ 0xA230, 0xA239, 0x6D9C, 0x8234, 0xA330, 0xA339, 0x6DA6, 0x8234, 0xA430,
+ 0xA439, 0x6DB0, 0x8234, 0xA530, 0xA539, 0x6DBA, 0x8234, 0xA630, 0xA639,
+ 0x6DC4, 0x8234, 0xA730, 0xA739, 0x6DCE, 0x8234, 0xA830, 0xA839, 0x6DD8,
+ 0x8234, 0xA930, 0xA939, 0x6DE2, 0x8234, 0xAA30, 0xAA39, 0x6DEC, 0x8234,
+ 0xAB30, 0xAB39, 0x6DF6, 0x8234, 0xAC30, 0xAC39, 0x6E00, 0x8234, 0xAD30,
+ 0xAD39, 0x6E0A, 0x8234, 0xAE30, 0xAE39, 0x6E14, 0x8234, 0xAF30, 0xAF39,
+ 0x6E1E, 0x8234, 0xB030, 0xB039, 0x6E28, 0x8234, 0xB130, 0xB139, 0x6E32,
+ 0x8234, 0xB230, 0xB239, 0x6E3C, 0x8234, 0xB330, 0xB339, 0x6E46, 0x8234,
+ 0xB430, 0xB439, 0x6E50, 0x8234, 0xB530, 0xB539, 0x6E5A, 0x8234, 0xB630,
+ 0xB639, 0x6E64, 0x8234, 0xB730, 0xB739, 0x6E6E, 0x8234, 0xB830, 0xB839,
+ 0x6E78, 0x8234, 0xB930, 0xB939, 0x6E82, 0x8234, 0xBA30, 0xBA39, 0x6E8C,
+ 0x8234, 0xBB30, 0xBB39, 0x6E96, 0x8234, 0xBC30, 0xBC39, 0x6EA0, 0x8234,
+ 0xBD30, 0xBD39, 0x6EAA, 0x8234, 0xBE30, 0xBE39, 0x6EB4, 0x8234, 0xBF30,
+ 0xBF39, 0x6EBE, 0x8234, 0xC030, 0xC039, 0x6EC8, 0x8234, 0xC130, 0xC139,
+ 0x6ED2, 0x8234, 0xC230, 0xC239, 0x6EDC, 0x8234, 0xC330, 0xC339, 0x6EE6,
+ 0x8234, 0xC430, 0xC439, 0x6EF0, 0x8234, 0xC530, 0xC539, 0x6EFA, 0x8234,
+ 0xC630, 0xC639, 0x6F04, 0x8234, 0xC730, 0xC739, 0x6F0E, 0x8234, 0xC830,
+ 0xC839, 0x6F18, 0x8234, 0xC930, 0xC939, 0x6F22, 0x8234, 0xCA30, 0xCA39,
+ 0x6F2C, 0x8234, 0xCB30, 0xCB39, 0x6F36, 0x8234, 0xCC30, 0xCC39, 0x6F40,
+ 0x8234, 0xCD30, 0xCD39, 0x6F4A, 0x8234, 0xCE30, 0xCE39, 0x6F54, 0x8234,
+ 0xCF30, 0xCF39, 0x6F5E, 0x8234, 0xD030, 0xD039, 0x6F68, 0x8234, 0xD130,
+ 0xD139, 0x6F72, 0x8234, 0xD230, 0xD239, 0x6F7C, 0x8234, 0xD330, 0xD339,
+ 0x6F86, 0x8234, 0xD430, 0xD439, 0x6F90, 0x8234, 0xD530, 0xD539, 0x6F9A,
+ 0x8234, 0xD630, 0xD639, 0x6FA4, 0x8234, 0xD730, 0xD739, 0x6FAE, 0x8234,
+ 0xD830, 0xD839, 0x6FB8, 0x8234, 0xD930, 0xD939, 0x6FC2, 0x8234, 0xDA30,
+ 0xDA39, 0x6FCC, 0x8234, 0xDB30, 0xDB39, 0x6FD6, 0x8234, 0xDC30, 0xDC39,
+ 0x6FE0, 0x8234, 0xDD30, 0xDD39, 0x6FEA, 0x8234, 0xDE30, 0xDE39, 0x6FF4,
+ 0x8234, 0xDF30, 0xDF39, 0x6FFE, 0x8234, 0xE030, 0xE039, 0x7008, 0x8234,
+ 0xE130, 0xE139, 0x7012, 0x8234, 0xE230, 0xE239, 0x701C, 0x8234, 0xE330,
+ 0xE339, 0x7026, 0x8234, 0xE430, 0xE439, 0x7030, 0x8234, 0xE530, 0xE539,
+ 0x703A, 0x8234, 0xE630, 0xE639, 0x7044, 0x8234, 0xE730, 0xE739, 0x704E,
+ 0x8234, 0xE830, 0xE839, 0x7058, 0x8234, 0xE930, 0xE939, 0x7062, 0x8234,
+ 0xEA30, 0xEA39, 0x706C, 0x8234, 0xEB30, 0xEB39, 0x7076, 0x8234, 0xEC30,
+ 0xEC39, 0x7080, 0x8234, 0xED30, 0xED39, 0x708A, 0x8234, 0xEE30, 0xEE39,
+ 0x7094, 0x8234, 0xEF30, 0xEF39, 0x709E, 0x8234, 0xF030, 0xF039, 0x70A8,
+ 0x8234, 0xF130, 0xF139, 0x70B2, 0x8234, 0xF230, 0xF239, 0x70BC, 0x8234,
+ 0xF330, 0xF339, 0x70C6, 0x8234, 0xF430, 0xF439, 0x70D0, 0x8234, 0xF530,
+ 0xF539, 0x70DA, 0x8234, 0xF630, 0xF639, 0x70E4, 0x8234, 0xF730, 0xF739,
+ 0x70EE, 0x8234, 0xF830, 0xF839, 0x70F8, 0x8234, 0xF930, 0xF939, 0x7102,
+ 0x8234, 0xFA30, 0xFA39, 0x710C, 0x8234, 0xFB30, 0xFB39, 0x7116, 0x8234,
+ 0xFC30, 0xFC39, 0x7120, 0x8234, 0xFD30, 0xFD39, 0x712A, 0x8234, 0xFE30,
+ 0xFE39, 0x7134, 0x8235, 0x8130, 0x8139, 0x713E, 0x8235, 0x8230, 0x8239,
+ 0x7148, 0x8235, 0x8330, 0x8339, 0x7152, 0x8235, 0x8430, 0x8439, 0x715C,
+ 0x8235, 0x8530, 0x8539, 0x7166, 0x8235, 0x8630, 0x8639, 0x7170, 0x8235,
+ 0x8730, 0x8738, 0x717A, 0x8235, 0x9833, 0x9839, 0x7188, 0x8235, 0x9930,
+ 0x9939, 0x718F, 0x8235, 0x9A30, 0x9A39, 0x7199, 0x8235, 0x9B30, 0x9B39,
+ 0x71A3, 0x8235, 0x9C30, 0x9C39, 0x71AD, 0x8235, 0x9D30, 0x9D39, 0x71B7,
+ 0x8235, 0x9E30, 0x9E39, 0x71C1, 0x8235, 0x9F30, 0x9F39, 0x71CB, 0x8235,
+ 0xA030, 0xA039, 0x71D5, 0x8235, 0xA130, 0xA139, 0x71DF, 0x8235, 0xA230,
+ 0xA239, 0x71E9, 0x8235, 0xA330, 0xA339, 0x71F3, 0x8235, 0xA430, 0xA439,
+ 0x71FD, 0x8235, 0xA530, 0xA539, 0x7207, 0x8235, 0xA630, 0xA639, 0x7211,
+ 0x8235, 0xA730, 0xA739, 0x721B, 0x8235, 0xA830, 0xA839, 0x7225, 0x8235,
+ 0xA930, 0xA939, 0x722F, 0x8235, 0xAA30, 0xAA39, 0x7239, 0x8235, 0xAB30,
+ 0xAB39, 0x7243, 0x8235, 0xAC30, 0xAC39, 0x724D, 0x8235, 0xAD30, 0xAD39,
+ 0x7257, 0x8235, 0xAE30, 0xAE39, 0x7261, 0x8235, 0xAF30, 0xAF39, 0x726B,
+ 0x8235, 0xB030, 0xB039, 0x7275, 0x8235, 0xB130, 0xB139, 0x727F, 0x8235,
+ 0xB230, 0xB239, 0x7289, 0x8235, 0xB330, 0xB339, 0x7293, 0x8235, 0xB430,
+ 0xB439, 0x729D, 0x8235, 0xB530, 0xB539, 0x72A7, 0x8235, 0xB630, 0xB639,
+ 0x72B1, 0x8235, 0xB730, 0xB739, 0x72BB, 0x8235, 0xB830, 0xB839, 0x72C5,
+ 0x8235, 0xB930, 0xB939, 0x72CF, 0x8235, 0xBA30, 0xBA39, 0x72D9, 0x8235,
+ 0xBB30, 0xBB39, 0x72E3, 0x8235, 0xBC30, 0xBC39, 0x72ED, 0x8235, 0xBD30,
+ 0xBD39, 0x72F7, 0x8235, 0xBE30, 0xBE39, 0x7301, 0x8235, 0xBF30, 0xBF39,
+ 0x730B, 0x8235, 0xC030, 0xC039, 0x7315, 0x8235, 0xC130, 0xC139, 0x731F,
+ 0x8235, 0xC230, 0xC239, 0x7329, 0x8235, 0xC330, 0xC339, 0x7333, 0x8235,
+ 0xC430, 0xC439, 0x733D, 0x8235, 0xC530, 0xC539, 0x7347, 0x8235, 0xC630,
+ 0xC639, 0x7351, 0x8235, 0xC730, 0xC739, 0x735B, 0x8235, 0xC830, 0xC839,
+ 0x7365, 0x8235, 0xC930, 0xC939, 0x736F, 0x8235, 0xCA30, 0xCA39, 0x7379,
+ 0x8235, 0xCB30, 0xCB39, 0x7383, 0x8235, 0xCC30, 0xCC39, 0x738D, 0x8235,
+ 0xCD30, 0xCD39, 0x7397, 0x8235, 0xCE30, 0xCE39, 0x73A1, 0x8235, 0xCF30,
+ 0xCF39, 0x73AB, 0x8235, 0xD030, 0xD039, 0x73B5, 0x8235, 0xD130, 0xD139,
+ 0x73BF, 0x8235, 0xD230, 0xD239, 0x73C9, 0x8235, 0xD330, 0xD339, 0x73D3,
+ 0x8235, 0xD430, 0xD439, 0x73DD, 0x8235, 0xD530, 0xD539, 0x73E7, 0x8235,
+ 0xD630, 0xD639, 0x73F1, 0x8235, 0xD730, 0xD739, 0x73FB, 0x8235, 0xD830,
+ 0xD839, 0x7405, 0x8235, 0xD930, 0xD939, 0x740F, 0x8235, 0xDA30, 0xDA39,
+ 0x7419, 0x8235, 0xDB30, 0xDB39, 0x7423, 0x8235, 0xDC30, 0xDC39, 0x742D,
+ 0x8235, 0xDD30, 0xDD39, 0x7437, 0x8235, 0xDE30, 0xDE39, 0x7441, 0x8235,
+ 0xDF30, 0xDF39, 0x744B, 0x8235, 0xE030, 0xE039, 0x7455, 0x8235, 0xE130,
+ 0xE139, 0x745F, 0x8235, 0xE230, 0xE239, 0x7469, 0x8235, 0xE330, 0xE339,
+ 0x7473, 0x8235, 0xE430, 0xE439, 0x747D, 0x8235, 0xE530, 0xE539, 0x7487,
+ 0x8235, 0xE630, 0xE639, 0x7491, 0x8235, 0xE730, 0xE739, 0x749B, 0x8235,
+ 0xE830, 0xE839, 0x74A5, 0x8235, 0xE930, 0xE939, 0x74AF, 0x8235, 0xEA30,
+ 0xEA39, 0x74B9, 0x8235, 0xEB30, 0xEB39, 0x74C3, 0x8235, 0xEC30, 0xEC39,
+ 0x74CD, 0x8235, 0xED30, 0xED39, 0x74D7, 0x8235, 0xEE30, 0xEE39, 0x74E1,
+ 0x8235, 0xEF30, 0xEF39, 0x74EB, 0x8235, 0xF030, 0xF039, 0x74F5, 0x8235,
+ 0xF130, 0xF139, 0x74FF, 0x8235, 0xF230, 0xF239, 0x7509, 0x8235, 0xF330,
+ 0xF339, 0x7513, 0x8235, 0xF430, 0xF439, 0x751D, 0x8235, 0xF530, 0xF539,
+ 0x7527, 0x8235, 0xF630, 0xF639, 0x7531, 0x8235, 0xF730, 0xF739, 0x753B,
+ 0x8235, 0xF830, 0xF839, 0x7545, 0x8235, 0xF930, 0xF939, 0x754F, 0x8235,
+ 0xFA30, 0xFA39, 0x7559, 0x8235, 0xFB30, 0xFB39, 0x7563, 0x8235, 0xFC30,
+ 0xFC39, 0x756D, 0x8235, 0xFD30, 0xFD39, 0x7577, 0x8235, 0xFE30, 0xFE39,
+ 0x7581, 0x8236, 0x8130, 0x8139, 0x758B, 0x8236, 0x8230, 0x8239, 0x7595,
+ 0x8236, 0x8330, 0x8339, 0x759F, 0x8236, 0x8430, 0x8439, 0x75A9, 0x8236,
+ 0x8530, 0x8539, 0x75B3, 0x8236, 0x8630, 0x8639, 0x75BD, 0x8236, 0x8730,
+ 0x8739, 0x75C7, 0x8236, 0x8830, 0x8839, 0x75D1, 0x8236, 0x8930, 0x8939,
+ 0x75DB, 0x8236, 0x8A30, 0x8A39, 0x75E5, 0x8236, 0x8B30, 0x8B39, 0x75EF,
+ 0x8236, 0x8C30, 0x8C39, 0x75F9, 0x8236, 0x8D30, 0x8D39, 0x7603, 0x8236,
+ 0x8E30, 0x8E37, 0x760D, 0x8236, 0x8F31, 0x8F39, 0x7615, 0x8236, 0x9030,
+ 0x9039, 0x761E, 0x8236, 0x9130, 0x9139, 0x7628, 0x8236, 0x9230, 0x9239,
+ 0x7632, 0x8236, 0x9330, 0x9339, 0x763C, 0x8236, 0x9430, 0x9435, 0x7646,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/GB1/GBK2K-V_5.cpp b/core/fpdfapi/fpdf_cmaps/GB1/GBK2K-V_5.cpp
new file mode 100644
index 0000000000..5e66e43b7e
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/GB1/GBK2K-V_5.cpp
@@ -0,0 +1,24 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h"
+
+const FX_WORD g_FXCMAP_GBK2K_V_5[41 * 3] = {
+ 0xA1A2, 0xA1A2, 0x023F, 0xA1A3, 0xA1A3, 0x023E, 0xA1AA, 0xA1AA, 0x0256,
+ 0xA1AB, 0xA1AC, 0x1E18, 0xA1AD, 0xA1AD, 0x0257, 0xA1B2, 0xA1BF, 0x0246,
+ 0xA1FE, 0xA1FE, 0x1E1A, 0xA3A1, 0xA3A1, 0x0242, 0xA3A8, 0xA3A9, 0x0244,
+ 0xA3AC, 0xA3AC, 0x023D, 0xA3AE, 0xA3AE, 0x1E1B, 0xA3BA, 0xA3BB, 0x0240,
+ 0xA3BD, 0xA3BD, 0x1E1C, 0xA3BF, 0xA3BF, 0x0243, 0xA3DB, 0xA3DB, 0x1E1D,
+ 0xA3DD, 0xA3DD, 0x1E1E, 0xA3DF, 0xA3DF, 0x0258, 0xA3FB, 0xA3FB, 0x0254,
+ 0xA3FD, 0xA3FD, 0x0255, 0xA3FE, 0xA3FE, 0x1E1F, 0xA4A1, 0xA4A1, 0x5757,
+ 0xA4A3, 0xA4A3, 0x5759, 0xA4A5, 0xA4A5, 0x5762, 0xA4A7, 0xA4A7, 0x5758,
+ 0xA4A9, 0xA4A9, 0x5760, 0xA4C3, 0xA4C3, 0x5761, 0xA4E3, 0xA4E3, 0x5764,
+ 0xA4E5, 0xA4E5, 0x5766, 0xA4E7, 0xA4E7, 0x5765, 0xA4EE, 0xA4EE, 0x5763,
+ 0xA5A1, 0xA5A1, 0x5768, 0xA5A3, 0xA5A3, 0x576A, 0xA5A5, 0xA5A5, 0x5771,
+ 0xA5A7, 0xA5A7, 0x5769, 0xA5A9, 0xA5A9, 0x576F, 0xA5C3, 0xA5C3, 0x5770,
+ 0xA5E3, 0xA5E3, 0x5773, 0xA5E5, 0xA5E5, 0x5775, 0xA5E7, 0xA5E7, 0x5774,
+ 0xA5EE, 0xA5EE, 0x5772, 0xA960, 0xA960, 0x577A,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-H_2.cpp b/core/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-H_2.cpp
new file mode 100644
index 0000000000..540e7b6c2a
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-H_2.cpp
@@ -0,0 +1,1367 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h"
+
+const FX_WORD g_FXCMAP_GBKp_EUC_H_2[4070 * 3] = {
+ 0x0020, 0x007E, 0x0001, 0x8140, 0x8178, 0x2758, 0x8179, 0x8179, 0x2059,
+ 0x817A, 0x817E, 0x2791, 0x8180, 0x8185, 0x2796, 0x8186, 0x8186, 0x21F1,
+ 0x8187, 0x81EC, 0x279C, 0x81ED, 0x81ED, 0x1FF2, 0x81EE, 0x81F5, 0x2802,
+ 0x81F6, 0x81F6, 0x205D, 0x81F7, 0x81FE, 0x280A, 0x8240, 0x8252, 0x2812,
+ 0x8253, 0x8253, 0x269C, 0x8254, 0x8261, 0x2825, 0x8262, 0x8262, 0x21B5,
+ 0x8263, 0x8273, 0x2833, 0x8274, 0x8274, 0x22CC, 0x8275, 0x8279, 0x2844,
+ 0x827A, 0x827A, 0x2016, 0x827B, 0x827C, 0x2849, 0x827D, 0x827D, 0x1E62,
+ 0x827E, 0x827E, 0x284B, 0x8280, 0x8280, 0x1F20, 0x8281, 0x8282, 0x284C,
+ 0x8283, 0x8283, 0x207F, 0x8284, 0x828F, 0x284E, 0x8290, 0x8290, 0x205C,
+ 0x8291, 0x82A4, 0x285A, 0x82A5, 0x82A5, 0x2194, 0x82A6, 0x82C7, 0x286E,
+ 0x82C8, 0x82C8, 0x1E65, 0x82C9, 0x82C9, 0x2281, 0x82CA, 0x82E0, 0x2890,
+ 0x82E1, 0x82E1, 0x22CD, 0x82E2, 0x82E2, 0x28A7, 0x82E3, 0x82E3, 0x210A,
+ 0x82E4, 0x82E4, 0x1E3E, 0x82E5, 0x82EC, 0x28A8, 0x82ED, 0x82ED, 0x267F,
+ 0x82EE, 0x82F1, 0x28B0, 0x82F2, 0x82F2, 0x222E, 0x82F3, 0x82F6, 0x28B4,
+ 0x82F7, 0x82F7, 0x1E96, 0x82F8, 0x82F8, 0x22CB, 0x82F9, 0x82F9, 0x226C,
+ 0x82FA, 0x82FA, 0x28B8, 0x82FB, 0x82FB, 0x2117, 0x82FC, 0x82FE, 0x28B9,
+ 0x8340, 0x8340, 0x28BC, 0x8341, 0x8341, 0x20E8, 0x8342, 0x8344, 0x28BD,
+ 0x8345, 0x8345, 0x22D4, 0x8346, 0x8347, 0x28C0, 0x8348, 0x8348, 0x1FB9,
+ 0x8349, 0x834B, 0x28C2, 0x834C, 0x834C, 0x22D8, 0x834D, 0x8352, 0x28C5,
+ 0x8353, 0x8353, 0x20DF, 0x8354, 0x8356, 0x28CB, 0x8357, 0x8357, 0x20C2,
+ 0x8358, 0x835D, 0x28CE, 0x835E, 0x835E, 0x2195, 0x835F, 0x8364, 0x28D4,
+ 0x8365, 0x8365, 0x1FAC, 0x8366, 0x8366, 0x22D3, 0x8367, 0x8371, 0x28DA,
+ 0x8372, 0x8372, 0x1F81, 0x8373, 0x8377, 0x28E5, 0x8378, 0x8378, 0x2210,
+ 0x8379, 0x8379, 0x28EA, 0x837A, 0x837A, 0x22CF, 0x837B, 0x837B, 0x28EB,
+ 0x837C, 0x837C, 0x2213, 0x837D, 0x837D, 0x28EC, 0x837E, 0x837E, 0x1FE4,
+ 0x8380, 0x8380, 0x1F90, 0x8381, 0x8385, 0x28ED, 0x8386, 0x8386, 0x22D6,
+ 0x8387, 0x8388, 0x28F2, 0x8389, 0x8389, 0x22D0, 0x838A, 0x838A, 0x22CE,
+ 0x838B, 0x838C, 0x28F4, 0x838D, 0x838D, 0x2681, 0x838E, 0x8393, 0x28F6,
+ 0x8394, 0x8394, 0x1E76, 0x8395, 0x839D, 0x28FC, 0x839E, 0x839E, 0x2231,
+ 0x839F, 0x83A5, 0x2905, 0x83A6, 0x83A6, 0x1E93, 0x83A7, 0x83AA, 0x290C,
+ 0x83AB, 0x83AB, 0x22D2, 0x83AC, 0x83AD, 0x2910, 0x83AE, 0x83AE, 0x22D7,
+ 0x83AF, 0x83AF, 0x22D5, 0x83B0, 0x83B0, 0x22D1, 0x83B1, 0x83B9, 0x2912,
+ 0x83BA, 0x83BA, 0x1EE5, 0x83BB, 0x83C8, 0x291B, 0x83C9, 0x83C9, 0x2025,
+ 0x83CA, 0x83F5, 0x2929, 0x83F6, 0x83F6, 0x1ECF, 0x83F7, 0x83FE, 0x2955,
+ 0x8440, 0x844F, 0x295D, 0x8450, 0x8450, 0x1FD9, 0x8451, 0x8470, 0x296D,
+ 0x8471, 0x8471, 0x22C8, 0x8472, 0x8473, 0x298D, 0x8474, 0x8474, 0x2263,
+ 0x8475, 0x8476, 0x298F, 0x8477, 0x8477, 0x2683, 0x8478, 0x847E, 0x2991,
+ 0x8480, 0x8481, 0x2998, 0x8482, 0x8482, 0x1F17, 0x8483, 0x848D, 0x299A,
+ 0x848E, 0x848E, 0x1F2B, 0x848F, 0x8491, 0x29A5, 0x8492, 0x8492, 0x22CA,
+ 0x8493, 0x8493, 0x1E99, 0x8494, 0x849C, 0x29A8, 0x849D, 0x849D, 0x1F4F,
+ 0x849E, 0x84A0, 0x29B1, 0x84A1, 0x84A1, 0x1FCF, 0x84A2, 0x84A2, 0x2036,
+ 0x84A3, 0x84A3, 0x1F3A, 0x84A4, 0x84A4, 0x29B4, 0x84A5, 0x84A5, 0x22C9,
+ 0x84A6, 0x84A6, 0x1F99, 0x84A7, 0x84A8, 0x29B5, 0x84A9, 0x84A9, 0x1F75,
+ 0x84AA, 0x84C4, 0x29B7, 0x84C5, 0x84C5, 0x1FBE, 0x84C6, 0x84D2, 0x29D2,
+ 0x84D3, 0x84D3, 0x1ECD, 0x84D4, 0x84D4, 0x29DF, 0x84D5, 0x84D5, 0x21A9,
+ 0x84D6, 0x84D6, 0x29E0, 0x84D7, 0x84D7, 0x21E6, 0x84D8, 0x84D8, 0x29E1,
+ 0x84D9, 0x84D9, 0x2127, 0x84DA, 0x84DA, 0x2003, 0x84DB, 0x84DC, 0x29E2,
+ 0x84DD, 0x84DD, 0x2132, 0x84DE, 0x84E9, 0x29E4, 0x84EA, 0x84EA, 0x2323,
+ 0x84EB, 0x84ED, 0x29F0, 0x84EE, 0x84EE, 0x2011, 0x84EF, 0x84F0, 0x29F3,
+ 0x84F1, 0x84F1, 0x20F5, 0x84F2, 0x84FE, 0x29F5, 0x8540, 0x8550, 0x2A02,
+ 0x8551, 0x8551, 0x22C5, 0x8552, 0x8552, 0x1F5E, 0x8553, 0x8553, 0x2A13,
+ 0x8554, 0x8554, 0x22C6, 0x8555, 0x855D, 0x2A14, 0x855E, 0x855E, 0x20EF,
+ 0x855F, 0x8565, 0x2A1D, 0x8566, 0x8566, 0x21D0, 0x8567, 0x857E, 0x2A24,
+ 0x8580, 0x8586, 0x2A3C, 0x8587, 0x8587, 0x22C1, 0x8588, 0x858A, 0x2A43,
+ 0x858B, 0x858B, 0x1E64, 0x858C, 0x8591, 0x2A46, 0x8592, 0x8592, 0x21F9,
+ 0x8593, 0x8595, 0x2A4C, 0x8596, 0x8596, 0x2010, 0x8597, 0x8597, 0x2A4F,
+ 0x8598, 0x8598, 0x22C2, 0x8599, 0x85A1, 0x2A50, 0x85A2, 0x85A2, 0x1E5A,
+ 0x85A3, 0x85B1, 0x2A59, 0x85B2, 0x85B2, 0x1EA2, 0x85B3, 0x85FE, 0x2A68,
+ 0x8640, 0x8649, 0x2AB4, 0x864A, 0x864A, 0x236D, 0x864B, 0x8653, 0x2ABE,
+ 0x8654, 0x8654, 0x2247, 0x8655, 0x8667, 0x2AC7, 0x8668, 0x8668, 0x236C,
+ 0x8669, 0x867E, 0x2ADA, 0x8680, 0x8695, 0x2AF0, 0x8696, 0x8696, 0x219C,
+ 0x8697, 0x8698, 0x2B06, 0x8699, 0x8699, 0x20C9, 0x869A, 0x86A0, 0x2B08,
+ 0x86A1, 0x86A1, 0x21F0, 0x86A2, 0x86C9, 0x2B0F, 0x86CA, 0x86CA, 0x210B,
+ 0x86CB, 0x86CB, 0x2B37, 0x86CC, 0x86CC, 0x20DE, 0x86CD, 0x86CD, 0x2B38,
+ 0x86CE, 0x86CE, 0x1EAA, 0x86CF, 0x86D0, 0x2B39, 0x86D1, 0x86D1, 0x222C,
+ 0x86D2, 0x86DB, 0x2B3B, 0x86DC, 0x86DC, 0x20D8, 0x86DD, 0x86DD, 0x22C0,
+ 0x86DE, 0x86E0, 0x2B45, 0x86E1, 0x86E1, 0x206F, 0x86E2, 0x86E7, 0x2B48,
+ 0x86E8, 0x86E8, 0x21A1, 0x86E9, 0x86ED, 0x2B4E, 0x86EE, 0x86EE, 0x2379,
+ 0x86EF, 0x86F3, 0x2B53, 0x86F4, 0x86F4, 0x2372, 0x86F5, 0x86FE, 0x2B58,
+ 0x8740, 0x8740, 0x216A, 0x8741, 0x8743, 0x2B62, 0x8744, 0x8744, 0x237C,
+ 0x8745, 0x8748, 0x2B65, 0x8749, 0x8749, 0x20B0, 0x874A, 0x874A, 0x2B69,
+ 0x874B, 0x874B, 0x237A, 0x874C, 0x874C, 0x1E74, 0x874D, 0x874E, 0x2B6A,
+ 0x874F, 0x874F, 0x2377, 0x8750, 0x8756, 0x2B6C, 0x8757, 0x8757, 0x1F4C,
+ 0x8758, 0x8759, 0x2B73, 0x875A, 0x875A, 0x2378, 0x875B, 0x875B, 0x21CF,
+ 0x875C, 0x875C, 0x2368, 0x875D, 0x875D, 0x2B75, 0x875E, 0x875E, 0x2371,
+ 0x875F, 0x875F, 0x2B76, 0x8760, 0x8760, 0x2369, 0x8761, 0x8765, 0x2B77,
+ 0x8766, 0x8766, 0x2674, 0x8767, 0x8779, 0x2B7C, 0x877A, 0x877A, 0x236F,
+ 0x877B, 0x877C, 0x2B8F, 0x877D, 0x877D, 0x2370, 0x877E, 0x877E, 0x2B91,
+ 0x8780, 0x8780, 0x2B92, 0x8781, 0x8781, 0x2376, 0x8782, 0x8782, 0x2373,
+ 0x8783, 0x8785, 0x2B93, 0x8786, 0x8786, 0x237F, 0x8787, 0x8787, 0x2B96,
+ 0x8788, 0x8788, 0x2374, 0x8789, 0x8789, 0x2B97, 0x878A, 0x878A, 0x20B5,
+ 0x878B, 0x878C, 0x2B98, 0x878D, 0x878D, 0x1EDB, 0x878E, 0x878E, 0x2672,
+ 0x878F, 0x8792, 0x2B9A, 0x8793, 0x8793, 0x236E, 0x8794, 0x8797, 0x2B9E,
+ 0x8798, 0x8798, 0x21B7, 0x8799, 0x879C, 0x2BA2, 0x879D, 0x879D, 0x2375,
+ 0x879E, 0x87A2, 0x2BA6, 0x87A3, 0x87A3, 0x2382, 0x87A4, 0x87A6, 0x2BAB,
+ 0x87A7, 0x87A7, 0x209E, 0x87A8, 0x87B2, 0x2BAE, 0x87B3, 0x87B3, 0x236B,
+ 0x87B4, 0x87B4, 0x2BB9, 0x87B5, 0x87B5, 0x2039, 0x87B6, 0x87BA, 0x2BBA,
+ 0x87BB, 0x87BB, 0x269F, 0x87BC, 0x87BE, 0x2BBF, 0x87BF, 0x87BF, 0x237D,
+ 0x87C0, 0x87C0, 0x21F5, 0x87C1, 0x87C1, 0x2BC2, 0x87C2, 0x87C2, 0x2381,
+ 0x87C3, 0x87C9, 0x2BC3, 0x87CA, 0x87CA, 0x237B, 0x87CB, 0x87CB, 0x237E,
+ 0x87CC, 0x87CC, 0x21CC, 0x87CD, 0x87CE, 0x2BCA, 0x87CF, 0x87CF, 0x22DB,
+ 0x87D0, 0x87D1, 0x2BCC, 0x87D2, 0x87D2, 0x236A, 0x87D3, 0x87D3, 0x2689,
+ 0x87D4, 0x87D4, 0x2BCE, 0x87D5, 0x87D5, 0x2697, 0x87D6, 0x87D9, 0x2BCF,
+ 0x87DA, 0x87DA, 0x22A1, 0x87DB, 0x87F6, 0x2BD3, 0x87F7, 0x87F7, 0x2383,
+ 0x87F8, 0x87F8, 0x1F3D, 0x87F9, 0x87F9, 0x2BEF, 0x87FA, 0x87FA, 0x218F,
+ 0x87FB, 0x87FE, 0x2BF0, 0x8840, 0x8840, 0x2246, 0x8841, 0x8841, 0x2248,
+ 0x8842, 0x8843, 0x2BF4, 0x8844, 0x8844, 0x217E, 0x8845, 0x8845, 0x2BF6,
+ 0x8846, 0x8846, 0x2180, 0x8847, 0x887E, 0x2BF7, 0x8880, 0x88B9, 0x2C2F,
+ 0x88BA, 0x88BA, 0x232A, 0x88BB, 0x88CB, 0x2C69, 0x88CC, 0x88CC, 0x228B,
+ 0x88CD, 0x88D3, 0x2C7A, 0x88D4, 0x88D4, 0x1F85, 0x88D5, 0x88D6, 0x2C81,
+ 0x88D7, 0x88D7, 0x2325, 0x88D8, 0x88DE, 0x2C83, 0x88DF, 0x88DF, 0x232C,
+ 0x88E0, 0x88E4, 0x2C8A, 0x88E5, 0x88E5, 0x232E, 0x88E6, 0x88F1, 0x2C8F,
+ 0x88F2, 0x88F2, 0x2205, 0x88F3, 0x88F3, 0x1E38, 0x88F4, 0x88F5, 0x2C9B,
+ 0x88F6, 0x88F6, 0x1E73, 0x88F7, 0x88FE, 0x2C9D, 0x8940, 0x894A, 0x2CA5,
+ 0x894B, 0x894B, 0x1FE3, 0x894C, 0x894C, 0x2339, 0x894D, 0x894D, 0x2CB0,
+ 0x894E, 0x894E, 0x232B, 0x894F, 0x894F, 0x2CB1, 0x8950, 0x8950, 0x232D,
+ 0x8951, 0x8953, 0x2CB2, 0x8954, 0x8954, 0x217F, 0x8955, 0x895C, 0x2CB5,
+ 0x895D, 0x895D, 0x21A7, 0x895E, 0x895E, 0x2CBD, 0x895F, 0x895F, 0x232F,
+ 0x8960, 0x896C, 0x2CBE, 0x896D, 0x896D, 0x1E7D, 0x896E, 0x8970, 0x2CCB,
+ 0x8971, 0x8971, 0x20D6, 0x8972, 0x897B, 0x2CCE, 0x897C, 0x897C, 0x1EC2,
+ 0x897D, 0x897E, 0x2CD8, 0x8980, 0x898A, 0x2CDA, 0x898B, 0x898B, 0x22B2,
+ 0x898C, 0x8998, 0x2CE5, 0x8999, 0x8999, 0x1EDF, 0x899A, 0x899D, 0x2CF2,
+ 0x899E, 0x899E, 0x1EF9, 0x899F, 0x89A5, 0x2CF6, 0x89A6, 0x89A6, 0x20D9,
+ 0x89A7, 0x89A7, 0x2CFD, 0x89A8, 0x89A8, 0x1FDD, 0x89A9, 0x89AE, 0x2CFE,
+ 0x89AF, 0x89AF, 0x2167, 0x89B0, 0x89B9, 0x2D04, 0x89BA, 0x89BA, 0x21ED,
+ 0x89BB, 0x89BD, 0x2D0E, 0x89BE, 0x89BE, 0x2007, 0x89BF, 0x89BF, 0x2326,
+ 0x89C0, 0x89C0, 0x2329, 0x89C1, 0x89C3, 0x2D11, 0x89C4, 0x89C4, 0x1F52,
+ 0x89C5, 0x89C5, 0x203B, 0x89C6, 0x89C6, 0x2328, 0x89C7, 0x89C7, 0x2D14,
+ 0x89C8, 0x89C8, 0x2327, 0x89C9, 0x89CD, 0x2D15, 0x89CE, 0x89CE, 0x1E2B,
+ 0x89CF, 0x89D0, 0x2D1A, 0x89D1, 0x89D1, 0x22AE, 0x89D2, 0x89D7, 0x2D1C,
+ 0x89D8, 0x89D8, 0x1F49, 0x89D9, 0x89DA, 0x2D22, 0x89DB, 0x89DB, 0x2138,
+ 0x89DC, 0x89F3, 0x2D24, 0x89F4, 0x89F4, 0x2081, 0x89F5, 0x89FE, 0x2D3C,
+ 0x8A40, 0x8A40, 0x2D46, 0x8A41, 0x8A41, 0x1F7C, 0x8A42, 0x8A58, 0x2D47,
+ 0x8A59, 0x8A59, 0x235B, 0x8A5A, 0x8A5A, 0x1EDE, 0x8A5B, 0x8A5B, 0x2D5E,
+ 0x8A5C, 0x8A5C, 0x1FA2, 0x8A5D, 0x8A5D, 0x2D5F, 0x8A5E, 0x8A5E, 0x1EFA,
+ 0x8A5F, 0x8A78, 0x2D60, 0x8A79, 0x8A79, 0x22AD, 0x8A7A, 0x8A7E, 0x2D7A,
+ 0x8A80, 0x8AE3, 0x2D7F, 0x8AE4, 0x8AE4, 0x203F, 0x8AE5, 0x8AFE, 0x2DE3,
+ 0x8B40, 0x8B43, 0x2DFD, 0x8B44, 0x8B44, 0x1F0E, 0x8B45, 0x8B48, 0x2E01,
+ 0x8B49, 0x8B49, 0x23F9, 0x8B4A, 0x8B79, 0x2E05, 0x8B7A, 0x8B7A, 0x23FC,
+ 0x8B7B, 0x8B7E, 0x2E35, 0x8B80, 0x8B8B, 0x2E39, 0x8B8C, 0x8B8C, 0x2069,
+ 0x8B8D, 0x8B9D, 0x2E45, 0x8B9E, 0x8B9E, 0x23F7, 0x8B9F, 0x8BB2, 0x2E56,
+ 0x8BB3, 0x8BB3, 0x23F6, 0x8BB4, 0x8BB8, 0x2E6A, 0x8BB9, 0x8BB9, 0x23FD,
+ 0x8BBA, 0x8BBD, 0x2E6F, 0x8BBE, 0x8BBE, 0x23F8, 0x8BBF, 0x8BC5, 0x2E73,
+ 0x8BC6, 0x8BC6, 0x23FA, 0x8BC7, 0x8BC7, 0x2E7A, 0x8BC8, 0x8BC8, 0x23FE,
+ 0x8BC9, 0x8BC9, 0x1FA8, 0x8BCA, 0x8BD3, 0x2E7B, 0x8BD4, 0x8BD4, 0x2401,
+ 0x8BD5, 0x8BDB, 0x2E85, 0x8BDC, 0x8BDC, 0x23FF, 0x8BDD, 0x8BE4, 0x2E8C,
+ 0x8BE5, 0x8BE5, 0x2400, 0x8BE6, 0x8BEA, 0x2E94, 0x8BEB, 0x8BEB, 0x2221,
+ 0x8BEC, 0x8BEF, 0x2E99, 0x8BF0, 0x8BF0, 0x2122, 0x8BF1, 0x8BFE, 0x2E9D,
+ 0x8C40, 0x8C43, 0x2EAB, 0x8C44, 0x8C44, 0x23FB, 0x8C45, 0x8C4E, 0x2EAF,
+ 0x8C4F, 0x8C4F, 0x215A, 0x8C50, 0x8C56, 0x2EB9, 0x8C57, 0x8C57, 0x21E5,
+ 0x8C58, 0x8C5B, 0x2EC0, 0x8C5C, 0x8C5C, 0x2057, 0x8C5D, 0x8C7E, 0x2EC4,
+ 0x8C80, 0x8C8A, 0x2EE6, 0x8C8B, 0x8C8B, 0x20E5, 0x8C8C, 0x8C8C, 0x2EF1,
+ 0x8C8D, 0x8C8D, 0x212F, 0x8C8E, 0x8C8E, 0x20A3, 0x8C8F, 0x8C8F, 0x2121,
+ 0x8C90, 0x8C90, 0x2EF2, 0x8C91, 0x8C91, 0x21D4, 0x8C92, 0x8C92, 0x1FE5,
+ 0x8C93, 0x8C98, 0x2EF3, 0x8C99, 0x8C99, 0x1E8A, 0x8C9A, 0x8C9A, 0x1E37,
+ 0x8C9B, 0x8CA1, 0x2EF9, 0x8CA2, 0x8CA2, 0x1F9E, 0x8CA3, 0x8CA3, 0x22A6,
+ 0x8CA4, 0x8CA4, 0x21E8, 0x8CA5, 0x8CA5, 0x2F00, 0x8CA6, 0x8CA6, 0x1EDA,
+ 0x8CA7, 0x8CA7, 0x1EB9, 0x8CA8, 0x8CBF, 0x2F01, 0x8CC0, 0x8CC0, 0x235C,
+ 0x8CC1, 0x8CD1, 0x2F19, 0x8CD2, 0x8CD2, 0x2050, 0x8CD3, 0x8CD3, 0x1E67,
+ 0x8CD4, 0x8CD4, 0x2F2A, 0x8CD5, 0x8CD5, 0x23F4, 0x8CD6, 0x8CD8, 0x2F2B,
+ 0x8CD9, 0x8CD9, 0x213E, 0x8CDA, 0x8CF8, 0x2F2E, 0x8CF9, 0x8CF9, 0x1F16,
+ 0x8CFA, 0x8CFE, 0x2F4D, 0x8D40, 0x8D72, 0x2F52, 0x8D73, 0x8D73, 0x2389,
+ 0x8D74, 0x8D74, 0x2F85, 0x8D75, 0x8D75, 0x1EB7, 0x8D76, 0x8D7A, 0x2F86,
+ 0x8D7B, 0x8D7B, 0x21B4, 0x8D7C, 0x8D7E, 0x2F8B, 0x8D80, 0x8D87, 0x2F8E,
+ 0x8D88, 0x8D88, 0x238F, 0x8D89, 0x8D8E, 0x2F96, 0x8D8F, 0x8D8F, 0x1F1A,
+ 0x8D90, 0x8D9D, 0x2F9C, 0x8D9E, 0x8D9E, 0x238B, 0x8D9F, 0x8DB8, 0x2FAA,
+ 0x8DB9, 0x8DB9, 0x238A, 0x8DBA, 0x8DE1, 0x2FC4, 0x8DE2, 0x8DE2, 0x2391,
+ 0x8DE3, 0x8DE3, 0x2FEC, 0x8DE4, 0x8DE4, 0x2271, 0x8DE5, 0x8DE6, 0x2FED,
+ 0x8DE7, 0x8DE7, 0x2388, 0x8DE8, 0x8DF6, 0x2FEF, 0x8DF7, 0x8DF7, 0x238E,
+ 0x8DF8, 0x8DFD, 0x2FFE, 0x8DFE, 0x8DFE, 0x238D, 0x8E40, 0x8E45, 0x3004,
+ 0x8E46, 0x8E46, 0x238C, 0x8E47, 0x8E55, 0x300A, 0x8E56, 0x8E56, 0x2390,
+ 0x8E57, 0x8E57, 0x3019, 0x8E58, 0x8E58, 0x2033, 0x8E59, 0x8E59, 0x301A,
+ 0x8E5A, 0x8E5A, 0x223C, 0x8E5B, 0x8E67, 0x301B, 0x8E68, 0x8E68, 0x1FE9,
+ 0x8E69, 0x8E6D, 0x3028, 0x8E6E, 0x8E6E, 0x2055, 0x8E6F, 0x8E6F, 0x302D,
+ 0x8E70, 0x8E70, 0x2392, 0x8E71, 0x8E7E, 0x302E, 0x8E80, 0x8E80, 0x2324,
+ 0x8E81, 0x8E9A, 0x303C, 0x8E9B, 0x8E9B, 0x2143, 0x8E9C, 0x8E9E, 0x3056,
+ 0x8E9F, 0x8E9F, 0x2129, 0x8EA0, 0x8EA3, 0x3059, 0x8EA4, 0x8EA4, 0x2277,
+ 0x8EA5, 0x8EA6, 0x305D, 0x8EA7, 0x8EA7, 0x1EA7, 0x8EA8, 0x8EAB, 0x305F,
+ 0x8EAC, 0x8EAC, 0x2285, 0x8EAD, 0x8EAD, 0x3063, 0x8EAE, 0x8EAE, 0x2384,
+ 0x8EAF, 0x8EBC, 0x3064, 0x8EBD, 0x8EBD, 0x2387, 0x8EBE, 0x8EBE, 0x2386,
+ 0x8EBF, 0x8EC2, 0x3072, 0x8EC3, 0x8EC3, 0x2290, 0x8EC4, 0x8EC4, 0x3076,
+ 0x8EC5, 0x8EC5, 0x1E44, 0x8EC6, 0x8ECC, 0x3077, 0x8ECD, 0x8ECD, 0x1E32,
+ 0x8ECE, 0x8ECE, 0x2385, 0x8ECF, 0x8ED5, 0x307E, 0x8ED6, 0x8ED6, 0x1F13,
+ 0x8ED7, 0x8ED7, 0x1F73, 0x8ED8, 0x8EEB, 0x3085, 0x8EEC, 0x8EEC, 0x1FE0,
+ 0x8EED, 0x8EFE, 0x3099, 0x8F40, 0x8F51, 0x30AB, 0x8F52, 0x8F52, 0x2087,
+ 0x8F53, 0x8F53, 0x1E78, 0x8F54, 0x8F54, 0x23AE, 0x8F55, 0x8F55, 0x1EF6,
+ 0x8F56, 0x8F56, 0x1F31, 0x8F57, 0x8F5C, 0x30BD, 0x8F5D, 0x8F5D, 0x2045,
+ 0x8F5E, 0x8F63, 0x30C3, 0x8F64, 0x8F64, 0x2178, 0x8F65, 0x8F7E, 0x30C9,
+ 0x8F80, 0x8F85, 0x30E3, 0x8F86, 0x8F86, 0x23F5, 0x8F87, 0x8F87, 0x30E9,
+ 0x8F88, 0x8F88, 0x2275, 0x8F89, 0x8F94, 0x30EA, 0x8F95, 0x8F95, 0x266E,
+ 0x8F96, 0x8F96, 0x30F6, 0x8F97, 0x8F97, 0x1EB0, 0x8F98, 0x8F9A, 0x30F7,
+ 0x8F9B, 0x8F9B, 0x2083, 0x8F9C, 0x8F9C, 0x30FA, 0x8F9D, 0x8F9D, 0x2188,
+ 0x8F9E, 0x8FA0, 0x30FB, 0x8FA1, 0x8FA1, 0x267C, 0x8FA2, 0x8FBC, 0x30FE,
+ 0x8FBD, 0x8FBD, 0x1FC5, 0x8FBE, 0x8FC3, 0x3119, 0x8FC4, 0x8FC4, 0x1EA1,
+ 0x8FC5, 0x8FC5, 0x311F, 0x8FC6, 0x8FC6, 0x2393, 0x8FC7, 0x8FCC, 0x3120,
+ 0x8FCD, 0x8FCD, 0x1F0B, 0x8FCE, 0x8FD7, 0x3126, 0x8FD8, 0x8FD8, 0x1E7C,
+ 0x8FD9, 0x8FFE, 0x3130, 0x9040, 0x907E, 0x3156, 0x9080, 0x909C, 0x3195,
+ 0x909D, 0x909D, 0x23B4, 0x909E, 0x909E, 0x207E, 0x909F, 0x90B9, 0x31B2,
+ 0x90BA, 0x90BA, 0x1EE3, 0x90BB, 0x90BF, 0x31CD, 0x90C0, 0x90C0, 0x2095,
+ 0x90C1, 0x90C1, 0x23BB, 0x90C2, 0x90C4, 0x31D2, 0x90C5, 0x90C5, 0x23B9,
+ 0x90C6, 0x90DA, 0x31D5, 0x90DB, 0x90DB, 0x1E28, 0x90DC, 0x90DC, 0x23BD,
+ 0x90DD, 0x90EC, 0x31EA, 0x90ED, 0x90ED, 0x23B5, 0x90EE, 0x90EF, 0x31FA,
+ 0x90F0, 0x90F0, 0x23BA, 0x90F1, 0x90F6, 0x31FC, 0x90F7, 0x90F7, 0x23B3,
+ 0x90F8, 0x90FE, 0x3202, 0x9140, 0x9141, 0x3209, 0x9142, 0x9142, 0x2162,
+ 0x9143, 0x914A, 0x320B, 0x914B, 0x914B, 0x1E5E, 0x914C, 0x914C, 0x3213,
+ 0x914D, 0x914D, 0x1E5D, 0x914E, 0x9150, 0x3214, 0x9151, 0x9151, 0x23B7,
+ 0x9152, 0x9153, 0x3217, 0x9154, 0x9154, 0x1F2F, 0x9155, 0x9155, 0x24DF,
+ 0x9156, 0x9158, 0x3219, 0x9159, 0x9159, 0x23B2, 0x915A, 0x915A, 0x214E,
+ 0x915B, 0x915C, 0x321C, 0x915D, 0x915D, 0x2052, 0x915E, 0x9160, 0x321E,
+ 0x9161, 0x9161, 0x23BC, 0x9162, 0x9162, 0x3221, 0x9163, 0x9163, 0x20EB,
+ 0x9164, 0x916D, 0x3222, 0x916E, 0x916E, 0x2232, 0x916F, 0x9175, 0x322C,
+ 0x9176, 0x9176, 0x1E3F, 0x9177, 0x9179, 0x3233, 0x917A, 0x917A, 0x201B,
+ 0x917B, 0x917B, 0x20BC, 0x917C, 0x917C, 0x23BE, 0x917D, 0x917E, 0x3236,
+ 0x9180, 0x9183, 0x3238, 0x9184, 0x9184, 0x1EAE, 0x9185, 0x918C, 0x323C,
+ 0x918D, 0x918D, 0x1EFB, 0x918E, 0x9190, 0x3244, 0x9191, 0x9191, 0x2089,
+ 0x9192, 0x9192, 0x3247, 0x9193, 0x9193, 0x23B1, 0x9194, 0x9196, 0x3248,
+ 0x9197, 0x9197, 0x21C4, 0x9198, 0x919A, 0x324B, 0x919B, 0x919B, 0x2214,
+ 0x919C, 0x91A8, 0x324E, 0x91A9, 0x91A9, 0x1FDE, 0x91AA, 0x91AA, 0x2223,
+ 0x91AB, 0x91AB, 0x23B6, 0x91AC, 0x91B9, 0x325B, 0x91BA, 0x91BA, 0x268C,
+ 0x91BB, 0x91BB, 0x24DE, 0x91BC, 0x91BE, 0x3269, 0x91BF, 0x91BF, 0x24E0,
+ 0x91C0, 0x91C2, 0x326C, 0x91C3, 0x91C3, 0x23B8, 0x91C4, 0x91CC, 0x326F,
+ 0x91CD, 0x91CD, 0x1E81, 0x91CE, 0x91CF, 0x3278, 0x91D0, 0x91D0, 0x1FFE,
+ 0x91D1, 0x91D1, 0x1F51, 0x91D2, 0x91D2, 0x21E1, 0x91D3, 0x91D3, 0x327A,
+ 0x91D4, 0x91D4, 0x23B0, 0x91D5, 0x91D5, 0x327B, 0x91D6, 0x91D6, 0x1FCE,
+ 0x91D7, 0x91D7, 0x327C, 0x91D8, 0x91D8, 0x211E, 0x91D9, 0x91D9, 0x2021,
+ 0x91DA, 0x91DE, 0x327D, 0x91DF, 0x91DF, 0x24E1, 0x91E0, 0x91E1, 0x3282,
+ 0x91E2, 0x91E2, 0x24A3, 0x91E3, 0x91E9, 0x3284, 0x91EA, 0x91EA, 0x24A4,
+ 0x91EB, 0x91EF, 0x328B, 0x91F0, 0x91F0, 0x2273, 0x91F1, 0x91F1, 0x3290,
+ 0x91F2, 0x91F2, 0x21B0, 0x91F3, 0x91FE, 0x3291, 0x9240, 0x927E, 0x329D,
+ 0x9280, 0x92B5, 0x32DC, 0x92B6, 0x92B6, 0x21D1, 0x92B7, 0x92CD, 0x3312,
+ 0x92CE, 0x92CE, 0x211C, 0x92CF, 0x92CF, 0x3329, 0x92D0, 0x92D0, 0x235D,
+ 0x92D1, 0x92D3, 0x332A, 0x92D4, 0x92D4, 0x2682, 0x92D5, 0x92DE, 0x332D,
+ 0x92DF, 0x92DF, 0x210D, 0x92E0, 0x92E0, 0x205A, 0x92E1, 0x92FD, 0x3337,
+ 0x92FE, 0x92FE, 0x1F8D, 0x9340, 0x934F, 0x3354, 0x9350, 0x9350, 0x21FF,
+ 0x9351, 0x935C, 0x3364, 0x935D, 0x935D, 0x1F58, 0x935E, 0x936F, 0x3370,
+ 0x9370, 0x9370, 0x215B, 0x9371, 0x9375, 0x3382, 0x9376, 0x9376, 0x1EB6,
+ 0x9377, 0x937E, 0x3387, 0x9380, 0x938B, 0x338F, 0x938C, 0x938C, 0x20DB,
+ 0x938D, 0x939C, 0x339B, 0x939D, 0x939D, 0x2360, 0x939E, 0x93A4, 0x33AB,
+ 0x93A5, 0x93A5, 0x2361, 0x93A6, 0x93A6, 0x33B2, 0x93A7, 0x93A7, 0x2040,
+ 0x93A8, 0x93B3, 0x33B3, 0x93B4, 0x93B4, 0x228E, 0x93B5, 0x93B7, 0x33BF,
+ 0x93B8, 0x93B8, 0x1FDF, 0x93B9, 0x93BA, 0x33C2, 0x93BB, 0x93BB, 0x235E,
+ 0x93BC, 0x93BC, 0x33C4, 0x93BD, 0x93BD, 0x1E6A, 0x93BE, 0x93C5, 0x33C5,
+ 0x93C6, 0x93C6, 0x2002, 0x93C7, 0x93CE, 0x33CD, 0x93CF, 0x93CF, 0x2093,
+ 0x93D0, 0x93D6, 0x33D5, 0x93D7, 0x93D7, 0x235F, 0x93D8, 0x93DA, 0x33DC,
+ 0x93DB, 0x93DB, 0x1EAC, 0x93DC, 0x93DC, 0x1E54, 0x93DD, 0x93E0, 0x33DF,
+ 0x93E1, 0x93E1, 0x1F08, 0x93E2, 0x93E3, 0x33E3, 0x93E4, 0x93E4, 0x20C0,
+ 0x93E5, 0x93E5, 0x2362, 0x93E6, 0x93E8, 0x33E5, 0x93E9, 0x93E9, 0x2160,
+ 0x93EA, 0x93EA, 0x33E8, 0x93EB, 0x93EB, 0x219D, 0x93EC, 0x93EC, 0x1F8E,
+ 0x93ED, 0x93ED, 0x222D, 0x93EE, 0x93EE, 0x33E9, 0x93EF, 0x93EF, 0x2047,
+ 0x93F0, 0x93F0, 0x33EA, 0x93F1, 0x93F1, 0x2262, 0x93F2, 0x93F3, 0x33EB,
+ 0x93F4, 0x93F4, 0x1F67, 0x93F5, 0x93F5, 0x1EB2, 0x93F6, 0x93F9, 0x33ED,
+ 0x93FA, 0x93FA, 0x1EA9, 0x93FB, 0x93FD, 0x33F1, 0x93FE, 0x93FE, 0x1FCC,
+ 0x9440, 0x9443, 0x33F4, 0x9444, 0x9444, 0x1F72, 0x9445, 0x944C, 0x33F8,
+ 0x944D, 0x944D, 0x2098, 0x944E, 0x944F, 0x3400, 0x9450, 0x9450, 0x1E52,
+ 0x9451, 0x9451, 0x20A4, 0x9452, 0x9452, 0x1F1C, 0x9453, 0x9453, 0x228F,
+ 0x9454, 0x9454, 0x3402, 0x9455, 0x9455, 0x1FED, 0x9456, 0x9457, 0x3403,
+ 0x9458, 0x9458, 0x2365, 0x9459, 0x945A, 0x3405, 0x945B, 0x945B, 0x1E2D,
+ 0x945C, 0x945C, 0x2152, 0x945D, 0x945D, 0x2366, 0x945E, 0x945E, 0x3407,
+ 0x945F, 0x945F, 0x20FA, 0x9460, 0x9463, 0x3408, 0x9464, 0x9464, 0x2363,
+ 0x9465, 0x9465, 0x340C, 0x9466, 0x9466, 0x209A, 0x9467, 0x946D, 0x340D,
+ 0x946E, 0x946E, 0x203C, 0x946F, 0x9471, 0x3414, 0x9472, 0x9472, 0x1FF6,
+ 0x9473, 0x9473, 0x3417, 0x9474, 0x9474, 0x2364, 0x9475, 0x9475, 0x3418,
+ 0x9476, 0x9476, 0x1E69, 0x9477, 0x9477, 0x3419, 0x9478, 0x9478, 0x2367,
+ 0x9479, 0x9479, 0x341A, 0x947A, 0x947A, 0x211D, 0x947B, 0x947E, 0x341B,
+ 0x9480, 0x9480, 0x2259, 0x9481, 0x9481, 0x2056, 0x9482, 0x9482, 0x2163,
+ 0x9483, 0x9486, 0x341F, 0x9487, 0x9487, 0x1FA9, 0x9488, 0x9488, 0x1FFC,
+ 0x9489, 0x94A0, 0x3423, 0x94A1, 0x94A1, 0x1E2E, 0x94A2, 0x94B2, 0x343B,
+ 0x94B3, 0x94B3, 0x1EBC, 0x94B4, 0x94B4, 0x344C, 0x94B5, 0x94B5, 0x2142,
+ 0x94B6, 0x94BE, 0x344D, 0x94BF, 0x94BF, 0x201E, 0x94C0, 0x94C0, 0x1E43,
+ 0x94C1, 0x94CB, 0x3456, 0x94CC, 0x94CC, 0x24D4, 0x94CD, 0x94D7, 0x3461,
+ 0x94D8, 0x94D8, 0x226F, 0x94D9, 0x94DF, 0x346C, 0x94E0, 0x94E0, 0x1ED7,
+ 0x94E1, 0x94FE, 0x3473, 0x9540, 0x9571, 0x3491, 0x9572, 0x9572, 0x212D,
+ 0x9573, 0x957E, 0x34C3, 0x9580, 0x9582, 0x34CF, 0x9583, 0x9583, 0x229B,
+ 0x9584, 0x959D, 0x34D2, 0x959E, 0x959E, 0x2256, 0x959F, 0x959F, 0x24A8,
+ 0x95A0, 0x95B2, 0x34EC, 0x95B3, 0x95B3, 0x1E79, 0x95B4, 0x95B9, 0x34FF,
+ 0x95BA, 0x95BA, 0x225A, 0x95BB, 0x95CE, 0x3505, 0x95CF, 0x95CF, 0x24A7,
+ 0x95D0, 0x95D0, 0x3519, 0x95D1, 0x95D1, 0x2686, 0x95D2, 0x95D2, 0x24A6,
+ 0x95D3, 0x95D3, 0x351A, 0x95D4, 0x95D4, 0x21CE, 0x95D5, 0x95E0, 0x351B,
+ 0x95E1, 0x95E1, 0x24A9, 0x95E2, 0x95E6, 0x3527, 0x95E7, 0x95E7, 0x1FE7,
+ 0x95E8, 0x95F0, 0x352C, 0x95F1, 0x95F1, 0x2112, 0x95F2, 0x95F7, 0x3535,
+ 0x95F8, 0x95F8, 0x213C, 0x95F9, 0x95FD, 0x353B, 0x95FE, 0x95FE, 0x1F5C,
+ 0x9640, 0x9655, 0x3540, 0x9656, 0x9656, 0x24C4, 0x9657, 0x967B, 0x3556,
+ 0x967C, 0x967C, 0x1ECC, 0x967D, 0x967E, 0x357B, 0x9680, 0x96FE, 0x357D,
+ 0x9740, 0x9766, 0x35FC, 0x9767, 0x9767, 0x246A, 0x9768, 0x976B, 0x3623,
+ 0x976C, 0x976C, 0x2175, 0x976D, 0x976D, 0x3627, 0x976E, 0x976E, 0x246D,
+ 0x976F, 0x977E, 0x3628, 0x9780, 0x9795, 0x3638, 0x9796, 0x9796, 0x246B,
+ 0x9797, 0x9797, 0x225F, 0x9798, 0x979C, 0x364E, 0x979D, 0x979D, 0x1ECE,
+ 0x979E, 0x97A2, 0x3653, 0x97A3, 0x97A3, 0x2272, 0x97A4, 0x97BE, 0x3658,
+ 0x97BF, 0x97BF, 0x2473, 0x97C0, 0x97ED, 0x3673, 0x97EE, 0x97EE, 0x21FE,
+ 0x97EF, 0x97F6, 0x36A1, 0x97F7, 0x97F7, 0x1EFE, 0x97F8, 0x97FE, 0x36A9,
+ 0x9840, 0x9844, 0x36B0, 0x9845, 0x9845, 0x2475, 0x9846, 0x9848, 0x36B5,
+ 0x9849, 0x9849, 0x220A, 0x984A, 0x984E, 0x36B8, 0x984F, 0x984F, 0x1F6F,
+ 0x9850, 0x9870, 0x36BD, 0x9871, 0x9871, 0x2468, 0x9872, 0x9872, 0x36DE,
+ 0x9873, 0x9873, 0x2100, 0x9874, 0x987E, 0x36DF, 0x9880, 0x9880, 0x36EA,
+ 0x9881, 0x9881, 0x2476, 0x9882, 0x988A, 0x36EB, 0x988B, 0x988B, 0x1F27,
+ 0x988C, 0x988C, 0x20D7, 0x988D, 0x989F, 0x36F4, 0x98A0, 0x98A0, 0x247C,
+ 0x98A1, 0x98A9, 0x3707, 0x98AA, 0x98AA, 0x1FA1, 0x98AB, 0x98B5, 0x3710,
+ 0x98B6, 0x98B6, 0x22AA, 0x98B7, 0x98B7, 0x2005, 0x98B8, 0x98B9, 0x371B,
+ 0x98BA, 0x98BA, 0x246C, 0x98BB, 0x98C6, 0x371D, 0x98C7, 0x98C7, 0x203E,
+ 0x98C8, 0x98CA, 0x3729, 0x98CB, 0x98CB, 0x1E4C, 0x98CC, 0x98CF, 0x372C,
+ 0x98D0, 0x98D0, 0x213A, 0x98D1, 0x98D2, 0x3730, 0x98D3, 0x98D3, 0x2204,
+ 0x98D4, 0x98E2, 0x3732, 0x98E3, 0x98E3, 0x20C3, 0x98E4, 0x98E4, 0x2140,
+ 0x98E5, 0x98E5, 0x2477, 0x98E6, 0x98EE, 0x3741, 0x98EF, 0x98EF, 0x2474,
+ 0x98F0, 0x98F1, 0x374A, 0x98F2, 0x98F2, 0x20DD, 0x98F3, 0x98FE, 0x374C,
+ 0x9940, 0x9942, 0x3758, 0x9943, 0x9943, 0x1F68, 0x9944, 0x9944, 0x375B,
+ 0x9945, 0x9945, 0x2185, 0x9946, 0x9965, 0x375C, 0x9966, 0x9966, 0x2472,
+ 0x9967, 0x996D, 0x377C, 0x996E, 0x996E, 0x1EB5, 0x996F, 0x9974, 0x3783,
+ 0x9975, 0x9975, 0x2478, 0x9976, 0x9979, 0x3789, 0x997A, 0x997A, 0x1F8B,
+ 0x997B, 0x997B, 0x2484, 0x997C, 0x997E, 0x378D, 0x9980, 0x9984, 0x3790,
+ 0x9985, 0x9985, 0x2699, 0x9986, 0x9988, 0x3795, 0x9989, 0x9989, 0x2482,
+ 0x998A, 0x998D, 0x3798, 0x998E, 0x998E, 0x20A1, 0x998F, 0x9990, 0x379C,
+ 0x9991, 0x9991, 0x1F92, 0x9992, 0x9998, 0x379E, 0x9999, 0x9999, 0x1F38,
+ 0x999A, 0x99A8, 0x37A5, 0x99A9, 0x99A9, 0x2485, 0x99AA, 0x99AF, 0x37B4,
+ 0x99B0, 0x99B0, 0x2480, 0x99B1, 0x99B1, 0x246E, 0x99B2, 0x99B2, 0x37BA,
+ 0x99B3, 0x99B3, 0x247B, 0x99B4, 0x99B4, 0x2486, 0x99B5, 0x99B5, 0x2471,
+ 0x99B6, 0x99BC, 0x37BB, 0x99BD, 0x99BD, 0x2483, 0x99BE, 0x99BE, 0x2470,
+ 0x99BF, 0x99BF, 0x37C2, 0x99C0, 0x99C0, 0x2469, 0x99C1, 0x99C1, 0x37C3,
+ 0x99C2, 0x99C2, 0x247F, 0x99C3, 0x99C8, 0x37C4, 0x99C9, 0x99C9, 0x246F,
+ 0x99CA, 0x99CD, 0x37CA, 0x99CE, 0x99CE, 0x2481, 0x99CF, 0x99D0, 0x37CE,
+ 0x99D1, 0x99D1, 0x2220, 0x99D2, 0x99D9, 0x37D0, 0x99DA, 0x99DA, 0x1FF5,
+ 0x99DB, 0x99DF, 0x37D8, 0x99E0, 0x99E0, 0x20F4, 0x99E1, 0x99E4, 0x37DD,
+ 0x99E5, 0x99E5, 0x247D, 0x99E6, 0x99E7, 0x37E1, 0x99E8, 0x99E8, 0x2479,
+ 0x99E9, 0x99EB, 0x37E3, 0x99EC, 0x99EC, 0x247E, 0x99ED, 0x99F3, 0x37E6,
+ 0x99F4, 0x99F4, 0x247A, 0x99F5, 0x99FE, 0x37ED, 0x9A40, 0x9A49, 0x37F7,
+ 0x9A4A, 0x9A4A, 0x20E3, 0x9A4B, 0x9A56, 0x3801, 0x9A57, 0x9A57, 0x20AD,
+ 0x9A58, 0x9A64, 0x380D, 0x9A65, 0x9A65, 0x24CB, 0x9A66, 0x9A66, 0x381A,
+ 0x9A67, 0x9A67, 0x1F53, 0x9A68, 0x9A70, 0x381B, 0x9A71, 0x9A71, 0x2159,
+ 0x9A72, 0x9A75, 0x3824, 0x9A76, 0x9A76, 0x2013, 0x9A77, 0x9A77, 0x1F33,
+ 0x9A78, 0x9A7E, 0x3828, 0x9A80, 0x9A87, 0x382F, 0x9A88, 0x9A88, 0x1E5C,
+ 0x9A89, 0x9A8B, 0x3837, 0x9A8C, 0x9A8C, 0x2488, 0x9A8D, 0x9A90, 0x383A,
+ 0x9A91, 0x9A91, 0x2487, 0x9A92, 0x9A96, 0x383E, 0x9A97, 0x9A97, 0x248A,
+ 0x9A98, 0x9A99, 0x3843, 0x9A9A, 0x9A9A, 0x2489, 0x9A9B, 0x9A9B, 0x248B,
+ 0x9A9C, 0x9A9D, 0x3845, 0x9A9E, 0x9A9E, 0x1F83, 0x9A9F, 0x9AA1, 0x3847,
+ 0x9AA2, 0x9AA2, 0x210F, 0x9AA3, 0x9AA3, 0x1FDB, 0x9AA4, 0x9AA9, 0x384A,
+ 0x9AAA, 0x9AAA, 0x20AF, 0x9AAB, 0x9ACF, 0x3850, 0x9AD0, 0x9AD0, 0x24C0,
+ 0x9AD1, 0x9AD5, 0x3875, 0x9AD6, 0x9AD6, 0x226D, 0x9AD7, 0x9AD9, 0x387A,
+ 0x9ADA, 0x9ADA, 0x24C1, 0x9ADB, 0x9AE1, 0x387D, 0x9AE2, 0x9AE2, 0x20CA,
+ 0x9AE3, 0x9AE3, 0x3884, 0x9AE4, 0x9AE4, 0x20E7, 0x9AE5, 0x9AE5, 0x24C2,
+ 0x9AE6, 0x9AFE, 0x3885, 0x9B40, 0x9B7E, 0x389E, 0x9B80, 0x9BD0, 0x38DD,
+ 0x9BD1, 0x9BD1, 0x23DC, 0x9BD2, 0x9BDB, 0x392E, 0x9BDC, 0x9BDC, 0x23DB,
+ 0x9BDD, 0x9BFE, 0x3938, 0x9C40, 0x9C52, 0x395A, 0x9C53, 0x9C53, 0x205E,
+ 0x9C54, 0x9C58, 0x396D, 0x9C59, 0x9C59, 0x2244, 0x9C5A, 0x9C5A, 0x23E2,
+ 0x9C5B, 0x9C5B, 0x3972, 0x9C5C, 0x9C5C, 0x20D4, 0x9C5D, 0x9C74, 0x3973,
+ 0x9C75, 0x9C75, 0x219F, 0x9C76, 0x9C78, 0x398B, 0x9C79, 0x9C79, 0x1E66,
+ 0x9C7A, 0x9C7E, 0x398E, 0x9C80, 0x9C85, 0x3993, 0x9C86, 0x9C86, 0x1F63,
+ 0x9C87, 0x9C9C, 0x3999, 0x9C9D, 0x9C9D, 0x23DD, 0x9C9E, 0x9CAA, 0x39AF,
+ 0x9CAB, 0x9CAB, 0x216B, 0x9CAC, 0x9CC9, 0x39BC, 0x9CCA, 0x9CCA, 0x22B5,
+ 0x9CCB, 0x9CCE, 0x39DA, 0x9CCF, 0x9CCF, 0x1F26, 0x9CD0, 0x9CE5, 0x39DE,
+ 0x9CE6, 0x9CE6, 0x1E63, 0x9CE7, 0x9CE7, 0x2088, 0x9CE8, 0x9CEB, 0x39F4,
+ 0x9CEC, 0x9CEC, 0x1EBD, 0x9CED, 0x9CED, 0x39F8, 0x9CEE, 0x9CEE, 0x2341,
+ 0x9CEF, 0x9CFA, 0x39F9, 0x9CFB, 0x9CFB, 0x1F4B, 0x9CFC, 0x9CFD, 0x3A05,
+ 0x9CFE, 0x9CFE, 0x2292, 0x9D40, 0x9D41, 0x3A07, 0x9D42, 0x9D42, 0x2124,
+ 0x9D43, 0x9D45, 0x3A09, 0x9D46, 0x9D46, 0x2048, 0x9D47, 0x9D47, 0x23E0,
+ 0x9D48, 0x9D4C, 0x3A0C, 0x9D4D, 0x9D4D, 0x2077, 0x9D4E, 0x9D4E, 0x3A11,
+ 0x9D4F, 0x9D4F, 0x223A, 0x9D50, 0x9D60, 0x3A12, 0x9D61, 0x9D61, 0x20B1,
+ 0x9D62, 0x9D67, 0x3A23, 0x9D68, 0x9D68, 0x1F41, 0x9D69, 0x9D69, 0x201C,
+ 0x9D6A, 0x9D6D, 0x3A29, 0x9D6E, 0x9D6E, 0x22B8, 0x9D6F, 0x9D70, 0x3A2D,
+ 0x9D71, 0x9D71, 0x2276, 0x9D72, 0x9D74, 0x3A2F, 0x9D75, 0x9D75, 0x1F9B,
+ 0x9D76, 0x9D7A, 0x3A32, 0x9D7B, 0x9D7B, 0x1F9F, 0x9D7C, 0x9D7C, 0x3A37,
+ 0x9D7D, 0x9D7D, 0x25CA, 0x9D7E, 0x9D7E, 0x3A38, 0x9D80, 0x9D89, 0x3A39,
+ 0x9D8A, 0x9D8A, 0x20BE, 0x9D8B, 0x9D8C, 0x3A43, 0x9D8D, 0x9D8D, 0x1FB4,
+ 0x9D8E, 0x9D90, 0x3A45, 0x9D91, 0x9D91, 0x23D7, 0x9D92, 0x9D98, 0x3A48,
+ 0x9D99, 0x9D99, 0x2105, 0x9D9A, 0x9DA0, 0x3A4F, 0x9DA1, 0x9DA1, 0x23E1,
+ 0x9DA2, 0x9DA2, 0x1FEC, 0x9DA3, 0x9DA6, 0x3A56, 0x9DA7, 0x9DA7, 0x23EA,
+ 0x9DA8, 0x9DAB, 0x3A5A, 0x9DAC, 0x9DAC, 0x23E3, 0x9DAD, 0x9DAD, 0x210E,
+ 0x9DAE, 0x9DB1, 0x3A5E, 0x9DB2, 0x9DB2, 0x1FA6, 0x9DB3, 0x9DB3, 0x2004,
+ 0x9DB4, 0x9DBD, 0x3A62, 0x9DBE, 0x9DBE, 0x1F9D, 0x9DBF, 0x9DC5, 0x3A6C,
+ 0x9DC6, 0x9DC6, 0x23E5, 0x9DC7, 0x9DC8, 0x3A73, 0x9DC9, 0x9DC9, 0x2264,
+ 0x9DCA, 0x9DCC, 0x3A75, 0x9DCD, 0x9DCD, 0x24E2, 0x9DCE, 0x9DD1, 0x3A78,
+ 0x9DD2, 0x9DD2, 0x23DE, 0x9DD3, 0x9DD4, 0x3A7C, 0x9DD5, 0x9DD5, 0x1EC4,
+ 0x9DD6, 0x9DE0, 0x3A7E, 0x9DE1, 0x9DE1, 0x22B6, 0x9DE2, 0x9DE2, 0x20A9,
+ 0x9DE3, 0x9DF0, 0x3A89, 0x9DF1, 0x9DF1, 0x212B, 0x9DF2, 0x9DF3, 0x3A97,
+ 0x9DF4, 0x9DF4, 0x20A5, 0x9DF5, 0x9DF6, 0x3A99, 0x9DF7, 0x9DF7, 0x268B,
+ 0x9DF8, 0x9DF9, 0x3A9B, 0x9DFA, 0x9DFA, 0x1F76, 0x9DFB, 0x9DFC, 0x3A9D,
+ 0x9DFD, 0x9DFD, 0x216D, 0x9DFE, 0x9DFE, 0x3A9F, 0x9E40, 0x9E44, 0x3AA0,
+ 0x9E45, 0x9E45, 0x2001, 0x9E46, 0x9E47, 0x3AA5, 0x9E48, 0x9E48, 0x2191,
+ 0x9E49, 0x9E49, 0x1E50, 0x9E4A, 0x9E51, 0x3AA7, 0x9E52, 0x9E52, 0x1F9C,
+ 0x9E53, 0x9E53, 0x3AAF, 0x9E54, 0x9E54, 0x23DA, 0x9E55, 0x9E55, 0x3AB0,
+ 0x9E56, 0x9E56, 0x2053, 0x9E57, 0x9E5C, 0x3AB1, 0x9E5D, 0x9E5D, 0x23E9,
+ 0x9E5E, 0x9E5E, 0x23E4, 0x9E5F, 0x9E60, 0x3AB7, 0x9E61, 0x9E61, 0x21D5,
+ 0x9E62, 0x9E62, 0x3AB9, 0x9E63, 0x9E63, 0x23E6, 0x9E64, 0x9E66, 0x3ABA,
+ 0x9E67, 0x9E67, 0x23DF, 0x9E68, 0x9E6B, 0x3ABD, 0x9E6C, 0x9E6C, 0x1E4F,
+ 0x9E6D, 0x9E6E, 0x3AC1, 0x9E6F, 0x9E6F, 0x23D9, 0x9E70, 0x9E71, 0x3AC3,
+ 0x9E72, 0x9E72, 0x2014, 0x9E73, 0x9E73, 0x3AC5, 0x9E74, 0x9E74, 0x23EC,
+ 0x9E75, 0x9E75, 0x23EB, 0x9E76, 0x9E7A, 0x3AC6, 0x9E7B, 0x9E7B, 0x23D8,
+ 0x9E7C, 0x9E7C, 0x23EE, 0x9E7D, 0x9E7E, 0x3ACB, 0x9E80, 0x9E84, 0x3ACD,
+ 0x9E85, 0x9E85, 0x268E, 0x9E86, 0x9E86, 0x3AD2, 0x9E87, 0x9E87, 0x23ED,
+ 0x9E88, 0x9E90, 0x3AD3, 0x9E91, 0x9E91, 0x1FFA, 0x9E92, 0x9E95, 0x3ADC,
+ 0x9E96, 0x9E96, 0x23D6, 0x9E97, 0x9E97, 0x23E8, 0x9E98, 0x9EA1, 0x3AE0,
+ 0x9EA2, 0x9EA2, 0x2106, 0x9EA3, 0x9EA5, 0x3AEA, 0x9EA6, 0x9EA6, 0x200B,
+ 0x9EA7, 0x9EA8, 0x3AED, 0x9EA9, 0x9EA9, 0x2166, 0x9EAA, 0x9EAD, 0x3AEF,
+ 0x9EAE, 0x9EAE, 0x23EF, 0x9EAF, 0x9EB2, 0x3AF3, 0x9EB3, 0x9EB3, 0x2189,
+ 0x9EB4, 0x9EB4, 0x2058, 0x9EB5, 0x9EB6, 0x3AF7, 0x9EB7, 0x9EB7, 0x23E7,
+ 0x9EB8, 0x9EF4, 0x3AF9, 0x9EF5, 0x9EF5, 0x21A3, 0x9EF6, 0x9EFE, 0x3B36,
+ 0x9F40, 0x9F4D, 0x3B3F, 0x9F4E, 0x9F4E, 0x217A, 0x9F4F, 0x9F6E, 0x3B4D,
+ 0x9F6F, 0x9F6F, 0x21A5, 0x9F70, 0x9F7E, 0x3B6D, 0x9F80, 0x9F91, 0x3B7C,
+ 0x9F92, 0x9F92, 0x2022, 0x9F93, 0x9F97, 0x3B8E, 0x9F98, 0x9F98, 0x24D6,
+ 0x9F99, 0x9FA5, 0x3B93, 0x9FA6, 0x9FA6, 0x233A, 0x9FA7, 0x9FA8, 0x3BA0,
+ 0x9FA9, 0x9FA9, 0x1EEE, 0x9FAA, 0x9FAB, 0x3BA2, 0x9FAC, 0x9FAC, 0x24D5,
+ 0x9FAD, 0x9FC8, 0x3BA4, 0x9FC9, 0x9FC9, 0x2228, 0x9FCA, 0x9FCC, 0x3BC0,
+ 0x9FCD, 0x9FCD, 0x24D7, 0x9FCE, 0x9FE0, 0x3BC3, 0x9FE1, 0x9FE1, 0x20FC,
+ 0x9FE2, 0x9FEA, 0x3BD6, 0x9FEB, 0x9FEB, 0x1E87, 0x9FEC, 0x9FED, 0x3BDF,
+ 0x9FEE, 0x9FEE, 0x24D8, 0x9FEF, 0x9FF3, 0x3BE1, 0x9FF4, 0x9FF4, 0x1EBA,
+ 0x9FF5, 0x9FFC, 0x3BE6, 0x9FFD, 0x9FFD, 0x2119, 0x9FFE, 0x9FFE, 0x3BEE,
+ 0xA040, 0xA042, 0x3BEF, 0xA043, 0xA043, 0x216C, 0xA044, 0xA045, 0x3BF2,
+ 0xA046, 0xA046, 0x24D9, 0xA047, 0xA048, 0x3BF4, 0xA049, 0xA049, 0x2227,
+ 0xA04A, 0xA04D, 0x3BF6, 0xA04E, 0xA04E, 0x1E5F, 0xA04F, 0xA053, 0x3BFA,
+ 0xA054, 0xA054, 0x229F, 0xA055, 0xA059, 0x3BFF, 0xA05A, 0xA05A, 0x1F5D,
+ 0xA05B, 0xA060, 0x3C04, 0xA061, 0xA061, 0x1FBC, 0xA062, 0xA062, 0x3C0A,
+ 0xA063, 0xA063, 0x24DA, 0xA064, 0xA070, 0x3C0B, 0xA071, 0xA071, 0x2149,
+ 0xA072, 0xA073, 0x3C18, 0xA074, 0xA074, 0x2046, 0xA075, 0xA07E, 0x3C1A,
+ 0xA080, 0xA080, 0x2000, 0xA081, 0xA090, 0x3C24, 0xA091, 0xA091, 0x2190,
+ 0xA092, 0xA093, 0x3C34, 0xA094, 0xA094, 0x2208, 0xA095, 0xA095, 0x3C36,
+ 0xA096, 0xA096, 0x1EE6, 0xA097, 0xA0A8, 0x3C37, 0xA0A9, 0xA0A9, 0x24C3,
+ 0xA0AA, 0xA0BE, 0x3C49, 0xA0BF, 0xA0BF, 0x20CC, 0xA0C0, 0xA0CD, 0x3C5E,
+ 0xA0CE, 0xA0CE, 0x2340, 0xA0CF, 0xA0D8, 0x3C6C, 0xA0D9, 0xA0D9, 0x1ED1,
+ 0xA0DA, 0xA0DD, 0x3C76, 0xA0DE, 0xA0DE, 0x21AC, 0xA0DF, 0xA0ED, 0x3C7A,
+ 0xA0EE, 0xA0EE, 0x22AF, 0xA0EF, 0xA0FE, 0x3C89, 0xA1A1, 0xA1FE, 0x0060,
+ 0xA2A1, 0xA2AA, 0x26A9, 0xA2B1, 0xA2E2, 0x00BE, 0xA2E5, 0xA2EE, 0x00F0,
+ 0xA2F1, 0xA2FC, 0x00FA, 0xA3A1, 0xA3FE, 0x0106, 0xA4A1, 0xA4F3, 0x0164,
+ 0xA5A1, 0xA5F6, 0x01B7, 0xA6A1, 0xA6B8, 0x020D, 0xA6C1, 0xA6F5, 0x0225,
+ 0xA7A1, 0xA7C1, 0x025A, 0xA7D1, 0xA7F1, 0x027B, 0xA840, 0xA87E, 0x26B3,
+ 0xA880, 0xA895, 0x26F2, 0xA8A1, 0xA8C0, 0x029C, 0xA8C5, 0xA8EA, 0x02BC,
+ 0xA940, 0xA957, 0x2708, 0xA959, 0xA95A, 0x2720, 0xA95C, 0xA95C, 0x2722,
+ 0xA960, 0xA97E, 0x2723, 0xA980, 0xA995, 0x2742, 0xA996, 0xA996, 0x1E17,
+ 0xA9A4, 0xA9EF, 0x02E2, 0xAA40, 0xAA4C, 0x3C99, 0xAA4D, 0xAA4D, 0x21B6,
+ 0xAA4E, 0xAA4E, 0x1E3D, 0xAA4F, 0xAA70, 0x3CA6, 0xAA71, 0xAA71, 0x2235,
+ 0xAA72, 0xAA72, 0x3CC8, 0xAA73, 0xAA73, 0x2397, 0xAA74, 0xAA76, 0x3CC9,
+ 0xAA77, 0xAA77, 0x2395, 0xAA78, 0xAA79, 0x3CCC, 0xAA7A, 0xAA7A, 0x223F,
+ 0xAA7B, 0xAA7B, 0x212A, 0xAA7C, 0xAA7E, 0x3CCE, 0xAA80, 0xAA99, 0x3CD1,
+ 0xAA9A, 0xAA9A, 0x1ED2, 0xAA9B, 0xAA9B, 0x3CEB, 0xAA9C, 0xAA9C, 0x2396,
+ 0xAA9D, 0xAA9D, 0x2398, 0xAA9E, 0xAA9E, 0x3CEC, 0xAA9F, 0xAA9F, 0x20A2,
+ 0xAAA0, 0xAAA0, 0x3CED, 0xAAA1, 0xAAFE, 0x032E, 0xAB40, 0xAB40, 0x1F64,
+ 0xAB41, 0xAB42, 0x3CEE, 0xAB43, 0xAB43, 0x202B, 0xAB44, 0xAB44, 0x3CF0,
+ 0xAB45, 0xAB45, 0x2394, 0xAB46, 0xAB46, 0x2139, 0xAB47, 0xAB47, 0x3CF1,
+ 0xAB48, 0xAB48, 0x215F, 0xAB49, 0xAB49, 0x21C1, 0xAB4A, 0xAB4A, 0x239A,
+ 0xAB4B, 0xAB4C, 0x3CF2, 0xAB4D, 0xAB4D, 0x2399, 0xAB4E, 0xAB7E, 0x3CF4,
+ 0xAB80, 0xABA0, 0x3D25, 0xABA1, 0xABC0, 0x038C, 0xAC40, 0xAC45, 0x3D46,
+ 0xAC46, 0xAC46, 0x21C0, 0xAC47, 0xAC70, 0x3D4C, 0xAC71, 0xAC71, 0x2460,
+ 0xAC72, 0xAC7B, 0x3D76, 0xAC7C, 0xAC7C, 0x245C, 0xAC7D, 0xAC7E, 0x3D80,
+ 0xAC80, 0xAC8C, 0x3D82, 0xAC8D, 0xAC8D, 0x215D, 0xAC8E, 0xAC92, 0x3D8F,
+ 0xAC93, 0xAC93, 0x2225, 0xAC94, 0xAC94, 0x206A, 0xAC95, 0xACA0, 0x3D94,
+ 0xAD40, 0xAD48, 0x3DA0, 0xAD49, 0xAD49, 0x2461, 0xAD4A, 0xAD5D, 0x3DA9,
+ 0xAD5E, 0xAD5E, 0x245B, 0xAD5F, 0xAD60, 0x3DBD, 0xAD61, 0xAD61, 0x2462,
+ 0xAD62, 0xAD67, 0x3DBF, 0xAD68, 0xAD68, 0x1F54, 0xAD69, 0xAD73, 0x3DC5,
+ 0xAD74, 0xAD74, 0x245F, 0xAD75, 0xAD7E, 0x3DD0, 0xAD80, 0xAD81, 0x3DDA,
+ 0xAD82, 0xAD82, 0x20EC, 0xAD83, 0xAD86, 0x3DDC, 0xAD87, 0xAD87, 0x245D,
+ 0xAD88, 0xAD8A, 0x3DE0, 0xAD8B, 0xAD8B, 0x2463, 0xAD8C, 0xAD90, 0x3DE3,
+ 0xAD91, 0xAD91, 0x2464, 0xAD92, 0xADA0, 0x3DE8, 0xAE40, 0xAE53, 0x3DF7,
+ 0xAE54, 0xAE54, 0x24A5, 0xAE55, 0xAE61, 0x3E0B, 0xAE62, 0xAE62, 0x1E70,
+ 0xAE63, 0xAE7E, 0x3E18, 0xAE80, 0xAE80, 0x208F, 0xAE81, 0xAE84, 0x3E34,
+ 0xAE85, 0xAE85, 0x1E42, 0xAE86, 0xAE8A, 0x3E38, 0xAE8B, 0xAE8B, 0x1F4E,
+ 0xAE8C, 0xAE93, 0x3E3D, 0xAE94, 0xAE94, 0x1EB1, 0xAE95, 0xAE9F, 0x3E45,
+ 0xAEA0, 0xAEA0, 0x1E8B, 0xAF40, 0xAF63, 0x3E50, 0xAF64, 0xAF64, 0x1FC6,
+ 0xAF65, 0xAF7A, 0x3E74, 0xAF7B, 0xAF7B, 0x25AE, 0xAF7C, 0xAF7E, 0x3E8A,
+ 0xAF80, 0xAF81, 0x3E8D, 0xAF82, 0xAF82, 0x1F01, 0xAF83, 0xAF83, 0x2200,
+ 0xAF84, 0xAF8D, 0x3E8F, 0xAF8E, 0xAF8E, 0x25B2, 0xAF8F, 0xAF8F, 0x1E97,
+ 0xAF90, 0xAF90, 0x3E99, 0xAF91, 0xAF91, 0x20AB, 0xAF92, 0xAF9B, 0x3E9A,
+ 0xAF9C, 0xAF9C, 0x25B3, 0xAF9D, 0xAF9E, 0x3EA4, 0xAF9F, 0xAF9F, 0x2028,
+ 0xAFA0, 0xAFA0, 0x3EA6, 0xB040, 0xB040, 0x3EA7, 0xB041, 0xB042, 0x25AF,
+ 0xB043, 0xB043, 0x3EA8, 0xB044, 0xB044, 0x25B1, 0xB045, 0xB04E, 0x3EA9,
+ 0xB04F, 0xB04F, 0x25AC, 0xB050, 0xB053, 0x3EB3, 0xB054, 0xB054, 0x1E4E,
+ 0xB055, 0xB056, 0x3EB7, 0xB057, 0xB057, 0x2202, 0xB058, 0xB058, 0x25AB,
+ 0xB059, 0xB059, 0x2286, 0xB05A, 0xB05A, 0x3EB9, 0xB05B, 0xB05B, 0x25AD,
+ 0xB05C, 0xB05C, 0x3EBA, 0xB05D, 0xB05D, 0x25B6, 0xB05E, 0xB05E, 0x3EBB,
+ 0xB05F, 0xB05F, 0x21E3, 0xB060, 0xB061, 0x25B4, 0xB062, 0xB062, 0x222F,
+ 0xB063, 0xB063, 0x2165, 0xB064, 0xB064, 0x25B7, 0xB065, 0xB06B, 0x3EBC,
+ 0xB06C, 0xB06C, 0x1EE9, 0xB06D, 0xB07C, 0x3EC3, 0xB07D, 0xB07D, 0x1E25,
+ 0xB07E, 0xB07E, 0x3ED3, 0xB080, 0xB096, 0x3ED4, 0xB097, 0xB097, 0x25C0,
+ 0xB098, 0xB098, 0x3EEB, 0xB099, 0xB099, 0x229A, 0xB09A, 0xB0A0, 0x3EEC,
+ 0xB0A1, 0xB0FE, 0x03AC, 0xB140, 0xB14A, 0x3EF3, 0xB14B, 0xB14B, 0x226E,
+ 0xB14C, 0xB14C, 0x3EFE, 0xB14D, 0xB14D, 0x1FBD, 0xB14E, 0xB14E, 0x3EFF,
+ 0xB14F, 0xB14F, 0x1F84, 0xB150, 0xB150, 0x20B2, 0xB151, 0xB151, 0x3F00,
+ 0xB152, 0xB152, 0x2043, 0xB153, 0xB17E, 0x3F01, 0xB180, 0xB196, 0x3F2D,
+ 0xB197, 0xB197, 0x2684, 0xB198, 0xB1A0, 0x3F44, 0xB1A1, 0xB1FE, 0x040A,
+ 0xB240, 0xB240, 0x3F4D, 0xB241, 0xB241, 0x24EF, 0xB242, 0xB266, 0x3F4E,
+ 0xB267, 0xB267, 0x24EE, 0xB268, 0xB26C, 0x3F73, 0xB26D, 0xB26D, 0x2074,
+ 0xB26E, 0xB273, 0x3F78, 0xB274, 0xB274, 0x2687, 0xB275, 0xB27E, 0x3F7E,
+ 0xB280, 0xB280, 0x24F0, 0xB281, 0xB288, 0x3F88, 0xB289, 0xB289, 0x268D,
+ 0xB28A, 0xB299, 0x3F90, 0xB29A, 0xB29A, 0x22A0, 0xB29B, 0xB2A0, 0x3FA0,
+ 0xB2A1, 0xB2FE, 0x0468, 0xB340, 0xB342, 0x3FA6, 0xB343, 0xB343, 0x1FAB,
+ 0xB344, 0xB36F, 0x3FA9, 0xB370, 0xB370, 0x26A8, 0xB371, 0xB37E, 0x3FD5,
+ 0xB380, 0xB387, 0x3FE3, 0xB388, 0xB388, 0x24E9, 0xB389, 0xB38B, 0x3FEB,
+ 0xB38C, 0xB38C, 0x24E5, 0xB38D, 0xB38D, 0x3FEE, 0xB38E, 0xB38E, 0x21FA,
+ 0xB38F, 0xB3A0, 0x3FEF, 0xB3A1, 0xB3FE, 0x04C6, 0xB440, 0xB453, 0x4001,
+ 0xB454, 0xB454, 0x2148, 0xB455, 0xB457, 0x4015, 0xB458, 0xB458, 0x24E4,
+ 0xB459, 0xB45D, 0x4018, 0xB45E, 0xB45E, 0x24E6, 0xB45F, 0xB45F, 0x20F7,
+ 0xB460, 0xB460, 0x401D, 0xB461, 0xB461, 0x206B, 0xB462, 0xB474, 0x401E,
+ 0xB475, 0xB475, 0x22A7, 0xB476, 0xB47D, 0x4031, 0xB47E, 0xB47E, 0x24EC,
+ 0xB480, 0xB482, 0x4039, 0xB483, 0xB483, 0x24EB, 0xB484, 0xB488, 0x403C,
+ 0xB489, 0xB489, 0x24E3, 0xB48A, 0xB492, 0x4041, 0xB493, 0xB493, 0x24EA,
+ 0xB494, 0xB4A0, 0x404A, 0xB4A1, 0xB4FE, 0x0524, 0xB540, 0xB540, 0x4057,
+ 0xB541, 0xB541, 0x1E92, 0xB542, 0xB54A, 0x4058, 0xB54B, 0xB54B, 0x1E27,
+ 0xB54C, 0xB555, 0x4061, 0xB556, 0xB556, 0x1FE6, 0xB557, 0xB559, 0x406B,
+ 0xB55A, 0xB55A, 0x24E7, 0xB55B, 0xB55B, 0x2012, 0xB55C, 0xB55C, 0x1EEC,
+ 0xB55D, 0xB560, 0x406E, 0xB561, 0xB561, 0x24E8, 0xB562, 0xB57E, 0x4072,
+ 0xB580, 0xB59B, 0x408F, 0xB59C, 0xB59C, 0x1F66, 0xB59D, 0xB59D, 0x24DC,
+ 0xB59E, 0xB5A0, 0x40AB, 0xB5A1, 0xB5FE, 0x0582, 0xB640, 0xB651, 0x40AE,
+ 0xB652, 0xB652, 0x26A2, 0xB653, 0xB654, 0x40C0, 0xB655, 0xB655, 0x24DD,
+ 0xB656, 0xB658, 0x40C2, 0xB659, 0xB659, 0x200E, 0xB65A, 0xB65A, 0x40C5,
+ 0xB65B, 0xB65B, 0x24DB, 0xB65C, 0xB65C, 0x1EB8, 0xB65D, 0xB67E, 0x40C6,
+ 0xB680, 0xB6A0, 0x40E8, 0xB6A1, 0xB6FE, 0x05E0, 0xB740, 0xB74D, 0x4109,
+ 0xB74E, 0xB74E, 0x2295, 0xB74F, 0xB750, 0x4117, 0xB751, 0xB751, 0x1E80,
+ 0xB752, 0xB758, 0x4119, 0xB759, 0xB759, 0x2677, 0xB75A, 0xB763, 0x4120,
+ 0xB764, 0xB764, 0x2624, 0xB765, 0xB765, 0x1F69, 0xB766, 0xB766, 0x222B,
+ 0xB767, 0xB776, 0x412A, 0xB777, 0xB777, 0x257F, 0xB778, 0xB778, 0x1F5B,
+ 0xB779, 0xB77E, 0x413A, 0xB780, 0xB780, 0x219B, 0xB781, 0xB781, 0x4140,
+ 0xB782, 0xB782, 0x267D, 0xB783, 0xB7A0, 0x4141, 0xB7A1, 0xB7FE, 0x063E,
+ 0xB840, 0xB842, 0x415F, 0xB843, 0xB843, 0x21A0, 0xB844, 0xB844, 0x2186,
+ 0xB845, 0xB845, 0x4162, 0xB846, 0xB846, 0x20ED, 0xB847, 0xB84C, 0x4163,
+ 0xB84D, 0xB84D, 0x25B9, 0xB84E, 0xB850, 0x4169, 0xB851, 0xB851, 0x1FEA,
+ 0xB852, 0xB859, 0x416C, 0xB85A, 0xB85A, 0x1EA4, 0xB85B, 0xB85B, 0x20E1,
+ 0xB85C, 0xB85C, 0x4174, 0xB85D, 0xB85D, 0x25B8, 0xB85E, 0xB85E, 0x2260,
+ 0xB85F, 0xB85F, 0x4175, 0xB860, 0xB860, 0x20E2, 0xB861, 0xB876, 0x4176,
+ 0xB877, 0xB877, 0x2141, 0xB878, 0xB87E, 0x418C, 0xB880, 0xB881, 0x4193,
+ 0xB882, 0xB882, 0x1FC7, 0xB883, 0xB8A0, 0x4195, 0xB8A1, 0xB8FE, 0x069C,
+ 0xB940, 0xB94F, 0x41B3, 0xB950, 0xB950, 0x1E41, 0xB951, 0xB960, 0x41C3,
+ 0xB961, 0xB961, 0x25E4, 0xB962, 0xB97A, 0x41D3, 0xB97B, 0xB97B, 0x1F86,
+ 0xB97C, 0xB97E, 0x41EC, 0xB980, 0xB99C, 0x41EF, 0xB99D, 0xB99D, 0x1FB3,
+ 0xB99E, 0xB99F, 0x420C, 0xB9A0, 0xB9A0, 0x1EEF, 0xB9A1, 0xB9FE, 0x06FA,
+ 0xBA40, 0xBA41, 0x420E, 0xBA42, 0xBA42, 0x22A4, 0xBA43, 0xBA43, 0x4210,
+ 0xBA44, 0xBA44, 0x25E8, 0xBA45, 0xBA55, 0x4211, 0xBA56, 0xBA56, 0x25E3,
+ 0xBA57, 0xBA58, 0x4222, 0xBA59, 0xBA59, 0x2111, 0xBA5A, 0xBA5F, 0x4224,
+ 0xBA60, 0xBA60, 0x25E6, 0xBA61, 0xBA69, 0x422A, 0xBA6A, 0xBA6A, 0x25E7,
+ 0xBA6B, 0xBA73, 0x4233, 0xBA74, 0xBA74, 0x2041, 0xBA75, 0xBA7E, 0x423C,
+ 0xBA80, 0xBA83, 0x4246, 0xBA84, 0xBA84, 0x25EA, 0xBA85, 0xBA85, 0x424A,
+ 0xBA86, 0xBA86, 0x1F8F, 0xBA87, 0xBA87, 0x424B, 0xBA88, 0xBA88, 0x25EC,
+ 0xBA89, 0xBA8C, 0x424C, 0xBA8D, 0xBA8D, 0x25EB, 0xBA8E, 0xBA9D, 0x4250,
+ 0xBA9E, 0xBA9E, 0x20D0, 0xBA9F, 0xBA9F, 0x201D, 0xBAA0, 0xBAA0, 0x4260,
+ 0xBAA1, 0xBAFE, 0x0758, 0xBB40, 0xBB40, 0x1FF7, 0xBB41, 0xBB48, 0x4261,
+ 0xBB49, 0xBB49, 0x1E8D, 0xBB4A, 0xBB57, 0x4269, 0xBB58, 0xBB58, 0x25E9,
+ 0xBB59, 0xBB5A, 0x4277, 0xBB5B, 0xBB5B, 0x25EE, 0xBB5C, 0xBB5C, 0x203A,
+ 0xBB5D, 0xBB5F, 0x4279, 0xBB60, 0xBB60, 0x2693, 0xBB61, 0xBB64, 0x427C,
+ 0xBB65, 0xBB65, 0x25E5, 0xBB66, 0xBB66, 0x25ED, 0xBB67, 0xBB67, 0x4280,
+ 0xBB68, 0xBB68, 0x2009, 0xBB69, 0xBB69, 0x4281, 0xBB6A, 0xBB6A, 0x2065,
+ 0xBB6B, 0xBB6D, 0x4282, 0xBB6E, 0xBB6E, 0x26A3, 0xBB6F, 0xBB7E, 0x4285,
+ 0xBB80, 0xBBA0, 0x4295, 0xBBA1, 0xBBFE, 0x07B6, 0xBC40, 0xBC51, 0x42B6,
+ 0xBC52, 0xBC52, 0x25F5, 0xBC53, 0xBC53, 0x1EFC, 0xBC54, 0xBC59, 0x42C8,
+ 0xBC5A, 0xBC5A, 0x2024, 0xBC5B, 0xBC60, 0x42CE, 0xBC61, 0xBC61, 0x269B,
+ 0xBC62, 0xBC62, 0x42D4, 0xBC63, 0xBC63, 0x25F3, 0xBC64, 0xBC64, 0x42D5,
+ 0xBC65, 0xBC65, 0x22D9, 0xBC66, 0xBC66, 0x42D6, 0xBC67, 0xBC67, 0x25F4,
+ 0xBC68, 0xBC68, 0x42D7, 0xBC69, 0xBC69, 0x241B, 0xBC6A, 0xBC6C, 0x42D8,
+ 0xBC6D, 0xBC6D, 0x1FC8, 0xBC6E, 0xBC6E, 0x42DB, 0xBC6F, 0xBC6F, 0x1F7B,
+ 0xBC70, 0xBC70, 0x42DC, 0xBC71, 0xBC71, 0x241D, 0xBC72, 0xBC72, 0x42DD,
+ 0xBC73, 0xBC73, 0x224C, 0xBC74, 0xBC74, 0x1F48, 0xBC75, 0xBC75, 0x241C,
+ 0xBC76, 0xBC77, 0x241E, 0xBC78, 0xBC78, 0x20FF, 0xBC79, 0xBC79, 0x219A,
+ 0xBC7A, 0xBC7A, 0x42DE, 0xBC7B, 0xBC7B, 0x2091, 0xBC7C, 0xBC7D, 0x42DF,
+ 0xBC7E, 0xBC7E, 0x20A7, 0xBC80, 0xBC81, 0x42E1, 0xBC82, 0xBC82, 0x2423,
+ 0xBC83, 0xBC83, 0x1E9B, 0xBC84, 0xBC84, 0x2422, 0xBC85, 0xBC85, 0x42E3,
+ 0xBC86, 0xBC86, 0x2110, 0xBC87, 0xBC87, 0x42E4, 0xBC88, 0xBC88, 0x228D,
+ 0xBC89, 0xBC89, 0x1F71, 0xBC8A, 0xBC8A, 0x1EF8, 0xBC8B, 0xBC8B, 0x2421,
+ 0xBC8C, 0xBC8E, 0x42E5, 0xBC8F, 0xBC8F, 0x1EF3, 0xBC90, 0xBC99, 0x42E8,
+ 0xBC9A, 0xBC9A, 0x21B1, 0xBC9B, 0xBC9B, 0x2426, 0xBC9C, 0xBC9C, 0x2425,
+ 0xBC9D, 0xBC9D, 0x2120, 0xBC9E, 0xBCA0, 0x42F2, 0xBCA1, 0xBCFE, 0x0814,
+ 0xBD40, 0xBD41, 0x42F5, 0xBD42, 0xBD42, 0x211A, 0xBD43, 0xBD43, 0x2424,
+ 0xBD44, 0xBD44, 0x42F7, 0xBD45, 0xBD45, 0x2428, 0xBD46, 0xBD47, 0x42F8,
+ 0xBD48, 0xBD48, 0x242A, 0xBD49, 0xBD49, 0x2429, 0xBD4A, 0xBD4A, 0x42FA,
+ 0xBD4B, 0xBD4B, 0x2294, 0xBD4C, 0xBD4C, 0x42FB, 0xBD4D, 0xBD4D, 0x22BE,
+ 0xBD4E, 0xBD4E, 0x42FC, 0xBD4F, 0xBD4F, 0x1E31, 0xBD50, 0xBD56, 0x42FD,
+ 0xBD57, 0xBD57, 0x242C, 0xBD58, 0xBD58, 0x4304, 0xBD59, 0xBD59, 0x1FB5,
+ 0xBD5A, 0xBD65, 0x4305, 0xBD66, 0xBD66, 0x242B, 0xBD67, 0xBD67, 0x1FAF,
+ 0xBD68, 0xBD69, 0x4311, 0xBD6A, 0xBD6A, 0x2068, 0xBD6B, 0xBD6B, 0x21E4,
+ 0xBD6C, 0xBD6E, 0x4313, 0xBD6F, 0xBD6F, 0x1F21, 0xBD70, 0xBD70, 0x4316,
+ 0xBD71, 0xBD71, 0x2101, 0xBD72, 0xBD78, 0x4317, 0xBD79, 0xBD79, 0x217C,
+ 0xBD7A, 0xBD7A, 0x214A, 0xBD7B, 0xBD7B, 0x242D, 0xBD7C, 0xBD7D, 0x431E,
+ 0xBD7E, 0xBD7E, 0x1FD4, 0xBD80, 0xBD80, 0x4320, 0xBD81, 0xBD81, 0x1FD1,
+ 0xBD82, 0xBD88, 0x4321, 0xBD89, 0xBD89, 0x1E33, 0xBD8A, 0xBD8A, 0x4328,
+ 0xBD8B, 0xBD8B, 0x242F, 0xBD8C, 0xBD8D, 0x4329, 0xBD8E, 0xBD8E, 0x242E,
+ 0xBD8F, 0xBD8F, 0x432B, 0xBD90, 0xBD90, 0x2430, 0xBD91, 0xBD91, 0x21DB,
+ 0xBD92, 0xBD96, 0x432C, 0xBD97, 0xBD97, 0x2158, 0xBD98, 0xBD9A, 0x4331,
+ 0xBD9B, 0xBD9B, 0x1FC2, 0xBD9C, 0xBDA0, 0x4334, 0xBDA1, 0xBDFE, 0x0872,
+ 0xBE40, 0xBE42, 0x4339, 0xBE43, 0xBE43, 0x22B9, 0xBE44, 0xBE44, 0x433C,
+ 0xBE45, 0xBE45, 0x2436, 0xBE46, 0xBE48, 0x433D, 0xBE49, 0xBE49, 0x1E8E,
+ 0xBE4A, 0xBE4A, 0x2439, 0xBE4B, 0xBE50, 0x4340, 0xBE51, 0xBE51, 0x21C5,
+ 0xBE52, 0xBE52, 0x2437, 0xBE53, 0xBE53, 0x2192, 0xBE54, 0xBE54, 0x4346,
+ 0xBE55, 0xBE55, 0x243A, 0xBE56, 0xBE56, 0x1F19, 0xBE57, 0xBE57, 0x218C,
+ 0xBE58, 0xBE58, 0x1E40, 0xBE59, 0xBE59, 0x22B3, 0xBE5A, 0xBE5C, 0x4347,
+ 0xBE5D, 0xBE5D, 0x205F, 0xBE5E, 0xBE5E, 0x2438, 0xBE5F, 0xBE5F, 0x2432,
+ 0xBE60, 0xBE60, 0x2274, 0xBE61, 0xBE61, 0x434A, 0xBE62, 0xBE62, 0x1E9C,
+ 0xBE63, 0xBE63, 0x2431, 0xBE64, 0xBE64, 0x2085, 0xBE65, 0xBE68, 0x434B,
+ 0xBE69, 0xBE69, 0x2435, 0xBE6A, 0xBE6B, 0x434F, 0xBE6C, 0xBE6C, 0x243B,
+ 0xBE6D, 0xBE6E, 0x4351, 0xBE6F, 0xBE6F, 0x1FB7, 0xBE70, 0xBE70, 0x2433,
+ 0xBE71, 0xBE75, 0x4353, 0xBE76, 0xBE76, 0x2054, 0xBE77, 0xBE77, 0x21DE,
+ 0xBE78, 0xBE78, 0x4358, 0xBE79, 0xBE79, 0x2434, 0xBE7A, 0xBE7B, 0x4359,
+ 0xBE7C, 0xBE7C, 0x243D, 0xBE7D, 0xBE7D, 0x1F89, 0xBE7E, 0xBE7E, 0x243C,
+ 0xBE80, 0xBE82, 0x435B, 0xBE83, 0xBE83, 0x1F6E, 0xBE84, 0xBE84, 0x1ED8,
+ 0xBE85, 0xBE85, 0x435E, 0xBE86, 0xBE86, 0x1EBF, 0xBE87, 0xBE87, 0x2445,
+ 0xBE88, 0xBE88, 0x435F, 0xBE89, 0xBE89, 0x2249, 0xBE8A, 0xBE8B, 0x4360,
+ 0xBE8C, 0xBE8C, 0x2441, 0xBE8D, 0xBE8D, 0x4362, 0xBE8E, 0xBE8E, 0x1E47,
+ 0xBE8F, 0xBE8F, 0x1F56, 0xBE90, 0xBE91, 0x4363, 0xBE92, 0xBE92, 0x2086,
+ 0xBE93, 0xBE94, 0x4365, 0xBE95, 0xBE95, 0x2196, 0xBE96, 0xBE96, 0x4367,
+ 0xBE97, 0xBE97, 0x2443, 0xBE98, 0xBE98, 0x243F, 0xBE99, 0xBE99, 0x4368,
+ 0xBE9A, 0xBE9A, 0x2023, 0xBE9B, 0xBE9B, 0x4369, 0xBE9C, 0xBE9C, 0x2442,
+ 0xBE9D, 0xBE9E, 0x436A, 0xBE9F, 0xBE9F, 0x243E, 0xBEA0, 0xBEA0, 0x436C,
+ 0xBEA1, 0xBEFE, 0x08D0, 0xBF40, 0xBF40, 0x26A6, 0xBF41, 0xBF4C, 0x436D,
+ 0xBF4D, 0xBF4D, 0x234E, 0xBF4E, 0xBF4E, 0x2446, 0xBF4F, 0xBF4F, 0x244B,
+ 0xBF50, 0xBF50, 0x2444, 0xBF51, 0xBF54, 0x4379, 0xBF55, 0xBF55, 0x2427,
+ 0xBF56, 0xBF56, 0x244C, 0xBF57, 0xBF5F, 0x437D, 0xBF60, 0xBF60, 0x1F0F,
+ 0xBF61, 0xBF61, 0x4386, 0xBF62, 0xBF62, 0x2447, 0xBF63, 0xBF63, 0x2449,
+ 0xBF64, 0xBF64, 0x2448, 0xBF65, 0xBF67, 0x4387, 0xBF68, 0xBF68, 0x21C2,
+ 0xBF69, 0xBF6B, 0x438A, 0xBF6C, 0xBF6C, 0x216E, 0xBF6D, 0xBF6F, 0x438D,
+ 0xBF70, 0xBF70, 0x1F03, 0xBF71, 0xBF71, 0x4390, 0xBF72, 0xBF72, 0x244A,
+ 0xBF73, 0xBF73, 0x215C, 0xBF74, 0xBF75, 0x4391, 0xBF76, 0xBF76, 0x22BB,
+ 0xBF77, 0xBF77, 0x2450, 0xBF78, 0xBF78, 0x4393, 0xBF79, 0xBF79, 0x2694,
+ 0xBF7A, 0xBF7A, 0x244F, 0xBF7B, 0xBF7B, 0x25F6, 0xBF7C, 0xBF7C, 0x2051,
+ 0xBF7D, 0xBF7D, 0x4394, 0xBF7E, 0xBF7E, 0x244E, 0xBF80, 0xBF81, 0x4395,
+ 0xBF82, 0xBF82, 0x22BA, 0xBF83, 0xBF83, 0x1F6D, 0xBF84, 0xBF88, 0x4397,
+ 0xBF89, 0xBF89, 0x2452, 0xBF8A, 0xBF8A, 0x2451, 0xBF8B, 0xBF94, 0x439C,
+ 0xBF95, 0xBF95, 0x2455, 0xBF96, 0xBF96, 0x43A6, 0xBF97, 0xBF97, 0x2289,
+ 0xBF98, 0xBF98, 0x2116, 0xBF99, 0xBF9C, 0x43A7, 0xBF9D, 0xBF9D, 0x2454,
+ 0xBF9E, 0xBFA0, 0x43AB, 0xBFA1, 0xBFFE, 0x092E, 0xC040, 0xC040, 0x20FB,
+ 0xC041, 0xC043, 0x43AE, 0xC044, 0xC044, 0x2440, 0xC045, 0xC04A, 0x43B1,
+ 0xC04B, 0xC04B, 0x2126, 0xC04C, 0xC04C, 0x1F61, 0xC04D, 0xC04D, 0x269D,
+ 0xC04E, 0xC04E, 0x43B7, 0xC04F, 0xC04F, 0x1F8A, 0xC050, 0xC050, 0x2456,
+ 0xC051, 0xC051, 0x2459, 0xC052, 0xC052, 0x2458, 0xC053, 0xC054, 0x43B8,
+ 0xC055, 0xC055, 0x1FAE, 0xC056, 0xC05A, 0x43BA, 0xC05B, 0xC05B, 0x221A,
+ 0xC05C, 0xC05D, 0x43BF, 0xC05E, 0xC05E, 0x1F7A, 0xC05F, 0xC05F, 0x244D,
+ 0xC060, 0xC060, 0x2457, 0xC061, 0xC068, 0x43C1, 0xC069, 0xC069, 0x2453,
+ 0xC06A, 0xC06A, 0x43C9, 0xC06B, 0xC06B, 0x2420, 0xC06C, 0xC06C, 0x43CA,
+ 0xC06D, 0xC06D, 0x21DF, 0xC06E, 0xC06E, 0x2685, 0xC06F, 0xC06F, 0x43CB,
+ 0xC070, 0xC070, 0x1E6E, 0xC071, 0xC073, 0x43CC, 0xC074, 0xC074, 0x2224,
+ 0xC075, 0xC075, 0x2670, 0xC076, 0xC076, 0x43CF, 0xC077, 0xC077, 0x21BA,
+ 0xC078, 0xC078, 0x43D0, 0xC079, 0xC079, 0x245A, 0xC07A, 0xC07B, 0x43D1,
+ 0xC07C, 0xC07C, 0x1FFF, 0xC07D, 0xC07E, 0x43D3, 0xC080, 0xC09A, 0x43D5,
+ 0xC09B, 0xC09B, 0x25E2, 0xC09C, 0xC09C, 0x43F0, 0xC09D, 0xC09D, 0x269A,
+ 0xC09E, 0xC0A0, 0x43F1, 0xC0A1, 0xC0FE, 0x098C, 0xC140, 0xC14F, 0x43F4,
+ 0xC150, 0xC150, 0x1EEA, 0xC151, 0xC153, 0x4404, 0xC154, 0xC154, 0x1E2C,
+ 0xC155, 0xC15E, 0x4407, 0xC15F, 0xC15F, 0x2062, 0xC160, 0xC160, 0x24F1,
+ 0xC161, 0xC161, 0x4411, 0xC162, 0xC162, 0x24F2, 0xC163, 0xC174, 0x4412,
+ 0xC175, 0xC175, 0x25F2, 0xC176, 0xC177, 0x4424, 0xC178, 0xC178, 0x2215,
+ 0xC179, 0xC17E, 0x4426, 0xC180, 0xC194, 0x442C, 0xC195, 0xC195, 0x21AE,
+ 0xC196, 0xC1A0, 0x4441, 0xC1A1, 0xC1FE, 0x09EA, 0xC240, 0xC24D, 0x444C,
+ 0xC24E, 0xC24E, 0x20E0, 0xC24F, 0xC264, 0x445A, 0xC265, 0xC265, 0x25C2,
+ 0xC266, 0xC266, 0x4470, 0xC267, 0xC267, 0x25C1, 0xC268, 0xC27C, 0x4471,
+ 0xC27D, 0xC27D, 0x2128, 0xC27E, 0xC27E, 0x4486, 0xC280, 0xC283, 0x4487,
+ 0xC284, 0xC284, 0x2199, 0xC285, 0xC292, 0x448B, 0xC293, 0xC293, 0x2017,
+ 0xC294, 0xC294, 0x1EA0, 0xC295, 0xC295, 0x2125, 0xC296, 0xC296, 0x214D,
+ 0xC297, 0xC297, 0x4499, 0xC298, 0xC298, 0x25C4, 0xC299, 0xC299, 0x209D,
+ 0xC29A, 0xC29A, 0x228A, 0xC29B, 0xC29B, 0x449A, 0xC29C, 0xC29C, 0x25C3,
+ 0xC29D, 0xC29F, 0x449B, 0xC2A0, 0xC2A0, 0x2179, 0xC2A1, 0xC2FE, 0x0A48,
+ 0xC340, 0xC340, 0x2038, 0xC341, 0xC342, 0x449E, 0xC343, 0xC343, 0x2155,
+ 0xC344, 0xC37A, 0x44A0, 0xC37B, 0xC37B, 0x21D2, 0xC37C, 0xC37E, 0x44D7,
+ 0xC380, 0xC383, 0x44DA, 0xC384, 0xC384, 0x24C7, 0xC385, 0xC39A, 0x44DE,
+ 0xC39B, 0xC39B, 0x2279, 0xC39C, 0xC3A0, 0x44F4, 0xC3A1, 0xC3FE, 0x0AA6,
+ 0xC440, 0xC448, 0x44F9, 0xC449, 0xC449, 0x2123, 0xC44A, 0xC44B, 0x4502,
+ 0xC44C, 0xC44C, 0x24C5, 0xC44D, 0xC453, 0x4504, 0xC454, 0xC454, 0x24C9,
+ 0xC455, 0xC457, 0x450B, 0xC458, 0xC458, 0x2094, 0xC459, 0xC45A, 0x450E,
+ 0xC45B, 0xC45B, 0x2296, 0xC45C, 0xC462, 0x4510, 0xC463, 0xC463, 0x1E77,
+ 0xC464, 0xC476, 0x4517, 0xC477, 0xC477, 0x1F06, 0xC478, 0xC479, 0x452A,
+ 0xC47A, 0xC47A, 0x1FA5, 0xC47B, 0xC47E, 0x452C, 0xC480, 0xC480, 0x4530,
+ 0xC481, 0xC481, 0x2099, 0xC482, 0xC490, 0x4531, 0xC491, 0xC491, 0x1EAD,
+ 0xC492, 0xC492, 0x24C8, 0xC493, 0xC493, 0x20A8, 0xC494, 0xC497, 0x4540,
+ 0xC498, 0xC498, 0x201F, 0xC499, 0xC499, 0x4544, 0xC49A, 0xC49A, 0x20C5,
+ 0xC49B, 0xC49B, 0x4545, 0xC49C, 0xC49C, 0x24CA, 0xC49D, 0xC4A0, 0x4546,
+ 0xC4A1, 0xC4FE, 0x0B04, 0xC540, 0xC543, 0x454A, 0xC544, 0xC544, 0x1FF0,
+ 0xC545, 0xC545, 0x454E, 0xC546, 0xC546, 0x24C6, 0xC547, 0xC54A, 0x454F,
+ 0xC54B, 0xC54B, 0x225D, 0xC54C, 0xC54C, 0x22DE, 0xC54D, 0xC551, 0x4553,
+ 0xC552, 0xC552, 0x202C, 0xC553, 0xC55E, 0x4558, 0xC55F, 0xC55F, 0x2161,
+ 0xC560, 0xC562, 0x4564, 0xC563, 0xC563, 0x223B, 0xC564, 0xC564, 0x21D9,
+ 0xC565, 0xC565, 0x1FCB, 0xC566, 0xC566, 0x1FC9, 0xC567, 0xC57E, 0x4567,
+ 0xC580, 0xC592, 0x457F, 0xC593, 0xC593, 0x1E61, 0xC594, 0xC59B, 0x4592,
+ 0xC59C, 0xC59C, 0x25EF, 0xC59D, 0xC59D, 0x459A, 0xC59E, 0xC59E, 0x1F98,
+ 0xC59F, 0xC5A0, 0x459B, 0xC5A1, 0xC5FE, 0x0B62, 0xC640, 0xC640, 0x459D,
+ 0xC641, 0xC641, 0x25F0, 0xC642, 0xC643, 0x459E, 0xC644, 0xC644, 0x1F88,
+ 0xC645, 0xC646, 0x45A0, 0xC647, 0xC647, 0x21F8, 0xC648, 0xC662, 0x45A2,
+ 0xC663, 0xC663, 0x2322, 0xC664, 0xC671, 0x45BD, 0xC672, 0xC672, 0x2336,
+ 0xC673, 0xC67E, 0x45CB, 0xC680, 0xC6A0, 0x45D7, 0xC6A1, 0xC6FE, 0x0BC0,
+ 0xC740, 0xC765, 0x45F8, 0xC766, 0xC766, 0x22AB, 0xC767, 0xC76E, 0x461E,
+ 0xC76F, 0xC76F, 0x1FBF, 0xC770, 0xC775, 0x4626, 0xC776, 0xC776, 0x1F7D,
+ 0xC777, 0xC77A, 0x462C, 0xC77B, 0xC77B, 0x2333, 0xC77C, 0xC77E, 0x4630,
+ 0xC780, 0xC7A0, 0x4633, 0xC7A1, 0xC7FE, 0x0C1E, 0xC840, 0xC840, 0x4654,
+ 0xC841, 0xC841, 0x1F4D, 0xC842, 0xC84E, 0x4655, 0xC84F, 0xC84F, 0x2334,
+ 0xC850, 0xC851, 0x4662, 0xC852, 0xC852, 0x1FF1, 0xC853, 0xC865, 0x4664,
+ 0xC866, 0xC866, 0x218B, 0xC867, 0xC86D, 0x4677, 0xC86E, 0xC86E, 0x2349,
+ 0xC86F, 0xC87D, 0x467E, 0xC87E, 0xC87E, 0x220B, 0xC880, 0xC886, 0x468D,
+ 0xC887, 0xC887, 0x2346, 0xC888, 0xC891, 0x4694, 0xC892, 0xC892, 0x2347,
+ 0xC893, 0xC893, 0x469E, 0xC894, 0xC894, 0x2193, 0xC895, 0xC898, 0x469F,
+ 0xC899, 0xC899, 0x26A1, 0xC89A, 0xC89C, 0x46A3, 0xC89D, 0xC89D, 0x1F62,
+ 0xC89E, 0xC8A0, 0x46A6, 0xC8A1, 0xC8FE, 0x0C7C, 0xC940, 0xC94E, 0x46A9,
+ 0xC94F, 0xC94F, 0x234D, 0xC950, 0xC950, 0x2348, 0xC951, 0xC96D, 0x46B8,
+ 0xC96E, 0xC96E, 0x1E60, 0xC96F, 0xC96F, 0x46D5, 0xC970, 0xC970, 0x2345,
+ 0xC971, 0xC976, 0x46D6, 0xC977, 0xC977, 0x1F12, 0xC978, 0xC97E, 0x46DC,
+ 0xC980, 0xC98E, 0x46E3, 0xC98F, 0xC98F, 0x2018, 0xC990, 0xC990, 0x2335,
+ 0xC991, 0xC99B, 0x46F2, 0xC99C, 0xC99C, 0x233C, 0xC99D, 0xC9A0, 0x46FD,
+ 0xC9A1, 0xC9FE, 0x0CDA, 0xCA40, 0xCA4D, 0x4701, 0xCA4E, 0xCA4E, 0x266F,
+ 0xCA4F, 0xCA55, 0x470F, 0xCA56, 0xCA56, 0x2351, 0xCA57, 0xCA58, 0x4716,
+ 0xCA59, 0xCA59, 0x1FA0, 0xCA5A, 0xCA5B, 0x4718, 0xCA5C, 0xCA5C, 0x2338,
+ 0xCA5D, 0xCA60, 0x471A, 0xCA61, 0xCA61, 0x221B, 0xCA62, 0xCA6D, 0x471E,
+ 0xCA6E, 0xCA6E, 0x2342, 0xCA6F, 0xCA71, 0x472A, 0xCA72, 0xCA72, 0x234F,
+ 0xCA73, 0xCA76, 0x472D, 0xCA77, 0xCA77, 0x233D, 0xCA78, 0xCA7A, 0x4731,
+ 0xCA7B, 0xCA7B, 0x2344, 0xCA7C, 0xCA7C, 0x2331, 0xCA7D, 0xCA7D, 0x4734,
+ 0xCA7E, 0xCA7E, 0x234B, 0xCA80, 0xCA80, 0x4735, 0xCA81, 0xCA81, 0x233B,
+ 0xCA82, 0xCA88, 0x4736, 0xCA89, 0xCA89, 0x2350, 0xCA8A, 0xCA8D, 0x473D,
+ 0xCA8E, 0xCA8E, 0x1EB4, 0xCA8F, 0xCA8F, 0x21A6, 0xCA90, 0xCA91, 0x4741,
+ 0xCA92, 0xCA92, 0x21CB, 0xCA93, 0xCA99, 0x4743, 0xCA9A, 0xCA9A, 0x2355,
+ 0xCA9B, 0xCAA0, 0x474A, 0xCAA1, 0xCAFE, 0x0D38, 0xCB40, 0xCB42, 0x4750,
+ 0xCB43, 0xCB43, 0x233E, 0xCB44, 0xCB44, 0x4753, 0xCB45, 0xCB45, 0x1F74,
+ 0xCB46, 0xCB46, 0x4754, 0xCB47, 0xCB47, 0x2330, 0xCB48, 0xCB4A, 0x4755,
+ 0xCB4B, 0xCB4B, 0x2680, 0xCB4C, 0xCB4D, 0x4758, 0xCB4E, 0xCB4E, 0x20DA,
+ 0xCB4F, 0xCB56, 0x475A, 0xCB57, 0xCB57, 0x234A, 0xCB58, 0xCB5C, 0x4762,
+ 0xCB5D, 0xCB5D, 0x1F91, 0xCB5E, 0xCB5E, 0x4767, 0xCB5F, 0xCB5F, 0x2107,
+ 0xCB60, 0xCB69, 0x4768, 0xCB6A, 0xCB6A, 0x233F, 0xCB6B, 0xCB7A, 0x4772,
+ 0xCB7B, 0xCB7B, 0x1FF4, 0xCB7C, 0xCB7C, 0x2343, 0xCB7D, 0xCB7E, 0x4782,
+ 0xCB80, 0xCB86, 0x4784, 0xCB87, 0xCB87, 0x2212, 0xCB88, 0xCB8D, 0x478B,
+ 0xCB8E, 0xCB8E, 0x2207, 0xCB8F, 0xCB91, 0x4791, 0xCB92, 0xCB92, 0x2359,
+ 0xCB93, 0xCB9B, 0x4794, 0xCB9C, 0xCB9C, 0x2254, 0xCB9D, 0xCB9D, 0x479D,
+ 0xCB9E, 0xCB9E, 0x2332, 0xCB9F, 0xCBA0, 0x479E, 0xCBA1, 0xCBFE, 0x0D96,
+ 0xCC40, 0xCC40, 0x1E26, 0xCC41, 0xCC41, 0x2357, 0xCC42, 0xCC48, 0x47A0,
+ 0xCC49, 0xCC49, 0x2358, 0xCC4A, 0xCC4A, 0x2042, 0xCC4B, 0xCC4B, 0x2153,
+ 0xCC4C, 0xCC4E, 0x47A7, 0xCC4F, 0xCC4F, 0x20BB, 0xCC50, 0xCC5B, 0x47AA,
+ 0xCC5C, 0xCC5C, 0x235A, 0xCC5D, 0xCC5F, 0x47B6, 0xCC60, 0xCC60, 0x2356,
+ 0xCC61, 0xCC63, 0x47B9, 0xCC64, 0xCC64, 0x2337, 0xCC65, 0xCC6C, 0x47BC,
+ 0xCC6D, 0xCC6D, 0x1FF9, 0xCC6E, 0xCC78, 0x47C4, 0xCC79, 0xCC79, 0x2353,
+ 0xCC7A, 0xCC7C, 0x47CF, 0xCC7D, 0xCC7D, 0x2061, 0xCC7E, 0xCC7E, 0x47D2,
+ 0xCC80, 0xCC8D, 0x47D3, 0xCC8E, 0xCC8E, 0x1E95, 0xCC8F, 0xCC93, 0x47E1,
+ 0xCC94, 0xCC94, 0x2049, 0xCC95, 0xCC95, 0x47E6, 0xCC96, 0xCC96, 0x1F42,
+ 0xCC97, 0xCC9C, 0x47E7, 0xCC9D, 0xCC9D, 0x1FE8, 0xCC9E, 0xCCA0, 0x47ED,
+ 0xCCA1, 0xCCFE, 0x0DF4, 0xCD40, 0xCD7E, 0x47F0, 0xCD80, 0xCD8F, 0x482F,
+ 0xCD90, 0xCD90, 0x25DA, 0xCD91, 0xCD97, 0x483F, 0xCD98, 0xCD98, 0x25D7,
+ 0xCD99, 0xCDA0, 0x4846, 0xCDA1, 0xCDFE, 0x0E52, 0xCE40, 0xCE66, 0x484E,
+ 0xCE67, 0xCE67, 0x212E, 0xCE68, 0xCE71, 0x4875, 0xCE72, 0xCE72, 0x21B2,
+ 0xCE73, 0xCE7E, 0x487F, 0xCE80, 0xCE80, 0x488B, 0xCE81, 0xCE81, 0x219E,
+ 0xCE82, 0xCE86, 0x488C, 0xCE87, 0xCE87, 0x25DC, 0xCE88, 0xCE9A, 0x4891,
+ 0xCE9B, 0xCE9B, 0x206C, 0xCE9C, 0xCE9D, 0x48A4, 0xCE9E, 0xCE9E, 0x2226,
+ 0xCE9F, 0xCEA0, 0x48A6, 0xCEA1, 0xCEFE, 0x0EB0, 0xCF40, 0xCF4D, 0x48A8,
+ 0xCF4E, 0xCF4E, 0x25E0, 0xCF4F, 0xCF54, 0x48B6, 0xCF55, 0xCF55, 0x227B,
+ 0xCF56, 0xCF57, 0x48BC, 0xCF58, 0xCF58, 0x25DE, 0xCF59, 0xCF5B, 0x48BE,
+ 0xCF5C, 0xCF5C, 0x25E1, 0xCF5D, 0xCF6B, 0x48C1, 0xCF6C, 0xCF6C, 0x25D5,
+ 0xCF6D, 0xCF72, 0x48D0, 0xCF73, 0xCF73, 0x1E6B, 0xCF74, 0xCF74, 0x48D6,
+ 0xCF75, 0xCF75, 0x25DB, 0xCF76, 0xCF77, 0x48D7, 0xCF78, 0xCF78, 0x1E89,
+ 0xCF79, 0xCF7B, 0x48D9, 0xCF7C, 0xCF7C, 0x25D9, 0xCF7D, 0xCF7E, 0x48DC,
+ 0xCF80, 0xCF80, 0x48DE, 0xCF81, 0xCF81, 0x2211, 0xCF82, 0xCF88, 0x48DF,
+ 0xCF89, 0xCF89, 0x2229, 0xCF8A, 0xCF8A, 0x25D6, 0xCF8B, 0xCF92, 0x48E6,
+ 0xCF93, 0xCF93, 0x25DD, 0xCF94, 0xCF94, 0x25DF, 0xCF95, 0xCF9D, 0x48EE,
+ 0xCF9E, 0xCF9E, 0x1FEF, 0xCF9F, 0xCF9F, 0x48F7, 0xCFA0, 0xCFA0, 0x25D8,
+ 0xCFA1, 0xCFFE, 0x0F0E, 0xD040, 0xD04C, 0x48F8, 0xD04D, 0xD04D, 0x1F29,
+ 0xD04E, 0xD050, 0x4905, 0xD051, 0xD051, 0x1E5B, 0xD052, 0xD054, 0x4908,
+ 0xD055, 0xD055, 0x2076, 0xD056, 0xD05B, 0x490B, 0xD05C, 0xD05C, 0x2297,
+ 0xD05D, 0xD05F, 0x4911, 0xD060, 0xD060, 0x2690, 0xD061, 0xD066, 0x4914,
+ 0xD067, 0xD067, 0x213F, 0xD068, 0xD06B, 0x491A, 0xD06C, 0xD06C, 0x2198,
+ 0xD06D, 0xD06D, 0x491E, 0xD06E, 0xD06E, 0x1E88, 0xD06F, 0xD07C, 0x491F,
+ 0xD07D, 0xD07D, 0x228C, 0xD07E, 0xD07E, 0x492D, 0xD080, 0xD0A0, 0x492E,
+ 0xD0A1, 0xD0FE, 0x0F6C, 0xD140, 0xD154, 0x494F, 0xD155, 0xD155, 0x25F1,
+ 0xD156, 0xD158, 0x4964, 0xD159, 0xD159, 0x200C, 0xD15A, 0xD160, 0x4967,
+ 0xD161, 0xD161, 0x1E58, 0xD162, 0xD162, 0x22AC, 0xD163, 0xD174, 0x496E,
+ 0xD175, 0xD175, 0x26A7, 0xD176, 0xD17C, 0x4980, 0xD17D, 0xD17D, 0x2676,
+ 0xD17E, 0xD17E, 0x4987, 0xD180, 0xD19C, 0x4988, 0xD19D, 0xD19D, 0x1FE1,
+ 0xD19E, 0xD19E, 0x25BB, 0xD19F, 0xD1A0, 0x49A5, 0xD1A1, 0xD1FE, 0x0FCA,
+ 0xD240, 0xD240, 0x25BE, 0xD241, 0xD242, 0x49A7, 0xD243, 0xD243, 0x22DD,
+ 0xD244, 0xD24C, 0x49A9, 0xD24D, 0xD24D, 0x25BD, 0xD24E, 0xD25B, 0x49B2,
+ 0xD25C, 0xD25C, 0x1E2A, 0xD25D, 0xD262, 0x49C0, 0xD263, 0xD263, 0x25BC,
+ 0xD264, 0xD264, 0x25BA, 0xD265, 0xD267, 0x49C6, 0xD268, 0xD268, 0x25BF,
+ 0xD269, 0xD26C, 0x49C9, 0xD26D, 0xD26D, 0x2187, 0xD26E, 0xD26E, 0x49CD,
+ 0xD26F, 0xD26F, 0x266B, 0xD270, 0xD271, 0x49CE, 0xD272, 0xD272, 0x1E7F,
+ 0xD273, 0xD274, 0x49D0, 0xD275, 0xD275, 0x21AD, 0xD276, 0xD27E, 0x49D2,
+ 0xD280, 0xD289, 0x49DB, 0xD28A, 0xD28A, 0x1F96, 0xD28B, 0xD28D, 0x49E5,
+ 0xD28E, 0xD28E, 0x1F32, 0xD28F, 0xD291, 0x49E8, 0xD292, 0xD292, 0x2084,
+ 0xD293, 0xD294, 0x49EB, 0xD295, 0xD295, 0x2136, 0xD296, 0xD296, 0x49ED,
+ 0xD297, 0xD297, 0x24B8, 0xD298, 0xD29F, 0x49EE, 0xD2A0, 0xD2A0, 0x24BA,
+ 0xD2A1, 0xD2FE, 0x1028, 0xD340, 0xD343, 0x49F6, 0xD344, 0xD344, 0x24BC,
+ 0xD345, 0xD347, 0x49FA, 0xD348, 0xD348, 0x20E4, 0xD349, 0xD349, 0x49FD,
+ 0xD34A, 0xD34A, 0x24B9, 0xD34B, 0xD34C, 0x49FE, 0xD34D, 0xD34D, 0x24BD,
+ 0xD34E, 0xD34F, 0x4A00, 0xD350, 0xD350, 0x24BE, 0xD351, 0xD354, 0x4A02,
+ 0xD355, 0xD355, 0x24BF, 0xD356, 0xD357, 0x4A06, 0xD358, 0xD358, 0x1FD2,
+ 0xD359, 0xD35A, 0x4A08, 0xD35B, 0xD35B, 0x1FFD, 0xD35C, 0xD35C, 0x4A0A,
+ 0xD35D, 0xD35D, 0x24BB, 0xD35E, 0xD35E, 0x1F2D, 0xD35F, 0xD377, 0x4A0B,
+ 0xD378, 0xD378, 0x2609, 0xD379, 0xD379, 0x4A24, 0xD37A, 0xD37A, 0x260A,
+ 0xD37B, 0xD37B, 0x4A25, 0xD37C, 0xD37C, 0x1E94, 0xD37D, 0xD37E, 0x4A26,
+ 0xD380, 0xD384, 0x4A28, 0xD385, 0xD385, 0x22DF, 0xD386, 0xD386, 0x1ECB,
+ 0xD387, 0xD387, 0x1F0D, 0xD388, 0xD38A, 0x4A2D, 0xD38B, 0xD38B, 0x1F77,
+ 0xD38C, 0xD38C, 0x4A30, 0xD38D, 0xD38D, 0x21EB, 0xD38E, 0xD38E, 0x4A31,
+ 0xD38F, 0xD38F, 0x22E1, 0xD390, 0xD390, 0x4A32, 0xD391, 0xD391, 0x216F,
+ 0xD392, 0xD392, 0x4A33, 0xD393, 0xD393, 0x22E0, 0xD394, 0xD395, 0x4A34,
+ 0xD396, 0xD396, 0x21EA, 0xD397, 0xD397, 0x4A36, 0xD398, 0xD398, 0x22E2,
+ 0xD399, 0xD399, 0x20CB, 0xD39A, 0xD39A, 0x4A37, 0xD39B, 0xD39B, 0x1F78,
+ 0xD39C, 0xD39D, 0x4A38, 0xD39E, 0xD39E, 0x1EE2, 0xD39F, 0xD39F, 0x4A3A,
+ 0xD3A0, 0xD3A0, 0x21F2, 0xD3A1, 0xD3FE, 0x1086, 0xD440, 0xD440, 0x4A3B,
+ 0xD441, 0xD441, 0x2150, 0xD442, 0xD444, 0x4A3C, 0xD445, 0xD445, 0x1FD3,
+ 0xD446, 0xD446, 0x4A3F, 0xD447, 0xD447, 0x22E5, 0xD448, 0xD44B, 0x4A40,
+ 0xD44C, 0xD44C, 0x1EF2, 0xD44D, 0xD44E, 0x4A44, 0xD44F, 0xD44F, 0x211F,
+ 0xD450, 0xD452, 0x4A46, 0xD453, 0xD453, 0x21DD, 0xD454, 0xD455, 0x4A49,
+ 0xD456, 0xD456, 0x2154, 0xD457, 0xD457, 0x4A4B, 0xD458, 0xD458, 0x22E7,
+ 0xD459, 0xD45B, 0x4A4C, 0xD45C, 0xD45C, 0x2282, 0xD45D, 0xD461, 0x4A4F,
+ 0xD462, 0xD462, 0x22E6, 0xD463, 0xD466, 0x4A54, 0xD467, 0xD467, 0x22E8,
+ 0xD468, 0xD46D, 0x4A58, 0xD46E, 0xD46E, 0x22E4, 0xD46F, 0xD46F, 0x4A5E,
+ 0xD470, 0xD470, 0x226A, 0xD471, 0xD471, 0x4A5F, 0xD472, 0xD472, 0x22EB,
+ 0xD473, 0xD473, 0x4A60, 0xD474, 0xD474, 0x22E9, 0xD475, 0xD475, 0x20BD,
+ 0xD476, 0xD477, 0x4A61, 0xD478, 0xD478, 0x22EA, 0xD479, 0xD47A, 0x4A63,
+ 0xD47B, 0xD47B, 0x22BD, 0xD47C, 0xD47D, 0x4A65, 0xD47E, 0xD47E, 0x1E9E,
+ 0xD480, 0xD481, 0x4A67, 0xD482, 0xD482, 0x22F6, 0xD483, 0xD483, 0x21E7,
+ 0xD484, 0xD484, 0x2216, 0xD485, 0xD486, 0x4A69, 0xD487, 0xD487, 0x2137,
+ 0xD488, 0xD489, 0x4A6B, 0xD48A, 0xD48A, 0x212C, 0xD48B, 0xD48B, 0x4A6D,
+ 0xD48C, 0xD48C, 0x1E68, 0xD48D, 0xD48D, 0x22F2, 0xD48E, 0xD48E, 0x1F37,
+ 0xD48F, 0xD48F, 0x22F3, 0xD490, 0xD490, 0x4A6E, 0xD491, 0xD491, 0x22EF,
+ 0xD492, 0xD492, 0x1F50, 0xD493, 0xD493, 0x1F10, 0xD494, 0xD494, 0x21C8,
+ 0xD495, 0xD495, 0x4A6F, 0xD496, 0xD496, 0x22F1, 0xD497, 0xD49B, 0x4A70,
+ 0xD49C, 0xD49C, 0x22F0, 0xD49D, 0xD49E, 0x4A75, 0xD49F, 0xD49F, 0x22EE,
+ 0xD4A0, 0xD4A0, 0x4A77, 0xD4A1, 0xD4FE, 0x10E4, 0xD540, 0xD542, 0x4A78,
+ 0xD543, 0xD543, 0x22ED, 0xD544, 0xD544, 0x229E, 0xD545, 0xD545, 0x22EC,
+ 0xD546, 0xD546, 0x1FE2, 0xD547, 0xD549, 0x4A7B, 0xD54A, 0xD54A, 0x20FE,
+ 0xD54B, 0xD54D, 0x4A7E, 0xD54E, 0xD54F, 0x22F9, 0xD550, 0xD550, 0x4A81,
+ 0xD551, 0xD551, 0x1EAF, 0xD552, 0xD553, 0x4A82, 0xD554, 0xD554, 0x2236,
+ 0xD555, 0xD555, 0x4A84, 0xD556, 0xD556, 0x22F7, 0xD557, 0xD559, 0x4A85,
+ 0xD55A, 0xD55A, 0x223D, 0xD55B, 0xD55B, 0x4A88, 0xD55C, 0xD55C, 0x1E82,
+ 0xD55D, 0xD55D, 0x1FB6, 0xD55E, 0xD55E, 0x4A89, 0xD55F, 0xD55F, 0x21A4,
+ 0xD560, 0xD560, 0x21AA, 0xD561, 0xD561, 0x22F8, 0xD562, 0xD562, 0x2151,
+ 0xD563, 0xD563, 0x4A8A, 0xD564, 0xD564, 0x1F60, 0xD565, 0xD567, 0x4A8B,
+ 0xD568, 0xD568, 0x2147, 0xD569, 0xD56B, 0x4A8E, 0xD56C, 0xD56C, 0x2145,
+ 0xD56D, 0xD56D, 0x4A91, 0xD56E, 0xD56E, 0x1FDC, 0xD56F, 0xD571, 0x4A92,
+ 0xD572, 0xD572, 0x2301, 0xD573, 0xD574, 0x4A95, 0xD575, 0xD575, 0x1EF5,
+ 0xD576, 0xD577, 0x4A97, 0xD578, 0xD578, 0x2218, 0xD579, 0xD57A, 0x4A99,
+ 0xD57B, 0xD57B, 0x1EC6, 0xD57C, 0xD57D, 0x4A9B, 0xD57E, 0xD57E, 0x2300,
+ 0xD580, 0xD580, 0x4A9D, 0xD581, 0xD581, 0x22B4, 0xD582, 0xD583, 0x4A9E,
+ 0xD584, 0xD584, 0x2169, 0xD585, 0xD585, 0x4AA0, 0xD586, 0xD586, 0x22FD,
+ 0xD587, 0xD587, 0x4AA1, 0xD588, 0xD588, 0x20EA, 0xD589, 0xD589, 0x4AA2,
+ 0xD58A, 0xD58A, 0x22F4, 0xD58B, 0xD58B, 0x4AA3, 0xD58C, 0xD58C, 0x22FB,
+ 0xD58D, 0xD58D, 0x4AA4, 0xD58E, 0xD58E, 0x22FC, 0xD58F, 0xD58F, 0x2027,
+ 0xD590, 0xD592, 0x4AA5, 0xD593, 0xD593, 0x2060, 0xD594, 0xD594, 0x22FF,
+ 0xD595, 0xD597, 0x4AA8, 0xD598, 0xD598, 0x22FE, 0xD599, 0xD599, 0x1EC7,
+ 0xD59A, 0xD59A, 0x4AAB, 0xD59B, 0xD59B, 0x230C, 0xD59C, 0xD59E, 0x4AAC,
+ 0xD59F, 0xD59F, 0x22F5, 0xD5A0, 0xD5A0, 0x4AAF, 0xD5A1, 0xD5FE, 0x1142,
+ 0xD640, 0xD640, 0x2306, 0xD641, 0xD641, 0x4AB0, 0xD642, 0xD642, 0x230A,
+ 0xD643, 0xD643, 0x21D3, 0xD644, 0xD646, 0x4AB1, 0xD647, 0xD647, 0x2303,
+ 0xD648, 0xD648, 0x4AB4, 0xD649, 0xD649, 0x2307, 0xD64A, 0xD64A, 0x230B,
+ 0xD64B, 0xD64C, 0x4AB5, 0xD64D, 0xD64D, 0x1F5F, 0xD64E, 0xD64E, 0x4AB7,
+ 0xD64F, 0xD64F, 0x2309, 0xD650, 0xD651, 0x4AB8, 0xD652, 0xD652, 0x2302,
+ 0xD653, 0xD653, 0x1F04, 0xD654, 0xD654, 0x229D, 0xD655, 0xD655, 0x4ABA,
+ 0xD656, 0xD656, 0x21FB, 0xD657, 0xD657, 0x4ABB, 0xD658, 0xD658, 0x2308,
+ 0xD659, 0xD659, 0x4ABC, 0xD65A, 0xD65A, 0x20AC, 0xD65B, 0xD65B, 0x4ABD,
+ 0xD65C, 0xD65C, 0x208E, 0xD65D, 0xD65D, 0x2305, 0xD65E, 0xD65E, 0x2197,
+ 0xD65F, 0xD65F, 0x4ABE, 0xD660, 0xD660, 0x2171, 0xD661, 0xD661, 0x2298,
+ 0xD662, 0xD664, 0x4ABF, 0xD665, 0xD665, 0x1F57, 0xD666, 0xD668, 0x4AC2,
+ 0xD669, 0xD669, 0x2082, 0xD66A, 0xD66A, 0x4AC5, 0xD66B, 0xD66B, 0x2311,
+ 0xD66C, 0xD66E, 0x4AC6, 0xD66F, 0xD66F, 0x2304, 0xD670, 0xD670, 0x4AC9,
+ 0xD671, 0xD671, 0x230F, 0xD672, 0xD672, 0x1E35, 0xD673, 0xD673, 0x4ACA,
+ 0xD674, 0xD674, 0x20D1, 0xD675, 0xD675, 0x2310, 0xD676, 0xD676, 0x1FA3,
+ 0xD677, 0xD677, 0x4ACB, 0xD678, 0xD678, 0x21D6, 0xD679, 0xD67B, 0x4ACC,
+ 0xD67C, 0xD67C, 0x2206, 0xD67D, 0xD67E, 0x4ACF, 0xD680, 0xD682, 0x4AD1,
+ 0xD683, 0xD683, 0x230D, 0xD684, 0xD685, 0x4AD4, 0xD686, 0xD686, 0x2312,
+ 0xD687, 0xD687, 0x208D, 0xD688, 0xD688, 0x2313, 0xD689, 0xD68D, 0x4AD6,
+ 0xD68E, 0xD68E, 0x22E3, 0xD68F, 0xD693, 0x4ADB, 0xD694, 0xD694, 0x1FBA,
+ 0xD695, 0xD698, 0x4AE0, 0xD699, 0xD699, 0x2078, 0xD69A, 0xD6A0, 0x4AE4,
+ 0xD6A1, 0xD6FE, 0x11A0, 0xD740, 0xD742, 0x4AEB, 0xD743, 0xD743, 0x2288,
+ 0xD744, 0xD747, 0x4AEE, 0xD748, 0xD748, 0x2316, 0xD749, 0xD749, 0x1F6B,
+ 0xD74A, 0xD74F, 0x4AF2, 0xD750, 0xD750, 0x2314, 0xD751, 0xD751, 0x4AF8,
+ 0xD752, 0xD752, 0x2130, 0xD753, 0xD753, 0x2315, 0xD754, 0xD754, 0x2168,
+ 0xD755, 0xD755, 0x4AF9, 0xD756, 0xD756, 0x20C4, 0xD757, 0xD763, 0x4AFA,
+ 0xD764, 0xD764, 0x2318, 0xD765, 0xD766, 0x4B07, 0xD767, 0xD767, 0x2219,
+ 0xD768, 0xD768, 0x2217, 0xD769, 0xD76B, 0x4B09, 0xD76C, 0xD76C, 0x20D5,
+ 0xD76D, 0xD76E, 0x4B0C, 0xD76F, 0xD76F, 0x1F4A, 0xD770, 0xD774, 0x4B0E,
+ 0xD775, 0xD775, 0x2240, 0xD776, 0xD777, 0x4B13, 0xD778, 0xD778, 0x1ED3,
+ 0xD779, 0xD77E, 0x4B15, 0xD780, 0xD782, 0x4B1B, 0xD783, 0xD783, 0x1E49,
+ 0xD784, 0xD786, 0x4B1E, 0xD787, 0xD787, 0x261B, 0xD788, 0xD78A, 0x4B21,
+ 0xD78B, 0xD78B, 0x1E6D, 0xD78C, 0xD78C, 0x20F8, 0xD78D, 0xD78D, 0x4B24,
+ 0xD78E, 0xD78E, 0x1FFB, 0xD78F, 0xD78F, 0x2319, 0xD790, 0xD794, 0x4B25,
+ 0xD795, 0xD795, 0x230E, 0xD796, 0xD796, 0x4B2A, 0xD797, 0xD797, 0x2317,
+ 0xD798, 0xD7A0, 0x4B2B, 0xD7A1, 0xD7F9, 0x11FE, 0xD840, 0xD84C, 0x4B34,
+ 0xD84D, 0xD84D, 0x20C8, 0xD84E, 0xD852, 0x4B41, 0xD853, 0xD853, 0x1EFD,
+ 0xD854, 0xD87E, 0x4B46, 0xD880, 0xD88F, 0x4B71, 0xD890, 0xD890, 0x1E3B,
+ 0xD891, 0xD891, 0x227F, 0xD892, 0xD892, 0x4B81, 0xD893, 0xD893, 0x1F0C,
+ 0xD894, 0xD894, 0x1E59, 0xD895, 0xD895, 0x1F24, 0xD896, 0xD899, 0x4B82,
+ 0xD89A, 0xD89A, 0x20BA, 0xD89B, 0xD89B, 0x1F65, 0xD89C, 0xD89C, 0x1EF0,
+ 0xD89D, 0xD89D, 0x2164, 0xD89E, 0xD89E, 0x1F30, 0xD89F, 0xD89F, 0x2261,
+ 0xD8A0, 0xD8A0, 0x4B86, 0xD8A1, 0xD8FE, 0x1257, 0xD940, 0xD940, 0x4B87,
+ 0xD941, 0xD941, 0x22A2, 0xD942, 0xD942, 0x24AB, 0xD943, 0xD943, 0x4B88,
+ 0xD944, 0xD944, 0x24AF, 0xD945, 0xD945, 0x1EE8, 0xD946, 0xD946, 0x1F39,
+ 0xD947, 0xD947, 0x4B89, 0xD948, 0xD948, 0x1E48, 0xD949, 0xD949, 0x2070,
+ 0xD94A, 0xD94A, 0x1EA8, 0xD94B, 0xD94B, 0x4B8A, 0xD94C, 0xD94C, 0x24AC,
+ 0xD94D, 0xD94D, 0x1EF7, 0xD94E, 0xD94E, 0x2176, 0xD94F, 0xD94F, 0x24AD,
+ 0xD950, 0xD950, 0x4B8B, 0xD951, 0xD951, 0x207B, 0xD952, 0xD952, 0x1F45,
+ 0xD953, 0xD953, 0x24AA, 0xD954, 0xD954, 0x204B, 0xD955, 0xD955, 0x202F,
+ 0xD956, 0xD956, 0x1F5A, 0xD957, 0xD957, 0x24B0, 0xD958, 0xD958, 0x4B8C,
+ 0xD959, 0xD959, 0x22B7, 0xD95A, 0xD95A, 0x1F7F, 0xD95B, 0xD95B, 0x4B8D,
+ 0xD95C, 0xD95C, 0x2265, 0xD95D, 0xD962, 0x4B8E, 0xD963, 0xD963, 0x24B2,
+ 0xD964, 0xD964, 0x211B, 0xD965, 0xD965, 0x1E51, 0xD966, 0xD966, 0x4B94,
+ 0xD967, 0xD967, 0x24B4, 0xD968, 0xD96B, 0x4B95, 0xD96C, 0xD96C, 0x24B3,
+ 0xD96D, 0xD96D, 0x4B99, 0xD96E, 0xD96E, 0x1E9F, 0xD96F, 0xD96F, 0x4B9A,
+ 0xD970, 0xD970, 0x2118, 0xD971, 0xD971, 0x4B9B, 0xD972, 0xD972, 0x20B4,
+ 0xD973, 0xD973, 0x23AF, 0xD974, 0xD974, 0x21BB, 0xD975, 0xD975, 0x2072,
+ 0xD976, 0xD976, 0x1F95, 0xD977, 0xD977, 0x4B9C, 0xD978, 0xD978, 0x1F0A,
+ 0xD979, 0xD979, 0x24B6, 0xD97A, 0xD97B, 0x4B9D, 0xD97C, 0xD97C, 0x2291,
+ 0xD97D, 0xD97D, 0x24B5, 0xD97E, 0xD97E, 0x2278, 0xD980, 0xD980, 0x1ED4,
+ 0xD981, 0xD986, 0x4B9F, 0xD987, 0xD987, 0x1FF3, 0xD988, 0xD98C, 0x4BA5,
+ 0xD98D, 0xD98D, 0x22A9, 0xD98E, 0xD98E, 0x24B7, 0xD98F, 0xD98F, 0x1F28,
+ 0xD990, 0xD990, 0x2109, 0xD991, 0xD991, 0x22C7, 0xD992, 0xD996, 0x4BAA,
+ 0xD997, 0xD997, 0x24AE, 0xD998, 0xD998, 0x22B1, 0xD999, 0xD99A, 0x4BAF,
+ 0xD99B, 0xD99B, 0x2266, 0xD99C, 0xD99C, 0x4BB1, 0xD99D, 0xD99D, 0x225B,
+ 0xD99E, 0xD99E, 0x22C4, 0xD99F, 0xD99F, 0x4BB2, 0xD9A0, 0xD9A0, 0x2115,
+ 0xD9A1, 0xD9FE, 0x12B5, 0xDA40, 0xDA40, 0x4BB3, 0xDA41, 0xDA41, 0x222A,
+ 0xDA42, 0xDA42, 0x24B1, 0xDA43, 0xDA47, 0x4BB4, 0xDA48, 0xDA48, 0x213D,
+ 0xDA49, 0xDA4C, 0x4BB9, 0xDA4D, 0xDA4D, 0x1F15, 0xDA4E, 0xDA4E, 0x225C,
+ 0xDA4F, 0xDA72, 0x4BBD, 0xDA73, 0xDA73, 0x1F14, 0xDA74, 0xDA76, 0x4BE1,
+ 0xDA77, 0xDA77, 0x227A, 0xDA78, 0xDA7E, 0x4BE4, 0xDA80, 0xDA84, 0x4BEB,
+ 0xDA85, 0xDA85, 0x20EE, 0xDA86, 0xDA8D, 0x4BF0, 0xDA8E, 0xDA8E, 0x25F8,
+ 0xDA8F, 0xDAA0, 0x4BF8, 0xDAA1, 0xDAFE, 0x1313, 0xDB40, 0xDB5F, 0x4C0A,
+ 0xDB60, 0xDB60, 0x1F94, 0xDB61, 0xDB77, 0x4C2A, 0xDB78, 0xDB78, 0x2230,
+ 0xDB79, 0xDB7E, 0x4C41, 0xDB80, 0xDB83, 0x4C47, 0xDB84, 0xDB84, 0x25FD,
+ 0xDB85, 0xDB8A, 0x4C4B, 0xDB8B, 0xDB8B, 0x2600, 0xDB8C, 0xDB97, 0x4C51,
+ 0xDB98, 0xDB98, 0x2606, 0xDB99, 0xDBA0, 0x4C5D, 0xDBA1, 0xDBFE, 0x1371,
+ 0xDC40, 0xDC44, 0x4C65, 0xDC45, 0xDC45, 0x25FF, 0xDC46, 0xDC4E, 0x4C6A,
+ 0xDC4F, 0xDC4F, 0x25FC, 0xDC50, 0xDC50, 0x1E8C, 0xDC51, 0xDC51, 0x2602,
+ 0xDC52, 0xDC52, 0x4C73, 0xDC53, 0xDC53, 0x224D, 0xDC54, 0xDC54, 0x4C74,
+ 0xDC55, 0xDC55, 0x2604, 0xDC56, 0xDC56, 0x25FE, 0xDC57, 0xDC57, 0x2603,
+ 0xDC58, 0xDC5C, 0x4C75, 0xDC5D, 0xDC5D, 0x2601, 0xDC5E, 0xDC61, 0x4C7A,
+ 0xDC62, 0xDC62, 0x2605, 0xDC63, 0xDC65, 0x4C7E, 0xDC66, 0xDC66, 0x1EA3,
+ 0xDC67, 0xDC67, 0x2608, 0xDC68, 0xDC6A, 0x4C81, 0xDC6B, 0xDC6B, 0x2607,
+ 0xDC6C, 0xDC7B, 0x4C84, 0xDC7C, 0xDC7C, 0x20F0, 0xDC7D, 0xDC7E, 0x4C94,
+ 0xDC80, 0xDC86, 0x4C96, 0xDC87, 0xDC87, 0x1E7B, 0xDC88, 0xDC88, 0x2267,
+ 0xDC89, 0xDC89, 0x1F36, 0xDC8A, 0xDC8A, 0x1FD6, 0xDC8B, 0xDC8D, 0x4C9D,
+ 0xDC8E, 0xDC8E, 0x21E0, 0xDC8F, 0xDC8F, 0x4CA0, 0xDC90, 0xDC90, 0x248C,
+ 0xDC91, 0xDC96, 0x4CA1, 0xDC97, 0xDC97, 0x248D, 0xDC98, 0xDC9A, 0x4CA7,
+ 0xDC9B, 0xDC9B, 0x2102, 0xDC9C, 0xDC9F, 0x4CAA, 0xDCA0, 0xDCA0, 0x2494,
+ 0xDCA1, 0xDCFE, 0x13CF, 0xDD40, 0xDD45, 0x4CAE, 0xDD46, 0xDD46, 0x2493,
+ 0xDD47, 0xDD4C, 0x4CB4, 0xDD4D, 0xDD4D, 0x248E, 0xDD4E, 0xDD52, 0x4CBA,
+ 0xDD53, 0xDD53, 0x2299, 0xDD54, 0xDD54, 0x2491, 0xDD55, 0xDD55, 0x2496,
+ 0xDD56, 0xDD56, 0x248F, 0xDD57, 0xDD57, 0x2492, 0xDD58, 0xDD58, 0x4CBF,
+ 0xDD59, 0xDD59, 0x2497, 0xDD5A, 0xDD5D, 0x4CC0, 0xDD5E, 0xDD5E, 0x1FB1,
+ 0xDD5F, 0xDD5F, 0x4CC4, 0xDD60, 0xDD60, 0x249A, 0xDD61, 0xDD61, 0x4CC5,
+ 0xDD62, 0xDD62, 0x2499, 0xDD63, 0xDD63, 0x4CC6, 0xDD64, 0xDD64, 0x2258,
+ 0xDD65, 0xDD65, 0x2498, 0xDD66, 0xDD6C, 0x4CC7, 0xDD6D, 0xDD6D, 0x249B,
+ 0xDD6E, 0xDD6E, 0x4CCE, 0xDD6F, 0xDD6F, 0x1F09, 0xDD70, 0xDD70, 0x20E6,
+ 0xDD71, 0xDD75, 0x4CCF, 0xDD76, 0xDD76, 0x2026, 0xDD77, 0xDD77, 0x249F,
+ 0xDD78, 0xDD78, 0x1F59, 0xDD79, 0xDD7A, 0x249D, 0xDD7B, 0xDD7E, 0x4CD4,
+ 0xDD80, 0xDD80, 0x4CD8, 0xDD81, 0xDD81, 0x1F3B, 0xDD82, 0xDD82, 0x249C,
+ 0xDD83, 0xDD84, 0x4CD9, 0xDD85, 0xDD85, 0x1E3A, 0xDD86, 0xDD86, 0x205B,
+ 0xDD87, 0xDD8A, 0x4CDB, 0xDD8B, 0xDD8B, 0x1F70, 0xDD8C, 0xDD8E, 0x4CDF,
+ 0xDD8F, 0xDD8F, 0x24A0, 0xDD90, 0xDD93, 0x4CE2, 0xDD94, 0xDD94, 0x213B,
+ 0xDD95, 0xDD96, 0x4CE6, 0xDD97, 0xDD97, 0x1F07, 0xDD98, 0xDD99, 0x4CE8,
+ 0xDD9A, 0xDD9A, 0x2270, 0xDD9B, 0xDD9B, 0x2237, 0xDD9C, 0xDD9D, 0x4CEA,
+ 0xDD9E, 0xDD9E, 0x24D2, 0xDD9F, 0xDD9F, 0x4CEC, 0xDDA0, 0xDDA0, 0x21B3,
+ 0xDDA1, 0xDDFE, 0x142D, 0xDE40, 0xDE40, 0x2245, 0xDE41, 0xDE41, 0x24A1,
+ 0xDE42, 0xDE43, 0x4CED, 0xDE44, 0xDE44, 0x22A8, 0xDE45, 0xDE47, 0x4CEF,
+ 0xDE48, 0xDE48, 0x227C, 0xDE49, 0xDE49, 0x1FB0, 0xDE4A, 0xDE4E, 0x4CF2,
+ 0xDE4F, 0xDE4F, 0x24A2, 0xDE50, 0xDE59, 0x4CF7, 0xDE5A, 0xDE5A, 0x1F46,
+ 0xDE5B, 0xDE5B, 0x4D01, 0xDE5C, 0xDE5C, 0x2380, 0xDE5D, 0xDE5D, 0x2495,
+ 0xDE5E, 0xDE5E, 0x4D02, 0xDE5F, 0xDE5F, 0x2490, 0xDE60, 0xDE6A, 0x4D03,
+ 0xDE6B, 0xDE6B, 0x1E30, 0xDE6C, 0xDE6E, 0x4D0E, 0xDE6F, 0xDE6F, 0x1E9D,
+ 0xDE70, 0xDE70, 0x1E4B, 0xDE71, 0xDE71, 0x1E4A, 0xDE72, 0xDE72, 0x20AA,
+ 0xDE73, 0xDE7E, 0x4D11, 0xDE80, 0xDE91, 0x4D1D, 0xDE92, 0xDE92, 0x267B,
+ 0xDE93, 0xDE9E, 0x4D2F, 0xDE9F, 0xDE9F, 0x23F2, 0xDEA0, 0xDEA0, 0x4D3B,
+ 0xDEA1, 0xDEFE, 0x148B, 0xDF40, 0xDF40, 0x227E, 0xDF41, 0xDF41, 0x4D3C,
+ 0xDF42, 0xDF42, 0x2019, 0xDF43, 0xDF4C, 0x4D3D, 0xDF4D, 0xDF4D, 0x1FBB,
+ 0xDF4E, 0xDF5B, 0x4D47, 0xDF5C, 0xDF5C, 0x2253, 0xDF5D, 0xDF5D, 0x4D55,
+ 0xDF5E, 0xDF5E, 0x1F3E, 0xDF5F, 0xDF5F, 0x1EA6, 0xDF60, 0xDF60, 0x218E,
+ 0xDF61, 0xDF63, 0x4D56, 0xDF64, 0xDF64, 0x21EC, 0xDF65, 0xDF65, 0x4D59,
+ 0xDF66, 0xDF66, 0x1EBE, 0xDF67, 0xDF67, 0x4D5A, 0xDF68, 0xDF68, 0x224A,
+ 0xDF69, 0xDF6C, 0x4D5B, 0xDF6D, 0xDF6D, 0x2133, 0xDF6E, 0xDF73, 0x4D5F,
+ 0xDF74, 0xDF74, 0x1E84, 0xDF75, 0xDF76, 0x4D65, 0xDF77, 0xDF77, 0x20CF,
+ 0xDF78, 0xDF78, 0x21E2, 0xDF79, 0xDF79, 0x4D67, 0xDF7A, 0xDF7A, 0x220F,
+ 0xDF7B, 0xDF7B, 0x4D68, 0xDF7C, 0xDF7C, 0x2029, 0xDF7D, 0xDF7D, 0x4D69,
+ 0xDF7E, 0xDF7E, 0x2073, 0xDF80, 0xDF80, 0x1F55, 0xDF81, 0xDF82, 0x4D6A,
+ 0xDF83, 0xDF83, 0x23F1, 0xDF84, 0xDF84, 0x4D6C, 0xDF85, 0xDF85, 0x1E46,
+ 0xDF86, 0xDF88, 0x4D6D, 0xDF89, 0xDF89, 0x2063, 0xDF8A, 0xDF8A, 0x23F3,
+ 0xDF8B, 0xDFA0, 0x4D70, 0xDFA1, 0xDFFE, 0x14E9, 0xE040, 0xE04F, 0x4D86,
+ 0xE050, 0xE050, 0x231E, 0xE051, 0xE05C, 0x4D96, 0xE05D, 0xE05D, 0x2233,
+ 0xE05E, 0xE068, 0x4DA2, 0xE069, 0xE069, 0x2320, 0xE06A, 0xE06B, 0x4DAD,
+ 0xE06C, 0xE06C, 0x21C7, 0xE06D, 0xE074, 0x4DAF, 0xE075, 0xE075, 0x22BC,
+ 0xE076, 0xE076, 0x4DB7, 0xE077, 0xE077, 0x231C, 0xE078, 0xE078, 0x4DB8,
+ 0xE079, 0xE079, 0x2251, 0xE07A, 0xE07E, 0x4DB9, 0xE080, 0xE086, 0x4DBE,
+ 0xE087, 0xE087, 0x1EBB, 0xE088, 0xE08C, 0x4DC5, 0xE08D, 0xE08D, 0x2287,
+ 0xE08E, 0xE08E, 0x4DCA, 0xE08F, 0xE08F, 0x202D, 0xE090, 0xE090, 0x1EAB,
+ 0xE091, 0xE091, 0x4DCB, 0xE092, 0xE092, 0x231D, 0xE093, 0xE093, 0x4DCC,
+ 0xE094, 0xE094, 0x231F, 0xE095, 0xE096, 0x4DCD, 0xE097, 0xE097, 0x231B,
+ 0xE098, 0xE0A0, 0x4DCF, 0xE0A1, 0xE0FE, 0x1547, 0xE140, 0xE141, 0x4DD8,
+ 0xE142, 0xE142, 0x2321, 0xE143, 0xE163, 0x4DDA, 0xE164, 0xE164, 0x2255,
+ 0xE165, 0xE167, 0x4DFB, 0xE168, 0xE168, 0x1E8F, 0xE169, 0xE173, 0x4DFE,
+ 0xE174, 0xE174, 0x220C, 0xE175, 0xE175, 0x1FA4, 0xE176, 0xE17E, 0x4E09,
+ 0xE180, 0xE183, 0x4E12, 0xE184, 0xE184, 0x209B, 0xE185, 0xE185, 0x21D8,
+ 0xE186, 0xE186, 0x4E16, 0xE187, 0xE187, 0x25FA, 0xE188, 0xE188, 0x4E17,
+ 0xE189, 0xE189, 0x25F9, 0xE18A, 0xE18B, 0x4E18, 0xE18C, 0xE18C, 0x2134,
+ 0xE18D, 0xE18D, 0x4E1A, 0xE18E, 0xE190, 0x24F3, 0xE191, 0xE191, 0x24F8,
+ 0xE192, 0xE192, 0x4E1B, 0xE193, 0xE193, 0x24F7, 0xE194, 0xE194, 0x1EC8,
+ 0xE195, 0xE195, 0x24F6, 0xE196, 0xE197, 0x4E1C, 0xE198, 0xE198, 0x2280,
+ 0xE199, 0xE19D, 0x4E1E, 0xE19E, 0xE19E, 0x1EC5, 0xE19F, 0xE19F, 0x24FB,
+ 0xE1A0, 0xE1A0, 0x4E23, 0xE1A1, 0xE1FE, 0x15A5, 0xE240, 0xE240, 0x4E24,
+ 0xE241, 0xE241, 0x24FA, 0xE242, 0xE242, 0x4E25, 0xE243, 0xE243, 0x1EED,
+ 0xE244, 0xE24E, 0x4E26, 0xE24F, 0xE24F, 0x24FD, 0xE250, 0xE250, 0x4E31,
+ 0xE251, 0xE251, 0x24F9, 0xE252, 0xE252, 0x4E32, 0xE253, 0xE253, 0x24FE,
+ 0xE254, 0xE254, 0x20CD, 0xE255, 0xE259, 0x4E33, 0xE25A, 0xE25A, 0x2508,
+ 0xE25B, 0xE25B, 0x2504, 0xE25C, 0xE25D, 0x4E38, 0xE25E, 0xE25E, 0x2506,
+ 0xE25F, 0xE261, 0x4E3A, 0xE262, 0xE262, 0x24FF, 0xE263, 0xE263, 0x2090,
+ 0xE264, 0xE266, 0x4E3D, 0xE267, 0xE267, 0x1EDD, 0xE268, 0xE268, 0x1F25,
+ 0xE269, 0xE269, 0x4E40, 0xE26A, 0xE26A, 0x2503, 0xE26B, 0xE26B, 0x2502,
+ 0xE26C, 0xE26D, 0x4E41, 0xE26E, 0xE26E, 0x1E7A, 0xE26F, 0xE26F, 0x20A6,
+ 0xE270, 0xE277, 0x4E43, 0xE278, 0xE278, 0x1FD5, 0xE279, 0xE27C, 0x4E4B,
+ 0xE27D, 0xE27D, 0x1F11, 0xE27E, 0xE27E, 0x4E4F, 0xE280, 0xE280, 0x2507,
+ 0xE281, 0xE281, 0x2500, 0xE282, 0xE282, 0x2505, 0xE283, 0xE288, 0x4E50,
+ 0xE289, 0xE289, 0x2519, 0xE28A, 0xE28A, 0x4E56, 0xE28B, 0xE28B, 0x2515,
+ 0xE28C, 0xE28D, 0x4E57, 0xE28E, 0xE28E, 0x250C, 0xE28F, 0xE28F, 0x2031,
+ 0xE290, 0xE291, 0x4E59, 0xE292, 0xE292, 0x250B, 0xE293, 0xE293, 0x250F,
+ 0xE294, 0xE294, 0x251A, 0xE295, 0xE295, 0x2509, 0xE296, 0xE297, 0x4E5B,
+ 0xE298, 0xE298, 0x250E, 0xE299, 0xE299, 0x2234, 0xE29A, 0xE29A, 0x2513,
+ 0xE29B, 0xE29B, 0x1F80, 0xE29C, 0xE29F, 0x4E5D, 0xE2A0, 0xE2A0, 0x2501,
+ 0xE2A1, 0xE2FE, 0x1603, 0xE340, 0xE341, 0x4E61, 0xE342, 0xE342, 0x2517,
+ 0xE343, 0xE343, 0x2516, 0xE344, 0xE346, 0x4E63, 0xE347, 0xE347, 0x2518,
+ 0xE348, 0xE34A, 0x4E66, 0xE34B, 0xE34B, 0x1E56, 0xE34C, 0xE34E, 0x4E69,
+ 0xE34F, 0xE34F, 0x250D, 0xE350, 0xE350, 0x4E6C, 0xE351, 0xE351, 0x20D3,
+ 0xE352, 0xE353, 0x4E6D, 0xE354, 0xE354, 0x207A, 0xE355, 0xE355, 0x20CE,
+ 0xE356, 0xE357, 0x4E6F, 0xE358, 0xE358, 0x2510, 0xE359, 0xE35B, 0x4E71,
+ 0xE35C, 0xE35C, 0x1E55, 0xE35D, 0xE35F, 0x4E74, 0xE360, 0xE360, 0x250A,
+ 0xE361, 0xE365, 0x4E77, 0xE366, 0xE367, 0x2511, 0xE368, 0xE370, 0x4E7C,
+ 0xE371, 0xE371, 0x1FAA, 0xE372, 0xE372, 0x4E85, 0xE373, 0xE373, 0x251E,
+ 0xE374, 0xE374, 0x1F1F, 0xE375, 0xE377, 0x4E86, 0xE378, 0xE378, 0x252D,
+ 0xE379, 0xE379, 0x221D, 0xE37A, 0xE37B, 0x4E89, 0xE37C, 0xE37C, 0x2532,
+ 0xE37D, 0xE37D, 0x4E8B, 0xE37E, 0xE37E, 0x217B, 0xE380, 0xE389, 0x4E8C,
+ 0xE38A, 0xE38A, 0x21AF, 0xE38B, 0xE38B, 0x4E96, 0xE38C, 0xE38C, 0x252C,
+ 0xE38D, 0xE38E, 0x4E97, 0xE38F, 0xE38F, 0x2528, 0xE390, 0xE390, 0x4E99,
+ 0xE391, 0xE391, 0x208C, 0xE392, 0xE392, 0x4E9A, 0xE393, 0xE393, 0x252F,
+ 0xE394, 0xE394, 0x4E9B, 0xE395, 0xE395, 0x21BC, 0xE396, 0xE398, 0x4E9C,
+ 0xE399, 0xE399, 0x251D, 0xE39A, 0xE39B, 0x4E9F, 0xE39C, 0xE39C, 0x2535,
+ 0xE39D, 0xE39D, 0x4EA1, 0xE39E, 0xE39E, 0x220D, 0xE39F, 0xE39F, 0x2526,
+ 0xE3A0, 0xE3A0, 0x4EA2, 0xE3A1, 0xE3FE, 0x1661, 0xE440, 0xE440, 0x2534,
+ 0xE441, 0xE441, 0x252A, 0xE442, 0xE442, 0x251F, 0xE443, 0xE443, 0x2531,
+ 0xE444, 0xE444, 0x251C, 0xE445, 0xE447, 0x4EA3, 0xE448, 0xE448, 0x2525,
+ 0xE449, 0xE44D, 0x4EA6, 0xE44E, 0xE44E, 0x21CD, 0xE44F, 0xE44F, 0x4EAB,
+ 0xE450, 0xE450, 0x21DA, 0xE451, 0xE451, 0x4EAC, 0xE452, 0xE452, 0x2172,
+ 0xE453, 0xE453, 0x253E, 0xE454, 0xE457, 0x4EAD, 0xE458, 0xE458, 0x204F,
+ 0xE459, 0xE459, 0x4EB1, 0xE45A, 0xE45A, 0x2543, 0xE45B, 0xE45B, 0x4EB2,
+ 0xE45C, 0xE45C, 0x21D7, 0xE45D, 0xE45D, 0x4EB3, 0xE45E, 0xE45E, 0x1E3C,
+ 0xE45F, 0xE461, 0x4EB4, 0xE462, 0xE462, 0x2529, 0xE463, 0xE464, 0x4EB7,
+ 0xE465, 0xE465, 0x2521, 0xE466, 0xE467, 0x4EB9, 0xE468, 0xE468, 0x1EFF,
+ 0xE469, 0xE472, 0x4EBB, 0xE473, 0xE473, 0x253F, 0xE474, 0xE474, 0x4EC5,
+ 0xE475, 0xE475, 0x2544, 0xE476, 0xE478, 0x4EC6, 0xE479, 0xE479, 0x2523,
+ 0xE47A, 0xE47A, 0x1E90, 0xE47B, 0xE47B, 0x253A, 0xE47C, 0xE47C, 0x2545,
+ 0xE47D, 0xE47D, 0x4EC9, 0xE47E, 0xE47E, 0x253D, 0xE480, 0xE480, 0x4ECA,
+ 0xE481, 0xE481, 0x20C1, 0xE482, 0xE483, 0x4ECB, 0xE484, 0xE484, 0x2103,
+ 0xE485, 0xE485, 0x2520, 0xE486, 0xE486, 0x253C, 0xE487, 0xE487, 0x253B,
+ 0xE488, 0xE488, 0x2538, 0xE489, 0xE48C, 0x4ECD, 0xE48D, 0xE48D, 0x2540,
+ 0xE48E, 0xE48E, 0x4ED1, 0xE48F, 0xE48F, 0x1FCD, 0xE490, 0xE492, 0x4ED2,
+ 0xE493, 0xE493, 0x1F18, 0xE494, 0xE497, 0x4ED5, 0xE498, 0xE498, 0x254B,
+ 0xE499, 0xE49C, 0x4ED9, 0xE49D, 0xE49D, 0x2547, 0xE49E, 0xE49F, 0x254F,
+ 0xE4A0, 0xE4A0, 0x4EDD, 0xE4A1, 0xE4FE, 0x16BF, 0xE540, 0xE545, 0x4EDE,
+ 0xE546, 0xE546, 0x22B0, 0xE547, 0xE547, 0x4EE4, 0xE548, 0xE548, 0x2546,
+ 0xE549, 0xE54A, 0x4EE5, 0xE54B, 0xE54B, 0x254C, 0xE54C, 0xE54D, 0x4EE7,
+ 0xE54E, 0xE54E, 0x1E9A, 0xE54F, 0xE54F, 0x2552, 0xE550, 0xE550, 0x2530,
+ 0xE551, 0xE551, 0x2549, 0xE552, 0xE554, 0x4EE9, 0xE555, 0xE555, 0x2551,
+ 0xE556, 0xE556, 0x1ECA, 0xE557, 0xE557, 0x4EEC, 0xE558, 0xE558, 0x20D2,
+ 0xE559, 0xE55B, 0x4EED, 0xE55C, 0xE55C, 0x1FB8, 0xE55D, 0xE55D, 0x4EF0,
+ 0xE55E, 0xE55E, 0x2079, 0xE55F, 0xE560, 0x4EF1, 0xE561, 0xE561, 0x21AB,
+ 0xE562, 0xE563, 0x4EF3, 0xE564, 0xE564, 0x254D, 0xE565, 0xE565, 0x1EA5,
+ 0xE566, 0xE567, 0x4EF5, 0xE568, 0xE568, 0x204C, 0xE569, 0xE569, 0x2080,
+ 0xE56A, 0xE56B, 0x4EF7, 0xE56C, 0xE56C, 0x266D, 0xE56D, 0xE56D, 0x4EF9,
+ 0xE56E, 0xE56E, 0x2537, 0xE56F, 0xE574, 0x4EFA, 0xE575, 0xE575, 0x254A,
+ 0xE576, 0xE576, 0x21B8, 0xE577, 0xE577, 0x4F00, 0xE578, 0xE578, 0x254E,
+ 0xE579, 0xE57A, 0x4F01, 0xE57B, 0xE57B, 0x24FC, 0xE57C, 0xE57C, 0x2554,
+ 0xE57D, 0xE57E, 0x4F03, 0xE580, 0xE580, 0x4F05, 0xE581, 0xE581, 0x1F3C,
+ 0xE582, 0xE582, 0x4F06, 0xE583, 0xE583, 0x1ED5, 0xE584, 0xE589, 0x4F07,
+ 0xE58A, 0xE58A, 0x2556, 0xE58B, 0xE58D, 0x4F0D, 0xE58E, 0xE58E, 0x2268,
+ 0xE58F, 0xE590, 0x4F10, 0xE591, 0xE591, 0x1ED6, 0xE592, 0xE599, 0x4F12,
+ 0xE59A, 0xE59A, 0x2557, 0xE59B, 0xE59B, 0x2553, 0xE59C, 0xE59E, 0x4F1A,
+ 0xE59F, 0xE59F, 0x2548, 0xE5A0, 0xE5A0, 0x4F1D, 0xE5A1, 0xE5FE, 0x171D,
+ 0xE640, 0xE640, 0x20DC, 0xE641, 0xE643, 0x4F1E, 0xE644, 0xE644, 0x2559,
+ 0xE645, 0xE648, 0x4F21, 0xE649, 0xE649, 0x1F97, 0xE64A, 0xE64A, 0x2555,
+ 0xE64B, 0xE64D, 0x4F25, 0xE64E, 0xE64E, 0x227D, 0xE64F, 0xE651, 0x4F28,
+ 0xE652, 0xE652, 0x257E, 0xE653, 0xE655, 0x4F2B, 0xE656, 0xE656, 0x207C,
+ 0xE657, 0xE657, 0x4F2E, 0xE658, 0xE658, 0x255A, 0xE659, 0xE65A, 0x4F2F,
+ 0xE65B, 0xE65B, 0x255E, 0xE65C, 0xE65D, 0x4F31, 0xE65E, 0xE65E, 0x1E34,
+ 0xE65F, 0xE668, 0x4F33, 0xE669, 0xE669, 0x215E, 0xE66A, 0xE66A, 0x4F3D,
+ 0xE66B, 0xE66B, 0x2560, 0xE66C, 0xE674, 0x4F3E, 0xE675, 0xE675, 0x21A2,
+ 0xE676, 0xE676, 0x2354, 0xE677, 0xE678, 0x4F47, 0xE679, 0xE679, 0x2563,
+ 0xE67A, 0xE67A, 0x2527, 0xE67B, 0xE67B, 0x4F49, 0xE67C, 0xE67C, 0x252E,
+ 0xE67D, 0xE67D, 0x2558, 0xE67E, 0xE67E, 0x4F4A, 0xE680, 0xE680, 0x1F1B,
+ 0xE681, 0xE681, 0x4F4B, 0xE682, 0xE682, 0x2283, 0xE683, 0xE683, 0x4F4C,
+ 0xE684, 0xE684, 0x2564, 0xE685, 0xE686, 0x4F4D, 0xE687, 0xE687, 0x20A0,
+ 0xE688, 0xE688, 0x4F4F, 0xE689, 0xE689, 0x2565, 0xE68A, 0xE68B, 0x4F50,
+ 0xE68C, 0xE68C, 0x2561, 0xE68D, 0xE692, 0x4F52, 0xE693, 0xE693, 0x2562,
+ 0xE694, 0xE696, 0x4F58, 0xE697, 0xE697, 0x256C, 0xE698, 0xE69A, 0x4F5B,
+ 0xE69B, 0xE69B, 0x256D, 0xE69C, 0xE69C, 0x2020, 0xE69D, 0xE69E, 0x4F5E,
+ 0xE69F, 0xE69F, 0x255F, 0xE6A0, 0xE6A0, 0x256A, 0xE6A1, 0xE6FE, 0x177B,
+ 0xE740, 0xE742, 0x4F60, 0xE743, 0xE743, 0x256E, 0xE744, 0xE747, 0x4F63,
+ 0xE748, 0xE748, 0x2539, 0xE749, 0xE749, 0x255C, 0xE74A, 0xE74C, 0x4F67,
+ 0xE74D, 0xE74E, 0x2568, 0xE74F, 0xE74F, 0x256B, 0xE750, 0xE750, 0x1E6F,
+ 0xE751, 0xE751, 0x4F6A, 0xE752, 0xE752, 0x1FC4, 0xE753, 0xE753, 0x2567,
+ 0xE754, 0xE754, 0x4F6B, 0xE755, 0xE755, 0x255B, 0xE756, 0xE758, 0x4F6C,
+ 0xE759, 0xE759, 0x261D, 0xE75A, 0xE765, 0x4F6F, 0xE766, 0xE766, 0x252B,
+ 0xE767, 0xE767, 0x4F7B, 0xE768, 0xE768, 0x2571, 0xE769, 0xE769, 0x4F7C,
+ 0xE76A, 0xE76A, 0x2577, 0xE76B, 0xE773, 0x4F7D, 0xE774, 0xE774, 0x2522,
+ 0xE775, 0xE77B, 0x4F86, 0xE77C, 0xE77C, 0x2533, 0xE77D, 0xE77E, 0x4F8D,
+ 0xE780, 0xE781, 0x4F8F, 0xE782, 0xE782, 0x202A, 0xE783, 0xE783, 0x4F91,
+ 0xE784, 0xE784, 0x2536, 0xE785, 0xE785, 0x2573, 0xE786, 0xE786, 0x256F,
+ 0xE787, 0xE789, 0x4F92, 0xE78A, 0xE78A, 0x2293, 0xE78B, 0xE78B, 0x2578,
+ 0xE78C, 0xE78E, 0x4F95, 0xE78F, 0xE78F, 0x2570, 0xE790, 0xE791, 0x4F98,
+ 0xE792, 0xE792, 0x2575, 0xE793, 0xE797, 0x4F9A, 0xE798, 0xE799, 0x2541,
+ 0xE79A, 0xE79A, 0x255D, 0xE79B, 0xE79F, 0x4F9F, 0xE7A0, 0xE7A0, 0x201A,
+ 0xE7A1, 0xE7FE, 0x17D9, 0xE840, 0xE842, 0x4FA4, 0xE843, 0xE843, 0x257A,
+ 0xE844, 0xE844, 0x2006, 0xE845, 0xE845, 0x4FA7, 0xE846, 0xE846, 0x2177,
+ 0xE847, 0xE848, 0x4FA8, 0xE849, 0xE849, 0x251B, 0xE84A, 0xE84A, 0x4FAA,
+ 0xE84B, 0xE84B, 0x2524, 0xE84C, 0xE84E, 0x4FAB, 0xE84F, 0xE84F, 0x257B,
+ 0xE850, 0xE853, 0x4FAE, 0xE854, 0xE854, 0x22A3, 0xE855, 0xE859, 0x4FB2,
+ 0xE85A, 0xE85A, 0x2579, 0xE85B, 0xE85B, 0x4FB7, 0xE85C, 0xE85C, 0x2566,
+ 0xE85D, 0xE861, 0x4FB8, 0xE862, 0xE862, 0x1F93, 0xE863, 0xE863, 0x4FBD,
+ 0xE864, 0xE864, 0x257C, 0xE865, 0xE86F, 0x4FBE, 0xE870, 0xE870, 0x2514,
+ 0xE871, 0xE872, 0x4FC9, 0xE873, 0xE873, 0x257D, 0xE874, 0xE874, 0x4FCB,
+ 0xE875, 0xE875, 0x2572, 0xE876, 0xE87B, 0x4FCC, 0xE87C, 0xE87C, 0x2574,
+ 0xE87D, 0xE87E, 0x4FD2, 0xE880, 0xE880, 0x224E, 0xE881, 0xE881, 0x4FD4,
+ 0xE882, 0xE882, 0x21C6, 0xE883, 0xE886, 0x4FD5, 0xE887, 0xE887, 0x209F,
+ 0xE888, 0xE888, 0x4FD9, 0xE889, 0xE889, 0x2576, 0xE88A, 0xE88B, 0x4FDA,
+ 0xE88C, 0xE88C, 0x2064, 0xE88D, 0xE88D, 0x22BF, 0xE88E, 0xE88E, 0x261C,
+ 0xE88F, 0xE88F, 0x225E, 0xE890, 0xE8A0, 0x4FDC, 0xE8A1, 0xE8FE, 0x1837,
+ 0xE940, 0xE94B, 0x4FED, 0xE94C, 0xE94C, 0x1E75, 0xE94D, 0xE953, 0x4FF9,
+ 0xE954, 0xE954, 0x207D, 0xE955, 0xE955, 0x5000, 0xE956, 0xE956, 0x23BF,
+ 0xE957, 0xE957, 0x2113, 0xE958, 0xE959, 0x5001, 0xE95A, 0xE95A, 0x23C0,
+ 0xE95B, 0xE95C, 0x5003, 0xE95D, 0xE95D, 0x1E45, 0xE95E, 0xE95E, 0x5005,
+ 0xE95F, 0xE95F, 0x1FD8, 0xE960, 0xE960, 0x23C4, 0xE961, 0xE961, 0x5006,
+ 0xE962, 0xE962, 0x23C2, 0xE963, 0xE963, 0x2104, 0xE964, 0xE964, 0x5007,
+ 0xE965, 0xE965, 0x21BD, 0xE966, 0xE966, 0x5008, 0xE967, 0xE967, 0x1F87,
+ 0xE968, 0xE968, 0x23C3, 0xE969, 0xE96B, 0x5009, 0xE96C, 0xE96C, 0x2269,
+ 0xE96D, 0xE974, 0x500C, 0xE975, 0xE975, 0x1F43, 0xE976, 0xE976, 0x5014,
+ 0xE977, 0xE977, 0x1F1E, 0xE978, 0xE978, 0x2679, 0xE979, 0xE979, 0x1EEB,
+ 0xE97A, 0xE97B, 0x5015, 0xE97C, 0xE97C, 0x1F35, 0xE97D, 0xE97D, 0x208A,
+ 0xE97E, 0xE97E, 0x5017, 0xE980, 0xE980, 0x23C7, 0xE981, 0xE981, 0x23C9,
+ 0xE982, 0xE982, 0x23C6, 0xE983, 0xE986, 0x5018, 0xE987, 0xE987, 0x224F,
+ 0xE988, 0xE98A, 0x501C, 0xE98B, 0xE98B, 0x23CB, 0xE98C, 0xE98D, 0x501F,
+ 0xE98E, 0xE98E, 0x21F3, 0xE98F, 0xE98F, 0x5021, 0xE990, 0xE990, 0x21F7,
+ 0xE991, 0xE991, 0x23CF, 0xE992, 0xE992, 0x23CE, 0xE993, 0xE993, 0x23CA,
+ 0xE994, 0xE994, 0x23CD, 0xE995, 0xE997, 0x5022, 0xE998, 0xE998, 0x23D0,
+ 0xE999, 0xE99A, 0x5025, 0xE99B, 0xE99B, 0x266C, 0xE99C, 0xE99C, 0x5027,
+ 0xE99D, 0xE99D, 0x23C1, 0xE99E, 0xE99E, 0x5028, 0xE99F, 0xE99F, 0x1FEE,
+ 0xE9A0, 0xE9A0, 0x23D1, 0xE9A1, 0xE9FE, 0x1895, 0xEA40, 0xEA40, 0x1FF8,
+ 0xEA41, 0xEA43, 0x5029, 0xEA44, 0xEA44, 0x23D3, 0xEA45, 0xEA47, 0x502C,
+ 0xEA48, 0xEA48, 0x23D2, 0xEA49, 0xEA49, 0x23D4, 0xEA4A, 0xEA4A, 0x1E98,
+ 0xEA4B, 0xEA4F, 0x502F, 0xEA50, 0xEA50, 0x1F2C, 0xEA51, 0xEA51, 0x5034,
+ 0xEA52, 0xEA52, 0x23D5, 0xEA53, 0xEA54, 0x5035, 0xEA55, 0xEA55, 0x1E71,
+ 0xEA56, 0xEA56, 0x2691, 0xEA57, 0xEA58, 0x5037, 0xEA59, 0xEA59, 0x23C5,
+ 0xEA5A, 0xEA7E, 0x5039, 0xEA80, 0xEA80, 0x231A, 0xEA81, 0xEA83, 0x505E,
+ 0xEA84, 0xEA84, 0x2114, 0xEA85, 0xEA86, 0x5061, 0xEA87, 0xEA87, 0x2284,
+ 0xEA88, 0xEA8D, 0x5063, 0xEA8E, 0xEA8E, 0x221C, 0xEA8F, 0xEA8F, 0x5069,
+ 0xEA90, 0xEA90, 0x1E7E, 0xEA91, 0xEA91, 0x204D, 0xEA92, 0xEA95, 0x506A,
+ 0xEA96, 0xEA96, 0x2201, 0xEA97, 0xEA9F, 0x506E, 0xEAA0, 0xEAA0, 0x1ED9,
+ 0xEAA1, 0xEAFE, 0x18F3, 0xEB40, 0xEB40, 0x5077, 0xEB41, 0xEB41, 0x1FB2,
+ 0xEB42, 0xEB44, 0x5078, 0xEB45, 0xEB45, 0x2252, 0xEB46, 0xEB47, 0x507B,
+ 0xEB48, 0xEB48, 0x1F79, 0xEB49, 0xEB52, 0x507D, 0xEB53, 0xEB53, 0x2157,
+ 0xEB54, 0xEB54, 0x5087, 0xEB55, 0xEB55, 0x21BF, 0xEB56, 0xEB5A, 0x5088,
+ 0xEB5B, 0xEB5B, 0x221F, 0xEB5C, 0xEB5C, 0x508D, 0xEB5D, 0xEB5D, 0x203D,
+ 0xEB5E, 0xEB5F, 0x508E, 0xEB60, 0xEB60, 0x2015, 0xEB61, 0xEB61, 0x5090,
+ 0xEB62, 0xEB62, 0x26A5, 0xEB63, 0xEB6C, 0x5091, 0xEB6D, 0xEB6D, 0x2156,
+ 0xEB6E, 0xEB6F, 0x509B, 0xEB70, 0xEB70, 0x2144, 0xEB71, 0xEB71, 0x509D,
+ 0xEB72, 0xEB72, 0x1E91, 0xEB73, 0xEB73, 0x2257, 0xEB74, 0xEB77, 0x509E,
+ 0xEB78, 0xEB78, 0x200A, 0xEB79, 0xEB79, 0x2092, 0xEB7A, 0xEB7E, 0x50A2,
+ 0xEB80, 0xEB84, 0x50A7, 0xEB85, 0xEB85, 0x2250, 0xEB86, 0xEB89, 0x50AC,
+ 0xEB8A, 0xEB8A, 0x1EC3, 0xEB8B, 0xEBA0, 0x50B0, 0xEBA1, 0xEBFE, 0x1951,
+ 0xEC40, 0xEC45, 0x50C6, 0xEC46, 0xEC46, 0x21A8, 0xEC47, 0xEC55, 0x50CC,
+ 0xEC56, 0xEC56, 0x260D, 0xEC57, 0xEC59, 0x50DB, 0xEC5A, 0xEC5A, 0x260C,
+ 0xEC5B, 0xEC5B, 0x50DE, 0xEC5C, 0xEC5C, 0x260E, 0xEC5D, 0xEC5F, 0x50DF,
+ 0xEC60, 0xEC60, 0x2032, 0xEC61, 0xEC6D, 0x50E2, 0xEC6E, 0xEC6E, 0x260B,
+ 0xEC6F, 0xEC75, 0x50EF, 0xEC76, 0xEC76, 0x22C3, 0xEC77, 0xEC7E, 0x50F6,
+ 0xEC80, 0xEC95, 0x50FE, 0xEC96, 0xEC96, 0x1F23, 0xEC97, 0xECA0, 0x5114,
+ 0xECA1, 0xECFE, 0x19AF, 0xED40, 0xED45, 0x511E, 0xED46, 0xED46, 0x2695,
+ 0xED47, 0xED57, 0x5124, 0xED58, 0xED58, 0x265E, 0xED59, 0xED5D, 0x5135,
+ 0xED5E, 0xED5E, 0x265D, 0xED5F, 0xED60, 0x513A, 0xED61, 0xED61, 0x2692,
+ 0xED62, 0xED63, 0x513C, 0xED64, 0xED64, 0x265F, 0xED65, 0xED65, 0x513E,
+ 0xED66, 0xED66, 0x218D, 0xED67, 0xED67, 0x20FD, 0xED68, 0xED6D, 0x513F,
+ 0xED6E, 0xED6E, 0x1F40, 0xED6F, 0xED73, 0x5145, 0xED74, 0xED74, 0x2465,
+ 0xED75, 0xED76, 0x514A, 0xED77, 0xED77, 0x2467, 0xED78, 0xED78, 0x514C,
+ 0xED79, 0xED79, 0x2466, 0xED7A, 0xED7E, 0x514D, 0xED80, 0xED90, 0x5152,
+ 0xED91, 0xED91, 0x21C9, 0xED92, 0xED92, 0x5163, 0xED93, 0xED93, 0x2209,
+ 0xED94, 0xED94, 0x1EC9, 0xED95, 0xED95, 0x20E9, 0xED96, 0xED96, 0x5164,
+ 0xED97, 0xED97, 0x21CA, 0xED98, 0xED98, 0x2146, 0xED99, 0xED99, 0x25C5,
+ 0xED9A, 0xED9A, 0x21DC, 0xED9B, 0xED9B, 0x5165, 0xED9C, 0xED9C, 0x245E,
+ 0xED9D, 0xED9D, 0x5166, 0xED9E, 0xED9E, 0x214F, 0xED9F, 0xED9F, 0x5167,
+ 0xEDA0, 0xEDA0, 0x25C6, 0xEDA1, 0xEDFE, 0x1A0D, 0xEE40, 0xEE40, 0x25C7,
+ 0xEE41, 0xEE41, 0x2241, 0xEE42, 0xEE42, 0x218A, 0xEE43, 0xEE43, 0x1E2F,
+ 0xEE44, 0xEE44, 0x1EDC, 0xEE45, 0xEE47, 0x5168, 0xEE48, 0xEE48, 0x20BF,
+ 0xEE49, 0xEE49, 0x2034, 0xEE4A, 0xEE4C, 0x516B, 0xEE4D, 0xEE4D, 0x25C9,
+ 0xEE4E, 0xEE51, 0x516E, 0xEE52, 0xEE52, 0x25C8, 0xEE53, 0xEE54, 0x5172,
+ 0xEE55, 0xEE55, 0x220E, 0xEE56, 0xEE56, 0x5174, 0xEE57, 0xEE57, 0x25CB,
+ 0xEE58, 0xEE5D, 0x5175, 0xEE5E, 0xEE5E, 0x217D, 0xEE5F, 0xEE60, 0x517B,
+ 0xEE61, 0xEE61, 0x1F7E, 0xEE62, 0xEE67, 0x517D, 0xEE68, 0xEE68, 0x25CC,
+ 0xEE69, 0xEE69, 0x1FC3, 0xEE6A, 0xEE6B, 0x5183, 0xEE6C, 0xEE6C, 0x20B9,
+ 0xEE6D, 0xEE6D, 0x5185, 0xEE6E, 0xEE6E, 0x2181, 0xEE6F, 0xEE76, 0x5186,
+ 0xEE77, 0xEE77, 0x1FDA, 0xEE78, 0xEE7C, 0x518E, 0xEE7D, 0xEE7D, 0x2173,
+ 0xEE7E, 0xEE7E, 0x1EE1, 0xEE80, 0xEE80, 0x25CD, 0xEE81, 0xEE84, 0x5193,
+ 0xEE85, 0xEE85, 0x25CE, 0xEE86, 0xEE86, 0x21F6, 0xEE87, 0xEE89, 0x5197,
+ 0xEE8A, 0xEE8A, 0x224B, 0xEE8B, 0xEE8B, 0x25D1, 0xEE8C, 0xEE8C, 0x519A,
+ 0xEE8D, 0xEE8D, 0x1EC0, 0xEE8E, 0xEE8F, 0x519B, 0xEE90, 0xEE90, 0x2008,
+ 0xEE91, 0xEE93, 0x519D, 0xEE94, 0xEE94, 0x25D0, 0xEE95, 0xEE96, 0x51A0,
+ 0xEE97, 0xEE97, 0x25D2, 0xEE98, 0xEE98, 0x51A2, 0xEE99, 0xEE99, 0x1F2A,
+ 0xEE9A, 0xEE9C, 0x51A3, 0xEE9D, 0xEE9D, 0x1E72, 0xEE9E, 0xEE9E, 0x25D3,
+ 0xEE9F, 0xEEA0, 0x51A6, 0xEEA1, 0xEEFE, 0x1A6B, 0xEF40, 0xEF40, 0x21BE,
+ 0xEF41, 0xEF41, 0x25D4, 0xEF42, 0xEF42, 0x2044, 0xEF43, 0xEF43, 0x51A8,
+ 0xEF44, 0xEF44, 0x25CF, 0xEF45, 0xEF45, 0x20F3, 0xEF46, 0xEF4B, 0x51A9,
+ 0xEF4C, 0xEF4C, 0x1F00, 0xEF4D, 0xEF51, 0x51AF, 0xEF52, 0xEF53, 0x24CC,
+ 0xEF54, 0xEF54, 0x51B4, 0xEF55, 0xEF55, 0x2698, 0xEF56, 0xEF56, 0x51B5,
+ 0xEF57, 0xEF57, 0x2678, 0xEF58, 0xEF59, 0x51B6, 0xEF5A, 0xEF5A, 0x24CE,
+ 0xEF5B, 0xEF5F, 0x51B8, 0xEF60, 0xEF60, 0x24CF, 0xEF61, 0xEF67, 0x51BD,
+ 0xEF68, 0xEF68, 0x20B8, 0xEF69, 0xEF69, 0x51C4, 0xEF6A, 0xEF6A, 0x24D0,
+ 0xEF6B, 0xEF6B, 0x51C5, 0xEF6C, 0xEF6C, 0x24D1, 0xEF6D, 0xEF76, 0x51C6,
+ 0xEF77, 0xEF77, 0x1EF4, 0xEF78, 0xEF79, 0x51D0, 0xEF7A, 0xEF7A, 0x239B,
+ 0xEF7B, 0xEF7B, 0x51D2, 0xEF7C, 0xEF7C, 0x267E, 0xEF7D, 0xEF7E, 0x51D3,
+ 0xEF80, 0xEF81, 0x51D5, 0xEF82, 0xEF82, 0x239D, 0xEF83, 0xEF84, 0x239F,
+ 0xEF85, 0xEF85, 0x51D7, 0xEF86, 0xEF86, 0x23A1, 0xEF87, 0xEF87, 0x51D8,
+ 0xEF88, 0xEF88, 0x1EF1, 0xEF89, 0xEF8A, 0x51D9, 0xEF8B, 0xEF8B, 0x221E,
+ 0xEF8C, 0xEF8C, 0x51DB, 0xEF8D, 0xEF8D, 0x23A2, 0xEF8E, 0xEF94, 0x51DC,
+ 0xEF95, 0xEF95, 0x214B, 0xEF96, 0xEF96, 0x1E36, 0xEF97, 0xEF97, 0x2135,
+ 0xEF98, 0xEF9B, 0x51E3, 0xEF9C, 0xEF9C, 0x1FAD, 0xEF9D, 0xEF9D, 0x51E7,
+ 0xEF9E, 0xEF9E, 0x1E53, 0xEF9F, 0xEFA0, 0x51E8, 0xEFA1, 0xEFFE, 0x1AC9,
+ 0xF040, 0xF040, 0x51EA, 0xF041, 0xF041, 0x23A3, 0xF042, 0xF042, 0x2203,
+ 0xF043, 0xF043, 0x51EB, 0xF044, 0xF044, 0x1EE7, 0xF045, 0xF046, 0x51EC,
+ 0xF047, 0xF047, 0x23A4, 0xF048, 0xF048, 0x2097, 0xF049, 0xF049, 0x1EE4,
+ 0xF04A, 0xF04D, 0x51EE, 0xF04E, 0xF04E, 0x2238, 0xF04F, 0xF050, 0x51F2,
+ 0xF051, 0xF051, 0x23A5, 0xF052, 0xF053, 0x51F4, 0xF054, 0xF054, 0x1F9A,
+ 0xF055, 0xF056, 0x51F6, 0xF057, 0xF057, 0x21C3, 0xF058, 0xF05D, 0x51F8,
+ 0xF05E, 0xF05E, 0x1F2E, 0xF05F, 0xF067, 0x51FE, 0xF068, 0xF068, 0x239C,
+ 0xF069, 0xF06B, 0x5207, 0xF06C, 0xF06C, 0x23A6, 0xF06D, 0xF070, 0x520A,
+ 0xF071, 0xF071, 0x239E, 0xF072, 0xF072, 0x520E, 0xF073, 0xF073, 0x2035,
+ 0xF074, 0xF074, 0x23A7, 0xF075, 0xF077, 0x520F, 0xF078, 0xF078, 0x23A8,
+ 0xF079, 0xF079, 0x5212, 0xF07A, 0xF07A, 0x2075, 0xF07B, 0xF07C, 0x5213,
+ 0xF07D, 0xF07E, 0x23A9, 0xF080, 0xF080, 0x23AB, 0xF081, 0xF081, 0x1FEB,
+ 0xF082, 0xF082, 0x23AC, 0xF083, 0xF086, 0x5215, 0xF087, 0xF087, 0x1F6A,
+ 0xF088, 0xF088, 0x20F9, 0xF089, 0xF08A, 0x5219, 0xF08B, 0xF08B, 0x2666,
+ 0xF08C, 0xF08F, 0x521B, 0xF090, 0xF090, 0x2667, 0xF091, 0xF091, 0x521F,
+ 0xF092, 0xF092, 0x1E6C, 0xF093, 0xF095, 0x5220, 0xF096, 0xF096, 0x23AD,
+ 0xF097, 0xF0A0, 0x5223, 0xF0A1, 0xF0FE, 0x1B27, 0xF140, 0xF151, 0x522D,
+ 0xF152, 0xF152, 0x206D, 0xF153, 0xF153, 0x2242, 0xF154, 0xF154, 0x1F02,
+ 0xF155, 0xF156, 0x523F, 0xF157, 0xF157, 0x2183, 0xF158, 0xF158, 0x5241,
+ 0xF159, 0xF159, 0x1E85, 0xF15A, 0xF15A, 0x21E9, 0xF15B, 0xF166, 0x5242,
+ 0xF167, 0xF167, 0x1E57, 0xF168, 0xF175, 0x524E, 0xF176, 0xF176, 0x22A5,
+ 0xF177, 0xF177, 0x2407, 0xF178, 0xF178, 0x1FCA, 0xF179, 0xF179, 0x525C,
+ 0xF17A, 0xF17A, 0x2402, 0xF17B, 0xF17B, 0x1F82, 0xF17C, 0xF17D, 0x525D,
+ 0xF17E, 0xF17E, 0x2408, 0xF180, 0xF180, 0x2404, 0xF181, 0xF181, 0x525F,
+ 0xF182, 0xF182, 0x2131, 0xF183, 0xF183, 0x5260, 0xF184, 0xF184, 0x2184,
+ 0xF185, 0xF185, 0x5261, 0xF186, 0xF186, 0x2403, 0xF187, 0xF187, 0x5262,
+ 0xF188, 0xF188, 0x206E, 0xF189, 0xF189, 0x240B, 0xF18A, 0xF193, 0x5263,
+ 0xF194, 0xF194, 0x1F3F, 0xF195, 0xF197, 0x526D, 0xF198, 0xF198, 0x2067,
+ 0xF199, 0xF1A0, 0x5270, 0xF1A1, 0xF1FE, 0x1B85, 0xF240, 0xF244, 0x5278,
+ 0xF245, 0xF245, 0x1FD7, 0xF246, 0xF246, 0x527D, 0xF247, 0xF247, 0x1E83,
+ 0xF248, 0xF24A, 0x527E, 0xF24B, 0xF24B, 0x240F, 0xF24C, 0xF252, 0x5281,
+ 0xF253, 0xF253, 0x240E, 0xF254, 0xF254, 0x20C7, 0xF255, 0xF255, 0x240D,
+ 0xF256, 0xF25B, 0x5288, 0xF25C, 0xF25C, 0x2412, 0xF25D, 0xF25E, 0x528E,
+ 0xF25F, 0xF25F, 0x20B7, 0xF260, 0xF270, 0x5290, 0xF271, 0xF271, 0x23F0,
+ 0xF272, 0xF272, 0x52A1, 0xF273, 0xF273, 0x2411, 0xF274, 0xF274, 0x2414,
+ 0xF275, 0xF275, 0x52A2, 0xF276, 0xF276, 0x2170, 0xF277, 0xF27B, 0x52A3,
+ 0xF27C, 0xF27C, 0x2405, 0xF27D, 0xF27D, 0x210C, 0xF27E, 0xF27E, 0x2415,
+ 0xF280, 0xF284, 0x52A8, 0xF285, 0xF285, 0x2066, 0xF286, 0xF286, 0x52AD,
+ 0xF287, 0xF287, 0x2352, 0xF288, 0xF288, 0x2413, 0xF289, 0xF289, 0x2410,
+ 0xF28A, 0xF28B, 0x2416, 0xF28C, 0xF28C, 0x20F1, 0xF28D, 0xF290, 0x52AE,
+ 0xF291, 0xF291, 0x240A, 0xF292, 0xF293, 0x52B2, 0xF294, 0xF294, 0x2409,
+ 0xF295, 0xF295, 0x52B4, 0xF296, 0xF296, 0x2418, 0xF297, 0xF29B, 0x52B5,
+ 0xF29C, 0xF29C, 0x1FA7, 0xF29D, 0xF29D, 0x52BA, 0xF29E, 0xF29E, 0x21FC,
+ 0xF29F, 0xF2A0, 0x52BB, 0xF2A1, 0xF2FE, 0x1BE3, 0xF340, 0xF340, 0x1FC1,
+ 0xF341, 0xF341, 0x2406, 0xF342, 0xF344, 0x52BD, 0xF345, 0xF345, 0x229C,
+ 0xF346, 0xF347, 0x52C0, 0xF348, 0xF348, 0x204E, 0xF349, 0xF349, 0x52C2,
+ 0xF34A, 0xF34A, 0x241A, 0xF34B, 0xF34B, 0x2419, 0xF34C, 0xF34F, 0x52C3,
+ 0xF350, 0xF350, 0x240C, 0xF351, 0xF360, 0x52C7, 0xF361, 0xF361, 0x1E29,
+ 0xF362, 0xF373, 0x52D7, 0xF374, 0xF374, 0x2661, 0xF375, 0xF375, 0x52E9,
+ 0xF376, 0xF376, 0x26A4, 0xF377, 0xF377, 0x2174, 0xF378, 0xF378, 0x2663,
+ 0xF379, 0xF379, 0x2662, 0xF37A, 0xF37E, 0x52EA, 0xF380, 0xF38B, 0x52EF,
+ 0xF38C, 0xF38C, 0x2675, 0xF38D, 0xF39F, 0x52FB, 0xF3A0, 0xF3A0, 0x214C,
+ 0xF3A1, 0xF3FE, 0x1C41, 0xF440, 0xF444, 0x530E, 0xF445, 0xF445, 0x267A,
+ 0xF446, 0xF44F, 0x5313, 0xF450, 0xF450, 0x26A0, 0xF451, 0xF456, 0x531D,
+ 0xF457, 0xF457, 0x2668, 0xF458, 0xF458, 0x5323, 0xF459, 0xF459, 0x1ED0,
+ 0xF45A, 0xF45A, 0x5324, 0xF45B, 0xF45B, 0x2096, 0xF45C, 0xF45C, 0x5325,
+ 0xF45D, 0xF45D, 0x23CC, 0xF45E, 0xF461, 0x5326, 0xF462, 0xF462, 0x23C8,
+ 0xF463, 0xF463, 0x532A, 0xF464, 0xF464, 0x223E, 0xF465, 0xF474, 0x532B,
+ 0xF475, 0xF475, 0x2665, 0xF476, 0xF47B, 0x533B, 0xF47C, 0xF47C, 0x2664,
+ 0xF47D, 0xF47D, 0x5341, 0xF47E, 0xF47E, 0x2239, 0xF480, 0xF493, 0x5342,
+ 0xF494, 0xF494, 0x204A, 0xF495, 0xF498, 0x5356, 0xF499, 0xF499, 0x261F,
+ 0xF49A, 0xF49B, 0x535A, 0xF49C, 0xF49C, 0x261E, 0xF49D, 0xF4A0, 0x535C,
+ 0xF4A1, 0xF4FE, 0x1C9F, 0xF540, 0xF544, 0x5360, 0xF545, 0xF545, 0x2620,
+ 0xF546, 0xF546, 0x5365, 0xF547, 0xF547, 0x2621, 0xF548, 0xF551, 0x5366,
+ 0xF552, 0xF552, 0x2622, 0xF553, 0xF553, 0x5370, 0xF554, 0xF554, 0x2627,
+ 0xF555, 0xF555, 0x1E39, 0xF556, 0xF556, 0x2625, 0xF557, 0xF55D, 0x5371,
+ 0xF55E, 0xF55E, 0x2629, 0xF55F, 0xF560, 0x5378, 0xF561, 0xF561, 0x262E,
+ 0xF562, 0xF562, 0x262B, 0xF563, 0xF56D, 0x537A, 0xF56E, 0xF56E, 0x262A,
+ 0xF56F, 0xF56F, 0x262D, 0xF570, 0xF570, 0x5385, 0xF571, 0xF571, 0x2628,
+ 0xF572, 0xF572, 0x21B9, 0xF573, 0xF57E, 0x5386, 0xF580, 0xF584, 0x5392,
+ 0xF585, 0xF585, 0x2636, 0xF586, 0xF586, 0x2630, 0xF587, 0xF58B, 0x5397,
+ 0xF58C, 0xF58C, 0x2638, 0xF58D, 0xF58D, 0x539C, 0xF58E, 0xF58E, 0x200D,
+ 0xF58F, 0xF58F, 0x2637, 0xF590, 0xF598, 0x539D, 0xF599, 0xF599, 0x2645,
+ 0xF59A, 0xF59A, 0x53A6, 0xF59B, 0xF59B, 0x263A, 0xF59C, 0xF59F, 0x53A7,
+ 0xF5A0, 0xF5A0, 0x2643, 0xF5A1, 0xF5FE, 0x1CFD, 0xF640, 0xF640, 0x53AB,
+ 0xF641, 0xF641, 0x2640, 0xF642, 0xF644, 0x53AC, 0xF645, 0xF645, 0x263D,
+ 0xF646, 0xF646, 0x2641, 0xF647, 0xF647, 0x53AF, 0xF648, 0xF648, 0x263E,
+ 0xF649, 0xF64A, 0x53B0, 0xF64B, 0xF64B, 0x263F, 0xF64C, 0xF64C, 0x1FC0,
+ 0xF64D, 0xF64D, 0x53B2, 0xF64E, 0xF64F, 0x263B, 0xF650, 0xF653, 0x53B3,
+ 0xF654, 0xF654, 0x2642, 0xF655, 0xF657, 0x53B7, 0xF658, 0xF658, 0x2644,
+ 0xF659, 0xF660, 0x53BA, 0xF661, 0xF661, 0x2639, 0xF662, 0xF662, 0x53C2,
+ 0xF663, 0xF663, 0x264C, 0xF664, 0xF66B, 0x53C3, 0xF66C, 0xF66C, 0x2647,
+ 0xF66D, 0xF66D, 0x264B, 0xF66E, 0xF670, 0x53CB, 0xF671, 0xF671, 0x2649,
+ 0xF672, 0xF673, 0x53CE, 0xF674, 0xF674, 0x2648, 0xF675, 0xF675, 0x53D0,
+ 0xF676, 0xF676, 0x264A, 0xF677, 0xF677, 0x2108, 0xF678, 0xF67E, 0x53D1,
+ 0xF680, 0xF684, 0x53D8, 0xF685, 0xF685, 0x264D, 0xF686, 0xF687, 0x53DD,
+ 0xF688, 0xF688, 0x2634, 0xF689, 0xF689, 0x53DF, 0xF68A, 0xF68A, 0x2651,
+ 0xF68B, 0xF68C, 0x53E0, 0xF68D, 0xF68D, 0x2650, 0xF68E, 0xF68E, 0x2652,
+ 0xF68F, 0xF691, 0x53E2, 0xF692, 0xF692, 0x264F, 0xF693, 0xF695, 0x53E5,
+ 0xF696, 0xF696, 0x2632, 0xF697, 0xF697, 0x264E, 0xF698, 0xF698, 0x2653,
+ 0xF699, 0xF699, 0x53E8, 0xF69A, 0xF69A, 0x2657, 0xF69B, 0xF69B, 0x53E9,
+ 0xF69C, 0xF69C, 0x2635, 0xF69D, 0xF69D, 0x53EA, 0xF69E, 0xF69E, 0x2633,
+ 0xF69F, 0xF69F, 0x53EB, 0xF6A0, 0xF6A0, 0x2656, 0xF6A1, 0xF6FE, 0x1D5B,
+ 0xF740, 0xF741, 0x53EC, 0xF742, 0xF742, 0x2654, 0xF743, 0xF748, 0x53EE,
+ 0xF749, 0xF749, 0x2658, 0xF74A, 0xF74B, 0x53F4, 0xF74C, 0xF74C, 0x2655,
+ 0xF74D, 0xF74D, 0x1E4D, 0xF74E, 0xF755, 0x53F6, 0xF756, 0xF756, 0x265B,
+ 0xF757, 0xF757, 0x53FE, 0xF758, 0xF758, 0x265A, 0xF759, 0xF759, 0x53FF,
+ 0xF75A, 0xF75A, 0x2659, 0xF75B, 0xF75B, 0x202E, 0xF75C, 0xF75C, 0x262F,
+ 0xF75D, 0xF760, 0x5400, 0xF761, 0xF761, 0x2646, 0xF762, 0xF762, 0x5404,
+ 0xF763, 0xF763, 0x2626, 0xF764, 0xF76A, 0x5405, 0xF76B, 0xF76B, 0x265C,
+ 0xF76C, 0xF770, 0x540C, 0xF771, 0xF771, 0x262C, 0xF772, 0xF77B, 0x5411,
+ 0xF77C, 0xF77C, 0x2623, 0xF77D, 0xF77D, 0x541B, 0xF77E, 0xF77E, 0x2631,
+ 0xF780, 0xF7A0, 0x541C, 0xF7A1, 0xF7FE, 0x1DB9, 0xF840, 0xF841, 0x543D,
+ 0xF842, 0xF842, 0x209C, 0xF843, 0xF845, 0x543F, 0xF846, 0xF846, 0x2580,
+ 0xF847, 0xF848, 0x5442, 0xF849, 0xF849, 0x22DC, 0xF84A, 0xF84F, 0x5444,
+ 0xF850, 0xF850, 0x1F05, 0xF851, 0xF851, 0x208B, 0xF852, 0xF852, 0x544A,
+ 0xF853, 0xF853, 0x2581, 0xF854, 0xF862, 0x544B, 0xF863, 0xF863, 0x2583,
+ 0xF864, 0xF864, 0x2582, 0xF865, 0xF865, 0x545A, 0xF866, 0xF866, 0x21EE,
+ 0xF867, 0xF871, 0x545B, 0xF872, 0xF872, 0x2182, 0xF873, 0xF877, 0x5466,
+ 0xF878, 0xF878, 0x2243, 0xF879, 0xF879, 0x546B, 0xF87A, 0xF87A, 0x2587,
+ 0xF87B, 0xF87B, 0x546C, 0xF87C, 0xF87C, 0x2588, 0xF87D, 0xF87E, 0x546D,
+ 0xF880, 0xF880, 0x546F, 0xF881, 0xF881, 0x2584, 0xF882, 0xF883, 0x5470,
+ 0xF884, 0xF884, 0x21FD, 0xF885, 0xF885, 0x5472, 0xF886, 0xF886, 0x21EF,
+ 0xF887, 0xF88C, 0x5473, 0xF88D, 0xF88D, 0x258A, 0xF88E, 0xF88E, 0x258C,
+ 0xF88F, 0xF898, 0x5479, 0xF899, 0xF899, 0x1F47, 0xF89A, 0xF89C, 0x5483,
+ 0xF89D, 0xF89D, 0x1F1D, 0xF89E, 0xF89F, 0x5486, 0xF8A0, 0xF8A0, 0x258D,
+ 0xF940, 0xF94D, 0x5488, 0xF94E, 0xF94E, 0x1FD0, 0xF94F, 0xF94F, 0x2592,
+ 0xF950, 0xF950, 0x258F, 0xF951, 0xF958, 0x5496, 0xF959, 0xF959, 0x2594,
+ 0xF95A, 0xF95A, 0x1EE0, 0xF95B, 0xF95C, 0x549E, 0xF95D, 0xF95D, 0x2591,
+ 0xF95E, 0xF95E, 0x2595, 0xF95F, 0xF966, 0x54A0, 0xF967, 0xF967, 0x2597,
+ 0xF968, 0xF968, 0x54A8, 0xF969, 0xF969, 0x20B6, 0xF96A, 0xF96B, 0x54A9,
+ 0xF96C, 0xF96C, 0x2598, 0xF96D, 0xF96E, 0x54AB, 0xF96F, 0xF96F, 0x20F6,
+ 0xF970, 0xF97E, 0x54AD, 0xF980, 0xF984, 0x54BC, 0xF985, 0xF985, 0x2585,
+ 0xF986, 0xF986, 0x54C1, 0xF987, 0xF987, 0x2599, 0xF988, 0xF990, 0x54C2,
+ 0xF991, 0xF991, 0x2596, 0xF992, 0xF995, 0x54CB, 0xF996, 0xF996, 0x259A,
+ 0xF997, 0xF997, 0x54CF, 0xF998, 0xF998, 0x259B, 0xF999, 0xF9A0, 0x54D0,
+ 0xFA40, 0xFA41, 0x54D8, 0xFA42, 0xFA42, 0x259D, 0xFA43, 0xFA45, 0x54DA,
+ 0xFA46, 0xFA46, 0x259E, 0xFA47, 0xFA4B, 0x54DD, 0xFA4C, 0xFA4C, 0x234C,
+ 0xFA4D, 0xFA50, 0x54E2, 0xFA51, 0xFA51, 0x1F44, 0xFA52, 0xFA57, 0x54E6,
+ 0xFA58, 0xFA58, 0x2660, 0xFA59, 0xFA59, 0x25A0, 0xFA5A, 0xFA5C, 0x54EC,
+ 0xFA5D, 0xFA5D, 0x259C, 0xFA5E, 0xFA5E, 0x54EF, 0xFA5F, 0xFA5F, 0x259F,
+ 0xFA60, 0xFA60, 0x54F0, 0xFA61, 0xFA61, 0x1F6C, 0xFA62, 0xFA6F, 0x54F1,
+ 0xFA70, 0xFA70, 0x25A2, 0xFA71, 0xFA73, 0x54FF, 0xFA74, 0xFA74, 0x20AE,
+ 0xFA75, 0xFA75, 0x5502, 0xFA76, 0xFA76, 0x258B, 0xFA77, 0xFA77, 0x25A3,
+ 0xFA78, 0xFA7E, 0x5503, 0xFA80, 0xFA82, 0x550A, 0xFA83, 0xFA83, 0x2589,
+ 0xFA84, 0xFA84, 0x25A5, 0xFA85, 0xFA8C, 0x550D, 0xFA8D, 0xFA8D, 0x25A4,
+ 0xFA8E, 0xFA8F, 0x5515, 0xFA90, 0xFA90, 0x25A6, 0xFA91, 0xFA91, 0x2593,
+ 0xFA92, 0xFA95, 0x5517, 0xFA96, 0xFA96, 0x25A7, 0xFA97, 0xFA97, 0x2222,
+ 0xFA98, 0xFA98, 0x25A9, 0xFA99, 0xFAA0, 0x551B, 0xFB40, 0xFB48, 0x5523,
+ 0xFB49, 0xFB49, 0x25A8, 0xFB4A, 0xFB51, 0x552C, 0xFB52, 0xFB52, 0x2586,
+ 0xFB53, 0xFB56, 0x5534, 0xFB57, 0xFB57, 0x25A1, 0xFB58, 0xFB58, 0x25AA,
+ 0xFB59, 0xFB59, 0x5538, 0xFB5A, 0xFB5A, 0x2590, 0xFB5B, 0xFB5B, 0x258E,
+ 0xFB5C, 0xFB74, 0x5539, 0xFB75, 0xFB75, 0x2688, 0xFB76, 0xFB78, 0x5552,
+ 0xFB79, 0xFB79, 0x269E, 0xFB7A, 0xFB7A, 0x25FB, 0xFB7B, 0xFB7B, 0x5555,
+ 0xFB7C, 0xFB7C, 0x1F8C, 0xFB7D, 0xFB7D, 0x21F4, 0xFB7E, 0xFB7E, 0x5556,
+ 0xFB80, 0xFB8F, 0x5557, 0xFB90, 0xFB90, 0x200F, 0xFB91, 0xFB9B, 0x5567,
+ 0xFB9C, 0xFB9C, 0x2071, 0xFB9D, 0xFB9E, 0x5572, 0xFB9F, 0xFB9F, 0x25F7,
+ 0xFBA0, 0xFBA0, 0x5574, 0xFC40, 0xFC43, 0x5575, 0xFC44, 0xFC44, 0x2696,
+ 0xFC45, 0xFC48, 0x5579, 0xFC49, 0xFC49, 0x268F, 0xFC4A, 0xFC59, 0x557D,
+ 0xFC5A, 0xFC5A, 0x22DA, 0xFC5B, 0xFC62, 0x558D, 0xFC63, 0xFC63, 0x1EC1,
+ 0xFC64, 0xFC67, 0x5595, 0xFC68, 0xFC68, 0x1EB3, 0xFC69, 0xFC6E, 0x5599,
+ 0xFC6F, 0xFC6F, 0x266A, 0xFC70, 0xFC70, 0x559F, 0xFC71, 0xFC71, 0x268A,
+ 0xFC72, 0xFC73, 0x55A0, 0xFC74, 0xFC74, 0x2669, 0xFC75, 0xFC76, 0x55A2,
+ 0xFC77, 0xFC78, 0x2618, 0xFC79, 0xFC7E, 0x55A4, 0xFC80, 0xFC82, 0x55AA,
+ 0xFC83, 0xFC83, 0x261A, 0xFC84, 0xFC89, 0x55AD, 0xFC8A, 0xFC8A, 0x2673,
+ 0xFC8B, 0xFCA0, 0x55B3, 0xFD40, 0xFD51, 0x55C9, 0xFD52, 0xFD52, 0x20C6,
+ 0xFD53, 0xFD53, 0x226B, 0xFD54, 0xFD56, 0x55DB, 0xFD57, 0xFD57, 0x24D3,
+ 0xFD58, 0xFD58, 0x1E86, 0xFD59, 0xFD59, 0x55DE, 0xFD5A, 0xFD5A, 0x260F,
+ 0xFD5B, 0xFD5E, 0x55DF, 0xFD5F, 0xFD5F, 0x2611, 0xFD60, 0xFD61, 0x55E3,
+ 0xFD62, 0xFD62, 0x2613, 0xFD63, 0xFD64, 0x55E5, 0xFD65, 0xFD65, 0x2610,
+ 0xFD66, 0xFD66, 0x2612, 0xFD67, 0xFD67, 0x2030, 0xFD68, 0xFD68, 0x55E7,
+ 0xFD69, 0xFD69, 0x2671, 0xFD6A, 0xFD6B, 0x55E8, 0xFD6C, 0xFD6C, 0x2614,
+ 0xFD6D, 0xFD6F, 0x55EA, 0xFD70, 0xFD70, 0x2616, 0xFD71, 0xFD71, 0x55ED,
+ 0xFD72, 0xFD72, 0x2615, 0xFD73, 0xFD77, 0x55EE, 0xFD78, 0xFD78, 0x20F2,
+ 0xFD79, 0xFD7C, 0x55F3, 0xFD7D, 0xFD7D, 0x2617, 0xFD7E, 0xFD7E, 0x55F7,
+ 0xFD80, 0xFD87, 0x55F8, 0xFD88, 0xFD88, 0x2037, 0xFD89, 0xFD8A, 0x5600,
+ 0xFD8B, 0xFD8B, 0x20B3, 0xFD8C, 0xFD8E, 0x5602, 0xFD8F, 0xFD8F, 0x1F22,
+ 0xFD90, 0xFD90, 0x24ED, 0xFD91, 0xFD93, 0x5605, 0xFD94, 0xFD94, 0x1F34,
+ 0xFD95, 0xFD9C, 0x5608, 0xFD9D, 0xFD9D, 0x0A02, 0xFD9E, 0xFD9E, 0x40D3,
+ 0xFD9F, 0xFD9F, 0x200C, 0xFDA0, 0xFDA0, 0x5083, 0xFE40, 0xFE40, 0x1259,
+ 0xFE41, 0xFE7E, 0x5610, 0xFE80, 0xFEA0, 0x564E,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-V_2.cpp b/core/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-V_2.cpp
new file mode 100644
index 0000000000..8c8b3d5c92
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/GB1/GBKp-EUC-V_2.cpp
@@ -0,0 +1,17 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h"
+
+const FX_WORD g_FXCMAP_GBKp_EUC_V_2[20 * 3] = {
+ 0xA1A2, 0xA1A2, 0x023F, 0xA1A3, 0xA1A3, 0x023E, 0xA1AA, 0xA1AA, 0x0256,
+ 0xA1AB, 0xA1AC, 0x1E18, 0xA1AD, 0xA1AD, 0x0257, 0xA1B2, 0xA1BF, 0x0246,
+ 0xA1FE, 0xA1FE, 0x1E1A, 0xA3A1, 0xA3A1, 0x0242, 0xA3A8, 0xA3A9, 0x0244,
+ 0xA3AC, 0xA3AC, 0x023D, 0xA3AE, 0xA3AE, 0x1E1B, 0xA3BA, 0xA3BB, 0x0240,
+ 0xA3BD, 0xA3BD, 0x1E1C, 0xA3BF, 0xA3BF, 0x0243, 0xA3DB, 0xA3DB, 0x1E1D,
+ 0xA3DD, 0xA3DD, 0x1E1E, 0xA3DF, 0xA3DF, 0x0258, 0xA3FB, 0xA3FB, 0x0254,
+ 0xA3FD, 0xA3FD, 0x0255, 0xA3FE, 0xA3FE, 0x1E1F,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-H_0.cpp b/core/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-H_0.cpp
new file mode 100644
index 0000000000..0fab35577c
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-H_0.cpp
@@ -0,0 +1,41 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h"
+
+const FX_WORD g_FXCMAP_GBpc_EUC_H_0[91 * 3] = {
+ 0x0020, 0x007E, 0x0001, 0x0080, 0x0080, 0x1E20, 0x00FD, 0x00FF, 0x1E21,
+ 0xA1A1, 0xA1FE, 0x0060, 0xA2B1, 0xA2E2, 0x00BE, 0xA2E5, 0xA2EE, 0x00F0,
+ 0xA2F1, 0xA2FC, 0x00FA, 0xA3A1, 0xA3FE, 0x0106, 0xA4A1, 0xA4F3, 0x0164,
+ 0xA5A1, 0xA5F6, 0x01B7, 0xA6A1, 0xA6B8, 0x020D, 0xA6C1, 0xA6F5, 0x0225,
+ 0xA7A1, 0xA7C1, 0x025A, 0xA7D1, 0xA7F1, 0x027B, 0xA8A1, 0xA8C0, 0x029C,
+ 0xA8C5, 0xA8EA, 0x02BC, 0xA9A4, 0xA9EF, 0x02E2, 0xAAA1, 0xAAFE, 0x032E,
+ 0xABA1, 0xABC0, 0x038C, 0xB0A1, 0xB0FE, 0x03AC, 0xB1A1, 0xB1FE, 0x040A,
+ 0xB2A1, 0xB2FE, 0x0468, 0xB3A1, 0xB3FE, 0x04C6, 0xB4A1, 0xB4FE, 0x0524,
+ 0xB5A1, 0xB5FE, 0x0582, 0xB6A1, 0xB6FE, 0x05E0, 0xB7A1, 0xB7FE, 0x063E,
+ 0xB8A1, 0xB8FE, 0x069C, 0xB9A1, 0xB9FE, 0x06FA, 0xBAA1, 0xBAFE, 0x0758,
+ 0xBBA1, 0xBBFE, 0x07B6, 0xBCA1, 0xBCFE, 0x0814, 0xBDA1, 0xBDFE, 0x0872,
+ 0xBEA1, 0xBEFE, 0x08D0, 0xBFA1, 0xBFFE, 0x092E, 0xC0A1, 0xC0FE, 0x098C,
+ 0xC1A1, 0xC1FE, 0x09EA, 0xC2A1, 0xC2FE, 0x0A48, 0xC3A1, 0xC3FE, 0x0AA6,
+ 0xC4A1, 0xC4FE, 0x0B04, 0xC5A1, 0xC5FE, 0x0B62, 0xC6A1, 0xC6FE, 0x0BC0,
+ 0xC7A1, 0xC7FE, 0x0C1E, 0xC8A1, 0xC8FE, 0x0C7C, 0xC9A1, 0xC9FE, 0x0CDA,
+ 0xCAA1, 0xCAFE, 0x0D38, 0xCBA1, 0xCBFE, 0x0D96, 0xCCA1, 0xCCFE, 0x0DF4,
+ 0xCDA1, 0xCDFE, 0x0E52, 0xCEA1, 0xCEFE, 0x0EB0, 0xCFA1, 0xCFFE, 0x0F0E,
+ 0xD0A1, 0xD0FE, 0x0F6C, 0xD1A1, 0xD1FE, 0x0FCA, 0xD2A1, 0xD2FE, 0x1028,
+ 0xD3A1, 0xD3FE, 0x1086, 0xD4A1, 0xD4FE, 0x10E4, 0xD5A1, 0xD5FE, 0x1142,
+ 0xD6A1, 0xD6FE, 0x11A0, 0xD7A1, 0xD7F9, 0x11FE, 0xD8A1, 0xD8FE, 0x1257,
+ 0xD9A1, 0xD9FE, 0x12B5, 0xDAA1, 0xDAFE, 0x1313, 0xDBA1, 0xDBFE, 0x1371,
+ 0xDCA1, 0xDCFE, 0x13CF, 0xDDA1, 0xDDFE, 0x142D, 0xDEA1, 0xDEFE, 0x148B,
+ 0xDFA1, 0xDFFE, 0x14E9, 0xE0A1, 0xE0FE, 0x1547, 0xE1A1, 0xE1FE, 0x15A5,
+ 0xE2A1, 0xE2FE, 0x1603, 0xE3A1, 0xE3FE, 0x1661, 0xE4A1, 0xE4FE, 0x16BF,
+ 0xE5A1, 0xE5FE, 0x171D, 0xE6A1, 0xE6FE, 0x177B, 0xE7A1, 0xE7FE, 0x17D9,
+ 0xE8A1, 0xE8FE, 0x1837, 0xE9A1, 0xE9FE, 0x1895, 0xEAA1, 0xEAFE, 0x18F3,
+ 0xEBA1, 0xEBFE, 0x1951, 0xECA1, 0xECFE, 0x19AF, 0xEDA1, 0xEDFE, 0x1A0D,
+ 0xEEA1, 0xEEFE, 0x1A6B, 0xEFA1, 0xEFFE, 0x1AC9, 0xF0A1, 0xF0FE, 0x1B27,
+ 0xF1A1, 0xF1FE, 0x1B85, 0xF2A1, 0xF2FE, 0x1BE3, 0xF3A1, 0xF3FE, 0x1C41,
+ 0xF4A1, 0xF4FE, 0x1C9F, 0xF5A1, 0xF5FE, 0x1CFD, 0xF6A1, 0xF6FE, 0x1D5B,
+ 0xF7A1, 0xF7FE, 0x1DB9,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-V_0.cpp b/core/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-V_0.cpp
new file mode 100644
index 0000000000..c07c8a18c0
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/GB1/GBpc-EUC-V_0.cpp
@@ -0,0 +1,17 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h"
+
+const FX_WORD g_FXCMAP_GBpc_EUC_V_0[20 * 3] = {
+ 0xA1A2, 0xA1A2, 0x023F, 0xA1A3, 0xA1A3, 0x023E, 0xA1AA, 0xA1AA, 0x0256,
+ 0xA1AB, 0xA1AC, 0x1E18, 0xA1AD, 0xA1AD, 0x0257, 0xA1B2, 0xA1BF, 0x0246,
+ 0xA1FE, 0xA1FE, 0x1E1A, 0xA3A1, 0xA3A1, 0x0242, 0xA3A8, 0xA3A9, 0x0244,
+ 0xA3AC, 0xA3AC, 0x023D, 0xA3AE, 0xA3AE, 0x1E1B, 0xA3BA, 0xA3BB, 0x0240,
+ 0xA3BD, 0xA3BD, 0x1E1C, 0xA3BF, 0xA3BF, 0x0243, 0xA3DB, 0xA3DB, 0x1E1D,
+ 0xA3DD, 0xA3DD, 0x1E1E, 0xA3DF, 0xA3DF, 0x0258, 0xA3FB, 0xA3FB, 0x0254,
+ 0xA3FD, 0xA3FD, 0x0255, 0xA3FE, 0xA3FE, 0x1E1F,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-H_4.cpp b/core/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-H_4.cpp
new file mode 100644
index 0000000000..60e109f864
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-H_4.cpp
@@ -0,0 +1,4619 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h"
+
+const FX_WORD g_FXCMAP_UniGB_UCS2_H_4[13825 * 3] = {
+ 0x0020, 0x007E, 0x0001, 0x00A4, 0x00A4, 0x00A7, 0x00A5, 0x00A5, 0x5752,
+ 0x00A7, 0x00A7, 0x00AB, 0x00A8, 0x00A8, 0x0066, 0x00B0, 0x00B0, 0x00A2,
+ 0x00B1, 0x00B1, 0x007F, 0x00D7, 0x00D7, 0x0080, 0x00E0, 0x00E0, 0x029F,
+ 0x00E1, 0x00E1, 0x029D, 0x00E8, 0x00E8, 0x02A3, 0x00E9, 0x00E9, 0x02A1,
+ 0x00EA, 0x00EA, 0x02B5, 0x00EC, 0x00EC, 0x02A7, 0x00ED, 0x00ED, 0x02A5,
+ 0x00F2, 0x00F2, 0x02AB, 0x00F3, 0x00F3, 0x02A9, 0x00F7, 0x00F7, 0x0081,
+ 0x00F9, 0x00F9, 0x02AF, 0x00FA, 0x00FA, 0x02AD, 0x00FC, 0x00FC, 0x02B4,
+ 0x0101, 0x0101, 0x029C, 0x0113, 0x0113, 0x02A0, 0x011B, 0x011B, 0x02A2,
+ 0x012B, 0x012B, 0x02A4, 0x014D, 0x014D, 0x02A8, 0x016B, 0x016B, 0x02AC,
+ 0x01CE, 0x01CE, 0x029E, 0x01D0, 0x01D0, 0x02A6, 0x01D2, 0x01D2, 0x02AA,
+ 0x01D4, 0x01D4, 0x02AE, 0x01D6, 0x01D6, 0x02B0, 0x01D8, 0x01D8, 0x02B1,
+ 0x01DA, 0x01DA, 0x02B2, 0x01DC, 0x01DC, 0x02B3, 0x01F9, 0x01F9, 0x02BA,
+ 0x02C7, 0x02C7, 0x0065, 0x02C9, 0x02C9, 0x0064, 0x02CA, 0x02CB, 0x26B3,
+ 0x02D9, 0x02D9, 0x26B5, 0x0391, 0x03A1, 0x020D, 0x03A3, 0x03A9, 0x021E,
+ 0x03B1, 0x03C1, 0x0225, 0x03C3, 0x03C9, 0x0236, 0x0401, 0x0401, 0x0260,
+ 0x0410, 0x0415, 0x025A, 0x0416, 0x0435, 0x0261, 0x0436, 0x044F, 0x0282,
+ 0x0451, 0x0451, 0x0281, 0x1E3F, 0x1E3F, 0x02B7, 0x2010, 0x2010, 0x2722,
+ 0x2013, 0x2013, 0x26B6, 0x2014, 0x2014, 0x0069, 0x2015, 0x2015, 0x26B7,
+ 0x2016, 0x2016, 0x006B, 0x2018, 0x2019, 0x006D, 0x201C, 0x201D, 0x006F,
+ 0x2025, 0x2025, 0x26B8, 0x2026, 0x2026, 0x006C, 0x2030, 0x2030, 0x00AA,
+ 0x2032, 0x2033, 0x00A3, 0x2035, 0x2035, 0x26B9, 0x203B, 0x203B, 0x00B8,
+ 0x20AC, 0x20AC, 0x5751, 0x2103, 0x2103, 0x00A5, 0x2105, 0x2105, 0x26BA,
+ 0x2109, 0x2109, 0x26BB, 0x2116, 0x2116, 0x00AC, 0x2121, 0x2121, 0x2720,
+ 0x2160, 0x216B, 0x00FA, 0x2170, 0x2179, 0x26A9, 0x2190, 0x2191, 0x00BA,
+ 0x2192, 0x2192, 0x00B9, 0x2193, 0x2193, 0x00BC, 0x2196, 0x2199, 0x26BC,
+ 0x2208, 0x2208, 0x0089, 0x220F, 0x220F, 0x0086, 0x2211, 0x2211, 0x0085,
+ 0x2215, 0x2215, 0x26C0, 0x221A, 0x221A, 0x008B, 0x221D, 0x221D, 0x0097,
+ 0x221E, 0x221E, 0x009D, 0x221F, 0x221F, 0x26C1, 0x2220, 0x2220, 0x008E,
+ 0x2223, 0x2223, 0x26C2, 0x2225, 0x2225, 0x008D, 0x2227, 0x2228, 0x0083,
+ 0x2229, 0x2229, 0x0088, 0x222A, 0x222A, 0x0087, 0x222B, 0x222B, 0x0091,
+ 0x222E, 0x222E, 0x0092, 0x2234, 0x2234, 0x009F, 0x2235, 0x2235, 0x009E,
+ 0x2236, 0x2236, 0x0082, 0x2237, 0x2237, 0x008A, 0x223D, 0x223D, 0x0096,
+ 0x2248, 0x2248, 0x0095, 0x224C, 0x224C, 0x0094, 0x2252, 0x2252, 0x26C3,
+ 0x2260, 0x2260, 0x0098, 0x2261, 0x2261, 0x0093, 0x2264, 0x2265, 0x009B,
+ 0x2266, 0x2267, 0x26C4, 0x226E, 0x226F, 0x0099, 0x2295, 0x2295, 0x2704,
+ 0x2299, 0x2299, 0x0090, 0x22A5, 0x22A5, 0x008C, 0x22BF, 0x22BF, 0x26C6,
+ 0x22EF, 0x22EF, 0x006C, 0x2312, 0x2312, 0x008F, 0x2460, 0x2469, 0x00E6,
+ 0x2474, 0x2487, 0x00D2, 0x2488, 0x249B, 0x00BE, 0x2500, 0x254B, 0x02E2,
+ 0x2550, 0x2573, 0x26C7, 0x2581, 0x258F, 0x26EB, 0x2593, 0x2595, 0x26FA,
+ 0x25A0, 0x25A0, 0x00B5, 0x25A1, 0x25A1, 0x00B4, 0x25B2, 0x25B2, 0x00B7,
+ 0x25B3, 0x25B3, 0x00B6, 0x25BC, 0x25BD, 0x26FD, 0x25C6, 0x25C6, 0x00B3,
+ 0x25C7, 0x25C7, 0x00B2, 0x25CB, 0x25CB, 0x00AF, 0x25CE, 0x25CE, 0x00B1,
+ 0x25CF, 0x25CF, 0x00B0, 0x25E2, 0x25E5, 0x26FF, 0x2605, 0x2605, 0x00AE,
+ 0x2606, 0x2606, 0x00AD, 0x2609, 0x2609, 0x2703, 0x2640, 0x2640, 0x00A1,
+ 0x2642, 0x2642, 0x00A0, 0x2E80, 0x2E80, 0x579C, 0x2E81, 0x2E81, 0x561F,
+ 0x2E82, 0x2E83, 0x579D, 0x2E84, 0x2E84, 0x5623, 0x2E85, 0x2E87, 0x579F,
+ 0x2E88, 0x2E88, 0x5626, 0x2E89, 0x2E8A, 0x57A2, 0x2E8B, 0x2E8B, 0x5627,
+ 0x2E8C, 0x2E8C, 0x562C, 0x2E8D, 0x2E96, 0x57A4, 0x2E97, 0x2E97, 0x562D,
+ 0x2E98, 0x2E99, 0x57AE, 0x2E9B, 0x2EA6, 0x57B0, 0x2EA7, 0x2EA7, 0x563A,
+ 0x2EA8, 0x2EA9, 0x57BC, 0x2EAA, 0x2EAA, 0x563D, 0x2EAB, 0x2EAD, 0x57BE,
+ 0x2EAE, 0x2EAE, 0x5640, 0x2EAF, 0x2EB2, 0x57C1, 0x2EB3, 0x2EB3, 0x5642,
+ 0x2EB4, 0x2EB5, 0x57C5, 0x2EB6, 0x2EB7, 0x5643, 0x2EB8, 0x2EBA, 0x57C7,
+ 0x2EBB, 0x2EBB, 0x5648, 0x2EBC, 0x2EC9, 0x57CA, 0x2ECA, 0x2ECA, 0x5652,
+ 0x2ECB, 0x2EF3, 0x57D8, 0x2F00, 0x2F00, 0x1042, 0x2F01, 0x2F01, 0x1263,
+ 0x2F02, 0x2F02, 0x1272, 0x2F03, 0x2F03, 0x1265, 0x2F04, 0x2F04, 0x1059,
+ 0x2F05, 0x2F05, 0x2793, 0x2F06, 0x2F06, 0x063D, 0x2F07, 0x2F07, 0x1303,
+ 0x2F08, 0x2F08, 0x0CA6, 0x2F09, 0x2F09, 0x0638, 0x2F0A, 0x2F0A, 0x0CC6,
+ 0x2F0B, 0x2F0B, 0x03D6, 0x2F0C, 0x2F0C, 0x129D, 0x2F0D, 0x2F0D, 0x1314,
+ 0x2F0E, 0x2F0E, 0x130F, 0x2F0F, 0x2F0F, 0x082B, 0x2F10, 0x2F10, 0x1399,
+ 0x2F11, 0x2F11, 0x0597, 0x2F12, 0x2F12, 0x09EF, 0x2F13, 0x2F13, 0x12FC,
+ 0x2F14, 0x2F14, 0x1266, 0x2F15, 0x2F15, 0x1284, 0x2F16, 0x2F16, 0x2A1A,
+ 0x2F17, 0x2F17, 0x0D45, 0x2F18, 0x2F18, 0x047E, 0x2F19, 0x2F19, 0x1352,
+ 0x2F1A, 0x2F1A, 0x04CC, 0x2F1B, 0x2F1B, 0x139C, 0x2F1C, 0x2F1C, 0x10BB,
+ 0x2F1D, 0x2F1D, 0x0967, 0x2F1E, 0x2F1E, 0x1593, 0x2F1F, 0x2F1F, 0x0E72,
+ 0x2F20, 0x2F20, 0x0D56, 0x2F21, 0x2F21, 0x161C, 0x2F22, 0x2F22, 0x2D2D,
+ 0x2F23, 0x2F23, 0x0F13, 0x2F24, 0x2F24, 0x0576, 0x2F25, 0x2F25, 0x0B6F,
+ 0x2F26, 0x2F26, 0x1230, 0x2F27, 0x2F27, 0x172E, 0x2F28, 0x2F28, 0x056A,
+ 0x2F29, 0x2F29, 0x0F6C, 0x2F2A, 0x2F2A, 0x14B6, 0x2F2B, 0x2F2B, 0x0D43,
+ 0x2F2C, 0x2F2C, 0x1774, 0x2F2D, 0x2F2D, 0x0CF6, 0x2F2E, 0x2F2E, 0x1815,
+ 0x2F2F, 0x2F2F, 0x06FD, 0x2F30, 0x2F30, 0x082D, 0x2F31, 0x2F31, 0x08BE,
+ 0x2F32, 0x2F32, 0x06C4, 0x2F33, 0x2F33, 0x1813, 0x2F34, 0x2F34, 0x073C,
+ 0x2F35, 0x2F35, 0x1398, 0x2F36, 0x2F36, 0x14AD, 0x2F37, 0x2F37, 0x14F6,
+ 0x2F38, 0x2F38, 0x0706, 0x2F39, 0x2F39, 0x1762, 0x2F3A, 0x2F3A, 0x15EE,
+ 0x2F3B, 0x2F3B, 0x15E0, 0x2F3C, 0x2F3C, 0x0F8F, 0x2F3D, 0x2F3D, 0x06E5,
+ 0x2F3E, 0x2F3E, 0x3292, 0x2F3F, 0x2F3F, 0x0D6D, 0x2F40, 0x2F40, 0x11A6,
+ 0x2F41, 0x2F41, 0x1909, 0x2F42, 0x2F42, 0x0ED3, 0x2F43, 0x2F43, 0x05F6,
+ 0x2F44, 0x2F44, 0x08C0, 0x2F45, 0x2F45, 0x065A, 0x2F46, 0x2F46, 0x0EED,
+ 0x2F47, 0x2F47, 0x0CB0, 0x2F48, 0x2F48, 0x10FE, 0x2F49, 0x2F49, 0x1105,
+ 0x2F4A, 0x2F4A, 0x0B21, 0x2F4B, 0x2F4B, 0x0C34, 0x2F4C, 0x2F4C, 0x11B8,
+ 0x2F4D, 0x2F4D, 0x0578, 0x2F4E, 0x2F4E, 0x19BD, 0x2F4F, 0x2F4F, 0x0EF2,
+ 0x2F50, 0x2F50, 0x0431, 0x2F51, 0x2F51, 0x0AB0, 0x2F52, 0x2F52, 0x0D66,
+ 0x2F53, 0x2F53, 0x0C17, 0x2F54, 0x2F54, 0x0DA3, 0x2F55, 0x2F55, 0x0805,
+ 0x2F56, 0x2F56, 0x1203, 0x2F57, 0x2F57, 0x06B3, 0x2F58, 0x2F58, 0x1269,
+ 0x2F59, 0x2F59, 0x169D, 0x2F5A, 0x2F5A, 0x0BCB, 0x2F5B, 0x2F5B, 0x0FE9,
+ 0x2F5C, 0x2F5C, 0x0B64, 0x2F5D, 0x2F5D, 0x0C89, 0x2F5E, 0x2F5E, 0x0FC9,
+ 0x2F5F, 0x2F5F, 0x10D6, 0x2F60, 0x2F60, 0x0728, 0x2F61, 0x2F61, 0x0E90,
+ 0x2F62, 0x2F62, 0x06C5, 0x2F63, 0x2F63, 0x0D33, 0x2F64, 0x2F64, 0x10A8,
+ 0x2F65, 0x2F65, 0x0E42, 0x2F66, 0x2F66, 0x1BC6, 0x2F67, 0x2F67, 0x1B60,
+ 0x2F68, 0x2F68, 0x3EBF, 0x2F69, 0x2F69, 0x03E2, 0x2F6A, 0x2F6A, 0x0BC3,
+ 0x2F6B, 0x2F6B, 0x0AF8, 0x2F6C, 0x2F6C, 0x0B22, 0x2F6D, 0x2F6D, 0x0AB1,
+ 0x2F6E, 0x2F6E, 0x0D4F, 0x2F6F, 0x2F6F, 0x0D46, 0x2F70, 0x2F70, 0x0D55,
+ 0x2F71, 0x2F71, 0x40CB, 0x2F72, 0x2F72, 0x0783, 0x2F73, 0x2F73, 0x0FD1,
+ 0x2F74, 0x2F74, 0x09EB, 0x2F75, 0x2F75, 0x11F0, 0x2F76, 0x2F76, 0x0ADC,
+ 0x2F77, 0x2F77, 0x1CE7, 0x2F78, 0x2F78, 0x1C5E, 0x2F79, 0x2F79, 0x0EA9,
+ 0x2F7A, 0x2F7A, 0x101B, 0x2F7B, 0x2F7B, 0x10D5, 0x2F7C, 0x2F7C, 0x09BA,
+ 0x2F7D, 0x2F7D, 0x0637, 0x2F7E, 0x2F7E, 0x1BCB, 0x2F7F, 0x2F7F, 0x0639,
+ 0x2F80, 0x2F80, 0x1A1E, 0x2F81, 0x2F81, 0x0CBD, 0x2F82, 0x2F82, 0x04E1,
+ 0x2F83, 0x2F83, 0x1231, 0x2F84, 0x2F84, 0x11C0, 0x2F85, 0x2F85, 0x08F9,
+ 0x2F86, 0x2F86, 0x0D19, 0x2F87, 0x2F87, 0x1618, 0x2F88, 0x2F88, 0x11DA,
+ 0x2F89, 0x2F89, 0x1CDC, 0x2F8A, 0x2F8A, 0x0CE4, 0x2F8B, 0x2F8B, 0x45A2,
+ 0x2F8C, 0x2F8C, 0x1BF0, 0x2F8D, 0x2F8D, 0x050B, 0x2F8E, 0x2F8E, 0x0FD3,
+ 0x2F8F, 0x2F8F, 0x0F9B, 0x2F90, 0x2F90, 0x1049, 0x2F91, 0x2F91, 0x49DC,
+ 0x2F92, 0x2F92, 0x1F96, 0x2F93, 0x2F93, 0x0898, 0x2F94, 0x2F94, 0x0FFD,
+ 0x2F95, 0x2F95, 0x0721, 0x2F96, 0x2F96, 0x05F8, 0x2F97, 0x2F97, 0x1D15,
+ 0x2F98, 0x2F98, 0x1D50, 0x2F99, 0x2F99, 0x1E3B, 0x2F9A, 0x2F9A, 0x0505,
+ 0x2F9B, 0x2F9B, 0x123C, 0x2F9C, 0x2F9C, 0x1240, 0x2F9D, 0x2F9D, 0x0D26,
+ 0x2F9E, 0x2F9E, 0x1E7B, 0x2F9F, 0x2F9F, 0x0F8C, 0x2FA0, 0x2FA0, 0x04E2,
+ 0x2FA1, 0x2FA1, 0x4D13, 0x2FA2, 0x2FA2, 0x105F, 0x2FA3, 0x2FA3, 0x10B4,
+ 0x2FA4, 0x2FA4, 0x4E18, 0x2FA5, 0x2FA5, 0x09DA, 0x2FA6, 0x2FA6, 0x08C1,
+ 0x2FA7, 0x2FA7, 0x1E75, 0x2FA8, 0x2FA8, 0x207D, 0x2FA9, 0x2FA9, 0x06B2,
+ 0x2FAA, 0x2FAA, 0x09EE, 0x2FAB, 0x2FAB, 0x1D79, 0x2FAC, 0x2FAC, 0x10CF,
+ 0x2FAD, 0x2FAD, 0x50EA, 0x2FAE, 0x2FAE, 0x0664, 0x2FAF, 0x2FAF, 0x0AEB,
+ 0x2FB0, 0x2FB0, 0x06EA, 0x2FB1, 0x2FB1, 0x218D, 0x2FB2, 0x2FB2, 0x08F1,
+ 0x2FB3, 0x2FB3, 0x107B, 0x2FB4, 0x2FB4, 0x2209, 0x2FB5, 0x2FB5, 0x1F00,
+ 0x2FB6, 0x2FB6, 0x1EF4, 0x2FB7, 0x2FB7, 0x0D4A, 0x2FB8, 0x2FB8, 0x0D6E,
+ 0x2FB9, 0x2FB9, 0x0F50, 0x2FBA, 0x2FBA, 0x206D, 0x2FBB, 0x2FBB, 0x0720,
+ 0x2FBC, 0x2FBC, 0x06DA, 0x2FBD, 0x2FBD, 0x1DEC, 0x2FBE, 0x2FBE, 0x1ED0,
+ 0x2FBF, 0x2FBF, 0x139B, 0x2FC0, 0x2FC0, 0x1260, 0x2FC1, 0x2FC1, 0x0746,
+ 0x2FC2, 0x2FC2, 0x2239, 0x2FC3, 0x2FC3, 0x209C, 0x2FC4, 0x2FC4, 0x2688,
+ 0x2FC5, 0x2FC5, 0x0A60, 0x2FC6, 0x2FC6, 0x2071, 0x2FC7, 0x2FC7, 0x0A90,
+ 0x2FC8, 0x2FC8, 0x5586, 0x2FC9, 0x2FC9, 0x0D89, 0x2FCA, 0x2FCA, 0x0791,
+ 0x2FCB, 0x2FCB, 0x1A55, 0x2FCC, 0x2FCC, 0x2618, 0x2FCD, 0x2FCD, 0x05E5,
+ 0x2FCE, 0x2FCE, 0x071D, 0x2FCF, 0x2FCF, 0x0D8A, 0x2FD0, 0x2FD0, 0x0430,
+ 0x2FD1, 0x2FD1, 0x20C6, 0x2FD2, 0x2FD2, 0x1E86, 0x2FD3, 0x2FD3, 0x2037,
+ 0x2FD4, 0x2FD4, 0x1F34, 0x2FD5, 0x2FD5, 0x12F3, 0x2FF0, 0x2FFB, 0x274C,
+ 0x3000, 0x3002, 0x0060, 0x3003, 0x3003, 0x0067, 0x3005, 0x3005, 0x0068,
+ 0x3006, 0x3006, 0x2728, 0x3007, 0x3007, 0x1E17, 0x3008, 0x300F, 0x0073,
+ 0x3010, 0x3011, 0x007D, 0x3012, 0x3012, 0x2705, 0x3013, 0x3013, 0x00BD,
+ 0x3014, 0x3015, 0x0071, 0x3016, 0x3017, 0x007B, 0x301D, 0x301E, 0x2706,
+ 0x3021, 0x3029, 0x2708, 0x3033, 0x3035, 0x577B, 0x3038, 0x303A, 0x577E,
+ 0x303E, 0x303E, 0x274B, 0x303F, 0x303F, 0x5755, 0x3041, 0x3093, 0x0164,
+ 0x3094, 0x3094, 0x5767, 0x309B, 0x309C, 0x2724, 0x309D, 0x309E, 0x2729,
+ 0x30A1, 0x30F6, 0x01B7, 0x30F7, 0x30FA, 0x5776, 0x30FB, 0x30FB, 0x0063,
+ 0x30FC, 0x30FC, 0x2723, 0x30FD, 0x30FE, 0x2726, 0x3105, 0x3129, 0x02BC,
+ 0x312A, 0x312C, 0x5781, 0x31A0, 0x31B7, 0x5784, 0x3220, 0x3229, 0x00F0,
+ 0x3231, 0x3231, 0x2721, 0x32A3, 0x32A3, 0x2711, 0x338E, 0x338F, 0x2712,
+ 0x339C, 0x339E, 0x2714, 0x33A1, 0x33A1, 0x2717, 0x33C4, 0x33C4, 0x2718,
+ 0x33CE, 0x33CE, 0x2719, 0x33D1, 0x33D2, 0x271A, 0x33D5, 0x33D5, 0x271C,
+ 0x3400, 0x3446, 0x5801, 0x3447, 0x3447, 0x5625, 0x3448, 0x3472, 0x5848,
+ 0x3473, 0x3473, 0x5624, 0x3474, 0x34FF, 0x5873, 0x3500, 0x359D, 0x58FF,
+ 0x359E, 0x359E, 0x5629, 0x359F, 0x35FF, 0x599D, 0x3600, 0x360D, 0x59FE,
+ 0x360E, 0x360E, 0x562B, 0x360F, 0x3619, 0x5A0C, 0x361A, 0x361A, 0x562A,
+ 0x361B, 0x36FF, 0x5A17, 0x3700, 0x37FF, 0x5AFC, 0x3800, 0x38FF, 0x5BFC,
+ 0x3900, 0x3917, 0x5CFC, 0x3918, 0x3918, 0x562F, 0x3919, 0x396D, 0x5D14,
+ 0x396E, 0x396E, 0x562E, 0x396F, 0x39CE, 0x5D69, 0x39CF, 0x39CF, 0x5631,
+ 0x39D0, 0x39D0, 0x5634, 0x39D1, 0x39DE, 0x5DC9, 0x39DF, 0x39DF, 0x5632,
+ 0x39E0, 0x39FF, 0x5DD7, 0x3A00, 0x3A72, 0x5DF7, 0x3A73, 0x3A73, 0x5633,
+ 0x3A74, 0x3AFF, 0x5E6A, 0x3B00, 0x3B4D, 0x5EF6, 0x3B4E, 0x3B4E, 0x5637,
+ 0x3B4F, 0x3BFF, 0x5F44, 0x3C00, 0x3C6D, 0x5FF5, 0x3C6E, 0x3C6E, 0x5638,
+ 0x3C6F, 0x3CDF, 0x6063, 0x3CE0, 0x3CE0, 0x5639, 0x3CE1, 0x3CFF, 0x60D4,
+ 0x3D00, 0x3DFF, 0x60F3, 0x3E00, 0x3EFF, 0x61F3, 0x3F00, 0x3FFF, 0x62F3,
+ 0x4000, 0x4055, 0x63F3, 0x4056, 0x4056, 0x563E, 0x4057, 0x40FF, 0x6449,
+ 0x4100, 0x415E, 0x64F2, 0x415F, 0x415F, 0x563F, 0x4160, 0x41FF, 0x6551,
+ 0x4200, 0x42FF, 0x65F1, 0x4300, 0x4336, 0x66F1, 0x4337, 0x4337, 0x5641,
+ 0x4338, 0x43AB, 0x6728, 0x43AC, 0x43AC, 0x5647, 0x43AD, 0x43B0, 0x679C,
+ 0x43B1, 0x43B1, 0x5646, 0x43B2, 0x43DC, 0x67A0, 0x43DD, 0x43DD, 0x5649,
+ 0x43DE, 0x43FF, 0x67CB, 0x4400, 0x44D5, 0x67ED, 0x44D6, 0x44D6, 0x564A,
+ 0x44D7, 0x44FF, 0x68C3, 0x4500, 0x45FF, 0x68EC, 0x4600, 0x464B, 0x69EC,
+ 0x464C, 0x464C, 0x564C, 0x464D, 0x4660, 0x6A38, 0x4661, 0x4661, 0x564B,
+ 0x4662, 0x46FF, 0x6A4C, 0x4700, 0x4722, 0x6AEA, 0x4723, 0x4723, 0x564E,
+ 0x4724, 0x4728, 0x6B0D, 0x4729, 0x4729, 0x564F, 0x472A, 0x477B, 0x6B12,
+ 0x477C, 0x477C, 0x5650, 0x477D, 0x478C, 0x6B64, 0x478D, 0x478D, 0x5651,
+ 0x478E, 0x47FF, 0x6B74, 0x4800, 0x48FF, 0x6BE6, 0x4900, 0x4946, 0x6CE6,
+ 0x4947, 0x4947, 0x5653, 0x4948, 0x4979, 0x6D2D, 0x497A, 0x497A, 0x5654,
+ 0x497B, 0x497C, 0x6D5F, 0x497D, 0x497D, 0x5655, 0x497E, 0x4981, 0x6D61,
+ 0x4982, 0x4983, 0x5656, 0x4984, 0x4984, 0x6D65, 0x4985, 0x4986, 0x5658,
+ 0x4987, 0x499A, 0x6D66, 0x499B, 0x499B, 0x565B, 0x499C, 0x499E, 0x6D7A,
+ 0x499F, 0x499F, 0x565A, 0x49A0, 0x49B5, 0x6D7D, 0x49B6, 0x49B6, 0x565D,
+ 0x49B7, 0x49B7, 0x565C, 0x49B8, 0x49FF, 0x6D93, 0x4A00, 0x4AFF, 0x6DDB,
+ 0x4B00, 0x4BFF, 0x6EDB, 0x4C00, 0x4C76, 0x6FDB, 0x4C77, 0x4C77, 0x5664,
+ 0x4C78, 0x4C9E, 0x7052, 0x4C9F, 0x4CA1, 0x5661, 0x4CA2, 0x4CA2, 0x5665,
+ 0x4CA3, 0x4CA3, 0x5660, 0x4CA4, 0x4CFF, 0x7079, 0x4D00, 0x4D12, 0x70D5,
+ 0x4D13, 0x4D19, 0x5666, 0x4D1A, 0x4DAD, 0x70E8, 0x4DAE, 0x4DAE, 0x566D,
+ 0x4DAF, 0x4DB5, 0x717C, 0x4E00, 0x4E00, 0x1042, 0x4E01, 0x4E01, 0x05E0,
+ 0x4E02, 0x4E02, 0x2758, 0x4E03, 0x4E03, 0x0BFE, 0x4E04, 0x4E06, 0x2759,
+ 0x4E07, 0x4E07, 0x0EA3, 0x4E08, 0x4E08, 0x116A, 0x4E09, 0x4E09, 0x0CD8,
+ 0x4E0A, 0x4E0A, 0x0D08, 0x4E0B, 0x4E0B, 0x0F2F, 0x4E0C, 0x4E0C, 0x1258,
+ 0x4E0D, 0x4E0D, 0x0482, 0x4E0E, 0x4E0E, 0x10D0, 0x4E0F, 0x4E0F, 0x275C,
+ 0x4E10, 0x4E10, 0x125A, 0x4E11, 0x4E11, 0x0518, 0x4E12, 0x4E12, 0x275D,
+ 0x4E13, 0x4E13, 0x1205, 0x4E14, 0x4E14, 0x0C4F, 0x4E15, 0x4E15, 0x125D,
+ 0x4E16, 0x4E16, 0x0D57, 0x4E17, 0x4E17, 0x275E, 0x4E18, 0x4E18, 0x0C6D,
+ 0x4E19, 0x4E19, 0x0464, 0x4E1A, 0x4E1A, 0x103C, 0x4E1B, 0x4E1B, 0x0557,
+ 0x4E1C, 0x4E1C, 0x05EA, 0x4E1D, 0x4E1D, 0x0DB4, 0x4E1E, 0x4E1E, 0x125F,
+ 0x4E1F, 0x4E21, 0x275F, 0x4E22, 0x4E22, 0x05E9, 0x4E23, 0x4E23, 0x2762,
+ 0x4E24, 0x4E24, 0x0A06, 0x4E25, 0x4E25, 0x0FF8, 0x4E26, 0x4E26, 0x2763,
+ 0x4E27, 0x4E27, 0x0CDE, 0x4E28, 0x4E28, 0x1263, 0x4E29, 0x4E29, 0x2764,
+ 0x4E2A, 0x4E2A, 0x06F1, 0x4E2B, 0x4E2B, 0x0FE7, 0x4E2C, 0x4E2C, 0x169C,
+ 0x4E2D, 0x4E2D, 0x11CF, 0x4E2E, 0x4E2F, 0x2765, 0x4E30, 0x4E30, 0x067E,
+ 0x4E31, 0x4E31, 0x2767, 0x4E32, 0x4E32, 0x0531, 0x4E33, 0x4E33, 0x2768,
+ 0x4E34, 0x4E34, 0x0A22, 0x4E35, 0x4E35, 0x2769, 0x4E36, 0x4E36, 0x1272,
+ 0x4E37, 0x4E37, 0x276A, 0x4E38, 0x4E38, 0x0E99, 0x4E39, 0x4E39, 0x0585,
+ 0x4E3A, 0x4E3A, 0x0EB9, 0x4E3B, 0x4E3B, 0x11F6, 0x4E3C, 0x4E3C, 0x276B,
+ 0x4E3D, 0x4E3D, 0x09E1, 0x4E3E, 0x4E3E, 0x0908, 0x4E3F, 0x4E3F, 0x1265,
+ 0x4E40, 0x4E42, 0x276C, 0x4E43, 0x4E43, 0x0B2E, 0x4E44, 0x4E44, 0x276F,
+ 0x4E45, 0x4E45, 0x08F2, 0x4E46, 0x4E46, 0x2770, 0x4E47, 0x4E47, 0x1267,
+ 0x4E48, 0x4E48, 0x0AB9, 0x4E49, 0x4E49, 0x106C, 0x4E4A, 0x4E4A, 0x2771,
+ 0x4E4B, 0x4E4B, 0x11AD, 0x4E4C, 0x4E4C, 0x0EE9, 0x4E4D, 0x4E4D, 0x1148,
+ 0x4E4E, 0x4E4E, 0x07AC, 0x4E4F, 0x4E4F, 0x0643, 0x4E50, 0x4E50, 0x09C1,
+ 0x4E51, 0x4E51, 0x2772, 0x4E52, 0x4E52, 0x0BD8, 0x4E53, 0x4E53, 0x0B93,
+ 0x4E54, 0x4E54, 0x0C44, 0x4E55, 0x4E55, 0x2773, 0x4E56, 0x4E56, 0x072D,
+ 0x4E57, 0x4E57, 0x2774, 0x4E58, 0x4E58, 0x04F0, 0x4E59, 0x4E59, 0x1059,
+ 0x4E5A, 0x4E5B, 0x2775, 0x4E5C, 0x4E5C, 0x1275, 0x4E5D, 0x4E5D, 0x08F4,
+ 0x4E5E, 0x4E5E, 0x0C11, 0x4E5F, 0x4E5F, 0x1039, 0x4E60, 0x4E60, 0x0F1D,
+ 0x4E61, 0x4E61, 0x0F54, 0x4E62, 0x4E65, 0x2777, 0x4E66, 0x4E66, 0x0D80,
+ 0x4E67, 0x4E68, 0x277B, 0x4E69, 0x4E69, 0x1276, 0x4E6A, 0x4E6F, 0x277D,
+ 0x4E70, 0x4E70, 0x0A99, 0x4E71, 0x4E71, 0x0A79, 0x4E72, 0x4E72, 0x2783,
+ 0x4E73, 0x4E73, 0x0CC4, 0x4E74, 0x4E7D, 0x2784, 0x4E7E, 0x4E7E, 0x0C29,
+ 0x4E7F, 0x4E81, 0x278E, 0x4E82, 0x4E82, 0x2059, 0x4E83, 0x4E85, 0x2791,
+ 0x4E86, 0x4E86, 0x0A14, 0x4E87, 0x4E87, 0x2794, 0x4E88, 0x4E88, 0x10CD,
+ 0x4E89, 0x4E89, 0x119A, 0x4E8A, 0x4E8A, 0x2795, 0x4E8B, 0x4E8B, 0x0D59,
+ 0x4E8C, 0x4E8C, 0x063D, 0x4E8D, 0x4E8D, 0x1257, 0x4E8E, 0x4E8E, 0x10BF,
+ 0x4E8F, 0x4E8F, 0x0984, 0x4E90, 0x4E90, 0x2796, 0x4E91, 0x4E91, 0x1109,
+ 0x4E92, 0x4E92, 0x07BA, 0x4E93, 0x4E93, 0x1277, 0x4E94, 0x4E94, 0x0EF4,
+ 0x4E95, 0x4E95, 0x08DD, 0x4E96, 0x4E97, 0x2797, 0x4E98, 0x4E98, 0x125E,
+ 0x4E99, 0x4E99, 0x2799, 0x4E9A, 0x4E9A, 0x0FF0, 0x4E9B, 0x4E9B, 0x0F74,
+ 0x4E9C, 0x4E9D, 0x279A, 0x4E9E, 0x4E9E, 0x21F1, 0x4E9F, 0x4E9F, 0x1273,
+ 0x4EA0, 0x4EA0, 0x1303, 0x4EA1, 0x4EA1, 0x0EA7, 0x4EA2, 0x4EA2, 0x0947,
+ 0x4EA3, 0x4EA3, 0x279C, 0x4EA4, 0x4EA4, 0x088C, 0x4EA5, 0x4EA5, 0x075C,
+ 0x4EA6, 0x4EA6, 0x1067, 0x4EA7, 0x4EA7, 0x04C1, 0x4EA8, 0x4EA8, 0x0797,
+ 0x4EA9, 0x4EA9, 0x0B19, 0x4EAA, 0x4EAA, 0x279D, 0x4EAB, 0x4EAB, 0x0F5A,
+ 0x4EAC, 0x4EAC, 0x08D8, 0x4EAD, 0x4EAD, 0x0E55, 0x4EAE, 0x4EAE, 0x0A0A,
+ 0x4EAF, 0x4EB1, 0x279E, 0x4EB2, 0x4EB2, 0x0C54, 0x4EB3, 0x4EB3, 0x1305,
+ 0x4EB4, 0x4EB4, 0x27A1, 0x4EB5, 0x4EB5, 0x1308, 0x4EB6, 0x4EB9, 0x27A2,
+ 0x4EBA, 0x4EBA, 0x0CA6, 0x4EBB, 0x4EBB, 0x129F, 0x4EBC, 0x4EBE, 0x27A6,
+ 0x4EBF, 0x4EBF, 0x1061, 0x4EC0, 0x4EC0, 0x0D49, 0x4EC1, 0x4EC1, 0x0CA5,
+ 0x4EC2, 0x4EC2, 0x12A2, 0x4EC3, 0x4EC3, 0x12A0, 0x4EC4, 0x4EC4, 0x127C,
+ 0x4EC5, 0x4EC5, 0x08C7, 0x4EC6, 0x4EC6, 0x0BEC, 0x4EC7, 0x4EC7, 0x0515,
+ 0x4EC8, 0x4EC8, 0x27A9, 0x4EC9, 0x4EC9, 0x12A1, 0x4ECA, 0x4ECA, 0x08C2,
+ 0x4ECB, 0x4ECB, 0x08BA, 0x4ECC, 0x4ECC, 0x27AA, 0x4ECD, 0x4ECD, 0x0CAF,
+ 0x4ECE, 0x4ECE, 0x0556, 0x4ECF, 0x4ED0, 0x27AB, 0x4ED1, 0x4ED1, 0x0A7F,
+ 0x4ED2, 0x4ED2, 0x27AD, 0x4ED3, 0x4ED3, 0x049D, 0x4ED4, 0x4ED4, 0x122D,
+ 0x4ED5, 0x4ED5, 0x0D62, 0x4ED6, 0x4ED6, 0x0DF0, 0x4ED7, 0x4ED7, 0x116D,
+ 0x4ED8, 0x4ED8, 0x06B1, 0x4ED9, 0x4ED9, 0x0F36, 0x4EDA, 0x4EDC, 0x27AE,
+ 0x4EDD, 0x4EDD, 0x12EE, 0x4EDE, 0x4EDE, 0x12A6, 0x4EDF, 0x4EDF, 0x0C27,
+ 0x4EE0, 0x4EE0, 0x27B1, 0x4EE1, 0x4EE1, 0x12A4, 0x4EE2, 0x4EE2, 0x27B2,
+ 0x4EE3, 0x4EE3, 0x057D, 0x4EE4, 0x4EE4, 0x0A37, 0x4EE5, 0x4EE5, 0x105B,
+ 0x4EE6, 0x4EE7, 0x27B3, 0x4EE8, 0x4EE8, 0x12A3, 0x4EE9, 0x4EE9, 0x27B5,
+ 0x4EEA, 0x4EEA, 0x104E, 0x4EEB, 0x4EEB, 0x12A5, 0x4EEC, 0x4EEC, 0x0ACC,
+ 0x4EED, 0x4EEF, 0x27B6, 0x4EF0, 0x4EF0, 0x101F, 0x4EF1, 0x4EF1, 0x27B9,
+ 0x4EF2, 0x4EF2, 0x11D8, 0x4EF3, 0x4EF3, 0x12A8, 0x4EF4, 0x4EF4, 0x27BA,
+ 0x4EF5, 0x4EF5, 0x12AB, 0x4EF6, 0x4EF6, 0x0871, 0x4EF7, 0x4EF7, 0x084E,
+ 0x4EF8, 0x4EFA, 0x27BB, 0x4EFB, 0x4EFB, 0x0CA9, 0x4EFC, 0x4EFC, 0x27BE,
+ 0x4EFD, 0x4EFD, 0x067A, 0x4EFE, 0x4EFE, 0x27BF, 0x4EFF, 0x4EFF, 0x065F,
+ 0x4F00, 0x4F00, 0x27C0, 0x4F01, 0x4F01, 0x0C12, 0x4F02, 0x4F08, 0x27C1,
+ 0x4F09, 0x4F09, 0x12AE, 0x4F0A, 0x4F0A, 0x1048, 0x4F0B, 0x4F0C, 0x27C8,
+ 0x4F0D, 0x4F0D, 0x0EF8, 0x4F0E, 0x4F0E, 0x0832, 0x4F0F, 0x4F0F, 0x0699,
+ 0x4F10, 0x4F10, 0x0642, 0x4F11, 0x4F11, 0x0FA8, 0x4F12, 0x4F16, 0x27CA,
+ 0x4F17, 0x4F17, 0x11D9, 0x4F18, 0x4F18, 0x10AA, 0x4F19, 0x4F19, 0x0804,
+ 0x4F1A, 0x4F1A, 0x07F6, 0x4F1B, 0x4F1B, 0x12A7, 0x4F1C, 0x4F1D, 0x27CF,
+ 0x4F1E, 0x4F1E, 0x0CDA, 0x4F1F, 0x4F1F, 0x0EBF, 0x4F20, 0x4F20, 0x052E,
+ 0x4F21, 0x4F21, 0x27D1, 0x4F22, 0x4F22, 0x12A9, 0x4F23, 0x4F23, 0x27D2,
+ 0x4F24, 0x4F24, 0x0D04, 0x4F25, 0x4F25, 0x12AC, 0x4F26, 0x4F26, 0x0A7E,
+ 0x4F27, 0x4F27, 0x12AD, 0x4F28, 0x4F29, 0x27D3, 0x4F2A, 0x4F2A, 0x0EC0,
+ 0x4F2B, 0x4F2B, 0x12AF, 0x4F2C, 0x4F2E, 0x27D5, 0x4F2F, 0x4F2F, 0x0475,
+ 0x4F30, 0x4F30, 0x0719, 0x4F31, 0x4F31, 0x27D8, 0x4F32, 0x4F32, 0x12B7,
+ 0x4F33, 0x4F33, 0x27D9, 0x4F34, 0x4F34, 0x03F4, 0x4F35, 0x4F35, 0x27DA,
+ 0x4F36, 0x4F36, 0x0A2F, 0x4F37, 0x4F37, 0x27DB, 0x4F38, 0x4F38, 0x0D25,
+ 0x4F39, 0x4F39, 0x27DC, 0x4F3A, 0x4F3A, 0x0DBA, 0x4F3B, 0x4F3B, 0x27DD,
+ 0x4F3C, 0x4F3C, 0x0DBB, 0x4F3D, 0x4F3D, 0x12B8, 0x4F3E, 0x4F42, 0x27DE,
+ 0x4F43, 0x4F43, 0x05C9, 0x4F44, 0x4F45, 0x27E3, 0x4F46, 0x4F46, 0x058C,
+ 0x4F47, 0x4F4C, 0x27E5, 0x4F4D, 0x4F4D, 0x0ECA, 0x4F4E, 0x4F4E, 0x05AE,
+ 0x4F4F, 0x4F4F, 0x11FE, 0x4F50, 0x4F50, 0x1251, 0x4F51, 0x4F51, 0x10B8,
+ 0x4F52, 0x4F52, 0x27EB, 0x4F53, 0x4F53, 0x0E38, 0x4F54, 0x4F54, 0x27EC,
+ 0x4F55, 0x4F55, 0x0785, 0x4F56, 0x4F56, 0x27ED, 0x4F57, 0x4F57, 0x12B6,
+ 0x4F58, 0x4F58, 0x12F0, 0x4F59, 0x4F59, 0x10C5, 0x4F5A, 0x4F5A, 0x12B3,
+ 0x4F5B, 0x4F5B, 0x068D, 0x4F5C, 0x4F5C, 0x1254, 0x4F5D, 0x4F5D, 0x12B4,
+ 0x4F5E, 0x4F5E, 0x12B0, 0x4F5F, 0x4F5F, 0x12B5, 0x4F60, 0x4F60, 0x0B46,
+ 0x4F61, 0x4F62, 0x27EE, 0x4F63, 0x4F63, 0x109B, 0x4F64, 0x4F64, 0x12AA,
+ 0x4F65, 0x4F65, 0x12F1, 0x4F66, 0x4F66, 0x27F0, 0x4F67, 0x4F67, 0x12B1,
+ 0x4F68, 0x4F68, 0x27F1, 0x4F69, 0x4F69, 0x0BA6, 0x4F6A, 0x4F6B, 0x27F2,
+ 0x4F6C, 0x4F6C, 0x09BB, 0x4F6D, 0x4F6E, 0x27F4, 0x4F6F, 0x4F6F, 0x1019,
+ 0x4F70, 0x4F70, 0x03E6, 0x4F71, 0x4F72, 0x27F6, 0x4F73, 0x4F73, 0x0844,
+ 0x4F74, 0x4F74, 0x12BA, 0x4F75, 0x4F75, 0x27F8, 0x4F76, 0x4F76, 0x12B9,
+ 0x4F77, 0x4F7A, 0x27F9, 0x4F7B, 0x4F7B, 0x12C0, 0x4F7C, 0x4F7C, 0x12C2,
+ 0x4F7D, 0x4F7D, 0x27FD, 0x4F7E, 0x4F7E, 0x12BF, 0x4F7F, 0x4F7F, 0x0D50,
+ 0x4F80, 0x4F82, 0x27FE, 0x4F83, 0x4F83, 0x12BD, 0x4F84, 0x4F84, 0x11B5,
+ 0x4F85, 0x4F85, 0x2801, 0x4F86, 0x4F86, 0x1FF2, 0x4F87, 0x4F87, 0x2802,
+ 0x4F88, 0x4F88, 0x0503, 0x4F89, 0x4F89, 0x12BC, 0x4F8A, 0x4F8A, 0x2803,
+ 0x4F8B, 0x4F8B, 0x09E8, 0x4F8C, 0x4F8C, 0x2804, 0x4F8D, 0x4F8D, 0x0D63,
+ 0x4F8E, 0x4F8E, 0x2805, 0x4F8F, 0x4F8F, 0x12BE, 0x4F90, 0x4F90, 0x2806,
+ 0x4F91, 0x4F91, 0x12BB, 0x4F92, 0x4F93, 0x2807, 0x4F94, 0x4F94, 0x12C4,
+ 0x4F95, 0x4F95, 0x2809, 0x4F96, 0x4F96, 0x205D, 0x4F97, 0x4F97, 0x05F0,
+ 0x4F98, 0x4F9A, 0x280A, 0x4F9B, 0x4F9B, 0x0702, 0x4F9C, 0x4F9C, 0x280D,
+ 0x4F9D, 0x4F9D, 0x1047, 0x4F9E, 0x4F9F, 0x280E, 0x4FA0, 0x4FA0, 0x0F2D,
+ 0x4FA1, 0x4FA2, 0x2810, 0x4FA3, 0x4FA3, 0x0A69, 0x4FA4, 0x4FA4, 0x2812,
+ 0x4FA5, 0x4FA5, 0x0895, 0x4FA6, 0x4FA6, 0x118D, 0x4FA7, 0x4FA7, 0x04A7,
+ 0x4FA8, 0x4FA8, 0x0C45, 0x4FA9, 0x4FA9, 0x0978, 0x4FAA, 0x4FAA, 0x12C1,
+ 0x4FAB, 0x4FAB, 0x2813, 0x4FAC, 0x4FAC, 0x12C3, 0x4FAD, 0x4FAD, 0x2814,
+ 0x4FAE, 0x4FAE, 0x0EF9, 0x4FAF, 0x4FAF, 0x07A5, 0x4FB0, 0x4FB4, 0x2815,
+ 0x4FB5, 0x4FB5, 0x0C53, 0x4FB6, 0x4FBE, 0x281A, 0x4FBF, 0x4FBF, 0x044C,
+ 0x4FC0, 0x4FC1, 0x2823, 0x4FC2, 0x4FC2, 0x269C, 0x4FC3, 0x4FC3, 0x055C,
+ 0x4FC4, 0x4FC4, 0x062C, 0x4FC5, 0x4FC5, 0x12C8, 0x4FC6, 0x4FC9, 0x2825,
+ 0x4FCA, 0x4FCA, 0x092E, 0x4FCB, 0x4FCD, 0x2829, 0x4FCE, 0x4FCE, 0x12F2,
+ 0x4FCF, 0x4FCF, 0x0C4B, 0x4FD0, 0x4FD0, 0x09E9, 0x4FD1, 0x4FD1, 0x12CC,
+ 0x4FD2, 0x4FD6, 0x282C, 0x4FD7, 0x4FD7, 0x0DCC, 0x4FD8, 0x4FD8, 0x069A,
+ 0x4FD9, 0x4FD9, 0x2831, 0x4FDA, 0x4FDA, 0x12C9, 0x4FDB, 0x4FDB, 0x2832,
+ 0x4FDC, 0x4FDC, 0x12CB, 0x4FDD, 0x4FDD, 0x040C, 0x4FDE, 0x4FDE, 0x10C6,
+ 0x4FDF, 0x4FDF, 0x12CD, 0x4FE0, 0x4FE0, 0x21B5, 0x4FE1, 0x4FE1, 0x0F90,
+ 0x4FE2, 0x4FE2, 0x2833, 0x4FE3, 0x4FE3, 0x12CA, 0x4FE4, 0x4FE5, 0x2834,
+ 0x4FE6, 0x4FE6, 0x12C5, 0x4FE7, 0x4FE7, 0x2836, 0x4FE8, 0x4FE8, 0x12C6,
+ 0x4FE9, 0x4FE9, 0x09F2, 0x4FEA, 0x4FEA, 0x12C7, 0x4FEB, 0x4FEC, 0x2837,
+ 0x4FED, 0x4FED, 0x0866, 0x4FEE, 0x4FEE, 0x0FA9, 0x4FEF, 0x4FEF, 0x06A4,
+ 0x4FF0, 0x4FF0, 0x2839, 0x4FF1, 0x4FF1, 0x0912, 0x4FF2, 0x4FF2, 0x283A,
+ 0x4FF3, 0x4FF3, 0x12D1, 0x4FF4, 0x4FF7, 0x283B, 0x4FF8, 0x4FF8, 0x12CE,
+ 0x4FF9, 0x4FF9, 0x283F, 0x4FFA, 0x4FFA, 0x03BE, 0x4FFB, 0x4FFD, 0x2840,
+ 0x4FFE, 0x4FFE, 0x12D6, 0x4FFF, 0x4FFF, 0x2843, 0x5000, 0x5000, 0x22CC,
+ 0x5001, 0x5005, 0x2844, 0x5006, 0x5006, 0x2016, 0x5007, 0x5008, 0x2849,
+ 0x5009, 0x5009, 0x1E62, 0x500A, 0x500A, 0x284B, 0x500B, 0x500B, 0x1F20,
+ 0x500C, 0x500C, 0x12D8, 0x500D, 0x500D, 0x041F, 0x500E, 0x500E, 0x284C,
+ 0x500F, 0x500F, 0x12D3, 0x5010, 0x5010, 0x284D, 0x5011, 0x5011, 0x207F,
+ 0x5012, 0x5012, 0x059A, 0x5013, 0x5013, 0x284E, 0x5014, 0x5014, 0x0922,
+ 0x5015, 0x5017, 0x284F, 0x5018, 0x5018, 0x0E1B, 0x5019, 0x5019, 0x07A9,
+ 0x501A, 0x501A, 0x1057, 0x501B, 0x501B, 0x2852, 0x501C, 0x501C, 0x12D7,
+ 0x501D, 0x501E, 0x2853, 0x501F, 0x501F, 0x08B9, 0x5020, 0x5020, 0x2855,
+ 0x5021, 0x5021, 0x04D0, 0x5022, 0x5024, 0x2856, 0x5025, 0x5025, 0x12D9,
+ 0x5026, 0x5026, 0x091A, 0x5027, 0x5027, 0x2859, 0x5028, 0x5028, 0x12DA,
+ 0x5029, 0x5029, 0x12CF, 0x502A, 0x502A, 0x0B42, 0x502B, 0x502B, 0x205C,
+ 0x502C, 0x502C, 0x12D2, 0x502D, 0x502D, 0x12D5, 0x502E, 0x502E, 0x12D4,
+ 0x502F, 0x5039, 0x285A, 0x503A, 0x503A, 0x114F, 0x503B, 0x503B, 0x2865,
+ 0x503C, 0x503C, 0x11B4, 0x503D, 0x503D, 0x2866, 0x503E, 0x503E, 0x0C60,
+ 0x503F, 0x5042, 0x2867, 0x5043, 0x5043, 0x12DC, 0x5044, 0x5046, 0x286B,
+ 0x5047, 0x5047, 0x084C, 0x5048, 0x5048, 0x12DE, 0x5049, 0x5049, 0x2194,
+ 0x504A, 0x504B, 0x286E, 0x504C, 0x504C, 0x12D0, 0x504D, 0x504D, 0x2870,
+ 0x504E, 0x504E, 0x12DF, 0x504F, 0x504F, 0x0BCA, 0x5050, 0x5054, 0x2871,
+ 0x5055, 0x5055, 0x12DD, 0x5056, 0x5059, 0x2876, 0x505A, 0x505A, 0x1253,
+ 0x505B, 0x505B, 0x287A, 0x505C, 0x505C, 0x0E54, 0x505D, 0x5064, 0x287B,
+ 0x5065, 0x5065, 0x0872, 0x5066, 0x506B, 0x2883, 0x506C, 0x506C, 0x12E0,
+ 0x506D, 0x5073, 0x2889, 0x5074, 0x5074, 0x1E65, 0x5075, 0x5075, 0x2281,
+ 0x5076, 0x5076, 0x0B7D, 0x5077, 0x5077, 0x0E66, 0x5078, 0x507A, 0x2890,
+ 0x507B, 0x507B, 0x12E1, 0x507C, 0x507D, 0x2893, 0x507E, 0x507E, 0x12DB,
+ 0x507F, 0x507F, 0x04CA, 0x5080, 0x5080, 0x098B, 0x5081, 0x5084, 0x2895,
+ 0x5085, 0x5085, 0x06B0, 0x5086, 0x5087, 0x2899, 0x5088, 0x5088, 0x09E7,
+ 0x5089, 0x508C, 0x289B, 0x508D, 0x508D, 0x0403, 0x508E, 0x5095, 0x289F,
+ 0x5096, 0x5096, 0x22CD, 0x5097, 0x5097, 0x28A7, 0x5098, 0x5098, 0x210A,
+ 0x5099, 0x5099, 0x1E3E, 0x509A, 0x50A1, 0x28A8, 0x50A2, 0x50A2, 0x267F,
+ 0x50A3, 0x50A3, 0x0579, 0x50A4, 0x50A4, 0x28B0, 0x50A5, 0x50A5, 0x12E2,
+ 0x50A6, 0x50A6, 0x28B1, 0x50A7, 0x50A7, 0x12E3, 0x50A8, 0x50A8, 0x0525,
+ 0x50A9, 0x50A9, 0x12E4, 0x50AA, 0x50AB, 0x28B2, 0x50AC, 0x50AC, 0x0562,
+ 0x50AD, 0x50AD, 0x222E, 0x50AE, 0x50B1, 0x28B4, 0x50B2, 0x50B2, 0x03CC,
+ 0x50B3, 0x50B3, 0x1E96, 0x50B4, 0x50B4, 0x22CB, 0x50B5, 0x50B5, 0x226C,
+ 0x50B6, 0x50B6, 0x28B8, 0x50B7, 0x50B7, 0x2117, 0x50B8, 0x50B9, 0x28B9,
+ 0x50BA, 0x50BA, 0x12E5, 0x50BB, 0x50BB, 0x0CEE, 0x50BC, 0x50BD, 0x28BB,
+ 0x50BE, 0x50BE, 0x20E8, 0x50BF, 0x50C1, 0x28BD, 0x50C2, 0x50C2, 0x22D4,
+ 0x50C3, 0x50C4, 0x28C0, 0x50C5, 0x50C5, 0x1FB9, 0x50C6, 0x50C8, 0x28C2,
+ 0x50C9, 0x50C9, 0x22D8, 0x50CA, 0x50CE, 0x28C5, 0x50CF, 0x50CF, 0x0F5E,
+ 0x50D0, 0x50D0, 0x28CA, 0x50D1, 0x50D1, 0x20DF, 0x50D2, 0x50D4, 0x28CB,
+ 0x50D5, 0x50D5, 0x20C2, 0x50D6, 0x50D6, 0x12E6, 0x50D7, 0x50D9, 0x28CE,
+ 0x50DA, 0x50DA, 0x0A0E, 0x50DB, 0x50DD, 0x28D1, 0x50DE, 0x50DE, 0x2195,
+ 0x50DF, 0x50E4, 0x28D4, 0x50E5, 0x50E5, 0x1FAC, 0x50E6, 0x50E6, 0x12EA,
+ 0x50E7, 0x50E7, 0x0CE7, 0x50E8, 0x50E8, 0x22D3, 0x50E9, 0x50EB, 0x28DA,
+ 0x50EC, 0x50EC, 0x12E9, 0x50ED, 0x50ED, 0x12E8, 0x50EE, 0x50EE, 0x12EB,
+ 0x50EF, 0x50F2, 0x28DD, 0x50F3, 0x50F3, 0x0DD0, 0x50F4, 0x50F4, 0x28E1,
+ 0x50F5, 0x50F5, 0x087A, 0x50F6, 0x50F8, 0x28E2, 0x50F9, 0x50F9, 0x1F81,
+ 0x50FA, 0x50FA, 0x28E5, 0x50FB, 0x50FB, 0x0BC6, 0x50FC, 0x50FF, 0x28E6,
+ 0x5100, 0x5100, 0x2210, 0x5101, 0x5101, 0x28EA, 0x5102, 0x5102, 0x22CF,
+ 0x5103, 0x5103, 0x28EB, 0x5104, 0x5104, 0x2213, 0x5105, 0x5105, 0x28EC,
+ 0x5106, 0x5106, 0x12E7, 0x5107, 0x5107, 0x12EC, 0x5108, 0x5108, 0x1FE4,
+ 0x5109, 0x5109, 0x1F90, 0x510A, 0x510A, 0x28ED, 0x510B, 0x510B, 0x12ED,
+ 0x510C, 0x510F, 0x28EE, 0x5110, 0x5110, 0x22D6, 0x5111, 0x5111, 0x28F2,
+ 0x5112, 0x5112, 0x0CC0, 0x5113, 0x5113, 0x28F3, 0x5114, 0x5114, 0x22D0,
+ 0x5115, 0x5115, 0x22CE, 0x5116, 0x5117, 0x28F4, 0x5118, 0x5118, 0x2681,
+ 0x5119, 0x511E, 0x28F6, 0x511F, 0x511F, 0x1E76, 0x5120, 0x5120, 0x28FC,
+ 0x5121, 0x5121, 0x09C7, 0x5122, 0x5129, 0x28FD, 0x512A, 0x512A, 0x2231,
+ 0x512B, 0x5131, 0x2905, 0x5132, 0x5132, 0x1E93, 0x5133, 0x5136, 0x290C,
+ 0x5137, 0x5137, 0x22D2, 0x5138, 0x5139, 0x2910, 0x513A, 0x513A, 0x22D7,
+ 0x513B, 0x513B, 0x22D5, 0x513C, 0x513C, 0x22D1, 0x513D, 0x513E, 0x2912,
+ 0x513F, 0x513F, 0x0638, 0x5140, 0x5140, 0x1259, 0x5141, 0x5141, 0x110D,
+ 0x5142, 0x5142, 0x2914, 0x5143, 0x5143, 0x10ED, 0x5144, 0x5144, 0x0FA1,
+ 0x5145, 0x5145, 0x0509, 0x5146, 0x5146, 0x1178, 0x5147, 0x5147, 0x2915,
+ 0x5148, 0x5148, 0x0F35, 0x5149, 0x5149, 0x073B, 0x514A, 0x514A, 0x2916,
+ 0x514B, 0x514B, 0x0958, 0x514C, 0x514C, 0x2917, 0x514D, 0x514D, 0x0AE7,
+ 0x514E, 0x5150, 0x2918, 0x5151, 0x5151, 0x0611, 0x5152, 0x5152, 0x1EE5,
+ 0x5153, 0x5153, 0x291B, 0x5154, 0x5154, 0x0E74, 0x5155, 0x5155, 0x1302,
+ 0x5156, 0x5156, 0x1304, 0x5157, 0x5159, 0x291C, 0x515A, 0x515A, 0x0594,
+ 0x515B, 0x515B, 0x291F, 0x515C, 0x515C, 0x05F4, 0x515D, 0x5161, 0x2920,
+ 0x5162, 0x5162, 0x08D3, 0x5163, 0x5164, 0x2925, 0x5165, 0x5165, 0x0CC6,
+ 0x5166, 0x5167, 0x2927, 0x5168, 0x5168, 0x0C86, 0x5169, 0x5169, 0x2025,
+ 0x516A, 0x516A, 0x2929, 0x516B, 0x516B, 0x03D6, 0x516C, 0x516C, 0x0704,
+ 0x516D, 0x516D, 0x0A42, 0x516E, 0x516E, 0x12F6, 0x516F, 0x516F, 0x292A,
+ 0x5170, 0x5170, 0x09A7, 0x5171, 0x5171, 0x070B, 0x5172, 0x5172, 0x292B,
+ 0x5173, 0x5173, 0x0731, 0x5174, 0x5174, 0x0F96, 0x5175, 0x5175, 0x0461,
+ 0x5176, 0x5176, 0x0C03, 0x5177, 0x5177, 0x090E, 0x5178, 0x5178, 0x05C5,
+ 0x5179, 0x5179, 0x1225, 0x517A, 0x517A, 0x292C, 0x517B, 0x517B, 0x1021,
+ 0x517C, 0x517C, 0x0859, 0x517D, 0x517D, 0x0D75, 0x517E, 0x517F, 0x292D,
+ 0x5180, 0x5180, 0x0830, 0x5181, 0x5181, 0x12FA, 0x5182, 0x5182, 0x129D,
+ 0x5183, 0x5184, 0x292F, 0x5185, 0x5185, 0x0B3D, 0x5186, 0x5187, 0x2931,
+ 0x5188, 0x5188, 0x06CF, 0x5189, 0x5189, 0x0C98, 0x518A, 0x518B, 0x2933,
+ 0x518C, 0x518C, 0x04A8, 0x518D, 0x518D, 0x111C, 0x518E, 0x5191, 0x2935,
+ 0x5192, 0x5192, 0x0AB5, 0x5193, 0x5194, 0x2939, 0x5195, 0x5195, 0x0AE6,
+ 0x5196, 0x5196, 0x1314, 0x5197, 0x5197, 0x0CBA, 0x5198, 0x5198, 0x293B,
+ 0x5199, 0x5199, 0x0F7F, 0x519A, 0x519A, 0x293C, 0x519B, 0x519B, 0x092B,
+ 0x519C, 0x519C, 0x0B6A, 0x519D, 0x519F, 0x293D, 0x51A0, 0x51A0, 0x0733,
+ 0x51A1, 0x51A1, 0x2940, 0x51A2, 0x51A2, 0x1315, 0x51A3, 0x51A3, 0x2941,
+ 0x51A4, 0x51A4, 0x10EC, 0x51A5, 0x51A5, 0x1316, 0x51A6, 0x51AA, 0x2942,
+ 0x51AB, 0x51AB, 0x130F, 0x51AC, 0x51AC, 0x05EB, 0x51AD, 0x51AE, 0x2947,
+ 0x51AF, 0x51AF, 0x0688, 0x51B0, 0x51B0, 0x0462, 0x51B1, 0x51B1, 0x1310,
+ 0x51B2, 0x51B2, 0x050A, 0x51B3, 0x51B3, 0x0925, 0x51B4, 0x51B4, 0x2949,
+ 0x51B5, 0x51B5, 0x0983, 0x51B6, 0x51B6, 0x1038, 0x51B7, 0x51B7, 0x09CF,
+ 0x51B8, 0x51BA, 0x294A, 0x51BB, 0x51BB, 0x05F2, 0x51BC, 0x51BC, 0x1312,
+ 0x51BD, 0x51BD, 0x1311, 0x51BE, 0x51BF, 0x294D, 0x51C0, 0x51C0, 0x08EA,
+ 0x51C1, 0x51C3, 0x294F, 0x51C4, 0x51C4, 0x0BFF, 0x51C5, 0x51C5, 0x2952,
+ 0x51C6, 0x51C6, 0x1219, 0x51C7, 0x51C7, 0x1313, 0x51C8, 0x51C8, 0x2953,
+ 0x51C9, 0x51C9, 0x0A02, 0x51CA, 0x51CA, 0x2954, 0x51CB, 0x51CB, 0x05D3,
+ 0x51CC, 0x51CC, 0x0A31, 0x51CD, 0x51CD, 0x1ECF, 0x51CE, 0x51CE, 0x2955,
+ 0x51CF, 0x51CF, 0x0868, 0x51D0, 0x51D0, 0x2956, 0x51D1, 0x51D1, 0x0558,
+ 0x51D2, 0x51DA, 0x2957, 0x51DB, 0x51DB, 0x0A26, 0x51DC, 0x51DC, 0x2960,
+ 0x51DD, 0x51DD, 0x0B60, 0x51DE, 0x51DF, 0x2961, 0x51E0, 0x51E0, 0x082B,
+ 0x51E1, 0x51E1, 0x064F, 0x51E2, 0x51E3, 0x2963, 0x51E4, 0x51E4, 0x068C,
+ 0x51E5, 0x51EA, 0x2965, 0x51EB, 0x51EB, 0x1300, 0x51EC, 0x51EC, 0x296B,
+ 0x51ED, 0x51ED, 0x0BDD, 0x51EE, 0x51EE, 0x296C, 0x51EF, 0x51EF, 0x093A,
+ 0x51F0, 0x51F0, 0x07E0, 0x51F1, 0x51F1, 0x1FD9, 0x51F2, 0x51F2, 0x296D,
+ 0x51F3, 0x51F3, 0x05AB, 0x51F4, 0x51F4, 0x296E, 0x51F5, 0x51F5, 0x1399,
+ 0x51F6, 0x51F6, 0x0FA2, 0x51F7, 0x51F7, 0x296F, 0x51F8, 0x51F8, 0x0E6A,
+ 0x51F9, 0x51F9, 0x03C7, 0x51FA, 0x51FA, 0x051B, 0x51FB, 0x51FB, 0x080C,
+ 0x51FC, 0x51FC, 0x139A, 0x51FD, 0x51FD, 0x0766, 0x51FE, 0x51FE, 0x2970,
+ 0x51FF, 0x51FF, 0x1127, 0x5200, 0x5200, 0x0597, 0x5201, 0x5201, 0x05D4,
+ 0x5202, 0x5202, 0x128C, 0x5203, 0x5203, 0x0CAB, 0x5204, 0x5205, 0x2971,
+ 0x5206, 0x5206, 0x0673, 0x5207, 0x5207, 0x0C4D, 0x5208, 0x5208, 0x128D,
+ 0x5209, 0x5209, 0x2973, 0x520A, 0x520A, 0x093C, 0x520B, 0x520C, 0x2974,
+ 0x520D, 0x520D, 0x138B, 0x520E, 0x520E, 0x128E, 0x520F, 0x5210, 0x2976,
+ 0x5211, 0x5211, 0x0F97, 0x5212, 0x5212, 0x07C3, 0x5213, 0x5215, 0x2978,
+ 0x5216, 0x5216, 0x196E, 0x5217, 0x5217, 0x0A19, 0x5218, 0x5218, 0x0A3E,
+ 0x5219, 0x5219, 0x1135, 0x521A, 0x521A, 0x06D0, 0x521B, 0x521B, 0x0537,
+ 0x521C, 0x521C, 0x297B, 0x521D, 0x521D, 0x051A, 0x521E, 0x521F, 0x297C,
+ 0x5220, 0x5220, 0x0CF7, 0x5221, 0x5223, 0x297E, 0x5224, 0x5224, 0x0B91,
+ 0x5225, 0x5227, 0x2981, 0x5228, 0x5228, 0x0B9A, 0x5229, 0x5229, 0x09E6,
+ 0x522A, 0x522A, 0x2984, 0x522B, 0x522B, 0x0459, 0x522C, 0x522C, 0x2985,
+ 0x522D, 0x522D, 0x128F, 0x522E, 0x522E, 0x0727, 0x522F, 0x522F, 0x2986,
+ 0x5230, 0x5230, 0x059E, 0x5231, 0x5232, 0x2987, 0x5233, 0x5233, 0x1290,
+ 0x5234, 0x5235, 0x2989, 0x5236, 0x5236, 0x11C5, 0x5237, 0x5237, 0x0D97,
+ 0x5238, 0x5238, 0x0C8A, 0x5239, 0x5239, 0x0CEB, 0x523A, 0x523A, 0x054F,
+ 0x523B, 0x523B, 0x0959, 0x523C, 0x523C, 0x298B, 0x523D, 0x523D, 0x074D,
+ 0x523E, 0x523E, 0x298C, 0x523F, 0x5240, 0x1291, 0x5241, 0x5241, 0x0626,
+ 0x5242, 0x5242, 0x0834, 0x5243, 0x5243, 0x0E3D, 0x5244, 0x5244, 0x22C8,
+ 0x5245, 0x5246, 0x298D, 0x5247, 0x5247, 0x2263, 0x5248, 0x5249, 0x298F,
+ 0x524A, 0x524A, 0x0F64, 0x524B, 0x524B, 0x2683, 0x524C, 0x524C, 0x1293,
+ 0x524D, 0x524D, 0x0C2D, 0x524E, 0x524F, 0x2991, 0x5250, 0x5250, 0x0729,
+ 0x5251, 0x5251, 0x0874, 0x5252, 0x5253, 0x2993, 0x5254, 0x5254, 0x0E31,
+ 0x5255, 0x5255, 0x2995, 0x5256, 0x5256, 0x0BE9, 0x5257, 0x525A, 0x2996,
+ 0x525B, 0x525B, 0x1F17, 0x525C, 0x525C, 0x1296, 0x525D, 0x525D, 0x299A,
+ 0x525E, 0x525E, 0x1294, 0x525F, 0x5260, 0x299B, 0x5261, 0x5261, 0x1295,
+ 0x5262, 0x5264, 0x299D, 0x5265, 0x5265, 0x0409, 0x5266, 0x5266, 0x29A0,
+ 0x5267, 0x5267, 0x0916, 0x5268, 0x5268, 0x29A1, 0x5269, 0x5269, 0x0D3A,
+ 0x526A, 0x526A, 0x0867, 0x526B, 0x526D, 0x29A2, 0x526E, 0x526E, 0x1F2B,
+ 0x526F, 0x526F, 0x06AC, 0x5270, 0x5271, 0x29A5, 0x5272, 0x5272, 0x06E9,
+ 0x5273, 0x5273, 0x29A7, 0x5274, 0x5274, 0x22CA, 0x5275, 0x5275, 0x1E99,
+ 0x5276, 0x527C, 0x29A8, 0x527D, 0x527D, 0x1298, 0x527E, 0x527E, 0x29AF,
+ 0x527F, 0x527F, 0x089C, 0x5280, 0x5280, 0x29B0, 0x5281, 0x5281, 0x129A,
+ 0x5282, 0x5282, 0x1299, 0x5283, 0x5283, 0x1F4F, 0x5284, 0x5286, 0x29B1,
+ 0x5287, 0x5287, 0x1FCF, 0x5288, 0x5288, 0x0BBD, 0x5289, 0x5289, 0x2036,
+ 0x528A, 0x528A, 0x1F3A, 0x528B, 0x528B, 0x29B4, 0x528C, 0x528C, 0x22C9,
+ 0x528D, 0x528D, 0x1F99, 0x528E, 0x528F, 0x29B5, 0x5290, 0x5290, 0x129B,
+ 0x5291, 0x5291, 0x1F75, 0x5292, 0x5292, 0x29B7, 0x5293, 0x5293, 0x129C,
+ 0x5294, 0x529A, 0x29B8, 0x529B, 0x529B, 0x09EF, 0x529C, 0x529C, 0x29BF,
+ 0x529D, 0x529D, 0x0C8B, 0x529E, 0x529E, 0x03F7, 0x529F, 0x529F, 0x06FF,
+ 0x52A0, 0x52A0, 0x0846, 0x52A1, 0x52A1, 0x0F00, 0x52A2, 0x52A2, 0x138D,
+ 0x52A3, 0x52A3, 0x0A1C, 0x52A4, 0x52A7, 0x29C0, 0x52A8, 0x52A8, 0x05EE,
+ 0x52A9, 0x52A9, 0x11F9, 0x52AA, 0x52AA, 0x0B6D, 0x52AB, 0x52AB, 0x08AA,
+ 0x52AC, 0x52AD, 0x138E, 0x52AE, 0x52B0, 0x29C4, 0x52B1, 0x52B1, 0x09E3,
+ 0x52B2, 0x52B2, 0x08D1, 0x52B3, 0x52B3, 0x09B8, 0x52B4, 0x52BD, 0x29C7,
+ 0x52BE, 0x52BE, 0x1390, 0x52BF, 0x52BF, 0x0D5D, 0x52C0, 0x52C0, 0x29D1,
+ 0x52C1, 0x52C1, 0x1FBE, 0x52C2, 0x52C2, 0x29D2, 0x52C3, 0x52C3, 0x0471,
+ 0x52C4, 0x52C6, 0x29D3, 0x52C7, 0x52C7, 0x10A7, 0x52C8, 0x52C8, 0x29D6,
+ 0x52C9, 0x52C9, 0x0AE8, 0x52CA, 0x52CA, 0x29D7, 0x52CB, 0x52CB, 0x0FD4,
+ 0x52CC, 0x52CF, 0x29D8, 0x52D0, 0x52D0, 0x1392, 0x52D1, 0x52D1, 0x29DC,
+ 0x52D2, 0x52D2, 0x09C0, 0x52D3, 0x52D4, 0x29DD, 0x52D5, 0x52D5, 0x1ECD,
+ 0x52D6, 0x52D6, 0x1393, 0x52D7, 0x52D7, 0x29DF, 0x52D8, 0x52D8, 0x093E,
+ 0x52D9, 0x52D9, 0x21A9, 0x52DA, 0x52DA, 0x29E0, 0x52DB, 0x52DB, 0x21E6,
+ 0x52DC, 0x52DC, 0x29E1, 0x52DD, 0x52DD, 0x2127, 0x52DE, 0x52DE, 0x2003,
+ 0x52DF, 0x52DF, 0x0B1F, 0x52E0, 0x52E1, 0x29E2, 0x52E2, 0x52E2, 0x2132,
+ 0x52E3, 0x52E3, 0x29E4, 0x52E4, 0x52E4, 0x0C57, 0x52E5, 0x52EF, 0x29E5,
+ 0x52F0, 0x52F0, 0x1394, 0x52F1, 0x52F1, 0x2323, 0x52F2, 0x52F4, 0x29F0,
+ 0x52F5, 0x52F5, 0x2011, 0x52F6, 0x52F7, 0x29F3, 0x52F8, 0x52F8, 0x20F5,
+ 0x52F9, 0x52F9, 0x12FC, 0x52FA, 0x52FA, 0x0D10, 0x52FB, 0x52FD, 0x29F5,
+ 0x52FE, 0x52FE, 0x070D, 0x52FF, 0x52FF, 0x0EFF, 0x5300, 0x5300, 0x110B,
+ 0x5301, 0x5304, 0x29F8, 0x5305, 0x5305, 0x0407, 0x5306, 0x5306, 0x0555,
+ 0x5307, 0x5307, 0x29FC, 0x5308, 0x5308, 0x0FA4, 0x5309, 0x530C, 0x29FD,
+ 0x530D, 0x530D, 0x12FD, 0x530E, 0x530E, 0x2A01, 0x530F, 0x530F, 0x14B5,
+ 0x5310, 0x5310, 0x12FF, 0x5311, 0x5314, 0x2A02, 0x5315, 0x5315, 0x1266,
+ 0x5316, 0x5316, 0x07C4, 0x5317, 0x5317, 0x041A, 0x5318, 0x5318, 0x2A06,
+ 0x5319, 0x5319, 0x04FC, 0x531A, 0x531A, 0x1284, 0x531B, 0x531C, 0x2A07,
+ 0x531D, 0x531D, 0x1114, 0x531E, 0x531F, 0x2A09, 0x5320, 0x5320, 0x0884,
+ 0x5321, 0x5321, 0x097C, 0x5322, 0x5322, 0x2A0B, 0x5323, 0x5323, 0x0F28,
+ 0x5324, 0x5325, 0x2A0C, 0x5326, 0x5326, 0x1286, 0x5327, 0x5329, 0x2A0E,
+ 0x532A, 0x532A, 0x0668, 0x532B, 0x532C, 0x2A11, 0x532D, 0x532D, 0x22C5,
+ 0x532E, 0x532E, 0x1287, 0x532F, 0x532F, 0x1F5E, 0x5330, 0x5330, 0x2A13,
+ 0x5331, 0x5331, 0x22C6, 0x5332, 0x5338, 0x2A14, 0x5339, 0x5339, 0x0BC4,
+ 0x533A, 0x533A, 0x0C75, 0x533B, 0x533B, 0x1044, 0x533C, 0x533D, 0x2A1B,
+ 0x533E, 0x533E, 0x1288, 0x533F, 0x533F, 0x0B47, 0x5340, 0x5340, 0x20EF,
+ 0x5341, 0x5341, 0x0D45, 0x5342, 0x5342, 0x2A1D, 0x5343, 0x5343, 0x0C24,
+ 0x5344, 0x5344, 0x2A1E, 0x5345, 0x5345, 0x125C, 0x5346, 0x5346, 0x2A1F,
+ 0x5347, 0x5347, 0x0D36, 0x5348, 0x5348, 0x0EF6, 0x5349, 0x5349, 0x07F1,
+ 0x534A, 0x534A, 0x03F6, 0x534B, 0x534D, 0x2A20, 0x534E, 0x534E, 0x07BF,
+ 0x534F, 0x534F, 0x0F78, 0x5350, 0x5350, 0x2A23, 0x5351, 0x5351, 0x0419,
+ 0x5352, 0x5352, 0x1241, 0x5353, 0x5353, 0x121C, 0x5354, 0x5354, 0x21D0,
+ 0x5355, 0x5355, 0x0586, 0x5356, 0x5356, 0x0A9B, 0x5357, 0x5357, 0x0B32,
+ 0x5358, 0x5359, 0x2A24, 0x535A, 0x535A, 0x0470, 0x535B, 0x535B, 0x2A26,
+ 0x535C, 0x535C, 0x047E, 0x535D, 0x535D, 0x2A27, 0x535E, 0x535E, 0x044E,
+ 0x535F, 0x535F, 0x14FA, 0x5360, 0x5360, 0x115D, 0x5361, 0x5361, 0x0935,
+ 0x5362, 0x5362, 0x0A53, 0x5363, 0x5363, 0x128B, 0x5364, 0x5364, 0x0A58,
+ 0x5365, 0x5365, 0x2A28, 0x5366, 0x5366, 0x128A, 0x5367, 0x5367, 0x0EE3,
+ 0x5368, 0x5368, 0x2A29, 0x5369, 0x5369, 0x1352, 0x536A, 0x536A, 0x2A2A,
+ 0x536B, 0x536B, 0x0ECF, 0x536C, 0x536D, 0x2A2B, 0x536E, 0x536E, 0x126A,
+ 0x536F, 0x536F, 0x0AB3, 0x5370, 0x5370, 0x1086, 0x5371, 0x5371, 0x0EB2,
+ 0x5372, 0x5372, 0x2A2D, 0x5373, 0x5373, 0x0827, 0x5374, 0x5374, 0x0C8F,
+ 0x5375, 0x5375, 0x0A78, 0x5376, 0x5376, 0x2A2E, 0x5377, 0x5377, 0x091C,
+ 0x5378, 0x5378, 0x0F81, 0x5379, 0x5379, 0x2A2F, 0x537A, 0x537A, 0x1353,
+ 0x537B, 0x537E, 0x2A30, 0x537F, 0x537F, 0x0C61, 0x5380, 0x5381, 0x2A34,
+ 0x5382, 0x5382, 0x04CC, 0x5383, 0x5383, 0x2A36, 0x5384, 0x5384, 0x0631,
+ 0x5385, 0x5385, 0x0E4F, 0x5386, 0x5386, 0x09E5, 0x5387, 0x5388, 0x2A37,
+ 0x5389, 0x5389, 0x09E2, 0x538A, 0x538A, 0x2A39, 0x538B, 0x538B, 0x0FE2,
+ 0x538C, 0x538C, 0x100A, 0x538D, 0x538D, 0x127D, 0x538E, 0x5394, 0x2A3A,
+ 0x5395, 0x5395, 0x04A5, 0x5396, 0x5397, 0x2A41, 0x5398, 0x5398, 0x09D0,
+ 0x5399, 0x5399, 0x22C1, 0x539A, 0x539A, 0x07A8, 0x539B, 0x539C, 0x2A43,
+ 0x539D, 0x539D, 0x127E, 0x539E, 0x539E, 0x2A45, 0x539F, 0x539F, 0x10F0,
+ 0x53A0, 0x53A0, 0x1E64, 0x53A1, 0x53A1, 0x2A46, 0x53A2, 0x53A2, 0x0F4E,
+ 0x53A3, 0x53A3, 0x127F, 0x53A4, 0x53A4, 0x2A47, 0x53A5, 0x53A5, 0x1280,
+ 0x53A6, 0x53A6, 0x0F30, 0x53A7, 0x53A7, 0x2A48, 0x53A8, 0x53A8, 0x051D,
+ 0x53A9, 0x53A9, 0x08F6, 0x53AA, 0x53AC, 0x2A49, 0x53AD, 0x53AD, 0x21F9,
+ 0x53AE, 0x53AE, 0x1281, 0x53AF, 0x53B1, 0x2A4C, 0x53B2, 0x53B2, 0x2010,
+ 0x53B3, 0x53B3, 0x2A4F, 0x53B4, 0x53B4, 0x22C2, 0x53B5, 0x53B5, 0x2A50,
+ 0x53B6, 0x53B6, 0x139C, 0x53B7, 0x53BA, 0x2A51, 0x53BB, 0x53BB, 0x0C80,
+ 0x53BC, 0x53BE, 0x2A55, 0x53BF, 0x53BF, 0x0F45, 0x53C0, 0x53C0, 0x2A58,
+ 0x53C1, 0x53C1, 0x0CD9, 0x53C2, 0x53C2, 0x0495, 0x53C3, 0x53C3, 0x1E5A,
+ 0x53C4, 0x53C7, 0x2A59, 0x53C8, 0x53C8, 0x10BB, 0x53C9, 0x53C9, 0x04AD,
+ 0x53CA, 0x53CA, 0x0823, 0x53CB, 0x53CB, 0x10B6, 0x53CC, 0x53CC, 0x0DA0,
+ 0x53CD, 0x53CD, 0x0651, 0x53CE, 0x53D0, 0x2A5D, 0x53D1, 0x53D1, 0x063F,
+ 0x53D2, 0x53D3, 0x2A60, 0x53D4, 0x53D4, 0x0D7C, 0x53D5, 0x53D5, 0x2A62,
+ 0x53D6, 0x53D6, 0x0C7C, 0x53D7, 0x53D7, 0x0D73, 0x53D8, 0x53D8, 0x044D,
+ 0x53D9, 0x53D9, 0x0FBB, 0x53DA, 0x53DA, 0x2A63, 0x53DB, 0x53DB, 0x0B92,
+ 0x53DC, 0x53DE, 0x2A64, 0x53DF, 0x53DF, 0x1395, 0x53E0, 0x53E0, 0x05DF,
+ 0x53E1, 0x53E1, 0x2A67, 0x53E2, 0x53E2, 0x1EA2, 0x53E3, 0x53E3, 0x0967,
+ 0x53E4, 0x53E4, 0x071E, 0x53E5, 0x53E5, 0x0913, 0x53E6, 0x53E6, 0x0A36,
+ 0x53E7, 0x53E7, 0x2A68, 0x53E8, 0x53E8, 0x14FE, 0x53E9, 0x53E9, 0x14FD,
+ 0x53EA, 0x53EA, 0x11BA, 0x53EB, 0x53EB, 0x08A1, 0x53EC, 0x53EC, 0x117A,
+ 0x53ED, 0x53ED, 0x03D3, 0x53EE, 0x53EE, 0x05E2, 0x53EF, 0x53EF, 0x0956,
+ 0x53F0, 0x53F0, 0x0DFB, 0x53F1, 0x53F1, 0x14FB, 0x53F2, 0x53F2, 0x0D4E,
+ 0x53F3, 0x53F3, 0x10B7, 0x53F4, 0x53F4, 0x2A69, 0x53F5, 0x53F5, 0x1285,
+ 0x53F6, 0x53F6, 0x103D, 0x53F7, 0x53F7, 0x077C, 0x53F8, 0x53F8, 0x0DB3,
+ 0x53F9, 0x53F9, 0x0E11, 0x53FA, 0x53FA, 0x2A6A, 0x53FB, 0x53FB, 0x14FF,
+ 0x53FC, 0x53FC, 0x05D1, 0x53FD, 0x53FD, 0x14FC, 0x53FE, 0x53FF, 0x2A6B,
+ 0x5400, 0x5400, 0x2A6D, 0x5401, 0x5401, 0x10DA, 0x5402, 0x5402, 0x2A6E,
+ 0x5403, 0x5403, 0x04F9, 0x5404, 0x5404, 0x06F2, 0x5405, 0x5405, 0x2A6F,
+ 0x5406, 0x5406, 0x1502, 0x5407, 0x5407, 0x2A70, 0x5408, 0x5408, 0x0786,
+ 0x5409, 0x5409, 0x081D, 0x540A, 0x540A, 0x05D6, 0x540B, 0x540B, 0x2A71,
+ 0x540C, 0x540C, 0x0E5D, 0x540D, 0x540D, 0x0B00, 0x540E, 0x540E, 0x07AA,
+ 0x540F, 0x540F, 0x09DF, 0x5410, 0x5410, 0x0E73, 0x5411, 0x5411, 0x0F5F,
+ 0x5412, 0x5412, 0x1500, 0x5413, 0x5413, 0x0F32, 0x5414, 0x5414, 0x2A72,
+ 0x5415, 0x5415, 0x0A67, 0x5416, 0x5416, 0x1501, 0x5417, 0x5417, 0x0A97,
+ 0x5418, 0x541A, 0x2A73, 0x541B, 0x541B, 0x092C, 0x541C, 0x541C, 0x2A76,
+ 0x541D, 0x541D, 0x0A28, 0x541E, 0x541E, 0x0E7D, 0x541F, 0x541F, 0x107E,
+ 0x5420, 0x5420, 0x066A, 0x5421, 0x5421, 0x1509, 0x5422, 0x5422, 0x2A77,
+ 0x5423, 0x5423, 0x150C, 0x5424, 0x5425, 0x2A78, 0x5426, 0x5426, 0x068E,
+ 0x5427, 0x5427, 0x03D4, 0x5428, 0x5428, 0x0615, 0x5429, 0x5429, 0x0671,
+ 0x542A, 0x542A, 0x2A7A, 0x542B, 0x542B, 0x0763, 0x542C, 0x542C, 0x0E50,
+ 0x542D, 0x542D, 0x0961, 0x542E, 0x542E, 0x0DA6, 0x542F, 0x542F, 0x0C13,
+ 0x5430, 0x5430, 0x2A7B, 0x5431, 0x5431, 0x11A7, 0x5432, 0x5432, 0x150D,
+ 0x5433, 0x5433, 0x2A7C, 0x5434, 0x5434, 0x0EF1, 0x5435, 0x5435, 0x04D8,
+ 0x5436, 0x5437, 0x2A7D, 0x5438, 0x5438, 0x0F0B, 0x5439, 0x5439, 0x0538,
+ 0x543A, 0x543A, 0x2A7F, 0x543B, 0x543B, 0x0ED6, 0x543C, 0x543C, 0x07A7,
+ 0x543D, 0x543D, 0x2A80, 0x543E, 0x543E, 0x0EF0, 0x543F, 0x543F, 0x2A81,
+ 0x5440, 0x5440, 0x0FE6, 0x5441, 0x5442, 0x2A82, 0x5443, 0x5443, 0x1508,
+ 0x5444, 0x5445, 0x2A84, 0x5446, 0x5446, 0x0577, 0x5447, 0x5447, 0x2A86,
+ 0x5448, 0x5448, 0x04EF, 0x5449, 0x5449, 0x2A87, 0x544A, 0x544A, 0x06E1,
+ 0x544B, 0x544B, 0x1503, 0x544C, 0x544F, 0x2A88, 0x5450, 0x5450, 0x0B28,
+ 0x5451, 0x5451, 0x2A8C, 0x5452, 0x5454, 0x1504, 0x5455, 0x5455, 0x0B7C,
+ 0x5456, 0x5456, 0x1507, 0x5457, 0x5457, 0x150A, 0x5458, 0x5458, 0x10F4,
+ 0x5459, 0x5459, 0x150B, 0x545A, 0x545A, 0x2A8D, 0x545B, 0x545B, 0x0C37,
+ 0x545C, 0x545C, 0x0EE7, 0x545D, 0x5461, 0x2A8E, 0x5462, 0x5462, 0x0B3B,
+ 0x5463, 0x5463, 0x2A93, 0x5464, 0x5464, 0x1512, 0x5465, 0x5465, 0x2A94,
+ 0x5466, 0x5466, 0x1517, 0x5467, 0x5467, 0x2A95, 0x5468, 0x5468, 0x11DB,
+ 0x5469, 0x5470, 0x2A96, 0x5471, 0x5471, 0x1511, 0x5472, 0x5472, 0x1522,
+ 0x5473, 0x5473, 0x0EC5, 0x5474, 0x5474, 0x2A9E, 0x5475, 0x5475, 0x077E,
+ 0x5476, 0x5476, 0x1516, 0x5477, 0x5477, 0x1510, 0x5478, 0x5478, 0x0B9F,
+ 0x5479, 0x547A, 0x2A9F, 0x547B, 0x547B, 0x0D24, 0x547C, 0x547C, 0x07AB,
+ 0x547D, 0x547D, 0x0B01, 0x547E, 0x547F, 0x2AA1, 0x5480, 0x5480, 0x0906,
+ 0x5481, 0x5481, 0x2AA3, 0x5482, 0x5482, 0x150E, 0x5483, 0x5483, 0x2AA4,
+ 0x5484, 0x5484, 0x1515, 0x5485, 0x5485, 0x2AA5, 0x5486, 0x5486, 0x0B99,
+ 0x5487, 0x548A, 0x2AA6, 0x548B, 0x548B, 0x1147, 0x548C, 0x548C, 0x0784,
+ 0x548D, 0x548D, 0x2AAA, 0x548E, 0x548E, 0x08FB, 0x548F, 0x548F, 0x10A2,
+ 0x5490, 0x5490, 0x06BB, 0x5491, 0x5491, 0x2AAB, 0x5492, 0x5492, 0x11E3,
+ 0x5493, 0x5493, 0x2AAC, 0x5494, 0x5494, 0x150F, 0x5495, 0x5495, 0x0717,
+ 0x5496, 0x5496, 0x0934, 0x5497, 0x5498, 0x2AAD, 0x5499, 0x5499, 0x0A45,
+ 0x549A, 0x549B, 0x1513, 0x549C, 0x549C, 0x2AAF, 0x549D, 0x549D, 0x1518,
+ 0x549E, 0x54A2, 0x2AB0, 0x54A3, 0x54A3, 0x1523, 0x54A4, 0x54A4, 0x152D,
+ 0x54A5, 0x54A5, 0x2AB5, 0x54A6, 0x54A6, 0x151F, 0x54A7, 0x54A7, 0x151E,
+ 0x54A8, 0x54A8, 0x1226, 0x54A9, 0x54AA, 0x152B, 0x54AB, 0x54AB, 0x1767,
+ 0x54AC, 0x54AC, 0x102E, 0x54AD, 0x54AD, 0x151A, 0x54AE, 0x54AE, 0x2AB6,
+ 0x54AF, 0x54AF, 0x0936, 0x54B0, 0x54B0, 0x2AB7, 0x54B1, 0x54B1, 0x111E,
+ 0x54B2, 0x54B2, 0x2AB8, 0x54B3, 0x54B3, 0x0955, 0x54B4, 0x54B4, 0x151C,
+ 0x54B5, 0x54B7, 0x2AB9, 0x54B8, 0x54B8, 0x0F39, 0x54B9, 0x54BA, 0x2ABC,
+ 0x54BB, 0x54BB, 0x1525, 0x54BC, 0x54BC, 0x236D, 0x54BD, 0x54BD, 0x0FF3,
+ 0x54BE, 0x54BE, 0x2ABE, 0x54BF, 0x54BF, 0x1526, 0x54C0, 0x54C0, 0x03B2,
+ 0x54C1, 0x54C1, 0x0BD6, 0x54C2, 0x54C2, 0x151B, 0x54C3, 0x54C3, 0x2ABF,
+ 0x54C4, 0x54C4, 0x079C, 0x54C5, 0x54C5, 0x2AC0, 0x54C6, 0x54C6, 0x061E,
+ 0x54C7, 0x54C7, 0x0E8C, 0x54C8, 0x54C8, 0x0757, 0x54C9, 0x54C9, 0x1118,
+ 0x54CA, 0x54CB, 0x2AC1, 0x54CC, 0x54CC, 0x1527, 0x54CD, 0x54CD, 0x0F59,
+ 0x54CE, 0x54CE, 0x03B0, 0x54CF, 0x54CF, 0x152F, 0x54D0, 0x54D0, 0x1519,
+ 0x54D1, 0x54D1, 0x0FEF, 0x54D2, 0x54D2, 0x151D, 0x54D3, 0x54D4, 0x1520,
+ 0x54D5, 0x54D5, 0x1524, 0x54D6, 0x54D6, 0x2AC3, 0x54D7, 0x54D7, 0x07BE,
+ 0x54D8, 0x54D8, 0x2AC4, 0x54D9, 0x54DA, 0x1528, 0x54DB, 0x54DB, 0x2AC5,
+ 0x54DC, 0x54DC, 0x152A, 0x54DD, 0x54DD, 0x152E, 0x54DE, 0x54DE, 0x1530,
+ 0x54DF, 0x54DF, 0x1099, 0x54E0, 0x54E0, 0x2AC6, 0x54E1, 0x54E1, 0x2247,
+ 0x54E2, 0x54E4, 0x2AC7, 0x54E5, 0x54E5, 0x06E2, 0x54E6, 0x54E6, 0x0B77,
+ 0x54E7, 0x54E7, 0x1532, 0x54E8, 0x54E8, 0x0D13, 0x54E9, 0x54E9, 0x09F1,
+ 0x54EA, 0x54EA, 0x0B27, 0x54EB, 0x54EC, 0x2ACA, 0x54ED, 0x54ED, 0x096B,
+ 0x54EE, 0x54EE, 0x0F65, 0x54EF, 0x54F1, 0x2ACC, 0x54F2, 0x54F2, 0x117D,
+ 0x54F3, 0x54F3, 0x1536, 0x54F4, 0x54F9, 0x2ACF, 0x54FA, 0x54FA, 0x047F,
+ 0x54FB, 0x54FB, 0x2AD5, 0x54FC, 0x54FC, 0x0796, 0x54FD, 0x54FD, 0x1534,
+ 0x54FE, 0x54FE, 0x2AD6, 0x54FF, 0x54FF, 0x1391, 0x5500, 0x5500, 0x2AD7,
+ 0x5501, 0x5501, 0x100D, 0x5502, 0x5503, 0x2AD8, 0x5504, 0x5504, 0x236C,
+ 0x5505, 0x5505, 0x2ADA, 0x5506, 0x5506, 0x0DE9, 0x5507, 0x5507, 0x0540,
+ 0x5508, 0x5508, 0x2ADB, 0x5509, 0x5509, 0x03B1, 0x550A, 0x550E, 0x2ADC,
+ 0x550F, 0x550F, 0x1539, 0x5510, 0x5510, 0x0E19, 0x5511, 0x5511, 0x153A,
+ 0x5512, 0x5513, 0x2AE1, 0x5514, 0x5514, 0x1535, 0x5515, 0x551A, 0x2AE3,
+ 0x551B, 0x551B, 0x1531, 0x551C, 0x551F, 0x2AE9, 0x5520, 0x5520, 0x1533,
+ 0x5521, 0x5521, 0x2AED, 0x5522, 0x5523, 0x1537, 0x5524, 0x5524, 0x07D2,
+ 0x5525, 0x5526, 0x2AEE, 0x5527, 0x5527, 0x153B, 0x5528, 0x5529, 0x2AF0,
+ 0x552A, 0x552A, 0x153C, 0x552B, 0x552B, 0x2AF2, 0x552C, 0x552C, 0x07B8,
+ 0x552D, 0x552D, 0x2AF3, 0x552E, 0x552E, 0x0D72, 0x552F, 0x552F, 0x0EB7,
+ 0x5530, 0x5530, 0x154D, 0x5531, 0x5531, 0x04CF, 0x5532, 0x5532, 0x2AF4,
+ 0x5533, 0x5533, 0x154C, 0x5534, 0x5536, 0x2AF5, 0x5537, 0x5537, 0x1547,
+ 0x5538, 0x553B, 0x2AF8, 0x553C, 0x553C, 0x1546, 0x553D, 0x553D, 0x2AFC,
+ 0x553E, 0x553E, 0x0E8A, 0x553F, 0x553F, 0x1544, 0x5540, 0x5540, 0x2AFD,
+ 0x5541, 0x5541, 0x1542, 0x5542, 0x5542, 0x2AFE, 0x5543, 0x5543, 0x095D,
+ 0x5544, 0x5544, 0x1221, 0x5545, 0x5545, 0x2AFF, 0x5546, 0x5546, 0x0D05,
+ 0x5547, 0x5548, 0x2B00, 0x5549, 0x5549, 0x1540, 0x554A, 0x554A, 0x03AC,
+ 0x554B, 0x554E, 0x2B02, 0x554F, 0x554F, 0x219C, 0x5550, 0x5550, 0x1545,
+ 0x5551, 0x5552, 0x2B06, 0x5553, 0x5553, 0x20C9, 0x5554, 0x5554, 0x2B08,
+ 0x5555, 0x5555, 0x1543, 0x5556, 0x5556, 0x1548, 0x5557, 0x555B, 0x2B09,
+ 0x555C, 0x555C, 0x154E, 0x555D, 0x555D, 0x2B0E, 0x555E, 0x555E, 0x21F0,
+ 0x555F, 0x5560, 0x2B0F, 0x5561, 0x5561, 0x0665, 0x5562, 0x5563, 0x2B11,
+ 0x5564, 0x5564, 0x0BC0, 0x5565, 0x5565, 0x0CEF, 0x5566, 0x5566, 0x099D,
+ 0x5567, 0x5567, 0x153D, 0x5568, 0x5569, 0x2B13, 0x556A, 0x556A, 0x0B7F,
+ 0x556B, 0x556B, 0x2B15, 0x556C, 0x556C, 0x127A, 0x556D, 0x556D, 0x1541,
+ 0x556E, 0x556E, 0x0B59, 0x556F, 0x5574, 0x2B16, 0x5575, 0x5577, 0x1549,
+ 0x5578, 0x5578, 0x0F70, 0x5579, 0x557A, 0x2B1C, 0x557B, 0x557B, 0x155A,
+ 0x557C, 0x557C, 0x0E37, 0x557D, 0x557D, 0x2B1E, 0x557E, 0x557E, 0x1557,
+ 0x557F, 0x557F, 0x2B1F, 0x5580, 0x5580, 0x0933, 0x5581, 0x5581, 0x1555,
+ 0x5582, 0x5582, 0x0EC8, 0x5583, 0x5583, 0x1551, 0x5584, 0x5584, 0x0CFF,
+ 0x5585, 0x5586, 0x2B20, 0x5587, 0x5587, 0x0999, 0x5588, 0x5588, 0x1554,
+ 0x5589, 0x5589, 0x07A4, 0x558A, 0x558A, 0x0767, 0x558B, 0x558B, 0x154F,
+ 0x558C, 0x558E, 0x2B22, 0x558F, 0x558F, 0x153E, 0x5590, 0x5590, 0x2B25,
+ 0x5591, 0x5591, 0x1559, 0x5592, 0x5593, 0x2B26, 0x5594, 0x5594, 0x155E,
+ 0x5595, 0x5597, 0x2B28, 0x5598, 0x5598, 0x0530, 0x5599, 0x5599, 0x155F,
+ 0x559A, 0x559B, 0x2B2B, 0x559C, 0x559C, 0x0F1F, 0x559D, 0x559D, 0x077F,
+ 0x559E, 0x559E, 0x2B2D, 0x559F, 0x559F, 0x1556, 0x55A0, 0x55A6, 0x2B2E,
+ 0x55A7, 0x55A7, 0x0FC5, 0x55A8, 0x55A9, 0x2B35, 0x55AA, 0x55AA, 0x210B,
+ 0x55AB, 0x55AB, 0x2B37, 0x55AC, 0x55AC, 0x20DE, 0x55AD, 0x55AD, 0x2B38,
+ 0x55AE, 0x55AE, 0x1EAA, 0x55AF, 0x55B0, 0x2B39, 0x55B1, 0x55B1, 0x1552,
+ 0x55B2, 0x55B2, 0x222C, 0x55B3, 0x55B3, 0x113E, 0x55B4, 0x55B4, 0x2B3B,
+ 0x55B5, 0x55B5, 0x153F, 0x55B6, 0x55B6, 0x2B3C, 0x55B7, 0x55B7, 0x0BA8,
+ 0x55B8, 0x55B8, 0x2B3D, 0x55B9, 0x55B9, 0x1553, 0x55BA, 0x55BA, 0x2B3E,
+ 0x55BB, 0x55BB, 0x10DC, 0x55BC, 0x55BC, 0x2B3F, 0x55BD, 0x55BE, 0x155C,
+ 0x55BF, 0x55C3, 0x2B40, 0x55C4, 0x55C4, 0x156A, 0x55C5, 0x55C5, 0x0FAC,
+ 0x55C6, 0x55C6, 0x20D8, 0x55C7, 0x55C7, 0x22C0, 0x55C8, 0x55C8, 0x2B45,
+ 0x55C9, 0x55C9, 0x1562, 0x55CA, 0x55CB, 0x2B46, 0x55CC, 0x55CD, 0x156F,
+ 0x55CE, 0x55CE, 0x206F, 0x55CF, 0x55D0, 0x2B48, 0x55D1, 0x55D1, 0x1564,
+ 0x55D2, 0x55D2, 0x1550, 0x55D3, 0x55D3, 0x0CDD, 0x55D4, 0x55D4, 0x1567,
+ 0x55D5, 0x55D5, 0x2B4A, 0x55D6, 0x55D6, 0x1558, 0x55D7, 0x55D9, 0x2B4B,
+ 0x55DA, 0x55DA, 0x21A1, 0x55DB, 0x55DB, 0x2B4E, 0x55DC, 0x55DC, 0x0D5F,
+ 0x55DD, 0x55DD, 0x1569, 0x55DE, 0x55DE, 0x2B4F, 0x55DF, 0x55DF, 0x155B,
+ 0x55E0, 0x55E0, 0x2B50, 0x55E1, 0x55E1, 0x0EDA, 0x55E2, 0x55E2, 0x2B51,
+ 0x55E3, 0x55E3, 0x0DB8, 0x55E4, 0x55E4, 0x1573, 0x55E5, 0x55E5, 0x156C,
+ 0x55E6, 0x55E6, 0x1568, 0x55E7, 0x55E7, 0x2B52, 0x55E8, 0x55E8, 0x1571,
+ 0x55E9, 0x55E9, 0x2379, 0x55EA, 0x55EA, 0x1560, 0x55EB, 0x55EC, 0x1565,
+ 0x55ED, 0x55EE, 0x2B53, 0x55EF, 0x55EF, 0x156B, 0x55F0, 0x55F1, 0x2B55,
+ 0x55F2, 0x55F3, 0x156D, 0x55F4, 0x55F4, 0x2B57, 0x55F5, 0x55F5, 0x1572,
+ 0x55F6, 0x55F6, 0x2372, 0x55F7, 0x55F7, 0x1561, 0x55F8, 0x55FC, 0x2B58,
+ 0x55FD, 0x55FD, 0x0DC9, 0x55FE, 0x55FE, 0x157B, 0x55FF, 0x55FF, 0x2B5D,
+ 0x5600, 0x5600, 0x157C, 0x5601, 0x5601, 0x1578, 0x5602, 0x5605, 0x2B5E,
+ 0x5606, 0x5606, 0x216A, 0x5607, 0x5607, 0x2B62, 0x5608, 0x5608, 0x1576,
+ 0x5609, 0x5609, 0x0841, 0x560A, 0x560B, 0x2B63, 0x560C, 0x560C, 0x1577,
+ 0x560D, 0x560D, 0x237C, 0x560E, 0x560E, 0x06BD, 0x560F, 0x560F, 0x127B,
+ 0x5610, 0x5613, 0x2B65, 0x5614, 0x5614, 0x20B0, 0x5615, 0x5615, 0x2B69,
+ 0x5616, 0x5616, 0x237A, 0x5617, 0x5617, 0x1E74, 0x5618, 0x5618, 0x0FB5,
+ 0x5619, 0x561A, 0x2B6A, 0x561B, 0x561B, 0x0A96, 0x561C, 0x561C, 0x2377,
+ 0x561D, 0x561D, 0x2B6C, 0x561E, 0x561E, 0x1575, 0x561F, 0x561F, 0x1563,
+ 0x5620, 0x5622, 0x2B6D, 0x5623, 0x5623, 0x157A, 0x5624, 0x5624, 0x1579,
+ 0x5625, 0x5626, 0x2B70, 0x5627, 0x5627, 0x157D, 0x5628, 0x5628, 0x2B72,
+ 0x5629, 0x5629, 0x1F4C, 0x562A, 0x562B, 0x2B73, 0x562C, 0x562C, 0x1582,
+ 0x562D, 0x562D, 0x157E, 0x562E, 0x562E, 0x2378, 0x562F, 0x562F, 0x21CF,
+ 0x5630, 0x5630, 0x2368, 0x5631, 0x5631, 0x11F5, 0x5632, 0x5632, 0x04D5,
+ 0x5633, 0x5633, 0x2B75, 0x5634, 0x5634, 0x1249, 0x5635, 0x5635, 0x2371,
+ 0x5636, 0x5636, 0x0DB0, 0x5637, 0x5637, 0x2B76, 0x5638, 0x5638, 0x2369,
+ 0x5639, 0x5639, 0x1580, 0x563A, 0x563A, 0x2B77, 0x563B, 0x563B, 0x0F0A,
+ 0x563C, 0x563E, 0x2B78, 0x563F, 0x563F, 0x0790, 0x5640, 0x5640, 0x2B7B,
+ 0x5641, 0x5641, 0x2674, 0x5642, 0x564B, 0x2B7C, 0x564C, 0x564C, 0x1587,
+ 0x564D, 0x564D, 0x1583, 0x564E, 0x564E, 0x1034, 0x564F, 0x5653, 0x2B86,
+ 0x5654, 0x5654, 0x1588, 0x5655, 0x5656, 0x2B8B, 0x5657, 0x5657, 0x1581,
+ 0x5658, 0x5658, 0x157F, 0x5659, 0x5659, 0x1585, 0x565A, 0x565B, 0x2B8D,
+ 0x565C, 0x565C, 0x1586, 0x565D, 0x565D, 0x236F, 0x565E, 0x565F, 0x2B8F,
+ 0x5660, 0x5660, 0x2370, 0x5661, 0x5661, 0x2B91, 0x5662, 0x5662, 0x1584,
+ 0x5663, 0x5663, 0x2B92, 0x5664, 0x5664, 0x158A, 0x5665, 0x5665, 0x2376,
+ 0x5666, 0x5666, 0x2373, 0x5667, 0x5667, 0x2B93, 0x5668, 0x5668, 0x0C16,
+ 0x5669, 0x5669, 0x1262, 0x566A, 0x566A, 0x112E, 0x566B, 0x566B, 0x158C,
+ 0x566C, 0x566C, 0x0D60, 0x566D, 0x566E, 0x2B94, 0x566F, 0x566F, 0x237F,
+ 0x5670, 0x5670, 0x2B96, 0x5671, 0x5671, 0x158B, 0x5672, 0x5672, 0x2374,
+ 0x5673, 0x5673, 0x2B97, 0x5674, 0x5674, 0x20B5, 0x5675, 0x5675, 0x2B98,
+ 0x5676, 0x5676, 0x06BC, 0x5677, 0x5677, 0x2B99, 0x5678, 0x5678, 0x1EDB,
+ 0x5679, 0x5679, 0x2672, 0x567A, 0x567A, 0x2B9A, 0x567B, 0x567C, 0x158D,
+ 0x567D, 0x567F, 0x2B9B, 0x5680, 0x5680, 0x236E, 0x5681, 0x5684, 0x2B9E,
+ 0x5685, 0x5685, 0x158F, 0x5686, 0x5686, 0x1589, 0x5687, 0x5687, 0x21B7,
+ 0x5688, 0x568B, 0x2BA2, 0x568C, 0x568C, 0x2375, 0x568D, 0x568D, 0x2BA6,
+ 0x568E, 0x568E, 0x0776, 0x568F, 0x568F, 0x0E3A, 0x5690, 0x5692, 0x2BA7,
+ 0x5693, 0x5693, 0x1590, 0x5694, 0x5694, 0x2BAA, 0x5695, 0x5695, 0x2382,
+ 0x5696, 0x5698, 0x2BAB, 0x5699, 0x5699, 0x209E, 0x569A, 0x56A2, 0x2BAE,
+ 0x56A3, 0x56A3, 0x0F66, 0x56A4, 0x56A5, 0x2BB7, 0x56A6, 0x56A6, 0x236B,
+ 0x56A7, 0x56A7, 0x2BB9, 0x56A8, 0x56A8, 0x2039, 0x56A9, 0x56AD, 0x2BBA,
+ 0x56AE, 0x56AE, 0x269F, 0x56AF, 0x56AF, 0x1591, 0x56B0, 0x56B2, 0x2BBF,
+ 0x56B3, 0x56B3, 0x237D, 0x56B4, 0x56B4, 0x21F5, 0x56B5, 0x56B5, 0x2BC2,
+ 0x56B6, 0x56B6, 0x2381, 0x56B7, 0x56B7, 0x0C9D, 0x56B8, 0x56BB, 0x2BC3,
+ 0x56BC, 0x56BC, 0x0891, 0x56BD, 0x56BF, 0x2BC7, 0x56C0, 0x56C0, 0x237B,
+ 0x56C1, 0x56C1, 0x237E, 0x56C2, 0x56C2, 0x21CC, 0x56C3, 0x56C4, 0x2BCA,
+ 0x56C5, 0x56C5, 0x22DB, 0x56C6, 0x56C7, 0x2BCC, 0x56C8, 0x56C8, 0x236A,
+ 0x56C9, 0x56C9, 0x2689, 0x56CA, 0x56CA, 0x0B35, 0x56CB, 0x56CB, 0x2BCE,
+ 0x56CC, 0x56CC, 0x2697, 0x56CD, 0x56D0, 0x2BCF, 0x56D1, 0x56D1, 0x22A1,
+ 0x56D2, 0x56D3, 0x2BD3, 0x56D4, 0x56D4, 0x1592, 0x56D5, 0x56D6, 0x2BD5,
+ 0x56D7, 0x56D7, 0x1593, 0x56D8, 0x56D9, 0x2BD7, 0x56DA, 0x56DA, 0x0C71,
+ 0x56DB, 0x56DB, 0x0DB9, 0x56DC, 0x56DC, 0x2BD9, 0x56DD, 0x56DD, 0x1594,
+ 0x56DE, 0x56DE, 0x07ED, 0x56DF, 0x56DF, 0x126C, 0x56E0, 0x56E0, 0x1079,
+ 0x56E1, 0x56E1, 0x1595, 0x56E2, 0x56E2, 0x0E76, 0x56E3, 0x56E3, 0x2BDA,
+ 0x56E4, 0x56E4, 0x0619, 0x56E5, 0x56EA, 0x2BDB, 0x56EB, 0x56EB, 0x1597,
+ 0x56EC, 0x56EC, 0x2BE1, 0x56ED, 0x56ED, 0x10F3, 0x56EE, 0x56EF, 0x2BE2,
+ 0x56F0, 0x56F0, 0x0992, 0x56F1, 0x56F1, 0x0554, 0x56F2, 0x56F3, 0x2BE4,
+ 0x56F4, 0x56F4, 0x0EB6, 0x56F5, 0x56F5, 0x1596, 0x56F6, 0x56F8, 0x2BE6,
+ 0x56F9, 0x56F9, 0x1598, 0x56FA, 0x56FA, 0x0725, 0x56FB, 0x56FC, 0x2BE9,
+ 0x56FD, 0x56FD, 0x0753, 0x56FE, 0x56FE, 0x0E6D, 0x56FF, 0x56FF, 0x1599,
+ 0x5700, 0x5702, 0x2BEB, 0x5703, 0x5703, 0x0BF3, 0x5704, 0x5704, 0x159A,
+ 0x5705, 0x5705, 0x2BEE, 0x5706, 0x5706, 0x10F5, 0x5707, 0x5707, 0x2383,
+ 0x5708, 0x5708, 0x0C81, 0x5709, 0x5709, 0x159C, 0x570A, 0x570A, 0x159B,
+ 0x570B, 0x570B, 0x1F3D, 0x570C, 0x570C, 0x2BEF, 0x570D, 0x570D, 0x218F,
+ 0x570E, 0x5711, 0x2BF0, 0x5712, 0x5712, 0x2246, 0x5713, 0x5713, 0x2248,
+ 0x5714, 0x5715, 0x2BF4, 0x5716, 0x5716, 0x217E, 0x5717, 0x5717, 0x2BF6,
+ 0x5718, 0x5718, 0x2180, 0x5719, 0x571B, 0x2BF7, 0x571C, 0x571C, 0x159D,
+ 0x571D, 0x571E, 0x2BFA, 0x571F, 0x571F, 0x0E72, 0x5720, 0x5722, 0x2BFC,
+ 0x5723, 0x5723, 0x0D3C, 0x5724, 0x5727, 0x2BFF, 0x5728, 0x5728, 0x111D,
+ 0x5729, 0x5729, 0x13A7, 0x572A, 0x572A, 0x13A9, 0x572B, 0x572B, 0x2C03,
+ 0x572C, 0x572C, 0x13A8, 0x572D, 0x572D, 0x0740, 0x572E, 0x572F, 0x13AC,
+ 0x5730, 0x5730, 0x05B9, 0x5731, 0x5732, 0x2C04, 0x5733, 0x5733, 0x13AA,
+ 0x5734, 0x5738, 0x2C06, 0x5739, 0x5739, 0x13AB, 0x573A, 0x573A, 0x04C6,
+ 0x573B, 0x573B, 0x13AF, 0x573C, 0x573D, 0x2C0B, 0x573E, 0x573E, 0x080D,
+ 0x573F, 0x573F, 0x2C0D, 0x5740, 0x5740, 0x11B6, 0x5741, 0x5741, 0x2C0E,
+ 0x5742, 0x5742, 0x13B0, 0x5743, 0x5746, 0x2C0F, 0x5747, 0x5747, 0x0928,
+ 0x5748, 0x5749, 0x2C13, 0x574A, 0x574A, 0x0658, 0x574B, 0x574B, 0x2C15,
+ 0x574C, 0x574C, 0x13A0, 0x574D, 0x574D, 0x0E01, 0x574E, 0x574E, 0x093F,
+ 0x574F, 0x574F, 0x07CA, 0x5750, 0x5750, 0x1255, 0x5751, 0x5751, 0x0960,
+ 0x5752, 0x5756, 0x2C16, 0x5757, 0x5757, 0x0976, 0x5758, 0x5759, 0x2C1B,
+ 0x575A, 0x575A, 0x0854, 0x575B, 0x575B, 0x0E06, 0x575C, 0x575C, 0x13AE,
+ 0x575D, 0x575D, 0x03DE, 0x575E, 0x575E, 0x0EFA, 0x575F, 0x575F, 0x0675,
+ 0x5760, 0x5760, 0x1216, 0x5761, 0x5761, 0x0BE1, 0x5762, 0x5763, 0x2C1D,
+ 0x5764, 0x5764, 0x098F, 0x5765, 0x5765, 0x2C1F, 0x5766, 0x5766, 0x0E0C,
+ 0x5767, 0x5767, 0x2C20, 0x5768, 0x5768, 0x13B7, 0x5769, 0x5769, 0x13B1,
+ 0x576A, 0x576A, 0x0BD9, 0x576B, 0x576B, 0x13B3, 0x576C, 0x576C, 0x2C21,
+ 0x576D, 0x576D, 0x13B8, 0x576E, 0x576E, 0x2C22, 0x576F, 0x576F, 0x0BB8,
+ 0x5770, 0x5772, 0x2C23, 0x5773, 0x5773, 0x13BA, 0x5774, 0x5775, 0x2C26,
+ 0x5776, 0x5776, 0x13B9, 0x5777, 0x5777, 0x094D, 0x5778, 0x577A, 0x2C28,
+ 0x577B, 0x577B, 0x13B6, 0x577C, 0x577C, 0x13B5, 0x577D, 0x5781, 0x2C2B,
+ 0x5782, 0x5782, 0x053C, 0x5783, 0x5783, 0x0997, 0x5784, 0x5784, 0x0A49,
+ 0x5785, 0x5785, 0x13B2, 0x5786, 0x5786, 0x13B4, 0x5787, 0x578A, 0x2C30,
+ 0x578B, 0x578B, 0x0F98, 0x578C, 0x578C, 0x13BD, 0x578D, 0x5791, 0x2C34,
+ 0x5792, 0x5792, 0x09C8, 0x5793, 0x5793, 0x13C2, 0x5794, 0x579A, 0x2C39,
+ 0x579B, 0x579B, 0x0621, 0x579C, 0x579F, 0x2C40, 0x57A0, 0x57A0, 0x13C3,
+ 0x57A1, 0x57A1, 0x13A2, 0x57A2, 0x57A2, 0x0711, 0x57A3, 0x57A3, 0x10EE,
+ 0x57A4, 0x57A4, 0x13BC, 0x57A5, 0x57A5, 0x2C44, 0x57A6, 0x57A6, 0x095E,
+ 0x57A7, 0x57A7, 0x13C0, 0x57A8, 0x57A8, 0x2C45, 0x57A9, 0x57A9, 0x13A1,
+ 0x57AA, 0x57AA, 0x2C46, 0x57AB, 0x57AB, 0x05C7, 0x57AC, 0x57AC, 0x2C47,
+ 0x57AD, 0x57AD, 0x13BB, 0x57AE, 0x57AE, 0x0972, 0x57AF, 0x57B1, 0x2C48,
+ 0x57B2, 0x57B2, 0x13BE, 0x57B3, 0x57B3, 0x2C4B, 0x57B4, 0x57B4, 0x13C1,
+ 0x57B5, 0x57B7, 0x2C4C, 0x57B8, 0x57B8, 0x13C9, 0x57B9, 0x57C1, 0x2C4F,
+ 0x57C2, 0x57C2, 0x06FA, 0x57C3, 0x57C3, 0x03AE, 0x57C4, 0x57CA, 0x2C58,
+ 0x57CB, 0x57CB, 0x0A98, 0x57CC, 0x57CD, 0x2C5F, 0x57CE, 0x57CE, 0x04EC,
+ 0x57CF, 0x57CF, 0x13BF, 0x57D0, 0x57D1, 0x2C61, 0x57D2, 0x57D2, 0x13C8,
+ 0x57D3, 0x57D3, 0x2C63, 0x57D4, 0x57D4, 0x0BF1, 0x57D5, 0x57D5, 0x13C4,
+ 0x57D6, 0x57D7, 0x2C64, 0x57D8, 0x57D8, 0x13C5, 0x57D9, 0x57D9, 0x13C7,
+ 0x57DA, 0x57DA, 0x13C6, 0x57DB, 0x57DC, 0x2C66, 0x57DD, 0x57DD, 0x13CE,
+ 0x57DE, 0x57DE, 0x2C68, 0x57DF, 0x57DF, 0x10D7, 0x57E0, 0x57E0, 0x0481,
+ 0x57E1, 0x57E1, 0x232A, 0x57E2, 0x57E3, 0x2C69, 0x57E4, 0x57E4, 0x13CD,
+ 0x57E5, 0x57EC, 0x2C6B, 0x57ED, 0x57ED, 0x13D2, 0x57EE, 0x57EE, 0x2C73,
+ 0x57EF, 0x57EF, 0x13CB, 0x57F0, 0x57F3, 0x2C74, 0x57F4, 0x57F4, 0x13CA,
+ 0x57F5, 0x57F6, 0x2C78, 0x57F7, 0x57F7, 0x228B, 0x57F8, 0x57F8, 0x13CC,
+ 0x57F9, 0x57F9, 0x0BA1, 0x57FA, 0x57FA, 0x080E, 0x57FB, 0x57FC, 0x2C7A,
+ 0x57FD, 0x57FD, 0x13D1, 0x57FE, 0x57FF, 0x2C7C, 0x5800, 0x5800, 0x13D3,
+ 0x5801, 0x5801, 0x2C7E, 0x5802, 0x5802, 0x0E16, 0x5803, 0x5804, 0x2C7F,
+ 0x5805, 0x5805, 0x1F85, 0x5806, 0x5806, 0x0610, 0x5807, 0x5807, 0x144C,
+ 0x5808, 0x5809, 0x2C81, 0x580A, 0x580A, 0x2325, 0x580B, 0x580B, 0x13CF,
+ 0x580C, 0x580C, 0x2C83, 0x580D, 0x580D, 0x13D0, 0x580E, 0x5810, 0x2C84,
+ 0x5811, 0x5811, 0x0C32, 0x5812, 0x5814, 0x2C87, 0x5815, 0x5815, 0x0628,
+ 0x5816, 0x5816, 0x232C, 0x5817, 0x5818, 0x2C8A, 0x5819, 0x5819, 0x13D5,
+ 0x581A, 0x581C, 0x2C8C, 0x581D, 0x581D, 0x232E, 0x581E, 0x581E, 0x13D4,
+ 0x581F, 0x581F, 0x2C8F, 0x5820, 0x5820, 0x13D7, 0x5821, 0x5821, 0x040D,
+ 0x5822, 0x5823, 0x2C90, 0x5824, 0x5824, 0x05AD, 0x5825, 0x5829, 0x2C92,
+ 0x582A, 0x582A, 0x093D, 0x582B, 0x582E, 0x2C97, 0x582F, 0x582F, 0x2205,
+ 0x5830, 0x5830, 0x1008, 0x5831, 0x5831, 0x1E38, 0x5832, 0x5833, 0x2C9B,
+ 0x5834, 0x5834, 0x1E73, 0x5835, 0x5835, 0x0601, 0x5836, 0x5843, 0x2C9D,
+ 0x5844, 0x5844, 0x13D6, 0x5845, 0x5849, 0x2CAB, 0x584A, 0x584A, 0x1FE3,
+ 0x584B, 0x584B, 0x2339, 0x584C, 0x584C, 0x0DEF, 0x584D, 0x584D, 0x19A3,
+ 0x584E, 0x584E, 0x2CB0, 0x584F, 0x584F, 0x232B, 0x5850, 0x5850, 0x2CB1,
+ 0x5851, 0x5851, 0x0DD1, 0x5852, 0x5852, 0x232D, 0x5853, 0x5853, 0x2CB2,
+ 0x5854, 0x5854, 0x0DF3, 0x5855, 0x5856, 0x2CB3, 0x5857, 0x5857, 0x217F,
+ 0x5858, 0x5858, 0x0E14, 0x5859, 0x585D, 0x2CB5, 0x585E, 0x585E, 0x0CD6,
+ 0x585F, 0x5861, 0x2CBA, 0x5862, 0x5862, 0x21A7, 0x5863, 0x5863, 0x2CBD,
+ 0x5864, 0x5864, 0x232F, 0x5865, 0x5865, 0x13D8, 0x5866, 0x586A, 0x2CBE,
+ 0x586B, 0x586B, 0x0E41, 0x586C, 0x586C, 0x13D9, 0x586D, 0x5874, 0x2CC3,
+ 0x5875, 0x5875, 0x1E7D, 0x5876, 0x5878, 0x2CCB, 0x5879, 0x5879, 0x20D6,
+ 0x587A, 0x587D, 0x2CCE, 0x587E, 0x587E, 0x13A3, 0x587F, 0x587F, 0x2CD2,
+ 0x5880, 0x5880, 0x13DD, 0x5881, 0x5881, 0x13DA, 0x5882, 0x5882, 0x2CD3,
+ 0x5883, 0x5883, 0x08E2, 0x5884, 0x5884, 0x2CD4, 0x5885, 0x5885, 0x0D92,
+ 0x5886, 0x5888, 0x2CD5, 0x5889, 0x5889, 0x13DB, 0x588A, 0x588A, 0x1EC2,
+ 0x588B, 0x5891, 0x2CD8, 0x5892, 0x5892, 0x0D03, 0x5893, 0x5893, 0x0B1C,
+ 0x5894, 0x5898, 0x2CDF, 0x5899, 0x5899, 0x0C3A, 0x589A, 0x589A, 0x13DC,
+ 0x589B, 0x589B, 0x2CE4, 0x589C, 0x589C, 0x22B2, 0x589D, 0x589D, 0x2CE5,
+ 0x589E, 0x589E, 0x1139, 0x589F, 0x589F, 0x0FB1, 0x58A0, 0x58A7, 0x2CE6,
+ 0x58A8, 0x58A8, 0x0B0E, 0x58A9, 0x58A9, 0x0614, 0x58AA, 0x58AD, 0x2CEE,
+ 0x58AE, 0x58AE, 0x1EDF, 0x58AF, 0x58B2, 0x2CF2, 0x58B3, 0x58B3, 0x1EF9,
+ 0x58B4, 0x58BA, 0x2CF6, 0x58BB, 0x58BB, 0x20D9, 0x58BC, 0x58BC, 0x13A4,
+ 0x58BD, 0x58BD, 0x2CFD, 0x58BE, 0x58BE, 0x1FDD, 0x58BF, 0x58C0, 0x2CFE,
+ 0x58C1, 0x58C1, 0x0443, 0x58C2, 0x58C4, 0x2D00, 0x58C5, 0x58C5, 0x13A5,
+ 0x58C6, 0x58C6, 0x2D03, 0x58C7, 0x58C7, 0x2167, 0x58C8, 0x58D0, 0x2D04,
+ 0x58D1, 0x58D1, 0x13A6, 0x58D2, 0x58D2, 0x2D0D, 0x58D3, 0x58D3, 0x21ED,
+ 0x58D4, 0x58D4, 0x2D0E, 0x58D5, 0x58D5, 0x0775, 0x58D6, 0x58D7, 0x2D0F,
+ 0x58D8, 0x58D8, 0x2007, 0x58D9, 0x58D9, 0x2326, 0x58DA, 0x58DA, 0x2329,
+ 0x58DB, 0x58DD, 0x2D11, 0x58DE, 0x58DE, 0x1F52, 0x58DF, 0x58DF, 0x203B,
+ 0x58E0, 0x58E0, 0x2328, 0x58E1, 0x58E1, 0x2D14, 0x58E2, 0x58E2, 0x2327,
+ 0x58E3, 0x58E3, 0x2D15, 0x58E4, 0x58E4, 0x0C9B, 0x58E5, 0x58E8, 0x2D16,
+ 0x58E9, 0x58E9, 0x1E2B, 0x58EA, 0x58EA, 0x2D1A, 0x58EB, 0x58EB, 0x0D56,
+ 0x58EC, 0x58EC, 0x0CA4, 0x58ED, 0x58ED, 0x2D1B, 0x58EE, 0x58EE, 0x1210,
+ 0x58EF, 0x58EF, 0x22AE, 0x58F0, 0x58F0, 0x0D32, 0x58F1, 0x58F2, 0x2D1C,
+ 0x58F3, 0x58F3, 0x0954, 0x58F4, 0x58F5, 0x2D1E, 0x58F6, 0x58F6, 0x07AF,
+ 0x58F7, 0x58F8, 0x2D20, 0x58F9, 0x58F9, 0x1043, 0x58FA, 0x58FA, 0x1F49,
+ 0x58FB, 0x58FC, 0x2D22, 0x58FD, 0x58FD, 0x2138, 0x58FE, 0x58FF, 0x2D24,
+ 0x5900, 0x5901, 0x2D26, 0x5902, 0x5902, 0x161C, 0x5903, 0x5903, 0x2D28,
+ 0x5904, 0x5904, 0x0529, 0x5905, 0x5906, 0x2D29, 0x5907, 0x5907, 0x0421,
+ 0x5908, 0x590C, 0x2D2B, 0x590D, 0x590D, 0x06AF, 0x590E, 0x590E, 0x2D30,
+ 0x590F, 0x590F, 0x0F31, 0x5910, 0x5913, 0x2D31, 0x5914, 0x5914, 0x12FB,
+ 0x5915, 0x5915, 0x0F13, 0x5916, 0x5916, 0x0E93, 0x5917, 0x5918, 0x2D35,
+ 0x5919, 0x5919, 0x1301, 0x591A, 0x591A, 0x061F, 0x591B, 0x591B, 0x2D37,
+ 0x591C, 0x591C, 0x1040, 0x591D, 0x591E, 0x2D38, 0x591F, 0x591F, 0x0714,
+ 0x5920, 0x5921, 0x2D3A, 0x5922, 0x5922, 0x2081, 0x5923, 0x5923, 0x2D3C,
+ 0x5924, 0x5924, 0x161B, 0x5925, 0x5925, 0x1619, 0x5926, 0x5926, 0x2D3D,
+ 0x5927, 0x5927, 0x0576, 0x5928, 0x5928, 0x2D3E, 0x5929, 0x5929, 0x0E3F,
+ 0x592A, 0x592A, 0x0DFE, 0x592B, 0x592B, 0x068F, 0x592C, 0x592C, 0x2D3F,
+ 0x592D, 0x592D, 0x1268, 0x592E, 0x592E, 0x1014, 0x592F, 0x592F, 0x0772,
+ 0x5930, 0x5930, 0x2D40, 0x5931, 0x5931, 0x0D3E, 0x5932, 0x5933, 0x2D41,
+ 0x5934, 0x5934, 0x0E68, 0x5935, 0x5936, 0x2D43, 0x5937, 0x5937, 0x104B,
+ 0x5938, 0x5938, 0x0971, 0x5939, 0x5939, 0x0843, 0x593A, 0x593A, 0x0620,
+ 0x593B, 0x593B, 0x2D45, 0x593C, 0x593C, 0x14AF, 0x593D, 0x593D, 0x2D46,
+ 0x593E, 0x593E, 0x1F7C, 0x593F, 0x5940, 0x2D47, 0x5941, 0x5941, 0x14B0,
+ 0x5942, 0x5942, 0x138C, 0x5943, 0x5943, 0x2D49, 0x5944, 0x5944, 0x1002,
+ 0x5945, 0x5946, 0x2D4A, 0x5947, 0x5947, 0x0C05, 0x5948, 0x5948, 0x0B31,
+ 0x5949, 0x5949, 0x068B, 0x594A, 0x594A, 0x2D4C, 0x594B, 0x594B, 0x0679,
+ 0x594C, 0x594D, 0x2D4D, 0x594E, 0x594E, 0x0989, 0x594F, 0x594F, 0x123D,
+ 0x5950, 0x5950, 0x2D4F, 0x5951, 0x5951, 0x0C14, 0x5952, 0x5953, 0x2D50,
+ 0x5954, 0x5954, 0x0425, 0x5955, 0x5955, 0x14B2, 0x5956, 0x5956, 0x0882,
+ 0x5957, 0x5957, 0x0E2A, 0x5958, 0x5958, 0x14B4, 0x5959, 0x5959, 0x2D52,
+ 0x595A, 0x595A, 0x14B3, 0x595B, 0x595F, 0x2D53, 0x5960, 0x5960, 0x05CD,
+ 0x5961, 0x5961, 0x2D58, 0x5962, 0x5962, 0x0D16, 0x5963, 0x5964, 0x2D59,
+ 0x5965, 0x5965, 0x03CD, 0x5966, 0x5968, 0x2D5B, 0x5969, 0x5969, 0x235B,
+ 0x596A, 0x596A, 0x1EDE, 0x596B, 0x596B, 0x2D5E, 0x596C, 0x596C, 0x1FA2,
+ 0x596D, 0x596D, 0x2D5F, 0x596E, 0x596E, 0x1EFA, 0x596F, 0x5972, 0x2D60,
+ 0x5973, 0x5973, 0x0B6F, 0x5974, 0x5974, 0x0B6C, 0x5975, 0x5975, 0x2D64,
+ 0x5976, 0x5976, 0x0B2F, 0x5977, 0x5977, 0x2D65, 0x5978, 0x5978, 0x085C,
+ 0x5979, 0x5979, 0x0DF2, 0x597A, 0x597C, 0x2D66, 0x597D, 0x597D, 0x077A,
+ 0x597E, 0x5980, 0x2D69, 0x5981, 0x5981, 0x1775, 0x5982, 0x5982, 0x0CC2,
+ 0x5983, 0x5983, 0x1776, 0x5984, 0x5984, 0x0EAE, 0x5985, 0x5985, 0x2D6C,
+ 0x5986, 0x5986, 0x120E, 0x5987, 0x5987, 0x06B9, 0x5988, 0x5988, 0x0A8F,
+ 0x5989, 0x5989, 0x2D6D, 0x598A, 0x598A, 0x0CAC, 0x598B, 0x598C, 0x2D6E,
+ 0x598D, 0x598D, 0x1777, 0x598E, 0x5991, 0x2D70, 0x5992, 0x5992, 0x0609,
+ 0x5993, 0x5993, 0x083E, 0x5994, 0x5995, 0x2D74, 0x5996, 0x5996, 0x1026,
+ 0x5997, 0x5997, 0x177B, 0x5998, 0x5998, 0x2D76, 0x5999, 0x5999, 0x0AF3,
+ 0x599A, 0x599C, 0x2D77, 0x599D, 0x599D, 0x22AD, 0x599E, 0x599E, 0x177E,
+ 0x599F, 0x59A2, 0x2D7A, 0x59A3, 0x59A3, 0x177A, 0x59A4, 0x59A4, 0x177F,
+ 0x59A5, 0x59A5, 0x0E88, 0x59A6, 0x59A7, 0x2D7E, 0x59A8, 0x59A8, 0x065E,
+ 0x59A9, 0x59AA, 0x1778, 0x59AB, 0x59AB, 0x177D, 0x59AC, 0x59AD, 0x2D80,
+ 0x59AE, 0x59AE, 0x0B40, 0x59AF, 0x59AF, 0x1782, 0x59B0, 0x59B1, 0x2D82,
+ 0x59B2, 0x59B2, 0x1781, 0x59B3, 0x59B8, 0x2D84, 0x59B9, 0x59B9, 0x0AC8,
+ 0x59BA, 0x59BA, 0x2D8A, 0x59BB, 0x59BB, 0x0BFD, 0x59BC, 0x59BD, 0x2D8B,
+ 0x59BE, 0x59BE, 0x1784, 0x59BF, 0x59C5, 0x2D8D, 0x59C6, 0x59C6, 0x0B1A,
+ 0x59C7, 0x59C9, 0x2D94, 0x59CA, 0x59CA, 0x177C, 0x59CB, 0x59CB, 0x0D53,
+ 0x59CC, 0x59CF, 0x2D97, 0x59D0, 0x59D0, 0x08B4, 0x59D1, 0x59D1, 0x071C,
+ 0x59D2, 0x59D2, 0x1780, 0x59D3, 0x59D3, 0x0FA0, 0x59D4, 0x59D4, 0x0EBE,
+ 0x59D5, 0x59D6, 0x2D9B, 0x59D7, 0x59D7, 0x1783, 0x59D8, 0x59D8, 0x178A,
+ 0x59D9, 0x59D9, 0x2D9D, 0x59DA, 0x59DA, 0x102D, 0x59DB, 0x59DB, 0x2D9E,
+ 0x59DC, 0x59DC, 0x087B, 0x59DD, 0x59DD, 0x1787, 0x59DE, 0x59E2, 0x2D9F,
+ 0x59E3, 0x59E3, 0x1789, 0x59E4, 0x59E4, 0x2DA4, 0x59E5, 0x59E5, 0x09BC,
+ 0x59E6, 0x59E7, 0x2DA5, 0x59E8, 0x59E8, 0x1053, 0x59E9, 0x59EB, 0x2DA7,
+ 0x59EC, 0x59EC, 0x081A, 0x59ED, 0x59F8, 0x2DAA, 0x59F9, 0x59F9, 0x178B,
+ 0x59FA, 0x59FA, 0x2DB6, 0x59FB, 0x59FB, 0x107D, 0x59FC, 0x59FE, 0x2DB7,
+ 0x59FF, 0x59FF, 0x1228, 0x5A00, 0x5A00, 0x2DBA, 0x5A01, 0x5A01, 0x0EAF,
+ 0x5A02, 0x5A02, 0x2DBB, 0x5A03, 0x5A03, 0x0E8F, 0x5A04, 0x5A04, 0x0A4D,
+ 0x5A05, 0x5A06, 0x1785, 0x5A07, 0x5A07, 0x0890, 0x5A08, 0x5A08, 0x1788,
+ 0x5A09, 0x5A09, 0x178D, 0x5A0A, 0x5A0B, 0x2DBC, 0x5A0C, 0x5A0C, 0x178C,
+ 0x5A0D, 0x5A10, 0x2DBE, 0x5A11, 0x5A11, 0x1790, 0x5A12, 0x5A12, 0x2DC2,
+ 0x5A13, 0x5A13, 0x1792, 0x5A14, 0x5A17, 0x2DC3, 0x5A18, 0x5A18, 0x0B52,
+ 0x5A19, 0x5A1B, 0x2DC7, 0x5A1C, 0x5A1C, 0x0B2B, 0x5A1D, 0x5A1E, 0x2DCA,
+ 0x5A1F, 0x5A1F, 0x0919, 0x5A20, 0x5A20, 0x0D28, 0x5A21, 0x5A22, 0x2DCC,
+ 0x5A23, 0x5A23, 0x1791, 0x5A24, 0x5A24, 0x2DCE, 0x5A25, 0x5A25, 0x062F,
+ 0x5A26, 0x5A28, 0x2DCF, 0x5A29, 0x5A29, 0x0AE9, 0x5A2A, 0x5A30, 0x2DD2,
+ 0x5A31, 0x5A31, 0x10CE, 0x5A32, 0x5A32, 0x178E, 0x5A33, 0x5A33, 0x2DD9,
+ 0x5A34, 0x5A34, 0x178F, 0x5A35, 0x5A35, 0x2DDA, 0x5A36, 0x5A36, 0x0C7D,
+ 0x5A37, 0x5A3B, 0x2DDB, 0x5A3C, 0x5A3C, 0x1797, 0x5A3D, 0x5A3F, 0x2DE0,
+ 0x5A40, 0x5A40, 0x1793, 0x5A41, 0x5A41, 0x203F, 0x5A42, 0x5A45, 0x2DE3,
+ 0x5A46, 0x5A46, 0x0BE4, 0x5A47, 0x5A48, 0x2DE7, 0x5A49, 0x5A49, 0x0EA2,
+ 0x5A4A, 0x5A4A, 0x1795, 0x5A4B, 0x5A54, 0x2DE9, 0x5A55, 0x5A55, 0x1796,
+ 0x5A56, 0x5A59, 0x2DF3, 0x5A5A, 0x5A5A, 0x07FE, 0x5A5B, 0x5A61, 0x2DF7,
+ 0x5A62, 0x5A62, 0x1798, 0x5A63, 0x5A65, 0x2DFE, 0x5A66, 0x5A66, 0x1F0E,
+ 0x5A67, 0x5A67, 0x1794, 0x5A68, 0x5A69, 0x2E01, 0x5A6A, 0x5A6A, 0x09A2,
+ 0x5A6B, 0x5A6C, 0x2E03, 0x5A6D, 0x5A6D, 0x23F9, 0x5A6E, 0x5A73, 0x2E05,
+ 0x5A74, 0x5A74, 0x1089, 0x5A75, 0x5A75, 0x1799, 0x5A76, 0x5A76, 0x0D2D,
+ 0x5A77, 0x5A77, 0x179D, 0x5A78, 0x5A79, 0x2E0B, 0x5A7A, 0x5A7A, 0x179E,
+ 0x5A7B, 0x5A7E, 0x2E0D, 0x5A7F, 0x5A7F, 0x0FC1, 0x5A80, 0x5A91, 0x2E11,
+ 0x5A92, 0x5A92, 0x0AC2, 0x5A93, 0x5A99, 0x2E23, 0x5A9A, 0x5A9A, 0x0AC9,
+ 0x5A9B, 0x5A9B, 0x179C, 0x5A9C, 0x5AA6, 0x2E2A, 0x5AA7, 0x5AA7, 0x23FC,
+ 0x5AA8, 0x5AA9, 0x2E35, 0x5AAA, 0x5AAA, 0x179B, 0x5AAB, 0x5AB1, 0x2E37,
+ 0x5AB2, 0x5AB2, 0x17A1, 0x5AB3, 0x5AB3, 0x0F1E, 0x5AB4, 0x5AB4, 0x2E3E,
+ 0x5AB5, 0x5AB5, 0x19A4, 0x5AB6, 0x5AB7, 0x2E3F, 0x5AB8, 0x5AB8, 0x17A4,
+ 0x5AB9, 0x5ABC, 0x2E41, 0x5ABD, 0x5ABD, 0x2069, 0x5ABE, 0x5ABE, 0x179F,
+ 0x5ABF, 0x5AC0, 0x2E45, 0x5AC1, 0x5AC1, 0x0851, 0x5AC2, 0x5AC2, 0x0CE2,
+ 0x5AC3, 0x5AC8, 0x2E47, 0x5AC9, 0x5AC9, 0x0828, 0x5ACA, 0x5ACB, 0x2E4D,
+ 0x5ACC, 0x5ACC, 0x0F40, 0x5ACD, 0x5AD1, 0x2E4F, 0x5AD2, 0x5AD2, 0x17A2,
+ 0x5AD3, 0x5AD3, 0x2E54, 0x5AD4, 0x5AD4, 0x17A3, 0x5AD5, 0x5AD5, 0x2E55,
+ 0x5AD6, 0x5AD6, 0x17A8, 0x5AD7, 0x5AD7, 0x23F7, 0x5AD8, 0x5AD8, 0x17AA,
+ 0x5AD9, 0x5ADB, 0x2E56, 0x5ADC, 0x5ADC, 0x17AB, 0x5ADD, 0x5ADF, 0x2E59,
+ 0x5AE0, 0x5AE0, 0x17A5, 0x5AE1, 0x5AE1, 0x05B6, 0x5AE2, 0x5AE2, 0x2E5C,
+ 0x5AE3, 0x5AE3, 0x17A6, 0x5AE4, 0x5AE5, 0x2E5D, 0x5AE6, 0x5AE6, 0x17A9,
+ 0x5AE7, 0x5AE8, 0x2E5F, 0x5AE9, 0x5AE9, 0x0B3E, 0x5AEA, 0x5AEA, 0x2E61,
+ 0x5AEB, 0x5AEB, 0x17A0, 0x5AEC, 0x5AF0, 0x2E62, 0x5AF1, 0x5AF1, 0x17A7,
+ 0x5AF2, 0x5AF4, 0x2E67, 0x5AF5, 0x5AF5, 0x23F6, 0x5AF6, 0x5AFA, 0x2E6A,
+ 0x5AFB, 0x5AFB, 0x23FD, 0x5AFC, 0x5AFF, 0x2E6F, 0x5B00, 0x5B00, 0x23F8,
+ 0x5B01, 0x5B07, 0x2E73, 0x5B08, 0x5B08, 0x23FA, 0x5B09, 0x5B09, 0x17AC,
+ 0x5B0A, 0x5B0A, 0x2E7A, 0x5B0B, 0x5B0B, 0x23FE, 0x5B0C, 0x5B0C, 0x1FA8,
+ 0x5B0D, 0x5B15, 0x2E7B, 0x5B16, 0x5B16, 0x17AE, 0x5B17, 0x5B17, 0x17AD,
+ 0x5B18, 0x5B18, 0x2E84, 0x5B19, 0x5B19, 0x2401, 0x5B1A, 0x5B20, 0x2E85,
+ 0x5B21, 0x5B21, 0x23FF, 0x5B22, 0x5B29, 0x2E8C, 0x5B2A, 0x5B2A, 0x2400,
+ 0x5B2B, 0x5B2F, 0x2E94, 0x5B30, 0x5B30, 0x2221, 0x5B31, 0x5B31, 0x2E99,
+ 0x5B32, 0x5B32, 0x17AF, 0x5B33, 0x5B33, 0x2E9A, 0x5B34, 0x5B34, 0x130C,
+ 0x5B35, 0x5B36, 0x2E9B, 0x5B37, 0x5B37, 0x17B0, 0x5B38, 0x5B38, 0x2122,
+ 0x5B39, 0x5B3F, 0x2E9D, 0x5B40, 0x5B40, 0x17B1, 0x5B41, 0x5B4B, 0x2EA4,
+ 0x5B4C, 0x5B4C, 0x23FB, 0x5B4D, 0x5B4F, 0x2EAF, 0x5B50, 0x5B50, 0x1230,
+ 0x5B51, 0x5B51, 0x17B7, 0x5B52, 0x5B52, 0x2EB2, 0x5B53, 0x5B53, 0x17B8,
+ 0x5B54, 0x5B54, 0x0964, 0x5B55, 0x5B55, 0x1113, 0x5B56, 0x5B56, 0x2EB3,
+ 0x5B57, 0x5B57, 0x1233, 0x5B58, 0x5B58, 0x0569, 0x5B59, 0x5B59, 0x0DE4,
+ 0x5B5A, 0x5B5A, 0x17B4, 0x5B5B, 0x5B5B, 0x1279, 0x5B5C, 0x5B5C, 0x122B,
+ 0x5B5D, 0x5B5D, 0x0F6D, 0x5B5E, 0x5B5E, 0x2EB4, 0x5B5F, 0x5B5F, 0x0AD4,
+ 0x5B60, 0x5B61, 0x2EB5, 0x5B62, 0x5B62, 0x17B9, 0x5B63, 0x5B63, 0x0831,
+ 0x5B64, 0x5B64, 0x071B, 0x5B65, 0x5B65, 0x17B5, 0x5B66, 0x5B66, 0x0FD0,
+ 0x5B67, 0x5B68, 0x2EB7, 0x5B69, 0x5B69, 0x0759, 0x5B6A, 0x5B6A, 0x0A76,
+ 0x5B6B, 0x5B6B, 0x215A, 0x5B6C, 0x5B6C, 0x1261, 0x5B6D, 0x5B6F, 0x2EB9,
+ 0x5B70, 0x5B70, 0x0D82, 0x5B71, 0x5B71, 0x176A, 0x5B72, 0x5B72, 0x2EBC,
+ 0x5B73, 0x5B73, 0x17B6, 0x5B74, 0x5B74, 0x2EBD, 0x5B75, 0x5B75, 0x0692,
+ 0x5B76, 0x5B77, 0x2EBE, 0x5B78, 0x5B78, 0x21E5, 0x5B79, 0x5B79, 0x2EC0,
+ 0x5B7A, 0x5B7A, 0x0CC1, 0x5B7B, 0x5B7C, 0x2EC1, 0x5B7D, 0x5B7D, 0x0B58,
+ 0x5B7E, 0x5B7E, 0x2EC3, 0x5B7F, 0x5B7F, 0x2057, 0x5B80, 0x5B80, 0x172E,
+ 0x5B81, 0x5B81, 0x0B61, 0x5B82, 0x5B82, 0x2EC4, 0x5B83, 0x5B83, 0x0DF1,
+ 0x5B84, 0x5B84, 0x172F, 0x5B85, 0x5B85, 0x114D, 0x5B86, 0x5B86, 0x2EC5,
+ 0x5B87, 0x5B87, 0x10D3, 0x5B88, 0x5B88, 0x0D6F, 0x5B89, 0x5B89, 0x03BD,
+ 0x5B8A, 0x5B8A, 0x2EC6, 0x5B8B, 0x5B8B, 0x0DC3, 0x5B8C, 0x5B8C, 0x0E9B,
+ 0x5B8D, 0x5B8E, 0x2EC7, 0x5B8F, 0x5B8F, 0x07A1, 0x5B90, 0x5B92, 0x2EC9,
+ 0x5B93, 0x5B93, 0x1731, 0x5B94, 0x5B94, 0x2ECC, 0x5B95, 0x5B95, 0x1730,
+ 0x5B96, 0x5B96, 0x2ECD, 0x5B97, 0x5B97, 0x1237, 0x5B98, 0x5B98, 0x0732,
+ 0x5B99, 0x5B99, 0x11E5, 0x5B9A, 0x5B9A, 0x05E7, 0x5B9B, 0x5B9B, 0x0EA1,
+ 0x5B9C, 0x5B9C, 0x1052, 0x5B9D, 0x5B9D, 0x040F, 0x5B9E, 0x5B9E, 0x0D4C,
+ 0x5B9F, 0x5B9F, 0x2ECE, 0x5BA0, 0x5BA0, 0x050D, 0x5BA1, 0x5BA1, 0x0D2C,
+ 0x5BA2, 0x5BA2, 0x095A, 0x5BA3, 0x5BA3, 0x0FC6, 0x5BA4, 0x5BA4, 0x0D69,
+ 0x5BA5, 0x5BA5, 0x1732, 0x5BA6, 0x5BA6, 0x07D7, 0x5BA7, 0x5BA9, 0x2ECF,
+ 0x5BAA, 0x5BAA, 0x0F49, 0x5BAB, 0x5BAB, 0x0705, 0x5BAC, 0x5BAF, 0x2ED2,
+ 0x5BB0, 0x5BB0, 0x111A, 0x5BB1, 0x5BB2, 0x2ED6, 0x5BB3, 0x5BB3, 0x075D,
+ 0x5BB4, 0x5BB4, 0x1010, 0x5BB5, 0x5BB5, 0x0F69, 0x5BB6, 0x5BB6, 0x0845,
+ 0x5BB7, 0x5BB7, 0x2ED8, 0x5BB8, 0x5BB8, 0x1733, 0x5BB9, 0x5BB9, 0x0CB8,
+ 0x5BBA, 0x5BBC, 0x2ED9, 0x5BBD, 0x5BBD, 0x097A, 0x5BBE, 0x5BBE, 0x045F,
+ 0x5BBF, 0x5BBF, 0x0DD3, 0x5BC0, 0x5BC1, 0x2EDC, 0x5BC2, 0x5BC2, 0x0838,
+ 0x5BC3, 0x5BC3, 0x2EDE, 0x5BC4, 0x5BC4, 0x0837, 0x5BC5, 0x5BC5, 0x1081,
+ 0x5BC6, 0x5BC6, 0x0AE1, 0x5BC7, 0x5BC7, 0x0969, 0x5BC8, 0x5BCB, 0x2EDF,
+ 0x5BCC, 0x5BCC, 0x06B6, 0x5BCD, 0x5BCF, 0x2EE3, 0x5BD0, 0x5BD0, 0x0AC7,
+ 0x5BD1, 0x5BD1, 0x2EE6, 0x5BD2, 0x5BD2, 0x0765, 0x5BD3, 0x5BD3, 0x10E5,
+ 0x5BD4, 0x5BDC, 0x2EE7, 0x5BDD, 0x5BDD, 0x0C5B, 0x5BDE, 0x5BDE, 0x0B12,
+ 0x5BDF, 0x5BDF, 0x04B3, 0x5BE0, 0x5BE0, 0x2EF0, 0x5BE1, 0x5BE1, 0x072A,
+ 0x5BE2, 0x5BE2, 0x20E5, 0x5BE3, 0x5BE3, 0x2EF1, 0x5BE4, 0x5BE4, 0x1737,
+ 0x5BE5, 0x5BE5, 0x0A11, 0x5BE6, 0x5BE6, 0x212F, 0x5BE7, 0x5BE7, 0x20A3,
+ 0x5BE8, 0x5BE8, 0x1150, 0x5BE9, 0x5BE9, 0x2121, 0x5BEA, 0x5BEA, 0x2EF2,
+ 0x5BEB, 0x5BEB, 0x21D4, 0x5BEC, 0x5BEC, 0x1FE5, 0x5BED, 0x5BED, 0x2EF3,
+ 0x5BEE, 0x5BEE, 0x1738, 0x5BEF, 0x5BEF, 0x2EF4, 0x5BF0, 0x5BF0, 0x173A,
+ 0x5BF1, 0x5BF4, 0x2EF5, 0x5BF5, 0x5BF5, 0x1E8A, 0x5BF6, 0x5BF6, 0x1E37,
+ 0x5BF7, 0x5BF7, 0x2EF9, 0x5BF8, 0x5BF8, 0x056A, 0x5BF9, 0x5BF9, 0x0613,
+ 0x5BFA, 0x5BFA, 0x0DB7, 0x5BFB, 0x5BFB, 0x0FD9, 0x5BFC, 0x5BFC, 0x059D,
+ 0x5BFD, 0x5BFE, 0x2EFA, 0x5BFF, 0x5BFF, 0x0D70, 0x5C00, 0x5C00, 0x2EFC,
+ 0x5C01, 0x5C01, 0x067F, 0x5C02, 0x5C03, 0x2EFD, 0x5C04, 0x5C04, 0x0D1D,
+ 0x5C05, 0x5C05, 0x2EFF, 0x5C06, 0x5C06, 0x087C, 0x5C07, 0x5C07, 0x1F9E,
+ 0x5C08, 0x5C08, 0x22A6, 0x5C09, 0x5C09, 0x0ECD, 0x5C0A, 0x5C0A, 0x124D,
+ 0x5C0B, 0x5C0B, 0x21E8, 0x5C0C, 0x5C0C, 0x2F00, 0x5C0D, 0x5C0D, 0x1EDA,
+ 0x5C0E, 0x5C0E, 0x1EB9, 0x5C0F, 0x5C0F, 0x0F6C, 0x5C10, 0x5C10, 0x2F01,
+ 0x5C11, 0x5C11, 0x0D12, 0x5C12, 0x5C13, 0x2F02, 0x5C14, 0x5C14, 0x063A,
+ 0x5C15, 0x5C15, 0x17B2, 0x5C16, 0x5C16, 0x0855, 0x5C17, 0x5C17, 0x2F04,
+ 0x5C18, 0x5C18, 0x04E3, 0x5C19, 0x5C19, 0x2F05, 0x5C1A, 0x5C1A, 0x0D09,
+ 0x5C1B, 0x5C1B, 0x2F06, 0x5C1C, 0x5C1C, 0x17B3, 0x5C1D, 0x5C1D, 0x04C7,
+ 0x5C1E, 0x5C21, 0x2F07, 0x5C22, 0x5C22, 0x14B6, 0x5C23, 0x5C23, 0x2F0B,
+ 0x5C24, 0x5C24, 0x10AD, 0x5C25, 0x5C25, 0x14B7, 0x5C26, 0x5C26, 0x2F0C,
+ 0x5C27, 0x5C27, 0x1029, 0x5C28, 0x5C2B, 0x2F0D, 0x5C2C, 0x5C2C, 0x14B8,
+ 0x5C2D, 0x5C30, 0x2F11, 0x5C31, 0x5C31, 0x08FC, 0x5C32, 0x5C33, 0x2F15,
+ 0x5C34, 0x5C34, 0x14B9, 0x5C35, 0x5C36, 0x2F17, 0x5C37, 0x5C37, 0x235C,
+ 0x5C38, 0x5C38, 0x0D43, 0x5C39, 0x5C39, 0x1083, 0x5C3A, 0x5C3A, 0x0504,
+ 0x5C3B, 0x5C3B, 0x1766, 0x5C3C, 0x5C3C, 0x0B44, 0x5C3D, 0x5C3D, 0x08D0,
+ 0x5C3E, 0x5C3E, 0x0EC1, 0x5C3F, 0x5C3F, 0x0B55, 0x5C40, 0x5C40, 0x0905,
+ 0x5C41, 0x5C41, 0x0BC7, 0x5C42, 0x5C42, 0x04AA, 0x5C43, 0x5C44, 0x2F19,
+ 0x5C45, 0x5C45, 0x0902, 0x5C46, 0x5C47, 0x2F1B, 0x5C48, 0x5C48, 0x0C79,
+ 0x5C49, 0x5C49, 0x0E3E, 0x5C4A, 0x5C4A, 0x08BD, 0x5C4B, 0x5C4B, 0x0EEC,
+ 0x5C4C, 0x5C4D, 0x2F1D, 0x5C4E, 0x5C4E, 0x0D51, 0x5C4F, 0x5C4F, 0x0BE0,
+ 0x5C50, 0x5C50, 0x1768, 0x5C51, 0x5C51, 0x0F87, 0x5C52, 0x5C54, 0x2F1F,
+ 0x5C55, 0x5C55, 0x115A, 0x5C56, 0x5C58, 0x2F22, 0x5C59, 0x5C59, 0x1769,
+ 0x5C5A, 0x5C5D, 0x2F25, 0x5C5E, 0x5C5E, 0x0D8B, 0x5C5F, 0x5C5F, 0x2F29,
+ 0x5C60, 0x5C60, 0x0E71, 0x5C61, 0x5C61, 0x0A6C, 0x5C62, 0x5C62, 0x2050,
+ 0x5C63, 0x5C63, 0x176B, 0x5C64, 0x5C64, 0x1E67, 0x5C65, 0x5C65, 0x0A6B,
+ 0x5C66, 0x5C66, 0x176C, 0x5C67, 0x5C67, 0x2F2A, 0x5C68, 0x5C68, 0x23F4,
+ 0x5C69, 0x5C6B, 0x2F2B, 0x5C6C, 0x5C6C, 0x213E, 0x5C6D, 0x5C6D, 0x2F2E,
+ 0x5C6E, 0x5C6E, 0x1774, 0x5C6F, 0x5C6F, 0x0E7E, 0x5C70, 0x5C70, 0x2F2F,
+ 0x5C71, 0x5C71, 0x0CF6, 0x5C72, 0x5C78, 0x2F30, 0x5C79, 0x5C79, 0x1060,
+ 0x5C7A, 0x5C7A, 0x15AC, 0x5C7B, 0x5C7E, 0x2F37, 0x5C7F, 0x5C7F, 0x10D1,
+ 0x5C80, 0x5C80, 0x2F3B, 0x5C81, 0x5C81, 0x0DDF, 0x5C82, 0x5C82, 0x0C10,
+ 0x5C83, 0x5C87, 0x2F3C, 0x5C88, 0x5C88, 0x15B0, 0x5C89, 0x5C8B, 0x2F41,
+ 0x5C8C, 0x5C8C, 0x15AB, 0x5C8D, 0x5C8D, 0x15AD, 0x5C8E, 0x5C8F, 0x2F44,
+ 0x5C90, 0x5C90, 0x15AE, 0x5C91, 0x5C91, 0x15B3, 0x5C92, 0x5C93, 0x2F46,
+ 0x5C94, 0x5C94, 0x04B4, 0x5C95, 0x5C95, 0x2F48, 0x5C96, 0x5C96, 0x15AF,
+ 0x5C97, 0x5C97, 0x06D5, 0x5C98, 0x5C99, 0x15B1, 0x5C9A, 0x5C9A, 0x15B4,
+ 0x5C9B, 0x5C9B, 0x059B, 0x5C9C, 0x5C9C, 0x15B5, 0x5C9D, 0x5CA0, 0x2F49,
+ 0x5CA1, 0x5CA1, 0x1F16, 0x5CA2, 0x5CA2, 0x15B7, 0x5CA3, 0x5CA3, 0x15BC,
+ 0x5CA4, 0x5CA8, 0x2F4D, 0x5CA9, 0x5CA9, 0x0FFB, 0x5CAA, 0x5CAA, 0x2F52,
+ 0x5CAB, 0x5CAB, 0x15BA, 0x5CAC, 0x5CAC, 0x15B9, 0x5CAD, 0x5CAD, 0x0A34,
+ 0x5CAE, 0x5CB0, 0x2F53, 0x5CB1, 0x5CB1, 0x15BB, 0x5CB2, 0x5CB2, 0x2F56,
+ 0x5CB3, 0x5CB3, 0x1103, 0x5CB4, 0x5CB4, 0x2F57, 0x5CB5, 0x5CB5, 0x15B6,
+ 0x5CB6, 0x5CB6, 0x2F58, 0x5CB7, 0x5CB7, 0x15BE, 0x5CB8, 0x5CB8, 0x03C1,
+ 0x5CB9, 0x5CBC, 0x2F59, 0x5CBD, 0x5CBD, 0x15B8, 0x5CBE, 0x5CBE, 0x2F5D,
+ 0x5CBF, 0x5CBF, 0x0986, 0x5CC0, 0x5CC0, 0x2F5E, 0x5CC1, 0x5CC1, 0x15BD,
+ 0x5CC2, 0x5CC3, 0x2F5F, 0x5CC4, 0x5CC4, 0x15BF, 0x5CC5, 0x5CCA, 0x2F61,
+ 0x5CCB, 0x5CCB, 0x15C2, 0x5CCC, 0x5CD1, 0x2F67, 0x5CD2, 0x5CD2, 0x15C0,
+ 0x5CD3, 0x5CD8, 0x2F6D, 0x5CD9, 0x5CD9, 0x11C4, 0x5CDA, 0x5CE0, 0x2F73,
+ 0x5CE1, 0x5CE1, 0x0F2C, 0x5CE2, 0x5CE3, 0x2F7A, 0x5CE4, 0x5CE4, 0x15C1,
+ 0x5CE5, 0x5CE5, 0x15C3, 0x5CE6, 0x5CE6, 0x0A74, 0x5CE7, 0x5CE7, 0x2F7C,
+ 0x5CE8, 0x5CE8, 0x062A, 0x5CE9, 0x5CE9, 0x2F7D, 0x5CEA, 0x5CEA, 0x10DD,
+ 0x5CEB, 0x5CEC, 0x2F7E, 0x5CED, 0x5CED, 0x0C4A, 0x5CEE, 0x5CEF, 0x2F80,
+ 0x5CF0, 0x5CF0, 0x0682, 0x5CF1, 0x5CF3, 0x2F82, 0x5CF4, 0x5CF4, 0x2389,
+ 0x5CF5, 0x5CF5, 0x2F85, 0x5CF6, 0x5CF6, 0x1EB7, 0x5CF7, 0x5CFA, 0x2F86,
+ 0x5CFB, 0x5CFB, 0x092D, 0x5CFC, 0x5CFC, 0x2F8A, 0x5CFD, 0x5CFD, 0x21B4,
+ 0x5CFE, 0x5CFF, 0x2F8B, 0x5D00, 0x5D01, 0x2F8D, 0x5D02, 0x5D03, 0x15C4,
+ 0x5D04, 0x5D05, 0x2F8F, 0x5D06, 0x5D06, 0x15CB, 0x5D07, 0x5D07, 0x050C,
+ 0x5D08, 0x5D0C, 0x2F91, 0x5D0D, 0x5D0D, 0x238F, 0x5D0E, 0x5D0E, 0x0C08,
+ 0x5D0F, 0x5D13, 0x2F96, 0x5D14, 0x5D14, 0x0561, 0x5D15, 0x5D15, 0x2F9B,
+ 0x5D16, 0x5D16, 0x0FEB, 0x5D17, 0x5D17, 0x1F1A, 0x5D18, 0x5D1A, 0x2F9C,
+ 0x5D1B, 0x5D1B, 0x15CC, 0x5D1C, 0x5D1D, 0x2F9F, 0x5D1E, 0x5D1E, 0x15CA,
+ 0x5D1F, 0x5D23, 0x2FA1, 0x5D24, 0x5D24, 0x15C9, 0x5D25, 0x5D25, 0x2FA6,
+ 0x5D26, 0x5D26, 0x15C7, 0x5D27, 0x5D27, 0x15C6, 0x5D28, 0x5D28, 0x2FA7,
+ 0x5D29, 0x5D29, 0x0429, 0x5D2A, 0x5D2B, 0x2FA8, 0x5D2C, 0x5D2C, 0x238B,
+ 0x5D2D, 0x5D2D, 0x1159, 0x5D2E, 0x5D2E, 0x15C8, 0x5D2F, 0x5D33, 0x2FAA,
+ 0x5D34, 0x5D34, 0x15CF, 0x5D35, 0x5D3C, 0x2FAF, 0x5D3D, 0x5D3D, 0x15D0,
+ 0x5D3E, 0x5D3E, 0x15CE, 0x5D3F, 0x5D46, 0x2FB7, 0x5D47, 0x5D47, 0x1B22,
+ 0x5D48, 0x5D49, 0x2FBF, 0x5D4A, 0x5D4A, 0x15D7, 0x5D4B, 0x5D4B, 0x15D6,
+ 0x5D4C, 0x5D4C, 0x0C33, 0x5D4D, 0x5D4F, 0x2FC1, 0x5D50, 0x5D50, 0x238A,
+ 0x5D51, 0x5D57, 0x2FC4, 0x5D58, 0x5D58, 0x15CD, 0x5D59, 0x5D5A, 0x2FCB,
+ 0x5D5B, 0x5D5B, 0x15D2, 0x5D5C, 0x5D5C, 0x2FCD, 0x5D5D, 0x5D5D, 0x15D4,
+ 0x5D5E, 0x5D68, 0x2FCE, 0x5D69, 0x5D69, 0x15D8, 0x5D6A, 0x5D6A, 0x2FD9,
+ 0x5D6B, 0x5D6B, 0x15D5, 0x5D6C, 0x5D6C, 0x15D1, 0x5D6D, 0x5D6E, 0x2FDA,
+ 0x5D6F, 0x5D6F, 0x15D3, 0x5D70, 0x5D73, 0x2FDC, 0x5D74, 0x5D74, 0x15D9,
+ 0x5D75, 0x5D80, 0x2FE0, 0x5D81, 0x5D81, 0x2391, 0x5D82, 0x5D82, 0x15DA,
+ 0x5D83, 0x5D83, 0x2FEC, 0x5D84, 0x5D84, 0x2271, 0x5D85, 0x5D86, 0x2FED,
+ 0x5D87, 0x5D87, 0x2388, 0x5D88, 0x5D96, 0x2FEF, 0x5D97, 0x5D97, 0x238E,
+ 0x5D98, 0x5D98, 0x2FFE, 0x5D99, 0x5D99, 0x15DB, 0x5D9A, 0x5D9C, 0x2FFF,
+ 0x5D9D, 0x5D9D, 0x15DC, 0x5D9E, 0x5D9F, 0x3002, 0x5DA0, 0x5DA0, 0x238D,
+ 0x5DA1, 0x5DA6, 0x3004, 0x5DA7, 0x5DA7, 0x238C, 0x5DA8, 0x5DB6, 0x300A,
+ 0x5DB7, 0x5DB7, 0x15DE, 0x5DB8, 0x5DB8, 0x2390, 0x5DB9, 0x5DB9, 0x3019,
+ 0x5DBA, 0x5DBA, 0x2033, 0x5DBB, 0x5DBB, 0x301A, 0x5DBC, 0x5DBC, 0x223C,
+ 0x5DBD, 0x5DC4, 0x301B, 0x5DC5, 0x5DC5, 0x15DF, 0x5DC6, 0x5DCA, 0x3023,
+ 0x5DCB, 0x5DCB, 0x1FE9, 0x5DCC, 0x5DCC, 0x3028, 0x5DCD, 0x5DCD, 0x0EB0,
+ 0x5DCE, 0x5DD1, 0x3029, 0x5DD2, 0x5DD2, 0x2055, 0x5DD3, 0x5DD3, 0x302D,
+ 0x5DD4, 0x5DD4, 0x2392, 0x5DD5, 0x5DDA, 0x302E, 0x5DDB, 0x5DDB, 0x1815,
+ 0x5DDC, 0x5DDC, 0x3034, 0x5DDD, 0x5DDD, 0x052B, 0x5DDE, 0x5DDE, 0x11DC,
+ 0x5DDF, 0x5DE0, 0x3035, 0x5DE1, 0x5DE1, 0x0FDB, 0x5DE2, 0x5DE2, 0x04D7,
+ 0x5DE3, 0x5DE4, 0x3037, 0x5DE5, 0x5DE5, 0x06FD, 0x5DE6, 0x5DE6, 0x1250,
+ 0x5DE7, 0x5DE7, 0x0C46, 0x5DE8, 0x5DE8, 0x090D, 0x5DE9, 0x5DE9, 0x0707,
+ 0x5DEA, 0x5DEA, 0x3039, 0x5DEB, 0x5DEB, 0x0EE6, 0x5DEC, 0x5DED, 0x303A,
+ 0x5DEE, 0x5DEE, 0x04B5, 0x5DEF, 0x5DEF, 0x139F, 0x5DF0, 0x5DF0, 0x2324,
+ 0x5DF1, 0x5DF1, 0x082D, 0x5DF2, 0x5DF2, 0x1058, 0x5DF3, 0x5DF3, 0x0DBD,
+ 0x5DF4, 0x5DF4, 0x03D8, 0x5DF5, 0x5DF6, 0x303C, 0x5DF7, 0x5DF7, 0x0F5C,
+ 0x5DF8, 0x5DFC, 0x303E, 0x5DFD, 0x5DFD, 0x12F7, 0x5DFE, 0x5DFE, 0x08BE,
+ 0x5DFF, 0x5DFF, 0x3043, 0x5E00, 0x5E00, 0x3044, 0x5E01, 0x5E01, 0x043B,
+ 0x5E02, 0x5E02, 0x0D67, 0x5E03, 0x5E03, 0x0483, 0x5E04, 0x5E04, 0x3045,
+ 0x5E05, 0x5E05, 0x0D9C, 0x5E06, 0x5E06, 0x0648, 0x5E07, 0x5E07, 0x3046,
+ 0x5E08, 0x5E08, 0x0D3D, 0x5E09, 0x5E0B, 0x3047, 0x5E0C, 0x5E0C, 0x0F10,
+ 0x5E0D, 0x5E0E, 0x304A, 0x5E0F, 0x5E0F, 0x159E, 0x5E10, 0x5E10, 0x116B,
+ 0x5E11, 0x5E11, 0x15A1, 0x5E12, 0x5E13, 0x304C, 0x5E14, 0x5E14, 0x15A0,
+ 0x5E15, 0x5E15, 0x0B82, 0x5E16, 0x5E16, 0x0E4E, 0x5E17, 0x5E17, 0x304E,
+ 0x5E18, 0x5E18, 0x09FA, 0x5E19, 0x5E19, 0x159F, 0x5E1A, 0x5E1A, 0x11E2,
+ 0x5E1B, 0x5E1B, 0x0476, 0x5E1C, 0x5E1C, 0x11C3, 0x5E1D, 0x5E1D, 0x05BC,
+ 0x5E1E, 0x5E24, 0x304F, 0x5E25, 0x5E25, 0x2143, 0x5E26, 0x5E26, 0x057B,
+ 0x5E27, 0x5E27, 0x11A0, 0x5E28, 0x5E2A, 0x3056, 0x5E2B, 0x5E2B, 0x2129,
+ 0x5E2C, 0x5E2C, 0x3059, 0x5E2D, 0x5E2D, 0x0F1C, 0x5E2E, 0x5E2E, 0x03FA,
+ 0x5E2F, 0x5E30, 0x305A, 0x5E31, 0x5E31, 0x15A2, 0x5E32, 0x5E32, 0x305C,
+ 0x5E33, 0x5E33, 0x2277, 0x5E34, 0x5E35, 0x305D, 0x5E36, 0x5E36, 0x1EA7,
+ 0x5E37, 0x5E37, 0x15A5, 0x5E38, 0x5E38, 0x04C8, 0x5E39, 0x5E3A, 0x305F,
+ 0x5E3B, 0x5E3C, 0x15A3, 0x5E3D, 0x5E3D, 0x0AB6, 0x5E3E, 0x5E3F, 0x3061,
+ 0x5E40, 0x5E40, 0x2285, 0x5E41, 0x5E41, 0x3063, 0x5E42, 0x5E42, 0x0AE2,
+ 0x5E43, 0x5E43, 0x2384, 0x5E44, 0x5E44, 0x15A6, 0x5E45, 0x5E45, 0x0696,
+ 0x5E46, 0x5E4B, 0x3064, 0x5E4C, 0x5E4C, 0x07E4, 0x5E4D, 0x5E53, 0x306A,
+ 0x5E54, 0x5E54, 0x15A7, 0x5E55, 0x5E55, 0x0B1E, 0x5E56, 0x5E56, 0x3071,
+ 0x5E57, 0x5E57, 0x2387, 0x5E58, 0x5E58, 0x2386, 0x5E59, 0x5E5A, 0x3072,
+ 0x5E5B, 0x5E5B, 0x15A8, 0x5E5C, 0x5E5D, 0x3074, 0x5E5E, 0x5E5E, 0x15A9,
+ 0x5E5F, 0x5E5F, 0x2290, 0x5E60, 0x5E60, 0x3076, 0x5E61, 0x5E61, 0x15AA,
+ 0x5E62, 0x5E62, 0x0534, 0x5E63, 0x5E63, 0x1E44, 0x5E64, 0x5E6A, 0x3077,
+ 0x5E6B, 0x5E6B, 0x1E32, 0x5E6C, 0x5E6C, 0x2385, 0x5E6D, 0x5E71, 0x307E,
+ 0x5E72, 0x5E72, 0x06C4, 0x5E73, 0x5E73, 0x0BDC, 0x5E74, 0x5E74, 0x0B4D,
+ 0x5E75, 0x5E75, 0x3083, 0x5E76, 0x5E76, 0x0469, 0x5E77, 0x5E77, 0x3084,
+ 0x5E78, 0x5E78, 0x0F9D, 0x5E79, 0x5E79, 0x1F13, 0x5E7A, 0x5E7A, 0x1813,
+ 0x5E7B, 0x5E7B, 0x07D8, 0x5E7C, 0x5E7C, 0x10BC, 0x5E7D, 0x5E7D, 0x10A9,
+ 0x5E7E, 0x5E7E, 0x1F73, 0x5E7F, 0x5E7F, 0x073C, 0x5E80, 0x5E80, 0x1631,
+ 0x5E81, 0x5E83, 0x3085, 0x5E84, 0x5E84, 0x120C, 0x5E85, 0x5E85, 0x3088,
+ 0x5E86, 0x5E86, 0x0C69, 0x5E87, 0x5E87, 0x043C, 0x5E88, 0x5E89, 0x3089,
+ 0x5E8A, 0x5E8A, 0x0535, 0x5E8B, 0x5E8B, 0x1633, 0x5E8C, 0x5E8E, 0x308B,
+ 0x5E8F, 0x5E8F, 0x0FBD, 0x5E90, 0x5E90, 0x0A55, 0x5E91, 0x5E91, 0x1632,
+ 0x5E92, 0x5E92, 0x308E, 0x5E93, 0x5E93, 0x096F, 0x5E94, 0x5E94, 0x108B,
+ 0x5E95, 0x5E95, 0x05B8, 0x5E96, 0x5E96, 0x1634, 0x5E97, 0x5E97, 0x05CB,
+ 0x5E98, 0x5E98, 0x308F, 0x5E99, 0x5E99, 0x0AF2, 0x5E9A, 0x5E9A, 0x06F8,
+ 0x5E9B, 0x5E9B, 0x3090, 0x5E9C, 0x5E9C, 0x06A9, 0x5E9D, 0x5E9D, 0x3091,
+ 0x5E9E, 0x5E9E, 0x0B94, 0x5E9F, 0x5E9F, 0x066C, 0x5EA0, 0x5EA0, 0x1636,
+ 0x5EA1, 0x5EA4, 0x3092, 0x5EA5, 0x5EA5, 0x1635, 0x5EA6, 0x5EA6, 0x0607,
+ 0x5EA7, 0x5EA7, 0x1256, 0x5EA8, 0x5EAA, 0x3096, 0x5EAB, 0x5EAB, 0x1FE0,
+ 0x5EAC, 0x5EAC, 0x3099, 0x5EAD, 0x5EAD, 0x0E56, 0x5EAE, 0x5EB2, 0x309A,
+ 0x5EB3, 0x5EB3, 0x163A, 0x5EB4, 0x5EB4, 0x309F, 0x5EB5, 0x5EB5, 0x1638,
+ 0x5EB6, 0x5EB6, 0x0D93, 0x5EB7, 0x5EB7, 0x0942, 0x5EB8, 0x5EB8, 0x109E,
+ 0x5EB9, 0x5EB9, 0x1637, 0x5EBA, 0x5EBD, 0x30A0, 0x5EBE, 0x5EBE, 0x1639,
+ 0x5EBF, 0x5EC8, 0x30A4, 0x5EC9, 0x5EC9, 0x09F7, 0x5ECA, 0x5ECA, 0x09B3,
+ 0x5ECB, 0x5ED0, 0x30AE, 0x5ED1, 0x5ED1, 0x163D, 0x5ED2, 0x5ED2, 0x163C,
+ 0x5ED3, 0x5ED3, 0x0995, 0x5ED4, 0x5ED5, 0x30B4, 0x5ED6, 0x5ED6, 0x0A17,
+ 0x5ED7, 0x5EDA, 0x30B6, 0x5EDB, 0x5EDB, 0x163E, 0x5EDC, 0x5EDE, 0x30BA,
+ 0x5EDF, 0x5EDF, 0x2087, 0x5EE0, 0x5EE0, 0x1E78, 0x5EE1, 0x5EE1, 0x23AE,
+ 0x5EE2, 0x5EE2, 0x1EF6, 0x5EE3, 0x5EE3, 0x1F31, 0x5EE4, 0x5EE7, 0x30BD,
+ 0x5EE8, 0x5EE8, 0x163F, 0x5EE9, 0x5EE9, 0x30C1, 0x5EEA, 0x5EEA, 0x1640,
+ 0x5EEB, 0x5EEB, 0x30C2, 0x5EEC, 0x5EEC, 0x2045, 0x5EED, 0x5EF2, 0x30C3,
+ 0x5EF3, 0x5EF3, 0x2178, 0x5EF4, 0x5EF4, 0x1398, 0x5EF5, 0x5EF5, 0x30C9,
+ 0x5EF6, 0x5EF6, 0x0FFC, 0x5EF7, 0x5EF7, 0x0E53, 0x5EF8, 0x5EF9, 0x30CA,
+ 0x5EFA, 0x5EFA, 0x0879, 0x5EFB, 0x5EFD, 0x30CC, 0x5EFE, 0x5EFE, 0x14AD,
+ 0x5EFF, 0x5EFF, 0x125B, 0x5F00, 0x5F00, 0x0937, 0x5F01, 0x5F01, 0x139D,
+ 0x5F02, 0x5F02, 0x1073, 0x5F03, 0x5F03, 0x0C19, 0x5F04, 0x5F04, 0x0B6B,
+ 0x5F05, 0x5F07, 0x30CF, 0x5F08, 0x5F08, 0x14AE, 0x5F09, 0x5F09, 0x30D2,
+ 0x5F0A, 0x5F0A, 0x0440, 0x5F0B, 0x5F0B, 0x14F6, 0x5F0C, 0x5F0E, 0x30D3,
+ 0x5F0F, 0x5F0F, 0x0D54, 0x5F10, 0x5F10, 0x30D6, 0x5F11, 0x5F11, 0x14F9,
+ 0x5F12, 0x5F12, 0x30D7, 0x5F13, 0x5F13, 0x0706, 0x5F14, 0x5F14, 0x30D8,
+ 0x5F15, 0x5F15, 0x1084, 0x5F16, 0x5F16, 0x30D9, 0x5F17, 0x5F17, 0x06A0,
+ 0x5F18, 0x5F18, 0x07A2, 0x5F19, 0x5F1A, 0x30DA, 0x5F1B, 0x5F1B, 0x04FF,
+ 0x5F1C, 0x5F1E, 0x30DC, 0x5F1F, 0x5F1F, 0x05BD, 0x5F20, 0x5F20, 0x1166,
+ 0x5F21, 0x5F24, 0x30DF, 0x5F25, 0x5F25, 0x0ADB, 0x5F26, 0x5F26, 0x0F3F,
+ 0x5F27, 0x5F27, 0x07B6, 0x5F28, 0x5F28, 0x30E3, 0x5F29, 0x5F29, 0x176F,
+ 0x5F2A, 0x5F2A, 0x176E, 0x5F2B, 0x5F2C, 0x30E4, 0x5F2D, 0x5F2D, 0x1770,
+ 0x5F2E, 0x5F2E, 0x30E6, 0x5F2F, 0x5F2F, 0x0E95, 0x5F30, 0x5F30, 0x30E7,
+ 0x5F31, 0x5F31, 0x0CD0, 0x5F32, 0x5F32, 0x30E8, 0x5F33, 0x5F33, 0x23F5,
+ 0x5F34, 0x5F34, 0x30E9, 0x5F35, 0x5F35, 0x2275, 0x5F36, 0x5F38, 0x30EA,
+ 0x5F39, 0x5F39, 0x0590, 0x5F3A, 0x5F3A, 0x0C3C, 0x5F3B, 0x5F3B, 0x30ED,
+ 0x5F3C, 0x5F3C, 0x1772, 0x5F3D, 0x5F3F, 0x30EE, 0x5F40, 0x5F40, 0x19BE,
+ 0x5F41, 0x5F45, 0x30F1, 0x5F46, 0x5F46, 0x266E, 0x5F47, 0x5F47, 0x30F6,
+ 0x5F48, 0x5F48, 0x1EB0, 0x5F49, 0x5F4B, 0x30F7, 0x5F4C, 0x5F4C, 0x2083,
+ 0x5F4D, 0x5F4D, 0x30FA, 0x5F4E, 0x5F4E, 0x2188, 0x5F4F, 0x5F4F, 0x30FB,
+ 0x5F50, 0x5F50, 0x1762, 0x5F51, 0x5F51, 0x30FC, 0x5F52, 0x5F52, 0x0742,
+ 0x5F53, 0x5F53, 0x0592, 0x5F54, 0x5F54, 0x30FD, 0x5F55, 0x5F55, 0x0A63,
+ 0x5F56, 0x5F56, 0x1764, 0x5F57, 0x5F57, 0x1763, 0x5F58, 0x5F58, 0x1765,
+ 0x5F59, 0x5F59, 0x267C, 0x5F5A, 0x5F5C, 0x30FE, 0x5F5D, 0x5F5D, 0x1054,
+ 0x5F5E, 0x5F60, 0x3101, 0x5F61, 0x5F61, 0x15EE, 0x5F62, 0x5F62, 0x0F99,
+ 0x5F63, 0x5F63, 0x3104, 0x5F64, 0x5F64, 0x0E5F, 0x5F65, 0x5F65, 0x3105,
+ 0x5F66, 0x5F66, 0x100E, 0x5F67, 0x5F68, 0x3106, 0x5F69, 0x5F69, 0x0491,
+ 0x5F6A, 0x5F6A, 0x0454, 0x5F6B, 0x5F6B, 0x3108, 0x5F6C, 0x5F6C, 0x045B,
+ 0x5F6D, 0x5F6D, 0x0BAE, 0x5F6E, 0x5F6F, 0x3109, 0x5F70, 0x5F70, 0x1164,
+ 0x5F71, 0x5F71, 0x1095, 0x5F72, 0x5F72, 0x310B, 0x5F73, 0x5F73, 0x15E0,
+ 0x5F74, 0x5F76, 0x310C, 0x5F77, 0x5F77, 0x15E1, 0x5F78, 0x5F78, 0x310F,
+ 0x5F79, 0x5F79, 0x1062, 0x5F7A, 0x5F7A, 0x3110, 0x5F7B, 0x5F7B, 0x04DE,
+ 0x5F7C, 0x5F7C, 0x0434, 0x5F7D, 0x5F7F, 0x3111, 0x5F80, 0x5F80, 0x0EAA,
+ 0x5F81, 0x5F81, 0x1198, 0x5F82, 0x5F82, 0x15E2, 0x5F83, 0x5F83, 0x3114,
+ 0x5F84, 0x5F84, 0x08E5, 0x5F85, 0x5F85, 0x0580, 0x5F86, 0x5F86, 0x3115,
+ 0x5F87, 0x5F87, 0x15E3, 0x5F88, 0x5F88, 0x0793, 0x5F89, 0x5F89, 0x15E4,
+ 0x5F8A, 0x5F8A, 0x07C7, 0x5F8B, 0x5F8B, 0x0A70, 0x5F8C, 0x5F8C, 0x15E5,
+ 0x5F8D, 0x5F8F, 0x3116, 0x5F90, 0x5F90, 0x0FB7, 0x5F91, 0x5F91, 0x1FC5,
+ 0x5F92, 0x5F92, 0x0E6E, 0x5F93, 0x5F94, 0x3119, 0x5F95, 0x5F95, 0x15E6,
+ 0x5F96, 0x5F96, 0x311B, 0x5F97, 0x5F97, 0x05A4, 0x5F98, 0x5F98, 0x0B88,
+ 0x5F99, 0x5F99, 0x15E7, 0x5F9A, 0x5F9B, 0x311C, 0x5F9C, 0x5F9C, 0x15E8,
+ 0x5F9D, 0x5F9D, 0x311E, 0x5F9E, 0x5F9E, 0x1EA1, 0x5F9F, 0x5F9F, 0x311F,
+ 0x5FA0, 0x5FA0, 0x2393, 0x5FA1, 0x5FA1, 0x10DE, 0x5FA2, 0x5FA7, 0x3120,
+ 0x5FA8, 0x5FA8, 0x15E9, 0x5FA9, 0x5FA9, 0x1F0B, 0x5FAA, 0x5FAA, 0x0FD6,
+ 0x5FAB, 0x5FAC, 0x3126, 0x5FAD, 0x5FAD, 0x15EA, 0x5FAE, 0x5FAE, 0x0EB1,
+ 0x5FAF, 0x5FB4, 0x3128, 0x5FB5, 0x5FB5, 0x15EB, 0x5FB6, 0x5FB6, 0x312E,
+ 0x5FB7, 0x5FB7, 0x05A3, 0x5FB8, 0x5FB8, 0x312F, 0x5FB9, 0x5FB9, 0x1E7C,
+ 0x5FBA, 0x5FBB, 0x3130, 0x5FBC, 0x5FBC, 0x15EC, 0x5FBD, 0x5FBD, 0x07EA,
+ 0x5FBE, 0x5FC2, 0x3132, 0x5FC3, 0x5FC3, 0x0F8F, 0x5FC4, 0x5FC4, 0x1642,
+ 0x5FC5, 0x5FC5, 0x0441, 0x5FC6, 0x5FC6, 0x106B, 0x5FC7, 0x5FC8, 0x3137,
+ 0x5FC9, 0x5FC9, 0x1643, 0x5FCA, 0x5FCB, 0x3139, 0x5FCC, 0x5FCC, 0x083C,
+ 0x5FCD, 0x5FCD, 0x0CA7, 0x5FCE, 0x5FCE, 0x313B, 0x5FCF, 0x5FCF, 0x1645,
+ 0x5FD0, 0x5FD0, 0x1A0C, 0x5FD1, 0x5FD1, 0x1A0B, 0x5FD2, 0x5FD2, 0x14F7,
+ 0x5FD3, 0x5FD5, 0x313C, 0x5FD6, 0x5FD6, 0x1644, 0x5FD7, 0x5FD7, 0x11BD,
+ 0x5FD8, 0x5FD8, 0x0EAD, 0x5FD9, 0x5FD9, 0x0AAB, 0x5FDA, 0x5FDC, 0x313F,
+ 0x5FDD, 0x5FDD, 0x1683, 0x5FDE, 0x5FDF, 0x3142, 0x5FE0, 0x5FE0, 0x11D1,
+ 0x5FE1, 0x5FE1, 0x1649, 0x5FE2, 0x5FE3, 0x3144, 0x5FE4, 0x5FE4, 0x164A,
+ 0x5FE5, 0x5FE6, 0x3146, 0x5FE7, 0x5FE7, 0x10AC, 0x5FE8, 0x5FE9, 0x3148,
+ 0x5FEA, 0x5FEA, 0x164E, 0x5FEB, 0x5FEB, 0x0979, 0x5FEC, 0x5FEC, 0x314A,
+ 0x5FED, 0x5FED, 0x164F, 0x5FEE, 0x5FEE, 0x1647, 0x5FEF, 0x5FF0, 0x314B,
+ 0x5FF1, 0x5FF1, 0x04E5, 0x5FF2, 0x5FF4, 0x314D, 0x5FF5, 0x5FF5, 0x0B51,
+ 0x5FF6, 0x5FF7, 0x3150, 0x5FF8, 0x5FF8, 0x1650, 0x5FF9, 0x5FFA, 0x3152,
+ 0x5FFB, 0x5FFB, 0x0F8E, 0x5FFC, 0x5FFC, 0x3154, 0x5FFD, 0x5FFD, 0x07AD,
+ 0x5FFE, 0x5FFE, 0x164B, 0x5FFF, 0x5FFF, 0x067B, 0x6000, 0x6000, 0x07C8,
+ 0x6001, 0x6001, 0x0DFF, 0x6002, 0x6002, 0x0DC0, 0x6003, 0x6003, 0x1646,
+ 0x6004, 0x6004, 0x1648, 0x6005, 0x6006, 0x164C, 0x6007, 0x6009, 0x3155,
+ 0x600A, 0x600A, 0x1659, 0x600B, 0x600C, 0x3158, 0x600D, 0x600D, 0x1656,
+ 0x600E, 0x600E, 0x1138, 0x600F, 0x600F, 0x1655, 0x6010, 0x6011, 0x315A,
+ 0x6012, 0x6012, 0x0B6E, 0x6013, 0x6013, 0x315C, 0x6014, 0x6014, 0x119B,
+ 0x6015, 0x6015, 0x0B83, 0x6016, 0x6016, 0x0487, 0x6017, 0x6018, 0x315D,
+ 0x6019, 0x6019, 0x1651, 0x601A, 0x601A, 0x315F, 0x601B, 0x601B, 0x1654,
+ 0x601C, 0x601C, 0x09F8, 0x601D, 0x601D, 0x0DB1, 0x601E, 0x601F, 0x3160,
+ 0x6020, 0x6020, 0x0582, 0x6021, 0x6021, 0x165B, 0x6022, 0x6024, 0x3162,
+ 0x6025, 0x6025, 0x0824, 0x6026, 0x6026, 0x1653, 0x6027, 0x6027, 0x0F9F,
+ 0x6028, 0x6028, 0x10FC, 0x6029, 0x6029, 0x1657, 0x602A, 0x602A, 0x072F,
+ 0x602B, 0x602B, 0x1658, 0x602C, 0x602E, 0x3165, 0x602F, 0x602F, 0x0C50,
+ 0x6030, 0x6034, 0x3168, 0x6035, 0x6035, 0x1652, 0x6036, 0x603A, 0x316D,
+ 0x603B, 0x603B, 0x1239, 0x603C, 0x603C, 0x1A0D, 0x603D, 0x603E, 0x3172,
+ 0x603F, 0x603F, 0x165A, 0x6040, 0x6040, 0x3174, 0x6041, 0x6041, 0x1A11,
+ 0x6042, 0x6042, 0x1660, 0x6043, 0x6043, 0x0D68, 0x6044, 0x604A, 0x3175,
+ 0x604B, 0x604B, 0x09FE, 0x604C, 0x604C, 0x317C, 0x604D, 0x604D, 0x07E5,
+ 0x604E, 0x604F, 0x317D, 0x6050, 0x6050, 0x0963, 0x6051, 0x6051, 0x317F,
+ 0x6052, 0x6052, 0x079A, 0x6053, 0x6054, 0x3180, 0x6055, 0x6055, 0x0D96,
+ 0x6056, 0x6058, 0x3182, 0x6059, 0x6059, 0x1A12, 0x605A, 0x605A, 0x1A0F,
+ 0x605B, 0x605C, 0x3185, 0x605D, 0x605D, 0x1A0E, 0x605E, 0x6061, 0x3187,
+ 0x6062, 0x6062, 0x07EB, 0x6063, 0x6063, 0x1A13, 0x6064, 0x6064, 0x0FBF,
+ 0x6065, 0x6066, 0x318B, 0x6067, 0x6067, 0x1A10, 0x6068, 0x6068, 0x0795,
+ 0x6069, 0x6069, 0x0636, 0x606A, 0x606A, 0x1661, 0x606B, 0x606B, 0x05F1,
+ 0x606C, 0x606C, 0x0E44, 0x606D, 0x606D, 0x0700, 0x606E, 0x606E, 0x318D,
+ 0x606F, 0x606F, 0x0F0F, 0x6070, 0x6070, 0x0C1E, 0x6071, 0x6072, 0x318E,
+ 0x6073, 0x6073, 0x095F, 0x6074, 0x6075, 0x3190, 0x6076, 0x6076, 0x0630,
+ 0x6077, 0x6077, 0x3192, 0x6078, 0x6079, 0x165C, 0x607A, 0x607A, 0x165F,
+ 0x607B, 0x607B, 0x165E, 0x607C, 0x607C, 0x0B38, 0x607D, 0x607D, 0x1662,
+ 0x607E, 0x607E, 0x3193, 0x607F, 0x607F, 0x10A6, 0x6080, 0x6082, 0x3194,
+ 0x6083, 0x6083, 0x1667, 0x6084, 0x6084, 0x0C41, 0x6085, 0x6088, 0x3197,
+ 0x6089, 0x6089, 0x0F11, 0x608A, 0x608B, 0x319B, 0x608C, 0x608C, 0x1669,
+ 0x608D, 0x608D, 0x076E, 0x608E, 0x6091, 0x319D, 0x6092, 0x6092, 0x1668,
+ 0x6093, 0x6093, 0x31A1, 0x6094, 0x6094, 0x07EF, 0x6095, 0x6095, 0x31A2,
+ 0x6096, 0x6096, 0x1663, 0x6097, 0x6099, 0x31A3, 0x609A, 0x609A, 0x1664,
+ 0x609B, 0x609B, 0x166A, 0x609C, 0x609C, 0x31A6, 0x609D, 0x609D, 0x1666,
+ 0x609E, 0x609E, 0x31A7, 0x609F, 0x609F, 0x0F01, 0x60A0, 0x60A0, 0x10AB,
+ 0x60A1, 0x60A2, 0x31A8, 0x60A3, 0x60A3, 0x07D1, 0x60A4, 0x60A5, 0x31AA,
+ 0x60A6, 0x60A6, 0x1106, 0x60A7, 0x60A7, 0x31AC, 0x60A8, 0x60A8, 0x0B5D,
+ 0x60A9, 0x60AA, 0x31AD, 0x60AB, 0x60AB, 0x1A14, 0x60AC, 0x60AC, 0x0FC7,
+ 0x60AD, 0x60AD, 0x1665, 0x60AE, 0x60AE, 0x31AF, 0x60AF, 0x60AF, 0x0AFA,
+ 0x60B0, 0x60B0, 0x31B0, 0x60B1, 0x60B1, 0x166D, 0x60B2, 0x60B2, 0x0418,
+ 0x60B3, 0x60B3, 0x31B1, 0x60B4, 0x60B4, 0x1672, 0x60B5, 0x60B5, 0x23B4,
+ 0x60B6, 0x60B6, 0x207E, 0x60B7, 0x60B7, 0x31B2, 0x60B8, 0x60B8, 0x0835,
+ 0x60B9, 0x60BA, 0x31B3, 0x60BB, 0x60BB, 0x166C, 0x60BC, 0x60BC, 0x05A0,
+ 0x60BD, 0x60C4, 0x31B5, 0x60C5, 0x60C5, 0x0C66, 0x60C6, 0x60C6, 0x1670,
+ 0x60C7, 0x60C9, 0x31BD, 0x60CA, 0x60CA, 0x08D9, 0x60CB, 0x60CB, 0x0EA0,
+ 0x60CC, 0x60D0, 0x31C0, 0x60D1, 0x60D1, 0x0808, 0x60D2, 0x60D4, 0x31C5,
+ 0x60D5, 0x60D5, 0x0E3B, 0x60D6, 0x60D7, 0x31C8, 0x60D8, 0x60D8, 0x166F,
+ 0x60D9, 0x60D9, 0x31CA, 0x60DA, 0x60DA, 0x1671, 0x60DB, 0x60DB, 0x31CB,
+ 0x60DC, 0x60DC, 0x0F14, 0x60DD, 0x60DD, 0x166E, 0x60DE, 0x60DE, 0x31CC,
+ 0x60DF, 0x60DF, 0x0EB8, 0x60E0, 0x60E0, 0x07F2, 0x60E1, 0x60E1, 0x1EE3,
+ 0x60E2, 0x60E5, 0x31CD, 0x60E6, 0x60E6, 0x05CC, 0x60E7, 0x60E7, 0x0914,
+ 0x60E8, 0x60E8, 0x0499, 0x60E9, 0x60E9, 0x04F2, 0x60EA, 0x60EA, 0x31D1,
+ 0x60EB, 0x60EB, 0x0422, 0x60EC, 0x60EC, 0x166B, 0x60ED, 0x60ED, 0x0498,
+ 0x60EE, 0x60EE, 0x058D, 0x60EF, 0x60EF, 0x0738, 0x60F0, 0x60F0, 0x0627,
+ 0x60F1, 0x60F1, 0x2095, 0x60F2, 0x60F2, 0x23BB, 0x60F3, 0x60F3, 0x0F58,
+ 0x60F4, 0x60F4, 0x1677, 0x60F5, 0x60F5, 0x31D2, 0x60F6, 0x60F6, 0x07E1,
+ 0x60F7, 0x60F8, 0x31D3, 0x60F9, 0x60F9, 0x0CA2, 0x60FA, 0x60FA, 0x0F95,
+ 0x60FB, 0x60FB, 0x23B9, 0x60FC, 0x60FF, 0x31D5, 0x6100, 0x6100, 0x1678,
+ 0x6101, 0x6101, 0x0513, 0x6102, 0x6105, 0x31D9, 0x6106, 0x6106, 0x1A15,
+ 0x6107, 0x6107, 0x31DD, 0x6108, 0x6108, 0x10DF, 0x6109, 0x6109, 0x10C9,
+ 0x610A, 0x610C, 0x31DE, 0x610D, 0x610D, 0x1A16, 0x610E, 0x610E, 0x1679,
+ 0x610F, 0x610F, 0x1069, 0x6110, 0x6114, 0x31E1, 0x6115, 0x6115, 0x1675,
+ 0x6116, 0x6119, 0x31E6, 0x611A, 0x611A, 0x10C3, 0x611B, 0x611B, 0x1E28,
+ 0x611C, 0x611C, 0x23BD, 0x611D, 0x611E, 0x31EA, 0x611F, 0x611F, 0x06CB,
+ 0x6120, 0x6120, 0x1673, 0x6121, 0x6122, 0x31EC, 0x6123, 0x6123, 0x1676,
+ 0x6124, 0x6124, 0x067C, 0x6125, 0x6125, 0x31EE, 0x6126, 0x6126, 0x1674,
+ 0x6127, 0x6127, 0x098D, 0x6128, 0x612A, 0x31EF, 0x612B, 0x612B, 0x167A,
+ 0x612C, 0x6133, 0x31F2, 0x6134, 0x6134, 0x23B5, 0x6135, 0x6136, 0x31FA,
+ 0x6137, 0x6137, 0x23BA, 0x6138, 0x613D, 0x31FC, 0x613E, 0x613E, 0x23B3,
+ 0x613F, 0x613F, 0x10FB, 0x6140, 0x6147, 0x3202, 0x6148, 0x6148, 0x054B,
+ 0x6149, 0x6149, 0x320A, 0x614A, 0x614A, 0x167B, 0x614B, 0x614B, 0x2162,
+ 0x614C, 0x614C, 0x07DA, 0x614D, 0x614D, 0x320B, 0x614E, 0x614E, 0x0D30,
+ 0x614F, 0x6150, 0x320C, 0x6151, 0x6151, 0x0D1E, 0x6152, 0x6154, 0x320E,
+ 0x6155, 0x6155, 0x0B20, 0x6156, 0x6157, 0x3211, 0x6158, 0x6158, 0x1E5E,
+ 0x6159, 0x6159, 0x3213, 0x615A, 0x615A, 0x1E5D, 0x615B, 0x615C, 0x3214,
+ 0x615D, 0x615D, 0x1A17, 0x615E, 0x615E, 0x3216, 0x615F, 0x615F, 0x23B7,
+ 0x6160, 0x6161, 0x3217, 0x6162, 0x6162, 0x0AA4, 0x6163, 0x6163, 0x1F2F,
+ 0x6164, 0x6164, 0x24DF, 0x6165, 0x6166, 0x3219, 0x6167, 0x6167, 0x07F0,
+ 0x6168, 0x6168, 0x093B, 0x6169, 0x6169, 0x321B, 0x616A, 0x616A, 0x23B2,
+ 0x616B, 0x616B, 0x214E, 0x616C, 0x616D, 0x321C, 0x616E, 0x616E, 0x2052,
+ 0x616F, 0x616F, 0x321E, 0x6170, 0x6170, 0x0ECE, 0x6171, 0x6172, 0x321F,
+ 0x6173, 0x6173, 0x23BC, 0x6174, 0x6174, 0x3221, 0x6175, 0x6175, 0x167C,
+ 0x6176, 0x6176, 0x20EB, 0x6177, 0x6177, 0x0943, 0x6178, 0x6181, 0x3222,
+ 0x6182, 0x6182, 0x2232, 0x6183, 0x6189, 0x322C, 0x618A, 0x618A, 0x1E3F,
+ 0x618B, 0x618B, 0x0458, 0x618C, 0x618D, 0x3233, 0x618E, 0x618E, 0x113A,
+ 0x618F, 0x618F, 0x3235, 0x6190, 0x6190, 0x201B, 0x6191, 0x6191, 0x20BC,
+ 0x6192, 0x6192, 0x23BE, 0x6193, 0x6193, 0x3236, 0x6194, 0x6194, 0x167E,
+ 0x6195, 0x6199, 0x3237, 0x619A, 0x619A, 0x1EAE, 0x619B, 0x619C, 0x323C,
+ 0x619D, 0x619D, 0x1A19, 0x619E, 0x61A3, 0x323E, 0x61A4, 0x61A4, 0x1EFB,
+ 0x61A5, 0x61A6, 0x3244, 0x61A7, 0x61A7, 0x167F, 0x61A8, 0x61A8, 0x0760,
+ 0x61A9, 0x61A9, 0x1A18, 0x61AA, 0x61AA, 0x3246, 0x61AB, 0x61AB, 0x2089,
+ 0x61AC, 0x61AC, 0x167D, 0x61AD, 0x61AD, 0x3247, 0x61AE, 0x61AE, 0x23B1,
+ 0x61AF, 0x61B1, 0x3248, 0x61B2, 0x61B2, 0x21C4, 0x61B3, 0x61B5, 0x324B,
+ 0x61B6, 0x61B6, 0x2214, 0x61B7, 0x61B7, 0x1680, 0x61B8, 0x61BD, 0x324E,
+ 0x61BE, 0x61BE, 0x076D, 0x61BF, 0x61C1, 0x3254, 0x61C2, 0x61C2, 0x05ED,
+ 0x61C3, 0x61C6, 0x3257, 0x61C7, 0x61C7, 0x1FDE, 0x61C8, 0x61C8, 0x0F83,
+ 0x61C9, 0x61C9, 0x2223, 0x61CA, 0x61CA, 0x03CE, 0x61CB, 0x61CB, 0x1A1A,
+ 0x61CC, 0x61CC, 0x23B6, 0x61CD, 0x61D0, 0x325B, 0x61D1, 0x61D1, 0x1A1B,
+ 0x61D2, 0x61D2, 0x09AC, 0x61D3, 0x61D3, 0x325F, 0x61D4, 0x61D4, 0x1681,
+ 0x61D5, 0x61DD, 0x3260, 0x61DE, 0x61DE, 0x268C, 0x61DF, 0x61DF, 0x24DE,
+ 0x61E0, 0x61E2, 0x3269, 0x61E3, 0x61E3, 0x24E0, 0x61E4, 0x61E5, 0x326C,
+ 0x61E6, 0x61E6, 0x0B74, 0x61E7, 0x61E7, 0x326E, 0x61E8, 0x61E8, 0x23B8,
+ 0x61E9, 0x61F1, 0x326F, 0x61F2, 0x61F2, 0x1E81, 0x61F3, 0x61F4, 0x3278,
+ 0x61F5, 0x61F5, 0x1682, 0x61F6, 0x61F6, 0x1FFE, 0x61F7, 0x61F7, 0x1F51,
+ 0x61F8, 0x61F8, 0x21E1, 0x61F9, 0x61F9, 0x327A, 0x61FA, 0x61FA, 0x23B0,
+ 0x61FB, 0x61FB, 0x327B, 0x61FC, 0x61FC, 0x1FCE, 0x61FD, 0x61FD, 0x327C,
+ 0x61FE, 0x61FE, 0x211E, 0x61FF, 0x61FF, 0x13E0, 0x6200, 0x6200, 0x2021,
+ 0x6201, 0x6205, 0x327D, 0x6206, 0x6206, 0x1A1C, 0x6207, 0x6207, 0x24E1,
+ 0x6208, 0x6208, 0x06E5, 0x6209, 0x6209, 0x3282, 0x620A, 0x620A, 0x0EFB,
+ 0x620B, 0x620B, 0x18F9, 0x620C, 0x620C, 0x0FB2, 0x620D, 0x620D, 0x0D90,
+ 0x620E, 0x620E, 0x0CB1, 0x620F, 0x620F, 0x0F24, 0x6210, 0x6210, 0x04EE,
+ 0x6211, 0x6211, 0x0EE1, 0x6212, 0x6212, 0x08B5, 0x6213, 0x6213, 0x3283,
+ 0x6214, 0x6214, 0x24A3, 0x6215, 0x6215, 0x169E, 0x6216, 0x6216, 0x0807,
+ 0x6217, 0x6217, 0x18FA, 0x6218, 0x6218, 0x115E, 0x6219, 0x6219, 0x3284,
+ 0x621A, 0x621A, 0x0BFC, 0x621B, 0x621B, 0x18FB, 0x621C, 0x621E, 0x3285,
+ 0x621F, 0x621F, 0x18FC, 0x6220, 0x6220, 0x3288, 0x6221, 0x6221, 0x18FE,
+ 0x6222, 0x6222, 0x18FD, 0x6223, 0x6223, 0x3289, 0x6224, 0x6224, 0x1900,
+ 0x6225, 0x6225, 0x18FF, 0x6226, 0x6226, 0x328A, 0x6227, 0x6227, 0x24A4,
+ 0x6228, 0x6229, 0x328B, 0x622A, 0x622A, 0x08A9, 0x622B, 0x622B, 0x328D,
+ 0x622C, 0x622C, 0x1901, 0x622D, 0x622D, 0x328E, 0x622E, 0x622E, 0x0A65,
+ 0x622F, 0x622F, 0x328F, 0x6230, 0x6230, 0x2273, 0x6231, 0x6231, 0x3290,
+ 0x6232, 0x6232, 0x21B0, 0x6233, 0x6233, 0x0544, 0x6234, 0x6234, 0x057A,
+ 0x6235, 0x6236, 0x3291, 0x6237, 0x6237, 0x07BC, 0x6238, 0x623C, 0x3293,
+ 0x623D, 0x623D, 0x19F4, 0x623E, 0x623E, 0x19F3, 0x623F, 0x623F, 0x065C,
+ 0x6240, 0x6240, 0x0DEE, 0x6241, 0x6241, 0x044B, 0x6242, 0x6242, 0x3298,
+ 0x6243, 0x6243, 0x19F5, 0x6244, 0x6246, 0x3299, 0x6247, 0x6247, 0x0D01,
+ 0x6248, 0x6249, 0x19F6, 0x624A, 0x624A, 0x329C, 0x624B, 0x624B, 0x0D6D,
+ 0x624C, 0x624C, 0x14BA, 0x624D, 0x624D, 0x048C, 0x624E, 0x624E, 0x113D,
+ 0x624F, 0x6250, 0x329D, 0x6251, 0x6251, 0x0BEA, 0x6252, 0x6252, 0x03D2,
+ 0x6253, 0x6253, 0x0575, 0x6254, 0x6254, 0x0CAE, 0x6255, 0x6257, 0x329F,
+ 0x6258, 0x6258, 0x0E81, 0x6259, 0x625A, 0x32A2, 0x625B, 0x625B, 0x0945,
+ 0x625C, 0x6262, 0x32A4, 0x6263, 0x6263, 0x0968, 0x6264, 0x6265, 0x32AB,
+ 0x6266, 0x6266, 0x0C21, 0x6267, 0x6267, 0x11B3, 0x6268, 0x6268, 0x32AD,
+ 0x6269, 0x6269, 0x0994, 0x626A, 0x626A, 0x14BB, 0x626B, 0x626B, 0x0CE1,
+ 0x626C, 0x626C, 0x1018, 0x626D, 0x626D, 0x0B65, 0x626E, 0x626E, 0x03F2,
+ 0x626F, 0x626F, 0x04DB, 0x6270, 0x6270, 0x0CA0, 0x6271, 0x6272, 0x32AE,
+ 0x6273, 0x6273, 0x03ED, 0x6274, 0x6275, 0x32B0, 0x6276, 0x6276, 0x0693,
+ 0x6277, 0x6278, 0x32B2, 0x6279, 0x6279, 0x0BBB, 0x627A, 0x627B, 0x32B4,
+ 0x627C, 0x627C, 0x0632, 0x627D, 0x627D, 0x32B6, 0x627E, 0x627E, 0x1173,
+ 0x627F, 0x627F, 0x04F5, 0x6280, 0x6280, 0x082F, 0x6281, 0x6283, 0x32B7,
+ 0x6284, 0x6284, 0x04D2, 0x6285, 0x6288, 0x32BA, 0x6289, 0x6289, 0x0920,
+ 0x628A, 0x628A, 0x03DC, 0x628B, 0x6290, 0x32BE, 0x6291, 0x6291, 0x105D,
+ 0x6292, 0x6292, 0x0D7A, 0x6293, 0x6293, 0x1202, 0x6294, 0x6294, 0x32C4,
+ 0x6295, 0x6295, 0x0E67, 0x6296, 0x6296, 0x05F5, 0x6297, 0x6297, 0x0946,
+ 0x6298, 0x6298, 0x117C, 0x6299, 0x6299, 0x32C5, 0x629A, 0x629A, 0x06A2,
+ 0x629B, 0x629B, 0x0B98, 0x629C, 0x629E, 0x32C6, 0x629F, 0x629F, 0x14BC,
+ 0x62A0, 0x62A0, 0x0966, 0x62A1, 0x62A1, 0x0A7C, 0x62A2, 0x62A2, 0x0C3D,
+ 0x62A3, 0x62A3, 0x32C9, 0x62A4, 0x62A4, 0x07B9, 0x62A5, 0x62A5, 0x0411,
+ 0x62A6, 0x62A7, 0x32CA, 0x62A8, 0x62A8, 0x0BAB, 0x62A9, 0x62AA, 0x32CC,
+ 0x62AB, 0x62AB, 0x0BBC, 0x62AC, 0x62AC, 0x0DFA, 0x62AD, 0x62B0, 0x32CE,
+ 0x62B1, 0x62B1, 0x0410, 0x62B2, 0x62B4, 0x32D2, 0x62B5, 0x62B5, 0x05B7,
+ 0x62B6, 0x62B8, 0x32D5, 0x62B9, 0x62B9, 0x0B0B, 0x62BA, 0x62BA, 0x32D8,
+ 0x62BB, 0x62BB, 0x14BD, 0x62BC, 0x62BC, 0x0FE3, 0x62BD, 0x62BD, 0x050E,
+ 0x62BE, 0x62BE, 0x32D9, 0x62BF, 0x62BF, 0x0AF7, 0x62C0, 0x62C1, 0x32DA,
+ 0x62C2, 0x62C2, 0x0694, 0x62C3, 0x62C3, 0x32DC, 0x62C4, 0x62C4, 0x11F3,
+ 0x62C5, 0x62C5, 0x0584, 0x62C6, 0x62C6, 0x04B7, 0x62C7, 0x62C7, 0x0B17,
+ 0x62C8, 0x62C8, 0x0B4C, 0x62C9, 0x62C9, 0x0998, 0x62CA, 0x62CA, 0x14BE,
+ 0x62CB, 0x62CB, 0x32DD, 0x62CC, 0x62CC, 0x03F3, 0x62CD, 0x62CD, 0x0B85,
+ 0x62CE, 0x62CE, 0x0A29, 0x62CF, 0x62CF, 0x32DE, 0x62D0, 0x62D0, 0x072E,
+ 0x62D1, 0x62D1, 0x32DF, 0x62D2, 0x62D2, 0x090B, 0x62D3, 0x62D3, 0x0E89,
+ 0x62D4, 0x62D4, 0x03D9, 0x62D5, 0x62D5, 0x32E0, 0x62D6, 0x62D6, 0x0E80,
+ 0x62D7, 0x62D7, 0x14C0, 0x62D8, 0x62D8, 0x08FF, 0x62D9, 0x62D9, 0x121B,
+ 0x62DA, 0x62DA, 0x14BF, 0x62DB, 0x62DB, 0x1171, 0x62DC, 0x62DC, 0x03E8,
+ 0x62DD, 0x62DE, 0x32E1, 0x62DF, 0x62DF, 0x0B45, 0x62E0, 0x62E1, 0x32E3,
+ 0x62E2, 0x62E2, 0x0A4A, 0x62E3, 0x62E3, 0x0863, 0x62E4, 0x62E4, 0x32E5,
+ 0x62E5, 0x62E5, 0x109A, 0x62E6, 0x62E6, 0x09A4, 0x62E7, 0x62E7, 0x0B62,
+ 0x62E8, 0x62E8, 0x046D, 0x62E9, 0x62E9, 0x1134, 0x62EA, 0x62EB, 0x32E6,
+ 0x62EC, 0x62EC, 0x0993, 0x62ED, 0x62ED, 0x0D5A, 0x62EE, 0x62EE, 0x14C1,
+ 0x62EF, 0x62EF, 0x119D, 0x62F0, 0x62F0, 0x32E8, 0x62F1, 0x62F1, 0x0709,
+ 0x62F2, 0x62F2, 0x32E9, 0x62F3, 0x62F3, 0x0C88, 0x62F4, 0x62F4, 0x0D9E,
+ 0x62F5, 0x62F5, 0x32EA, 0x62F6, 0x62F6, 0x14C3, 0x62F7, 0x62F7, 0x094A,
+ 0x62F8, 0x62FB, 0x32EB, 0x62FC, 0x62FC, 0x0BD3, 0x62FD, 0x62FD, 0x1204,
+ 0x62FE, 0x62FE, 0x0D47, 0x62FF, 0x62FF, 0x0B26, 0x6300, 0x6300, 0x32EF,
+ 0x6301, 0x6301, 0x04FB, 0x6302, 0x6302, 0x072B, 0x6303, 0x6306, 0x32F0,
+ 0x6307, 0x6307, 0x11B7, 0x6308, 0x6308, 0x194E, 0x6309, 0x6309, 0x03BF,
+ 0x630A, 0x630D, 0x32F4, 0x630E, 0x630E, 0x0973, 0x630F, 0x6310, 0x32F8,
+ 0x6311, 0x6311, 0x0E47, 0x6312, 0x6315, 0x32FA, 0x6316, 0x6316, 0x0E8B,
+ 0x6317, 0x6319, 0x32FE, 0x631A, 0x631A, 0x11BE, 0x631B, 0x631B, 0x0A75,
+ 0x631C, 0x631C, 0x3301, 0x631D, 0x631D, 0x0EDD, 0x631E, 0x631E, 0x0DF5,
+ 0x631F, 0x631F, 0x0F79, 0x6320, 0x6320, 0x0B36, 0x6321, 0x6321, 0x0593,
+ 0x6322, 0x6322, 0x14C2, 0x6323, 0x6323, 0x1196, 0x6324, 0x6324, 0x082A,
+ 0x6325, 0x6325, 0x07E8, 0x6326, 0x6327, 0x3302, 0x6328, 0x6328, 0x03AF,
+ 0x6329, 0x6329, 0x3304, 0x632A, 0x632A, 0x0B73, 0x632B, 0x632B, 0x056F,
+ 0x632C, 0x632E, 0x3305, 0x632F, 0x632F, 0x1192, 0x6330, 0x6331, 0x3308,
+ 0x6332, 0x6332, 0x194F, 0x6333, 0x6338, 0x330A, 0x6339, 0x6339, 0x14C4,
+ 0x633A, 0x633A, 0x0E57, 0x633B, 0x633C, 0x3310, 0x633D, 0x633D, 0x0E9D,
+ 0x633E, 0x633E, 0x21D1, 0x633F, 0x6341, 0x3312, 0x6342, 0x6342, 0x0EF5,
+ 0x6343, 0x6343, 0x14C6, 0x6344, 0x6344, 0x3315, 0x6345, 0x6345, 0x0E62,
+ 0x6346, 0x6346, 0x0991, 0x6347, 0x6348, 0x3316, 0x6349, 0x6349, 0x121A,
+ 0x634A, 0x634A, 0x3318, 0x634B, 0x634B, 0x14C5, 0x634C, 0x634C, 0x03D1,
+ 0x634D, 0x634D, 0x076B, 0x634E, 0x634E, 0x0D0C, 0x634F, 0x634F, 0x0B56,
+ 0x6350, 0x6350, 0x0917, 0x6351, 0x6354, 0x3319, 0x6355, 0x6355, 0x047D,
+ 0x6356, 0x635D, 0x331D, 0x635E, 0x635E, 0x09B7, 0x635F, 0x635F, 0x0DE5,
+ 0x6360, 0x6360, 0x3325, 0x6361, 0x6361, 0x0864, 0x6362, 0x6362, 0x07D0,
+ 0x6363, 0x6363, 0x0598, 0x6364, 0x6366, 0x3326, 0x6367, 0x6367, 0x0BB6,
+ 0x6368, 0x6368, 0x211C, 0x6369, 0x6369, 0x14D0, 0x636A, 0x636A, 0x3329,
+ 0x636B, 0x636B, 0x235D, 0x636C, 0x636C, 0x332A, 0x636D, 0x636D, 0x14CD,
+ 0x636E, 0x636E, 0x090C, 0x636F, 0x6370, 0x332B, 0x6371, 0x6371, 0x14C9,
+ 0x6372, 0x6372, 0x2682, 0x6373, 0x6375, 0x332D, 0x6376, 0x6376, 0x053A,
+ 0x6377, 0x6377, 0x08AE, 0x6378, 0x6379, 0x3330, 0x637A, 0x637A, 0x14CA,
+ 0x637B, 0x637B, 0x0B50, 0x637C, 0x637F, 0x3332, 0x6380, 0x6380, 0x0F33,
+ 0x6381, 0x6381, 0x3336, 0x6382, 0x6382, 0x05C1, 0x6383, 0x6383, 0x210D,
+ 0x6384, 0x6384, 0x205A, 0x6385, 0x6386, 0x3337, 0x6387, 0x6387, 0x061D,
+ 0x6388, 0x6388, 0x0D71, 0x6389, 0x6389, 0x05D5, 0x638A, 0x638A, 0x14CF,
+ 0x638B, 0x638B, 0x3339, 0x638C, 0x638C, 0x1167, 0x638D, 0x638D, 0x333A,
+ 0x638E, 0x638E, 0x14CB, 0x638F, 0x638F, 0x0E20, 0x6390, 0x6390, 0x0C1D,
+ 0x6391, 0x6391, 0x333B, 0x6392, 0x6392, 0x0B86, 0x6393, 0x6395, 0x333C,
+ 0x6396, 0x6396, 0x103B, 0x6397, 0x6397, 0x333F, 0x6398, 0x6398, 0x0921,
+ 0x6399, 0x639F, 0x3340, 0x63A0, 0x63A0, 0x0A7A, 0x63A1, 0x63A1, 0x3347,
+ 0x63A2, 0x63A2, 0x0E10, 0x63A3, 0x63A3, 0x04DD, 0x63A4, 0x63A4, 0x3348,
+ 0x63A5, 0x63A5, 0x08A4, 0x63A6, 0x63A6, 0x3349, 0x63A7, 0x63A7, 0x0965,
+ 0x63A8, 0x63A8, 0x0E77, 0x63A9, 0x63A9, 0x1003, 0x63AA, 0x63AA, 0x056E,
+ 0x63AB, 0x63AB, 0x334A, 0x63AC, 0x63AC, 0x14CE, 0x63AD, 0x63AD, 0x14C7,
+ 0x63AE, 0x63AE, 0x14D1, 0x63AF, 0x63AF, 0x334B, 0x63B0, 0x63B0, 0x1950,
+ 0x63B1, 0x63B2, 0x334C, 0x63B3, 0x63B3, 0x0A57, 0x63B4, 0x63B4, 0x14CC,
+ 0x63B5, 0x63B6, 0x334E, 0x63B7, 0x63B7, 0x11BF, 0x63B8, 0x63B8, 0x0588,
+ 0x63B9, 0x63B9, 0x3350, 0x63BA, 0x63BA, 0x04BB, 0x63BB, 0x63BB, 0x3351,
+ 0x63BC, 0x63BC, 0x14D2, 0x63BD, 0x63BD, 0x3352, 0x63BE, 0x63BE, 0x14DC,
+ 0x63BF, 0x63BF, 0x3353, 0x63C0, 0x63C0, 0x1F8D, 0x63C1, 0x63C3, 0x3354,
+ 0x63C4, 0x63C4, 0x14D7, 0x63C5, 0x63C5, 0x3357, 0x63C6, 0x63C6, 0x14DB,
+ 0x63C7, 0x63C8, 0x3358, 0x63C9, 0x63C9, 0x0CBB, 0x63CA, 0x63CC, 0x335A,
+ 0x63CD, 0x63CD, 0x123E, 0x63CE, 0x63CE, 0x14D9, 0x63CF, 0x63CF, 0x0AED,
+ 0x63D0, 0x63D0, 0x0E34, 0x63D1, 0x63D1, 0x335D, 0x63D2, 0x63D2, 0x04AC,
+ 0x63D3, 0x63D5, 0x335E, 0x63D6, 0x63D6, 0x1045, 0x63D7, 0x63D9, 0x3361,
+ 0x63DA, 0x63DA, 0x21FF, 0x63DB, 0x63DD, 0x3364, 0x63DE, 0x63DE, 0x14D8,
+ 0x63DF, 0x63DF, 0x3367, 0x63E0, 0x63E0, 0x14D5, 0x63E1, 0x63E1, 0x0EE4,
+ 0x63E2, 0x63E2, 0x3368, 0x63E3, 0x63E3, 0x052A, 0x63E4, 0x63E8, 0x3369,
+ 0x63E9, 0x63E9, 0x0938, 0x63EA, 0x63EA, 0x08ED, 0x63EB, 0x63EC, 0x336E,
+ 0x63ED, 0x63ED, 0x08A3, 0x63EE, 0x63EE, 0x1F58, 0x63EF, 0x63F1, 0x3370,
+ 0x63F2, 0x63F2, 0x14D3, 0x63F3, 0x63F3, 0x3373, 0x63F4, 0x63F4, 0x10F1,
+ 0x63F5, 0x63F5, 0x3374, 0x63F6, 0x63F6, 0x14C8, 0x63F7, 0x63F7, 0x3375,
+ 0x63F8, 0x63F8, 0x14D4, 0x63F9, 0x63FC, 0x3376, 0x63FD, 0x63FD, 0x09AA,
+ 0x63FE, 0x63FE, 0x337A, 0x63FF, 0x63FF, 0x14D6, 0x6400, 0x6400, 0x04BA,
+ 0x6401, 0x6401, 0x06E4, 0x6402, 0x6402, 0x0A4E, 0x6403, 0x6404, 0x337B,
+ 0x6405, 0x6405, 0x0892, 0x6406, 0x640A, 0x337D, 0x640B, 0x640B, 0x14DF,
+ 0x640C, 0x640C, 0x14E2, 0x640D, 0x640D, 0x215B, 0x640E, 0x640E, 0x3382,
+ 0x640F, 0x640F, 0x0472, 0x6410, 0x6410, 0x0527, 0x6411, 0x6412, 0x3383,
+ 0x6413, 0x6413, 0x056D, 0x6414, 0x6414, 0x0CDF, 0x6415, 0x6416, 0x3385,
+ 0x6417, 0x6417, 0x1EB6, 0x6418, 0x641A, 0x3387, 0x641B, 0x641B, 0x14E0,
+ 0x641C, 0x641C, 0x0DC6, 0x641D, 0x641D, 0x338A, 0x641E, 0x641E, 0x06DE,
+ 0x641F, 0x641F, 0x338B, 0x6420, 0x6420, 0x14E1, 0x6421, 0x6421, 0x14E4,
+ 0x6422, 0x6425, 0x338C, 0x6426, 0x6426, 0x14E3, 0x6427, 0x6429, 0x3390,
+ 0x642A, 0x642A, 0x0E15, 0x642B, 0x642B, 0x3393, 0x642C, 0x642C, 0x03EC,
+ 0x642D, 0x642D, 0x0571, 0x642E, 0x6433, 0x3394, 0x6434, 0x6434, 0x1736,
+ 0x6435, 0x6435, 0x339A, 0x6436, 0x6436, 0x20DB, 0x6437, 0x6439, 0x339B,
+ 0x643A, 0x643A, 0x0F7A, 0x643B, 0x643C, 0x339E, 0x643D, 0x643D, 0x04B2,
+ 0x643E, 0x643E, 0x33A0, 0x643F, 0x643F, 0x1951, 0x6440, 0x6440, 0x33A1,
+ 0x6441, 0x6441, 0x14DE, 0x6442, 0x6443, 0x33A2, 0x6444, 0x6444, 0x0D1C,
+ 0x6445, 0x6445, 0x14DD, 0x6446, 0x6446, 0x03E5, 0x6447, 0x6447, 0x1028,
+ 0x6448, 0x6448, 0x0460, 0x6449, 0x6449, 0x33A4, 0x644A, 0x644A, 0x0E02,
+ 0x644B, 0x6450, 0x33A5, 0x6451, 0x6451, 0x2360, 0x6452, 0x6452, 0x14DA,
+ 0x6453, 0x6453, 0x33AB, 0x6454, 0x6454, 0x0D99, 0x6455, 0x6457, 0x33AC,
+ 0x6458, 0x6458, 0x114B, 0x6459, 0x645B, 0x33AF, 0x645C, 0x645C, 0x2361,
+ 0x645D, 0x645D, 0x33B2, 0x645E, 0x645E, 0x14E5, 0x645F, 0x645F, 0x2040,
+ 0x6460, 0x6466, 0x33B3, 0x6467, 0x6467, 0x0560, 0x6468, 0x6468, 0x33BA,
+ 0x6469, 0x6469, 0x0B09, 0x646A, 0x646C, 0x33BB, 0x646D, 0x646D, 0x14E7,
+ 0x646E, 0x646E, 0x33BE, 0x646F, 0x646F, 0x228E, 0x6470, 0x6472, 0x33BF,
+ 0x6473, 0x6473, 0x1FDF, 0x6474, 0x6475, 0x33C2, 0x6476, 0x6476, 0x235E,
+ 0x6477, 0x6477, 0x33C4, 0x6478, 0x6479, 0x0B03, 0x647A, 0x647A, 0x14E9,
+ 0x647B, 0x647B, 0x1E6A, 0x647C, 0x6481, 0x33C5, 0x6482, 0x6482, 0x0A15,
+ 0x6483, 0x6483, 0x33CB, 0x6484, 0x6484, 0x14E6, 0x6485, 0x6485, 0x091E,
+ 0x6486, 0x6486, 0x33CC, 0x6487, 0x6487, 0x0BD1, 0x6488, 0x6488, 0x2002,
+ 0x6489, 0x6490, 0x33CD, 0x6491, 0x6491, 0x04EA, 0x6492, 0x6492, 0x0CD1,
+ 0x6493, 0x6493, 0x2093, 0x6494, 0x6494, 0x33D5, 0x6495, 0x6495, 0x0DAF,
+ 0x6496, 0x6496, 0x14E8, 0x6497, 0x6498, 0x33D6, 0x6499, 0x6499, 0x14EC,
+ 0x649A, 0x649D, 0x33D8, 0x649E, 0x649E, 0x120F, 0x649F, 0x649F, 0x235F,
+ 0x64A0, 0x64A2, 0x33DC, 0x64A3, 0x64A3, 0x1EAC, 0x64A4, 0x64A4, 0x04DC,
+ 0x64A5, 0x64A5, 0x1E54, 0x64A6, 0x64A8, 0x33DF, 0x64A9, 0x64A9, 0x0A0C,
+ 0x64AA, 0x64AA, 0x33E2, 0x64AB, 0x64AB, 0x1F08, 0x64AC, 0x64AC, 0x0C48,
+ 0x64AD, 0x64AD, 0x046C, 0x64AE, 0x64AE, 0x056C, 0x64AF, 0x64AF, 0x33E3,
+ 0x64B0, 0x64B0, 0x1208, 0x64B1, 0x64B1, 0x33E4, 0x64B2, 0x64B2, 0x20C0,
+ 0x64B3, 0x64B3, 0x2362, 0x64B4, 0x64B4, 0x33E5, 0x64B5, 0x64B5, 0x0B4F,
+ 0x64B6, 0x64B6, 0x33E6, 0x64B7, 0x64B8, 0x14EA, 0x64B9, 0x64B9, 0x33E7,
+ 0x64BA, 0x64BA, 0x14ED, 0x64BB, 0x64BB, 0x2160, 0x64BC, 0x64BC, 0x076A,
+ 0x64BD, 0x64BD, 0x33E8, 0x64BE, 0x64BE, 0x219D, 0x64BF, 0x64BF, 0x1F8E,
+ 0x64C0, 0x64C0, 0x14EE, 0x64C1, 0x64C1, 0x222D, 0x64C2, 0x64C2, 0x09C9,
+ 0x64C3, 0x64C3, 0x33E9, 0x64C4, 0x64C4, 0x2047, 0x64C5, 0x64C5, 0x0CFC,
+ 0x64C6, 0x64C6, 0x33EA, 0x64C7, 0x64C7, 0x2262, 0x64C8, 0x64C9, 0x33EB,
+ 0x64CA, 0x64CA, 0x1F67, 0x64CB, 0x64CB, 0x1EB2, 0x64CC, 0x64CC, 0x33ED,
+ 0x64CD, 0x64CD, 0x04A0, 0x64CE, 0x64CE, 0x0C63, 0x64CF, 0x64CF, 0x33EE,
+ 0x64D0, 0x64D0, 0x14EF, 0x64D1, 0x64D1, 0x33EF, 0x64D2, 0x64D2, 0x0C59,
+ 0x64D3, 0x64D3, 0x33F0, 0x64D4, 0x64D4, 0x1EA9, 0x64D5, 0x64D6, 0x33F1,
+ 0x64D7, 0x64D7, 0x14F0, 0x64D8, 0x64D8, 0x1952, 0x64D9, 0x64D9, 0x33F3,
+ 0x64DA, 0x64DA, 0x1FCC, 0x64DB, 0x64DD, 0x33F4, 0x64DE, 0x64DE, 0x0DC8,
+ 0x64DF, 0x64DF, 0x33F7, 0x64E0, 0x64E0, 0x1F72, 0x64E1, 0x64E1, 0x33F8,
+ 0x64E2, 0x64E2, 0x14F2, 0x64E3, 0x64E3, 0x33F9, 0x64E4, 0x64E4, 0x14F1,
+ 0x64E5, 0x64E5, 0x33FA, 0x64E6, 0x64E6, 0x0488, 0x64E7, 0x64EB, 0x33FB,
+ 0x64EC, 0x64EC, 0x2098, 0x64ED, 0x64EE, 0x3400, 0x64EF, 0x64EF, 0x1E52,
+ 0x64F0, 0x64F0, 0x20A4, 0x64F1, 0x64F1, 0x1F1C, 0x64F2, 0x64F2, 0x228F,
+ 0x64F3, 0x64F3, 0x3402, 0x64F4, 0x64F4, 0x1FED, 0x64F5, 0x64F6, 0x3403,
+ 0x64F7, 0x64F7, 0x2365, 0x64F8, 0x64F9, 0x3405, 0x64FA, 0x64FA, 0x1E2D,
+ 0x64FB, 0x64FB, 0x2152, 0x64FC, 0x64FC, 0x2366, 0x64FD, 0x64FD, 0x3407,
+ 0x64FE, 0x64FE, 0x20FA, 0x64FF, 0x64FF, 0x3408, 0x6500, 0x6500, 0x0B8B,
+ 0x6501, 0x6503, 0x3409, 0x6504, 0x6504, 0x2363, 0x6505, 0x6505, 0x340C,
+ 0x6506, 0x6506, 0x209A, 0x6507, 0x6508, 0x340D, 0x6509, 0x6509, 0x14F3,
+ 0x650A, 0x650E, 0x340F, 0x650F, 0x650F, 0x203C, 0x6510, 0x6511, 0x3414,
+ 0x6512, 0x6512, 0x111F, 0x6513, 0x6513, 0x3416, 0x6514, 0x6514, 0x1FF6,
+ 0x6515, 0x6515, 0x3417, 0x6516, 0x6516, 0x2364, 0x6517, 0x6517, 0x3418,
+ 0x6518, 0x6518, 0x0C9C, 0x6519, 0x6519, 0x1E69, 0x651A, 0x651A, 0x3419,
+ 0x651B, 0x651B, 0x2367, 0x651C, 0x651C, 0x341A, 0x651D, 0x651D, 0x211D,
+ 0x651E, 0x6521, 0x341B, 0x6522, 0x6522, 0x2259, 0x6523, 0x6523, 0x2056,
+ 0x6524, 0x6524, 0x2163, 0x6525, 0x6525, 0x14F4, 0x6526, 0x6529, 0x341F,
+ 0x652A, 0x652A, 0x1FA9, 0x652B, 0x652B, 0x091F, 0x652C, 0x652C, 0x1FFC,
+ 0x652D, 0x652D, 0x3423, 0x652E, 0x652E, 0x14F5, 0x652F, 0x652F, 0x11A6,
+ 0x6530, 0x6533, 0x3424, 0x6534, 0x6534, 0x1909, 0x6535, 0x6535, 0x1966,
+ 0x6536, 0x6536, 0x0D6C, 0x6537, 0x6537, 0x3428, 0x6538, 0x6538, 0x12B2,
+ 0x6539, 0x6539, 0x06BF, 0x653A, 0x653A, 0x3429, 0x653B, 0x653B, 0x06FE,
+ 0x653C, 0x653D, 0x342A, 0x653E, 0x653E, 0x0662, 0x653F, 0x653F, 0x119F,
+ 0x6540, 0x6544, 0x342C, 0x6545, 0x6545, 0x0723, 0x6546, 0x6547, 0x3431,
+ 0x6548, 0x6548, 0x0F72, 0x6549, 0x6549, 0x1CCB, 0x654A, 0x654B, 0x3433,
+ 0x654C, 0x654C, 0x05B1, 0x654D, 0x654E, 0x3435, 0x654F, 0x654F, 0x0AF9,
+ 0x6550, 0x6550, 0x3437, 0x6551, 0x6551, 0x08F7, 0x6552, 0x6554, 0x3438,
+ 0x6555, 0x6555, 0x1967, 0x6556, 0x6556, 0x03C8, 0x6557, 0x6557, 0x1E2E,
+ 0x6558, 0x6558, 0x343B, 0x6559, 0x6559, 0x089D, 0x655A, 0x655A, 0x343C,
+ 0x655B, 0x655B, 0x09FB, 0x655C, 0x655C, 0x343D, 0x655D, 0x655D, 0x043F,
+ 0x655E, 0x655E, 0x04CD, 0x655F, 0x6561, 0x343E, 0x6562, 0x6562, 0x06CD,
+ 0x6563, 0x6563, 0x0CDB, 0x6564, 0x6565, 0x3441, 0x6566, 0x6566, 0x0617,
+ 0x6567, 0x656A, 0x3443, 0x656B, 0x656B, 0x1968, 0x656C, 0x656C, 0x08E3,
+ 0x656D, 0x656F, 0x3447, 0x6570, 0x6570, 0x0D94, 0x6571, 0x6571, 0x344A,
+ 0x6572, 0x6572, 0x0C40, 0x6573, 0x6573, 0x344B, 0x6574, 0x6574, 0x119C,
+ 0x6575, 0x6575, 0x1EBC, 0x6576, 0x6576, 0x344C, 0x6577, 0x6577, 0x0690,
+ 0x6578, 0x6578, 0x2142, 0x6579, 0x6581, 0x344D, 0x6582, 0x6582, 0x201E,
+ 0x6583, 0x6583, 0x1E43, 0x6584, 0x6586, 0x3456, 0x6587, 0x6587, 0x0ED3,
+ 0x6588, 0x658A, 0x3459, 0x658B, 0x658B, 0x114C, 0x658C, 0x658C, 0x045C,
+ 0x658D, 0x658F, 0x345C, 0x6590, 0x6590, 0x19C1, 0x6591, 0x6591, 0x03EA,
+ 0x6592, 0x6592, 0x345F, 0x6593, 0x6593, 0x19C3, 0x6594, 0x6594, 0x3460,
+ 0x6595, 0x6595, 0x24D4, 0x6596, 0x6596, 0x3461, 0x6597, 0x6597, 0x05F6,
+ 0x6598, 0x6598, 0x3462, 0x6599, 0x6599, 0x0A18, 0x659A, 0x659A, 0x3463,
+ 0x659B, 0x659B, 0x1D56, 0x659C, 0x659C, 0x0F7C, 0x659D, 0x659E, 0x3464,
+ 0x659F, 0x659F, 0x1186, 0x65A0, 0x65A0, 0x3466, 0x65A1, 0x65A1, 0x0EE2,
+ 0x65A2, 0x65A3, 0x3467, 0x65A4, 0x65A4, 0x08C0, 0x65A5, 0x65A5, 0x0507,
+ 0x65A6, 0x65A6, 0x3469, 0x65A7, 0x65A7, 0x06A6, 0x65A8, 0x65A8, 0x346A,
+ 0x65A9, 0x65A9, 0x1157, 0x65AA, 0x65AA, 0x346B, 0x65AB, 0x65AB, 0x1A29,
+ 0x65AC, 0x65AC, 0x226F, 0x65AD, 0x65AD, 0x060E, 0x65AE, 0x65AE, 0x346C,
+ 0x65AF, 0x65AF, 0x0DAE, 0x65B0, 0x65B0, 0x0F8D, 0x65B1, 0x65B6, 0x346D,
+ 0x65B7, 0x65B7, 0x1ED7, 0x65B8, 0x65B8, 0x3473, 0x65B9, 0x65B9, 0x065A,
+ 0x65BA, 0x65BB, 0x3474, 0x65BC, 0x65BC, 0x19C4, 0x65BD, 0x65BD, 0x0D40,
+ 0x65BE, 0x65C0, 0x3476, 0x65C1, 0x65C1, 0x0B95, 0x65C2, 0x65C2, 0x3479,
+ 0x65C3, 0x65C3, 0x19C7, 0x65C4, 0x65C4, 0x19C6, 0x65C5, 0x65C5, 0x0A6A,
+ 0x65C6, 0x65C6, 0x19C5, 0x65C7, 0x65CA, 0x347A, 0x65CB, 0x65CB, 0x0FC8,
+ 0x65CC, 0x65CC, 0x19C8, 0x65CD, 0x65CD, 0x347E, 0x65CE, 0x65CE, 0x19C9,
+ 0x65CF, 0x65CF, 0x1242, 0x65D0, 0x65D1, 0x347F, 0x65D2, 0x65D2, 0x19CA,
+ 0x65D3, 0x65D5, 0x3481, 0x65D6, 0x65D6, 0x19CB, 0x65D7, 0x65D7, 0x0C0B,
+ 0x65D8, 0x65DF, 0x3484, 0x65E0, 0x65E0, 0x0EED, 0x65E1, 0x65E1, 0x348C,
+ 0x65E2, 0x65E2, 0x083B, 0x65E3, 0x65E4, 0x348D, 0x65E5, 0x65E5, 0x0CB0,
+ 0x65E6, 0x65E6, 0x058A, 0x65E7, 0x65E7, 0x08F8, 0x65E8, 0x65E8, 0x11BB,
+ 0x65E9, 0x65E9, 0x112A, 0x65EA, 0x65EB, 0x348F, 0x65EC, 0x65EC, 0x0FD7,
+ 0x65ED, 0x65ED, 0x0FBC, 0x65EE, 0x65F0, 0x190A, 0x65F1, 0x65F1, 0x076C,
+ 0x65F2, 0x65F5, 0x3491, 0x65F6, 0x65F6, 0x0D48, 0x65F7, 0x65F7, 0x0982,
+ 0x65F8, 0x65F9, 0x3495, 0x65FA, 0x65FA, 0x0EAB, 0x65FB, 0x65FF, 0x3497,
+ 0x6600, 0x6600, 0x1912, 0x6601, 0x6601, 0x349C, 0x6602, 0x6602, 0x03C5,
+ 0x6603, 0x6603, 0x1910, 0x6604, 0x6605, 0x349D, 0x6606, 0x6606, 0x0990,
+ 0x6607, 0x6609, 0x349F, 0x660A, 0x660A, 0x190D, 0x660B, 0x660B, 0x34A2,
+ 0x660C, 0x660C, 0x04C4, 0x660D, 0x660D, 0x34A3, 0x660E, 0x660E, 0x0AFC,
+ 0x660F, 0x660F, 0x07FD, 0x6610, 0x6612, 0x34A4, 0x6613, 0x6613, 0x105E,
+ 0x6614, 0x6614, 0x0F03, 0x6615, 0x6615, 0x1911, 0x6616, 0x6618, 0x34A7,
+ 0x6619, 0x6619, 0x190E, 0x661A, 0x661C, 0x34AA, 0x661D, 0x661D, 0x1915,
+ 0x661E, 0x661E, 0x34AD, 0x661F, 0x661F, 0x0F92, 0x6620, 0x6620, 0x1098,
+ 0x6621, 0x6624, 0x34AE, 0x6625, 0x6625, 0x053D, 0x6626, 0x6626, 0x34B2,
+ 0x6627, 0x6627, 0x0AC6, 0x6628, 0x6628, 0x124F, 0x6629, 0x662C, 0x34B3,
+ 0x662D, 0x662D, 0x1172, 0x662E, 0x662E, 0x34B7, 0x662F, 0x662F, 0x0D5E,
+ 0x6630, 0x6630, 0x34B8, 0x6631, 0x6631, 0x1917, 0x6632, 0x6633, 0x34B9,
+ 0x6634, 0x6634, 0x1916, 0x6635, 0x6635, 0x1919, 0x6636, 0x6636, 0x1918,
+ 0x6637, 0x663B, 0x34BB, 0x663C, 0x663C, 0x11E6, 0x663D, 0x663D, 0x34C0,
+ 0x663E, 0x663E, 0x0F41, 0x663F, 0x6640, 0x34C1, 0x6641, 0x6641, 0x191D,
+ 0x6642, 0x6642, 0x212D, 0x6643, 0x6643, 0x07E3, 0x6644, 0x664A, 0x34C3,
+ 0x664B, 0x664B, 0x08CB, 0x664C, 0x664C, 0x0D07, 0x664D, 0x664E, 0x34CA,
+ 0x664F, 0x664F, 0x191E, 0x6650, 0x6651, 0x34CC, 0x6652, 0x6652, 0x0CF2,
+ 0x6653, 0x6653, 0x0F6B, 0x6654, 0x6654, 0x191C, 0x6655, 0x6655, 0x1111,
+ 0x6656, 0x6656, 0x191F, 0x6657, 0x6657, 0x1921, 0x6658, 0x6659, 0x34CE,
+ 0x665A, 0x665A, 0x0E9E, 0x665B, 0x665C, 0x34D0, 0x665D, 0x665D, 0x229B,
+ 0x665E, 0x665E, 0x34D2, 0x665F, 0x665F, 0x191B, 0x6660, 0x6660, 0x34D3,
+ 0x6661, 0x6661, 0x1920, 0x6662, 0x6663, 0x34D4, 0x6664, 0x6664, 0x0EFD,
+ 0x6665, 0x6665, 0x34D6, 0x6666, 0x6666, 0x07F3, 0x6667, 0x6667, 0x34D7,
+ 0x6668, 0x6668, 0x04E4, 0x6669, 0x666D, 0x34D8, 0x666E, 0x666E, 0x0BF4,
+ 0x666F, 0x666F, 0x08DF, 0x6670, 0x6670, 0x0F09, 0x6671, 0x6673, 0x34DD,
+ 0x6674, 0x6674, 0x0C64, 0x6675, 0x6675, 0x34E0, 0x6676, 0x6676, 0x08D6,
+ 0x6677, 0x6677, 0x1922, 0x6678, 0x6679, 0x34E1, 0x667A, 0x667A, 0x11C6,
+ 0x667B, 0x667D, 0x34E3, 0x667E, 0x667E, 0x0A09, 0x667F, 0x6681, 0x34E6,
+ 0x6682, 0x6682, 0x1120, 0x6683, 0x6683, 0x34E9, 0x6684, 0x6684, 0x1923,
+ 0x6685, 0x6686, 0x34EA, 0x6687, 0x6687, 0x0F2B, 0x6688, 0x6688, 0x2256,
+ 0x6689, 0x6689, 0x24A8, 0x668A, 0x668B, 0x34EC, 0x668C, 0x668C, 0x1924,
+ 0x668D, 0x6690, 0x34EE, 0x6691, 0x6691, 0x0D85, 0x6692, 0x6695, 0x34F2,
+ 0x6696, 0x6696, 0x0B70, 0x6697, 0x6697, 0x03C0, 0x6698, 0x669C, 0x34F6,
+ 0x669D, 0x669D, 0x1926, 0x669E, 0x66A1, 0x34FB, 0x66A2, 0x66A2, 0x1E79,
+ 0x66A3, 0x66A6, 0x34FF, 0x66A7, 0x66A7, 0x1925, 0x66A8, 0x66A8, 0x1CDD,
+ 0x66A9, 0x66AA, 0x3503, 0x66AB, 0x66AB, 0x225A, 0x66AC, 0x66AD, 0x3505,
+ 0x66AE, 0x66AE, 0x0B1D, 0x66AF, 0x66B3, 0x3507, 0x66B4, 0x66B4, 0x0412,
+ 0x66B5, 0x66B8, 0x350C, 0x66B9, 0x66B9, 0x175B, 0x66BA, 0x66BD, 0x3510,
+ 0x66BE, 0x66BE, 0x1927, 0x66BF, 0x66C3, 0x3514, 0x66C4, 0x66C4, 0x24A7,
+ 0x66C5, 0x66C5, 0x3519, 0x66C6, 0x66C6, 0x2686, 0x66C7, 0x66C7, 0x24A6,
+ 0x66C8, 0x66C8, 0x351A, 0x66C9, 0x66C9, 0x21CE, 0x66CA, 0x66D5, 0x351B,
+ 0x66D6, 0x66D6, 0x24A9, 0x66D7, 0x66D8, 0x3527, 0x66D9, 0x66D9, 0x0D86,
+ 0x66DA, 0x66DA, 0x3529, 0x66DB, 0x66DC, 0x1928, 0x66DD, 0x66DD, 0x0BF7,
+ 0x66DE, 0x66DF, 0x352A, 0x66E0, 0x66E0, 0x1FE7, 0x66E1, 0x66E5, 0x352C,
+ 0x66E6, 0x66E6, 0x192A, 0x66E7, 0x66E8, 0x3531, 0x66E9, 0x66E9, 0x192B,
+ 0x66EA, 0x66EB, 0x3533, 0x66EC, 0x66EC, 0x2112, 0x66ED, 0x66EF, 0x3535,
+ 0x66F0, 0x66F0, 0x10FE, 0x66F1, 0x66F1, 0x3538, 0x66F2, 0x66F2, 0x0C77,
+ 0x66F3, 0x66F3, 0x103E, 0x66F4, 0x66F4, 0x06F7, 0x66F5, 0x66F6, 0x3539,
+ 0x66F7, 0x66F7, 0x1914, 0x66F8, 0x66F8, 0x213C, 0x66F9, 0x66F9, 0x04A3,
+ 0x66FA, 0x66FB, 0x353B, 0x66FC, 0x66FC, 0x0AA3, 0x66FD, 0x66FD, 0x353D,
+ 0x66FE, 0x66FE, 0x113B, 0x66FF, 0x66FF, 0x0E39, 0x6700, 0x6700, 0x124B,
+ 0x6701, 0x6702, 0x353E, 0x6703, 0x6703, 0x1F5C, 0x6704, 0x6707, 0x3540,
+ 0x6708, 0x6708, 0x1105, 0x6709, 0x6709, 0x10B5, 0x670A, 0x670A, 0x1973,
+ 0x670B, 0x670B, 0x0BB4, 0x670C, 0x670C, 0x3544, 0x670D, 0x670D, 0x069B,
+ 0x670E, 0x670F, 0x3545, 0x6710, 0x6710, 0x1984, 0x6711, 0x6713, 0x3547,
+ 0x6714, 0x6714, 0x0DAC, 0x6715, 0x6715, 0x198E, 0x6716, 0x6716, 0x354A,
+ 0x6717, 0x6717, 0x09B5, 0x6718, 0x671A, 0x354B, 0x671B, 0x671B, 0x0EAC,
+ 0x671C, 0x671C, 0x354E, 0x671D, 0x671D, 0x04D4, 0x671E, 0x671E, 0x354F,
+ 0x671F, 0x671F, 0x0BF9, 0x6720, 0x6725, 0x3550, 0x6726, 0x6726, 0x19AC,
+ 0x6727, 0x6727, 0x24C4, 0x6728, 0x6728, 0x0B21, 0x6729, 0x6729, 0x3556,
+ 0x672A, 0x672A, 0x0EC3, 0x672B, 0x672B, 0x0B0C, 0x672C, 0x672C, 0x0427,
+ 0x672D, 0x672D, 0x1140, 0x672E, 0x672E, 0x3557, 0x672F, 0x672F, 0x0D8C,
+ 0x6730, 0x6730, 0x3558, 0x6731, 0x6731, 0x11EB, 0x6732, 0x6733, 0x3559,
+ 0x6734, 0x6734, 0x0BF2, 0x6735, 0x6735, 0x0623, 0x6736, 0x6739, 0x355B,
+ 0x673A, 0x673A, 0x080F, 0x673B, 0x673C, 0x355F, 0x673D, 0x673D, 0x0FAB,
+ 0x673E, 0x673F, 0x3561, 0x6740, 0x6740, 0x0CEA, 0x6741, 0x6741, 0x3563,
+ 0x6742, 0x6742, 0x1116, 0x6743, 0x6743, 0x0C83, 0x6744, 0x6745, 0x3564,
+ 0x6746, 0x6746, 0x06C6, 0x6747, 0x6747, 0x3566, 0x6748, 0x6748, 0x1854,
+ 0x6749, 0x6749, 0x0CF5, 0x674A, 0x674B, 0x3567, 0x674C, 0x674C, 0x1851,
+ 0x674D, 0x674D, 0x3569, 0x674E, 0x674E, 0x09D9, 0x674F, 0x674F, 0x0F9E,
+ 0x6750, 0x6750, 0x048B, 0x6751, 0x6751, 0x0568, 0x6752, 0x6752, 0x356A,
+ 0x6753, 0x6753, 0x1852, 0x6754, 0x6755, 0x356B, 0x6756, 0x6756, 0x1169,
+ 0x6757, 0x675B, 0x356D, 0x675C, 0x675C, 0x0604, 0x675D, 0x675D, 0x3572,
+ 0x675E, 0x675E, 0x1853, 0x675F, 0x675F, 0x0D8F, 0x6760, 0x6760, 0x06D7,
+ 0x6761, 0x6761, 0x0E48, 0x6762, 0x6764, 0x3573, 0x6765, 0x6765, 0x099F,
+ 0x6766, 0x6767, 0x3576, 0x6768, 0x6768, 0x1017, 0x6769, 0x6769, 0x1855,
+ 0x676A, 0x676A, 0x1858, 0x676B, 0x676C, 0x3578, 0x676D, 0x676D, 0x0773,
+ 0x676E, 0x676E, 0x357A, 0x676F, 0x676F, 0x0416, 0x6770, 0x6770, 0x08AD,
+ 0x6771, 0x6771, 0x1ECC, 0x6772, 0x6772, 0x190F, 0x6773, 0x6773, 0x1859,
+ 0x6774, 0x6774, 0x357B, 0x6775, 0x6775, 0x185C, 0x6776, 0x6776, 0x357C,
+ 0x6777, 0x6777, 0x1861, 0x6778, 0x677B, 0x357D, 0x677C, 0x677C, 0x1862,
+ 0x677D, 0x677D, 0x3581, 0x677E, 0x677E, 0x0DBE, 0x677F, 0x677F, 0x03F0,
+ 0x6780, 0x6780, 0x3582, 0x6781, 0x6781, 0x081E, 0x6782, 0x6783, 0x3583,
+ 0x6784, 0x6784, 0x0712, 0x6785, 0x6786, 0x3585, 0x6787, 0x6787, 0x1857,
+ 0x6788, 0x6788, 0x3587, 0x6789, 0x6789, 0x0EA8, 0x678A, 0x678A, 0x3588,
+ 0x678B, 0x678B, 0x1860, 0x678C, 0x678F, 0x3589, 0x6790, 0x6790, 0x0F05,
+ 0x6791, 0x6794, 0x358D, 0x6795, 0x6795, 0x118E, 0x6796, 0x6796, 0x3591,
+ 0x6797, 0x6797, 0x0A1F, 0x6798, 0x6798, 0x185A, 0x6799, 0x6799, 0x3592,
+ 0x679A, 0x679A, 0x0ABB, 0x679B, 0x679B, 0x3593, 0x679C, 0x679C, 0x0754,
+ 0x679D, 0x679D, 0x11A5, 0x679E, 0x679E, 0x185E, 0x679F, 0x67A1, 0x3594,
+ 0x67A2, 0x67A2, 0x0D77, 0x67A3, 0x67A3, 0x1129, 0x67A4, 0x67A4, 0x3597,
+ 0x67A5, 0x67A5, 0x1856, 0x67A6, 0x67A6, 0x3598, 0x67A7, 0x67A7, 0x185B,
+ 0x67A8, 0x67A8, 0x185D, 0x67A9, 0x67A9, 0x3599, 0x67AA, 0x67AA, 0x0C36,
+ 0x67AB, 0x67AB, 0x0680, 0x67AC, 0x67AC, 0x359A, 0x67AD, 0x67AD, 0x185F,
+ 0x67AE, 0x67AE, 0x359B, 0x67AF, 0x67AF, 0x096A, 0x67B0, 0x67B0, 0x1868,
+ 0x67B1, 0x67B2, 0x359C, 0x67B3, 0x67B3, 0x186D, 0x67B4, 0x67B4, 0x359E,
+ 0x67B5, 0x67B5, 0x186B, 0x67B6, 0x67B6, 0x084F, 0x67B7, 0x67B7, 0x0842,
+ 0x67B8, 0x67B8, 0x1871, 0x67B9, 0x67C0, 0x359F, 0x67C1, 0x67C1, 0x1874,
+ 0x67C2, 0x67C2, 0x35A7, 0x67C3, 0x67C3, 0x1870, 0x67C4, 0x67C4, 0x0463,
+ 0x67C5, 0x67CE, 0x35A8, 0x67CF, 0x67CF, 0x03E3, 0x67D0, 0x67D0, 0x0B16,
+ 0x67D1, 0x67D1, 0x06C7, 0x67D2, 0x67D2, 0x0C01, 0x67D3, 0x67D3, 0x0C99,
+ 0x67D4, 0x67D4, 0x0CBC, 0x67D5, 0x67D7, 0x35B2, 0x67D8, 0x67D8, 0x1865,
+ 0x67D9, 0x67D9, 0x186A, 0x67DA, 0x67DA, 0x186C, 0x67DB, 0x67DB, 0x35B5,
+ 0x67DC, 0x67DC, 0x074A, 0x67DD, 0x67DD, 0x186E, 0x67DE, 0x67DE, 0x1252,
+ 0x67DF, 0x67DF, 0x35B6, 0x67E0, 0x67E0, 0x0B5E, 0x67E1, 0x67E1, 0x35B7,
+ 0x67E2, 0x67E2, 0x1872, 0x67E3, 0x67E4, 0x35B8, 0x67E5, 0x67E5, 0x04B0,
+ 0x67E6, 0x67E8, 0x35BA, 0x67E9, 0x67E9, 0x1867, 0x67EA, 0x67EB, 0x35BD,
+ 0x67EC, 0x67EC, 0x0860, 0x67ED, 0x67EE, 0x35BF, 0x67EF, 0x67EF, 0x094F,
+ 0x67F0, 0x67F0, 0x1863, 0x67F1, 0x67F1, 0x11F8, 0x67F2, 0x67F2, 0x35C1,
+ 0x67F3, 0x67F3, 0x0A41, 0x67F4, 0x67F4, 0x04B8, 0x67F5, 0x67FC, 0x35C2,
+ 0x67FD, 0x67FD, 0x1875, 0x67FE, 0x67FE, 0x35CA, 0x67FF, 0x67FF, 0x0D58,
+ 0x6800, 0x6800, 0x186F, 0x6801, 0x6804, 0x35CB, 0x6805, 0x6805, 0x1145,
+ 0x6806, 0x6806, 0x35CF, 0x6807, 0x6807, 0x0453, 0x6808, 0x6808, 0x115C,
+ 0x6809, 0x6809, 0x1864, 0x680A, 0x680A, 0x1866, 0x680B, 0x680B, 0x05EF,
+ 0x680C, 0x680C, 0x1869, 0x680D, 0x680D, 0x35D0, 0x680E, 0x680E, 0x1873,
+ 0x680F, 0x680F, 0x09A3, 0x6810, 0x6810, 0x35D1, 0x6811, 0x6811, 0x0D8E,
+ 0x6812, 0x6812, 0x35D2, 0x6813, 0x6813, 0x0D9D, 0x6814, 0x6815, 0x35D3,
+ 0x6816, 0x6816, 0x0BFB, 0x6817, 0x6817, 0x09E0, 0x6818, 0x681C, 0x35D5,
+ 0x681D, 0x681D, 0x187F, 0x681E, 0x6820, 0x35DA, 0x6821, 0x6821, 0x0F6E,
+ 0x6822, 0x6828, 0x35DD, 0x6829, 0x6829, 0x1888, 0x682A, 0x682A, 0x11E9,
+ 0x682B, 0x6831, 0x35E4, 0x6832, 0x6833, 0x1876, 0x6834, 0x6836, 0x35EB,
+ 0x6837, 0x6837, 0x1022, 0x6838, 0x6838, 0x0782, 0x6839, 0x6839, 0x06F4,
+ 0x683A, 0x683B, 0x35EE, 0x683C, 0x683C, 0x06EC, 0x683D, 0x683D, 0x1117,
+ 0x683E, 0x683E, 0x1885, 0x683F, 0x683F, 0x35F0, 0x6840, 0x6840, 0x1884,
+ 0x6841, 0x6841, 0x1882, 0x6842, 0x6842, 0x0749, 0x6843, 0x6843, 0x0E25,
+ 0x6844, 0x6844, 0x187C, 0x6845, 0x6845, 0x0EB5, 0x6846, 0x6846, 0x097F,
+ 0x6847, 0x6847, 0x35F1, 0x6848, 0x6848, 0x03C3, 0x6849, 0x6849, 0x1887,
+ 0x684A, 0x684A, 0x1886, 0x684B, 0x684B, 0x35F2, 0x684C, 0x684C, 0x121D,
+ 0x684D, 0x684D, 0x35F3, 0x684E, 0x684E, 0x187A, 0x684F, 0x684F, 0x35F4,
+ 0x6850, 0x6850, 0x0E5A, 0x6851, 0x6851, 0x0CDC, 0x6852, 0x6852, 0x35F5,
+ 0x6853, 0x6853, 0x07CD, 0x6854, 0x6854, 0x08AC, 0x6855, 0x6855, 0x1880,
+ 0x6856, 0x685F, 0x35F6, 0x6860, 0x6861, 0x1878, 0x6862, 0x6862, 0x187B,
+ 0x6863, 0x6863, 0x0596, 0x6864, 0x6864, 0x187D, 0x6865, 0x6865, 0x0C42,
+ 0x6866, 0x6866, 0x1881, 0x6867, 0x6867, 0x1883, 0x6868, 0x6868, 0x0881,
+ 0x6869, 0x6869, 0x120B, 0x686A, 0x686A, 0x3600, 0x686B, 0x686B, 0x188E,
+ 0x686C, 0x6873, 0x3601, 0x6874, 0x6874, 0x188B, 0x6875, 0x6875, 0x3609,
+ 0x6876, 0x6876, 0x0E61, 0x6877, 0x6877, 0x188C, 0x6878, 0x6880, 0x360A,
+ 0x6881, 0x6881, 0x0A03, 0x6882, 0x6882, 0x3613, 0x6883, 0x6883, 0x187E,
+ 0x6884, 0x6884, 0x3614, 0x6885, 0x6885, 0x0ABC, 0x6886, 0x6886, 0x03FB,
+ 0x6887, 0x688E, 0x3615, 0x688F, 0x688F, 0x188A, 0x6890, 0x6892, 0x361D,
+ 0x6893, 0x6893, 0x188D, 0x6894, 0x6896, 0x3620, 0x6897, 0x6897, 0x06FC,
+ 0x6898, 0x6898, 0x246A, 0x6899, 0x689C, 0x3623, 0x689D, 0x689D, 0x2175,
+ 0x689E, 0x689E, 0x3627, 0x689F, 0x689F, 0x246D, 0x68A0, 0x68A1, 0x3628,
+ 0x68A2, 0x68A2, 0x0D0B, 0x68A3, 0x68A5, 0x362A, 0x68A6, 0x68A6, 0x0AD3,
+ 0x68A7, 0x68A7, 0x0EEF, 0x68A8, 0x68A8, 0x09D1, 0x68A9, 0x68AC, 0x362D,
+ 0x68AD, 0x68AD, 0x0DE8, 0x68AE, 0x68AE, 0x3631, 0x68AF, 0x68AF, 0x0E30,
+ 0x68B0, 0x68B0, 0x0F80, 0x68B1, 0x68B2, 0x3632, 0x68B3, 0x68B3, 0x0D78,
+ 0x68B4, 0x68B4, 0x3634, 0x68B5, 0x68B5, 0x1889, 0x68B6, 0x68BF, 0x3635,
+ 0x68C0, 0x68C0, 0x085F, 0x68C1, 0x68C1, 0x363F, 0x68C2, 0x68C2, 0x188F,
+ 0x68C3, 0x68C8, 0x3640, 0x68C9, 0x68C9, 0x0AE3, 0x68CA, 0x68CA, 0x3646,
+ 0x68CB, 0x68CB, 0x0C04, 0x68CC, 0x68CC, 0x3647, 0x68CD, 0x68CD, 0x0750,
+ 0x68CE, 0x68D1, 0x3648, 0x68D2, 0x68D2, 0x03FF, 0x68D3, 0x68D4, 0x364C,
+ 0x68D5, 0x68D5, 0x1235, 0x68D6, 0x68D6, 0x246B, 0x68D7, 0x68D7, 0x225F,
+ 0x68D8, 0x68D8, 0x081F, 0x68D9, 0x68D9, 0x364E, 0x68DA, 0x68DA, 0x0BB0,
+ 0x68DB, 0x68DE, 0x364F, 0x68DF, 0x68DF, 0x1ECE, 0x68E0, 0x68E0, 0x0E17,
+ 0x68E1, 0x68E2, 0x3653, 0x68E3, 0x68E3, 0x189A, 0x68E4, 0x68E6, 0x3655,
+ 0x68E7, 0x68E7, 0x2272, 0x68E8, 0x68ED, 0x3658, 0x68EE, 0x68EE, 0x0CE6,
+ 0x68EF, 0x68EF, 0x365E, 0x68F0, 0x68F0, 0x1896, 0x68F1, 0x68F1, 0x09CD,
+ 0x68F2, 0x68F4, 0x365F, 0x68F5, 0x68F5, 0x0950, 0x68F6, 0x68F8, 0x3662,
+ 0x68F9, 0x68F9, 0x1894, 0x68FA, 0x68FA, 0x0730, 0x68FB, 0x68FB, 0x3665,
+ 0x68FC, 0x68FC, 0x1891, 0x68FD, 0x68FF, 0x3666, 0x6900, 0x6900, 0x3669,
+ 0x6901, 0x6901, 0x1898, 0x6902, 0x6904, 0x366A, 0x6905, 0x6905, 0x1055,
+ 0x6906, 0x690A, 0x366D, 0x690B, 0x690B, 0x1897, 0x690C, 0x690C, 0x3672,
+ 0x690D, 0x690D, 0x11B1, 0x690E, 0x690E, 0x1212, 0x690F, 0x690F, 0x2473,
+ 0x6910, 0x6910, 0x189B, 0x6911, 0x6911, 0x3673, 0x6912, 0x6912, 0x0888,
+ 0x6913, 0x691E, 0x3674, 0x691F, 0x6920, 0x1892, 0x6921, 0x6923, 0x3680,
+ 0x6924, 0x6924, 0x1895, 0x6925, 0x692C, 0x3683, 0x692D, 0x692D, 0x0E87,
+ 0x692E, 0x692F, 0x368B, 0x6930, 0x6930, 0x1033, 0x6931, 0x6933, 0x368D,
+ 0x6934, 0x6934, 0x18A6, 0x6935, 0x6938, 0x3690, 0x6939, 0x6939, 0x189D,
+ 0x693A, 0x693C, 0x3694, 0x693D, 0x693D, 0x052D, 0x693E, 0x693E, 0x3697,
+ 0x693F, 0x693F, 0x053E, 0x6940, 0x6941, 0x3698, 0x6942, 0x6942, 0x189F,
+ 0x6943, 0x6949, 0x369A, 0x694A, 0x694A, 0x21FE, 0x694B, 0x6952, 0x36A1,
+ 0x6953, 0x6953, 0x1EFE, 0x6954, 0x6954, 0x0F73, 0x6955, 0x6956, 0x36A9,
+ 0x6957, 0x6957, 0x1899, 0x6958, 0x6959, 0x36AB, 0x695A, 0x695A, 0x0523,
+ 0x695B, 0x695C, 0x36AD, 0x695D, 0x695D, 0x18A0, 0x695E, 0x695E, 0x09CE,
+ 0x695F, 0x695F, 0x36AF, 0x6960, 0x6960, 0x189E, 0x6961, 0x6962, 0x36B0,
+ 0x6963, 0x6963, 0x18AD, 0x6964, 0x6965, 0x36B2, 0x6966, 0x6966, 0x18AC,
+ 0x6967, 0x6967, 0x36B4, 0x6968, 0x6968, 0x2475, 0x6969, 0x696A, 0x36B5,
+ 0x696B, 0x696B, 0x18A2, 0x696C, 0x696C, 0x36B7, 0x696D, 0x696D, 0x220A,
+ 0x696E, 0x696E, 0x1890, 0x696F, 0x6970, 0x36B8, 0x6971, 0x6971, 0x189C,
+ 0x6972, 0x6974, 0x36BA, 0x6975, 0x6975, 0x1F6F, 0x6976, 0x6976, 0x36BD,
+ 0x6977, 0x6977, 0x0939, 0x6978, 0x6978, 0x18A5, 0x6979, 0x6979, 0x18AE,
+ 0x697A, 0x697B, 0x36BE, 0x697C, 0x697C, 0x0A4C, 0x697D, 0x697F, 0x36C0,
+ 0x6980, 0x6980, 0x18A3, 0x6981, 0x6981, 0x36C3, 0x6982, 0x6982, 0x06C0,
+ 0x6983, 0x6983, 0x36C4, 0x6984, 0x6984, 0x18A1, 0x6985, 0x6985, 0x36C5,
+ 0x6986, 0x6986, 0x10C1, 0x6987, 0x6988, 0x18A8, 0x6989, 0x6989, 0x18AB,
+ 0x698A, 0x698C, 0x36C6, 0x698D, 0x698D, 0x18BB, 0x698E, 0x6993, 0x36C9,
+ 0x6994, 0x6994, 0x09B1, 0x6995, 0x6995, 0x18B9, 0x6996, 0x6997, 0x36CF,
+ 0x6998, 0x6998, 0x18A4, 0x6999, 0x699A, 0x36D1, 0x699B, 0x699B, 0x18AF,
+ 0x699C, 0x699C, 0x03FC, 0x699D, 0x69A6, 0x36D3, 0x69A7, 0x69A7, 0x18B0,
+ 0x69A8, 0x69A8, 0x1146, 0x69A9, 0x69A9, 0x36DD, 0x69AA, 0x69AA, 0x2468,
+ 0x69AB, 0x69AB, 0x18B2, 0x69AC, 0x69AC, 0x36DE, 0x69AD, 0x69AD, 0x18B3,
+ 0x69AE, 0x69AE, 0x2100, 0x69AF, 0x69B0, 0x36DF, 0x69B1, 0x69B1, 0x18B5,
+ 0x69B2, 0x69B3, 0x36E1, 0x69B4, 0x69B4, 0x0A3A, 0x69B5, 0x69B6, 0x36E3,
+ 0x69B7, 0x69B7, 0x0C91, 0x69B8, 0x69BA, 0x36E5, 0x69BB, 0x69BB, 0x18B1,
+ 0x69BC, 0x69BE, 0x36E8, 0x69BF, 0x69BF, 0x2476, 0x69C0, 0x69C0, 0x36EB,
+ 0x69C1, 0x69C1, 0x18B6, 0x69C2, 0x69C9, 0x36EC, 0x69CA, 0x69CA, 0x18B7,
+ 0x69CB, 0x69CB, 0x1F27, 0x69CC, 0x69CC, 0x18A7, 0x69CD, 0x69CD, 0x20D7,
+ 0x69CE, 0x69CE, 0x18AA, 0x69CF, 0x69CF, 0x36F4, 0x69D0, 0x69D0, 0x07C6,
+ 0x69D1, 0x69D3, 0x36F5, 0x69D4, 0x69D4, 0x18B4, 0x69D5, 0x69DA, 0x36F8,
+ 0x69DB, 0x69DB, 0x086A, 0x69DC, 0x69DE, 0x36FE, 0x69DF, 0x69DF, 0x18B8,
+ 0x69E0, 0x69E0, 0x18BA, 0x69E1, 0x69E6, 0x3701, 0x69E7, 0x69E7, 0x247C,
+ 0x69E8, 0x69EC, 0x3707, 0x69ED, 0x69ED, 0x18BE, 0x69EE, 0x69F1, 0x370C,
+ 0x69F2, 0x69F2, 0x18C2, 0x69F3, 0x69F3, 0x1FA1, 0x69F4, 0x69FC, 0x3710,
+ 0x69FD, 0x69FD, 0x04A2, 0x69FE, 0x69FE, 0x3719, 0x69FF, 0x69FF, 0x18BC,
+ 0x6A00, 0x6A00, 0x371A, 0x6A01, 0x6A01, 0x22AA, 0x6A02, 0x6A02, 0x2005,
+ 0x6A03, 0x6A04, 0x371B, 0x6A05, 0x6A05, 0x246C, 0x6A06, 0x6A09, 0x371D,
+ 0x6A0A, 0x6A0A, 0x064B, 0x6A0B, 0x6A12, 0x3721, 0x6A13, 0x6A13, 0x203E,
+ 0x6A14, 0x6A16, 0x3729, 0x6A17, 0x6A18, 0x18BF, 0x6A19, 0x6A19, 0x1E4C,
+ 0x6A1A, 0x6A1D, 0x372C, 0x6A1E, 0x6A1E, 0x213A, 0x6A1F, 0x6A1F, 0x1162,
+ 0x6A20, 0x6A20, 0x3730, 0x6A21, 0x6A21, 0x0B06, 0x6A22, 0x6A22, 0x3731,
+ 0x6A23, 0x6A23, 0x2204, 0x6A24, 0x6A27, 0x3732, 0x6A28, 0x6A28, 0x18CC,
+ 0x6A29, 0x6A29, 0x3736, 0x6A2A, 0x6A2A, 0x0798, 0x6A2B, 0x6A2E, 0x3737,
+ 0x6A2F, 0x6A2F, 0x18BD, 0x6A30, 0x6A30, 0x373B, 0x6A31, 0x6A31, 0x1088,
+ 0x6A32, 0x6A34, 0x373C, 0x6A35, 0x6A35, 0x18C8, 0x6A36, 0x6A37, 0x373F,
+ 0x6A38, 0x6A38, 0x20C3, 0x6A39, 0x6A39, 0x2140, 0x6A3A, 0x6A3A, 0x2477,
+ 0x6A3B, 0x6A3C, 0x3741, 0x6A3D, 0x6A3D, 0x18CB, 0x6A3E, 0x6A3E, 0x18C4,
+ 0x6A3F, 0x6A43, 0x3743, 0x6A44, 0x6A44, 0x18C3, 0x6A45, 0x6A46, 0x3748,
+ 0x6A47, 0x6A47, 0x0C3E, 0x6A48, 0x6A48, 0x2474, 0x6A49, 0x6A4A, 0x374A,
+ 0x6A4B, 0x6A4B, 0x20DD, 0x6A4C, 0x6A4F, 0x374C, 0x6A50, 0x6A50, 0x18C6,
+ 0x6A51, 0x6A57, 0x3750, 0x6A58, 0x6A58, 0x18CD, 0x6A59, 0x6A59, 0x04ED,
+ 0x6A5A, 0x6A5A, 0x3757, 0x6A5B, 0x6A5B, 0x18C7, 0x6A5C, 0x6A5E, 0x3758,
+ 0x6A5F, 0x6A5F, 0x1F68, 0x6A60, 0x6A60, 0x375B, 0x6A61, 0x6A61, 0x0F5D,
+ 0x6A62, 0x6A62, 0x2185, 0x6A63, 0x6A64, 0x375C, 0x6A65, 0x6A65, 0x18C1,
+ 0x6A66, 0x6A70, 0x375E, 0x6A71, 0x6A71, 0x051C, 0x6A72, 0x6A78, 0x3769,
+ 0x6A79, 0x6A79, 0x18CA, 0x6A7A, 0x6A7B, 0x3770, 0x6A7C, 0x6A7C, 0x18CE,
+ 0x6A7D, 0x6A7F, 0x3772, 0x6A80, 0x6A80, 0x0E07, 0x6A81, 0x6A83, 0x3775,
+ 0x6A84, 0x6A84, 0x0F1A, 0x6A85, 0x6A88, 0x3778, 0x6A89, 0x6A89, 0x2472,
+ 0x6A8A, 0x6A8D, 0x377C, 0x6A8E, 0x6A8E, 0x18C9, 0x6A8F, 0x6A8F, 0x3780,
+ 0x6A90, 0x6A90, 0x18D0, 0x6A91, 0x6A91, 0x18CF, 0x6A92, 0x6A93, 0x3781,
+ 0x6A94, 0x6A94, 0x1EB5, 0x6A95, 0x6A96, 0x3783, 0x6A97, 0x6A97, 0x18D2,
+ 0x6A98, 0x6A9B, 0x3785, 0x6A9C, 0x6A9C, 0x2478, 0x6A9D, 0x6A9F, 0x3789,
+ 0x6AA0, 0x6AA0, 0x18C5, 0x6AA1, 0x6AA1, 0x378C, 0x6AA2, 0x6AA2, 0x1F8B,
+ 0x6AA3, 0x6AA3, 0x2484, 0x6AA4, 0x6AA8, 0x378D, 0x6AA9, 0x6AA9, 0x18D1,
+ 0x6AAA, 0x6AAA, 0x3792, 0x6AAB, 0x6AAB, 0x18D3, 0x6AAC, 0x6AAC, 0x0ACF,
+ 0x6AAD, 0x6AAE, 0x3793, 0x6AAF, 0x6AAF, 0x2699, 0x6AB0, 0x6AB2, 0x3795,
+ 0x6AB3, 0x6AB3, 0x2482, 0x6AB4, 0x6AB7, 0x3798, 0x6AB8, 0x6AB8, 0x20A1,
+ 0x6AB9, 0x6ABA, 0x379C, 0x6ABB, 0x6ABB, 0x1F92, 0x6ABC, 0x6AC2, 0x379E,
+ 0x6AC3, 0x6AC3, 0x1F38, 0x6AC4, 0x6AD2, 0x37A5, 0x6AD3, 0x6AD3, 0x2485,
+ 0x6AD4, 0x6AD9, 0x37B4, 0x6ADA, 0x6ADA, 0x2480, 0x6ADB, 0x6ADB, 0x246E,
+ 0x6ADC, 0x6ADC, 0x37BA, 0x6ADD, 0x6ADD, 0x247B, 0x6ADE, 0x6ADE, 0x2486,
+ 0x6ADF, 0x6ADF, 0x2471, 0x6AE0, 0x6AE6, 0x37BB, 0x6AE7, 0x6AE7, 0x2483,
+ 0x6AE8, 0x6AE8, 0x2470, 0x6AE9, 0x6AE9, 0x37C2, 0x6AEA, 0x6AEA, 0x2469,
+ 0x6AEB, 0x6AEB, 0x37C3, 0x6AEC, 0x6AEC, 0x247F, 0x6AED, 0x6AF2, 0x37C4,
+ 0x6AF3, 0x6AF3, 0x246F, 0x6AF4, 0x6AF7, 0x37CA, 0x6AF8, 0x6AF8, 0x2481,
+ 0x6AF9, 0x6AFA, 0x37CE, 0x6AFB, 0x6AFB, 0x2220, 0x6AFC, 0x6AFF, 0x37D0,
+ 0x6B00, 0x6B03, 0x37D4, 0x6B04, 0x6B04, 0x1FF5, 0x6B05, 0x6B09, 0x37D8,
+ 0x6B0A, 0x6B0A, 0x20F4, 0x6B0B, 0x6B0E, 0x37DD, 0x6B0F, 0x6B0F, 0x247D,
+ 0x6B10, 0x6B11, 0x37E1, 0x6B12, 0x6B12, 0x2479, 0x6B13, 0x6B15, 0x37E3,
+ 0x6B16, 0x6B16, 0x247E, 0x6B17, 0x6B1D, 0x37E6, 0x6B1E, 0x6B1E, 0x247A,
+ 0x6B1F, 0x6B1F, 0x37ED, 0x6B20, 0x6B20, 0x0C34, 0x6B21, 0x6B21, 0x0551,
+ 0x6B22, 0x6B22, 0x07CB, 0x6B23, 0x6B23, 0x0F8B, 0x6B24, 0x6B24, 0x19B1,
+ 0x6B25, 0x6B26, 0x37EE, 0x6B27, 0x6B27, 0x0B78, 0x6B28, 0x6B31, 0x37F0,
+ 0x6B32, 0x6B32, 0x10E0, 0x6B33, 0x6B36, 0x37FA, 0x6B37, 0x6B37, 0x19B2,
+ 0x6B38, 0x6B38, 0x37FE, 0x6B39, 0x6B39, 0x19B3, 0x6B3A, 0x6B3A, 0x0BFA,
+ 0x6B3B, 0x6B3C, 0x37FF, 0x6B3D, 0x6B3D, 0x20E3, 0x6B3E, 0x6B3E, 0x097B,
+ 0x6B3F, 0x6B42, 0x3801, 0x6B43, 0x6B43, 0x19B4, 0x6B44, 0x6B45, 0x3805,
+ 0x6B46, 0x6B46, 0x19B5, 0x6B47, 0x6B47, 0x0F75, 0x6B48, 0x6B48, 0x3807,
+ 0x6B49, 0x6B49, 0x0C35, 0x6B4A, 0x6B4B, 0x3808, 0x6B4C, 0x6B4C, 0x06E3,
+ 0x6B4D, 0x6B4F, 0x380A, 0x6B50, 0x6B50, 0x20AD, 0x6B51, 0x6B58, 0x380D,
+ 0x6B59, 0x6B59, 0x19B6, 0x6B5A, 0x6B5E, 0x3815, 0x6B5F, 0x6B5F, 0x24CB,
+ 0x6B60, 0x6B60, 0x381A, 0x6B61, 0x6B61, 0x1F53, 0x6B62, 0x6B62, 0x11B8,
+ 0x6B63, 0x6B63, 0x119E, 0x6B64, 0x6B64, 0x054E, 0x6B65, 0x6B65, 0x0484,
+ 0x6B66, 0x6B66, 0x0EF3, 0x6B67, 0x6B67, 0x0C06, 0x6B68, 0x6B69, 0x381B,
+ 0x6B6A, 0x6B6A, 0x0E92, 0x6B6B, 0x6B71, 0x381D, 0x6B72, 0x6B72, 0x2159,
+ 0x6B73, 0x6B76, 0x3824, 0x6B77, 0x6B77, 0x2013, 0x6B78, 0x6B78, 0x1F33,
+ 0x6B79, 0x6B79, 0x0578, 0x6B7A, 0x6B7A, 0x3828, 0x6B7B, 0x6B7B, 0x0DB5,
+ 0x6B7C, 0x6B7C, 0x0852, 0x6B7D, 0x6B80, 0x3829, 0x6B81, 0x6B82, 0x18D6,
+ 0x6B83, 0x6B83, 0x1013, 0x6B84, 0x6B84, 0x18D9, 0x6B85, 0x6B85, 0x382D,
+ 0x6B86, 0x6B86, 0x057C, 0x6B87, 0x6B87, 0x18D8, 0x6B88, 0x6B88, 0x382E,
+ 0x6B89, 0x6B89, 0x0FDC, 0x6B8A, 0x6B8A, 0x0D79, 0x6B8B, 0x6B8B, 0x0497,
+ 0x6B8C, 0x6B8C, 0x382F, 0x6B8D, 0x6B8D, 0x18DC, 0x6B8E, 0x6B91, 0x3830,
+ 0x6B92, 0x6B93, 0x18DA, 0x6B94, 0x6B95, 0x3834, 0x6B96, 0x6B96, 0x11B2,
+ 0x6B97, 0x6B97, 0x3836, 0x6B98, 0x6B98, 0x1E5C, 0x6B99, 0x6B99, 0x3837,
+ 0x6B9A, 0x6B9B, 0x18DD, 0x6B9C, 0x6B9D, 0x3838, 0x6B9E, 0x6B9E, 0x2488,
+ 0x6B9F, 0x6BA0, 0x383A, 0x6BA1, 0x6BA1, 0x18DF, 0x6BA2, 0x6BA3, 0x383C,
+ 0x6BA4, 0x6BA4, 0x2487, 0x6BA5, 0x6BA9, 0x383E, 0x6BAA, 0x6BAA, 0x18E0,
+ 0x6BAB, 0x6BAB, 0x248A, 0x6BAC, 0x6BAD, 0x3843, 0x6BAE, 0x6BAE, 0x2489,
+ 0x6BAF, 0x6BAF, 0x248B, 0x6BB0, 0x6BB1, 0x3845, 0x6BB2, 0x6BB2, 0x1F83,
+ 0x6BB3, 0x6BB3, 0x19BD, 0x6BB4, 0x6BB4, 0x0B7A, 0x6BB5, 0x6BB5, 0x060D,
+ 0x6BB6, 0x6BB6, 0x3847, 0x6BB7, 0x6BB7, 0x107A, 0x6BB8, 0x6BB9, 0x3848,
+ 0x6BBA, 0x6BBA, 0x210F, 0x6BBB, 0x6BBB, 0x1FDB, 0x6BBC, 0x6BBE, 0x384A,
+ 0x6BBF, 0x6BBF, 0x05CF, 0x6BC0, 0x6BC0, 0x384D, 0x6BC1, 0x6BC1, 0x07EE,
+ 0x6BC2, 0x6BC2, 0x19BF, 0x6BC3, 0x6BC4, 0x384E, 0x6BC5, 0x6BC5, 0x106A,
+ 0x6BC6, 0x6BC6, 0x20AF, 0x6BC7, 0x6BCA, 0x3850, 0x6BCB, 0x6BCB, 0x0EF2,
+ 0x6BCC, 0x6BCC, 0x3854, 0x6BCD, 0x6BCD, 0x0B1B, 0x6BCE, 0x6BCE, 0x3855,
+ 0x6BCF, 0x6BCF, 0x0AC4, 0x6BD0, 0x6BD1, 0x3856, 0x6BD2, 0x6BD2, 0x05FD,
+ 0x6BD3, 0x6BD3, 0x126F, 0x6BD4, 0x6BD4, 0x0431, 0x6BD5, 0x6BD5, 0x0438,
+ 0x6BD6, 0x6BD6, 0x043A, 0x6BD7, 0x6BD7, 0x0BBF, 0x6BD8, 0x6BD8, 0x3858,
+ 0x6BD9, 0x6BD9, 0x0439, 0x6BDA, 0x6BDA, 0x3859, 0x6BDB, 0x6BDB, 0x0AB0,
+ 0x6BDC, 0x6BE0, 0x385A, 0x6BE1, 0x6BE1, 0x1152, 0x6BE2, 0x6BE9, 0x385F,
+ 0x6BEA, 0x6BEA, 0x1954, 0x6BEB, 0x6BEB, 0x0778, 0x6BEC, 0x6BEE, 0x3867,
+ 0x6BEF, 0x6BEF, 0x0E0D, 0x6BF0, 0x6BF2, 0x386A, 0x6BF3, 0x6BF3, 0x1955,
+ 0x6BF4, 0x6BF4, 0x386D, 0x6BF5, 0x6BF5, 0x1957, 0x6BF6, 0x6BF8, 0x386E,
+ 0x6BF9, 0x6BF9, 0x1958, 0x6BFA, 0x6BFC, 0x3871, 0x6BFD, 0x6BFD, 0x1956,
+ 0x6BFE, 0x6BFE, 0x3874, 0x6BFF, 0x6BFF, 0x24C0, 0x6C00, 0x6C04, 0x3875,
+ 0x6C05, 0x6C05, 0x1959, 0x6C06, 0x6C06, 0x195B, 0x6C07, 0x6C07, 0x195A,
+ 0x6C08, 0x6C08, 0x226D, 0x6C09, 0x6C0B, 0x387A, 0x6C0C, 0x6C0C, 0x24C1,
+ 0x6C0D, 0x6C0D, 0x195C, 0x6C0E, 0x6C0E, 0x387D, 0x6C0F, 0x6C0F, 0x0D66,
+ 0x6C10, 0x6C10, 0x126B, 0x6C11, 0x6C11, 0x0AF6, 0x6C12, 0x6C12, 0x387E,
+ 0x6C13, 0x6C13, 0x0AAA, 0x6C14, 0x6C14, 0x0C17, 0x6C15, 0x6C15, 0x195D,
+ 0x6C16, 0x6C16, 0x0B2D, 0x6C17, 0x6C17, 0x387F, 0x6C18, 0x6C1A, 0x195E,
+ 0x6C1B, 0x6C1B, 0x0672, 0x6C1C, 0x6C1E, 0x3880, 0x6C1F, 0x6C1F, 0x0697,
+ 0x6C20, 0x6C20, 0x3883, 0x6C21, 0x6C21, 0x1961, 0x6C22, 0x6C22, 0x0C5F,
+ 0x6C23, 0x6C23, 0x20CA, 0x6C24, 0x6C24, 0x1963, 0x6C25, 0x6C25, 0x3884,
+ 0x6C26, 0x6C26, 0x075B, 0x6C27, 0x6C27, 0x101E, 0x6C28, 0x6C28, 0x03BC,
+ 0x6C29, 0x6C29, 0x1962, 0x6C2A, 0x6C2A, 0x1964, 0x6C2B, 0x6C2B, 0x20E7,
+ 0x6C2C, 0x6C2C, 0x24C2, 0x6C2D, 0x6C2D, 0x3885, 0x6C2E, 0x6C2E, 0x058B,
+ 0x6C2F, 0x6C2F, 0x0A6F, 0x6C30, 0x6C30, 0x0C65, 0x6C31, 0x6C31, 0x3886,
+ 0x6C32, 0x6C32, 0x1965, 0x6C33, 0x6C33, 0x3887, 0x6C34, 0x6C34, 0x0DA3,
+ 0x6C35, 0x6C35, 0x169F, 0x6C36, 0x6C37, 0x3888, 0x6C38, 0x6C38, 0x10A5,
+ 0x6C39, 0x6C3C, 0x388A, 0x6C3D, 0x6C3D, 0x12EF, 0x6C3E, 0x6C3F, 0x388E,
+ 0x6C40, 0x6C40, 0x0E52, 0x6C41, 0x6C41, 0x11AC, 0x6C42, 0x6C42, 0x0C70,
+ 0x6C43, 0x6C45, 0x3890, 0x6C46, 0x6C46, 0x12F4, 0x6C47, 0x6C47, 0x07F8,
+ 0x6C48, 0x6C48, 0x3893, 0x6C49, 0x6C49, 0x0771, 0x6C4A, 0x6C4A, 0x16A2,
+ 0x6C4B, 0x6C4F, 0x3894, 0x6C50, 0x6C50, 0x0F18, 0x6C51, 0x6C53, 0x3899,
+ 0x6C54, 0x6C54, 0x16A0, 0x6C55, 0x6C55, 0x0D00, 0x6C56, 0x6C56, 0x389C,
+ 0x6C57, 0x6C57, 0x0770, 0x6C58, 0x6C5A, 0x389D, 0x6C5B, 0x6C5B, 0x0FDD,
+ 0x6C5C, 0x6C5C, 0x16A1, 0x6C5D, 0x6C5D, 0x0CC5, 0x6C5E, 0x6C5E, 0x0708,
+ 0x6C5F, 0x6C5F, 0x087E, 0x6C60, 0x6C60, 0x04FD, 0x6C61, 0x6C61, 0x0EEA,
+ 0x6C62, 0x6C63, 0x38A0, 0x6C64, 0x6C64, 0x0E13, 0x6C65, 0x6C67, 0x38A2,
+ 0x6C68, 0x6C69, 0x16A8, 0x6C6A, 0x6C6A, 0x0EA5, 0x6C6B, 0x6C6F, 0x38A5,
+ 0x6C70, 0x6C70, 0x0E00, 0x6C71, 0x6C71, 0x38AA, 0x6C72, 0x6C72, 0x0826,
+ 0x6C73, 0x6C73, 0x38AB, 0x6C74, 0x6C74, 0x16AA, 0x6C75, 0x6C75, 0x38AC,
+ 0x6C76, 0x6C76, 0x16AB, 0x6C77, 0x6C78, 0x38AD, 0x6C79, 0x6C79, 0x0FA5,
+ 0x6C7A, 0x6C7C, 0x38AF, 0x6C7D, 0x6C7D, 0x0C1A, 0x6C7E, 0x6C7E, 0x0677,
+ 0x6C7F, 0x6C80, 0x38B2, 0x6C81, 0x6C81, 0x0C5C, 0x6C82, 0x6C82, 0x1051,
+ 0x6C83, 0x6C83, 0x0EE5, 0x6C84, 0x6C84, 0x38B4, 0x6C85, 0x6C85, 0x16A4,
+ 0x6C86, 0x6C86, 0x16AC, 0x6C87, 0x6C87, 0x38B5, 0x6C88, 0x6C88, 0x0D2B,
+ 0x6C89, 0x6C89, 0x04E6, 0x6C8A, 0x6C8B, 0x38B6, 0x6C8C, 0x6C8C, 0x16A7,
+ 0x6C8D, 0x6C8E, 0x38B8, 0x6C8F, 0x6C8F, 0x0C02, 0x6C90, 0x6C90, 0x16A5,
+ 0x6C91, 0x6C92, 0x38BA, 0x6C93, 0x6C93, 0x1A1F, 0x6C94, 0x6C94, 0x16A6,
+ 0x6C95, 0x6C98, 0x38BC, 0x6C99, 0x6C99, 0x0CEC, 0x6C9A, 0x6C9A, 0x38C0,
+ 0x6C9B, 0x6C9B, 0x0BA7, 0x6C9C, 0x6C9E, 0x38C1, 0x6C9F, 0x6C9F, 0x070E,
+ 0x6CA0, 0x6CA0, 0x38C4, 0x6CA1, 0x6CA1, 0x0AC0, 0x6CA2, 0x6CA2, 0x38C5,
+ 0x6CA3, 0x6CA3, 0x16A3, 0x6CA4, 0x6CA4, 0x0B7E, 0x6CA5, 0x6CA5, 0x09ED,
+ 0x6CA6, 0x6CA6, 0x0A80, 0x6CA7, 0x6CA7, 0x049E, 0x6CA8, 0x6CA8, 0x38C6,
+ 0x6CA9, 0x6CA9, 0x16AD, 0x6CAA, 0x6CAA, 0x07BB, 0x6CAB, 0x6CAB, 0x0B10,
+ 0x6CAC, 0x6CAC, 0x38C7, 0x6CAD, 0x6CAD, 0x16B0, 0x6CAE, 0x6CAE, 0x0909,
+ 0x6CAF, 0x6CB0, 0x38C8, 0x6CB1, 0x6CB1, 0x16BB, 0x6CB2, 0x6CB2, 0x16B5,
+ 0x6CB3, 0x6CB3, 0x078A, 0x6CB4, 0x6CB7, 0x38CA, 0x6CB8, 0x6CB8, 0x066D,
+ 0x6CB9, 0x6CB9, 0x10B2, 0x6CBA, 0x6CBA, 0x38CE, 0x6CBB, 0x6CBB, 0x11CD,
+ 0x6CBC, 0x6CBC, 0x1174, 0x6CBD, 0x6CBD, 0x071A, 0x6CBE, 0x6CBE, 0x1155,
+ 0x6CBF, 0x6CBF, 0x1001, 0x6CC0, 0x6CC3, 0x38CF, 0x6CC4, 0x6CC4, 0x0F84,
+ 0x6CC5, 0x6CC5, 0x0C73, 0x6CC6, 0x6CC8, 0x38D3, 0x6CC9, 0x6CC9, 0x0C85,
+ 0x6CCA, 0x6CCA, 0x047B, 0x6CCB, 0x6CCB, 0x38D6, 0x6CCC, 0x6CCC, 0x0ADF,
+ 0x6CCD, 0x6CCF, 0x38D7, 0x6CD0, 0x6CD0, 0x16AE, 0x6CD1, 0x6CD2, 0x38DA,
+ 0x6CD3, 0x6CD3, 0x16BC, 0x6CD4, 0x6CD4, 0x16AF, 0x6CD5, 0x6CD5, 0x0645,
+ 0x6CD6, 0x6CD6, 0x16B7, 0x6CD7, 0x6CD7, 0x16B4, 0x6CD8, 0x6CDA, 0x38DC,
+ 0x6CDB, 0x6CDB, 0x0657, 0x6CDC, 0x6CDD, 0x38DF, 0x6CDE, 0x6CDE, 0x0B63,
+ 0x6CDF, 0x6CDF, 0x38E1, 0x6CE0, 0x6CE0, 0x16B6, 0x6CE1, 0x6CE1, 0x0B9E,
+ 0x6CE2, 0x6CE2, 0x046F, 0x6CE3, 0x6CE3, 0x0C1B, 0x6CE4, 0x6CE4, 0x38E2,
+ 0x6CE5, 0x6CE5, 0x0B43, 0x6CE6, 0x6CE7, 0x38E3, 0x6CE8, 0x6CE8, 0x11FF,
+ 0x6CE9, 0x6CE9, 0x38E5, 0x6CEA, 0x6CEA, 0x09CC, 0x6CEB, 0x6CEB, 0x16B9,
+ 0x6CEC, 0x6CED, 0x38E6, 0x6CEE, 0x6CEE, 0x16BA, 0x6CEF, 0x6CEF, 0x16BD,
+ 0x6CF0, 0x6CF0, 0x0DFC, 0x6CF1, 0x6CF1, 0x16B3, 0x6CF2, 0x6CF2, 0x38E8,
+ 0x6CF3, 0x6CF3, 0x10A3, 0x6CF4, 0x6CF4, 0x38E9, 0x6CF5, 0x6CF5, 0x042C,
+ 0x6CF6, 0x6CF6, 0x1A20, 0x6CF7, 0x6CF8, 0x16B1, 0x6CF9, 0x6CF9, 0x38EA,
+ 0x6CFA, 0x6CFA, 0x16B8, 0x6CFB, 0x6CFB, 0x0F85, 0x6CFC, 0x6CFC, 0x0BE2,
+ 0x6CFD, 0x6CFD, 0x1136, 0x6CFE, 0x6CFE, 0x16BE, 0x6CFF, 0x6CFF, 0x38EB,
+ 0x6D00, 0x6D00, 0x38EC, 0x6D01, 0x6D01, 0x08B1, 0x6D02, 0x6D03, 0x38ED,
+ 0x6D04, 0x6D04, 0x16C5, 0x6D05, 0x6D06, 0x38EF, 0x6D07, 0x6D07, 0x16C4,
+ 0x6D08, 0x6D0A, 0x38F1, 0x6D0B, 0x6D0B, 0x101C, 0x6D0C, 0x6D0C, 0x16C1,
+ 0x6D0D, 0x6D0D, 0x38F4, 0x6D0E, 0x6D0E, 0x16C7, 0x6D0F, 0x6D11, 0x38F5,
+ 0x6D12, 0x6D12, 0x0CD2, 0x6D13, 0x6D16, 0x38F8, 0x6D17, 0x6D17, 0x0F21,
+ 0x6D18, 0x6D18, 0x38FC, 0x6D19, 0x6D19, 0x16C6, 0x6D1A, 0x6D1A, 0x16CC,
+ 0x6D1B, 0x6D1B, 0x0A8C, 0x6D1C, 0x6D1D, 0x38FD, 0x6D1E, 0x6D1E, 0x05F3,
+ 0x6D1F, 0x6D24, 0x38FF, 0x6D25, 0x6D25, 0x08C3, 0x6D26, 0x6D26, 0x3905,
+ 0x6D27, 0x6D27, 0x16C0, 0x6D28, 0x6D29, 0x3906, 0x6D2A, 0x6D2A, 0x07A0,
+ 0x6D2B, 0x6D2B, 0x16C8, 0x6D2C, 0x6D2D, 0x3908, 0x6D2E, 0x6D2E, 0x16CA,
+ 0x6D2F, 0x6D30, 0x390A, 0x6D31, 0x6D31, 0x063C, 0x6D32, 0x6D32, 0x11DD,
+ 0x6D33, 0x6D33, 0x16D0, 0x6D34, 0x6D34, 0x390C, 0x6D35, 0x6D35, 0x16CB,
+ 0x6D36, 0x6D38, 0x390D, 0x6D39, 0x6D39, 0x16BF, 0x6D3A, 0x6D3A, 0x3910,
+ 0x6D3B, 0x6D3B, 0x0803, 0x6D3C, 0x6D3C, 0x0E8E, 0x6D3D, 0x6D3D, 0x0C1F,
+ 0x6D3E, 0x6D3E, 0x0B8A, 0x6D3F, 0x6D40, 0x3911, 0x6D41, 0x6D41, 0x0A40,
+ 0x6D42, 0x6D42, 0x3913, 0x6D43, 0x6D43, 0x16C2, 0x6D44, 0x6D44, 0x3914,
+ 0x6D45, 0x6D45, 0x0C30, 0x6D46, 0x6D46, 0x087D, 0x6D47, 0x6D47, 0x088E,
+ 0x6D48, 0x6D48, 0x16C3, 0x6D49, 0x6D49, 0x3915, 0x6D4A, 0x6D4A, 0x1224,
+ 0x6D4B, 0x6D4B, 0x04A9, 0x6D4C, 0x6D4C, 0x3916, 0x6D4D, 0x6D4D, 0x16C9,
+ 0x6D4E, 0x6D4E, 0x0836, 0x6D4F, 0x6D4F, 0x16CD, 0x6D50, 0x6D50, 0x3917,
+ 0x6D51, 0x6D51, 0x0800, 0x6D52, 0x6D52, 0x16CE, 0x6D53, 0x6D53, 0x0B69,
+ 0x6D54, 0x6D54, 0x16CF, 0x6D55, 0x6D58, 0x3918, 0x6D59, 0x6D59, 0x1184,
+ 0x6D5A, 0x6D5A, 0x0930, 0x6D5B, 0x6D5B, 0x391C, 0x6D5C, 0x6D5C, 0x16D8,
+ 0x6D5D, 0x6D5D, 0x391D, 0x6D5E, 0x6D5E, 0x16D5, 0x6D5F, 0x6D5F, 0x391E,
+ 0x6D60, 0x6D60, 0x16D9, 0x6D61, 0x6D62, 0x391F, 0x6D63, 0x6D63, 0x16DB,
+ 0x6D64, 0x6D65, 0x3921, 0x6D66, 0x6D66, 0x0BF5, 0x6D67, 0x6D68, 0x3923,
+ 0x6D69, 0x6D69, 0x077D, 0x6D6A, 0x6D6A, 0x09B6, 0x6D6B, 0x6D6D, 0x3925,
+ 0x6D6E, 0x6D6E, 0x069C, 0x6D6F, 0x6D6F, 0x16D2, 0x6D70, 0x6D73, 0x3928,
+ 0x6D74, 0x6D74, 0x10E4, 0x6D75, 0x6D76, 0x392C, 0x6D77, 0x6D77, 0x075A,
+ 0x6D78, 0x6D78, 0x08CF, 0x6D79, 0x6D79, 0x23DC, 0x6D7A, 0x6D7B, 0x392E,
+ 0x6D7C, 0x6D7C, 0x16DA, 0x6D7D, 0x6D81, 0x3930, 0x6D82, 0x6D82, 0x0E70,
+ 0x6D83, 0x6D84, 0x3935, 0x6D85, 0x6D85, 0x0B5C, 0x6D86, 0x6D86, 0x3937,
+ 0x6D87, 0x6D87, 0x23DB, 0x6D88, 0x6D88, 0x0F68, 0x6D89, 0x6D89, 0x0D1F,
+ 0x6D8A, 0x6D8B, 0x3938, 0x6D8C, 0x6D8C, 0x10A4, 0x6D8D, 0x6D8D, 0x393A,
+ 0x6D8E, 0x6D8E, 0x0F3E, 0x6D8F, 0x6D90, 0x393B, 0x6D91, 0x6D91, 0x16D1,
+ 0x6D92, 0x6D92, 0x393D, 0x6D93, 0x6D94, 0x16D6, 0x6D95, 0x6D95, 0x0E3C,
+ 0x6D96, 0x6D9A, 0x393E, 0x6D9B, 0x6D9B, 0x0E21, 0x6D9C, 0x6D9C, 0x3943,
+ 0x6D9D, 0x6D9D, 0x09BF, 0x6D9E, 0x6D9E, 0x16D3, 0x6D9F, 0x6D9F, 0x09F9,
+ 0x6DA0, 0x6DA0, 0x16D4, 0x6DA1, 0x6DA1, 0x0EDF, 0x6DA2, 0x6DA2, 0x3944,
+ 0x6DA3, 0x6DA3, 0x07D6, 0x6DA4, 0x6DA4, 0x05B4, 0x6DA5, 0x6DA5, 0x3945,
+ 0x6DA6, 0x6DA6, 0x0CCE, 0x6DA7, 0x6DA7, 0x0878, 0x6DA8, 0x6DA8, 0x1168,
+ 0x6DA9, 0x6DA9, 0x0CE5, 0x6DAA, 0x6DAA, 0x069D, 0x6DAB, 0x6DAB, 0x16E8,
+ 0x6DAC, 0x6DAD, 0x3946, 0x6DAE, 0x6DAE, 0x16EA, 0x6DAF, 0x6DAF, 0x0FED,
+ 0x6DB0, 0x6DB1, 0x3948, 0x6DB2, 0x6DB2, 0x1041, 0x6DB3, 0x6DB4, 0x394A,
+ 0x6DB5, 0x6DB5, 0x0764, 0x6DB6, 0x6DB7, 0x394C, 0x6DB8, 0x6DB8, 0x078B,
+ 0x6DB9, 0x6DBE, 0x394E, 0x6DBF, 0x6DBF, 0x16E1, 0x6DC0, 0x6DC0, 0x05CE,
+ 0x6DC1, 0x6DC3, 0x3954, 0x6DC4, 0x6DC4, 0x122A, 0x6DC5, 0x6DC5, 0x16DE,
+ 0x6DC6, 0x6DC6, 0x0F6A, 0x6DC7, 0x6DC7, 0x16DD, 0x6DC8, 0x6DCA, 0x3957,
+ 0x6DCB, 0x6DCB, 0x0A25, 0x6DCC, 0x6DCC, 0x0E1D, 0x6DCD, 0x6DD0, 0x395A,
+ 0x6DD1, 0x6DD1, 0x0D7E, 0x6DD2, 0x6DD5, 0x395E, 0x6DD6, 0x6DD6, 0x0B3A,
+ 0x6DD7, 0x6DD7, 0x3962, 0x6DD8, 0x6DD8, 0x0E27, 0x6DD9, 0x6DD9, 0x16E6,
+ 0x6DDA, 0x6DDC, 0x3963, 0x6DDD, 0x6DDD, 0x16E5, 0x6DDE, 0x6DDE, 0x16DF,
+ 0x6DDF, 0x6DDF, 0x3966, 0x6DE0, 0x6DE0, 0x16E2, 0x6DE1, 0x6DE1, 0x058E,
+ 0x6DE2, 0x6DE3, 0x3967, 0x6DE4, 0x6DE4, 0x10BE, 0x6DE5, 0x6DE5, 0x3969,
+ 0x6DE6, 0x6DE6, 0x16E4, 0x6DE7, 0x6DE9, 0x396A, 0x6DEA, 0x6DEA, 0x205E,
+ 0x6DEB, 0x6DEB, 0x1080, 0x6DEC, 0x6DEC, 0x0566, 0x6DED, 0x6DED, 0x396D,
+ 0x6DEE, 0x6DEE, 0x07C9, 0x6DEF, 0x6DF0, 0x396E, 0x6DF1, 0x6DF1, 0x0D27,
+ 0x6DF2, 0x6DF2, 0x3970, 0x6DF3, 0x6DF3, 0x0541, 0x6DF4, 0x6DF4, 0x3971,
+ 0x6DF5, 0x6DF5, 0x2244, 0x6DF6, 0x6DF6, 0x23E2, 0x6DF7, 0x6DF7, 0x0801,
+ 0x6DF8, 0x6DF8, 0x3972, 0x6DF9, 0x6DF9, 0x0FF6, 0x6DFA, 0x6DFA, 0x20D4,
+ 0x6DFB, 0x6DFB, 0x0E40, 0x6DFC, 0x6DFC, 0x1A21, 0x6DFD, 0x6DFF, 0x3973,
+ 0x6E00, 0x6E04, 0x3976, 0x6E05, 0x6E05, 0x0C62, 0x6E06, 0x6E09, 0x397B,
+ 0x6E0A, 0x6E0A, 0x10EB, 0x6E0B, 0x6E0B, 0x397F, 0x6E0C, 0x6E0C, 0x16E9,
+ 0x6E0D, 0x6E0D, 0x1232, 0x6E0E, 0x6E0E, 0x16E0, 0x6E0F, 0x6E0F, 0x3980,
+ 0x6E10, 0x6E10, 0x0876, 0x6E11, 0x6E11, 0x16E3, 0x6E12, 0x6E13, 0x3981,
+ 0x6E14, 0x6E14, 0x10CB, 0x6E15, 0x6E15, 0x3983, 0x6E16, 0x6E16, 0x16E7,
+ 0x6E17, 0x6E17, 0x0D31, 0x6E18, 0x6E19, 0x3984, 0x6E1A, 0x6E1A, 0x16DC,
+ 0x6E1B, 0x6E1C, 0x3986, 0x6E1D, 0x6E1D, 0x10CA, 0x6E1E, 0x6E1F, 0x3988,
+ 0x6E20, 0x6E20, 0x0C7B, 0x6E21, 0x6E21, 0x0608, 0x6E22, 0x6E22, 0x398A,
+ 0x6E23, 0x6E23, 0x113F, 0x6E24, 0x6E24, 0x047A, 0x6E25, 0x6E25, 0x16F5,
+ 0x6E26, 0x6E26, 0x219F, 0x6E27, 0x6E28, 0x398B, 0x6E29, 0x6E29, 0x0ED1,
+ 0x6E2A, 0x6E2A, 0x398D, 0x6E2B, 0x6E2B, 0x16EB, 0x6E2C, 0x6E2C, 0x1E66,
+ 0x6E2D, 0x6E2D, 0x0ECB, 0x6E2E, 0x6E2E, 0x398E, 0x6E2F, 0x6E2F, 0x06D6,
+ 0x6E30, 0x6E31, 0x398F, 0x6E32, 0x6E32, 0x16F4, 0x6E33, 0x6E33, 0x3991,
+ 0x6E34, 0x6E34, 0x0957, 0x6E35, 0x6E37, 0x3992, 0x6E38, 0x6E38, 0x10B3,
+ 0x6E39, 0x6E39, 0x3995, 0x6E3A, 0x6E3A, 0x0AF1, 0x6E3B, 0x6E3D, 0x3996,
+ 0x6E3E, 0x6E3E, 0x1F63, 0x6E3F, 0x6E42, 0x3999, 0x6E43, 0x6E43, 0x0B89,
+ 0x6E44, 0x6E44, 0x16F6, 0x6E45, 0x6E4C, 0x399D, 0x6E4D, 0x6E4D, 0x0E75,
+ 0x6E4E, 0x6E4E, 0x16ED, 0x6E4F, 0x6E52, 0x39A5, 0x6E53, 0x6E54, 0x16F2,
+ 0x6E55, 0x6E55, 0x39A9, 0x6E56, 0x6E56, 0x07B5, 0x6E57, 0x6E57, 0x39AA,
+ 0x6E58, 0x6E58, 0x0F53, 0x6E59, 0x6E5A, 0x39AB, 0x6E5B, 0x6E5B, 0x1160,
+ 0x6E5C, 0x6E5D, 0x39AD, 0x6E5E, 0x6E5E, 0x23DD, 0x6E5F, 0x6E5F, 0x16F0,
+ 0x6E60, 0x6E6A, 0x39AF, 0x6E6B, 0x6E6B, 0x16EE, 0x6E6C, 0x6E6D, 0x39BA,
+ 0x6E6E, 0x6E6E, 0x16EC, 0x6E6F, 0x6E6F, 0x216B, 0x6E70, 0x6E7D, 0x39BC,
+ 0x6E7E, 0x6E7E, 0x0E96, 0x6E7F, 0x6E7F, 0x0D41, 0x6E80, 0x6E82, 0x39CA,
+ 0x6E83, 0x6E83, 0x098E, 0x6E84, 0x6E84, 0x39CD, 0x6E85, 0x6E85, 0x0877,
+ 0x6E86, 0x6E86, 0x16F1, 0x6E87, 0x6E88, 0x39CE, 0x6E89, 0x6E89, 0x06C3,
+ 0x6E8A, 0x6E8E, 0x39D0, 0x6E8F, 0x6E8F, 0x1705, 0x6E90, 0x6E90, 0x10F7,
+ 0x6E91, 0x6E95, 0x39D5, 0x6E96, 0x6E96, 0x22B5, 0x6E97, 0x6E97, 0x39DA,
+ 0x6E98, 0x6E98, 0x16F9, 0x6E99, 0x6E9B, 0x39DB, 0x6E9C, 0x6E9C, 0x0A38,
+ 0x6E9D, 0x6E9D, 0x1F26, 0x6E9E, 0x6E9E, 0x39DE, 0x6E9F, 0x6E9F, 0x1707,
+ 0x6EA0, 0x6EA1, 0x39DF, 0x6EA2, 0x6EA2, 0x106E, 0x6EA3, 0x6EA4, 0x39E1,
+ 0x6EA5, 0x6EA5, 0x16FD, 0x6EA6, 0x6EA6, 0x39E3, 0x6EA7, 0x6EA7, 0x16FE,
+ 0x6EA8, 0x6EA9, 0x39E4, 0x6EAA, 0x6EAA, 0x0F17, 0x6EAB, 0x6EAE, 0x39E6,
+ 0x6EAF, 0x6EAF, 0x0DD2, 0x6EB0, 0x6EB0, 0x39EA, 0x6EB1, 0x6EB1, 0x16F8,
+ 0x6EB2, 0x6EB2, 0x16EF, 0x6EB3, 0x6EB3, 0x39EB, 0x6EB4, 0x6EB4, 0x1703,
+ 0x6EB5, 0x6EB5, 0x39EC, 0x6EB6, 0x6EB6, 0x0CB7, 0x6EB7, 0x6EB7, 0x1701,
+ 0x6EB8, 0x6EB9, 0x39ED, 0x6EBA, 0x6EBA, 0x0B4A, 0x6EBB, 0x6EBB, 0x1700,
+ 0x6EBC, 0x6EBC, 0x39EF, 0x6EBD, 0x6EBD, 0x16FF, 0x6EBE, 0x6EC0, 0x39F0,
+ 0x6EC1, 0x6EC1, 0x0521, 0x6EC2, 0x6EC2, 0x1706, 0x6EC3, 0x6EC3, 0x39F3,
+ 0x6EC4, 0x6EC4, 0x1E63, 0x6EC5, 0x6EC5, 0x2088, 0x6EC6, 0x6EC6, 0x39F4,
+ 0x6EC7, 0x6EC7, 0x05C2, 0x6EC8, 0x6ECA, 0x39F5, 0x6ECB, 0x6ECB, 0x1229,
+ 0x6ECC, 0x6ECC, 0x1EBD, 0x6ECD, 0x6ECD, 0x39F8, 0x6ECE, 0x6ECE, 0x2341,
+ 0x6ECF, 0x6ECF, 0x1704, 0x6ED0, 0x6ED0, 0x39F9, 0x6ED1, 0x6ED1, 0x07C1,
+ 0x6ED2, 0x6ED2, 0x39FA, 0x6ED3, 0x6ED3, 0x122F, 0x6ED4, 0x6ED4, 0x0E22,
+ 0x6ED5, 0x6ED5, 0x19A8, 0x6ED6, 0x6ED6, 0x39FB, 0x6ED7, 0x6ED7, 0x1702,
+ 0x6ED8, 0x6ED9, 0x39FC, 0x6EDA, 0x6EDA, 0x074F, 0x6EDB, 0x6EDD, 0x39FE,
+ 0x6EDE, 0x6EDE, 0x11CC, 0x6EDF, 0x6EDF, 0x16F7, 0x6EE0, 0x6EE0, 0x16FA,
+ 0x6EE1, 0x6EE1, 0x0AA1, 0x6EE2, 0x6EE2, 0x16FC, 0x6EE3, 0x6EE3, 0x3A01,
+ 0x6EE4, 0x6EE4, 0x0A72, 0x6EE5, 0x6EE5, 0x09AF, 0x6EE6, 0x6EE6, 0x0A77,
+ 0x6EE7, 0x6EE7, 0x3A02, 0x6EE8, 0x6EE8, 0x045E, 0x6EE9, 0x6EE9, 0x0E05,
+ 0x6EEA, 0x6EEB, 0x3A03, 0x6EEC, 0x6EEC, 0x1F4B, 0x6EED, 0x6EEE, 0x3A05,
+ 0x6EEF, 0x6EEF, 0x2292, 0x6EF0, 0x6EF1, 0x3A07, 0x6EF2, 0x6EF2, 0x2124,
+ 0x6EF3, 0x6EF3, 0x3A09, 0x6EF4, 0x6EF4, 0x05AF, 0x6EF5, 0x6EF6, 0x3A0A,
+ 0x6EF7, 0x6EF7, 0x2048, 0x6EF8, 0x6EF8, 0x23E0, 0x6EF9, 0x6EF9, 0x170D,
+ 0x6EFA, 0x6EFE, 0x3A0C, 0x6EFF, 0x6EFF, 0x2077, 0x6F00, 0x6F00, 0x3A11,
+ 0x6F01, 0x6F01, 0x223A, 0x6F02, 0x6F02, 0x0BCE, 0x6F03, 0x6F05, 0x3A12,
+ 0x6F06, 0x6F06, 0x0C00, 0x6F07, 0x6F08, 0x3A15, 0x6F09, 0x6F09, 0x1713,
+ 0x6F0A, 0x6F0E, 0x3A17, 0x6F0F, 0x6F0F, 0x0A50, 0x6F10, 0x6F12, 0x3A1C,
+ 0x6F13, 0x6F13, 0x09D7, 0x6F14, 0x6F14, 0x1006, 0x6F15, 0x6F15, 0x170C,
+ 0x6F16, 0x6F19, 0x3A1F, 0x6F1A, 0x6F1A, 0x20B1, 0x6F1B, 0x6F1F, 0x3A23,
+ 0x6F20, 0x6F20, 0x0B11, 0x6F21, 0x6F21, 0x3A28, 0x6F22, 0x6F22, 0x1F41,
+ 0x6F23, 0x6F23, 0x201C, 0x6F24, 0x6F24, 0x170B, 0x6F25, 0x6F28, 0x3A29,
+ 0x6F29, 0x6F29, 0x1714, 0x6F2A, 0x6F2A, 0x1712, 0x6F2B, 0x6F2B, 0x0AA5,
+ 0x6F2C, 0x6F2C, 0x22B8, 0x6F2D, 0x6F2D, 0x16FB, 0x6F2E, 0x6F2E, 0x3A2D,
+ 0x6F2F, 0x6F2F, 0x170E, 0x6F30, 0x6F30, 0x3A2E, 0x6F31, 0x6F31, 0x0D95,
+ 0x6F32, 0x6F32, 0x2276, 0x6F33, 0x6F33, 0x1165, 0x6F34, 0x6F35, 0x3A2F,
+ 0x6F36, 0x6F36, 0x170F, 0x6F37, 0x6F37, 0x3A31, 0x6F38, 0x6F38, 0x1F9B,
+ 0x6F39, 0x6F3D, 0x3A32, 0x6F3E, 0x6F3E, 0x1023, 0x6F3F, 0x6F3F, 0x1F9F,
+ 0x6F40, 0x6F40, 0x3A37, 0x6F41, 0x6F41, 0x25CA, 0x6F42, 0x6F45, 0x3A38,
+ 0x6F46, 0x6F47, 0x1709, 0x6F48, 0x6F4A, 0x3A3C, 0x6F4B, 0x6F4B, 0x1710,
+ 0x6F4C, 0x6F4C, 0x3A3F, 0x6F4D, 0x6F4D, 0x0EBA, 0x6F4E, 0x6F50, 0x3A40,
+ 0x6F51, 0x6F51, 0x20BE, 0x6F52, 0x6F53, 0x3A43, 0x6F54, 0x6F54, 0x1FB4,
+ 0x6F55, 0x6F57, 0x3A45, 0x6F58, 0x6F58, 0x0B8C, 0x6F59, 0x6F59, 0x23D7,
+ 0x6F5A, 0x6F5B, 0x3A48, 0x6F5C, 0x6F5C, 0x0C2E, 0x6F5D, 0x6F5D, 0x3A4A,
+ 0x6F5E, 0x6F5E, 0x0A61, 0x6F5F, 0x6F61, 0x3A4B, 0x6F62, 0x6F62, 0x1708,
+ 0x6F63, 0x6F63, 0x3A4E, 0x6F64, 0x6F64, 0x2105, 0x6F65, 0x6F65, 0x3A4F,
+ 0x6F66, 0x6F66, 0x0A13, 0x6F67, 0x6F6C, 0x3A50, 0x6F6D, 0x6F6D, 0x0E09,
+ 0x6F6E, 0x6F6E, 0x04D6, 0x6F6F, 0x6F6F, 0x23E1, 0x6F70, 0x6F70, 0x1FEC,
+ 0x6F71, 0x6F71, 0x3A56, 0x6F72, 0x6F72, 0x1719, 0x6F73, 0x6F73, 0x3A57,
+ 0x6F74, 0x6F74, 0x1711, 0x6F75, 0x6F76, 0x3A58, 0x6F77, 0x6F77, 0x23EA,
+ 0x6F78, 0x6F78, 0x1718, 0x6F79, 0x6F79, 0x3A5A, 0x6F7A, 0x6F7A, 0x171B,
+ 0x6F7B, 0x6F7B, 0x3A5B, 0x6F7C, 0x6F7C, 0x171A, 0x6F7D, 0x6F7E, 0x3A5C,
+ 0x6F7F, 0x6F7F, 0x23E3, 0x6F80, 0x6F80, 0x210E, 0x6F81, 0x6F83, 0x3A5E,
+ 0x6F84, 0x6F84, 0x04F3, 0x6F85, 0x6F85, 0x3A61, 0x6F86, 0x6F86, 0x1FA6,
+ 0x6F87, 0x6F87, 0x2004, 0x6F88, 0x6F88, 0x04DF, 0x6F89, 0x6F89, 0x1715,
+ 0x6F8A, 0x6F8B, 0x3A62, 0x6F8C, 0x6F8C, 0x1717, 0x6F8D, 0x6F8D, 0x1716,
+ 0x6F8E, 0x6F8E, 0x0BAD, 0x6F8F, 0x6F96, 0x3A64, 0x6F97, 0x6F97, 0x1F9D,
+ 0x6F98, 0x6F9B, 0x3A6C, 0x6F9C, 0x6F9C, 0x09A8, 0x6F9D, 0x6F9F, 0x3A70,
+ 0x6FA0, 0x6FA0, 0x23E5, 0x6FA1, 0x6FA1, 0x112B, 0x6FA2, 0x6FA3, 0x3A73,
+ 0x6FA4, 0x6FA4, 0x2264, 0x6FA5, 0x6FA6, 0x3A75, 0x6FA7, 0x6FA7, 0x171E,
+ 0x6FA8, 0x6FA8, 0x3A77, 0x6FA9, 0x6FA9, 0x24E2, 0x6FAA, 0x6FAD, 0x3A78,
+ 0x6FAE, 0x6FAE, 0x23DE, 0x6FAF, 0x6FB0, 0x3A7C, 0x6FB1, 0x6FB1, 0x1EC4,
+ 0x6FB2, 0x6FB2, 0x3A7E, 0x6FB3, 0x6FB3, 0x03CF, 0x6FB4, 0x6FB5, 0x3A7F,
+ 0x6FB6, 0x6FB6, 0x1720, 0x6FB7, 0x6FB8, 0x3A81, 0x6FB9, 0x6FB9, 0x171F,
+ 0x6FBA, 0x6FBF, 0x3A83, 0x6FC0, 0x6FC0, 0x0817, 0x6FC1, 0x6FC1, 0x22B6,
+ 0x6FC2, 0x6FC2, 0x1721, 0x6FC3, 0x6FC3, 0x20A9, 0x6FC4, 0x6FC8, 0x3A89,
+ 0x6FC9, 0x6FC9, 0x171D, 0x6FCA, 0x6FD0, 0x3A8E, 0x6FD1, 0x6FD1, 0x171C,
+ 0x6FD2, 0x6FD2, 0x045D, 0x6FD3, 0x6FD4, 0x3A95, 0x6FD5, 0x6FD5, 0x212B,
+ 0x6FD6, 0x6FD7, 0x3A97, 0x6FD8, 0x6FD8, 0x20A5, 0x6FD9, 0x6FDA, 0x3A99,
+ 0x6FDB, 0x6FDB, 0x268B, 0x6FDC, 0x6FDD, 0x3A9B, 0x6FDE, 0x6FDE, 0x1724,
+ 0x6FDF, 0x6FDF, 0x1F76, 0x6FE0, 0x6FE0, 0x1725, 0x6FE1, 0x6FE1, 0x1722,
+ 0x6FE2, 0x6FE3, 0x3A9D, 0x6FE4, 0x6FE4, 0x216D, 0x6FE5, 0x6FEA, 0x3A9F,
+ 0x6FEB, 0x6FEB, 0x2001, 0x6FEC, 0x6FED, 0x3AA5, 0x6FEE, 0x6FEE, 0x1723,
+ 0x6FEF, 0x6FEF, 0x1726, 0x6FF0, 0x6FF0, 0x2191, 0x6FF1, 0x6FF1, 0x1E50,
+ 0x6FF2, 0x6FF9, 0x3AA7, 0x6FFA, 0x6FFA, 0x1F9C, 0x6FFB, 0x6FFB, 0x3AAF,
+ 0x6FFC, 0x6FFC, 0x23DA, 0x6FFD, 0x6FFD, 0x3AB0, 0x6FFE, 0x6FFE, 0x2053,
+ 0x6FFF, 0x6FFF, 0x3AB1, 0x7000, 0x7004, 0x3AB2, 0x7005, 0x7005, 0x23E9,
+ 0x7006, 0x7006, 0x23E4, 0x7007, 0x7008, 0x3AB7, 0x7009, 0x7009, 0x21D5,
+ 0x700A, 0x700A, 0x3AB9, 0x700B, 0x700B, 0x23E6, 0x700C, 0x700E, 0x3ABA,
+ 0x700F, 0x700F, 0x23DF, 0x7010, 0x7010, 0x3ABD, 0x7011, 0x7011, 0x0BF8,
+ 0x7012, 0x7014, 0x3ABE, 0x7015, 0x7015, 0x1E4F, 0x7016, 0x7017, 0x3AC1,
+ 0x7018, 0x7018, 0x23D9, 0x7019, 0x7019, 0x3AC3, 0x701A, 0x701A, 0x1727,
+ 0x701B, 0x701B, 0x1729, 0x701C, 0x701C, 0x3AC4, 0x701D, 0x701D, 0x2014,
+ 0x701E, 0x701E, 0x3AC5, 0x701F, 0x701F, 0x23EC, 0x7020, 0x7020, 0x23EB,
+ 0x7021, 0x7022, 0x3AC6, 0x7023, 0x7023, 0x1728, 0x7024, 0x7026, 0x3AC8,
+ 0x7027, 0x7027, 0x23D8, 0x7028, 0x7028, 0x23EE, 0x7029, 0x702F, 0x3ACB,
+ 0x7030, 0x7030, 0x268E, 0x7031, 0x7031, 0x3AD2, 0x7032, 0x7032, 0x23ED,
+ 0x7033, 0x7034, 0x3AD3, 0x7035, 0x7035, 0x172B, 0x7036, 0x7038, 0x3AD5,
+ 0x7039, 0x7039, 0x172A, 0x703A, 0x703D, 0x3AD8, 0x703E, 0x703E, 0x1FFA,
+ 0x703F, 0x7042, 0x3ADC, 0x7043, 0x7043, 0x23D6, 0x7044, 0x7044, 0x23E8,
+ 0x7045, 0x704B, 0x3AE0, 0x704C, 0x704C, 0x0739, 0x704D, 0x704E, 0x3AE7,
+ 0x704F, 0x704F, 0x172C, 0x7050, 0x7050, 0x3AE9, 0x7051, 0x7051, 0x2106,
+ 0x7052, 0x7054, 0x3AEA, 0x7055, 0x7055, 0x200B, 0x7056, 0x7057, 0x3AED,
+ 0x7058, 0x7058, 0x2166, 0x7059, 0x705C, 0x3AEF, 0x705D, 0x705D, 0x23EF,
+ 0x705E, 0x705E, 0x172D, 0x705F, 0x7062, 0x3AF3, 0x7063, 0x7063, 0x2189,
+ 0x7064, 0x7064, 0x2058, 0x7065, 0x7066, 0x3AF7, 0x7067, 0x7067, 0x23E7,
+ 0x7068, 0x706A, 0x3AF9, 0x706B, 0x706B, 0x0805, 0x706C, 0x706C, 0x19EF,
+ 0x706D, 0x706D, 0x0AF5, 0x706E, 0x706E, 0x3AFC, 0x706F, 0x706F, 0x05A7,
+ 0x7070, 0x7070, 0x07E7, 0x7071, 0x7074, 0x3AFD, 0x7075, 0x7075, 0x0A32,
+ 0x7076, 0x7076, 0x1131, 0x7077, 0x7077, 0x3B01, 0x7078, 0x7078, 0x08F3,
+ 0x7079, 0x707B, 0x3B02, 0x707C, 0x707C, 0x1223, 0x707D, 0x707D, 0x3B05,
+ 0x707E, 0x707E, 0x1119, 0x707F, 0x707F, 0x049A, 0x7080, 0x7080, 0x19CC,
+ 0x7081, 0x7084, 0x3B06, 0x7085, 0x7085, 0x1913, 0x7086, 0x7088, 0x3B0A,
+ 0x7089, 0x7089, 0x0A56, 0x708A, 0x708A, 0x0539, 0x708B, 0x708D, 0x3B0D,
+ 0x708E, 0x708E, 0x1000, 0x708F, 0x7091, 0x3B10, 0x7092, 0x7092, 0x04D9,
+ 0x7093, 0x7093, 0x3B13, 0x7094, 0x7094, 0x0C8D, 0x7095, 0x7095, 0x0948,
+ 0x7096, 0x7096, 0x19CE, 0x7097, 0x7098, 0x3B14, 0x7099, 0x7099, 0x11CA,
+ 0x709A, 0x709B, 0x3B16, 0x709C, 0x709C, 0x19CD, 0x709D, 0x709D, 0x19CF,
+ 0x709E, 0x70AA, 0x3B18, 0x70AB, 0x70AB, 0x19D3, 0x70AC, 0x70AC, 0x0915,
+ 0x70AD, 0x70AD, 0x0E12, 0x70AE, 0x70AE, 0x0B9B, 0x70AF, 0x70AF, 0x08EB,
+ 0x70B0, 0x70B0, 0x3B25, 0x70B1, 0x70B1, 0x19D4, 0x70B2, 0x70B2, 0x3B26,
+ 0x70B3, 0x70B3, 0x0467, 0x70B4, 0x70B6, 0x3B27, 0x70B7, 0x70B7, 0x19D2,
+ 0x70B8, 0x70B8, 0x1149, 0x70B9, 0x70B9, 0x05C4, 0x70BA, 0x70BA, 0x3B2A,
+ 0x70BB, 0x70BB, 0x19D0, 0x70BC, 0x70BC, 0x09FF, 0x70BD, 0x70BD, 0x0508,
+ 0x70BE, 0x70BF, 0x3B2B, 0x70C0, 0x70C0, 0x19D1, 0x70C1, 0x70C1, 0x0DAD,
+ 0x70C2, 0x70C2, 0x09AE, 0x70C3, 0x70C3, 0x0E51, 0x70C4, 0x70C7, 0x3B2D,
+ 0x70C8, 0x70C8, 0x0A1B, 0x70C9, 0x70C9, 0x3B31, 0x70CA, 0x70CA, 0x19D6,
+ 0x70CB, 0x70CE, 0x3B32, 0x70CF, 0x70CF, 0x21A3, 0x70D0, 0x70D7, 0x3B36,
+ 0x70D8, 0x70D8, 0x079D, 0x70D9, 0x70D9, 0x09BE, 0x70DA, 0x70DA, 0x3B3E,
+ 0x70DB, 0x70DB, 0x11F1, 0x70DC, 0x70DE, 0x3B3F, 0x70DF, 0x70DF, 0x0FF5,
+ 0x70E0, 0x70E3, 0x3B42, 0x70E4, 0x70E4, 0x094B, 0x70E5, 0x70E5, 0x3B46,
+ 0x70E6, 0x70E6, 0x0650, 0x70E7, 0x70E7, 0x0D0E, 0x70E8, 0x70E8, 0x19D5,
+ 0x70E9, 0x70E9, 0x07F7, 0x70EA, 0x70EA, 0x3B47, 0x70EB, 0x70EB, 0x0E1F,
+ 0x70EC, 0x70EC, 0x08CE, 0x70ED, 0x70ED, 0x0CA3, 0x70EE, 0x70EE, 0x3B48,
+ 0x70EF, 0x70EF, 0x0F16, 0x70F0, 0x70F3, 0x3B49, 0x70F4, 0x70F4, 0x217A,
+ 0x70F5, 0x70F6, 0x3B4D, 0x70F7, 0x70F7, 0x0E9A, 0x70F8, 0x70F8, 0x3B4F,
+ 0x70F9, 0x70F9, 0x0BAC, 0x70FA, 0x70FC, 0x3B50, 0x70FD, 0x70FD, 0x0686,
+ 0x70FE, 0x70FF, 0x3B53, 0x7100, 0x7108, 0x3B55, 0x7109, 0x7109, 0x0FF2,
+ 0x710A, 0x710A, 0x076F, 0x710B, 0x710F, 0x3B5E, 0x7110, 0x7110, 0x19D7,
+ 0x7111, 0x7112, 0x3B63, 0x7113, 0x7113, 0x19D8, 0x7114, 0x7114, 0x3B65,
+ 0x7115, 0x7115, 0x07D5, 0x7116, 0x7116, 0x19D9, 0x7117, 0x7117, 0x3B66,
+ 0x7118, 0x7118, 0x19F0, 0x7119, 0x7119, 0x0423, 0x711A, 0x711A, 0x0676,
+ 0x711B, 0x7120, 0x3B67, 0x7121, 0x7121, 0x21A5, 0x7122, 0x7125, 0x3B6D,
+ 0x7126, 0x7126, 0x088A, 0x7127, 0x712E, 0x3B71, 0x712F, 0x712F, 0x19DA,
+ 0x7130, 0x7130, 0x100F, 0x7131, 0x7131, 0x19DB, 0x7132, 0x7135, 0x3B79,
+ 0x7136, 0x7136, 0x0C96, 0x7137, 0x7144, 0x3B7D, 0x7145, 0x7145, 0x19DF,
+ 0x7146, 0x7148, 0x3B8B, 0x7149, 0x7149, 0x2022, 0x714A, 0x714A, 0x19E1,
+ 0x714B, 0x714B, 0x3B8E, 0x714C, 0x714C, 0x07E2, 0x714D, 0x714D, 0x3B8F,
+ 0x714E, 0x714E, 0x0858, 0x714F, 0x7151, 0x3B90, 0x7152, 0x7152, 0x24D6,
+ 0x7153, 0x715B, 0x3B93, 0x715C, 0x715C, 0x19DD, 0x715D, 0x715D, 0x3B9C,
+ 0x715E, 0x715E, 0x0CF0, 0x715F, 0x7161, 0x3B9D, 0x7162, 0x7162, 0x233A,
+ 0x7163, 0x7163, 0x3BA0, 0x7164, 0x7164, 0x0ABF, 0x7165, 0x7165, 0x3BA1,
+ 0x7166, 0x7166, 0x19F1, 0x7167, 0x7167, 0x1176, 0x7168, 0x7168, 0x19DE,
+ 0x7169, 0x7169, 0x1EEE, 0x716A, 0x716B, 0x3BA2, 0x716C, 0x716C, 0x24D5,
+ 0x716D, 0x716D, 0x3BA4, 0x716E, 0x716E, 0x11F2, 0x716F, 0x7171, 0x3BA5,
+ 0x7172, 0x7172, 0x19E0, 0x7173, 0x7173, 0x19DC, 0x7174, 0x7177, 0x3BA8,
+ 0x7178, 0x7178, 0x19E2, 0x7179, 0x7179, 0x3BAC, 0x717A, 0x717A, 0x19E3,
+ 0x717B, 0x717C, 0x3BAD, 0x717D, 0x717D, 0x0CF8, 0x717E, 0x7183, 0x3BAF,
+ 0x7184, 0x7184, 0x0F15, 0x7185, 0x7189, 0x3BB5, 0x718A, 0x718A, 0x0FA7,
+ 0x718B, 0x718E, 0x3BBA, 0x718F, 0x718F, 0x0FD5, 0x7190, 0x7191, 0x3BBE,
+ 0x7192, 0x7192, 0x2228, 0x7193, 0x7193, 0x3BC0, 0x7194, 0x7194, 0x0CB6,
+ 0x7195, 0x7196, 0x3BC1, 0x7197, 0x7197, 0x24D7, 0x7198, 0x7198, 0x19E4,
+ 0x7199, 0x7199, 0x0F04, 0x719A, 0x719E, 0x3BC3, 0x719F, 0x719F, 0x0D83,
+ 0x71A0, 0x71A0, 0x19E8, 0x71A1, 0x71A7, 0x3BC8, 0x71A8, 0x71A8, 0x19E7,
+ 0x71A9, 0x71AB, 0x3BCF, 0x71AC, 0x71AC, 0x03C9, 0x71AD, 0x71B0, 0x3BD2,
+ 0x71B1, 0x71B1, 0x20FC, 0x71B2, 0x71B2, 0x3BD6, 0x71B3, 0x71B3, 0x19E5,
+ 0x71B4, 0x71B4, 0x3BD7, 0x71B5, 0x71B5, 0x19E6, 0x71B6, 0x71B8, 0x3BD8,
+ 0x71B9, 0x71B9, 0x19F2, 0x71BA, 0x71BD, 0x3BDB, 0x71BE, 0x71BE, 0x1E87,
+ 0x71BF, 0x71C0, 0x3BDF, 0x71C1, 0x71C1, 0x24D8, 0x71C2, 0x71C2, 0x3BE1,
+ 0x71C3, 0x71C3, 0x0C97, 0x71C4, 0x71C7, 0x3BE2, 0x71C8, 0x71C8, 0x1EBA,
+ 0x71C9, 0x71CD, 0x3BE6, 0x71CE, 0x71CE, 0x0A10, 0x71CF, 0x71D1, 0x3BEB,
+ 0x71D2, 0x71D2, 0x2119, 0x71D3, 0x71D3, 0x3BEE, 0x71D4, 0x71D4, 0x19EA,
+ 0x71D5, 0x71D5, 0x1009, 0x71D6, 0x71D8, 0x3BEF, 0x71D9, 0x71D9, 0x216C,
+ 0x71DA, 0x71DB, 0x3BF2, 0x71DC, 0x71DC, 0x24D9, 0x71DD, 0x71DE, 0x3BF4,
+ 0x71DF, 0x71DF, 0x2227, 0x71E0, 0x71E0, 0x19E9, 0x71E1, 0x71E4, 0x3BF6,
+ 0x71E5, 0x71E5, 0x1132, 0x71E6, 0x71E6, 0x1E5F, 0x71E7, 0x71E7, 0x19EB,
+ 0x71E8, 0x71EC, 0x3BFA, 0x71ED, 0x71ED, 0x229F, 0x71EE, 0x71EE, 0x1396,
+ 0x71EF, 0x71F3, 0x3BFF, 0x71F4, 0x71F4, 0x1F5D, 0x71F5, 0x71F8, 0x3C04,
+ 0x71F9, 0x71F9, 0x19EC, 0x71FA, 0x71FB, 0x3C08, 0x71FC, 0x71FC, 0x1FBC,
+ 0x71FD, 0x71FD, 0x3C0A, 0x71FE, 0x71FE, 0x24DA, 0x71FF, 0x71FF, 0x3C0B,
+ 0x7200, 0x7205, 0x3C0C, 0x7206, 0x7206, 0x0415, 0x7207, 0x720C, 0x3C12,
+ 0x720D, 0x720D, 0x2149, 0x720E, 0x720F, 0x3C18, 0x7210, 0x7210, 0x2046,
+ 0x7211, 0x721A, 0x3C1A, 0x721B, 0x721B, 0x2000, 0x721C, 0x721C, 0x3C24,
+ 0x721D, 0x721D, 0x19ED, 0x721E, 0x7227, 0x3C25, 0x7228, 0x7228, 0x19EE,
+ 0x7229, 0x7229, 0x3C2F, 0x722A, 0x722A, 0x1203, 0x722B, 0x722B, 0x3C30,
+ 0x722C, 0x722C, 0x0B81, 0x722D, 0x722F, 0x3C31, 0x7230, 0x7230, 0x196C,
+ 0x7231, 0x7231, 0x03B9, 0x7232, 0x7232, 0x2190, 0x7233, 0x7234, 0x3C34,
+ 0x7235, 0x7235, 0x0923, 0x7236, 0x7236, 0x06B3, 0x7237, 0x7237, 0x1036,
+ 0x7238, 0x7238, 0x03E1, 0x7239, 0x7239, 0x05DA, 0x723A, 0x723A, 0x2208,
+ 0x723B, 0x723B, 0x1269, 0x723C, 0x723C, 0x3C36, 0x723D, 0x723D, 0x0DA1,
+ 0x723E, 0x723E, 0x1EE6, 0x723F, 0x723F, 0x169D, 0x7240, 0x7246, 0x3C37,
+ 0x7247, 0x7247, 0x0BCB, 0x7248, 0x7248, 0x03F1, 0x7249, 0x724B, 0x3C3E,
+ 0x724C, 0x724C, 0x0B87, 0x724D, 0x724D, 0x1969, 0x724E, 0x7251, 0x3C41,
+ 0x7252, 0x7252, 0x196A, 0x7253, 0x7255, 0x3C45, 0x7256, 0x7256, 0x196B,
+ 0x7257, 0x7257, 0x3C48, 0x7258, 0x7258, 0x24C3, 0x7259, 0x7259, 0x0FE9,
+ 0x725A, 0x725A, 0x3C49, 0x725B, 0x725B, 0x0B64, 0x725C, 0x725C, 0x3C4A,
+ 0x725D, 0x725D, 0x1944, 0x725E, 0x725E, 0x3C4B, 0x725F, 0x725F, 0x0B15,
+ 0x7260, 0x7260, 0x3C4C, 0x7261, 0x7261, 0x0B18, 0x7262, 0x7262, 0x09B9,
+ 0x7263, 0x7265, 0x3C4D, 0x7266, 0x7266, 0x1945, 0x7267, 0x7267, 0x0B24,
+ 0x7268, 0x7268, 0x3C50, 0x7269, 0x7269, 0x0EFE, 0x726A, 0x726D, 0x3C51,
+ 0x726E, 0x726E, 0x1942, 0x726F, 0x726F, 0x1946, 0x7270, 0x7271, 0x3C55,
+ 0x7272, 0x7272, 0x0D35, 0x7273, 0x7274, 0x3C57, 0x7275, 0x7275, 0x0C20,
+ 0x7276, 0x7278, 0x3C59, 0x7279, 0x7279, 0x0E2B, 0x727A, 0x727A, 0x0F0D,
+ 0x727B, 0x727C, 0x3C5C, 0x727D, 0x727D, 0x20CC, 0x727E, 0x727F, 0x1947,
+ 0x7280, 0x7280, 0x0F19, 0x7281, 0x7281, 0x09D2, 0x7282, 0x7283, 0x3C5E,
+ 0x7284, 0x7284, 0x1949, 0x7285, 0x7289, 0x3C60, 0x728A, 0x728A, 0x05FE,
+ 0x728B, 0x728B, 0x194A, 0x728C, 0x728C, 0x3C65, 0x728D, 0x728D, 0x194B,
+ 0x728E, 0x728E, 0x3C66, 0x728F, 0x728F, 0x194C, 0x7290, 0x7291, 0x3C67,
+ 0x7292, 0x7292, 0x194D, 0x7293, 0x7295, 0x3C69, 0x7296, 0x7296, 0x2340,
+ 0x7297, 0x729E, 0x3C6C, 0x729F, 0x729F, 0x1943, 0x72A0, 0x72A1, 0x3C74,
+ 0x72A2, 0x72A2, 0x1ED1, 0x72A3, 0x72A6, 0x3C76, 0x72A7, 0x72A7, 0x21AC,
+ 0x72A8, 0x72AB, 0x3C7A, 0x72AC, 0x72AC, 0x0C89, 0x72AD, 0x72AD, 0x15EF,
+ 0x72AE, 0x72AE, 0x3C7E, 0x72AF, 0x72AF, 0x0655, 0x72B0, 0x72B0, 0x15F0,
+ 0x72B1, 0x72B3, 0x3C7F, 0x72B4, 0x72B4, 0x15F1, 0x72B5, 0x72B5, 0x3C82,
+ 0x72B6, 0x72B6, 0x1211, 0x72B7, 0x72B8, 0x15F2, 0x72B9, 0x72B9, 0x10B1,
+ 0x72BA, 0x72BF, 0x3C83, 0x72C0, 0x72C0, 0x22AF, 0x72C1, 0x72C1, 0x15F5,
+ 0x72C2, 0x72C2, 0x097E, 0x72C3, 0x72C3, 0x15F4, 0x72C4, 0x72C4, 0x05B3,
+ 0x72C5, 0x72C7, 0x3C89, 0x72C8, 0x72C8, 0x0420, 0x72C9, 0x72CC, 0x3C8C,
+ 0x72CD, 0x72CD, 0x15F7, 0x72CE, 0x72CE, 0x15F6, 0x72CF, 0x72CF, 0x3C90,
+ 0x72D0, 0x72D0, 0x07B3, 0x72D1, 0x72D1, 0x3C91, 0x72D2, 0x72D2, 0x15F8,
+ 0x72D3, 0x72D6, 0x3C92, 0x72D7, 0x72D7, 0x0710, 0x72D8, 0x72D8, 0x3C96,
+ 0x72D9, 0x72D9, 0x0900, 0x72DA, 0x72DD, 0x3C97, 0x72DE, 0x72DE, 0x0B5F,
+ 0x72DF, 0x72DF, 0x3C9B, 0x72E0, 0x72E0, 0x0794, 0x72E1, 0x72E1, 0x0897,
+ 0x72E2, 0x72E7, 0x3C9C, 0x72E8, 0x72E8, 0x15F9, 0x72E9, 0x72E9, 0x15FB,
+ 0x72EA, 0x72EB, 0x3CA2, 0x72EC, 0x72EC, 0x05FF, 0x72ED, 0x72ED, 0x0F2E,
+ 0x72EE, 0x72EE, 0x0D3F, 0x72EF, 0x72EF, 0x15FA, 0x72F0, 0x72F0, 0x1199,
+ 0x72F1, 0x72F1, 0x10E1, 0x72F2, 0x72F2, 0x15FC, 0x72F3, 0x72F3, 0x1600,
+ 0x72F4, 0x72F4, 0x15FD, 0x72F5, 0x72F6, 0x3CA4, 0x72F7, 0x72F7, 0x15FE,
+ 0x72F8, 0x72F8, 0x09D5, 0x72F9, 0x72F9, 0x21B6, 0x72FA, 0x72FB, 0x1602,
+ 0x72FC, 0x72FC, 0x09B2, 0x72FD, 0x72FD, 0x1E3D, 0x72FE, 0x72FF, 0x3CA6,
+ 0x7300, 0x7300, 0x3CA8, 0x7301, 0x7301, 0x15FF, 0x7302, 0x7302, 0x3CA9,
+ 0x7303, 0x7303, 0x1601, 0x7304, 0x7309, 0x3CAA, 0x730A, 0x730A, 0x1607,
+ 0x730B, 0x730D, 0x3CB0, 0x730E, 0x730E, 0x0A1D, 0x730F, 0x7312, 0x3CB3,
+ 0x7313, 0x7313, 0x1605, 0x7314, 0x7314, 0x3CB7, 0x7315, 0x7315, 0x160A,
+ 0x7316, 0x7316, 0x04C5, 0x7317, 0x7317, 0x1604, 0x7318, 0x731A, 0x3CB8,
+ 0x731B, 0x731B, 0x0AD2, 0x731C, 0x731C, 0x0489, 0x731D, 0x731D, 0x1609,
+ 0x731E, 0x731E, 0x1608, 0x731F, 0x7320, 0x3CBB, 0x7321, 0x7321, 0x1606,
+ 0x7322, 0x7322, 0x160B, 0x7323, 0x7324, 0x3CBD, 0x7325, 0x7325, 0x160D,
+ 0x7326, 0x7328, 0x3CBF, 0x7329, 0x7329, 0x0F94, 0x732A, 0x732A, 0x11EC,
+ 0x732B, 0x732B, 0x0AAD, 0x732C, 0x732C, 0x160E, 0x732D, 0x732D, 0x3CC2,
+ 0x732E, 0x732E, 0x0F44, 0x732F, 0x7330, 0x3CC3, 0x7331, 0x7331, 0x1610,
+ 0x7332, 0x7333, 0x3CC5, 0x7334, 0x7334, 0x07A6, 0x7335, 0x7335, 0x3CC7,
+ 0x7336, 0x7336, 0x2235, 0x7337, 0x7337, 0x18D4, 0x7338, 0x7338, 0x160F,
+ 0x7339, 0x7339, 0x160C, 0x733A, 0x733A, 0x3CC8, 0x733B, 0x733B, 0x2397,
+ 0x733C, 0x733D, 0x3CC9, 0x733E, 0x733E, 0x07C0, 0x733F, 0x733F, 0x10F6,
+ 0x7340, 0x7340, 0x3CCB, 0x7341, 0x7341, 0x2395, 0x7342, 0x7343, 0x3CCC,
+ 0x7344, 0x7344, 0x223F, 0x7345, 0x7345, 0x212A, 0x7346, 0x734C, 0x3CCE,
+ 0x734D, 0x734D, 0x1612, 0x734E, 0x734F, 0x3CD5, 0x7350, 0x7350, 0x1611,
+ 0x7351, 0x7351, 0x3CD7, 0x7352, 0x7352, 0x18D5, 0x7353, 0x7356, 0x3CD8,
+ 0x7357, 0x7357, 0x1613, 0x7358, 0x735F, 0x3CDC, 0x7360, 0x7360, 0x1614,
+ 0x7361, 0x7367, 0x3CE4, 0x7368, 0x7368, 0x1ED2, 0x7369, 0x7369, 0x3CEB,
+ 0x736A, 0x736A, 0x2396, 0x736B, 0x736B, 0x2398, 0x736C, 0x736C, 0x1615,
+ 0x736D, 0x736D, 0x0DF4, 0x736E, 0x736E, 0x3CEC, 0x736F, 0x736F, 0x1616,
+ 0x7370, 0x7370, 0x20A2, 0x7371, 0x7371, 0x3CED, 0x7372, 0x7372, 0x1F64,
+ 0x7373, 0x7374, 0x3CEE, 0x7375, 0x7375, 0x202B, 0x7376, 0x7376, 0x3CF0,
+ 0x7377, 0x7377, 0x2394, 0x7378, 0x7378, 0x2139, 0x7379, 0x7379, 0x3CF1,
+ 0x737A, 0x737A, 0x215F, 0x737B, 0x737B, 0x21C1, 0x737C, 0x737C, 0x239A,
+ 0x737D, 0x737D, 0x3CF2, 0x737E, 0x737E, 0x1617, 0x737F, 0x737F, 0x3CF3,
+ 0x7380, 0x7380, 0x2399, 0x7381, 0x7383, 0x3CF4, 0x7384, 0x7384, 0x0FC9,
+ 0x7385, 0x7386, 0x3CF7, 0x7387, 0x7387, 0x0A71, 0x7388, 0x7388, 0x3CF9,
+ 0x7389, 0x7389, 0x10D6, 0x738A, 0x738A, 0x3CFA, 0x738B, 0x738B, 0x0EA6,
+ 0x738C, 0x738D, 0x3CFB, 0x738E, 0x738E, 0x1818, 0x738F, 0x7390, 0x3CFD,
+ 0x7391, 0x7391, 0x1819, 0x7392, 0x7395, 0x3CFF, 0x7396, 0x7396, 0x08F0,
+ 0x7397, 0x739A, 0x3D03, 0x739B, 0x739B, 0x0A91, 0x739C, 0x739E, 0x3D07,
+ 0x739F, 0x739F, 0x181C, 0x73A0, 0x73A1, 0x3D0A, 0x73A2, 0x73A2, 0x181B,
+ 0x73A3, 0x73A8, 0x3D0C, 0x73A9, 0x73A9, 0x0E97, 0x73AA, 0x73AA, 0x3D12,
+ 0x73AB, 0x73AB, 0x0ABA, 0x73AC, 0x73AD, 0x3D13, 0x73AE, 0x73AE, 0x181A,
+ 0x73AF, 0x73AF, 0x07CC, 0x73B0, 0x73B0, 0x0F43, 0x73B1, 0x73B1, 0x3D15,
+ 0x73B2, 0x73B2, 0x0A2A, 0x73B3, 0x73B3, 0x1821, 0x73B4, 0x73B6, 0x3D16,
+ 0x73B7, 0x73B7, 0x1820, 0x73B8, 0x73B9, 0x3D19, 0x73BA, 0x73BA, 0x182C,
+ 0x73BB, 0x73BB, 0x046A, 0x73BC, 0x73BF, 0x3D1B, 0x73C0, 0x73C0, 0x1822,
+ 0x73C1, 0x73C1, 0x3D1F, 0x73C2, 0x73C2, 0x181E, 0x73C3, 0x73C7, 0x3D20,
+ 0x73C8, 0x73C8, 0x1824, 0x73C9, 0x73C9, 0x1823, 0x73CA, 0x73CA, 0x0CF3,
+ 0x73CB, 0x73CC, 0x3D25, 0x73CD, 0x73CD, 0x1185, 0x73CE, 0x73CE, 0x3D27,
+ 0x73CF, 0x73CF, 0x181D, 0x73D0, 0x73D0, 0x0646, 0x73D1, 0x73D1, 0x181F,
+ 0x73D2, 0x73D8, 0x3D28, 0x73D9, 0x73D9, 0x1826, 0x73DA, 0x73DD, 0x3D2F,
+ 0x73DE, 0x73DE, 0x182B, 0x73DF, 0x73DF, 0x3D33, 0x73E0, 0x73E0, 0x11E8,
+ 0x73E1, 0x73E4, 0x3D34, 0x73E5, 0x73E5, 0x1825, 0x73E6, 0x73E6, 0x3D38,
+ 0x73E7, 0x73E7, 0x182A, 0x73E8, 0x73E8, 0x3D39, 0x73E9, 0x73E9, 0x1829,
+ 0x73EA, 0x73EC, 0x3D3A, 0x73ED, 0x73ED, 0x03EB, 0x73EE, 0x73F1, 0x3D3D,
+ 0x73F2, 0x73F2, 0x182D, 0x73F3, 0x73FD, 0x3D41, 0x73FE, 0x73FE, 0x21C0,
+ 0x73FF, 0x73FF, 0x3D4C, 0x7400, 0x7402, 0x3D4D, 0x7403, 0x7403, 0x0C6F,
+ 0x7404, 0x7404, 0x3D50, 0x7405, 0x7405, 0x09B0, 0x7406, 0x7406, 0x09D8,
+ 0x7407, 0x7408, 0x3D51, 0x7409, 0x7409, 0x0A39, 0x740A, 0x740A, 0x1828,
+ 0x740B, 0x740E, 0x3D53, 0x740F, 0x740F, 0x182E, 0x7410, 0x7410, 0x0DEB,
+ 0x7411, 0x7419, 0x3D57, 0x741A, 0x741A, 0x1838, 0x741B, 0x741B, 0x1837,
+ 0x741C, 0x7421, 0x3D60, 0x7422, 0x7422, 0x121E, 0x7423, 0x7424, 0x3D66,
+ 0x7425, 0x7425, 0x1832, 0x7426, 0x7426, 0x1831, 0x7427, 0x7427, 0x3D68,
+ 0x7428, 0x7428, 0x1833, 0x7429, 0x7429, 0x3D69, 0x742A, 0x742A, 0x182F,
+ 0x742B, 0x742B, 0x3D6A, 0x742C, 0x742C, 0x1836, 0x742D, 0x742D, 0x3D6B,
+ 0x742E, 0x742E, 0x1835, 0x742F, 0x742F, 0x3D6C, 0x7430, 0x7430, 0x1834,
+ 0x7431, 0x7432, 0x3D6D, 0x7433, 0x7433, 0x0A1E, 0x7434, 0x7434, 0x0C56,
+ 0x7435, 0x7435, 0x0BBE, 0x7436, 0x7436, 0x0B84, 0x7437, 0x743B, 0x3D6F,
+ 0x743C, 0x743C, 0x0C6A, 0x743D, 0x743E, 0x3D74, 0x743F, 0x743F, 0x2460,
+ 0x7440, 0x7440, 0x3D76, 0x7441, 0x7441, 0x1839, 0x7442, 0x744A, 0x3D77,
+ 0x744B, 0x744B, 0x245C, 0x744C, 0x7454, 0x3D80, 0x7455, 0x7455, 0x183C,
+ 0x7456, 0x7456, 0x3D89, 0x7457, 0x7457, 0x183B, 0x7458, 0x7458, 0x3D8A,
+ 0x7459, 0x7459, 0x183D, 0x745A, 0x745A, 0x07AE, 0x745B, 0x745B, 0x1830,
+ 0x745C, 0x745C, 0x183A, 0x745D, 0x745D, 0x3D8B, 0x745E, 0x745E, 0x0CCB,
+ 0x745F, 0x745F, 0x0CE3, 0x7460, 0x7462, 0x3D8C, 0x7463, 0x7463, 0x215D,
+ 0x7464, 0x7468, 0x3D8F, 0x7469, 0x7469, 0x2225, 0x746A, 0x746A, 0x206A,
+ 0x746B, 0x746C, 0x3D94, 0x746D, 0x746D, 0x183F, 0x746E, 0x746F, 0x3D96,
+ 0x7470, 0x7470, 0x073E, 0x7471, 0x7475, 0x3D98, 0x7476, 0x7476, 0x1027,
+ 0x7477, 0x7477, 0x183E, 0x7478, 0x747D, 0x3D9D, 0x747E, 0x747E, 0x1840,
+ 0x747F, 0x747F, 0x3DA3, 0x7480, 0x7481, 0x1843, 0x7482, 0x7482, 0x3DA4,
+ 0x7483, 0x7483, 0x09F0, 0x7484, 0x7486, 0x3DA5, 0x7487, 0x7487, 0x1845,
+ 0x7488, 0x7488, 0x3DA8, 0x7489, 0x7489, 0x2461, 0x748A, 0x748A, 0x3DA9,
+ 0x748B, 0x748B, 0x1846, 0x748C, 0x748D, 0x3DAA, 0x748E, 0x748E, 0x1842,
+ 0x748F, 0x748F, 0x3DAC, 0x7490, 0x7490, 0x184A, 0x7491, 0x749B, 0x3DAD,
+ 0x749C, 0x749C, 0x1841, 0x749D, 0x749D, 0x3DB8, 0x749E, 0x749E, 0x1847,
+ 0x749F, 0x74A2, 0x3DB9, 0x74A3, 0x74A3, 0x245B, 0x74A4, 0x74A5, 0x3DBD,
+ 0x74A6, 0x74A6, 0x2462, 0x74A7, 0x74A7, 0x184B, 0x74A8, 0x74A9, 0x1848,
+ 0x74AA, 0x74AF, 0x3DBF, 0x74B0, 0x74B0, 0x1F54, 0x74B1, 0x74B9, 0x3DC5,
+ 0x74BA, 0x74BA, 0x184D, 0x74BB, 0x74BC, 0x3DCE, 0x74BD, 0x74BD, 0x245F,
+ 0x74BE, 0x74C9, 0x3DD0, 0x74CA, 0x74CA, 0x20EC, 0x74CB, 0x74CE, 0x3DDC,
+ 0x74CF, 0x74CF, 0x245D, 0x74D0, 0x74D1, 0x3DE0, 0x74D2, 0x74D2, 0x184C,
+ 0x74D3, 0x74D3, 0x3DE2, 0x74D4, 0x74D4, 0x2463, 0x74D5, 0x74D9, 0x3DE3,
+ 0x74DA, 0x74DA, 0x2464, 0x74DB, 0x74DB, 0x3DE8, 0x74DC, 0x74DC, 0x0728,
+ 0x74DD, 0x74DD, 0x3DE9, 0x74DE, 0x74DE, 0x1B32, 0x74DF, 0x74DF, 0x3DEA,
+ 0x74E0, 0x74E0, 0x1B33, 0x74E1, 0x74E1, 0x3DEB, 0x74E2, 0x74E2, 0x0BCF,
+ 0x74E3, 0x74E3, 0x03F5, 0x74E4, 0x74E4, 0x0C9A, 0x74E5, 0x74E5, 0x3DEC,
+ 0x74E6, 0x74E6, 0x0E90, 0x74E7, 0x74ED, 0x3DED, 0x74EE, 0x74EE, 0x0EDC,
+ 0x74EF, 0x74EF, 0x1903, 0x74F0, 0x74F3, 0x3DF4, 0x74F4, 0x74F4, 0x1904,
+ 0x74F5, 0x74F5, 0x3DF8, 0x74F6, 0x74F6, 0x0BDE, 0x74F7, 0x74F7, 0x054C,
+ 0x74F8, 0x74FE, 0x3DF9, 0x74FF, 0x74FF, 0x1905, 0x7500, 0x7503, 0x3E00,
+ 0x7504, 0x7504, 0x1188, 0x7505, 0x750B, 0x3E04, 0x750C, 0x750C, 0x24A5,
+ 0x750D, 0x750D, 0x1485, 0x750E, 0x750E, 0x3E0B, 0x750F, 0x750F, 0x1906,
+ 0x7510, 0x7510, 0x3E0C, 0x7511, 0x7511, 0x1907, 0x7512, 0x7512, 0x3E0D,
+ 0x7513, 0x7513, 0x1908, 0x7514, 0x7517, 0x3E0E, 0x7518, 0x7518, 0x06C5,
+ 0x7519, 0x7519, 0x14F8, 0x751A, 0x751A, 0x0D2E, 0x751B, 0x751B, 0x3E12,
+ 0x751C, 0x751C, 0x0E43, 0x751D, 0x751E, 0x3E13, 0x751F, 0x751F, 0x0D33,
+ 0x7520, 0x7522, 0x3E15, 0x7523, 0x7523, 0x1E70, 0x7524, 0x7524, 0x3E18,
+ 0x7525, 0x7525, 0x0D34, 0x7526, 0x7527, 0x3E19, 0x7528, 0x7528, 0x10A8,
+ 0x7529, 0x7529, 0x0D9B, 0x752A, 0x752A, 0x3E1B, 0x752B, 0x752B, 0x06A1,
+ 0x752C, 0x752C, 0x1B34, 0x752D, 0x752D, 0x042B, 0x752E, 0x752E, 0x3E1C,
+ 0x752F, 0x752F, 0x1734, 0x7530, 0x7530, 0x0E42, 0x7531, 0x7531, 0x10AE,
+ 0x7532, 0x7532, 0x084A, 0x7533, 0x7533, 0x0D23, 0x7534, 0x7534, 0x3E1D,
+ 0x7535, 0x7535, 0x05C8, 0x7536, 0x7536, 0x3E1E, 0x7537, 0x7537, 0x0B33,
+ 0x7538, 0x7538, 0x05CA, 0x7539, 0x7539, 0x3E1F, 0x753A, 0x753A, 0x1A78,
+ 0x753B, 0x753B, 0x07C2, 0x753C, 0x753D, 0x3E20, 0x753E, 0x753E, 0x1816,
+ 0x753F, 0x753F, 0x3E22, 0x7540, 0x7540, 0x1A79, 0x7541, 0x7544, 0x3E23,
+ 0x7545, 0x7545, 0x04CE, 0x7546, 0x7547, 0x3E27, 0x7548, 0x7548, 0x1A7C,
+ 0x7549, 0x754A, 0x3E29, 0x754B, 0x754B, 0x1A7B, 0x754C, 0x754C, 0x08B8,
+ 0x754D, 0x754D, 0x3E2B, 0x754E, 0x754E, 0x1A7A, 0x754F, 0x754F, 0x0EC6,
+ 0x7550, 0x7553, 0x3E2C, 0x7554, 0x7554, 0x0B90, 0x7555, 0x7558, 0x3E30,
+ 0x7559, 0x7559, 0x0A3D, 0x755A, 0x755A, 0x139E, 0x755B, 0x755B, 0x1A7D,
+ 0x755C, 0x755C, 0x0FBE, 0x755D, 0x755D, 0x208F, 0x755E, 0x7561, 0x3E34,
+ 0x7562, 0x7562, 0x1E42, 0x7563, 0x7564, 0x3E38, 0x7565, 0x7565, 0x0A7B,
+ 0x7566, 0x7566, 0x0C07, 0x7567, 0x7569, 0x3E3A, 0x756A, 0x756A, 0x0649,
+ 0x756B, 0x756B, 0x1F4E, 0x756C, 0x7571, 0x3E3D, 0x7572, 0x7572, 0x1A7E,
+ 0x7573, 0x7573, 0x3E43, 0x7574, 0x7574, 0x0510, 0x7575, 0x7575, 0x3E44,
+ 0x7576, 0x7576, 0x1EB1, 0x7577, 0x7577, 0x3E45, 0x7578, 0x7578, 0x0810,
+ 0x7579, 0x7579, 0x1A7F, 0x757A, 0x757E, 0x3E46, 0x757F, 0x757F, 0x1814,
+ 0x7580, 0x7582, 0x3E4B, 0x7583, 0x7583, 0x1A80, 0x7584, 0x7585, 0x3E4E,
+ 0x7586, 0x7586, 0x087F, 0x7587, 0x7587, 0x1E8B, 0x7588, 0x758A, 0x3E50,
+ 0x758B, 0x758B, 0x1BC6, 0x758C, 0x758E, 0x3E53, 0x758F, 0x758F, 0x0D7F,
+ 0x7590, 0x7590, 0x3E56, 0x7591, 0x7591, 0x1050, 0x7592, 0x7592, 0x1B60,
+ 0x7593, 0x7593, 0x3E57, 0x7594, 0x7594, 0x1B61, 0x7595, 0x7595, 0x3E58,
+ 0x7596, 0x7596, 0x1B62, 0x7597, 0x7597, 0x0A0F, 0x7598, 0x7598, 0x3E59,
+ 0x7599, 0x7599, 0x06E8, 0x759A, 0x759A, 0x08FD, 0x759B, 0x759C, 0x3E5A,
+ 0x759D, 0x759D, 0x1B64, 0x759E, 0x759E, 0x3E5C, 0x759F, 0x759F, 0x0B72,
+ 0x75A0, 0x75A0, 0x1B63, 0x75A1, 0x75A1, 0x101A, 0x75A2, 0x75A2, 0x3E5D,
+ 0x75A3, 0x75A3, 0x1B66, 0x75A4, 0x75A4, 0x03D7, 0x75A5, 0x75A5, 0x08BB,
+ 0x75A6, 0x75AA, 0x3E5E, 0x75AB, 0x75AB, 0x1066, 0x75AC, 0x75AC, 0x1B65,
+ 0x75AD, 0x75AD, 0x3E63, 0x75AE, 0x75AE, 0x0532, 0x75AF, 0x75AF, 0x0685,
+ 0x75B0, 0x75B0, 0x1B6C, 0x75B1, 0x75B1, 0x1B6B, 0x75B2, 0x75B2, 0x0BC2,
+ 0x75B3, 0x75B4, 0x1B67, 0x75B5, 0x75B5, 0x0546, 0x75B6, 0x75B7, 0x3E64,
+ 0x75B8, 0x75B8, 0x1B69, 0x75B9, 0x75B9, 0x118F, 0x75BA, 0x75BB, 0x3E66,
+ 0x75BC, 0x75BC, 0x0E2E, 0x75BD, 0x75BD, 0x0901, 0x75BE, 0x75BE, 0x0825,
+ 0x75BF, 0x75C1, 0x3E68, 0x75C2, 0x75C2, 0x1B6E, 0x75C3, 0x75C3, 0x1B6D,
+ 0x75C4, 0x75C4, 0x1B6A, 0x75C5, 0x75C5, 0x0468, 0x75C6, 0x75C6, 0x3E6B,
+ 0x75C7, 0x75C7, 0x11A1, 0x75C8, 0x75C8, 0x109D, 0x75C9, 0x75C9, 0x08E6,
+ 0x75CA, 0x75CA, 0x0C87, 0x75CB, 0x75CC, 0x3E6C, 0x75CD, 0x75CD, 0x1B70,
+ 0x75CE, 0x75D1, 0x3E6E, 0x75D2, 0x75D2, 0x1020, 0x75D3, 0x75D3, 0x3E72,
+ 0x75D4, 0x75D4, 0x11CB, 0x75D5, 0x75D5, 0x0792, 0x75D6, 0x75D6, 0x1B6F,
+ 0x75D7, 0x75D7, 0x3E73, 0x75D8, 0x75D8, 0x05FA, 0x75D9, 0x75D9, 0x1FC6,
+ 0x75DA, 0x75DA, 0x3E74, 0x75DB, 0x75DB, 0x0E65, 0x75DC, 0x75DD, 0x3E75,
+ 0x75DE, 0x75DE, 0x0BC5, 0x75DF, 0x75E1, 0x3E77, 0x75E2, 0x75E2, 0x09EA,
+ 0x75E3, 0x75E3, 0x1B71, 0x75E4, 0x75E4, 0x1B74, 0x75E5, 0x75E5, 0x3E7A,
+ 0x75E6, 0x75E6, 0x1B73, 0x75E7, 0x75E7, 0x1B76, 0x75E8, 0x75E8, 0x1B72,
+ 0x75E9, 0x75E9, 0x3E7B, 0x75EA, 0x75EA, 0x07D3, 0x75EB, 0x75EB, 0x1B75,
+ 0x75EC, 0x75EF, 0x3E7C, 0x75F0, 0x75F0, 0x0E08, 0x75F1, 0x75F1, 0x1B78,
+ 0x75F2, 0x75F3, 0x3E80, 0x75F4, 0x75F4, 0x04FA, 0x75F5, 0x75F8, 0x3E82,
+ 0x75F9, 0x75F9, 0x043D, 0x75FA, 0x75FB, 0x3E86, 0x75FC, 0x75FC, 0x1B79,
+ 0x75FD, 0x75FE, 0x3E88, 0x75FF, 0x75FF, 0x1B7A, 0x7600, 0x7600, 0x1B7C,
+ 0x7601, 0x7601, 0x0564, 0x7602, 0x7602, 0x25AE, 0x7603, 0x7603, 0x1B77,
+ 0x7604, 0x7604, 0x3E8A, 0x7605, 0x7605, 0x1B7D, 0x7606, 0x7609, 0x3E8B,
+ 0x760A, 0x760A, 0x1B80, 0x760B, 0x760B, 0x1F01, 0x760C, 0x760C, 0x1B7E,
+ 0x760D, 0x760D, 0x2200, 0x760E, 0x760F, 0x3E8F, 0x7610, 0x7610, 0x1B7B,
+ 0x7611, 0x7614, 0x3E91, 0x7615, 0x7615, 0x1B83, 0x7616, 0x7616, 0x3E95,
+ 0x7617, 0x7617, 0x1B7F, 0x7618, 0x7618, 0x1B82, 0x7619, 0x7619, 0x1B84,
+ 0x761A, 0x761A, 0x3E96, 0x761B, 0x761B, 0x1B85, 0x761C, 0x761D, 0x3E97,
+ 0x761E, 0x761E, 0x25B2, 0x761F, 0x761F, 0x0ED0, 0x7620, 0x7620, 0x1B88,
+ 0x7621, 0x7621, 0x1E97, 0x7622, 0x7622, 0x1B87, 0x7623, 0x7623, 0x3E99,
+ 0x7624, 0x7624, 0x0A3F, 0x7625, 0x7625, 0x1B81, 0x7626, 0x7626, 0x0D74,
+ 0x7627, 0x7627, 0x20AB, 0x7628, 0x7628, 0x3E9A, 0x7629, 0x7629, 0x0574,
+ 0x762A, 0x762A, 0x045A, 0x762B, 0x762B, 0x0E04, 0x762C, 0x762C, 0x3E9B,
+ 0x762D, 0x762D, 0x1B8A, 0x762E, 0x762F, 0x3E9C, 0x7630, 0x7630, 0x1B8B,
+ 0x7631, 0x7632, 0x3E9E, 0x7633, 0x7633, 0x1B90, 0x7634, 0x7634, 0x116F,
+ 0x7635, 0x7635, 0x1B8D, 0x7636, 0x7637, 0x3EA0, 0x7638, 0x7638, 0x0C8E,
+ 0x7639, 0x763A, 0x3EA2, 0x763B, 0x763B, 0x25B3, 0x763C, 0x763C, 0x1B86,
+ 0x763D, 0x763D, 0x3EA4, 0x763E, 0x763E, 0x1B8F, 0x763F, 0x763F, 0x1B8C,
+ 0x7640, 0x7640, 0x1B89, 0x7641, 0x7641, 0x3EA5, 0x7642, 0x7642, 0x2028,
+ 0x7643, 0x7643, 0x1B8E, 0x7644, 0x7645, 0x3EA6, 0x7646, 0x7647, 0x25AF,
+ 0x7648, 0x7648, 0x3EA8, 0x7649, 0x7649, 0x25B1, 0x764A, 0x764B, 0x3EA9,
+ 0x764C, 0x764C, 0x03B4, 0x764D, 0x764D, 0x1B91, 0x764E, 0x7653, 0x3EAB,
+ 0x7654, 0x7654, 0x1B93, 0x7655, 0x7655, 0x3EB1, 0x7656, 0x7656, 0x1B95,
+ 0x7657, 0x7657, 0x3EB2, 0x7658, 0x7658, 0x25AC, 0x7659, 0x765B, 0x3EB3,
+ 0x765C, 0x765C, 0x1B94, 0x765D, 0x765D, 0x3EB6, 0x765E, 0x765E, 0x1B92,
+ 0x765F, 0x765F, 0x1E4E, 0x7660, 0x7661, 0x3EB7, 0x7662, 0x7662, 0x2202,
+ 0x7663, 0x7663, 0x0FCB, 0x7664, 0x7664, 0x25AB, 0x7665, 0x7665, 0x2286,
+ 0x7666, 0x7666, 0x3EB9, 0x7667, 0x7667, 0x25AD, 0x7668, 0x7668, 0x3EBA,
+ 0x7669, 0x7669, 0x25B6, 0x766A, 0x766A, 0x3EBB, 0x766B, 0x766B, 0x1B96,
+ 0x766C, 0x766C, 0x21E3, 0x766D, 0x766E, 0x25B4, 0x766F, 0x766F, 0x1B97,
+ 0x7670, 0x7670, 0x222F, 0x7671, 0x7671, 0x2165, 0x7672, 0x7672, 0x25B7,
+ 0x7673, 0x7677, 0x3EBC, 0x7678, 0x7678, 0x0748, 0x7679, 0x767A, 0x3EC1,
+ 0x767B, 0x767B, 0x05A8, 0x767C, 0x767C, 0x1EE9, 0x767D, 0x767D, 0x03E2,
+ 0x767E, 0x767E, 0x03E4, 0x767F, 0x7681, 0x3EC3, 0x7682, 0x7682, 0x1130,
+ 0x7683, 0x7683, 0x3EC6, 0x7684, 0x7684, 0x05A5, 0x7685, 0x7685, 0x3EC7,
+ 0x7686, 0x7686, 0x08A5, 0x7687, 0x7687, 0x07DF, 0x7688, 0x7688, 0x1B2D,
+ 0x7689, 0x768A, 0x3EC8, 0x768B, 0x768B, 0x06D9, 0x768C, 0x768D, 0x3ECA,
+ 0x768E, 0x768E, 0x1B2E, 0x768F, 0x7690, 0x3ECC, 0x7691, 0x7691, 0x03B3,
+ 0x7692, 0x7692, 0x3ECE, 0x7693, 0x7693, 0x1B2F, 0x7694, 0x7695, 0x3ECF,
+ 0x7696, 0x7696, 0x0E9F, 0x7697, 0x7698, 0x3ED1, 0x7699, 0x7699, 0x1B30,
+ 0x769A, 0x769A, 0x1E25, 0x769B, 0x76A3, 0x3ED3, 0x76A4, 0x76A4, 0x1B31,
+ 0x76A5, 0x76AD, 0x3EDC, 0x76AE, 0x76AE, 0x0BC3, 0x76AF, 0x76B0, 0x3EE5,
+ 0x76B1, 0x76B1, 0x11E4, 0x76B2, 0x76B2, 0x1BC8, 0x76B3, 0x76B3, 0x3EE7,
+ 0x76B4, 0x76B4, 0x1BC9, 0x76B5, 0x76B7, 0x3EE8, 0x76B8, 0x76B8, 0x25C0,
+ 0x76B9, 0x76B9, 0x3EEB, 0x76BA, 0x76BA, 0x229A, 0x76BB, 0x76BE, 0x3EEC,
+ 0x76BF, 0x76BF, 0x0AF8, 0x76C0, 0x76C1, 0x3EF0, 0x76C2, 0x76C2, 0x10C0,
+ 0x76C3, 0x76C4, 0x3EF2, 0x76C5, 0x76C5, 0x11D0, 0x76C6, 0x76C6, 0x0BA9,
+ 0x76C7, 0x76C7, 0x3EF4, 0x76C8, 0x76C8, 0x1094, 0x76C9, 0x76C9, 0x3EF5,
+ 0x76CA, 0x76CA, 0x106D, 0x76CB, 0x76CC, 0x3EF6, 0x76CD, 0x76CD, 0x1A8B,
+ 0x76CE, 0x76CE, 0x03C6, 0x76CF, 0x76CF, 0x1156, 0x76D0, 0x76D0, 0x0FF7,
+ 0x76D1, 0x76D1, 0x0853, 0x76D2, 0x76D2, 0x0787, 0x76D3, 0x76D3, 0x3EF8,
+ 0x76D4, 0x76D4, 0x0985, 0x76D5, 0x76D5, 0x3EF9, 0x76D6, 0x76D6, 0x06C2,
+ 0x76D7, 0x76D7, 0x05A2, 0x76D8, 0x76D8, 0x0B8D, 0x76D9, 0x76DA, 0x3EFA,
+ 0x76DB, 0x76DB, 0x0D39, 0x76DC, 0x76DD, 0x3EFC, 0x76DE, 0x76DE, 0x226E,
+ 0x76DF, 0x76DF, 0x0AD0, 0x76E0, 0x76E0, 0x3EFE, 0x76E1, 0x76E1, 0x1FBD,
+ 0x76E2, 0x76E2, 0x3EFF, 0x76E3, 0x76E3, 0x1F84, 0x76E4, 0x76E4, 0x20B2,
+ 0x76E5, 0x76E5, 0x1A8C, 0x76E6, 0x76E6, 0x3F00, 0x76E7, 0x76E7, 0x2043,
+ 0x76E8, 0x76ED, 0x3F01, 0x76EE, 0x76EE, 0x0B22, 0x76EF, 0x76EF, 0x05E1,
+ 0x76F0, 0x76F0, 0x3F07, 0x76F1, 0x76F1, 0x1A58, 0x76F2, 0x76F2, 0x0AA9,
+ 0x76F3, 0x76F3, 0x3F08, 0x76F4, 0x76F4, 0x11B0, 0x76F5, 0x76F7, 0x3F09,
+ 0x76F8, 0x76F8, 0x0F4D, 0x76F9, 0x76F9, 0x1A5B, 0x76FA, 0x76FB, 0x3F0C,
+ 0x76FC, 0x76FC, 0x0B8F, 0x76FD, 0x76FD, 0x3F0E, 0x76FE, 0x76FE, 0x061B,
+ 0x76FF, 0x76FF, 0x3F0F, 0x7700, 0x7700, 0x3F10, 0x7701, 0x7701, 0x0D38,
+ 0x7702, 0x7703, 0x3F11, 0x7704, 0x7704, 0x1A59, 0x7705, 0x7706, 0x3F13,
+ 0x7707, 0x7708, 0x1A5C, 0x7709, 0x7709, 0x0AC1, 0x770A, 0x770A, 0x3F15,
+ 0x770B, 0x770B, 0x0941, 0x770C, 0x770C, 0x3F16, 0x770D, 0x770D, 0x1A5A,
+ 0x770E, 0x7718, 0x3F17, 0x7719, 0x7719, 0x1A60, 0x771A, 0x771A, 0x1A5E,
+ 0x771B, 0x771E, 0x3F22, 0x771F, 0x771F, 0x1187, 0x7720, 0x7720, 0x0AE4,
+ 0x7721, 0x7721, 0x3F26, 0x7722, 0x7722, 0x1A5F, 0x7723, 0x7725, 0x3F27,
+ 0x7726, 0x7726, 0x1A62, 0x7727, 0x7727, 0x3F2A, 0x7728, 0x7728, 0x1144,
+ 0x7729, 0x7729, 0x0FCC, 0x772A, 0x772C, 0x3F2B, 0x772D, 0x772D, 0x1A61,
+ 0x772E, 0x772E, 0x3F2E, 0x772F, 0x772F, 0x0AD5, 0x7730, 0x7734, 0x3F2F,
+ 0x7735, 0x7735, 0x1A63, 0x7736, 0x7736, 0x0981, 0x7737, 0x7737, 0x091B,
+ 0x7738, 0x7738, 0x1A64, 0x7739, 0x7739, 0x3F34, 0x773A, 0x773A, 0x0E4A,
+ 0x773B, 0x773B, 0x3F35, 0x773C, 0x773C, 0x1004, 0x773D, 0x773F, 0x3F36,
+ 0x7740, 0x7740, 0x1222, 0x7741, 0x7741, 0x1197, 0x7742, 0x7742, 0x3F39,
+ 0x7743, 0x7743, 0x1A68, 0x7744, 0x7746, 0x3F3A, 0x7747, 0x7747, 0x1A67,
+ 0x7748, 0x774E, 0x3F3D, 0x774F, 0x774F, 0x2684, 0x7750, 0x7751, 0x1A65,
+ 0x7752, 0x7759, 0x3F44, 0x775A, 0x775A, 0x1A69, 0x775B, 0x775B, 0x08D5,
+ 0x775C, 0x775D, 0x3F4C, 0x775E, 0x775E, 0x24EF, 0x775F, 0x7760, 0x3F4E,
+ 0x7761, 0x7761, 0x0DA4, 0x7762, 0x7762, 0x1A6B, 0x7763, 0x7763, 0x05FC,
+ 0x7764, 0x7764, 0x3F50, 0x7765, 0x7765, 0x1A6C, 0x7766, 0x7766, 0x0B23,
+ 0x7767, 0x7767, 0x3F51, 0x7768, 0x7768, 0x1A6A, 0x7769, 0x776A, 0x3F52,
+ 0x776B, 0x776B, 0x08AF, 0x776C, 0x776C, 0x048E, 0x776D, 0x7778, 0x3F54,
+ 0x7779, 0x7779, 0x0602, 0x777A, 0x777C, 0x3F60, 0x777D, 0x777D, 0x1A6F,
+ 0x777E, 0x777E, 0x1270, 0x777F, 0x777F, 0x1A6D, 0x7780, 0x7780, 0x1A70,
+ 0x7781, 0x7783, 0x3F63, 0x7784, 0x7784, 0x0AEE, 0x7785, 0x7785, 0x0517,
+ 0x7786, 0x778B, 0x3F66, 0x778C, 0x778C, 0x1A71, 0x778D, 0x778D, 0x1A6E,
+ 0x778E, 0x778E, 0x0F26, 0x778F, 0x7790, 0x3F6C, 0x7791, 0x7791, 0x1A72,
+ 0x7792, 0x7792, 0x0A9E, 0x7793, 0x7797, 0x3F6E, 0x7798, 0x7798, 0x24EE,
+ 0x7799, 0x779D, 0x3F73, 0x779E, 0x779E, 0x2074, 0x779F, 0x77A0, 0x1A73,
+ 0x77A1, 0x77A1, 0x3F78, 0x77A2, 0x77A2, 0x1495, 0x77A3, 0x77A4, 0x3F79,
+ 0x77A5, 0x77A5, 0x0BD2, 0x77A6, 0x77A6, 0x3F7B, 0x77A7, 0x77A7, 0x0C43,
+ 0x77A8, 0x77A8, 0x3F7C, 0x77A9, 0x77A9, 0x11F4, 0x77AA, 0x77AA, 0x05AA,
+ 0x77AB, 0x77AB, 0x3F7D, 0x77AC, 0x77AC, 0x0DA7, 0x77AD, 0x77AD, 0x2687,
+ 0x77AE, 0x77AF, 0x3F7E, 0x77B0, 0x77B0, 0x1A75, 0x77B1, 0x77B2, 0x3F80,
+ 0x77B3, 0x77B3, 0x0E5C, 0x77B4, 0x77B4, 0x3F82, 0x77B5, 0x77B5, 0x1A76,
+ 0x77B6, 0x77BA, 0x3F83, 0x77BB, 0x77BB, 0x1151, 0x77BC, 0x77BC, 0x24F0,
+ 0x77BD, 0x77BD, 0x1A77, 0x77BE, 0x77BE, 0x3F88, 0x77BF, 0x77BF, 0x1D7E,
+ 0x77C0, 0x77C6, 0x3F89, 0x77C7, 0x77C7, 0x268D, 0x77C8, 0x77CC, 0x3F90,
+ 0x77CD, 0x77CD, 0x1397, 0x77CE, 0x77D6, 0x3F95, 0x77D7, 0x77D7, 0x0526,
+ 0x77D8, 0x77D9, 0x3F9E, 0x77DA, 0x77DA, 0x22A0, 0x77DB, 0x77DB, 0x0AB1,
+ 0x77DC, 0x77DC, 0x1BCA, 0x77DD, 0x77E1, 0x3FA0, 0x77E2, 0x77E2, 0x0D4F,
+ 0x77E3, 0x77E3, 0x105A, 0x77E4, 0x77E4, 0x3FA5, 0x77E5, 0x77E5, 0x11A9,
+ 0x77E6, 0x77E6, 0x3FA6, 0x77E7, 0x77E7, 0x1B1A, 0x77E8, 0x77E8, 0x3FA7,
+ 0x77E9, 0x77E9, 0x0907, 0x77EA, 0x77EA, 0x3FA8, 0x77EB, 0x77EB, 0x0894,
+ 0x77EC, 0x77EC, 0x1B1B, 0x77ED, 0x77ED, 0x060B, 0x77EE, 0x77EE, 0x03B6,
+ 0x77EF, 0x77EF, 0x1FAB, 0x77F0, 0x77F2, 0x3FA9, 0x77F3, 0x77F3, 0x0D46,
+ 0x77F4, 0x77F5, 0x3FAC, 0x77F6, 0x77F6, 0x1A22, 0x77F7, 0x77F7, 0x3FAE,
+ 0x77F8, 0x77F8, 0x1A23, 0x77F9, 0x77FC, 0x3FAF, 0x77FD, 0x77FD, 0x0F08,
+ 0x77FE, 0x77FE, 0x064C, 0x77FF, 0x77FF, 0x0980, 0x7800, 0x7800, 0x1A24,
+ 0x7801, 0x7801, 0x0A92, 0x7802, 0x7802, 0x0CE9, 0x7803, 0x7808, 0x3FB3,
+ 0x7809, 0x7809, 0x1A25, 0x780A, 0x780B, 0x3FB9, 0x780C, 0x780C, 0x0C15,
+ 0x780D, 0x780D, 0x0940, 0x780E, 0x7810, 0x3FBB, 0x7811, 0x7811, 0x1A28,
+ 0x7812, 0x7812, 0x0BB9, 0x7813, 0x7813, 0x3FBE, 0x7814, 0x7814, 0x0FF9,
+ 0x7815, 0x7815, 0x3FBF, 0x7816, 0x7816, 0x1206, 0x7817, 0x7818, 0x1A26,
+ 0x7819, 0x7819, 0x3FC0, 0x781A, 0x781A, 0x100B, 0x781B, 0x781B, 0x3FC1,
+ 0x781C, 0x781D, 0x1A2B, 0x781E, 0x781E, 0x3FC2, 0x781F, 0x781F, 0x1A30,
+ 0x7820, 0x7822, 0x3FC3, 0x7823, 0x7823, 0x1A34, 0x7824, 0x7824, 0x3FC6,
+ 0x7825, 0x7825, 0x1A32, 0x7826, 0x7826, 0x1A3A, 0x7827, 0x7827, 0x1189,
+ 0x7828, 0x7828, 0x3FC7, 0x7829, 0x7829, 0x1A35, 0x782A, 0x782B, 0x3FC8,
+ 0x782C, 0x782C, 0x1A33, 0x782D, 0x782D, 0x1A2A, 0x782E, 0x782F, 0x3FCA,
+ 0x7830, 0x7830, 0x0BAA, 0x7831, 0x7833, 0x3FCC, 0x7834, 0x7834, 0x0BE5,
+ 0x7835, 0x7836, 0x3FCF, 0x7837, 0x7837, 0x0D22, 0x7838, 0x7838, 0x1115,
+ 0x7839, 0x783B, 0x1A2D, 0x783C, 0x783C, 0x1A31, 0x783D, 0x783D, 0x3FD1,
+ 0x783E, 0x783E, 0x09E4, 0x783F, 0x783F, 0x3FD2, 0x7840, 0x7840, 0x0524,
+ 0x7841, 0x7842, 0x3FD3, 0x7843, 0x7843, 0x26A8, 0x7844, 0x7844, 0x3FD5,
+ 0x7845, 0x7845, 0x0741, 0x7846, 0x7846, 0x3FD6, 0x7847, 0x7847, 0x1A3C,
+ 0x7848, 0x784B, 0x3FD7, 0x784C, 0x784C, 0x1A3D, 0x784D, 0x784D, 0x3FDB,
+ 0x784E, 0x784E, 0x1A36, 0x784F, 0x784F, 0x3FDC, 0x7850, 0x7850, 0x1A3B,
+ 0x7851, 0x7851, 0x3FDD, 0x7852, 0x7852, 0x0F07, 0x7853, 0x7854, 0x3FDE,
+ 0x7855, 0x7855, 0x0DAB, 0x7856, 0x7857, 0x1A38, 0x7858, 0x785C, 0x3FE0,
+ 0x785D, 0x785D, 0x0F62, 0x785E, 0x7863, 0x3FE5, 0x7864, 0x7864, 0x24E9,
+ 0x7865, 0x7867, 0x3FEB, 0x7868, 0x7868, 0x24E5, 0x7869, 0x7869, 0x3FEE,
+ 0x786A, 0x786A, 0x1A3E, 0x786B, 0x786B, 0x0A3B, 0x786C, 0x786C, 0x1097,
+ 0x786D, 0x786D, 0x1A37, 0x786E, 0x786E, 0x0C92, 0x786F, 0x786F, 0x21FA,
+ 0x7870, 0x7876, 0x3FEF, 0x7877, 0x7877, 0x0862, 0x7878, 0x787B, 0x3FF6,
+ 0x787C, 0x787C, 0x0BB1, 0x787D, 0x7886, 0x3FFA, 0x7887, 0x7887, 0x1A42,
+ 0x7888, 0x7888, 0x4004, 0x7889, 0x7889, 0x05D0, 0x788A, 0x788B, 0x4005,
+ 0x788C, 0x788C, 0x0A5C, 0x788D, 0x788D, 0x03B8, 0x788E, 0x788E, 0x0DDE,
+ 0x788F, 0x7890, 0x4007, 0x7891, 0x7891, 0x0417, 0x7892, 0x7892, 0x4009,
+ 0x7893, 0x7893, 0x1A40, 0x7894, 0x7896, 0x400A, 0x7897, 0x7897, 0x0E9C,
+ 0x7898, 0x7898, 0x05C3, 0x7899, 0x7899, 0x400D, 0x789A, 0x789A, 0x1A41,
+ 0x789B, 0x789B, 0x1A3F, 0x789C, 0x789C, 0x1A43, 0x789D, 0x789E, 0x400E,
+ 0x789F, 0x789F, 0x05DB, 0x78A0, 0x78A0, 0x4010, 0x78A1, 0x78A1, 0x1A44,
+ 0x78A2, 0x78A2, 0x4011, 0x78A3, 0x78A3, 0x1A45, 0x78A4, 0x78A4, 0x4012,
+ 0x78A5, 0x78A5, 0x1A48, 0x78A6, 0x78A6, 0x4013, 0x78A7, 0x78A7, 0x0435,
+ 0x78A8, 0x78A8, 0x4014, 0x78A9, 0x78A9, 0x2148, 0x78AA, 0x78AC, 0x4015,
+ 0x78AD, 0x78AD, 0x24E4, 0x78AE, 0x78AF, 0x4018, 0x78B0, 0x78B0, 0x0BB7,
+ 0x78B1, 0x78B1, 0x0861, 0x78B2, 0x78B2, 0x1A46, 0x78B3, 0x78B3, 0x0E0F,
+ 0x78B4, 0x78B4, 0x04B1, 0x78B5, 0x78B7, 0x401A, 0x78B8, 0x78B8, 0x24E6,
+ 0x78B9, 0x78B9, 0x1A47, 0x78BA, 0x78BA, 0x20F7, 0x78BB, 0x78BB, 0x401D,
+ 0x78BC, 0x78BC, 0x206B, 0x78BD, 0x78BD, 0x401E, 0x78BE, 0x78BE, 0x0B4E,
+ 0x78BF, 0x78C0, 0x401F, 0x78C1, 0x78C1, 0x0548, 0x78C2, 0x78C4, 0x4021,
+ 0x78C5, 0x78C5, 0x0400, 0x78C6, 0x78C8, 0x4024, 0x78C9, 0x78C9, 0x1A4B,
+ 0x78CA, 0x78CA, 0x09C5, 0x78CB, 0x78CB, 0x056B, 0x78CC, 0x78CF, 0x4027,
+ 0x78D0, 0x78D0, 0x0B8E, 0x78D1, 0x78D3, 0x402B, 0x78D4, 0x78D4, 0x1A49,
+ 0x78D5, 0x78D5, 0x0951, 0x78D6, 0x78D8, 0x402E, 0x78D9, 0x78D9, 0x1A4A,
+ 0x78DA, 0x78DA, 0x22A7, 0x78DB, 0x78E2, 0x4031, 0x78E3, 0x78E3, 0x24EC,
+ 0x78E4, 0x78E6, 0x4039, 0x78E7, 0x78E7, 0x24EB, 0x78E8, 0x78E8, 0x0B08,
+ 0x78E9, 0x78EB, 0x403C, 0x78EC, 0x78EC, 0x1A4C, 0x78ED, 0x78EE, 0x403F,
+ 0x78EF, 0x78EF, 0x24E3, 0x78F0, 0x78F1, 0x4041, 0x78F2, 0x78F2, 0x1A4D,
+ 0x78F3, 0x78F3, 0x4043, 0x78F4, 0x78F4, 0x1A4F, 0x78F5, 0x78F6, 0x4044,
+ 0x78F7, 0x78F7, 0x0A20, 0x78F8, 0x78F9, 0x4046, 0x78FA, 0x78FA, 0x07DC,
+ 0x78FB, 0x78FC, 0x4048, 0x78FD, 0x78FD, 0x24EA, 0x78FE, 0x78FF, 0x404A,
+ 0x7900, 0x7900, 0x404C, 0x7901, 0x7901, 0x0889, 0x7902, 0x7904, 0x404D,
+ 0x7905, 0x7905, 0x1A4E, 0x7906, 0x790D, 0x4050, 0x790E, 0x790E, 0x1E92,
+ 0x790F, 0x7912, 0x4058, 0x7913, 0x7913, 0x1A50, 0x7914, 0x7918, 0x405C,
+ 0x7919, 0x7919, 0x1E27, 0x791A, 0x791D, 0x4061, 0x791E, 0x791E, 0x1A52,
+ 0x791F, 0x7923, 0x4065, 0x7924, 0x7924, 0x1A51, 0x7925, 0x7925, 0x406A,
+ 0x7926, 0x7926, 0x1FE6, 0x7927, 0x7929, 0x406B, 0x792A, 0x792A, 0x24E7,
+ 0x792B, 0x792B, 0x2012, 0x792C, 0x792C, 0x1EEC, 0x792D, 0x7930, 0x406E,
+ 0x7931, 0x7931, 0x24E8, 0x7932, 0x7933, 0x4072, 0x7934, 0x7934, 0x1A53,
+ 0x7935, 0x7939, 0x4074, 0x793A, 0x793A, 0x0D55, 0x793B, 0x793B, 0x19F8,
+ 0x793C, 0x793C, 0x09DC, 0x793D, 0x793D, 0x4079, 0x793E, 0x793E, 0x0D20,
+ 0x793F, 0x793F, 0x407A, 0x7940, 0x7940, 0x19F9, 0x7941, 0x7941, 0x0C0D,
+ 0x7942, 0x7945, 0x407B, 0x7946, 0x7946, 0x19FA, 0x7947, 0x7947, 0x407F,
+ 0x7948, 0x7948, 0x0C0C, 0x7949, 0x7949, 0x19FB, 0x794A, 0x7952, 0x4080,
+ 0x7953, 0x7953, 0x19FE, 0x7954, 0x7955, 0x4089, 0x7956, 0x7956, 0x1243,
+ 0x7957, 0x7957, 0x1A01, 0x7958, 0x7959, 0x408B, 0x795A, 0x795A, 0x19FF,
+ 0x795B, 0x795C, 0x19FC, 0x795D, 0x795D, 0x1200, 0x795E, 0x795E, 0x0D2A,
+ 0x795F, 0x795F, 0x0DE3, 0x7960, 0x7960, 0x1A02, 0x7961, 0x7961, 0x408D,
+ 0x7962, 0x7962, 0x1A00, 0x7963, 0x7964, 0x408E, 0x7965, 0x7965, 0x0F56,
+ 0x7966, 0x7966, 0x4090, 0x7967, 0x7967, 0x1A04, 0x7968, 0x7968, 0x0BD0,
+ 0x7969, 0x796C, 0x4091, 0x796D, 0x796D, 0x0833, 0x796E, 0x796E, 0x4095,
+ 0x796F, 0x796F, 0x1A03, 0x7970, 0x7976, 0x4096, 0x7977, 0x7977, 0x059C,
+ 0x7978, 0x7978, 0x080B, 0x7979, 0x7979, 0x409D, 0x797A, 0x797A, 0x1A05,
+ 0x797B, 0x797F, 0x409E, 0x7980, 0x7980, 0x130B, 0x7981, 0x7981, 0x08CC,
+ 0x7982, 0x7983, 0x40A3, 0x7984, 0x7984, 0x0A62, 0x7985, 0x7985, 0x1A06,
+ 0x7986, 0x7989, 0x40A5, 0x798A, 0x798A, 0x1A07, 0x798B, 0x798C, 0x40A9,
+ 0x798D, 0x798D, 0x1F66, 0x798E, 0x798E, 0x24DC, 0x798F, 0x798F, 0x069E,
+ 0x7990, 0x7999, 0x40AB, 0x799A, 0x799A, 0x1A08, 0x799B, 0x79A5, 0x40B5,
+ 0x79A6, 0x79A6, 0x26A2, 0x79A7, 0x79A7, 0x1A09, 0x79A8, 0x79A9, 0x40C0,
+ 0x79AA, 0x79AA, 0x24DD, 0x79AB, 0x79AD, 0x40C2, 0x79AE, 0x79AE, 0x200E,
+ 0x79AF, 0x79AF, 0x40C5, 0x79B0, 0x79B0, 0x24DB, 0x79B1, 0x79B1, 0x1EB8,
+ 0x79B2, 0x79B2, 0x40C6, 0x79B3, 0x79B3, 0x1A0A, 0x79B4, 0x79B8, 0x40C7,
+ 0x79B9, 0x79B9, 0x10D2, 0x79BA, 0x79BA, 0x1264, 0x79BB, 0x79BB, 0x09D6,
+ 0x79BC, 0x79BC, 0x40CC, 0x79BD, 0x79BD, 0x0C5A, 0x79BE, 0x79BE, 0x0783,
+ 0x79BF, 0x79BF, 0x40CD, 0x79C0, 0x79C0, 0x0FAE, 0x79C1, 0x79C1, 0x0DB2,
+ 0x79C2, 0x79C2, 0x40CE, 0x79C3, 0x79C3, 0x0E6B, 0x79C4, 0x79C5, 0x40CF,
+ 0x79C6, 0x79C6, 0x06CC, 0x79C7, 0x79C8, 0x40D1, 0x79C9, 0x79C9, 0x0465,
+ 0x79CA, 0x79CA, 0x40D3, 0x79CB, 0x79CB, 0x0C6C, 0x79CC, 0x79CC, 0x40D4,
+ 0x79CD, 0x79CD, 0x11D5, 0x79CE, 0x79D0, 0x40D5, 0x79D1, 0x79D1, 0x0953,
+ 0x79D2, 0x79D2, 0x0AF0, 0x79D3, 0x79D4, 0x40D8, 0x79D5, 0x79D5, 0x1B1D,
+ 0x79D6, 0x79D7, 0x40DA, 0x79D8, 0x79D8, 0x0ADD, 0x79D9, 0x79DE, 0x40DC,
+ 0x79DF, 0x79DF, 0x123F, 0x79E0, 0x79E2, 0x40E2, 0x79E3, 0x79E3, 0x1B1F,
+ 0x79E4, 0x79E4, 0x04F8, 0x79E5, 0x79E5, 0x40E5, 0x79E6, 0x79E6, 0x0C55,
+ 0x79E7, 0x79E7, 0x1016, 0x79E8, 0x79E8, 0x40E6, 0x79E9, 0x79E9, 0x11C7,
+ 0x79EA, 0x79EA, 0x40E7, 0x79EB, 0x79EB, 0x1B20, 0x79EC, 0x79EC, 0x40E8,
+ 0x79ED, 0x79ED, 0x1B1E, 0x79EE, 0x79EE, 0x40E9, 0x79EF, 0x79EF, 0x0812,
+ 0x79F0, 0x79F0, 0x04EB, 0x79F1, 0x79F7, 0x40EA, 0x79F8, 0x79F8, 0x08A6,
+ 0x79F9, 0x79FA, 0x40F1, 0x79FB, 0x79FB, 0x104D, 0x79FC, 0x79FC, 0x40F3,
+ 0x79FD, 0x79FD, 0x07F5, 0x79FE, 0x79FF, 0x40F4, 0x7A00, 0x7A00, 0x0F0E,
+ 0x7A01, 0x7A01, 0x40F6, 0x7A02, 0x7A02, 0x1B24, 0x7A03, 0x7A03, 0x1B23,
+ 0x7A04, 0x7A05, 0x40F7, 0x7A06, 0x7A06, 0x1B21, 0x7A07, 0x7A0A, 0x40F9,
+ 0x7A0B, 0x7A0B, 0x04F1, 0x7A0C, 0x7A0C, 0x40FD, 0x7A0D, 0x7A0D, 0x0D0D,
+ 0x7A0E, 0x7A0E, 0x0DA5, 0x7A0F, 0x7A13, 0x40FE, 0x7A14, 0x7A14, 0x1B26,
+ 0x7A15, 0x7A16, 0x4103, 0x7A17, 0x7A17, 0x03E9, 0x7A18, 0x7A19, 0x4105,
+ 0x7A1A, 0x7A1A, 0x11C8, 0x7A1B, 0x7A1D, 0x4107, 0x7A1E, 0x7A1E, 0x1B25,
+ 0x7A1F, 0x7A1F, 0x410A, 0x7A20, 0x7A20, 0x0512, 0x7A21, 0x7A22, 0x410B,
+ 0x7A23, 0x7A23, 0x1D8F, 0x7A24, 0x7A2D, 0x410D, 0x7A2E, 0x7A2E, 0x2295,
+ 0x7A2F, 0x7A30, 0x4117, 0x7A31, 0x7A31, 0x1E80, 0x7A32, 0x7A32, 0x4119,
+ 0x7A33, 0x7A33, 0x0ED7, 0x7A34, 0x7A36, 0x411A, 0x7A37, 0x7A37, 0x1B28,
+ 0x7A38, 0x7A38, 0x411D, 0x7A39, 0x7A39, 0x1B27, 0x7A3A, 0x7A3A, 0x411E,
+ 0x7A3B, 0x7A3B, 0x059F, 0x7A3C, 0x7A3C, 0x084D, 0x7A3D, 0x7A3D, 0x0811,
+ 0x7A3E, 0x7A3E, 0x411F, 0x7A3F, 0x7A3F, 0x06E0, 0x7A40, 0x7A40, 0x2677,
+ 0x7A41, 0x7A45, 0x4120, 0x7A46, 0x7A46, 0x0B25, 0x7A47, 0x7A4B, 0x4125,
+ 0x7A4C, 0x7A4C, 0x2624, 0x7A4D, 0x7A4D, 0x1F69, 0x7A4E, 0x7A4E, 0x222B,
+ 0x7A4F, 0x7A50, 0x412A, 0x7A51, 0x7A51, 0x1B29, 0x7A52, 0x7A56, 0x412C,
+ 0x7A57, 0x7A57, 0x0DE0, 0x7A58, 0x7A60, 0x4131, 0x7A61, 0x7A61, 0x257F,
+ 0x7A62, 0x7A62, 0x1F5B, 0x7A63, 0x7A68, 0x413A, 0x7A69, 0x7A69, 0x219B,
+ 0x7A6A, 0x7A6A, 0x4140, 0x7A6B, 0x7A6B, 0x267D, 0x7A6C, 0x7A6F, 0x4141,
+ 0x7A70, 0x7A70, 0x1B2C, 0x7A71, 0x7A73, 0x4145, 0x7A74, 0x7A74, 0x0FD1,
+ 0x7A75, 0x7A75, 0x4148, 0x7A76, 0x7A76, 0x08EE, 0x7A77, 0x7A77, 0x0C6B,
+ 0x7A78, 0x7A79, 0x1B9A, 0x7A7A, 0x7A7A, 0x0962, 0x7A7B, 0x7A7E, 0x4149,
+ 0x7A7F, 0x7A7F, 0x052C, 0x7A80, 0x7A80, 0x1B9C, 0x7A81, 0x7A81, 0x0E6C,
+ 0x7A82, 0x7A82, 0x414D, 0x7A83, 0x7A83, 0x0C51, 0x7A84, 0x7A84, 0x114E,
+ 0x7A85, 0x7A85, 0x414E, 0x7A86, 0x7A86, 0x1B9D, 0x7A87, 0x7A87, 0x414F,
+ 0x7A88, 0x7A88, 0x1B9E, 0x7A89, 0x7A8C, 0x4150, 0x7A8D, 0x7A8D, 0x0C4C,
+ 0x7A8E, 0x7A90, 0x4154, 0x7A91, 0x7A91, 0x102B, 0x7A92, 0x7A92, 0x11CE,
+ 0x7A93, 0x7A94, 0x4157, 0x7A95, 0x7A95, 0x1B9F, 0x7A96, 0x7A96, 0x08A2,
+ 0x7A97, 0x7A97, 0x0533, 0x7A98, 0x7A98, 0x08EC, 0x7A99, 0x7A9B, 0x4159,
+ 0x7A9C, 0x7A9C, 0x055F, 0x7A9D, 0x7A9D, 0x0EE0, 0x7A9E, 0x7A9E, 0x415C,
+ 0x7A9F, 0x7A9F, 0x096C, 0x7AA0, 0x7AA0, 0x1BA1, 0x7AA1, 0x7AA4, 0x415D,
+ 0x7AA5, 0x7AA5, 0x0987, 0x7AA6, 0x7AA6, 0x1BA0, 0x7AA7, 0x7AA7, 0x4161,
+ 0x7AA8, 0x7AA8, 0x1BA3, 0x7AA9, 0x7AA9, 0x21A0, 0x7AAA, 0x7AAA, 0x2186,
+ 0x7AAB, 0x7AAB, 0x4162, 0x7AAC, 0x7AAC, 0x1BA2, 0x7AAD, 0x7AAD, 0x1BA4,
+ 0x7AAE, 0x7AAE, 0x20ED, 0x7AAF, 0x7AB2, 0x4163, 0x7AB3, 0x7AB3, 0x1BA5,
+ 0x7AB4, 0x7AB5, 0x4167, 0x7AB6, 0x7AB6, 0x25B9, 0x7AB7, 0x7AB9, 0x4169,
+ 0x7ABA, 0x7ABA, 0x1FEA, 0x7ABB, 0x7ABE, 0x416C, 0x7ABF, 0x7ABF, 0x0A47,
+ 0x7AC0, 0x7AC3, 0x4170, 0x7AC4, 0x7AC4, 0x1EA4, 0x7AC5, 0x7AC5, 0x20E1,
+ 0x7AC6, 0x7AC6, 0x4174, 0x7AC7, 0x7AC7, 0x25B8, 0x7AC8, 0x7AC8, 0x2260,
+ 0x7AC9, 0x7AC9, 0x4175, 0x7ACA, 0x7ACA, 0x20E2, 0x7ACB, 0x7ACB, 0x09EB,
+ 0x7ACC, 0x7AD5, 0x4176, 0x7AD6, 0x7AD6, 0x0D91, 0x7AD7, 0x7AD8, 0x4180,
+ 0x7AD9, 0x7AD9, 0x115F, 0x7ADA, 0x7ADD, 0x4182, 0x7ADE, 0x7ADE, 0x08E9,
+ 0x7ADF, 0x7ADF, 0x08E8, 0x7AE0, 0x7AE0, 0x1163, 0x7AE1, 0x7AE2, 0x4186,
+ 0x7AE3, 0x7AE3, 0x092F, 0x7AE4, 0x7AE4, 0x4188, 0x7AE5, 0x7AE5, 0x0E60,
+ 0x7AE6, 0x7AE6, 0x1B99, 0x7AE7, 0x7AE9, 0x4189, 0x7AEA, 0x7AEA, 0x2141,
+ 0x7AEB, 0x7AEC, 0x418C, 0x7AED, 0x7AED, 0x08B0, 0x7AEE, 0x7AEE, 0x418E,
+ 0x7AEF, 0x7AEF, 0x060A, 0x7AF0, 0x7AF5, 0x418F, 0x7AF6, 0x7AF6, 0x1FC7,
+ 0x7AF7, 0x7AF8, 0x4195, 0x7AF9, 0x7AF9, 0x11F0, 0x7AFA, 0x7AFA, 0x1C63,
+ 0x7AFB, 0x7AFC, 0x4197, 0x7AFD, 0x7AFD, 0x1C64, 0x7AFE, 0x7AFE, 0x4199,
+ 0x7AFF, 0x7AFF, 0x06C8, 0x7B00, 0x7B02, 0x419A, 0x7B03, 0x7B04, 0x1C66,
+ 0x7B05, 0x7B05, 0x419D, 0x7B06, 0x7B06, 0x03D5, 0x7B07, 0x7B07, 0x419E,
+ 0x7B08, 0x7B08, 0x1C65, 0x7B09, 0x7B09, 0x419F, 0x7B0A, 0x7B0A, 0x1C69,
+ 0x7B0B, 0x7B0B, 0x0DE6, 0x7B0C, 0x7B0E, 0x41A0, 0x7B0F, 0x7B0F, 0x1C6B,
+ 0x7B10, 0x7B10, 0x41A3, 0x7B11, 0x7B11, 0x0F71, 0x7B12, 0x7B13, 0x41A4,
+ 0x7B14, 0x7B14, 0x0433, 0x7B15, 0x7B15, 0x1C68, 0x7B16, 0x7B18, 0x41A6,
+ 0x7B19, 0x7B19, 0x1C6F, 0x7B1A, 0x7B1A, 0x41A9, 0x7B1B, 0x7B1B, 0x05B2,
+ 0x7B1C, 0x7B1D, 0x41AA, 0x7B1E, 0x7B1E, 0x1C77, 0x7B1F, 0x7B1F, 0x41AC,
+ 0x7B20, 0x7B20, 0x1C72, 0x7B21, 0x7B23, 0x41AD, 0x7B24, 0x7B24, 0x1C74,
+ 0x7B25, 0x7B25, 0x1C73, 0x7B26, 0x7B26, 0x0698, 0x7B27, 0x7B27, 0x41B0,
+ 0x7B28, 0x7B28, 0x0428, 0x7B29, 0x7B29, 0x41B1, 0x7B2A, 0x7B2A, 0x1C6E,
+ 0x7B2B, 0x7B2B, 0x1C6A, 0x7B2C, 0x7B2C, 0x05BB, 0x7B2D, 0x7B2D, 0x41B2,
+ 0x7B2E, 0x7B2E, 0x1C70, 0x7B2F, 0x7B30, 0x41B3, 0x7B31, 0x7B31, 0x1C71,
+ 0x7B32, 0x7B32, 0x41B5, 0x7B33, 0x7B33, 0x1C75, 0x7B34, 0x7B37, 0x41B6,
+ 0x7B38, 0x7B38, 0x1C6D, 0x7B39, 0x7B39, 0x41BA, 0x7B3A, 0x7B3A, 0x0856,
+ 0x7B3B, 0x7B3B, 0x41BB, 0x7B3C, 0x7B3C, 0x0A46, 0x7B3D, 0x7B3D, 0x41BC,
+ 0x7B3E, 0x7B3E, 0x1C76, 0x7B3F, 0x7B44, 0x41BD, 0x7B45, 0x7B45, 0x1C7A,
+ 0x7B46, 0x7B46, 0x1E41, 0x7B47, 0x7B47, 0x1C6C, 0x7B48, 0x7B48, 0x41C3,
+ 0x7B49, 0x7B49, 0x05A9, 0x7B4A, 0x7B4A, 0x41C4, 0x7B4B, 0x7B4B, 0x08BF,
+ 0x7B4C, 0x7B4C, 0x1C7C, 0x7B4D, 0x7B4E, 0x41C5, 0x7B4F, 0x7B4F, 0x0641,
+ 0x7B50, 0x7B50, 0x097D, 0x7B51, 0x7B51, 0x11FD, 0x7B52, 0x7B52, 0x0E63,
+ 0x7B53, 0x7B53, 0x41C7, 0x7B54, 0x7B54, 0x0573, 0x7B55, 0x7B55, 0x41C8,
+ 0x7B56, 0x7B56, 0x04A6, 0x7B57, 0x7B57, 0x41C9, 0x7B58, 0x7B58, 0x1C78,
+ 0x7B59, 0x7B59, 0x41CA, 0x7B5A, 0x7B5A, 0x1C79, 0x7B5B, 0x7B5B, 0x0CF1,
+ 0x7B5C, 0x7B5C, 0x41CB, 0x7B5D, 0x7B5D, 0x1C7D, 0x7B5E, 0x7B5F, 0x41CC,
+ 0x7B60, 0x7B60, 0x1C7E, 0x7B61, 0x7B61, 0x41CE, 0x7B62, 0x7B62, 0x1C81,
+ 0x7B63, 0x7B66, 0x41CF, 0x7B67, 0x7B67, 0x25E4, 0x7B68, 0x7B6D, 0x41D3,
+ 0x7B6E, 0x7B6E, 0x1C7F, 0x7B6F, 0x7B70, 0x41D9, 0x7B71, 0x7B71, 0x1C83,
+ 0x7B72, 0x7B72, 0x1C82, 0x7B73, 0x7B74, 0x41DB, 0x7B75, 0x7B75, 0x1C7B,
+ 0x7B76, 0x7B76, 0x41DD, 0x7B77, 0x7B77, 0x0977, 0x7B78, 0x7B78, 0x41DE,
+ 0x7B79, 0x7B79, 0x0514, 0x7B7A, 0x7B7A, 0x41DF, 0x7B7B, 0x7B7B, 0x1C80,
+ 0x7B7C, 0x7B7D, 0x41E0, 0x7B7E, 0x7B7E, 0x0C26, 0x7B7F, 0x7B7F, 0x41E2,
+ 0x7B80, 0x7B80, 0x0865, 0x7B81, 0x7B84, 0x41E3, 0x7B85, 0x7B85, 0x1C8B,
+ 0x7B86, 0x7B8A, 0x41E7, 0x7B8B, 0x7B8B, 0x1F86, 0x7B8C, 0x7B8C, 0x41EC,
+ 0x7B8D, 0x7B8D, 0x0718, 0x7B8E, 0x7B8F, 0x41ED, 0x7B90, 0x7B90, 0x1C84,
+ 0x7B91, 0x7B93, 0x41EF, 0x7B94, 0x7B94, 0x0474, 0x7B95, 0x7B95, 0x0813,
+ 0x7B96, 0x7B96, 0x41F2, 0x7B97, 0x7B97, 0x0DD8, 0x7B98, 0x7B9B, 0x41F3,
+ 0x7B9C, 0x7B9C, 0x1C8D, 0x7B9D, 0x7B9D, 0x1C89, 0x7B9E, 0x7BA0, 0x41F7,
+ 0x7BA1, 0x7BA1, 0x0735, 0x7BA2, 0x7BA2, 0x1C8E, 0x7BA3, 0x7BA5, 0x41FA,
+ 0x7BA6, 0x7BA7, 0x1C85, 0x7BA8, 0x7BA8, 0x1C8A, 0x7BA9, 0x7BA9, 0x0A88,
+ 0x7BAA, 0x7BAA, 0x1C8C, 0x7BAB, 0x7BAB, 0x1C8F, 0x7BAC, 0x7BAC, 0x1C88,
+ 0x7BAD, 0x7BAD, 0x0870, 0x7BAE, 0x7BB0, 0x41FD, 0x7BB1, 0x7BB1, 0x0F51,
+ 0x7BB2, 0x7BB3, 0x4200, 0x7BB4, 0x7BB4, 0x1C90, 0x7BB5, 0x7BB7, 0x4202,
+ 0x7BB8, 0x7BB8, 0x1C87, 0x7BB9, 0x7BBF, 0x4205, 0x7BC0, 0x7BC0, 0x1FB3,
+ 0x7BC1, 0x7BC1, 0x1C92, 0x7BC2, 0x7BC3, 0x420C, 0x7BC4, 0x7BC4, 0x1EEF,
+ 0x7BC5, 0x7BC5, 0x420E, 0x7BC6, 0x7BC6, 0x120A, 0x7BC7, 0x7BC7, 0x0BC9,
+ 0x7BC8, 0x7BC8, 0x420F, 0x7BC9, 0x7BC9, 0x22A4, 0x7BCA, 0x7BCA, 0x4210,
+ 0x7BCB, 0x7BCB, 0x25E8, 0x7BCC, 0x7BCC, 0x1C93, 0x7BCD, 0x7BD0, 0x4211,
+ 0x7BD1, 0x7BD1, 0x1C91, 0x7BD2, 0x7BD2, 0x4215, 0x7BD3, 0x7BD3, 0x0A4F,
+ 0x7BD4, 0x7BD8, 0x4216, 0x7BD9, 0x7BD9, 0x06D8, 0x7BDA, 0x7BDA, 0x1C95,
+ 0x7BDB, 0x7BDC, 0x421B, 0x7BDD, 0x7BDD, 0x1C94, 0x7BDE, 0x7BE0, 0x421D,
+ 0x7BE1, 0x7BE1, 0x055E, 0x7BE2, 0x7BE3, 0x4220, 0x7BE4, 0x7BE4, 0x25E3,
+ 0x7BE5, 0x7BE6, 0x1C96, 0x7BE7, 0x7BE8, 0x4222, 0x7BE9, 0x7BE9, 0x2111,
+ 0x7BEA, 0x7BEA, 0x1C98, 0x7BEB, 0x7BED, 0x4224, 0x7BEE, 0x7BEE, 0x09A5,
+ 0x7BEF, 0x7BF0, 0x4227, 0x7BF1, 0x7BF1, 0x09D4, 0x7BF2, 0x7BF2, 0x4229,
+ 0x7BF3, 0x7BF3, 0x25E6, 0x7BF4, 0x7BF6, 0x422A, 0x7BF7, 0x7BF7, 0x0BB2,
+ 0x7BF8, 0x7BFB, 0x422D, 0x7BFC, 0x7BFC, 0x1C9B, 0x7BFD, 0x7BFD, 0x4231,
+ 0x7BFE, 0x7BFE, 0x1C9A, 0x7BFF, 0x7BFF, 0x4232, 0x7C00, 0x7C00, 0x25E7,
+ 0x7C01, 0x7C06, 0x4233, 0x7C07, 0x7C07, 0x055B, 0x7C08, 0x7C0A, 0x4239,
+ 0x7C0B, 0x7C0B, 0x1C9E, 0x7C0C, 0x7C0C, 0x1C99, 0x7C0D, 0x7C0D, 0x2041,
+ 0x7C0E, 0x7C0E, 0x423C, 0x7C0F, 0x7C0F, 0x1C9C, 0x7C10, 0x7C15, 0x423D,
+ 0x7C16, 0x7C16, 0x1C9D, 0x7C17, 0x7C1D, 0x4243, 0x7C1E, 0x7C1E, 0x25EA,
+ 0x7C1F, 0x7C1F, 0x1C9F, 0x7C20, 0x7C20, 0x424A, 0x7C21, 0x7C21, 0x1F8F,
+ 0x7C22, 0x7C22, 0x424B, 0x7C23, 0x7C23, 0x25EC, 0x7C24, 0x7C25, 0x424C,
+ 0x7C26, 0x7C26, 0x1CA1, 0x7C27, 0x7C27, 0x07DE, 0x7C28, 0x7C29, 0x424E,
+ 0x7C2A, 0x7C2A, 0x1CA0, 0x7C2B, 0x7C2B, 0x25EB, 0x7C2C, 0x7C37, 0x4250,
+ 0x7C38, 0x7C38, 0x1CA2, 0x7C39, 0x7C3C, 0x425C, 0x7C3D, 0x7C3D, 0x20D0,
+ 0x7C3E, 0x7C3E, 0x201D, 0x7C3F, 0x7C3F, 0x0485, 0x7C40, 0x7C40, 0x1CA4,
+ 0x7C41, 0x7C41, 0x1CA3, 0x7C42, 0x7C42, 0x4260, 0x7C43, 0x7C43, 0x1FF7,
+ 0x7C44, 0x7C4B, 0x4261, 0x7C4C, 0x7C4C, 0x1E8D, 0x7C4D, 0x7C4D, 0x0821,
+ 0x7C4E, 0x7C5B, 0x4269, 0x7C5C, 0x7C5C, 0x25E9, 0x7C5D, 0x7C5E, 0x4277,
+ 0x7C5F, 0x7C5F, 0x25EE, 0x7C60, 0x7C60, 0x203A, 0x7C61, 0x7C63, 0x4279,
+ 0x7C64, 0x7C64, 0x2693, 0x7C65, 0x7C68, 0x427C, 0x7C69, 0x7C69, 0x25E5,
+ 0x7C6A, 0x7C6A, 0x25ED, 0x7C6B, 0x7C6B, 0x4280, 0x7C6C, 0x7C6C, 0x2009,
+ 0x7C6D, 0x7C6D, 0x4281, 0x7C6E, 0x7C6E, 0x2065, 0x7C6F, 0x7C71, 0x4282,
+ 0x7C72, 0x7C72, 0x26A3, 0x7C73, 0x7C73, 0x0ADC, 0x7C74, 0x7C74, 0x12F5,
+ 0x7C75, 0x7C7A, 0x4285, 0x7C7B, 0x7C7B, 0x09CB, 0x7C7C, 0x7C7C, 0x1CCA,
+ 0x7C7D, 0x7C7D, 0x122E, 0x7C7E, 0x7C88, 0x428B, 0x7C89, 0x7C89, 0x0678,
+ 0x7C8A, 0x7C90, 0x4296, 0x7C91, 0x7C91, 0x1CCC, 0x7C92, 0x7C92, 0x09EC,
+ 0x7C93, 0x7C94, 0x429D, 0x7C95, 0x7C95, 0x0BE8, 0x7C96, 0x7C96, 0x429F,
+ 0x7C97, 0x7C97, 0x0559, 0x7C98, 0x7C98, 0x1154, 0x7C99, 0x7C9B, 0x42A0,
+ 0x7C9C, 0x7C9C, 0x1CCE, 0x7C9D, 0x7C9D, 0x1CCD, 0x7C9E, 0x7C9E, 0x1CCF,
+ 0x7C9F, 0x7C9F, 0x0DCF, 0x7CA0, 0x7CA1, 0x42A3, 0x7CA2, 0x7CA2, 0x1CD0,
+ 0x7CA3, 0x7CA3, 0x42A5, 0x7CA4, 0x7CA4, 0x1104, 0x7CA5, 0x7CA5, 0x11DF,
+ 0x7CA6, 0x7CA9, 0x42A6, 0x7CAA, 0x7CAA, 0x067D, 0x7CAB, 0x7CAD, 0x42AA,
+ 0x7CAE, 0x7CAE, 0x0A01, 0x7CAF, 0x7CB0, 0x42AD, 0x7CB1, 0x7CB1, 0x0A04,
+ 0x7CB2, 0x7CB2, 0x1CD1, 0x7CB3, 0x7CB3, 0x08DB, 0x7CB4, 0x7CB8, 0x42AF,
+ 0x7CB9, 0x7CB9, 0x0565, 0x7CBA, 0x7CBB, 0x42B4, 0x7CBC, 0x7CBD, 0x1CD2,
+ 0x7CBE, 0x7CBE, 0x08DA, 0x7CBF, 0x7CC0, 0x42B6, 0x7CC1, 0x7CC1, 0x1CD4,
+ 0x7CC2, 0x7CC4, 0x42B8, 0x7CC5, 0x7CC5, 0x1CD9, 0x7CC6, 0x7CC6, 0x42BB,
+ 0x7CC7, 0x7CC7, 0x1CD5, 0x7CC8, 0x7CC8, 0x1CD8, 0x7CC9, 0x7CC9, 0x42BC,
+ 0x7CCA, 0x7CCA, 0x07B4, 0x7CCB, 0x7CCB, 0x42BD, 0x7CCC, 0x7CCD, 0x1CD6,
+ 0x7CCE, 0x7CD4, 0x42BE, 0x7CD5, 0x7CD5, 0x06DD, 0x7CD6, 0x7CD6, 0x0E1A,
+ 0x7CD7, 0x7CD7, 0x1CDA, 0x7CD8, 0x7CD8, 0x42C5, 0x7CD9, 0x7CD9, 0x04A1,
+ 0x7CDA, 0x7CDB, 0x42C6, 0x7CDC, 0x7CDC, 0x0AD8, 0x7CDD, 0x7CDD, 0x25F5,
+ 0x7CDE, 0x7CDE, 0x1EFC, 0x7CDF, 0x7CDF, 0x1126, 0x7CE0, 0x7CE0, 0x0944,
+ 0x7CE1, 0x7CE6, 0x42C8, 0x7CE7, 0x7CE7, 0x2024, 0x7CE8, 0x7CE8, 0x1CDB,
+ 0x7CE9, 0x7CEE, 0x42CE, 0x7CEF, 0x7CEF, 0x0B75, 0x7CF0, 0x7CF0, 0x269B,
+ 0x7CF1, 0x7CF1, 0x42D4, 0x7CF2, 0x7CF2, 0x25F3, 0x7CF3, 0x7CF3, 0x42D5,
+ 0x7CF4, 0x7CF4, 0x22D9, 0x7CF5, 0x7CF5, 0x42D6, 0x7CF6, 0x7CF6, 0x25F4,
+ 0x7CF7, 0x7CF7, 0x42D7, 0x7CF8, 0x7CF8, 0x1CE7, 0x7CF9, 0x7CF9, 0x241B,
+ 0x7CFA, 0x7CFA, 0x42D8, 0x7CFB, 0x7CFB, 0x0F22, 0x7CFC, 0x7CFD, 0x42D9,
+ 0x7CFE, 0x7CFE, 0x1FC8, 0x7CFF, 0x7CFF, 0x42DB, 0x7D00, 0x7D00, 0x1F7B,
+ 0x7D01, 0x7D01, 0x42DC, 0x7D02, 0x7D02, 0x241D, 0x7D03, 0x7D03, 0x42DD,
+ 0x7D04, 0x7D04, 0x224C, 0x7D05, 0x7D05, 0x1F48, 0x7D06, 0x7D06, 0x241C,
+ 0x7D07, 0x7D08, 0x241E, 0x7D09, 0x7D09, 0x20FF, 0x7D0A, 0x7D0A, 0x0ED8,
+ 0x7D0B, 0x7D0B, 0x219A, 0x7D0C, 0x7D0C, 0x42DE, 0x7D0D, 0x7D0D, 0x2091,
+ 0x7D0E, 0x7D0F, 0x42DF, 0x7D10, 0x7D10, 0x20A7, 0x7D11, 0x7D12, 0x42E1,
+ 0x7D13, 0x7D13, 0x2423, 0x7D14, 0x7D14, 0x1E9B, 0x7D15, 0x7D15, 0x2422,
+ 0x7D16, 0x7D16, 0x42E3, 0x7D17, 0x7D17, 0x2110, 0x7D18, 0x7D18, 0x42E4,
+ 0x7D19, 0x7D19, 0x228D, 0x7D1A, 0x7D1A, 0x1F71, 0x7D1B, 0x7D1B, 0x1EF8,
+ 0x7D1C, 0x7D1C, 0x2421, 0x7D1D, 0x7D1F, 0x42E5, 0x7D20, 0x7D20, 0x0DCD,
+ 0x7D21, 0x7D21, 0x1EF3, 0x7D22, 0x7D22, 0x0DEC, 0x7D23, 0x7D26, 0x42E8,
+ 0x7D27, 0x7D27, 0x08C5, 0x7D28, 0x7D2A, 0x42EC, 0x7D2B, 0x7D2B, 0x122C,
+ 0x7D2C, 0x7D2E, 0x42EF, 0x7D2F, 0x7D2F, 0x09C6, 0x7D30, 0x7D30, 0x21B1,
+ 0x7D31, 0x7D31, 0x2426, 0x7D32, 0x7D32, 0x2425, 0x7D33, 0x7D33, 0x2120,
+ 0x7D34, 0x7D38, 0x42F2, 0x7D39, 0x7D39, 0x211A, 0x7D3A, 0x7D3A, 0x2424,
+ 0x7D3B, 0x7D3B, 0x42F7, 0x7D3C, 0x7D3C, 0x2428, 0x7D3D, 0x7D3E, 0x42F8,
+ 0x7D3F, 0x7D3F, 0x242A, 0x7D40, 0x7D40, 0x2429, 0x7D41, 0x7D41, 0x42FA,
+ 0x7D42, 0x7D42, 0x2294, 0x7D43, 0x7D43, 0x42FB, 0x7D44, 0x7D44, 0x22BE,
+ 0x7D45, 0x7D45, 0x42FC, 0x7D46, 0x7D46, 0x1E31, 0x7D47, 0x7D4D, 0x42FD,
+ 0x7D4E, 0x7D4E, 0x242C, 0x7D4F, 0x7D4F, 0x4304, 0x7D50, 0x7D50, 0x1FB5,
+ 0x7D51, 0x7D5C, 0x4305, 0x7D5D, 0x7D5D, 0x242B, 0x7D5E, 0x7D5E, 0x1FAF,
+ 0x7D5F, 0x7D60, 0x4311, 0x7D61, 0x7D61, 0x2068, 0x7D62, 0x7D62, 0x21E4,
+ 0x7D63, 0x7D65, 0x4313, 0x7D66, 0x7D66, 0x1F21, 0x7D67, 0x7D67, 0x4316,
+ 0x7D68, 0x7D68, 0x2101, 0x7D69, 0x7D6D, 0x4317, 0x7D6E, 0x7D6E, 0x0FC0,
+ 0x7D6F, 0x7D70, 0x431C, 0x7D71, 0x7D71, 0x217C, 0x7D72, 0x7D72, 0x214A,
+ 0x7D73, 0x7D73, 0x242D, 0x7D74, 0x7D75, 0x431E, 0x7D76, 0x7D76, 0x1FD4,
+ 0x7D77, 0x7D77, 0x1CE8, 0x7D78, 0x7D78, 0x4320, 0x7D79, 0x7D79, 0x1FD1,
+ 0x7D7A, 0x7D80, 0x4321, 0x7D81, 0x7D81, 0x1E33, 0x7D82, 0x7D82, 0x4328,
+ 0x7D83, 0x7D83, 0x242F, 0x7D84, 0x7D85, 0x4329, 0x7D86, 0x7D86, 0x242E,
+ 0x7D87, 0x7D87, 0x432B, 0x7D88, 0x7D88, 0x2430, 0x7D89, 0x7D89, 0x21DB,
+ 0x7D8A, 0x7D8E, 0x432C, 0x7D8F, 0x7D8F, 0x2158, 0x7D90, 0x7D92, 0x4331,
+ 0x7D93, 0x7D93, 0x1FC2, 0x7D94, 0x7D9B, 0x4334, 0x7D9C, 0x7D9C, 0x22B9,
+ 0x7D9D, 0x7D9D, 0x433C, 0x7D9E, 0x7D9E, 0x2436, 0x7D9F, 0x7DA1, 0x433D,
+ 0x7DA2, 0x7DA2, 0x1E8E, 0x7DA3, 0x7DA3, 0x2439, 0x7DA4, 0x7DA5, 0x4340,
+ 0x7DA6, 0x7DA6, 0x1CE9, 0x7DA7, 0x7DAA, 0x4342, 0x7DAB, 0x7DAB, 0x21C5,
+ 0x7DAC, 0x7DAC, 0x2437, 0x7DAD, 0x7DAD, 0x2192, 0x7DAE, 0x7DAE, 0x1CEA,
+ 0x7DAF, 0x7DAF, 0x4346, 0x7DB0, 0x7DB0, 0x243A, 0x7DB1, 0x7DB1, 0x1F19,
+ 0x7DB2, 0x7DB2, 0x218C, 0x7DB3, 0x7DB3, 0x1E40, 0x7DB4, 0x7DB4, 0x22B3,
+ 0x7DB5, 0x7DB7, 0x4347, 0x7DB8, 0x7DB8, 0x205F, 0x7DB9, 0x7DB9, 0x2438,
+ 0x7DBA, 0x7DBA, 0x2432, 0x7DBB, 0x7DBB, 0x2274, 0x7DBC, 0x7DBC, 0x434A,
+ 0x7DBD, 0x7DBD, 0x1E9C, 0x7DBE, 0x7DBE, 0x2431, 0x7DBF, 0x7DBF, 0x2085,
+ 0x7DC0, 0x7DC3, 0x434B, 0x7DC4, 0x7DC4, 0x2435, 0x7DC5, 0x7DC6, 0x434F,
+ 0x7DC7, 0x7DC7, 0x243B, 0x7DC8, 0x7DC9, 0x4351, 0x7DCA, 0x7DCA, 0x1FB7,
+ 0x7DCB, 0x7DCB, 0x2433, 0x7DCC, 0x7DD0, 0x4353, 0x7DD1, 0x7DD1, 0x2054,
+ 0x7DD2, 0x7DD2, 0x21DE, 0x7DD3, 0x7DD3, 0x4358, 0x7DD4, 0x7DD4, 0x2434,
+ 0x7DD5, 0x7DD6, 0x4359, 0x7DD7, 0x7DD7, 0x243D, 0x7DD8, 0x7DD8, 0x1F89,
+ 0x7DD9, 0x7DD9, 0x243C, 0x7DDA, 0x7DDC, 0x435B, 0x7DDD, 0x7DDD, 0x1F6E,
+ 0x7DDE, 0x7DDE, 0x1ED8, 0x7DDF, 0x7DDF, 0x435E, 0x7DE0, 0x7DE0, 0x1EBF,
+ 0x7DE1, 0x7DE1, 0x2445, 0x7DE2, 0x7DE2, 0x435F, 0x7DE3, 0x7DE3, 0x2249,
+ 0x7DE4, 0x7DE5, 0x4360, 0x7DE6, 0x7DE6, 0x2441, 0x7DE7, 0x7DE7, 0x4362,
+ 0x7DE8, 0x7DE8, 0x1E47, 0x7DE9, 0x7DE9, 0x1F56, 0x7DEA, 0x7DEB, 0x4363,
+ 0x7DEC, 0x7DEC, 0x2086, 0x7DED, 0x7DEE, 0x4365, 0x7DEF, 0x7DEF, 0x2196,
+ 0x7DF0, 0x7DF0, 0x4367, 0x7DF1, 0x7DF1, 0x2443, 0x7DF2, 0x7DF2, 0x243F,
+ 0x7DF3, 0x7DF3, 0x4368, 0x7DF4, 0x7DF4, 0x2023, 0x7DF5, 0x7DF5, 0x4369,
+ 0x7DF6, 0x7DF6, 0x2442, 0x7DF7, 0x7DF8, 0x436A, 0x7DF9, 0x7DF9, 0x243E,
+ 0x7DFA, 0x7DFA, 0x436C, 0x7DFB, 0x7DFB, 0x26A6, 0x7DFC, 0x7DFF, 0x436D,
+ 0x7E00, 0x7E07, 0x4371, 0x7E08, 0x7E08, 0x234E, 0x7E09, 0x7E09, 0x2446,
+ 0x7E0A, 0x7E0A, 0x244B, 0x7E0B, 0x7E0B, 0x2444, 0x7E0C, 0x7E0F, 0x4379,
+ 0x7E10, 0x7E10, 0x2427, 0x7E11, 0x7E11, 0x244C, 0x7E12, 0x7E1A, 0x437D,
+ 0x7E1B, 0x7E1B, 0x1F0F, 0x7E1C, 0x7E1C, 0x4386, 0x7E1D, 0x7E1D, 0x2447,
+ 0x7E1E, 0x7E1E, 0x2449, 0x7E1F, 0x7E1F, 0x2448, 0x7E20, 0x7E22, 0x4387,
+ 0x7E23, 0x7E23, 0x21C2, 0x7E24, 0x7E26, 0x438A, 0x7E27, 0x7E27, 0x216E,
+ 0x7E28, 0x7E2A, 0x438D, 0x7E2B, 0x7E2B, 0x1F03, 0x7E2C, 0x7E2C, 0x4390,
+ 0x7E2D, 0x7E2D, 0x244A, 0x7E2E, 0x7E2E, 0x215C, 0x7E2F, 0x7E30, 0x4391,
+ 0x7E31, 0x7E31, 0x22BB, 0x7E32, 0x7E32, 0x2450, 0x7E33, 0x7E33, 0x4393,
+ 0x7E34, 0x7E34, 0x2694, 0x7E35, 0x7E35, 0x244F, 0x7E36, 0x7E36, 0x25F6,
+ 0x7E37, 0x7E37, 0x2051, 0x7E38, 0x7E38, 0x4394, 0x7E39, 0x7E39, 0x244E,
+ 0x7E3A, 0x7E3A, 0x4395, 0x7E3B, 0x7E3B, 0x1DFB, 0x7E3C, 0x7E3C, 0x4396,
+ 0x7E3D, 0x7E3D, 0x22BA, 0x7E3E, 0x7E3E, 0x1F6D, 0x7E3F, 0x7E40, 0x4397,
+ 0x7E41, 0x7E41, 0x064E, 0x7E42, 0x7E44, 0x4399, 0x7E45, 0x7E45, 0x2452,
+ 0x7E46, 0x7E46, 0x2451, 0x7E47, 0x7E47, 0x1CEB, 0x7E48, 0x7E51, 0x439C,
+ 0x7E52, 0x7E52, 0x2455, 0x7E53, 0x7E53, 0x43A6, 0x7E54, 0x7E54, 0x2289,
+ 0x7E55, 0x7E55, 0x2116, 0x7E56, 0x7E59, 0x43A7, 0x7E5A, 0x7E5A, 0x2454,
+ 0x7E5B, 0x7E5D, 0x43AB, 0x7E5E, 0x7E5E, 0x20FB, 0x7E5F, 0x7E61, 0x43AE,
+ 0x7E62, 0x7E62, 0x2440, 0x7E63, 0x7E68, 0x43B1, 0x7E69, 0x7E69, 0x2126,
+ 0x7E6A, 0x7E6A, 0x1F61, 0x7E6B, 0x7E6B, 0x269D, 0x7E6C, 0x7E6C, 0x43B7,
+ 0x7E6D, 0x7E6D, 0x1F8A, 0x7E6E, 0x7E6E, 0x2456, 0x7E6F, 0x7E6F, 0x2459,
+ 0x7E70, 0x7E70, 0x2458, 0x7E71, 0x7E72, 0x43B8, 0x7E73, 0x7E73, 0x1FAE,
+ 0x7E74, 0x7E78, 0x43BA, 0x7E79, 0x7E79, 0x221A, 0x7E7A, 0x7E7B, 0x43BF,
+ 0x7E7C, 0x7E7C, 0x1F7A, 0x7E7D, 0x7E7D, 0x244D, 0x7E7E, 0x7E7E, 0x2457,
+ 0x7E7F, 0x7E81, 0x43C1, 0x7E82, 0x7E82, 0x1248, 0x7E83, 0x7E87, 0x43C4,
+ 0x7E88, 0x7E88, 0x2453, 0x7E89, 0x7E89, 0x43C9, 0x7E8A, 0x7E8A, 0x2420,
+ 0x7E8B, 0x7E8B, 0x43CA, 0x7E8C, 0x7E8C, 0x21DF, 0x7E8D, 0x7E8D, 0x2685,
+ 0x7E8E, 0x7E8E, 0x43CB, 0x7E8F, 0x7E8F, 0x1E6E, 0x7E90, 0x7E92, 0x43CC,
+ 0x7E93, 0x7E93, 0x2224, 0x7E94, 0x7E94, 0x2670, 0x7E95, 0x7E95, 0x43CF,
+ 0x7E96, 0x7E96, 0x21BA, 0x7E97, 0x7E97, 0x43D0, 0x7E98, 0x7E98, 0x245A,
+ 0x7E99, 0x7E9A, 0x43D1, 0x7E9B, 0x7E9B, 0x1CEC, 0x7E9C, 0x7E9C, 0x1FFF,
+ 0x7E9D, 0x7E9E, 0x43D3, 0x7E9F, 0x7E9F, 0x17D3, 0x7EA0, 0x7EA0, 0x08EF,
+ 0x7EA1, 0x7EA1, 0x17D4, 0x7EA2, 0x7EA2, 0x07A3, 0x7EA3, 0x7EA3, 0x17D5,
+ 0x7EA4, 0x7EA4, 0x0F38, 0x7EA5, 0x7EA5, 0x17D6, 0x7EA6, 0x7EA6, 0x10FF,
+ 0x7EA7, 0x7EA7, 0x0829, 0x7EA8, 0x7EA9, 0x17D7, 0x7EAA, 0x7EAA, 0x0840,
+ 0x7EAB, 0x7EAB, 0x0CAD, 0x7EAC, 0x7EAC, 0x0EC2, 0x7EAD, 0x7EAD, 0x17D9,
+ 0x7EAE, 0x7EAE, 0x43D5, 0x7EAF, 0x7EAF, 0x0542, 0x7EB0, 0x7EB0, 0x17DA,
+ 0x7EB1, 0x7EB1, 0x0CED, 0x7EB2, 0x7EB2, 0x06D4, 0x7EB3, 0x7EB3, 0x0B2C,
+ 0x7EB4, 0x7EB4, 0x43D6, 0x7EB5, 0x7EB5, 0x123A, 0x7EB6, 0x7EB6, 0x0A81,
+ 0x7EB7, 0x7EB7, 0x0674, 0x7EB8, 0x7EB8, 0x11BC, 0x7EB9, 0x7EB9, 0x0ED5,
+ 0x7EBA, 0x7EBA, 0x0661, 0x7EBB, 0x7EBC, 0x43D7, 0x7EBD, 0x7EBD, 0x0B67,
+ 0x7EBE, 0x7EBE, 0x17DB, 0x7EBF, 0x7EBF, 0x0F4C, 0x7EC0, 0x7EC2, 0x17DC,
+ 0x7EC3, 0x7EC3, 0x0A00, 0x7EC4, 0x7EC4, 0x1246, 0x7EC5, 0x7EC5, 0x0D29,
+ 0x7EC6, 0x7EC6, 0x0F25, 0x7EC7, 0x7EC7, 0x11AE, 0x7EC8, 0x7EC8, 0x11D4,
+ 0x7EC9, 0x7EC9, 0x17DF, 0x7ECA, 0x7ECA, 0x03F8, 0x7ECB, 0x7ECC, 0x17E0,
+ 0x7ECD, 0x7ECD, 0x0D15, 0x7ECE, 0x7ECE, 0x1076, 0x7ECF, 0x7ECF, 0x08DC,
+ 0x7ED0, 0x7ED0, 0x17E2, 0x7ED1, 0x7ED1, 0x03FE, 0x7ED2, 0x7ED2, 0x0CB9,
+ 0x7ED3, 0x7ED3, 0x08B2, 0x7ED4, 0x7ED4, 0x17E3, 0x7ED5, 0x7ED5, 0x0CA1,
+ 0x7ED6, 0x7ED6, 0x43D9, 0x7ED7, 0x7ED7, 0x17E4, 0x7ED8, 0x7ED8, 0x07FB,
+ 0x7ED9, 0x7ED9, 0x06F3, 0x7EDA, 0x7EDA, 0x0FCD, 0x7EDB, 0x7EDB, 0x17E5,
+ 0x7EDC, 0x7EDC, 0x0A8E, 0x7EDD, 0x7EDD, 0x0927, 0x7EDE, 0x7EDE, 0x089B,
+ 0x7EDF, 0x7EDF, 0x0E64, 0x7EE0, 0x7EE1, 0x17E6, 0x7EE2, 0x7EE2, 0x091D,
+ 0x7EE3, 0x7EE3, 0x0FB0, 0x7EE4, 0x7EE4, 0x43DA, 0x7EE5, 0x7EE5, 0x0DDC,
+ 0x7EE6, 0x7EE6, 0x0E23, 0x7EE7, 0x7EE7, 0x083F, 0x7EE8, 0x7EE8, 0x17E8,
+ 0x7EE9, 0x7EE9, 0x081B, 0x7EEA, 0x7EEA, 0x0FC2, 0x7EEB, 0x7EEB, 0x17E9,
+ 0x7EEC, 0x7EEC, 0x43DB, 0x7EED, 0x7EED, 0x0FC3, 0x7EEE, 0x7EEF, 0x17EA,
+ 0x7EF0, 0x7EF0, 0x0545, 0x7EF1, 0x7EF2, 0x17EC, 0x7EF3, 0x7EF3, 0x0D37,
+ 0x7EF4, 0x7EF4, 0x0EBB, 0x7EF5, 0x7EF5, 0x0AE5, 0x7EF6, 0x7EF6, 0x17EF,
+ 0x7EF7, 0x7EF7, 0x042A, 0x7EF8, 0x7EF8, 0x0516, 0x7EF9, 0x7EF9, 0x43DC,
+ 0x7EFA, 0x7EFB, 0x17F0, 0x7EFC, 0x7EFC, 0x1238, 0x7EFD, 0x7EFD, 0x1161,
+ 0x7EFE, 0x7EFE, 0x17F2, 0x7EFF, 0x7EFF, 0x0A73, 0x7F00, 0x7F00, 0x1217,
+ 0x7F01, 0x7F03, 0x17F3, 0x7F04, 0x7F04, 0x085D, 0x7F05, 0x7F05, 0x0AEA,
+ 0x7F06, 0x7F06, 0x09AD, 0x7F07, 0x7F08, 0x17F6, 0x7F09, 0x7F09, 0x081C,
+ 0x7F0A, 0x7F0A, 0x43DD, 0x7F0B, 0x7F0C, 0x17F8, 0x7F0D, 0x7F0D, 0x17EE,
+ 0x7F0E, 0x7F0E, 0x060F, 0x7F0F, 0x7F0F, 0x17FA, 0x7F10, 0x7F10, 0x43DE,
+ 0x7F11, 0x7F12, 0x17FB, 0x7F13, 0x7F13, 0x07CF, 0x7F14, 0x7F14, 0x05BF,
+ 0x7F15, 0x7F15, 0x0A6D, 0x7F16, 0x7F16, 0x0449, 0x7F17, 0x7F17, 0x17FD,
+ 0x7F18, 0x7F18, 0x10F8, 0x7F19, 0x7F19, 0x17FE, 0x7F1A, 0x7F1A, 0x06BA,
+ 0x7F1B, 0x7F1B, 0x1800, 0x7F1C, 0x7F1C, 0x17FF, 0x7F1D, 0x7F1D, 0x0689,
+ 0x7F1E, 0x7F1E, 0x43DF, 0x7F1F, 0x7F1F, 0x1801, 0x7F20, 0x7F20, 0x04BF,
+ 0x7F21, 0x7F27, 0x1802, 0x7F28, 0x7F28, 0x108C, 0x7F29, 0x7F29, 0x0DEA,
+ 0x7F2A, 0x7F2D, 0x1809, 0x7F2E, 0x7F2E, 0x0D02, 0x7F2F, 0x7F33, 0x180D,
+ 0x7F34, 0x7F34, 0x089A, 0x7F35, 0x7F35, 0x1812, 0x7F36, 0x7F36, 0x1C5E,
+ 0x7F37, 0x7F37, 0x43E0, 0x7F38, 0x7F38, 0x06D2, 0x7F39, 0x7F39, 0x43E1,
+ 0x7F3A, 0x7F3A, 0x0C8C, 0x7F3B, 0x7F41, 0x43E2, 0x7F42, 0x7F42, 0x1C5F,
+ 0x7F43, 0x7F43, 0x43E9, 0x7F44, 0x7F45, 0x1C60, 0x7F46, 0x7F4B, 0x43EA,
+ 0x7F4C, 0x7F4C, 0x25E2, 0x7F4D, 0x7F4D, 0x43F0, 0x7F4E, 0x7F4E, 0x269A,
+ 0x7F4F, 0x7F4F, 0x43F1, 0x7F50, 0x7F50, 0x0737, 0x7F51, 0x7F51, 0x0EA9,
+ 0x7F52, 0x7F53, 0x43F2, 0x7F54, 0x7F54, 0x129E, 0x7F55, 0x7F55, 0x0768,
+ 0x7F56, 0x7F56, 0x43F4, 0x7F57, 0x7F57, 0x0A85, 0x7F58, 0x7F58, 0x1A81,
+ 0x7F59, 0x7F59, 0x43F5, 0x7F5A, 0x7F5A, 0x0640, 0x7F5B, 0x7F5E, 0x43F6,
+ 0x7F5F, 0x7F5F, 0x1A83, 0x7F60, 0x7F60, 0x43FA, 0x7F61, 0x7F61, 0x1A82,
+ 0x7F62, 0x7F62, 0x03E0, 0x7F63, 0x7F67, 0x43FB, 0x7F68, 0x7F68, 0x1A85,
+ 0x7F69, 0x7F69, 0x1177, 0x7F6A, 0x7F6A, 0x124C, 0x7F6B, 0x7F6D, 0x4400,
+ 0x7F6E, 0x7F6E, 0x11C2, 0x7F6F, 0x7F6F, 0x4403, 0x7F70, 0x7F70, 0x1EEA,
+ 0x7F71, 0x7F71, 0x1A87, 0x7F72, 0x7F72, 0x0D87, 0x7F73, 0x7F73, 0x4404,
+ 0x7F74, 0x7F74, 0x1A86, 0x7F75, 0x7F76, 0x4405, 0x7F77, 0x7F77, 0x1E2C,
+ 0x7F78, 0x7F78, 0x4407, 0x7F79, 0x7F79, 0x1A88, 0x7F7A, 0x7F7D, 0x4408,
+ 0x7F7E, 0x7F7E, 0x1A8A, 0x7F7F, 0x7F80, 0x440C, 0x7F81, 0x7F81, 0x1A89,
+ 0x7F82, 0x7F84, 0x440E, 0x7F85, 0x7F85, 0x2062, 0x7F86, 0x7F86, 0x24F1,
+ 0x7F87, 0x7F87, 0x4411, 0x7F88, 0x7F88, 0x24F2, 0x7F89, 0x7F89, 0x4412,
+ 0x7F8A, 0x7F8A, 0x101B, 0x7F8B, 0x7F8B, 0x4413, 0x7F8C, 0x7F8C, 0x0C39,
+ 0x7F8D, 0x7F8D, 0x4414, 0x7F8E, 0x7F8E, 0x0AC5, 0x7F8F, 0x7F93, 0x4415,
+ 0x7F94, 0x7F94, 0x06DC, 0x7F95, 0x7F99, 0x441A, 0x7F9A, 0x7F9A, 0x0A30,
+ 0x7F9B, 0x7F9C, 0x441F, 0x7F9D, 0x7F9D, 0x1CC4, 0x7F9E, 0x7F9E, 0x0FAA,
+ 0x7F9F, 0x7F9F, 0x1CC5, 0x7FA0, 0x7FA0, 0x4421, 0x7FA1, 0x7FA1, 0x0F48,
+ 0x7FA2, 0x7FA3, 0x4422, 0x7FA4, 0x7FA4, 0x0C95, 0x7FA5, 0x7FA5, 0x25F2,
+ 0x7FA6, 0x7FA6, 0x4424, 0x7FA7, 0x7FA7, 0x1CC6, 0x7FA8, 0x7FA8, 0x4425,
+ 0x7FA9, 0x7FA9, 0x2215, 0x7FAA, 0x7FAE, 0x4426, 0x7FAF, 0x7FB0, 0x1CC7,
+ 0x7FB1, 0x7FB1, 0x442B, 0x7FB2, 0x7FB2, 0x1CC9, 0x7FB3, 0x7FB7, 0x442C,
+ 0x7FB8, 0x7FB8, 0x130E, 0x7FB9, 0x7FB9, 0x06F9, 0x7FBA, 0x7FBB, 0x4431,
+ 0x7FBC, 0x7FBC, 0x176D, 0x7FBD, 0x7FBD, 0x10D5, 0x7FBE, 0x7FBE, 0x4433,
+ 0x7FBF, 0x7FBF, 0x1CDE, 0x7FC0, 0x7FC0, 0x4434, 0x7FC1, 0x7FC1, 0x0EDB,
+ 0x7FC2, 0x7FC4, 0x4435, 0x7FC5, 0x7FC5, 0x0506, 0x7FC6, 0x7FC9, 0x4438,
+ 0x7FCA, 0x7FCA, 0x1B98, 0x7FCB, 0x7FCB, 0x443C, 0x7FCC, 0x7FCC, 0x1075,
+ 0x7FCD, 0x7FCD, 0x443D, 0x7FCE, 0x7FCE, 0x1CDF, 0x7FCF, 0x7FD1, 0x443E,
+ 0x7FD2, 0x7FD2, 0x21AE, 0x7FD3, 0x7FD3, 0x4441, 0x7FD4, 0x7FD4, 0x0F55,
+ 0x7FD5, 0x7FD5, 0x1CE0, 0x7FD6, 0x7FD7, 0x4442, 0x7FD8, 0x7FD8, 0x0C49,
+ 0x7FD9, 0x7FDE, 0x4444, 0x7FDF, 0x7FDF, 0x05B5, 0x7FE0, 0x7FE0, 0x0567,
+ 0x7FE1, 0x7FE1, 0x1CE2, 0x7FE2, 0x7FE4, 0x444A, 0x7FE5, 0x7FE5, 0x1CE1,
+ 0x7FE6, 0x7FE6, 0x1CE3, 0x7FE7, 0x7FE8, 0x444D, 0x7FE9, 0x7FE9, 0x1CE4,
+ 0x7FEA, 0x7FED, 0x444F, 0x7FEE, 0x7FEE, 0x1CE5, 0x7FEF, 0x7FEF, 0x4453,
+ 0x7FF0, 0x7FF0, 0x0769, 0x7FF1, 0x7FF1, 0x03CA, 0x7FF2, 0x7FF2, 0x4454,
+ 0x7FF3, 0x7FF3, 0x1CE6, 0x7FF4, 0x7FF8, 0x4455, 0x7FF9, 0x7FF9, 0x20E0,
+ 0x7FFA, 0x7FFA, 0x445A, 0x7FFB, 0x7FFB, 0x064A, 0x7FFC, 0x7FFC, 0x1074,
+ 0x7FFD, 0x7FFF, 0x445B, 0x8000, 0x8000, 0x1032, 0x8001, 0x8001, 0x09BA,
+ 0x8002, 0x8002, 0x445E, 0x8003, 0x8003, 0x0949, 0x8004, 0x8004, 0x1953,
+ 0x8005, 0x8005, 0x1180, 0x8006, 0x8006, 0x191A, 0x8007, 0x800A, 0x445F,
+ 0x800B, 0x800B, 0x1BD7, 0x800C, 0x800C, 0x0637, 0x800D, 0x800D, 0x0D98,
+ 0x800E, 0x800F, 0x4463, 0x8010, 0x8010, 0x0B30, 0x8011, 0x8011, 0x4465,
+ 0x8012, 0x8012, 0x1BCB, 0x8013, 0x8013, 0x4466, 0x8014, 0x8014, 0x1BCC,
+ 0x8015, 0x8015, 0x06F6, 0x8016, 0x8016, 0x1BCD, 0x8017, 0x8017, 0x077B,
+ 0x8018, 0x8018, 0x1108, 0x8019, 0x8019, 0x03DD, 0x801A, 0x801B, 0x4467,
+ 0x801C, 0x801C, 0x1BCE, 0x801D, 0x801F, 0x4469, 0x8020, 0x8020, 0x1BCF,
+ 0x8021, 0x8021, 0x446C, 0x8022, 0x8022, 0x1BD0, 0x8023, 0x8024, 0x446D,
+ 0x8025, 0x8027, 0x1BD1, 0x8028, 0x8028, 0x1BD5, 0x8029, 0x8029, 0x1BD4,
+ 0x802A, 0x802A, 0x0B96, 0x802B, 0x802B, 0x446F, 0x802C, 0x802C, 0x25C2,
+ 0x802D, 0x802D, 0x4470, 0x802E, 0x802E, 0x25C1, 0x802F, 0x8030, 0x4471,
+ 0x8031, 0x8031, 0x1BD6, 0x8032, 0x8032, 0x4473, 0x8033, 0x8033, 0x0639,
+ 0x8034, 0x8034, 0x4474, 0x8035, 0x8035, 0x1BD8, 0x8036, 0x8036, 0x1035,
+ 0x8037, 0x8037, 0x14B1, 0x8038, 0x8038, 0x0DBF, 0x8039, 0x803A, 0x4475,
+ 0x803B, 0x803B, 0x0501, 0x803C, 0x803C, 0x4477, 0x803D, 0x803D, 0x0583,
+ 0x803E, 0x803E, 0x4478, 0x803F, 0x803F, 0x06FB, 0x8040, 0x8041, 0x4479,
+ 0x8042, 0x8042, 0x0B57, 0x8043, 0x8043, 0x1BD9, 0x8044, 0x8045, 0x447B,
+ 0x8046, 0x8046, 0x1BDA, 0x8047, 0x8049, 0x447D, 0x804A, 0x804A, 0x0A0D,
+ 0x804B, 0x804B, 0x0A44, 0x804C, 0x804C, 0x11AF, 0x804D, 0x804D, 0x1BDB,
+ 0x804E, 0x8051, 0x4480, 0x8052, 0x8052, 0x1BDC, 0x8053, 0x8053, 0x4484,
+ 0x8054, 0x8054, 0x09F3, 0x8055, 0x8055, 0x4485, 0x8056, 0x8056, 0x2128,
+ 0x8057, 0x8057, 0x4486, 0x8058, 0x8058, 0x0BD7, 0x8059, 0x8059, 0x4487,
+ 0x805A, 0x805A, 0x090A, 0x805B, 0x805D, 0x4488, 0x805E, 0x805E, 0x2199,
+ 0x805F, 0x8068, 0x448B, 0x8069, 0x8069, 0x1BDD, 0x806A, 0x806A, 0x0552,
+ 0x806B, 0x806E, 0x4495, 0x806F, 0x806F, 0x2017, 0x8070, 0x8070, 0x1EA0,
+ 0x8071, 0x8071, 0x1BDE, 0x8072, 0x8072, 0x2125, 0x8073, 0x8073, 0x214D,
+ 0x8074, 0x8074, 0x4499, 0x8075, 0x8075, 0x25C4, 0x8076, 0x8076, 0x209D,
+ 0x8077, 0x8077, 0x228A, 0x8078, 0x8078, 0x449A, 0x8079, 0x8079, 0x25C3,
+ 0x807A, 0x807C, 0x449B, 0x807D, 0x807D, 0x2179, 0x807E, 0x807E, 0x2038,
+ 0x807F, 0x807F, 0x1A1E, 0x8080, 0x8080, 0x1A1D, 0x8081, 0x8082, 0x449E,
+ 0x8083, 0x8083, 0x0DD5, 0x8084, 0x8084, 0x1065, 0x8085, 0x8085, 0x2155,
+ 0x8086, 0x8086, 0x0DB6, 0x8087, 0x8087, 0x1179, 0x8088, 0x8088, 0x44A0,
+ 0x8089, 0x8089, 0x0CBD, 0x808A, 0x808A, 0x44A1, 0x808B, 0x808B, 0x09CA,
+ 0x808C, 0x808C, 0x0814, 0x808D, 0x8092, 0x44A2, 0x8093, 0x8093, 0x1971,
+ 0x8094, 0x8095, 0x44A8, 0x8096, 0x8096, 0x0F6F, 0x8097, 0x8097, 0x44AA,
+ 0x8098, 0x8098, 0x11E1, 0x8099, 0x8099, 0x44AB, 0x809A, 0x809A, 0x0606,
+ 0x809B, 0x809B, 0x06D3, 0x809C, 0x809C, 0x1970, 0x809D, 0x809D, 0x06C9,
+ 0x809E, 0x809E, 0x44AC, 0x809F, 0x809F, 0x196F, 0x80A0, 0x80A0, 0x04CB,
+ 0x80A1, 0x80A1, 0x0722, 0x80A2, 0x80A2, 0x11AA, 0x80A3, 0x80A3, 0x44AD,
+ 0x80A4, 0x80A4, 0x0691, 0x80A5, 0x80A5, 0x0667, 0x80A6, 0x80A8, 0x44AE,
+ 0x80A9, 0x80A9, 0x085A, 0x80AA, 0x80AA, 0x065B, 0x80AB, 0x80AB, 0x1976,
+ 0x80AC, 0x80AC, 0x44B1, 0x80AD, 0x80AD, 0x1977, 0x80AE, 0x80AE, 0x03C4,
+ 0x80AF, 0x80AF, 0x095C, 0x80B0, 0x80B0, 0x44B2, 0x80B1, 0x80B1, 0x1975,
+ 0x80B2, 0x80B2, 0x10E2, 0x80B3, 0x80B3, 0x44B3, 0x80B4, 0x80B4, 0x1978,
+ 0x80B5, 0x80B6, 0x44B4, 0x80B7, 0x80B7, 0x1979, 0x80B8, 0x80B9, 0x44B6,
+ 0x80BA, 0x80BA, 0x066B, 0x80BB, 0x80BB, 0x44B8, 0x80BC, 0x80BC, 0x1972,
+ 0x80BD, 0x80BD, 0x1974, 0x80BE, 0x80BE, 0x0D2F, 0x80BF, 0x80BF, 0x11D6,
+ 0x80C0, 0x80C0, 0x116E, 0x80C1, 0x80C1, 0x0F7D, 0x80C2, 0x80C2, 0x197F,
+ 0x80C3, 0x80C3, 0x0EC7, 0x80C4, 0x80C4, 0x1980, 0x80C5, 0x80C5, 0x44B9,
+ 0x80C6, 0x80C6, 0x0589, 0x80C7, 0x80CB, 0x44BA, 0x80CC, 0x80CC, 0x041C,
+ 0x80CD, 0x80CD, 0x1982, 0x80CE, 0x80CE, 0x0DF8, 0x80CF, 0x80D5, 0x44BF,
+ 0x80D6, 0x80D6, 0x0B97, 0x80D7, 0x80D7, 0x1983, 0x80D8, 0x80D8, 0x44C6,
+ 0x80D9, 0x80D9, 0x1981, 0x80DA, 0x80DA, 0x0BA0, 0x80DB, 0x80DB, 0x197E,
+ 0x80DC, 0x80DC, 0x0D3B, 0x80DD, 0x80DD, 0x1985, 0x80DE, 0x80DE, 0x0406,
+ 0x80DF, 0x80E0, 0x44C7, 0x80E1, 0x80E1, 0x07B1, 0x80E2, 0x80E3, 0x44C9,
+ 0x80E4, 0x80E4, 0x126D, 0x80E5, 0x80E5, 0x1BC7, 0x80E6, 0x80E6, 0x44CB,
+ 0x80E7, 0x80EA, 0x197A, 0x80EB, 0x80EB, 0x1986, 0x80EC, 0x80EC, 0x179A,
+ 0x80ED, 0x80ED, 0x1989, 0x80EE, 0x80EE, 0x44CC, 0x80EF, 0x80EF, 0x0975,
+ 0x80F0, 0x80F0, 0x104F, 0x80F1, 0x80F1, 0x1987, 0x80F2, 0x80F2, 0x198C,
+ 0x80F3, 0x80F3, 0x06E7, 0x80F4, 0x80F4, 0x1988, 0x80F5, 0x80F5, 0x44CD,
+ 0x80F6, 0x80F6, 0x088B, 0x80F7, 0x80F7, 0x44CE, 0x80F8, 0x80F8, 0x0FA3,
+ 0x80F9, 0x80F9, 0x44CF, 0x80FA, 0x80FA, 0x03C2, 0x80FB, 0x80FB, 0x44D0,
+ 0x80FC, 0x80FC, 0x198D, 0x80FD, 0x80FD, 0x0B3F, 0x80FE, 0x80FF, 0x44D1,
+ 0x8100, 0x8101, 0x44D3, 0x8102, 0x8102, 0x11AB, 0x8103, 0x8104, 0x44D5,
+ 0x8105, 0x8105, 0x21D2, 0x8106, 0x8106, 0x0563, 0x8107, 0x8108, 0x44D7,
+ 0x8109, 0x8109, 0x0A9D, 0x810A, 0x810A, 0x082C, 0x810B, 0x810C, 0x44D9,
+ 0x810D, 0x810E, 0x198A, 0x810F, 0x810F, 0x1123, 0x8110, 0x8110, 0x0C09,
+ 0x8111, 0x8111, 0x0B37, 0x8112, 0x8112, 0x198F, 0x8113, 0x8113, 0x0B68,
+ 0x8114, 0x8114, 0x1309, 0x8115, 0x8115, 0x44DB, 0x8116, 0x8116, 0x0478,
+ 0x8117, 0x8117, 0x44DC, 0x8118, 0x8118, 0x1994, 0x8119, 0x8119, 0x44DD,
+ 0x811A, 0x811A, 0x0896, 0x811B, 0x811B, 0x24C7, 0x811C, 0x811D, 0x44DE,
+ 0x811E, 0x811E, 0x1992, 0x811F, 0x812B, 0x44E0, 0x812C, 0x812C, 0x1993,
+ 0x812D, 0x812E, 0x44ED, 0x812F, 0x812F, 0x06A7, 0x8130, 0x8130, 0x44EF,
+ 0x8131, 0x8131, 0x0E82, 0x8132, 0x8132, 0x1995, 0x8133, 0x8135, 0x44F0,
+ 0x8136, 0x8136, 0x1991, 0x8137, 0x8137, 0x44F3, 0x8138, 0x8138, 0x09FC,
+ 0x8139, 0x8139, 0x2279, 0x813A, 0x813D, 0x44F4, 0x813E, 0x813E, 0x0BC1,
+ 0x813F, 0x8145, 0x44F8, 0x8146, 0x8146, 0x0E46, 0x8147, 0x8147, 0x44FF,
+ 0x8148, 0x8148, 0x1996, 0x8149, 0x8149, 0x4500, 0x814A, 0x814A, 0x099B,
+ 0x814B, 0x814B, 0x103F, 0x814C, 0x814C, 0x1997, 0x814D, 0x814D, 0x4501,
+ 0x814E, 0x814E, 0x2123, 0x814F, 0x814F, 0x4502, 0x8150, 0x8150, 0x06AA,
+ 0x8151, 0x8151, 0x06A8, 0x8152, 0x8152, 0x4503, 0x8153, 0x8153, 0x1998,
+ 0x8154, 0x8154, 0x0C38, 0x8155, 0x8155, 0x0EA4, 0x8156, 0x8156, 0x24C5,
+ 0x8157, 0x8158, 0x4504, 0x8159, 0x815A, 0x199A, 0x815B, 0x815F, 0x4506,
+ 0x8160, 0x8160, 0x199D, 0x8161, 0x8161, 0x24C9, 0x8162, 0x8164, 0x450B,
+ 0x8165, 0x8165, 0x0F93, 0x8166, 0x8166, 0x2094, 0x8167, 0x8167, 0x19A2,
+ 0x8168, 0x8168, 0x450E, 0x8169, 0x8169, 0x199E, 0x816A, 0x816A, 0x450F,
+ 0x816B, 0x816B, 0x2296, 0x816C, 0x816C, 0x4510, 0x816D, 0x816D, 0x19A1,
+ 0x816E, 0x816E, 0x0CD4, 0x816F, 0x816F, 0x4511, 0x8170, 0x8170, 0x1025,
+ 0x8171, 0x8171, 0x199C, 0x8172, 0x8173, 0x4512, 0x8174, 0x8174, 0x1999,
+ 0x8175, 0x8177, 0x4514, 0x8178, 0x8178, 0x1E77, 0x8179, 0x8179, 0x06B4,
+ 0x817A, 0x817A, 0x0F46, 0x817B, 0x817B, 0x0B48, 0x817C, 0x817D, 0x199F,
+ 0x817E, 0x817E, 0x0E2D, 0x817F, 0x817F, 0x0E79, 0x8180, 0x8180, 0x03FD,
+ 0x8181, 0x8181, 0x4517, 0x8182, 0x8182, 0x19A6, 0x8183, 0x8187, 0x4518,
+ 0x8188, 0x8188, 0x19A5, 0x8189, 0x8189, 0x451D, 0x818A, 0x818A, 0x0479,
+ 0x818B, 0x818E, 0x451E, 0x818F, 0x818F, 0x06DB, 0x8190, 0x8190, 0x4522,
+ 0x8191, 0x8191, 0x19A7, 0x8192, 0x8197, 0x4523, 0x8198, 0x8198, 0x0455,
+ 0x8199, 0x8199, 0x4529, 0x819A, 0x819A, 0x1F06, 0x819B, 0x819B, 0x0E18,
+ 0x819C, 0x819C, 0x0B07, 0x819D, 0x819D, 0x0F12, 0x819E, 0x819F, 0x452A,
+ 0x81A0, 0x81A0, 0x1FA5, 0x81A1, 0x81A2, 0x452C, 0x81A3, 0x81A3, 0x19A9,
+ 0x81A4, 0x81A5, 0x452E, 0x81A6, 0x81A6, 0x19B0, 0x81A7, 0x81A7, 0x4530,
+ 0x81A8, 0x81A8, 0x0BB3, 0x81A9, 0x81A9, 0x2099, 0x81AA, 0x81AA, 0x19AA,
+ 0x81AB, 0x81B2, 0x4531, 0x81B3, 0x81B3, 0x0CFE, 0x81B4, 0x81B9, 0x4539,
+ 0x81BA, 0x81BA, 0x1641, 0x81BB, 0x81BB, 0x19AE, 0x81BC, 0x81BC, 0x453F,
+ 0x81BD, 0x81BD, 0x1EAD, 0x81BE, 0x81BE, 0x24C8, 0x81BF, 0x81BF, 0x20A8,
+ 0x81C0, 0x81C0, 0x0E7F, 0x81C1, 0x81C1, 0x19AF, 0x81C2, 0x81C2, 0x0444,
+ 0x81C3, 0x81C3, 0x109C, 0x81C4, 0x81C5, 0x4540, 0x81C6, 0x81C6, 0x1063,
+ 0x81C7, 0x81C8, 0x4542, 0x81C9, 0x81C9, 0x201F, 0x81CA, 0x81CA, 0x19AD,
+ 0x81CB, 0x81CB, 0x4544, 0x81CC, 0x81CC, 0x19AB, 0x81CD, 0x81CD, 0x20C5,
+ 0x81CE, 0x81CE, 0x4545, 0x81CF, 0x81CF, 0x24CA, 0x81D0, 0x81D7, 0x4546,
+ 0x81D8, 0x81D8, 0x1FF0, 0x81D9, 0x81D9, 0x454E, 0x81DA, 0x81DA, 0x24C6,
+ 0x81DB, 0x81DE, 0x454F, 0x81DF, 0x81DF, 0x225D, 0x81E0, 0x81E0, 0x22DE,
+ 0x81E1, 0x81E2, 0x4553, 0x81E3, 0x81E3, 0x04E1, 0x81E4, 0x81E6, 0x4555,
+ 0x81E7, 0x81E7, 0x1902, 0x81E8, 0x81E8, 0x202C, 0x81E9, 0x81E9, 0x4558,
+ 0x81EA, 0x81EA, 0x1231, 0x81EB, 0x81EB, 0x4559, 0x81EC, 0x81EC, 0x1CA9,
+ 0x81ED, 0x81ED, 0x0519, 0x81EE, 0x81F2, 0x455A, 0x81F3, 0x81F4, 0x11C0,
+ 0x81F5, 0x81F9, 0x455F, 0x81FA, 0x81FA, 0x2161, 0x81FB, 0x81FB, 0x118A,
+ 0x81FC, 0x81FC, 0x08F9, 0x81FD, 0x81FD, 0x4564, 0x81FE, 0x81FE, 0x1CA5,
+ 0x81FF, 0x81FF, 0x4565, 0x8200, 0x8200, 0x102F, 0x8201, 0x8202, 0x1CA6,
+ 0x8203, 0x8203, 0x4566, 0x8204, 0x8204, 0x1CA8, 0x8205, 0x8205, 0x08FA,
+ 0x8206, 0x8206, 0x10C4, 0x8207, 0x8207, 0x223B, 0x8208, 0x8208, 0x21D9,
+ 0x8209, 0x8209, 0x1FCB, 0x820A, 0x820A, 0x1FC9, 0x820B, 0x820B, 0x4567,
+ 0x820C, 0x820D, 0x0D19, 0x820E, 0x820F, 0x4568, 0x8210, 0x8210, 0x1C62,
+ 0x8211, 0x8211, 0x456A, 0x8212, 0x8212, 0x0D7D, 0x8213, 0x8213, 0x456B,
+ 0x8214, 0x8214, 0x0E45, 0x8215, 0x821A, 0x456C, 0x821B, 0x821B, 0x1618,
+ 0x821C, 0x821C, 0x0DA9, 0x821D, 0x821D, 0x4572, 0x821E, 0x821E, 0x0EF7,
+ 0x821F, 0x821F, 0x11DA, 0x8220, 0x8220, 0x4573, 0x8221, 0x8223, 0x1CAB,
+ 0x8224, 0x8227, 0x4574, 0x8228, 0x8228, 0x1CB0, 0x8229, 0x8229, 0x4578,
+ 0x822A, 0x822A, 0x0774, 0x822B, 0x822B, 0x1CB1, 0x822C, 0x822C, 0x03EE,
+ 0x822D, 0x822D, 0x1CAE, 0x822E, 0x822E, 0x4579, 0x822F, 0x822F, 0x1CAF,
+ 0x8230, 0x8230, 0x0873, 0x8231, 0x8231, 0x049C, 0x8232, 0x8232, 0x457A,
+ 0x8233, 0x8234, 0x1CB4, 0x8235, 0x8235, 0x0625, 0x8236, 0x8236, 0x0477,
+ 0x8237, 0x8237, 0x0F3C, 0x8238, 0x8238, 0x1CB2, 0x8239, 0x8239, 0x052F,
+ 0x823A, 0x823A, 0x457B, 0x823B, 0x823B, 0x1CB3, 0x823C, 0x823D, 0x457C,
+ 0x823E, 0x823E, 0x1CB6, 0x823F, 0x8243, 0x457E, 0x8244, 0x8244, 0x1CB7,
+ 0x8245, 0x8246, 0x4583, 0x8247, 0x8247, 0x0E58, 0x8248, 0x8248, 0x4585,
+ 0x8249, 0x8249, 0x1CB8, 0x824A, 0x824A, 0x4586, 0x824B, 0x824B, 0x1CB9,
+ 0x824C, 0x824E, 0x4587, 0x824F, 0x824F, 0x1CBA, 0x8250, 0x8257, 0x458A,
+ 0x8258, 0x8258, 0x0DC7, 0x8259, 0x8259, 0x1E61, 0x825A, 0x825A, 0x1CBB,
+ 0x825B, 0x825E, 0x4592, 0x825F, 0x825F, 0x1CBC, 0x8260, 0x8263, 0x4596,
+ 0x8264, 0x8264, 0x25EF, 0x8265, 0x8265, 0x459A, 0x8266, 0x8266, 0x1F98,
+ 0x8267, 0x8267, 0x459B, 0x8268, 0x8268, 0x1CBD, 0x8269, 0x826A, 0x459C,
+ 0x826B, 0x826B, 0x25F0, 0x826C, 0x826D, 0x459E, 0x826E, 0x826E, 0x1CDC,
+ 0x826F, 0x826F, 0x0A05, 0x8270, 0x8270, 0x085B, 0x8271, 0x8271, 0x1F88,
+ 0x8272, 0x8272, 0x0CE4, 0x8273, 0x8273, 0x1007, 0x8274, 0x8274, 0x1771,
+ 0x8275, 0x8276, 0x45A0, 0x8277, 0x8277, 0x21F8, 0x8278, 0x8278, 0x45A2,
+ 0x8279, 0x8279, 0x13E1, 0x827A, 0x827A, 0x105C, 0x827B, 0x827C, 0x45A3,
+ 0x827D, 0x827D, 0x13E2, 0x827E, 0x827E, 0x03B7, 0x827F, 0x827F, 0x13E3,
+ 0x8280, 0x8281, 0x45A5, 0x8282, 0x8282, 0x08AB, 0x8283, 0x8283, 0x45A7,
+ 0x8284, 0x8284, 0x13E7, 0x8285, 0x8287, 0x45A8, 0x8288, 0x8288, 0x1278,
+ 0x8289, 0x8289, 0x45AB, 0x828A, 0x828A, 0x13E5, 0x828B, 0x828B, 0x10D8,
+ 0x828C, 0x828C, 0x45AC, 0x828D, 0x828D, 0x0D0F, 0x828E, 0x828E, 0x13E8,
+ 0x828F, 0x828F, 0x13E4, 0x8290, 0x8290, 0x45AD, 0x8291, 0x8291, 0x13E9,
+ 0x8292, 0x8292, 0x0AA7, 0x8293, 0x8296, 0x45AE, 0x8297, 0x8297, 0x13EA,
+ 0x8298, 0x8298, 0x13F3, 0x8299, 0x8299, 0x13EB, 0x829A, 0x829B, 0x45B2,
+ 0x829C, 0x829C, 0x0EEE, 0x829D, 0x829D, 0x11A4, 0x829E, 0x829E, 0x45B4,
+ 0x829F, 0x829F, 0x13FD, 0x82A0, 0x82A0, 0x45B5, 0x82A1, 0x82A1, 0x13FB,
+ 0x82A2, 0x82A3, 0x45B6, 0x82A4, 0x82A4, 0x1400, 0x82A5, 0x82A5, 0x08B7,
+ 0x82A6, 0x82A6, 0x0A52, 0x82A7, 0x82A7, 0x45B8, 0x82A8, 0x82A8, 0x13E6,
+ 0x82A9, 0x82A9, 0x13F9, 0x82AA, 0x82AA, 0x13FC, 0x82AB, 0x82AB, 0x13EC,
+ 0x82AC, 0x82AC, 0x066F, 0x82AD, 0x82AD, 0x03D0, 0x82AE, 0x82AE, 0x13F5,
+ 0x82AF, 0x82AF, 0x0F89, 0x82B0, 0x82B0, 0x13EF, 0x82B1, 0x82B1, 0x07BD,
+ 0x82B2, 0x82B2, 0x45B9, 0x82B3, 0x82B3, 0x0659, 0x82B4, 0x82B4, 0x13FA,
+ 0x82B5, 0x82B6, 0x45BA, 0x82B7, 0x82B7, 0x13F4, 0x82B8, 0x82B8, 0x13ED,
+ 0x82B9, 0x82B9, 0x0C58, 0x82BA, 0x82BA, 0x45BC, 0x82BB, 0x82BB, 0x2322,
+ 0x82BC, 0x82BC, 0x45BD, 0x82BD, 0x82BD, 0x0FE8, 0x82BE, 0x82BE, 0x13EE,
+ 0x82BF, 0x82C0, 0x45BE, 0x82C1, 0x82C1, 0x13F8, 0x82C2, 0x82C3, 0x45C0,
+ 0x82C4, 0x82C4, 0x13FE, 0x82C5, 0x82C6, 0x45C2, 0x82C7, 0x82C7, 0x0EBC,
+ 0x82C8, 0x82C8, 0x13F0, 0x82C9, 0x82C9, 0x45C4, 0x82CA, 0x82CA, 0x13F1,
+ 0x82CB, 0x82CC, 0x13F6, 0x82CD, 0x82CD, 0x049B, 0x82CE, 0x82CE, 0x13FF,
+ 0x82CF, 0x82CF, 0x0DCA, 0x82D0, 0x82D0, 0x45C5, 0x82D1, 0x82D1, 0x10FA,
+ 0x82D2, 0x82D2, 0x1409, 0x82D3, 0x82D3, 0x140D, 0x82D4, 0x82D4, 0x0DF9,
+ 0x82D5, 0x82D5, 0x1414, 0x82D6, 0x82D6, 0x45C6, 0x82D7, 0x82D7, 0x0AEC,
+ 0x82D8, 0x82D8, 0x140A, 0x82D9, 0x82DA, 0x45C7, 0x82DB, 0x82DB, 0x094E,
+ 0x82DC, 0x82DC, 0x1407, 0x82DD, 0x82DD, 0x45C9, 0x82DE, 0x82DE, 0x0405,
+ 0x82DF, 0x82DF, 0x070F, 0x82E0, 0x82E0, 0x1413, 0x82E1, 0x82E1, 0x1401,
+ 0x82E2, 0x82E2, 0x45CA, 0x82E3, 0x82E3, 0x13F2, 0x82E4, 0x82E4, 0x1404,
+ 0x82E5, 0x82E5, 0x0CCF, 0x82E6, 0x82E6, 0x096D, 0x82E7, 0x82E7, 0x2336,
+ 0x82E8, 0x82EA, 0x45CB, 0x82EB, 0x82EB, 0x0CF4, 0x82EC, 0x82EE, 0x45CE,
+ 0x82EF, 0x82EF, 0x0426, 0x82F0, 0x82F0, 0x45D1, 0x82F1, 0x82F1, 0x1087,
+ 0x82F2, 0x82F3, 0x45D2, 0x82F4, 0x82F4, 0x1408, 0x82F5, 0x82F6, 0x45D4,
+ 0x82F7, 0x82F7, 0x1403, 0x82F8, 0x82F8, 0x45D6, 0x82F9, 0x82F9, 0x0BDA,
+ 0x82FA, 0x82FA, 0x45D7, 0x82FB, 0x82FB, 0x140C, 0x82FC, 0x82FF, 0x45D8,
+ 0x8300, 0x8300, 0x45DC, 0x8301, 0x8301, 0x121F, 0x8302, 0x8302, 0x0AB4,
+ 0x8303, 0x8303, 0x0653, 0x8304, 0x8304, 0x0C4E, 0x8305, 0x8305, 0x0AAE,
+ 0x8306, 0x8306, 0x1410, 0x8307, 0x8307, 0x1406, 0x8308, 0x8308, 0x1419,
+ 0x8309, 0x8309, 0x1402, 0x830A, 0x830B, 0x45DD, 0x830C, 0x830C, 0x140B,
+ 0x830D, 0x830D, 0x45DF, 0x830E, 0x830E, 0x08D4, 0x830F, 0x830F, 0x1405,
+ 0x8310, 0x8310, 0x45E0, 0x8311, 0x8311, 0x140E, 0x8312, 0x8313, 0x45E1,
+ 0x8314, 0x8315, 0x1411, 0x8316, 0x8316, 0x45E3, 0x8317, 0x8317, 0x1426,
+ 0x8318, 0x8319, 0x45E4, 0x831A, 0x831A, 0x140F, 0x831B, 0x831B, 0x142E,
+ 0x831C, 0x831C, 0x1415, 0x831D, 0x8326, 0x45E6, 0x8327, 0x8327, 0x085E,
+ 0x8328, 0x8328, 0x0547, 0x8329, 0x832A, 0x45F0, 0x832B, 0x832B, 0x0AA8,
+ 0x832C, 0x832C, 0x04AE, 0x832D, 0x832D, 0x1428, 0x832E, 0x832E, 0x45F2,
+ 0x832F, 0x832F, 0x1420, 0x8330, 0x8330, 0x45F3, 0x8331, 0x8331, 0x141D,
+ 0x8332, 0x8332, 0x45F4, 0x8333, 0x8333, 0x142A, 0x8334, 0x8334, 0x141C,
+ 0x8335, 0x8335, 0x1077, 0x8336, 0x8336, 0x04AF, 0x8337, 0x8337, 0x45F5,
+ 0x8338, 0x8338, 0x0CB2, 0x8339, 0x8339, 0x0CBE, 0x833A, 0x833A, 0x1429,
+ 0x833B, 0x833B, 0x45F6, 0x833C, 0x833C, 0x141B, 0x833D, 0x833F, 0x45F7,
+ 0x8340, 0x8340, 0x1425, 0x8341, 0x8342, 0x45FA, 0x8343, 0x8343, 0x1423,
+ 0x8344, 0x8345, 0x45FC, 0x8346, 0x8346, 0x08D2, 0x8347, 0x8347, 0x1422,
+ 0x8348, 0x8348, 0x45FE, 0x8349, 0x8349, 0x04A4, 0x834A, 0x834E, 0x45FF,
+ 0x834F, 0x834F, 0x1421, 0x8350, 0x8350, 0x0869, 0x8351, 0x8351, 0x1416,
+ 0x8352, 0x8352, 0x07D9, 0x8353, 0x8353, 0x4604, 0x8354, 0x8354, 0x09DE,
+ 0x8355, 0x8359, 0x4605, 0x835A, 0x835A, 0x0847, 0x835B, 0x835C, 0x1417,
+ 0x835D, 0x835D, 0x460A, 0x835E, 0x835E, 0x141F, 0x835F, 0x835F, 0x1424,
+ 0x8360, 0x8360, 0x1427, 0x8361, 0x8361, 0x0595, 0x8362, 0x8362, 0x460B,
+ 0x8363, 0x8363, 0x0CB4, 0x8364, 0x8364, 0x07FC, 0x8365, 0x8365, 0x142C,
+ 0x8366, 0x8366, 0x142B, 0x8367, 0x8367, 0x1090, 0x8368, 0x8368, 0x142D,
+ 0x8369, 0x8369, 0x142F, 0x836A, 0x836A, 0x1431, 0x836B, 0x836B, 0x1078,
+ 0x836C, 0x836C, 0x1430, 0x836D, 0x836E, 0x1432, 0x836F, 0x836F, 0x1030,
+ 0x8370, 0x8376, 0x460C, 0x8377, 0x8377, 0x0780, 0x8378, 0x8378, 0x1435,
+ 0x8379, 0x837A, 0x4613, 0x837B, 0x837B, 0x1442, 0x837C, 0x837C, 0x143D,
+ 0x837D, 0x837D, 0x1440, 0x837E, 0x8384, 0x4615, 0x8385, 0x8385, 0x143C,
+ 0x8386, 0x8386, 0x0BED, 0x8387, 0x8388, 0x461C, 0x8389, 0x8389, 0x09DD,
+ 0x838A, 0x838A, 0x22AB, 0x838B, 0x838D, 0x461E, 0x838E, 0x838E, 0x0CE8,
+ 0x838F, 0x8391, 0x4621, 0x8392, 0x8392, 0x141A, 0x8393, 0x8393, 0x143A,
+ 0x8394, 0x8395, 0x4624, 0x8396, 0x8396, 0x1FBF, 0x8397, 0x8397, 0x4626,
+ 0x8398, 0x8398, 0x1443, 0x8399, 0x839A, 0x4627, 0x839B, 0x839B, 0x141E,
+ 0x839C, 0x839C, 0x143B, 0x839D, 0x839D, 0x4629, 0x839E, 0x839E, 0x1444,
+ 0x839F, 0x839F, 0x462A, 0x83A0, 0x83A0, 0x1438, 0x83A1, 0x83A1, 0x462B,
+ 0x83A2, 0x83A2, 0x1F7D, 0x83A3, 0x83A6, 0x462C, 0x83A7, 0x83A7, 0x2333,
+ 0x83A8, 0x83A8, 0x1445, 0x83A9, 0x83A9, 0x143F, 0x83AA, 0x83AA, 0x1439,
+ 0x83AB, 0x83AB, 0x0B0D, 0x83AC, 0x83AF, 0x4630, 0x83B0, 0x83B0, 0x1434,
+ 0x83B1, 0x83B1, 0x099E, 0x83B2, 0x83B2, 0x09F4, 0x83B3, 0x83B4, 0x1436,
+ 0x83B5, 0x83B5, 0x4634, 0x83B6, 0x83B6, 0x143E, 0x83B7, 0x83B7, 0x0806,
+ 0x83B8, 0x83B8, 0x1441, 0x83B9, 0x83B9, 0x108D, 0x83BA, 0x83BA, 0x1446,
+ 0x83BB, 0x83BB, 0x4635, 0x83BC, 0x83BC, 0x1447, 0x83BD, 0x83BD, 0x0AAC,
+ 0x83BE, 0x83BF, 0x4636, 0x83C0, 0x83C0, 0x145E, 0x83C1, 0x83C1, 0x1448,
+ 0x83C2, 0x83C4, 0x4638, 0x83C5, 0x83C5, 0x145D, 0x83C6, 0x83C6, 0x463B,
+ 0x83C7, 0x83C7, 0x0716, 0x83C8, 0x83C9, 0x463C, 0x83CA, 0x83CA, 0x0904,
+ 0x83CB, 0x83CB, 0x463E, 0x83CC, 0x83CC, 0x0929, 0x83CD, 0x83CE, 0x463F,
+ 0x83CF, 0x83CF, 0x0781, 0x83D0, 0x83D3, 0x4641, 0x83D4, 0x83D4, 0x1456,
+ 0x83D5, 0x83D5, 0x4645, 0x83D6, 0x83D6, 0x1451, 0x83D7, 0x83D7, 0x4646,
+ 0x83D8, 0x83D8, 0x144B, 0x83D9, 0x83DB, 0x4647, 0x83DC, 0x83DC, 0x0492,
+ 0x83DD, 0x83DD, 0x144F, 0x83DE, 0x83DE, 0x464A, 0x83DF, 0x83DF, 0x1457,
+ 0x83E0, 0x83E0, 0x046B, 0x83E1, 0x83E1, 0x1461, 0x83E2, 0x83E4, 0x464B,
+ 0x83E5, 0x83E5, 0x144A, 0x83E6, 0x83E8, 0x464E, 0x83E9, 0x83E9, 0x0BEF,
+ 0x83EA, 0x83EA, 0x145C, 0x83EB, 0x83EE, 0x4651, 0x83EF, 0x83EF, 0x1F4D,
+ 0x83F0, 0x83F0, 0x1460, 0x83F1, 0x83F1, 0x0A2B, 0x83F2, 0x83F2, 0x0663,
+ 0x83F3, 0x83F7, 0x4655, 0x83F8, 0x83F9, 0x145A, 0x83FA, 0x83FC, 0x465A,
+ 0x83FD, 0x83FD, 0x1450, 0x83FE, 0x83FF, 0x465D, 0x8400, 0x8400, 0x465F,
+ 0x8401, 0x8401, 0x1449, 0x8402, 0x8402, 0x4660, 0x8403, 0x8403, 0x1459,
+ 0x8404, 0x8404, 0x0E24, 0x8405, 0x8405, 0x4661, 0x8406, 0x8406, 0x1455,
+ 0x8407, 0x8407, 0x2334, 0x8408, 0x8409, 0x4662, 0x840A, 0x840A, 0x1FF1,
+ 0x840B, 0x840B, 0x144E, 0x840C, 0x840C, 0x0ACD, 0x840D, 0x840D, 0x0BDB,
+ 0x840E, 0x840E, 0x0EBD, 0x840F, 0x840F, 0x1458, 0x8410, 0x8410, 0x4664,
+ 0x8411, 0x8411, 0x1454, 0x8412, 0x8417, 0x4665, 0x8418, 0x8418, 0x144D,
+ 0x8419, 0x841B, 0x466B, 0x841C, 0x841C, 0x1452, 0x841D, 0x841D, 0x0A83,
+ 0x841E, 0x8423, 0x466E, 0x8424, 0x8425, 0x108E, 0x8426, 0x8426, 0x145F,
+ 0x8427, 0x8427, 0x0F61, 0x8428, 0x8428, 0x0CD3, 0x8429, 0x842B, 0x4674,
+ 0x842C, 0x842C, 0x218B, 0x842D, 0x8430, 0x4677, 0x8431, 0x8431, 0x1472,
+ 0x8432, 0x8434, 0x467B, 0x8435, 0x8435, 0x2349, 0x8436, 0x8437, 0x467E,
+ 0x8438, 0x8438, 0x1453, 0x8439, 0x843B, 0x4680, 0x843C, 0x843C, 0x146C,
+ 0x843D, 0x843D, 0x0A8B, 0x843E, 0x8445, 0x4683, 0x8446, 0x8446, 0x146D,
+ 0x8447, 0x8448, 0x468B, 0x8449, 0x8449, 0x220B, 0x844A, 0x8450, 0x468D,
+ 0x8451, 0x8451, 0x1463, 0x8452, 0x8452, 0x2346, 0x8453, 0x8456, 0x4694,
+ 0x8457, 0x8457, 0x11F7, 0x8458, 0x8458, 0x4698, 0x8459, 0x8459, 0x1465,
+ 0x845A, 0x845A, 0x1464, 0x845B, 0x845B, 0x06EB, 0x845C, 0x845C, 0x1462,
+ 0x845D, 0x8460, 0x4699, 0x8461, 0x8461, 0x0BEE, 0x8462, 0x8462, 0x469D,
+ 0x8463, 0x8463, 0x05EC, 0x8464, 0x8464, 0x2347, 0x8465, 0x8465, 0x469E,
+ 0x8466, 0x8466, 0x2193, 0x8467, 0x8468, 0x469F, 0x8469, 0x8469, 0x146E,
+ 0x846A, 0x846A, 0x46A1, 0x846B, 0x846B, 0x07B0, 0x846C, 0x846C, 0x1124,
+ 0x846D, 0x846D, 0x1473, 0x846E, 0x846E, 0x46A2, 0x846F, 0x846F, 0x26A1,
+ 0x8470, 0x8470, 0x46A3, 0x8471, 0x8471, 0x0553, 0x8472, 0x8472, 0x46A4,
+ 0x8473, 0x8473, 0x1466, 0x8474, 0x8474, 0x46A5, 0x8475, 0x8475, 0x0988,
+ 0x8476, 0x8476, 0x146F, 0x8477, 0x8477, 0x1F62, 0x8478, 0x8478, 0x146B,
+ 0x8479, 0x8479, 0x46A6, 0x847A, 0x847A, 0x1469, 0x847B, 0x8481, 0x46A7,
+ 0x8482, 0x8482, 0x05BA, 0x8483, 0x8486, 0x46AE, 0x8487, 0x8488, 0x1467,
+ 0x8489, 0x8489, 0x146A, 0x848A, 0x848A, 0x46B2, 0x848B, 0x848B, 0x0880,
+ 0x848C, 0x848C, 0x1470, 0x848D, 0x848D, 0x46B3, 0x848E, 0x848E, 0x1471,
+ 0x848F, 0x8492, 0x46B4, 0x8493, 0x8493, 0x234D, 0x8494, 0x8494, 0x2348,
+ 0x8495, 0x8496, 0x46B8, 0x8497, 0x8497, 0x1481, 0x8498, 0x8498, 0x46BA,
+ 0x8499, 0x8499, 0x0ACE, 0x849A, 0x849B, 0x46BB, 0x849C, 0x849C, 0x0DD7,
+ 0x849D, 0x84A0, 0x46BD, 0x84A1, 0x84A1, 0x147E, 0x84A2, 0x84AE, 0x46C1,
+ 0x84AF, 0x84AF, 0x1297, 0x84B0, 0x84B1, 0x46CE, 0x84B2, 0x84B2, 0x0BF0,
+ 0x84B3, 0x84B3, 0x46D0, 0x84B4, 0x84B4, 0x1480, 0x84B5, 0x84B7, 0x46D1,
+ 0x84B8, 0x84B8, 0x1195, 0x84B9, 0x84B9, 0x147F, 0x84BA, 0x84BA, 0x147C,
+ 0x84BB, 0x84BB, 0x46D4, 0x84BC, 0x84BC, 0x1E60, 0x84BD, 0x84BD, 0x1478,
+ 0x84BE, 0x84BE, 0x46D5, 0x84BF, 0x84BF, 0x147B, 0x84C0, 0x84C0, 0x2345,
+ 0x84C1, 0x84C1, 0x1474, 0x84C2, 0x84C3, 0x46D6, 0x84C4, 0x84C4, 0x0FB9,
+ 0x84C5, 0x84C8, 0x46D8, 0x84C9, 0x84C9, 0x0CB3, 0x84CA, 0x84CA, 0x147A,
+ 0x84CB, 0x84CB, 0x1F12, 0x84CC, 0x84CC, 0x46DC, 0x84CD, 0x84CD, 0x1475,
+ 0x84CE, 0x84CF, 0x46DD, 0x84D0, 0x84D0, 0x1476, 0x84D1, 0x84D1, 0x0DE7,
+ 0x84D2, 0x84D2, 0x46DF, 0x84D3, 0x84D3, 0x1479, 0x84D4, 0x84D5, 0x46E0,
+ 0x84D6, 0x84D6, 0x0436, 0x84D7, 0x84DC, 0x46E2, 0x84DD, 0x84DD, 0x09A1,
+ 0x84DE, 0x84DE, 0x46E8, 0x84DF, 0x84DF, 0x082E, 0x84E0, 0x84E0, 0x147D,
+ 0x84E1, 0x84E2, 0x46E9, 0x84E3, 0x84E3, 0x1483, 0x84E4, 0x84E4, 0x46EB,
+ 0x84E5, 0x84E5, 0x1482, 0x84E6, 0x84E6, 0x1477, 0x84E7, 0x84EB, 0x46EC,
+ 0x84EC, 0x84EC, 0x0BAF, 0x84ED, 0x84ED, 0x46F1, 0x84EE, 0x84EE, 0x2018,
+ 0x84EF, 0x84EF, 0x2335, 0x84F0, 0x84F0, 0x1487, 0x84F1, 0x84FB, 0x46F2,
+ 0x84FC, 0x84FC, 0x148E, 0x84FD, 0x84FD, 0x233C, 0x84FE, 0x84FE, 0x46FD,
+ 0x84FF, 0x84FF, 0x148D, 0x8500, 0x850B, 0x46FE, 0x850C, 0x850C, 0x1484,
+ 0x850D, 0x8510, 0x470A, 0x8511, 0x8511, 0x0AF4, 0x8512, 0x8512, 0x470E,
+ 0x8513, 0x8513, 0x0AA2, 0x8514, 0x8514, 0x266F, 0x8515, 0x8516, 0x470F,
+ 0x8517, 0x8517, 0x1182, 0x8518, 0x8519, 0x4711, 0x851A, 0x851A, 0x0EC4,
+ 0x851B, 0x851D, 0x4713, 0x851E, 0x851E, 0x2351, 0x851F, 0x851F, 0x1489,
+ 0x8520, 0x8520, 0x4716, 0x8521, 0x8521, 0x0493, 0x8522, 0x8522, 0x4717,
+ 0x8523, 0x8523, 0x1FA0, 0x8524, 0x8525, 0x4718, 0x8526, 0x8526, 0x2338,
+ 0x8527, 0x852A, 0x471A, 0x852B, 0x852B, 0x0B4B, 0x852C, 0x852C, 0x0D76,
+ 0x852D, 0x852D, 0x221B, 0x852E, 0x8536, 0x471E, 0x8537, 0x8537, 0x0C3B,
+ 0x8538, 0x8538, 0x1486, 0x8539, 0x8539, 0x1488, 0x853A, 0x853A, 0x148A,
+ 0x853B, 0x853B, 0x148C, 0x853C, 0x853C, 0x03B5, 0x853D, 0x853D, 0x0437,
+ 0x853E, 0x8540, 0x4727, 0x8541, 0x8541, 0x2342, 0x8542, 0x8542, 0x472A,
+ 0x8543, 0x8543, 0x1496, 0x8544, 0x8545, 0x472B, 0x8546, 0x8546, 0x234F,
+ 0x8547, 0x8547, 0x472D, 0x8548, 0x8548, 0x1490, 0x8549, 0x8549, 0x0887,
+ 0x854A, 0x854A, 0x0CCA, 0x854B, 0x854D, 0x472E, 0x854E, 0x854E, 0x233D,
+ 0x854F, 0x8551, 0x4731, 0x8552, 0x8552, 0x2344, 0x8553, 0x8553, 0x2331,
+ 0x8554, 0x8554, 0x4734, 0x8555, 0x8555, 0x234B, 0x8556, 0x8556, 0x148B,
+ 0x8557, 0x8557, 0x4735, 0x8558, 0x8558, 0x233B, 0x8559, 0x8559, 0x148F,
+ 0x855A, 0x855D, 0x4736, 0x855E, 0x855E, 0x1493, 0x855F, 0x8561, 0x473A,
+ 0x8562, 0x8562, 0x2350, 0x8563, 0x8563, 0x473D, 0x8564, 0x8564, 0x1492,
+ 0x8565, 0x8567, 0x473E, 0x8568, 0x8568, 0x1491, 0x8569, 0x8569, 0x1EB4,
+ 0x856A, 0x856A, 0x21A6, 0x856B, 0x856C, 0x4741, 0x856D, 0x856D, 0x21CB,
+ 0x856E, 0x8571, 0x4743, 0x8572, 0x8572, 0x1497, 0x8573, 0x8573, 0x4747,
+ 0x8574, 0x8574, 0x110F, 0x8575, 0x8576, 0x4748, 0x8577, 0x8577, 0x2355,
+ 0x8578, 0x8578, 0x474A, 0x8579, 0x8579, 0x149D, 0x857A, 0x857A, 0x1494,
+ 0x857B, 0x857B, 0x1498, 0x857C, 0x857D, 0x474B, 0x857E, 0x857E, 0x09C4,
+ 0x857F, 0x8583, 0x474D, 0x8584, 0x8584, 0x040A, 0x8585, 0x8585, 0x14A0,
+ 0x8586, 0x8586, 0x4752, 0x8587, 0x8587, 0x149B, 0x8588, 0x8588, 0x233E,
+ 0x8589, 0x8589, 0x4753, 0x858A, 0x858A, 0x1F74, 0x858B, 0x858B, 0x4754,
+ 0x858C, 0x858C, 0x2330, 0x858D, 0x858E, 0x4755, 0x858F, 0x858F, 0x149C,
+ 0x8590, 0x8590, 0x4757, 0x8591, 0x8591, 0x2680, 0x8592, 0x8593, 0x4758,
+ 0x8594, 0x8594, 0x20DA, 0x8595, 0x859A, 0x475A, 0x859B, 0x859B, 0x0FCF,
+ 0x859C, 0x859C, 0x149F, 0x859D, 0x859E, 0x4760, 0x859F, 0x859F, 0x234A,
+ 0x85A0, 0x85A3, 0x4762, 0x85A4, 0x85A4, 0x1499, 0x85A5, 0x85A5, 0x4766,
+ 0x85A6, 0x85A6, 0x1F91, 0x85A7, 0x85A7, 0x4767, 0x85A8, 0x85A8, 0x149A,
+ 0x85A9, 0x85A9, 0x2107, 0x85AA, 0x85AA, 0x0F88, 0x85AB, 0x85AD, 0x4768,
+ 0x85AE, 0x85AE, 0x149E, 0x85AF, 0x85AF, 0x0D84, 0x85B0, 0x85B0, 0x14A3,
+ 0x85B1, 0x85B6, 0x476B, 0x85B7, 0x85B7, 0x14A2, 0x85B8, 0x85B8, 0x4771,
+ 0x85B9, 0x85B9, 0x14A1, 0x85BA, 0x85BA, 0x233F, 0x85BB, 0x85C0, 0x4772,
+ 0x85C1, 0x85C1, 0x14A5, 0x85C2, 0x85C8, 0x4778, 0x85C9, 0x85C9, 0x08B6,
+ 0x85CA, 0x85CC, 0x477F, 0x85CD, 0x85CD, 0x1FF4, 0x85CE, 0x85CE, 0x2343,
+ 0x85CF, 0x85CF, 0x049F, 0x85D0, 0x85D0, 0x0AEF, 0x85D1, 0x85D2, 0x4782,
+ 0x85D3, 0x85D3, 0x14A4, 0x85D4, 0x85D4, 0x4784, 0x85D5, 0x85D5, 0x0B7B,
+ 0x85D6, 0x85DB, 0x4785, 0x85DC, 0x85DC, 0x14A6, 0x85DD, 0x85DD, 0x2212,
+ 0x85DE, 0x85E3, 0x478B, 0x85E4, 0x85E4, 0x0E2C, 0x85E5, 0x85E5, 0x2207,
+ 0x85E6, 0x85E8, 0x4791, 0x85E9, 0x85E9, 0x0647, 0x85EA, 0x85EA, 0x2359,
+ 0x85EB, 0x85F3, 0x4794, 0x85F4, 0x85F4, 0x2254, 0x85F5, 0x85F5, 0x479D,
+ 0x85F6, 0x85F6, 0x2332, 0x85F7, 0x85F8, 0x479E, 0x85F9, 0x85F9, 0x1E26,
+ 0x85FA, 0x85FA, 0x2357, 0x85FB, 0x85FB, 0x1128, 0x85FC, 0x85FE, 0x47A0,
+ 0x85FF, 0x85FF, 0x14A7, 0x8600, 0x8603, 0x47A3, 0x8604, 0x8604, 0x2358,
+ 0x8605, 0x8605, 0x14A9, 0x8606, 0x8606, 0x2042, 0x8607, 0x8607, 0x2153,
+ 0x8608, 0x860A, 0x47A7, 0x860B, 0x860B, 0x20BB, 0x860C, 0x8610, 0x47AA,
+ 0x8611, 0x8611, 0x0B05, 0x8612, 0x8615, 0x47AF, 0x8616, 0x8616, 0x14AB,
+ 0x8617, 0x8619, 0x47B3, 0x861A, 0x861A, 0x235A, 0x861B, 0x861D, 0x47B6,
+ 0x861E, 0x861E, 0x2356, 0x861F, 0x8621, 0x47B9, 0x8622, 0x8622, 0x2337,
+ 0x8623, 0x8626, 0x47BC, 0x8627, 0x8627, 0x14A8, 0x8628, 0x8628, 0x47C0,
+ 0x8629, 0x8629, 0x14AA, 0x862A, 0x862C, 0x47C1, 0x862D, 0x862D, 0x1FF9,
+ 0x862E, 0x8637, 0x47C4, 0x8638, 0x8638, 0x115B, 0x8639, 0x8639, 0x47CE,
+ 0x863A, 0x863A, 0x2353, 0x863B, 0x863B, 0x47CF, 0x863C, 0x863C, 0x14AC,
+ 0x863D, 0x863E, 0x47D0, 0x863F, 0x863F, 0x2061, 0x8640, 0x864C, 0x47D2,
+ 0x864D, 0x864D, 0x1BF0, 0x864E, 0x864E, 0x07B7, 0x864F, 0x864F, 0x0A59,
+ 0x8650, 0x8650, 0x0B71, 0x8651, 0x8651, 0x0A6E, 0x8652, 0x8653, 0x47DF,
+ 0x8654, 0x8654, 0x1BF1, 0x8655, 0x8655, 0x1E95, 0x8656, 0x8659, 0x47E1,
+ 0x865A, 0x865A, 0x0FB4, 0x865B, 0x865B, 0x47E5, 0x865C, 0x865C, 0x2049,
+ 0x865D, 0x865D, 0x47E6, 0x865E, 0x865E, 0x10C2, 0x865F, 0x865F, 0x1F42,
+ 0x8660, 0x8661, 0x47E7, 0x8662, 0x8662, 0x196D, 0x8663, 0x8666, 0x47E9,
+ 0x8667, 0x8667, 0x1FE8, 0x8668, 0x866A, 0x47ED, 0x866B, 0x866B, 0x050B,
+ 0x866C, 0x866C, 0x1BF2, 0x866D, 0x866D, 0x47F0, 0x866E, 0x866E, 0x1BF3,
+ 0x866F, 0x8670, 0x47F1, 0x8671, 0x8671, 0x0D44, 0x8672, 0x8678, 0x47F3,
+ 0x8679, 0x8679, 0x079E, 0x867A, 0x867A, 0x1BF5, 0x867B, 0x867B, 0x1BF7,
+ 0x867C, 0x867C, 0x1BF6, 0x867D, 0x867D, 0x0DD9, 0x867E, 0x867E, 0x0F27,
+ 0x867F, 0x867F, 0x1BF4, 0x8680, 0x8680, 0x0D4B, 0x8681, 0x8681, 0x1056,
+ 0x8682, 0x8682, 0x0A93, 0x8683, 0x8689, 0x47FA, 0x868A, 0x868A, 0x0ED2,
+ 0x868B, 0x868B, 0x1BFA, 0x868C, 0x868C, 0x0401, 0x868D, 0x868D, 0x1BF9,
+ 0x868E, 0x8692, 0x4801, 0x8693, 0x8693, 0x1C00, 0x8694, 0x8694, 0x4806,
+ 0x8695, 0x8695, 0x0496, 0x8696, 0x869B, 0x4807, 0x869C, 0x869C, 0x0FEA,
+ 0x869D, 0x869D, 0x1BFC, 0x869E, 0x86A2, 0x480D, 0x86A3, 0x86A3, 0x1BFE,
+ 0x86A4, 0x86A4, 0x112C, 0x86A5, 0x86A6, 0x4812, 0x86A7, 0x86A7, 0x1BFD,
+ 0x86A8, 0x86A8, 0x1BF8, 0x86A9, 0x86A9, 0x1C01, 0x86AA, 0x86AA, 0x1BFF,
+ 0x86AB, 0x86AB, 0x4814, 0x86AC, 0x86AC, 0x1BFB, 0x86AD, 0x86AE, 0x4815,
+ 0x86AF, 0x86AF, 0x1C09, 0x86B0, 0x86B0, 0x1C06, 0x86B1, 0x86B1, 0x1C08,
+ 0x86B2, 0x86B3, 0x4817, 0x86B4, 0x86B4, 0x1C0C, 0x86B5, 0x86B5, 0x1C04,
+ 0x86B6, 0x86B6, 0x1C02, 0x86B7, 0x86B9, 0x4819, 0x86BA, 0x86BA, 0x1C07,
+ 0x86BB, 0x86BF, 0x481C, 0x86C0, 0x86C0, 0x11FA, 0x86C1, 0x86C3, 0x4821,
+ 0x86C4, 0x86C4, 0x1C03, 0x86C5, 0x86C5, 0x4824, 0x86C6, 0x86C6, 0x0C76,
+ 0x86C7, 0x86C7, 0x0D18, 0x86C8, 0x86C8, 0x4825, 0x86C9, 0x86C9, 0x1C0A,
+ 0x86CA, 0x86CA, 0x071F, 0x86CB, 0x86CB, 0x0591, 0x86CC, 0x86CD, 0x4826,
+ 0x86CE, 0x86CE, 0x1C05, 0x86CF, 0x86CF, 0x1C0B, 0x86D0, 0x86D0, 0x1C12,
+ 0x86D1, 0x86D1, 0x1C18, 0x86D2, 0x86D3, 0x4828, 0x86D4, 0x86D4, 0x07EC,
+ 0x86D5, 0x86D7, 0x482A, 0x86D8, 0x86D8, 0x1C17, 0x86D9, 0x86D9, 0x0E8D,
+ 0x86DA, 0x86DA, 0x482D, 0x86DB, 0x86DB, 0x11EA, 0x86DC, 0x86DD, 0x482E,
+ 0x86DE, 0x86DE, 0x1C14, 0x86DF, 0x86DF, 0x1C16, 0x86E0, 0x86E3, 0x4830,
+ 0x86E4, 0x86E4, 0x06ED, 0x86E5, 0x86E8, 0x4834, 0x86E9, 0x86E9, 0x1C0D,
+ 0x86EA, 0x86EC, 0x4838, 0x86ED, 0x86ED, 0x1C10, 0x86EE, 0x86EE, 0x0AA0,
+ 0x86EF, 0x86EF, 0x483B, 0x86F0, 0x86F0, 0x117E, 0x86F1, 0x86F2, 0x1C0E,
+ 0x86F3, 0x86F3, 0x1C11, 0x86F4, 0x86F4, 0x1C15, 0x86F5, 0x86F7, 0x483C,
+ 0x86F8, 0x86F8, 0x1C1B, 0x86F9, 0x86F9, 0x10A1, 0x86FA, 0x86FA, 0x25DA,
+ 0x86FB, 0x86FD, 0x483F, 0x86FE, 0x86FE, 0x0629, 0x86FF, 0x86FF, 0x4842,
+ 0x8700, 0x8700, 0x0D88, 0x8701, 0x8701, 0x4843, 0x8702, 0x8702, 0x0681,
+ 0x8703, 0x8703, 0x1C19, 0x8704, 0x8705, 0x4844, 0x8706, 0x8706, 0x25D7,
+ 0x8707, 0x8707, 0x1C1A, 0x8708, 0x8708, 0x1C1C, 0x8709, 0x8709, 0x1C1F,
+ 0x870A, 0x870A, 0x1C1D, 0x870B, 0x870C, 0x4846, 0x870D, 0x870D, 0x1C1E,
+ 0x870E, 0x8711, 0x4848, 0x8712, 0x8712, 0x0FFA, 0x8713, 0x8713, 0x1C13,
+ 0x8714, 0x8714, 0x484C, 0x8715, 0x8715, 0x0E7A, 0x8716, 0x8716, 0x484D,
+ 0x8717, 0x8717, 0x0EDE, 0x8718, 0x8718, 0x11A8, 0x8719, 0x8719, 0x484E,
+ 0x871A, 0x871A, 0x1C25, 0x871B, 0x871B, 0x484F, 0x871C, 0x871C, 0x0AE0,
+ 0x871D, 0x871D, 0x4850, 0x871E, 0x871E, 0x1C22, 0x871F, 0x8720, 0x4851,
+ 0x8721, 0x8721, 0x099A, 0x8722, 0x8722, 0x1C2E, 0x8723, 0x8723, 0x1C20,
+ 0x8724, 0x8724, 0x4853, 0x8725, 0x8725, 0x1C23, 0x8726, 0x8728, 0x4854,
+ 0x8729, 0x8729, 0x1C2A, 0x872A, 0x872D, 0x4857, 0x872E, 0x872E, 0x1C24,
+ 0x872F, 0x8730, 0x485B, 0x8731, 0x8731, 0x1C29, 0x8732, 0x8733, 0x485D,
+ 0x8734, 0x8734, 0x1C28, 0x8735, 0x8736, 0x485F, 0x8737, 0x8737, 0x1C2B,
+ 0x8738, 0x873A, 0x4861, 0x873B, 0x873B, 0x1C21, 0x873C, 0x873D, 0x4864,
+ 0x873E, 0x873E, 0x1C26, 0x873F, 0x873F, 0x1C2C, 0x8740, 0x8746, 0x4866,
+ 0x8747, 0x8747, 0x1091, 0x8748, 0x8748, 0x1C27, 0x8749, 0x8749, 0x04BC,
+ 0x874A, 0x874B, 0x486D, 0x874C, 0x874C, 0x1C34, 0x874D, 0x874D, 0x486F,
+ 0x874E, 0x874E, 0x0F76, 0x874F, 0x8752, 0x4870, 0x8753, 0x8753, 0x1C37,
+ 0x8754, 0x8754, 0x4874, 0x8755, 0x8755, 0x212E, 0x8756, 0x8756, 0x4875,
+ 0x8757, 0x8757, 0x07DD, 0x8758, 0x8758, 0x4876, 0x8759, 0x8759, 0x1C3B,
+ 0x875A, 0x875F, 0x4877, 0x8760, 0x8760, 0x1C32, 0x8761, 0x8762, 0x487D,
+ 0x8763, 0x8763, 0x1C38, 0x8764, 0x8764, 0x1C3A, 0x8765, 0x8765, 0x1C3C,
+ 0x8766, 0x8766, 0x21B2, 0x8767, 0x876D, 0x487F, 0x876E, 0x876E, 0x1C35,
+ 0x876F, 0x876F, 0x4886, 0x8770, 0x8770, 0x1C33, 0x8771, 0x8773, 0x4887,
+ 0x8774, 0x8774, 0x07B2, 0x8775, 0x8775, 0x488A, 0x8776, 0x8776, 0x05DC,
+ 0x8777, 0x8777, 0x488B, 0x8778, 0x8778, 0x219E, 0x8779, 0x877A, 0x488C,
+ 0x877B, 0x877B, 0x1C31, 0x877C, 0x877C, 0x1C39, 0x877D, 0x877E, 0x1C2F,
+ 0x877F, 0x8781, 0x488E, 0x8782, 0x8782, 0x1C2D, 0x8783, 0x8783, 0x1C46,
+ 0x8784, 0x8784, 0x25DC, 0x8785, 0x8785, 0x1C43, 0x8786, 0x8787, 0x4891,
+ 0x8788, 0x8788, 0x1C42, 0x8789, 0x878A, 0x4893, 0x878B, 0x878B, 0x1C36,
+ 0x878C, 0x878C, 0x4895, 0x878D, 0x878D, 0x0CB5, 0x878E, 0x8792, 0x4896,
+ 0x8793, 0x8793, 0x1C3D, 0x8794, 0x8796, 0x489B, 0x8797, 0x8797, 0x1C45,
+ 0x8798, 0x879D, 0x489E, 0x879E, 0x879E, 0x206C, 0x879F, 0x879F, 0x0AFD,
+ 0x87A0, 0x87A1, 0x48A4, 0x87A2, 0x87A2, 0x2226, 0x87A3, 0x87A7, 0x48A6,
+ 0x87A8, 0x87A8, 0x1C3F, 0x87A9, 0x87AA, 0x48AB, 0x87AB, 0x87AB, 0x1C47,
+ 0x87AC, 0x87AC, 0x1C49, 0x87AD, 0x87AD, 0x1C44, 0x87AE, 0x87AE, 0x48AD,
+ 0x87AF, 0x87AF, 0x1C3E, 0x87B0, 0x87B2, 0x48AE, 0x87B3, 0x87B3, 0x1C4B,
+ 0x87B4, 0x87B4, 0x48B1, 0x87B5, 0x87B5, 0x1C4A, 0x87B6, 0x87B9, 0x48B2,
+ 0x87BA, 0x87BA, 0x0A84, 0x87BB, 0x87BB, 0x25E0, 0x87BC, 0x87BC, 0x48B6,
+ 0x87BD, 0x87BD, 0x1C4E, 0x87BE, 0x87BF, 0x48B7, 0x87C0, 0x87C0, 0x1C50,
+ 0x87C1, 0x87C3, 0x48B9, 0x87C4, 0x87C4, 0x227B, 0x87C5, 0x87C5, 0x48BC,
+ 0x87C6, 0x87C6, 0x1C41, 0x87C7, 0x87C7, 0x48BD, 0x87C8, 0x87C8, 0x25DE,
+ 0x87C9, 0x87C9, 0x48BE, 0x87CA, 0x87CA, 0x1C51, 0x87CB, 0x87CB, 0x1C4C,
+ 0x87CC, 0x87CD, 0x48BF, 0x87CE, 0x87CE, 0x25E1, 0x87CF, 0x87D0, 0x48C1,
+ 0x87D1, 0x87D1, 0x1C4F, 0x87D2, 0x87D2, 0x1C40, 0x87D3, 0x87D3, 0x1C4D,
+ 0x87D4, 0x87DA, 0x48C3, 0x87DB, 0x87DB, 0x1C52, 0x87DC, 0x87DF, 0x48CA,
+ 0x87E0, 0x87E0, 0x1C54, 0x87E1, 0x87E2, 0x48CE, 0x87E3, 0x87E3, 0x25D5,
+ 0x87E4, 0x87E4, 0x48D0, 0x87E5, 0x87E5, 0x1C48, 0x87E6, 0x87E9, 0x48D1,
+ 0x87EA, 0x87EA, 0x1C53, 0x87EB, 0x87EB, 0x48D5, 0x87EC, 0x87EC, 0x1E6B,
+ 0x87ED, 0x87ED, 0x48D6, 0x87EE, 0x87EE, 0x1C55, 0x87EF, 0x87EF, 0x25DB,
+ 0x87F0, 0x87F1, 0x48D7, 0x87F2, 0x87F2, 0x1E89, 0x87F3, 0x87F5, 0x48D9,
+ 0x87F6, 0x87F6, 0x25D9, 0x87F7, 0x87F8, 0x48DC, 0x87F9, 0x87F9, 0x0F82,
+ 0x87FA, 0x87FA, 0x48DE, 0x87FB, 0x87FB, 0x2211, 0x87FC, 0x87FD, 0x48DF,
+ 0x87FE, 0x87FE, 0x1C58, 0x87FF, 0x87FF, 0x48E1, 0x8800, 0x8802, 0x48E2,
+ 0x8803, 0x8803, 0x130D, 0x8804, 0x8804, 0x48E5, 0x8805, 0x8805, 0x2229,
+ 0x8806, 0x8806, 0x25D6, 0x8807, 0x8809, 0x48E6, 0x880A, 0x880A, 0x1C59,
+ 0x880B, 0x880F, 0x48E9, 0x8810, 0x8810, 0x25DD, 0x8811, 0x8811, 0x25DF,
+ 0x8812, 0x8812, 0x48EE, 0x8813, 0x8813, 0x1C57, 0x8814, 0x8814, 0x48EF,
+ 0x8815, 0x8815, 0x0CBF, 0x8816, 0x8816, 0x1C56, 0x8817, 0x881A, 0x48F0,
+ 0x881B, 0x881B, 0x1C5A, 0x881C, 0x881E, 0x48F4, 0x881F, 0x881F, 0x1FEF,
+ 0x8820, 0x8820, 0x48F7, 0x8821, 0x8821, 0x1C5B, 0x8822, 0x8822, 0x0543,
+ 0x8823, 0x8823, 0x25D8, 0x8824, 0x8830, 0x48F8, 0x8831, 0x8831, 0x1F29,
+ 0x8832, 0x8832, 0x1A8D, 0x8833, 0x8835, 0x4905, 0x8836, 0x8836, 0x1E5B,
+ 0x8837, 0x8838, 0x4908, 0x8839, 0x8839, 0x1C5C, 0x883A, 0x883A, 0x490A,
+ 0x883B, 0x883B, 0x2076, 0x883C, 0x883C, 0x1C5D, 0x883D, 0x883F, 0x490B,
+ 0x8840, 0x8840, 0x0FD3, 0x8841, 0x8843, 0x490E, 0x8844, 0x8844, 0x1CAA,
+ 0x8845, 0x8845, 0x0F91, 0x8846, 0x8846, 0x2297, 0x8847, 0x8849, 0x4911,
+ 0x884A, 0x884A, 0x2690, 0x884B, 0x884B, 0x4914, 0x884C, 0x884C, 0x0F9B,
+ 0x884D, 0x884D, 0x1005, 0x884E, 0x8852, 0x4915, 0x8853, 0x8853, 0x213F,
+ 0x8854, 0x8854, 0x0F3B, 0x8855, 0x8856, 0x491A, 0x8857, 0x8857, 0x08A7,
+ 0x8858, 0x8858, 0x491C, 0x8859, 0x8859, 0x0FEC, 0x885A, 0x885A, 0x491D,
+ 0x885B, 0x885B, 0x2198, 0x885C, 0x885C, 0x491E, 0x885D, 0x885D, 0x1E88,
+ 0x885E, 0x8860, 0x491F, 0x8861, 0x8861, 0x0799, 0x8862, 0x8862, 0x15ED,
+ 0x8863, 0x8863, 0x1049, 0x8864, 0x8864, 0x1BA6, 0x8865, 0x8865, 0x0480,
+ 0x8866, 0x8867, 0x4922, 0x8868, 0x8868, 0x0456, 0x8869, 0x8869, 0x1BA7,
+ 0x886A, 0x886A, 0x4924, 0x886B, 0x886B, 0x0CF9, 0x886C, 0x886C, 0x04E9,
+ 0x886D, 0x886D, 0x4925, 0x886E, 0x886E, 0x1306, 0x886F, 0x886F, 0x4926,
+ 0x8870, 0x8870, 0x0D9A, 0x8871, 0x8871, 0x4927, 0x8872, 0x8872, 0x1BA8,
+ 0x8873, 0x8876, 0x4928, 0x8877, 0x8877, 0x11D3, 0x8878, 0x8878, 0x492C,
+ 0x8879, 0x8879, 0x228C, 0x887A, 0x887C, 0x492D, 0x887D, 0x887D, 0x1BA9,
+ 0x887E, 0x887E, 0x1CBE, 0x887F, 0x887F, 0x1BAA, 0x8880, 0x8880, 0x4930,
+ 0x8881, 0x8881, 0x10EF, 0x8882, 0x8882, 0x1BAB, 0x8883, 0x8883, 0x4931,
+ 0x8884, 0x8884, 0x03CB, 0x8885, 0x8885, 0x1CBF, 0x8886, 0x8887, 0x4932,
+ 0x8888, 0x8888, 0x1CC0, 0x8889, 0x888A, 0x4934, 0x888B, 0x888B, 0x057F,
+ 0x888C, 0x888C, 0x4936, 0x888D, 0x888D, 0x0B9C, 0x888E, 0x8891, 0x4937,
+ 0x8892, 0x8892, 0x0E0E, 0x8893, 0x8895, 0x493B, 0x8896, 0x8896, 0x0FAF,
+ 0x8897, 0x889B, 0x493E, 0x889C, 0x889C, 0x0E91, 0x889D, 0x88A1, 0x4943,
+ 0x88A2, 0x88A2, 0x1BAC, 0x88A3, 0x88A3, 0x4948, 0x88A4, 0x88A4, 0x1307,
+ 0x88A5, 0x88AA, 0x4949, 0x88AB, 0x88AB, 0x0424, 0x88AC, 0x88AC, 0x494F,
+ 0x88AD, 0x88AD, 0x0F1B, 0x88AE, 0x88B0, 0x4950, 0x88B1, 0x88B1, 0x069F,
+ 0x88B2, 0x88B6, 0x4953, 0x88B7, 0x88B7, 0x1BAE, 0x88B8, 0x88BB, 0x4958,
+ 0x88BC, 0x88BC, 0x1BAF, 0x88BD, 0x88C0, 0x495C, 0x88C1, 0x88C1, 0x048A,
+ 0x88C2, 0x88C2, 0x0A1A, 0x88C3, 0x88C4, 0x4960, 0x88C5, 0x88C5, 0x120D,
+ 0x88C6, 0x88C6, 0x1BAD, 0x88C7, 0x88C8, 0x4962, 0x88C9, 0x88C9, 0x1BB0,
+ 0x88CA, 0x88CA, 0x25F1, 0x88CB, 0x88CD, 0x4964, 0x88CE, 0x88CE, 0x1BB2,
+ 0x88CF, 0x88CF, 0x200C, 0x88D0, 0x88D1, 0x4967, 0x88D2, 0x88D2, 0x130A,
+ 0x88D3, 0x88D3, 0x4969, 0x88D4, 0x88D4, 0x1068, 0x88D5, 0x88D5, 0x10E6,
+ 0x88D6, 0x88D7, 0x496A, 0x88D8, 0x88D8, 0x1CC1, 0x88D9, 0x88D9, 0x0C94,
+ 0x88DA, 0x88DB, 0x496C, 0x88DC, 0x88DC, 0x1E58, 0x88DD, 0x88DD, 0x22AC,
+ 0x88DE, 0x88DE, 0x496E, 0x88DF, 0x88DF, 0x1CC2, 0x88E0, 0x88E1, 0x496F,
+ 0x88E2, 0x88E2, 0x1BB1, 0x88E3, 0x88E3, 0x1BB3, 0x88E4, 0x88E4, 0x0970,
+ 0x88E5, 0x88E5, 0x1BB4, 0x88E6, 0x88E7, 0x4971, 0x88E8, 0x88E8, 0x1BB8,
+ 0x88E9, 0x88EF, 0x4973, 0x88F0, 0x88F0, 0x1BBA, 0x88F1, 0x88F1, 0x1BB5,
+ 0x88F2, 0x88F2, 0x497A, 0x88F3, 0x88F3, 0x0D0A, 0x88F4, 0x88F4, 0x0BA2,
+ 0x88F5, 0x88F7, 0x497B, 0x88F8, 0x88F8, 0x0A8A, 0x88F9, 0x88F9, 0x0755,
+ 0x88FA, 0x88FB, 0x497E, 0x88FC, 0x88FC, 0x1BB7, 0x88FD, 0x88FD, 0x26A7,
+ 0x88FE, 0x88FE, 0x1BB9, 0x88FF, 0x88FF, 0x4980, 0x8900, 0x8901, 0x4981,
+ 0x8902, 0x8902, 0x072C, 0x8903, 0x8906, 0x4983, 0x8907, 0x8907, 0x2676,
+ 0x8908, 0x8909, 0x4987, 0x890A, 0x890A, 0x1BBF, 0x890B, 0x890F, 0x4989,
+ 0x8910, 0x8910, 0x078D, 0x8911, 0x8911, 0x498E, 0x8912, 0x8912, 0x0408,
+ 0x8913, 0x8913, 0x1BBD, 0x8914, 0x8918, 0x498F, 0x8919, 0x8919, 0x1BBC,
+ 0x891A, 0x891A, 0x1BB6, 0x891B, 0x891B, 0x1BBE, 0x891C, 0x8920, 0x4994,
+ 0x8921, 0x8921, 0x1BBB, 0x8922, 0x8924, 0x4999, 0x8925, 0x8925, 0x0CC7,
+ 0x8926, 0x8929, 0x499C, 0x892A, 0x892A, 0x0E7B, 0x892B, 0x892B, 0x1BC1,
+ 0x892C, 0x892F, 0x49A0, 0x8930, 0x8930, 0x1739, 0x8931, 0x8931, 0x49A4,
+ 0x8932, 0x8932, 0x1FE1, 0x8933, 0x8933, 0x25BB, 0x8934, 0x8934, 0x1BC0,
+ 0x8935, 0x8935, 0x49A5, 0x8936, 0x8936, 0x1BC2, 0x8937, 0x8937, 0x49A6,
+ 0x8938, 0x8938, 0x25BE, 0x8939, 0x893A, 0x49A7, 0x893B, 0x893B, 0x22DD,
+ 0x893C, 0x8940, 0x49A9, 0x8941, 0x8941, 0x1BC3, 0x8942, 0x8943, 0x49AE,
+ 0x8944, 0x8944, 0x0F52, 0x8945, 0x8946, 0x49B0, 0x8947, 0x8947, 0x25BD,
+ 0x8948, 0x8955, 0x49B2, 0x8956, 0x8956, 0x1E2A, 0x8957, 0x895C, 0x49C0,
+ 0x895D, 0x895D, 0x25BC, 0x895E, 0x895E, 0x1CC3, 0x895F, 0x895F, 0x08C4,
+ 0x8960, 0x8960, 0x25BA, 0x8961, 0x8963, 0x49C6, 0x8964, 0x8964, 0x25BF,
+ 0x8965, 0x8965, 0x49C9, 0x8966, 0x8966, 0x1BC4, 0x8967, 0x8969, 0x49CA,
+ 0x896A, 0x896A, 0x2187, 0x896B, 0x896B, 0x49CD, 0x896C, 0x896C, 0x266B,
+ 0x896D, 0x896E, 0x49CE, 0x896F, 0x896F, 0x1E7F, 0x8970, 0x8971, 0x49D0,
+ 0x8972, 0x8972, 0x21AD, 0x8973, 0x897A, 0x49D2, 0x897B, 0x897B, 0x1BC5,
+ 0x897C, 0x897E, 0x49DA, 0x897F, 0x897F, 0x0F06, 0x8980, 0x8980, 0x49DD,
+ 0x8981, 0x8981, 0x1031, 0x8982, 0x8982, 0x49DE, 0x8983, 0x8983, 0x1BDF,
+ 0x8984, 0x8985, 0x49DF, 0x8986, 0x8986, 0x06AD, 0x8987, 0x898A, 0x49E1,
+ 0x898B, 0x898B, 0x1F96, 0x898C, 0x898E, 0x49E5, 0x898F, 0x898F, 0x1F32,
+ 0x8990, 0x8992, 0x49E8, 0x8993, 0x8993, 0x2084, 0x8994, 0x8995, 0x49EB,
+ 0x8996, 0x8996, 0x2136, 0x8997, 0x8997, 0x49ED, 0x8998, 0x8998, 0x24B8,
+ 0x8999, 0x89A0, 0x49EE, 0x89A1, 0x89A1, 0x24BA, 0x89A2, 0x89A5, 0x49F6,
+ 0x89A6, 0x89A6, 0x24BC, 0x89A7, 0x89A9, 0x49FA, 0x89AA, 0x89AA, 0x20E4,
+ 0x89AB, 0x89AB, 0x49FD, 0x89AC, 0x89AC, 0x24B9, 0x89AD, 0x89AE, 0x49FE,
+ 0x89AF, 0x89AF, 0x24BD, 0x89B0, 0x89B1, 0x4A00, 0x89B2, 0x89B2, 0x24BE,
+ 0x89B3, 0x89B6, 0x4A02, 0x89B7, 0x89B7, 0x24BF, 0x89B8, 0x89B9, 0x4A06,
+ 0x89BA, 0x89BA, 0x1FD2, 0x89BB, 0x89BC, 0x4A08, 0x89BD, 0x89BD, 0x1FFD,
+ 0x89BE, 0x89BE, 0x4A0A, 0x89BF, 0x89BF, 0x24BB, 0x89C0, 0x89C0, 0x1F2D,
+ 0x89C1, 0x89C1, 0x086E, 0x89C2, 0x89C2, 0x0734, 0x89C3, 0x89C3, 0x4A0B,
+ 0x89C4, 0x89C4, 0x073F, 0x89C5, 0x89C5, 0x0ADE, 0x89C6, 0x89C6, 0x0D6A,
+ 0x89C7, 0x89C7, 0x193A, 0x89C8, 0x89C8, 0x09AB, 0x89C9, 0x89C9, 0x0924,
+ 0x89CA, 0x89CC, 0x193B, 0x89CD, 0x89CD, 0x4A0C, 0x89CE, 0x89D1, 0x193E,
+ 0x89D2, 0x89D2, 0x0898, 0x89D3, 0x89D5, 0x4A0D, 0x89D6, 0x89D6, 0x1D57,
+ 0x89D7, 0x89D9, 0x4A10, 0x89DA, 0x89DA, 0x1D59, 0x89DB, 0x89DB, 0x4A13,
+ 0x89DC, 0x89DC, 0x1D5A, 0x89DD, 0x89DD, 0x4A14, 0x89DE, 0x89DE, 0x1D58,
+ 0x89DF, 0x89E2, 0x4A15, 0x89E3, 0x89E3, 0x08B3, 0x89E4, 0x89E4, 0x4A19,
+ 0x89E5, 0x89E5, 0x1D5B, 0x89E6, 0x89E6, 0x0528, 0x89E7, 0x89EA, 0x4A1A,
+ 0x89EB, 0x89EB, 0x1D5C, 0x89EC, 0x89EE, 0x4A1E, 0x89EF, 0x89EF, 0x1D5D,
+ 0x89F0, 0x89F2, 0x4A21, 0x89F3, 0x89F3, 0x19C0, 0x89F4, 0x89F4, 0x2609,
+ 0x89F5, 0x89F5, 0x4A24, 0x89F6, 0x89F6, 0x260A, 0x89F7, 0x89F7, 0x4A25,
+ 0x89F8, 0x89F8, 0x1E94, 0x89F9, 0x89FF, 0x4A26, 0x8A00, 0x8A00, 0x0FFD,
+ 0x8A01, 0x8A01, 0x22DF, 0x8A02, 0x8A02, 0x1ECB, 0x8A03, 0x8A03, 0x1F0D,
+ 0x8A04, 0x8A06, 0x4A2D, 0x8A07, 0x8A07, 0x12FE, 0x8A08, 0x8A08, 0x1F77,
+ 0x8A09, 0x8A09, 0x4A30, 0x8A0A, 0x8A0A, 0x21EB, 0x8A0B, 0x8A0B, 0x4A31,
+ 0x8A0C, 0x8A0C, 0x22E1, 0x8A0D, 0x8A0D, 0x4A32, 0x8A0E, 0x8A0E, 0x216F,
+ 0x8A0F, 0x8A0F, 0x4A33, 0x8A10, 0x8A10, 0x22E0, 0x8A11, 0x8A12, 0x4A34,
+ 0x8A13, 0x8A13, 0x21EA, 0x8A14, 0x8A14, 0x4A36, 0x8A15, 0x8A15, 0x22E2,
+ 0x8A16, 0x8A16, 0x20CB, 0x8A17, 0x8A17, 0x4A37, 0x8A18, 0x8A18, 0x1F78,
+ 0x8A19, 0x8A1A, 0x4A38, 0x8A1B, 0x8A1B, 0x1EE2, 0x8A1C, 0x8A1C, 0x4A3A,
+ 0x8A1D, 0x8A1D, 0x21F2, 0x8A1E, 0x8A1E, 0x4A3B, 0x8A1F, 0x8A1F, 0x2150,
+ 0x8A20, 0x8A22, 0x4A3C, 0x8A23, 0x8A23, 0x1FD3, 0x8A24, 0x8A24, 0x4A3F,
+ 0x8A25, 0x8A25, 0x22E5, 0x8A26, 0x8A29, 0x4A40, 0x8A2A, 0x8A2A, 0x1EF2,
+ 0x8A2B, 0x8A2C, 0x4A44, 0x8A2D, 0x8A2D, 0x211F, 0x8A2E, 0x8A30, 0x4A46,
+ 0x8A31, 0x8A31, 0x21DD, 0x8A32, 0x8A33, 0x4A49, 0x8A34, 0x8A34, 0x2154,
+ 0x8A35, 0x8A35, 0x4A4B, 0x8A36, 0x8A36, 0x22E7, 0x8A37, 0x8A39, 0x4A4C,
+ 0x8A3A, 0x8A3A, 0x2282, 0x8A3B, 0x8A3D, 0x4A4F, 0x8A3E, 0x8A3E, 0x1D5E,
+ 0x8A3F, 0x8A40, 0x4A52, 0x8A41, 0x8A41, 0x22E6, 0x8A42, 0x8A45, 0x4A54,
+ 0x8A46, 0x8A46, 0x22E8, 0x8A47, 0x8A47, 0x4A58, 0x8A48, 0x8A48, 0x1A84,
+ 0x8A49, 0x8A4D, 0x4A59, 0x8A4E, 0x8A4E, 0x22E4, 0x8A4F, 0x8A4F, 0x4A5E,
+ 0x8A50, 0x8A50, 0x226A, 0x8A51, 0x8A51, 0x4A5F, 0x8A52, 0x8A52, 0x22EB,
+ 0x8A53, 0x8A53, 0x4A60, 0x8A54, 0x8A54, 0x22E9, 0x8A55, 0x8A55, 0x20BD,
+ 0x8A56, 0x8A57, 0x4A61, 0x8A58, 0x8A58, 0x22EA, 0x8A59, 0x8A5A, 0x4A63,
+ 0x8A5B, 0x8A5B, 0x22BD, 0x8A5C, 0x8A5D, 0x4A65, 0x8A5E, 0x8A5E, 0x1E9E,
+ 0x8A5F, 0x8A60, 0x4A67, 0x8A61, 0x8A61, 0x22F6, 0x8A62, 0x8A62, 0x21E7,
+ 0x8A63, 0x8A63, 0x2216, 0x8A64, 0x8A65, 0x4A69, 0x8A66, 0x8A66, 0x2137,
+ 0x8A67, 0x8A68, 0x4A6B, 0x8A69, 0x8A69, 0x212C, 0x8A6A, 0x8A6A, 0x4A6D,
+ 0x8A6B, 0x8A6B, 0x1E68, 0x8A6C, 0x8A6C, 0x22F2, 0x8A6D, 0x8A6D, 0x1F37,
+ 0x8A6E, 0x8A6E, 0x22F3, 0x8A6F, 0x8A6F, 0x4A6E, 0x8A70, 0x8A70, 0x22EF,
+ 0x8A71, 0x8A71, 0x1F50, 0x8A72, 0x8A72, 0x1F10, 0x8A73, 0x8A73, 0x21C8,
+ 0x8A74, 0x8A74, 0x4A6F, 0x8A75, 0x8A75, 0x22F1, 0x8A76, 0x8A78, 0x4A70,
+ 0x8A79, 0x8A79, 0x1153, 0x8A7A, 0x8A7B, 0x4A73, 0x8A7C, 0x8A7C, 0x22F0,
+ 0x8A7D, 0x8A7E, 0x4A75, 0x8A7F, 0x8A7F, 0x22EE, 0x8A80, 0x8A83, 0x4A77,
+ 0x8A84, 0x8A84, 0x22ED, 0x8A85, 0x8A85, 0x229E, 0x8A86, 0x8A86, 0x22EC,
+ 0x8A87, 0x8A87, 0x1FE2, 0x8A88, 0x8A88, 0x4A7B, 0x8A89, 0x8A89, 0x10E3,
+ 0x8A8A, 0x8A8A, 0x0E2F, 0x8A8B, 0x8A8C, 0x4A7C, 0x8A8D, 0x8A8D, 0x20FE,
+ 0x8A8E, 0x8A90, 0x4A7E, 0x8A91, 0x8A92, 0x22F9, 0x8A93, 0x8A93, 0x0D5B,
+ 0x8A94, 0x8A94, 0x4A81, 0x8A95, 0x8A95, 0x1EAF, 0x8A96, 0x8A97, 0x4A82,
+ 0x8A98, 0x8A98, 0x2236, 0x8A99, 0x8A99, 0x4A84, 0x8A9A, 0x8A9A, 0x22F7,
+ 0x8A9B, 0x8A9D, 0x4A85, 0x8A9E, 0x8A9E, 0x223D, 0x8A9F, 0x8A9F, 0x4A88,
+ 0x8AA0, 0x8AA0, 0x1E82, 0x8AA1, 0x8AA1, 0x1FB6, 0x8AA2, 0x8AA2, 0x4A89,
+ 0x8AA3, 0x8AA3, 0x21A4, 0x8AA4, 0x8AA4, 0x21AA, 0x8AA5, 0x8AA5, 0x22F8,
+ 0x8AA6, 0x8AA6, 0x2151, 0x8AA7, 0x8AA7, 0x4A8A, 0x8AA8, 0x8AA8, 0x1F60,
+ 0x8AA9, 0x8AAB, 0x4A8B, 0x8AAC, 0x8AAC, 0x2147, 0x8AAD, 0x8AAF, 0x4A8E,
+ 0x8AB0, 0x8AB0, 0x2145, 0x8AB1, 0x8AB1, 0x4A91, 0x8AB2, 0x8AB2, 0x1FDC,
+ 0x8AB3, 0x8AB5, 0x4A92, 0x8AB6, 0x8AB6, 0x2301, 0x8AB7, 0x8AB8, 0x4A95,
+ 0x8AB9, 0x8AB9, 0x1EF5, 0x8ABA, 0x8ABB, 0x4A97, 0x8ABC, 0x8ABC, 0x2218,
+ 0x8ABD, 0x8ABE, 0x4A99, 0x8ABF, 0x8ABF, 0x1EC6, 0x8AC0, 0x8AC1, 0x4A9B,
+ 0x8AC2, 0x8AC2, 0x2300, 0x8AC3, 0x8AC3, 0x4A9D, 0x8AC4, 0x8AC4, 0x22B4,
+ 0x8AC5, 0x8AC6, 0x4A9E, 0x8AC7, 0x8AC7, 0x2169, 0x8AC8, 0x8AC8, 0x4AA0,
+ 0x8AC9, 0x8AC9, 0x22FD, 0x8ACA, 0x8ACA, 0x4AA1, 0x8ACB, 0x8ACB, 0x20EA,
+ 0x8ACC, 0x8ACC, 0x4AA2, 0x8ACD, 0x8ACD, 0x22F4, 0x8ACE, 0x8ACE, 0x4AA3,
+ 0x8ACF, 0x8ACF, 0x22FB, 0x8AD0, 0x8AD0, 0x4AA4, 0x8AD1, 0x8AD1, 0x22FC,
+ 0x8AD2, 0x8AD2, 0x2027, 0x8AD3, 0x8AD5, 0x4AA5, 0x8AD6, 0x8AD6, 0x2060,
+ 0x8AD7, 0x8AD7, 0x22FF, 0x8AD8, 0x8ADA, 0x4AA8, 0x8ADB, 0x8ADB, 0x22FE,
+ 0x8ADC, 0x8ADC, 0x1EC7, 0x8ADD, 0x8ADD, 0x4AAB, 0x8ADE, 0x8ADE, 0x230C,
+ 0x8ADF, 0x8AE1, 0x4AAC, 0x8AE2, 0x8AE2, 0x22F5, 0x8AE3, 0x8AE3, 0x4AAF,
+ 0x8AE4, 0x8AE4, 0x2306, 0x8AE5, 0x8AE5, 0x4AB0, 0x8AE6, 0x8AE6, 0x230A,
+ 0x8AE7, 0x8AE7, 0x21D3, 0x8AE8, 0x8AEA, 0x4AB1, 0x8AEB, 0x8AEB, 0x2303,
+ 0x8AEC, 0x8AEC, 0x4AB4, 0x8AED, 0x8AED, 0x2307, 0x8AEE, 0x8AEE, 0x230B,
+ 0x8AEF, 0x8AF0, 0x4AB5, 0x8AF1, 0x8AF1, 0x1F5F, 0x8AF2, 0x8AF2, 0x4AB7,
+ 0x8AF3, 0x8AF3, 0x2309, 0x8AF4, 0x8AF5, 0x4AB8, 0x8AF6, 0x8AF6, 0x2302,
+ 0x8AF7, 0x8AF7, 0x1F04, 0x8AF8, 0x8AF8, 0x229D, 0x8AF9, 0x8AF9, 0x4ABA,
+ 0x8AFA, 0x8AFA, 0x21FB, 0x8AFB, 0x8AFB, 0x4ABB, 0x8AFC, 0x8AFC, 0x2308,
+ 0x8AFD, 0x8AFD, 0x4ABC, 0x8AFE, 0x8AFE, 0x20AC, 0x8AFF, 0x8AFF, 0x4ABD,
+ 0x8B00, 0x8B00, 0x208E, 0x8B01, 0x8B01, 0x2305, 0x8B02, 0x8B02, 0x2197,
+ 0x8B03, 0x8B03, 0x4ABE, 0x8B04, 0x8B04, 0x2171, 0x8B05, 0x8B05, 0x2298,
+ 0x8B06, 0x8B06, 0x4ABF, 0x8B07, 0x8B07, 0x173C, 0x8B08, 0x8B09, 0x4AC0,
+ 0x8B0A, 0x8B0A, 0x1F57, 0x8B0B, 0x8B0D, 0x4AC2, 0x8B0E, 0x8B0E, 0x2082,
+ 0x8B0F, 0x8B0F, 0x4AC5, 0x8B10, 0x8B10, 0x2311, 0x8B11, 0x8B13, 0x4AC6,
+ 0x8B14, 0x8B14, 0x2304, 0x8B15, 0x8B15, 0x4AC9, 0x8B16, 0x8B16, 0x230F,
+ 0x8B17, 0x8B17, 0x1E35, 0x8B18, 0x8B18, 0x4ACA, 0x8B19, 0x8B19, 0x20D1,
+ 0x8B1A, 0x8B1A, 0x2310, 0x8B1B, 0x8B1B, 0x1FA3, 0x8B1C, 0x8B1C, 0x4ACB,
+ 0x8B1D, 0x8B1D, 0x21D6, 0x8B1E, 0x8B20, 0x4ACC, 0x8B21, 0x8B21, 0x2206,
+ 0x8B22, 0x8B25, 0x4ACF, 0x8B26, 0x8B26, 0x1D5F, 0x8B27, 0x8B27, 0x4AD3,
+ 0x8B28, 0x8B28, 0x230D, 0x8B29, 0x8B2A, 0x4AD4, 0x8B2B, 0x8B2B, 0x2312,
+ 0x8B2C, 0x8B2C, 0x208D, 0x8B2D, 0x8B2D, 0x2313, 0x8B2E, 0x8B32, 0x4AD6,
+ 0x8B33, 0x8B33, 0x22E3, 0x8B34, 0x8B38, 0x4ADB, 0x8B39, 0x8B39, 0x1FBA,
+ 0x8B3A, 0x8B3D, 0x4AE0, 0x8B3E, 0x8B3E, 0x2078, 0x8B3F, 0x8B48, 0x4AE4,
+ 0x8B49, 0x8B49, 0x2288, 0x8B4A, 0x8B4D, 0x4AEE, 0x8B4E, 0x8B4E, 0x2316,
+ 0x8B4F, 0x8B4F, 0x1F6B, 0x8B50, 0x8B55, 0x4AF2, 0x8B56, 0x8B56, 0x2314,
+ 0x8B57, 0x8B57, 0x4AF8, 0x8B58, 0x8B58, 0x2130, 0x8B59, 0x8B59, 0x2315,
+ 0x8B5A, 0x8B5A, 0x2168, 0x8B5B, 0x8B5B, 0x4AF9, 0x8B5C, 0x8B5C, 0x20C4,
+ 0x8B5D, 0x8B65, 0x4AFA, 0x8B66, 0x8B66, 0x08DE, 0x8B67, 0x8B6A, 0x4B03,
+ 0x8B6B, 0x8B6B, 0x2318, 0x8B6C, 0x8B6C, 0x0BC8, 0x8B6D, 0x8B6E, 0x4B07,
+ 0x8B6F, 0x8B6F, 0x2219, 0x8B70, 0x8B70, 0x2217, 0x8B71, 0x8B73, 0x4B09,
+ 0x8B74, 0x8B74, 0x20D5, 0x8B75, 0x8B76, 0x4B0C, 0x8B77, 0x8B77, 0x1F4A,
+ 0x8B78, 0x8B7C, 0x4B0E, 0x8B7D, 0x8B7D, 0x2240, 0x8B7E, 0x8B7F, 0x4B13,
+ 0x8B80, 0x8B80, 0x1ED3, 0x8B81, 0x8B89, 0x4B15, 0x8B8A, 0x8B8A, 0x1E49,
+ 0x8B8B, 0x8B8D, 0x4B1E, 0x8B8E, 0x8B8E, 0x261B, 0x8B8F, 0x8B91, 0x4B21,
+ 0x8B92, 0x8B92, 0x1E6D, 0x8B93, 0x8B93, 0x20F8, 0x8B94, 0x8B94, 0x4B24,
+ 0x8B95, 0x8B95, 0x1FFB, 0x8B96, 0x8B96, 0x2319, 0x8B97, 0x8B9B, 0x4B25,
+ 0x8B9C, 0x8B9C, 0x230E, 0x8B9D, 0x8B9D, 0x4B2A, 0x8B9E, 0x8B9E, 0x2317,
+ 0x8B9F, 0x8B9F, 0x4B2B, 0x8BA0, 0x8BA0, 0x1317, 0x8BA1, 0x8BA1, 0x0839,
+ 0x8BA2, 0x8BA2, 0x05E8, 0x8BA3, 0x8BA3, 0x06B7, 0x8BA4, 0x8BA4, 0x0CAA,
+ 0x8BA5, 0x8BA5, 0x0818, 0x8BA6, 0x8BA7, 0x1318, 0x8BA8, 0x8BA8, 0x0E29,
+ 0x8BA9, 0x8BA9, 0x0C9E, 0x8BAA, 0x8BAA, 0x131A, 0x8BAB, 0x8BAB, 0x0C1C,
+ 0x8BAC, 0x8BAC, 0x4B2C, 0x8BAD, 0x8BAD, 0x0FDE, 0x8BAE, 0x8BAE, 0x1070,
+ 0x8BAF, 0x8BAF, 0x0FDF, 0x8BB0, 0x8BB0, 0x083A, 0x8BB1, 0x8BB1, 0x4B2D,
+ 0x8BB2, 0x8BB2, 0x0883, 0x8BB3, 0x8BB3, 0x07F9, 0x8BB4, 0x8BB5, 0x131B,
+ 0x8BB6, 0x8BB6, 0x0FF1, 0x8BB7, 0x8BB7, 0x131D, 0x8BB8, 0x8BB8, 0x0FB8,
+ 0x8BB9, 0x8BB9, 0x062E, 0x8BBA, 0x8BBA, 0x0A82, 0x8BBB, 0x8BBB, 0x4B2E,
+ 0x8BBC, 0x8BBC, 0x0DC4, 0x8BBD, 0x8BBD, 0x068A, 0x8BBE, 0x8BBE, 0x0D21,
+ 0x8BBF, 0x8BBF, 0x0660, 0x8BC0, 0x8BC0, 0x0926, 0x8BC1, 0x8BC1, 0x11A3,
+ 0x8BC2, 0x8BC3, 0x131E, 0x8BC4, 0x8BC4, 0x0BDF, 0x8BC5, 0x8BC5, 0x1244,
+ 0x8BC6, 0x8BC6, 0x0D4D, 0x8BC7, 0x8BC7, 0x4B2F, 0x8BC8, 0x8BC8, 0x114A,
+ 0x8BC9, 0x8BC9, 0x0DD4, 0x8BCA, 0x8BCA, 0x1190, 0x8BCB, 0x8BCB, 0x1320,
+ 0x8BCC, 0x8BCC, 0x11DE, 0x8BCD, 0x8BCD, 0x054D, 0x8BCE, 0x8BCE, 0x1322,
+ 0x8BCF, 0x8BCF, 0x1321, 0x8BD0, 0x8BD0, 0x4B30, 0x8BD1, 0x8BD1, 0x1072,
+ 0x8BD2, 0x8BD4, 0x1323, 0x8BD5, 0x8BD5, 0x0D6B, 0x8BD6, 0x8BD6, 0x1326,
+ 0x8BD7, 0x8BD7, 0x0D42, 0x8BD8, 0x8BD9, 0x1327, 0x8BDA, 0x8BDA, 0x04F4,
+ 0x8BDB, 0x8BDB, 0x11EE, 0x8BDC, 0x8BDC, 0x1329, 0x8BDD, 0x8BDD, 0x07C5,
+ 0x8BDE, 0x8BDE, 0x058F, 0x8BDF, 0x8BE0, 0x132A, 0x8BE1, 0x8BE1, 0x0747,
+ 0x8BE2, 0x8BE2, 0x0FD8, 0x8BE3, 0x8BE3, 0x106F, 0x8BE4, 0x8BE4, 0x132C,
+ 0x8BE5, 0x8BE5, 0x06BE, 0x8BE6, 0x8BE6, 0x0F57, 0x8BE7, 0x8BE7, 0x04B6,
+ 0x8BE8, 0x8BE9, 0x132D, 0x8BEA, 0x8BEA, 0x4B31, 0x8BEB, 0x8BEB, 0x08BC,
+ 0x8BEC, 0x8BEC, 0x0EEB, 0x8BED, 0x8BED, 0x10D4, 0x8BEE, 0x8BEE, 0x132F,
+ 0x8BEF, 0x8BEF, 0x0F02, 0x8BF0, 0x8BF0, 0x1330, 0x8BF1, 0x8BF1, 0x10BA,
+ 0x8BF2, 0x8BF2, 0x07FA, 0x8BF3, 0x8BF3, 0x1331, 0x8BF4, 0x8BF4, 0x0DAA,
+ 0x8BF5, 0x8BF5, 0x0DC5, 0x8BF6, 0x8BF6, 0x1332, 0x8BF7, 0x8BF7, 0x0C68,
+ 0x8BF8, 0x8BF8, 0x11ED, 0x8BF9, 0x8BF9, 0x1333, 0x8BFA, 0x8BFA, 0x0B76,
+ 0x8BFB, 0x8BFB, 0x0600, 0x8BFC, 0x8BFC, 0x1334, 0x8BFD, 0x8BFD, 0x0669,
+ 0x8BFE, 0x8BFE, 0x095B, 0x8BFF, 0x8BFF, 0x1335, 0x8C00, 0x8C00, 0x1336,
+ 0x8C01, 0x8C01, 0x0DA2, 0x8C02, 0x8C02, 0x1337, 0x8C03, 0x8C03, 0x05D8,
+ 0x8C04, 0x8C04, 0x1338, 0x8C05, 0x8C05, 0x0A0B, 0x8C06, 0x8C06, 0x1218,
+ 0x8C07, 0x8C07, 0x1339, 0x8C08, 0x8C08, 0x0E0B, 0x8C09, 0x8C09, 0x4B32,
+ 0x8C0A, 0x8C0A, 0x1071, 0x8C0B, 0x8C0B, 0x0B14, 0x8C0C, 0x8C0C, 0x133A,
+ 0x8C0D, 0x8C0D, 0x05DE, 0x8C0E, 0x8C0E, 0x07E6, 0x8C0F, 0x8C0F, 0x133B,
+ 0x8C10, 0x8C10, 0x0F7E, 0x8C11, 0x8C12, 0x133C, 0x8C13, 0x8C13, 0x0ECC,
+ 0x8C14, 0x8C16, 0x133E, 0x8C17, 0x8C17, 0x04BE, 0x8C18, 0x8C18, 0x1343,
+ 0x8C19, 0x8C19, 0x1341, 0x8C1A, 0x8C1A, 0x1011, 0x8C1B, 0x8C1B, 0x1342,
+ 0x8C1C, 0x8C1C, 0x0ADA, 0x8C1D, 0x8C1D, 0x1344, 0x8C1E, 0x8C1E, 0x4B33,
+ 0x8C1F, 0x8C21, 0x1345, 0x8C22, 0x8C22, 0x0F86, 0x8C23, 0x8C23, 0x102C,
+ 0x8C24, 0x8C24, 0x0404, 0x8C25, 0x8C25, 0x1348, 0x8C26, 0x8C26, 0x0C28,
+ 0x8C27, 0x8C27, 0x1349, 0x8C28, 0x8C28, 0x08C8, 0x8C29, 0x8C29, 0x0AA6,
+ 0x8C2A, 0x8C2B, 0x134A, 0x8C2C, 0x8C2C, 0x0B02, 0x8C2D, 0x8C2D, 0x0E0A,
+ 0x8C2E, 0x8C2F, 0x134C, 0x8C30, 0x8C30, 0x09A9, 0x8C31, 0x8C31, 0x0BF6,
+ 0x8C32, 0x8C33, 0x134E, 0x8C34, 0x8C34, 0x0C31, 0x8C35, 0x8C36, 0x1350,
+ 0x8C37, 0x8C37, 0x0721, 0x8C38, 0x8C40, 0x4B34, 0x8C41, 0x8C41, 0x0802,
+ 0x8C42, 0x8C45, 0x4B3D, 0x8C46, 0x8C46, 0x05F8, 0x8C47, 0x8C47, 0x1CF6,
+ 0x8C48, 0x8C48, 0x20C8, 0x8C49, 0x8C49, 0x1CF7, 0x8C4A, 0x8C4B, 0x4B41,
+ 0x8C4C, 0x8C4C, 0x0E94, 0x8C4D, 0x8C4F, 0x4B43, 0x8C50, 0x8C50, 0x1EFD,
+ 0x8C51, 0x8C54, 0x4B46, 0x8C55, 0x8C55, 0x1D15, 0x8C56, 0x8C59, 0x4B4A,
+ 0x8C5A, 0x8C5A, 0x1990, 0x8C5B, 0x8C60, 0x4B4E, 0x8C61, 0x8C61, 0x0F60,
+ 0x8C62, 0x8C62, 0x07D4, 0x8C63, 0x8C69, 0x4B54, 0x8C6A, 0x8C6A, 0x0777,
+ 0x8C6B, 0x8C6B, 0x10E8, 0x8C6C, 0x8C72, 0x4B5B, 0x8C73, 0x8C73, 0x15DD,
+ 0x8C74, 0x8C77, 0x4B62, 0x8C78, 0x8C78, 0x1D50, 0x8C79, 0x8C79, 0x0413,
+ 0x8C7A, 0x8C7A, 0x04B9, 0x8C7B, 0x8C81, 0x4B66, 0x8C82, 0x8C82, 0x1D51,
+ 0x8C83, 0x8C84, 0x4B6D, 0x8C85, 0x8C85, 0x1D53, 0x8C86, 0x8C88, 0x4B6F,
+ 0x8C89, 0x8C89, 0x0788, 0x8C8A, 0x8C8A, 0x1D52, 0x8C8B, 0x8C8B, 0x4B72,
+ 0x8C8C, 0x8C8C, 0x0AB7, 0x8C8D, 0x8C93, 0x4B73, 0x8C94, 0x8C94, 0x1D55,
+ 0x8C95, 0x8C97, 0x4B7A, 0x8C98, 0x8C98, 0x1D54, 0x8C99, 0x8C9C, 0x4B7D,
+ 0x8C9D, 0x8C9D, 0x1E3B, 0x8C9E, 0x8C9E, 0x227F, 0x8C9F, 0x8C9F, 0x4B81,
+ 0x8CA0, 0x8CA0, 0x1F0C, 0x8CA1, 0x8CA1, 0x1E59, 0x8CA2, 0x8CA2, 0x1F24,
+ 0x8CA3, 0x8CA6, 0x4B82, 0x8CA7, 0x8CA7, 0x20BA, 0x8CA8, 0x8CA8, 0x1F65,
+ 0x8CA9, 0x8CA9, 0x1EF0, 0x8CAA, 0x8CAA, 0x2164, 0x8CAB, 0x8CAB, 0x1F30,
+ 0x8CAC, 0x8CAC, 0x2261, 0x8CAD, 0x8CAE, 0x4B86, 0x8CAF, 0x8CAF, 0x22A2,
+ 0x8CB0, 0x8CB0, 0x24AB, 0x8CB1, 0x8CB1, 0x4B88, 0x8CB2, 0x8CB2, 0x24AF,
+ 0x8CB3, 0x8CB3, 0x1EE8, 0x8CB4, 0x8CB4, 0x1F39, 0x8CB5, 0x8CB5, 0x4B89,
+ 0x8CB6, 0x8CB6, 0x1E48, 0x8CB7, 0x8CB7, 0x2070, 0x8CB8, 0x8CB8, 0x1EA8,
+ 0x8CB9, 0x8CB9, 0x4B8A, 0x8CBA, 0x8CBA, 0x24AC, 0x8CBB, 0x8CBB, 0x1EF7,
+ 0x8CBC, 0x8CBC, 0x2176, 0x8CBD, 0x8CBD, 0x24AD, 0x8CBE, 0x8CBE, 0x4B8B,
+ 0x8CBF, 0x8CBF, 0x207B, 0x8CC0, 0x8CC0, 0x1F45, 0x8CC1, 0x8CC1, 0x24AA,
+ 0x8CC2, 0x8CC2, 0x204B, 0x8CC3, 0x8CC3, 0x202F, 0x8CC4, 0x8CC4, 0x1F5A,
+ 0x8CC5, 0x8CC5, 0x24B0, 0x8CC6, 0x8CC6, 0x4B8C, 0x8CC7, 0x8CC7, 0x22B7,
+ 0x8CC8, 0x8CC8, 0x1F7F, 0x8CC9, 0x8CC9, 0x4B8D, 0x8CCA, 0x8CCA, 0x2265,
+ 0x8CCB, 0x8CD0, 0x4B8E, 0x8CD1, 0x8CD1, 0x24B2, 0x8CD2, 0x8CD2, 0x211B,
+ 0x8CD3, 0x8CD3, 0x1E51, 0x8CD4, 0x8CD4, 0x4B94, 0x8CD5, 0x8CD5, 0x24B4,
+ 0x8CD6, 0x8CD9, 0x4B95, 0x8CDA, 0x8CDA, 0x24B3, 0x8CDB, 0x8CDB, 0x4B99,
+ 0x8CDC, 0x8CDC, 0x1E9F, 0x8CDD, 0x8CDD, 0x4B9A, 0x8CDE, 0x8CDE, 0x2118,
+ 0x8CDF, 0x8CDF, 0x4B9B, 0x8CE0, 0x8CE0, 0x20B4, 0x8CE1, 0x8CE1, 0x23AF,
+ 0x8CE2, 0x8CE2, 0x21BB, 0x8CE3, 0x8CE3, 0x2072, 0x8CE4, 0x8CE4, 0x1F95,
+ 0x8CE5, 0x8CE5, 0x4B9C, 0x8CE6, 0x8CE6, 0x1F0A, 0x8CE7, 0x8CE7, 0x24B6,
+ 0x8CE8, 0x8CE9, 0x4B9D, 0x8CEA, 0x8CEA, 0x2291, 0x8CEB, 0x8CEB, 0x24B5,
+ 0x8CEC, 0x8CEC, 0x2278, 0x8CED, 0x8CED, 0x1ED4, 0x8CEE, 0x8CF3, 0x4B9F,
+ 0x8CF4, 0x8CF4, 0x1FF3, 0x8CF5, 0x8CF9, 0x4BA5, 0x8CFA, 0x8CFA, 0x22A9,
+ 0x8CFB, 0x8CFB, 0x24B7, 0x8CFC, 0x8CFC, 0x1F28, 0x8CFD, 0x8CFD, 0x2109,
+ 0x8CFE, 0x8CFE, 0x22C7, 0x8CFF, 0x8CFF, 0x4BAA, 0x8D00, 0x8D03, 0x4BAB,
+ 0x8D04, 0x8D04, 0x24AE, 0x8D05, 0x8D05, 0x22B1, 0x8D06, 0x8D07, 0x4BAF,
+ 0x8D08, 0x8D08, 0x2266, 0x8D09, 0x8D09, 0x4BB1, 0x8D0A, 0x8D0A, 0x225B,
+ 0x8D0B, 0x8D0B, 0x22C4, 0x8D0C, 0x8D0C, 0x4BB2, 0x8D0D, 0x8D0D, 0x2115,
+ 0x8D0E, 0x8D0E, 0x4BB3, 0x8D0F, 0x8D0F, 0x222A, 0x8D10, 0x8D10, 0x24B1,
+ 0x8D11, 0x8D15, 0x4BB4, 0x8D16, 0x8D16, 0x213D, 0x8D17, 0x8D1A, 0x4BB9,
+ 0x8D1B, 0x8D1B, 0x1F15, 0x8D1C, 0x8D1C, 0x225C, 0x8D1D, 0x8D1D, 0x041D,
+ 0x8D1E, 0x8D1E, 0x118B, 0x8D1F, 0x8D1F, 0x06B5, 0x8D20, 0x8D20, 0x4BBD,
+ 0x8D21, 0x8D21, 0x070A, 0x8D22, 0x8D22, 0x048D, 0x8D23, 0x8D23, 0x1133,
+ 0x8D24, 0x8D24, 0x0F3A, 0x8D25, 0x8D25, 0x03E7, 0x8D26, 0x8D26, 0x116C,
+ 0x8D27, 0x8D27, 0x080A, 0x8D28, 0x8D28, 0x11C9, 0x8D29, 0x8D29, 0x0654,
+ 0x8D2A, 0x8D2A, 0x0E03, 0x8D2B, 0x8D2B, 0x0BD5, 0x8D2C, 0x8D2C, 0x044A,
+ 0x8D2D, 0x8D2D, 0x0713, 0x8D2E, 0x8D2E, 0x11FB, 0x8D2F, 0x8D2F, 0x073A,
+ 0x8D30, 0x8D30, 0x063E, 0x8D31, 0x8D31, 0x086D, 0x8D32, 0x8D33, 0x192C,
+ 0x8D34, 0x8D34, 0x0E4C, 0x8D35, 0x8D35, 0x074C, 0x8D36, 0x8D36, 0x192E,
+ 0x8D37, 0x8D37, 0x057E, 0x8D38, 0x8D38, 0x0AB8, 0x8D39, 0x8D39, 0x066E,
+ 0x8D3A, 0x8D3A, 0x078F, 0x8D3B, 0x8D3B, 0x192F, 0x8D3C, 0x8D3C, 0x1137,
+ 0x8D3D, 0x8D3D, 0x1930, 0x8D3E, 0x8D3E, 0x0849, 0x8D3F, 0x8D3F, 0x07F4,
+ 0x8D40, 0x8D40, 0x1931, 0x8D41, 0x8D41, 0x0A27, 0x8D42, 0x8D42, 0x0A5F,
+ 0x8D43, 0x8D43, 0x1122, 0x8D44, 0x8D44, 0x1227, 0x8D45, 0x8D46, 0x1932,
+ 0x8D47, 0x8D47, 0x1936, 0x8D48, 0x8D49, 0x1934, 0x8D4A, 0x8D4A, 0x0D17,
+ 0x8D4B, 0x8D4B, 0x06AE, 0x8D4C, 0x8D4C, 0x0603, 0x8D4D, 0x8D4D, 0x1937,
+ 0x8D4E, 0x8D4E, 0x0D81, 0x8D4F, 0x8D4F, 0x0D06, 0x8D50, 0x8D50, 0x0550,
+ 0x8D51, 0x8D52, 0x4BBE, 0x8D53, 0x8D53, 0x163B, 0x8D54, 0x8D54, 0x0BA3,
+ 0x8D55, 0x8D55, 0x1938, 0x8D56, 0x8D56, 0x09A0, 0x8D57, 0x8D57, 0x4BC0,
+ 0x8D58, 0x8D58, 0x1215, 0x8D59, 0x8D59, 0x1939, 0x8D5A, 0x8D5A, 0x1209,
+ 0x8D5B, 0x8D5B, 0x0CD7, 0x8D5C, 0x8D5C, 0x1289, 0x8D5D, 0x8D5D, 0x1283,
+ 0x8D5E, 0x8D5E, 0x1121, 0x8D5F, 0x8D5F, 0x4BC1, 0x8D60, 0x8D60, 0x113C,
+ 0x8D61, 0x8D61, 0x0CFD, 0x8D62, 0x8D62, 0x1093, 0x8D63, 0x8D63, 0x06CE,
+ 0x8D64, 0x8D64, 0x0505, 0x8D65, 0x8D65, 0x4BC2, 0x8D66, 0x8D66, 0x0D1B,
+ 0x8D67, 0x8D67, 0x1CF4, 0x8D68, 0x8D6A, 0x4BC3, 0x8D6B, 0x8D6B, 0x078C,
+ 0x8D6C, 0x8D6C, 0x4BC6, 0x8D6D, 0x8D6D, 0x1CF5, 0x8D6E, 0x8D6F, 0x4BC7,
+ 0x8D70, 0x8D70, 0x123C, 0x8D71, 0x8D72, 0x4BC9, 0x8D73, 0x8D73, 0x1CEF,
+ 0x8D74, 0x8D74, 0x06AB, 0x8D75, 0x8D75, 0x1175, 0x8D76, 0x8D76, 0x06CA,
+ 0x8D77, 0x8D77, 0x0C0F, 0x8D78, 0x8D80, 0x4BCB, 0x8D81, 0x8D81, 0x04E8,
+ 0x8D82, 0x8D83, 0x4BD4, 0x8D84, 0x8D84, 0x1CF0, 0x8D85, 0x8D85, 0x04D1,
+ 0x8D86, 0x8D89, 0x4BD6, 0x8D8A, 0x8D8A, 0x1100, 0x8D8B, 0x8D8B, 0x0C74,
+ 0x8D8C, 0x8D90, 0x4BDA, 0x8D91, 0x8D91, 0x1CF2, 0x8D92, 0x8D93, 0x4BDF,
+ 0x8D94, 0x8D94, 0x1CF1, 0x8D95, 0x8D95, 0x1F14, 0x8D96, 0x8D98, 0x4BE1,
+ 0x8D99, 0x8D99, 0x227A, 0x8D9A, 0x8D9E, 0x4BE4, 0x8D9F, 0x8D9F, 0x0E1E,
+ 0x8DA0, 0x8DA2, 0x4BE9, 0x8DA3, 0x8DA3, 0x0C7F, 0x8DA4, 0x8DA7, 0x4BEC,
+ 0x8DA8, 0x8DA8, 0x20EE, 0x8DA9, 0x8DB0, 0x4BF0, 0x8DB1, 0x8DB1, 0x1CF3,
+ 0x8DB2, 0x8DB2, 0x25F8, 0x8DB3, 0x8DB3, 0x1240, 0x8DB4, 0x8DB4, 0x0B80,
+ 0x8DB5, 0x8DB5, 0x1D1C, 0x8DB6, 0x8DB7, 0x4BF8, 0x8DB8, 0x8DB8, 0x1D17,
+ 0x8DB9, 0x8DB9, 0x4BFA, 0x8DBA, 0x8DBA, 0x1D1F, 0x8DBB, 0x8DBB, 0x4BFB,
+ 0x8DBC, 0x8DBC, 0x1D1E, 0x8DBD, 0x8DBD, 0x4BFC, 0x8DBE, 0x8DBE, 0x11B9,
+ 0x8DBF, 0x8DBF, 0x1D1D, 0x8DC0, 0x8DC2, 0x4BFD, 0x8DC3, 0x8DC3, 0x1101,
+ 0x8DC4, 0x8DC4, 0x1D20, 0x8DC5, 0x8DC5, 0x4C00, 0x8DC6, 0x8DC6, 0x1D28,
+ 0x8DC7, 0x8DCA, 0x4C01, 0x8DCB, 0x8DCB, 0x03DA, 0x8DCC, 0x8DCC, 0x05D9,
+ 0x8DCD, 0x8DCD, 0x4C05, 0x8DCE, 0x8DCF, 0x1D25, 0x8DD0, 0x8DD0, 0x4C06,
+ 0x8DD1, 0x8DD1, 0x0B9D, 0x8DD2, 0x8DD5, 0x4C07, 0x8DD6, 0x8DD7, 0x1D21,
+ 0x8DD8, 0x8DD9, 0x4C0B, 0x8DDA, 0x8DDA, 0x1D23, 0x8DDB, 0x8DDB, 0x1D27,
+ 0x8DDC, 0x8DDC, 0x4C0D, 0x8DDD, 0x8DDD, 0x090F, 0x8DDE, 0x8DDE, 0x1D24,
+ 0x8DDF, 0x8DDF, 0x06F5, 0x8DE0, 0x8DE2, 0x4C0E, 0x8DE3, 0x8DE3, 0x1D2C,
+ 0x8DE4, 0x8DE4, 0x1D2F, 0x8DE5, 0x8DE7, 0x4C11, 0x8DE8, 0x8DE8, 0x0974,
+ 0x8DE9, 0x8DE9, 0x4C14, 0x8DEA, 0x8DEA, 0x074B, 0x8DEB, 0x8DEB, 0x1D18,
+ 0x8DEC, 0x8DEC, 0x1D29, 0x8DED, 0x8DEE, 0x4C15, 0x8DEF, 0x8DEF, 0x0A5E,
+ 0x8DF0, 0x8DF2, 0x4C17, 0x8DF3, 0x8DF3, 0x0E4B, 0x8DF4, 0x8DF4, 0x4C1A,
+ 0x8DF5, 0x8DF5, 0x086C, 0x8DF6, 0x8DF6, 0x4C1B, 0x8DF7, 0x8DF8, 0x1D2A,
+ 0x8DF9, 0x8DF9, 0x1D2D, 0x8DFA, 0x8DFA, 0x0624, 0x8DFB, 0x8DFB, 0x1D2E,
+ 0x8DFC, 0x8DFC, 0x4C1C, 0x8DFD, 0x8DFD, 0x1D31, 0x8DFE, 0x8DFF, 0x4C1D,
+ 0x8E00, 0x8E04, 0x4C1F, 0x8E05, 0x8E05, 0x1D19, 0x8E06, 0x8E08, 0x4C24,
+ 0x8E09, 0x8E09, 0x1D30, 0x8E0A, 0x8E0A, 0x10A0, 0x8E0B, 0x8E0B, 0x4C27,
+ 0x8E0C, 0x8E0C, 0x0511, 0x8E0D, 0x8E0E, 0x4C28, 0x8E0F, 0x8E0F, 0x0DF7,
+ 0x8E10, 0x8E10, 0x1F94, 0x8E11, 0x8E13, 0x4C2A, 0x8E14, 0x8E14, 0x1D32,
+ 0x8E15, 0x8E1C, 0x4C2D, 0x8E1D, 0x8E1D, 0x1D33, 0x8E1E, 0x8E1E, 0x0910,
+ 0x8E1F, 0x8E1F, 0x1D34, 0x8E20, 0x8E21, 0x4C35, 0x8E22, 0x8E22, 0x0E32,
+ 0x8E23, 0x8E23, 0x1D37, 0x8E24, 0x8E28, 0x4C37, 0x8E29, 0x8E29, 0x048F,
+ 0x8E2A, 0x8E2A, 0x1236, 0x8E2B, 0x8E2B, 0x4C3C, 0x8E2C, 0x8E2C, 0x1D35,
+ 0x8E2D, 0x8E2D, 0x4C3D, 0x8E2E, 0x8E2E, 0x1D36, 0x8E2F, 0x8E2F, 0x1D38,
+ 0x8E30, 0x8E30, 0x4C3E, 0x8E31, 0x8E31, 0x1D3E, 0x8E32, 0x8E33, 0x4C3F,
+ 0x8E34, 0x8E34, 0x2230, 0x8E35, 0x8E35, 0x1D3C, 0x8E36, 0x8E38, 0x4C41,
+ 0x8E39, 0x8E39, 0x1D3B, 0x8E3A, 0x8E3A, 0x1D39, 0x8E3B, 0x8E3C, 0x4C44,
+ 0x8E3D, 0x8E3D, 0x1D3D, 0x8E3E, 0x8E3F, 0x4C46, 0x8E40, 0x8E40, 0x1D3A,
+ 0x8E41, 0x8E42, 0x1D40, 0x8E43, 0x8E43, 0x4C48, 0x8E44, 0x8E44, 0x0E36,
+ 0x8E45, 0x8E46, 0x4C49, 0x8E47, 0x8E47, 0x173B, 0x8E48, 0x8E48, 0x0599,
+ 0x8E49, 0x8E49, 0x1D3F, 0x8E4A, 0x8E4A, 0x1D44, 0x8E4B, 0x8E4B, 0x0DF6,
+ 0x8E4C, 0x8E4C, 0x25FD, 0x8E4D, 0x8E50, 0x4C4B, 0x8E51, 0x8E52, 0x1D42,
+ 0x8E53, 0x8E54, 0x4C4F, 0x8E55, 0x8E55, 0x2600, 0x8E56, 0x8E58, 0x4C51,
+ 0x8E59, 0x8E59, 0x1D1A, 0x8E5A, 0x8E62, 0x4C54, 0x8E63, 0x8E63, 0x2606,
+ 0x8E64, 0x8E65, 0x4C5D, 0x8E66, 0x8E66, 0x042D, 0x8E67, 0x8E68, 0x4C5F,
+ 0x8E69, 0x8E69, 0x1D1B, 0x8E6A, 0x8E6B, 0x4C61, 0x8E6C, 0x8E6C, 0x05A6,
+ 0x8E6D, 0x8E6D, 0x04AB, 0x8E6E, 0x8E6E, 0x4C63, 0x8E6F, 0x8E6F, 0x1D48,
+ 0x8E70, 0x8E70, 0x1D45, 0x8E71, 0x8E71, 0x4C64, 0x8E72, 0x8E72, 0x0616,
+ 0x8E73, 0x8E73, 0x4C65, 0x8E74, 0x8E74, 0x1D49, 0x8E75, 0x8E75, 0x4C66,
+ 0x8E76, 0x8E76, 0x1D46, 0x8E77, 0x8E79, 0x4C67, 0x8E7A, 0x8E7A, 0x25FF,
+ 0x8E7B, 0x8E7B, 0x4C6A, 0x8E7C, 0x8E7C, 0x1D47, 0x8E7D, 0x8E7E, 0x4C6B,
+ 0x8E7F, 0x8E7F, 0x055D, 0x8E80, 0x8E80, 0x4C6D, 0x8E81, 0x8E81, 0x112D,
+ 0x8E82, 0x8E84, 0x4C6E, 0x8E85, 0x8E85, 0x1D4A, 0x8E86, 0x8E86, 0x4C71,
+ 0x8E87, 0x8E87, 0x051E, 0x8E88, 0x8E88, 0x4C72, 0x8E89, 0x8E89, 0x25FC,
+ 0x8E8A, 0x8E8A, 0x1E8C, 0x8E8B, 0x8E8B, 0x2602, 0x8E8C, 0x8E8C, 0x4C73,
+ 0x8E8D, 0x8E8D, 0x224D, 0x8E8E, 0x8E8E, 0x4C74, 0x8E8F, 0x8E8F, 0x1D4B,
+ 0x8E90, 0x8E90, 0x1D4D, 0x8E91, 0x8E91, 0x2604, 0x8E92, 0x8E92, 0x25FE,
+ 0x8E93, 0x8E93, 0x2603, 0x8E94, 0x8E94, 0x1D4C, 0x8E95, 0x8E99, 0x4C75,
+ 0x8E9A, 0x8E9A, 0x2601, 0x8E9B, 0x8E9B, 0x4C7A, 0x8E9C, 0x8E9C, 0x1D4E,
+ 0x8E9D, 0x8E9D, 0x4C7B, 0x8E9E, 0x8E9E, 0x1D4F, 0x8E9F, 0x8EA0, 0x4C7C,
+ 0x8EA1, 0x8EA1, 0x2605, 0x8EA2, 0x8EA4, 0x4C7E, 0x8EA5, 0x8EA5, 0x1EA3,
+ 0x8EA6, 0x8EA6, 0x2608, 0x8EA7, 0x8EA9, 0x4C81, 0x8EAA, 0x8EAA, 0x2607,
+ 0x8EAB, 0x8EAB, 0x0D26, 0x8EAC, 0x8EAC, 0x0703, 0x8EAD, 0x8EAE, 0x4C84,
+ 0x8EAF, 0x8EAF, 0x0C78, 0x8EB0, 0x8EB1, 0x4C86, 0x8EB2, 0x8EB2, 0x0622,
+ 0x8EB3, 0x8EB9, 0x4C88, 0x8EBA, 0x8EBA, 0x0E1C, 0x8EBB, 0x8EBF, 0x4C8F,
+ 0x8EC0, 0x8EC0, 0x20F0, 0x8EC1, 0x8EC9, 0x4C94, 0x8ECA, 0x8ECA, 0x1E7B,
+ 0x8ECB, 0x8ECB, 0x2267, 0x8ECC, 0x8ECC, 0x1F36, 0x8ECD, 0x8ECD, 0x1FD6,
+ 0x8ECE, 0x8ECE, 0x18F8, 0x8ECF, 0x8ED1, 0x4C9D, 0x8ED2, 0x8ED2, 0x21E0,
+ 0x8ED3, 0x8ED3, 0x4CA0, 0x8ED4, 0x8ED4, 0x248C, 0x8ED5, 0x8EDA, 0x4CA1,
+ 0x8EDB, 0x8EDB, 0x248D, 0x8EDC, 0x8EDE, 0x4CA7, 0x8EDF, 0x8EDF, 0x2102,
+ 0x8EE0, 0x8EE3, 0x4CAA, 0x8EE4, 0x8EE4, 0x2494, 0x8EE5, 0x8EEA, 0x4CAE,
+ 0x8EEB, 0x8EEB, 0x2493, 0x8EEC, 0x8EF1, 0x4CB4, 0x8EF2, 0x8EF2, 0x248E,
+ 0x8EF3, 0x8EF7, 0x4CBA, 0x8EF8, 0x8EF8, 0x2299, 0x8EF9, 0x8EF9, 0x2491,
+ 0x8EFA, 0x8EFA, 0x2496, 0x8EFB, 0x8EFB, 0x248F, 0x8EFC, 0x8EFC, 0x2492,
+ 0x8EFD, 0x8EFD, 0x4CBF, 0x8EFE, 0x8EFE, 0x2497, 0x8EFF, 0x8EFF, 0x4CC0,
+ 0x8F00, 0x8F02, 0x4CC1, 0x8F03, 0x8F03, 0x1FB1, 0x8F04, 0x8F04, 0x4CC4,
+ 0x8F05, 0x8F05, 0x249A, 0x8F06, 0x8F06, 0x4CC5, 0x8F07, 0x8F07, 0x2499,
+ 0x8F08, 0x8F08, 0x4CC6, 0x8F09, 0x8F09, 0x2258, 0x8F0A, 0x8F0A, 0x2498,
+ 0x8F0B, 0x8F11, 0x4CC7, 0x8F12, 0x8F12, 0x249B, 0x8F13, 0x8F13, 0x4CCE,
+ 0x8F14, 0x8F14, 0x1F09, 0x8F15, 0x8F15, 0x20E6, 0x8F16, 0x8F1A, 0x4CCF,
+ 0x8F1B, 0x8F1B, 0x2026, 0x8F1C, 0x8F1C, 0x249F, 0x8F1D, 0x8F1D, 0x1F59,
+ 0x8F1E, 0x8F1F, 0x249D, 0x8F20, 0x8F24, 0x4CD4, 0x8F25, 0x8F25, 0x1F3B,
+ 0x8F26, 0x8F26, 0x249C, 0x8F27, 0x8F28, 0x4CD9, 0x8F29, 0x8F29, 0x1E3A,
+ 0x8F2A, 0x8F2A, 0x205B, 0x8F2B, 0x8F2E, 0x4CDB, 0x8F2F, 0x8F2F, 0x1F70,
+ 0x8F30, 0x8F32, 0x4CDF, 0x8F33, 0x8F33, 0x24A0, 0x8F34, 0x8F37, 0x4CE2,
+ 0x8F38, 0x8F38, 0x213B, 0x8F39, 0x8F3A, 0x4CE6, 0x8F3B, 0x8F3B, 0x1F07,
+ 0x8F3C, 0x8F3D, 0x4CE8, 0x8F3E, 0x8F3E, 0x2270, 0x8F3F, 0x8F3F, 0x2237,
+ 0x8F40, 0x8F41, 0x4CEA, 0x8F42, 0x8F42, 0x24D2, 0x8F43, 0x8F43, 0x4CEC,
+ 0x8F44, 0x8F44, 0x21B3, 0x8F45, 0x8F45, 0x2245, 0x8F46, 0x8F46, 0x24A1,
+ 0x8F47, 0x8F48, 0x4CED, 0x8F49, 0x8F49, 0x22A8, 0x8F4A, 0x8F4C, 0x4CEF,
+ 0x8F4D, 0x8F4D, 0x227C, 0x8F4E, 0x8F4E, 0x1FB0, 0x8F4F, 0x8F53, 0x4CF2,
+ 0x8F54, 0x8F54, 0x24A2, 0x8F55, 0x8F5E, 0x4CF7, 0x8F5F, 0x8F5F, 0x1F46,
+ 0x8F60, 0x8F60, 0x4D01, 0x8F61, 0x8F61, 0x2380, 0x8F62, 0x8F62, 0x2495,
+ 0x8F63, 0x8F63, 0x4D02, 0x8F64, 0x8F64, 0x2490, 0x8F65, 0x8F65, 0x4D03,
+ 0x8F66, 0x8F66, 0x04DA, 0x8F67, 0x8F67, 0x1141, 0x8F68, 0x8F68, 0x0745,
+ 0x8F69, 0x8F69, 0x0FC4, 0x8F6A, 0x8F6A, 0x4D04, 0x8F6B, 0x8F6B, 0x18E1,
+ 0x8F6C, 0x8F6C, 0x1207, 0x8F6D, 0x8F6D, 0x18E2, 0x8F6E, 0x8F6E, 0x0A7D,
+ 0x8F6F, 0x8F6F, 0x0CC8, 0x8F70, 0x8F70, 0x079B, 0x8F71, 0x8F73, 0x18E3,
+ 0x8F74, 0x8F74, 0x11E0, 0x8F75, 0x8F76, 0x18E6, 0x8F77, 0x8F77, 0x18E9,
+ 0x8F78, 0x8F78, 0x18E8, 0x8F79, 0x8F7A, 0x18EA, 0x8F7B, 0x8F7B, 0x0C5E,
+ 0x8F7C, 0x8F7C, 0x18EC, 0x8F7D, 0x8F7D, 0x111B, 0x8F7E, 0x8F7E, 0x18ED,
+ 0x8F7F, 0x8F7F, 0x089F, 0x8F80, 0x8F80, 0x4D05, 0x8F81, 0x8F82, 0x18EE,
+ 0x8F83, 0x8F83, 0x08A0, 0x8F84, 0x8F84, 0x18F0, 0x8F85, 0x8F85, 0x06A3,
+ 0x8F86, 0x8F86, 0x0A07, 0x8F87, 0x8F87, 0x18F1, 0x8F88, 0x8F88, 0x041B,
+ 0x8F89, 0x8F89, 0x07E9, 0x8F8A, 0x8F8A, 0x074E, 0x8F8B, 0x8F8B, 0x18F2,
+ 0x8F8C, 0x8F8C, 0x4D06, 0x8F8D, 0x8F8F, 0x18F3, 0x8F90, 0x8F90, 0x0695,
+ 0x8F91, 0x8F91, 0x0820, 0x8F92, 0x8F92, 0x4D07, 0x8F93, 0x8F93, 0x0D7B,
+ 0x8F94, 0x8F94, 0x1574, 0x8F95, 0x8F95, 0x10F2, 0x8F96, 0x8F96, 0x0F2A,
+ 0x8F97, 0x8F97, 0x1158, 0x8F98, 0x8F98, 0x18F6, 0x8F99, 0x8F99, 0x117F,
+ 0x8F9A, 0x8F9A, 0x18F7, 0x8F9B, 0x8F9B, 0x0F8C, 0x8F9C, 0x8F9C, 0x0715,
+ 0x8F9D, 0x8F9D, 0x4D08, 0x8F9E, 0x8F9E, 0x054A, 0x8F9F, 0x8F9F, 0x0442,
+ 0x8FA0, 0x8FA2, 0x4D09, 0x8FA3, 0x8FA3, 0x099C, 0x8FA4, 0x8FA5, 0x4D0C,
+ 0x8FA6, 0x8FA6, 0x1E30, 0x8FA7, 0x8FA7, 0x4D0E, 0x8FA8, 0x8FA9, 0x044F,
+ 0x8FAA, 0x8FAA, 0x4D0F, 0x8FAB, 0x8FAB, 0x0451, 0x8FAC, 0x8FAC, 0x4D10,
+ 0x8FAD, 0x8FAD, 0x1E9D, 0x8FAE, 0x8FAE, 0x1E4B, 0x8FAF, 0x8FAF, 0x1E4A,
+ 0x8FB0, 0x8FB0, 0x04E2, 0x8FB1, 0x8FB1, 0x0CC3, 0x8FB2, 0x8FB2, 0x20AA,
+ 0x8FB3, 0x8FB5, 0x4D11, 0x8FB6, 0x8FB6, 0x173D, 0x8FB7, 0x8FB8, 0x4D14,
+ 0x8FB9, 0x8FB9, 0x0448, 0x8FBA, 0x8FBC, 0x4D16, 0x8FBD, 0x8FBD, 0x0A12,
+ 0x8FBE, 0x8FBE, 0x0572, 0x8FBF, 0x8FC0, 0x4D19, 0x8FC1, 0x8FC1, 0x0C25,
+ 0x8FC2, 0x8FC2, 0x10BD, 0x8FC3, 0x8FC3, 0x4D1B, 0x8FC4, 0x8FC4, 0x0C18,
+ 0x8FC5, 0x8FC5, 0x0FE1, 0x8FC6, 0x8FC6, 0x4D1C, 0x8FC7, 0x8FC7, 0x0756,
+ 0x8FC8, 0x8FC8, 0x0A9C, 0x8FC9, 0x8FCD, 0x4D1D, 0x8FCE, 0x8FCE, 0x1092,
+ 0x8FCF, 0x8FCF, 0x4D22, 0x8FD0, 0x8FD0, 0x110E, 0x8FD1, 0x8FD1, 0x08CD,
+ 0x8FD2, 0x8FD2, 0x4D23, 0x8FD3, 0x8FD3, 0x173E, 0x8FD4, 0x8FD4, 0x0652,
+ 0x8FD5, 0x8FD5, 0x173F, 0x8FD6, 0x8FD7, 0x4D24, 0x8FD8, 0x8FD8, 0x07CE,
+ 0x8FD9, 0x8FD9, 0x1183, 0x8FDA, 0x8FDA, 0x4D26, 0x8FDB, 0x8FDB, 0x08C9,
+ 0x8FDC, 0x8FDC, 0x10F9, 0x8FDD, 0x8FDD, 0x0EB4, 0x8FDE, 0x8FDE, 0x09F5,
+ 0x8FDF, 0x8FDF, 0x04FE, 0x8FE0, 0x8FE1, 0x4D27, 0x8FE2, 0x8FE2, 0x0E49,
+ 0x8FE3, 0x8FE3, 0x4D29, 0x8FE4, 0x8FE4, 0x1742, 0x8FE5, 0x8FE5, 0x1740,
+ 0x8FE6, 0x8FE6, 0x1744, 0x8FE7, 0x8FE7, 0x4D2A, 0x8FE8, 0x8FE8, 0x1746,
+ 0x8FE9, 0x8FE9, 0x1743, 0x8FEA, 0x8FEA, 0x05B0, 0x8FEB, 0x8FEB, 0x0BE7,
+ 0x8FEC, 0x8FEC, 0x4D2B, 0x8FED, 0x8FED, 0x05DD, 0x8FEE, 0x8FEE, 0x1741,
+ 0x8FEF, 0x8FEF, 0x4D2C, 0x8FF0, 0x8FF0, 0x0D8D, 0x8FF1, 0x8FF2, 0x4D2D,
+ 0x8FF3, 0x8FF3, 0x1745, 0x8FF4, 0x8FF4, 0x267B, 0x8FF5, 0x8FF6, 0x4D2F,
+ 0x8FF7, 0x8FF7, 0x0AD9, 0x8FF8, 0x8FF8, 0x042E, 0x8FF9, 0x8FF9, 0x0816,
+ 0x8FFA, 0x8FFC, 0x4D31, 0x8FFD, 0x8FFD, 0x1214, 0x8FFE, 0x8FFF, 0x4D34,
+ 0x9000, 0x9000, 0x0E7C, 0x9001, 0x9001, 0x0DC2, 0x9002, 0x9002, 0x0D61,
+ 0x9003, 0x9003, 0x0E26, 0x9004, 0x9004, 0x1748, 0x9005, 0x9005, 0x1747,
+ 0x9006, 0x9006, 0x0B49, 0x9007, 0x9008, 0x4D36, 0x9009, 0x9009, 0x0FCA,
+ 0x900A, 0x900A, 0x0FE0, 0x900B, 0x900B, 0x1749, 0x900C, 0x900C, 0x4D38,
+ 0x900D, 0x900D, 0x174C, 0x900E, 0x900E, 0x4D39, 0x900F, 0x900F, 0x0E69,
+ 0x9010, 0x9010, 0x11EF, 0x9011, 0x9011, 0x174B, 0x9012, 0x9012, 0x05BE,
+ 0x9013, 0x9013, 0x4D3A, 0x9014, 0x9014, 0x0E6F, 0x9015, 0x9015, 0x23F2,
+ 0x9016, 0x9016, 0x174D, 0x9017, 0x9017, 0x05F9, 0x9018, 0x9018, 0x4D3B,
+ 0x9019, 0x9019, 0x227E, 0x901A, 0x901A, 0x0E59, 0x901B, 0x901B, 0x073D,
+ 0x901C, 0x901C, 0x4D3C, 0x901D, 0x901D, 0x0D5C, 0x901E, 0x901E, 0x04F6,
+ 0x901F, 0x901F, 0x0DCE, 0x9020, 0x9020, 0x112F, 0x9021, 0x9021, 0x174E,
+ 0x9022, 0x9022, 0x0687, 0x9023, 0x9023, 0x2019, 0x9024, 0x9025, 0x4D3D,
+ 0x9026, 0x9026, 0x174A, 0x9027, 0x902C, 0x4D3F, 0x902D, 0x902D, 0x1751,
+ 0x902E, 0x902E, 0x0581, 0x902F, 0x902F, 0x1752, 0x9030, 0x9031, 0x4D45,
+ 0x9032, 0x9032, 0x1FBB, 0x9033, 0x9034, 0x4D47, 0x9035, 0x9036, 0x174F,
+ 0x9037, 0x9037, 0x4D49, 0x9038, 0x9038, 0x1064, 0x9039, 0x903A, 0x4D4A,
+ 0x903B, 0x903B, 0x0A86, 0x903C, 0x903C, 0x042F, 0x903D, 0x903D, 0x4D4C,
+ 0x903E, 0x903E, 0x10C7, 0x903F, 0x9040, 0x4D4D, 0x9041, 0x9041, 0x061C,
+ 0x9042, 0x9042, 0x0DE1, 0x9043, 0x9043, 0x4D4F, 0x9044, 0x9044, 0x1753,
+ 0x9045, 0x9046, 0x4D50, 0x9047, 0x9047, 0x10DB, 0x9048, 0x904A, 0x4D52,
+ 0x904B, 0x904B, 0x2253, 0x904C, 0x904C, 0x4D55, 0x904D, 0x904D, 0x0452,
+ 0x904E, 0x904E, 0x1F3E, 0x904F, 0x904F, 0x0633, 0x9050, 0x9050, 0x1756,
+ 0x9051, 0x9052, 0x1754, 0x9053, 0x9053, 0x05A1, 0x9054, 0x9054, 0x1EA6,
+ 0x9055, 0x9055, 0x218E, 0x9056, 0x9056, 0x4D56, 0x9057, 0x9057, 0x104C,
+ 0x9058, 0x9058, 0x1758, 0x9059, 0x905A, 0x4D57, 0x905B, 0x905B, 0x175A,
+ 0x905C, 0x905C, 0x21EC, 0x905D, 0x905D, 0x4D59, 0x905E, 0x905E, 0x1EBE,
+ 0x905F, 0x905F, 0x4D5A, 0x9060, 0x9060, 0x224A, 0x9061, 0x9061, 0x4D5B,
+ 0x9062, 0x9062, 0x1759, 0x9063, 0x9063, 0x0C2F, 0x9064, 0x9064, 0x4D5C,
+ 0x9065, 0x9065, 0x102A, 0x9066, 0x9067, 0x4D5D, 0x9068, 0x9068, 0x1757,
+ 0x9069, 0x9069, 0x2133, 0x906A, 0x906C, 0x4D5F, 0x906D, 0x906D, 0x1125,
+ 0x906E, 0x906E, 0x117B, 0x906F, 0x9071, 0x4D62, 0x9072, 0x9072, 0x1E84,
+ 0x9073, 0x9073, 0x4D65, 0x9074, 0x9074, 0x175C, 0x9075, 0x9075, 0x124E,
+ 0x9076, 0x9076, 0x4D66, 0x9077, 0x9077, 0x20CF, 0x9078, 0x9078, 0x21E2,
+ 0x9079, 0x9079, 0x4D67, 0x907A, 0x907A, 0x220F, 0x907B, 0x907B, 0x4D68,
+ 0x907C, 0x907C, 0x2029, 0x907D, 0x907D, 0x175D, 0x907E, 0x907E, 0x4D69,
+ 0x907F, 0x907F, 0x0445, 0x9080, 0x9080, 0x1024, 0x9081, 0x9081, 0x2073,
+ 0x9082, 0x9082, 0x175E, 0x9083, 0x9083, 0x1760, 0x9084, 0x9084, 0x1F55,
+ 0x9085, 0x9086, 0x4D6A, 0x9087, 0x9087, 0x23F1, 0x9088, 0x9088, 0x175F,
+ 0x9089, 0x9089, 0x4D6C, 0x908A, 0x908A, 0x1E46, 0x908B, 0x908B, 0x1761,
+ 0x908C, 0x908E, 0x4D6D, 0x908F, 0x908F, 0x2063, 0x9090, 0x9090, 0x23F3,
+ 0x9091, 0x9091, 0x105F, 0x9092, 0x9092, 0x4D70, 0x9093, 0x9093, 0x05AC,
+ 0x9094, 0x9094, 0x4D71, 0x9095, 0x9095, 0x1817, 0x9096, 0x9096, 0x4D72,
+ 0x9097, 0x9097, 0x1367, 0x9098, 0x9098, 0x4D73, 0x9099, 0x9099, 0x136A,
+ 0x909A, 0x909A, 0x4D74, 0x909B, 0x909B, 0x1368, 0x909C, 0x909C, 0x4D75,
+ 0x909D, 0x909D, 0x1369, 0x909E, 0x90A0, 0x4D76, 0x90A1, 0x90A1, 0x136C,
+ 0x90A2, 0x90A2, 0x0F9A, 0x90A3, 0x90A3, 0x0B2A, 0x90A4, 0x90A5, 0x4D79,
+ 0x90A6, 0x90A6, 0x03F9, 0x90A7, 0x90A9, 0x4D7B, 0x90AA, 0x90AA, 0x0F7B,
+ 0x90AB, 0x90AB, 0x4D7E, 0x90AC, 0x90AC, 0x136B, 0x90AD, 0x90AD, 0x4D7F,
+ 0x90AE, 0x90AE, 0x10AF, 0x90AF, 0x90AF, 0x0761, 0x90B0, 0x90B0, 0x1372,
+ 0x90B1, 0x90B1, 0x0C6E, 0x90B2, 0x90B2, 0x4D80, 0x90B3, 0x90B3, 0x136E,
+ 0x90B4, 0x90B4, 0x136D, 0x90B5, 0x90B5, 0x0D14, 0x90B6, 0x90B6, 0x136F,
+ 0x90B7, 0x90B7, 0x4D81, 0x90B8, 0x90B8, 0x1371, 0x90B9, 0x90B9, 0x123B,
+ 0x90BA, 0x90BA, 0x1370, 0x90BB, 0x90BB, 0x0A23, 0x90BC, 0x90BD, 0x4D82,
+ 0x90BE, 0x90BE, 0x1375, 0x90BF, 0x90C0, 0x4D84, 0x90C1, 0x90C1, 0x10D9,
+ 0x90C2, 0x90C3, 0x4D86, 0x90C4, 0x90C4, 0x1377, 0x90C5, 0x90C5, 0x1374,
+ 0x90C6, 0x90C6, 0x4D88, 0x90C7, 0x90C7, 0x1378, 0x90C8, 0x90C9, 0x4D89,
+ 0x90CA, 0x90CA, 0x088D, 0x90CB, 0x90CD, 0x4D8B, 0x90CE, 0x90CE, 0x09B4,
+ 0x90CF, 0x90CF, 0x1373, 0x90D0, 0x90D0, 0x1376, 0x90D1, 0x90D1, 0x11A2,
+ 0x90D2, 0x90D2, 0x4D8E, 0x90D3, 0x90D3, 0x1379, 0x90D4, 0x90D6, 0x4D8F,
+ 0x90D7, 0x90D7, 0x137D, 0x90D8, 0x90DA, 0x4D92, 0x90DB, 0x90DB, 0x137E,
+ 0x90DC, 0x90DC, 0x137C, 0x90DD, 0x90DD, 0x0779, 0x90DE, 0x90DE, 0x4D95,
+ 0x90DF, 0x90DF, 0x231E, 0x90E0, 0x90E0, 0x4D96, 0x90E1, 0x90E1, 0x0931,
+ 0x90E2, 0x90E2, 0x137B, 0x90E3, 0x90E5, 0x4D97, 0x90E6, 0x90E6, 0x137A,
+ 0x90E7, 0x90E7, 0x110A, 0x90E8, 0x90E8, 0x0486, 0x90E9, 0x90EA, 0x4D9A,
+ 0x90EB, 0x90EB, 0x137F, 0x90EC, 0x90EC, 0x4D9C, 0x90ED, 0x90ED, 0x0752,
+ 0x90EE, 0x90EE, 0x4D9D, 0x90EF, 0x90EF, 0x1380, 0x90F0, 0x90F3, 0x4D9E,
+ 0x90F4, 0x90F4, 0x04E0, 0x90F5, 0x90F5, 0x2233, 0x90F6, 0x90F7, 0x4DA2,
+ 0x90F8, 0x90F8, 0x0587, 0x90F9, 0x90FC, 0x4DA4, 0x90FD, 0x90FD, 0x05FB,
+ 0x90FE, 0x90FE, 0x1381, 0x90FF, 0x90FF, 0x4DA8, 0x9100, 0x9101, 0x4DA9,
+ 0x9102, 0x9102, 0x0634, 0x9103, 0x9103, 0x4DAB, 0x9104, 0x9104, 0x1382,
+ 0x9105, 0x9105, 0x4DAC, 0x9106, 0x9106, 0x2320, 0x9107, 0x9108, 0x4DAD,
+ 0x9109, 0x9109, 0x21C7, 0x910A, 0x9111, 0x4DAF, 0x9112, 0x9112, 0x22BC,
+ 0x9113, 0x9113, 0x4DB7, 0x9114, 0x9114, 0x231C, 0x9115, 0x9115, 0x4DB8,
+ 0x9116, 0x9116, 0x2251, 0x9117, 0x9118, 0x4DB9, 0x9119, 0x9119, 0x0432,
+ 0x911A, 0x911D, 0x4DBB, 0x911E, 0x911E, 0x1384, 0x911F, 0x9121, 0x4DBF,
+ 0x9122, 0x9122, 0x1383, 0x9123, 0x9123, 0x1385, 0x9124, 0x9126, 0x4DC2,
+ 0x9127, 0x9127, 0x1EBB, 0x9128, 0x912C, 0x4DC5, 0x912D, 0x912D, 0x2287,
+ 0x912E, 0x912E, 0x4DCA, 0x912F, 0x912F, 0x1387, 0x9130, 0x9130, 0x202D,
+ 0x9131, 0x9131, 0x1386, 0x9132, 0x9132, 0x1EAB, 0x9133, 0x9133, 0x4DCB,
+ 0x9134, 0x9134, 0x231D, 0x9135, 0x9135, 0x4DCC, 0x9136, 0x9136, 0x231F,
+ 0x9137, 0x9138, 0x4DCD, 0x9139, 0x9139, 0x1388, 0x913A, 0x913A, 0x231B,
+ 0x913B, 0x9142, 0x4DCF, 0x9143, 0x9143, 0x1389, 0x9144, 0x9145, 0x4DD7,
+ 0x9146, 0x9146, 0x138A, 0x9147, 0x9147, 0x4DD9, 0x9148, 0x9148, 0x2321,
+ 0x9149, 0x9149, 0x10B4, 0x914A, 0x914A, 0x1CF8, 0x914B, 0x914B, 0x0C72,
+ 0x914C, 0x914C, 0x1220, 0x914D, 0x914D, 0x0BA5, 0x914E, 0x914F, 0x1CFA,
+ 0x9150, 0x9150, 0x1CF9, 0x9151, 0x9151, 0x4DDA, 0x9152, 0x9152, 0x08F5,
+ 0x9153, 0x9156, 0x4DDB, 0x9157, 0x9157, 0x0FBA, 0x9158, 0x9159, 0x4DDF,
+ 0x915A, 0x915A, 0x0670, 0x915B, 0x915C, 0x4DE1, 0x915D, 0x915D, 0x1110,
+ 0x915E, 0x915E, 0x0DFD, 0x915F, 0x9160, 0x4DE3, 0x9161, 0x9161, 0x1CFE,
+ 0x9162, 0x9162, 0x1CFD, 0x9163, 0x9163, 0x075F, 0x9164, 0x9164, 0x1CFC,
+ 0x9165, 0x9165, 0x0DCB, 0x9166, 0x9168, 0x4DE5, 0x9169, 0x9169, 0x1D00,
+ 0x916A, 0x916A, 0x09BD, 0x916B, 0x916B, 0x4DE8, 0x916C, 0x916C, 0x050F,
+ 0x916D, 0x916D, 0x4DE9, 0x916E, 0x916E, 0x0E5B, 0x916F, 0x916F, 0x1D01,
+ 0x9170, 0x9170, 0x1CFF, 0x9171, 0x9171, 0x0885, 0x9172, 0x9172, 0x1D04,
+ 0x9173, 0x9173, 0x4DEA, 0x9174, 0x9174, 0x1D05, 0x9175, 0x9175, 0x089E,
+ 0x9176, 0x9176, 0x0ABD, 0x9177, 0x9177, 0x096E, 0x9178, 0x9178, 0x0DD6,
+ 0x9179, 0x9179, 0x1D06, 0x917A, 0x917C, 0x4DEB, 0x917D, 0x917E, 0x1D02,
+ 0x917F, 0x917F, 0x0B53, 0x9180, 0x9184, 0x4DEE, 0x9185, 0x9185, 0x1D08,
+ 0x9186, 0x9186, 0x4DF3, 0x9187, 0x9187, 0x053F, 0x9188, 0x9188, 0x4DF4,
+ 0x9189, 0x9189, 0x124A, 0x918A, 0x918A, 0x4DF5, 0x918B, 0x918B, 0x055A,
+ 0x918C, 0x918C, 0x1D07, 0x918D, 0x918D, 0x1D0A, 0x918E, 0x918F, 0x4DF6,
+ 0x9190, 0x9190, 0x1D09, 0x9191, 0x9191, 0x1D0B, 0x9192, 0x9192, 0x0F9C,
+ 0x9193, 0x9195, 0x4DF8, 0x9196, 0x9196, 0x2255, 0x9197, 0x9199, 0x4DFB,
+ 0x919A, 0x919A, 0x0AD6, 0x919B, 0x919B, 0x0C84, 0x919C, 0x919C, 0x1E8F,
+ 0x919D, 0x91A1, 0x4DFE, 0x91A2, 0x91A3, 0x1D0C, 0x91A4, 0x91A9, 0x4E03,
+ 0x91AA, 0x91AA, 0x1D0E, 0x91AB, 0x91AB, 0x220C, 0x91AC, 0x91AC, 0x1FA4,
+ 0x91AD, 0x91AF, 0x1D0F, 0x91B0, 0x91B3, 0x4E09, 0x91B4, 0x91B4, 0x1D13,
+ 0x91B5, 0x91B5, 0x1D12, 0x91B6, 0x91B9, 0x4E0D, 0x91BA, 0x91BA, 0x1D14,
+ 0x91BB, 0x91BF, 0x4E11, 0x91C0, 0x91C0, 0x209B, 0x91C1, 0x91C1, 0x21D8,
+ 0x91C2, 0x91C2, 0x4E16, 0x91C3, 0x91C3, 0x25FA, 0x91C4, 0x91C4, 0x4E17,
+ 0x91C5, 0x91C5, 0x25F9, 0x91C6, 0x91C6, 0x4E18, 0x91C7, 0x91C7, 0x0490,
+ 0x91C8, 0x91C8, 0x4E19, 0x91C9, 0x91C9, 0x10B9, 0x91CA, 0x91CA, 0x0D64,
+ 0x91CB, 0x91CB, 0x2134, 0x91CC, 0x91CC, 0x09DA, 0x91CD, 0x91CD, 0x11D7,
+ 0x91CE, 0x91CE, 0x1037, 0x91CF, 0x91CF, 0x0A08, 0x91D0, 0x91D0, 0x4E1A,
+ 0x91D1, 0x91D1, 0x08C1, 0x91D2, 0x91D4, 0x24F3, 0x91D5, 0x91D5, 0x24F8,
+ 0x91D6, 0x91D6, 0x4E1B, 0x91D7, 0x91D7, 0x24F7, 0x91D8, 0x91D8, 0x1EC8,
+ 0x91D9, 0x91D9, 0x24F6, 0x91DA, 0x91DB, 0x4E1C, 0x91DC, 0x91DC, 0x06A5,
+ 0x91DD, 0x91DD, 0x2280, 0x91DE, 0x91E2, 0x4E1E, 0x91E3, 0x91E3, 0x1EC5,
+ 0x91E4, 0x91E4, 0x24FB, 0x91E5, 0x91E6, 0x4E23, 0x91E7, 0x91E7, 0x24FA,
+ 0x91E8, 0x91E8, 0x4E25, 0x91E9, 0x91E9, 0x1EED, 0x91EA, 0x91F4, 0x4E26,
+ 0x91F5, 0x91F5, 0x24FD, 0x91F6, 0x91F6, 0x4E31, 0x91F7, 0x91F7, 0x24F9,
+ 0x91F8, 0x91F8, 0x4E32, 0x91F9, 0x91F9, 0x24FE, 0x91FA, 0x91FA, 0x20CD,
+ 0x91FB, 0x91FF, 0x4E33, 0x9200, 0x9200, 0x2508, 0x9201, 0x9201, 0x2504,
+ 0x9202, 0x9203, 0x4E38, 0x9204, 0x9204, 0x2506, 0x9205, 0x9207, 0x4E3A,
+ 0x9208, 0x9208, 0x24FF, 0x9209, 0x9209, 0x2090, 0x920A, 0x920C, 0x4E3D,
+ 0x920D, 0x920D, 0x1EDD, 0x920E, 0x920E, 0x1F25, 0x920F, 0x920F, 0x4E40,
+ 0x9210, 0x9210, 0x2503, 0x9211, 0x9211, 0x2502, 0x9212, 0x9213, 0x4E41,
+ 0x9214, 0x9214, 0x1E7A, 0x9215, 0x9215, 0x20A6, 0x9216, 0x921D, 0x4E43,
+ 0x921E, 0x921E, 0x1FD5, 0x921F, 0x9222, 0x4E4B, 0x9223, 0x9223, 0x1F11,
+ 0x9224, 0x9224, 0x4E4F, 0x9225, 0x9225, 0x2507, 0x9226, 0x9226, 0x2500,
+ 0x9227, 0x9227, 0x2505, 0x9228, 0x922D, 0x4E50, 0x922E, 0x922E, 0x2519,
+ 0x922F, 0x922F, 0x4E56, 0x9230, 0x9230, 0x2515, 0x9231, 0x9232, 0x4E57,
+ 0x9233, 0x9233, 0x250C, 0x9234, 0x9234, 0x2031, 0x9235, 0x9236, 0x4E59,
+ 0x9237, 0x9237, 0x250B, 0x9238, 0x9238, 0x250F, 0x9239, 0x9239, 0x251A,
+ 0x923A, 0x923A, 0x2509, 0x923B, 0x923C, 0x4E5B, 0x923D, 0x923D, 0x250E,
+ 0x923E, 0x923E, 0x2234, 0x923F, 0x923F, 0x2513, 0x9240, 0x9240, 0x1F80,
+ 0x9241, 0x9244, 0x4E5D, 0x9245, 0x9245, 0x2501, 0x9246, 0x9247, 0x4E61,
+ 0x9248, 0x9248, 0x2517, 0x9249, 0x9249, 0x2516, 0x924A, 0x924C, 0x4E63,
+ 0x924D, 0x924D, 0x2518, 0x924E, 0x9250, 0x4E66, 0x9251, 0x9251, 0x1E56,
+ 0x9252, 0x9254, 0x4E69, 0x9255, 0x9255, 0x250D, 0x9256, 0x9256, 0x4E6C,
+ 0x9257, 0x9257, 0x20D3, 0x9258, 0x9259, 0x4E6D, 0x925A, 0x925A, 0x207A,
+ 0x925B, 0x925B, 0x20CE, 0x925C, 0x925D, 0x4E6F, 0x925E, 0x925E, 0x2510,
+ 0x925F, 0x9261, 0x4E71, 0x9262, 0x9262, 0x1E55, 0x9263, 0x9265, 0x4E74,
+ 0x9266, 0x9266, 0x250A, 0x9267, 0x926B, 0x4E77, 0x926C, 0x926D, 0x2511,
+ 0x926E, 0x9273, 0x4E7C, 0x9274, 0x9274, 0x086B, 0x9275, 0x9277, 0x4E82,
+ 0x9278, 0x9278, 0x1FAA, 0x9279, 0x9279, 0x4E85, 0x927A, 0x927A, 0x251E,
+ 0x927B, 0x927B, 0x1F1F, 0x927C, 0x927E, 0x4E86, 0x927F, 0x927F, 0x252D,
+ 0x9280, 0x9280, 0x221D, 0x9281, 0x9282, 0x4E89, 0x9283, 0x9283, 0x2532,
+ 0x9284, 0x9284, 0x4E8B, 0x9285, 0x9285, 0x217B, 0x9286, 0x928D, 0x4E8C,
+ 0x928E, 0x928E, 0x1D80, 0x928F, 0x9290, 0x4E94, 0x9291, 0x9291, 0x21AF,
+ 0x9292, 0x9292, 0x4E96, 0x9293, 0x9293, 0x252C, 0x9294, 0x9295, 0x4E97,
+ 0x9296, 0x9296, 0x2528, 0x9297, 0x9297, 0x4E99, 0x9298, 0x9298, 0x208C,
+ 0x9299, 0x9299, 0x4E9A, 0x929A, 0x929A, 0x252F, 0x929B, 0x929B, 0x4E9B,
+ 0x929C, 0x929C, 0x21BC, 0x929D, 0x929F, 0x4E9C, 0x92A0, 0x92A0, 0x251D,
+ 0x92A1, 0x92A2, 0x4E9F, 0x92A3, 0x92A3, 0x2535, 0x92A4, 0x92A4, 0x4EA1,
+ 0x92A5, 0x92A5, 0x220D, 0x92A6, 0x92A6, 0x2526, 0x92A7, 0x92A7, 0x4EA2,
+ 0x92A8, 0x92A8, 0x2534, 0x92A9, 0x92A9, 0x252A, 0x92AA, 0x92AA, 0x251F,
+ 0x92AB, 0x92AB, 0x2531, 0x92AC, 0x92AC, 0x251C, 0x92AD, 0x92AD, 0x4EA3,
+ 0x92AE, 0x92AE, 0x1D81, 0x92AF, 0x92B0, 0x4EA4, 0x92B1, 0x92B1, 0x2525,
+ 0x92B2, 0x92B6, 0x4EA6, 0x92B7, 0x92B7, 0x21CD, 0x92B8, 0x92B8, 0x4EAB,
+ 0x92B9, 0x92B9, 0x21DA, 0x92BA, 0x92BA, 0x4EAC, 0x92BB, 0x92BB, 0x2172,
+ 0x92BC, 0x92BC, 0x253E, 0x92BD, 0x92C0, 0x4EAD, 0x92C1, 0x92C1, 0x204F,
+ 0x92C2, 0x92C2, 0x4EB1, 0x92C3, 0x92C3, 0x2543, 0x92C4, 0x92C4, 0x4EB2,
+ 0x92C5, 0x92C5, 0x21D7, 0x92C6, 0x92C6, 0x4EB3, 0x92C7, 0x92C7, 0x1E3C,
+ 0x92C8, 0x92C8, 0x1D82, 0x92C9, 0x92CB, 0x4EB4, 0x92CC, 0x92CC, 0x2529,
+ 0x92CD, 0x92CE, 0x4EB7, 0x92CF, 0x92CF, 0x2521, 0x92D0, 0x92D1, 0x4EB9,
+ 0x92D2, 0x92D2, 0x1EFF, 0x92D3, 0x92DC, 0x4EBB, 0x92DD, 0x92DD, 0x253F,
+ 0x92DE, 0x92DE, 0x4EC5, 0x92DF, 0x92DF, 0x2544, 0x92E0, 0x92E2, 0x4EC6,
+ 0x92E3, 0x92E3, 0x2523, 0x92E4, 0x92E4, 0x1E90, 0x92E5, 0x92E5, 0x253A,
+ 0x92E6, 0x92E6, 0x2545, 0x92E7, 0x92E7, 0x4EC9, 0x92E8, 0x92E8, 0x253D,
+ 0x92E9, 0x92E9, 0x4ECA, 0x92EA, 0x92EA, 0x20C1, 0x92EB, 0x92EC, 0x4ECB,
+ 0x92ED, 0x92ED, 0x2103, 0x92EE, 0x92EE, 0x2520, 0x92EF, 0x92EF, 0x253C,
+ 0x92F0, 0x92F0, 0x253B, 0x92F1, 0x92F1, 0x2538, 0x92F2, 0x92F5, 0x4ECD,
+ 0x92F6, 0x92F6, 0x2540, 0x92F7, 0x92F7, 0x4ED1, 0x92F8, 0x92F8, 0x1FCD,
+ 0x92F9, 0x92FB, 0x4ED2, 0x92FC, 0x92FC, 0x1F18, 0x92FD, 0x92FF, 0x4ED5,
+ 0x9300, 0x9300, 0x4ED8, 0x9301, 0x9301, 0x254B, 0x9302, 0x9305, 0x4ED9,
+ 0x9306, 0x9306, 0x2547, 0x9307, 0x9308, 0x254F, 0x9309, 0x930F, 0x4EDD,
+ 0x9310, 0x9310, 0x22B0, 0x9311, 0x9311, 0x4EE4, 0x9312, 0x9312, 0x2546,
+ 0x9313, 0x9314, 0x4EE5, 0x9315, 0x9315, 0x254C, 0x9316, 0x9317, 0x4EE7,
+ 0x9318, 0x9318, 0x1E9A, 0x9319, 0x9319, 0x2552, 0x931A, 0x931A, 0x2530,
+ 0x931B, 0x931B, 0x2549, 0x931C, 0x931E, 0x4EE9, 0x931F, 0x931F, 0x2551,
+ 0x9320, 0x9320, 0x1ECA, 0x9321, 0x9321, 0x4EEC, 0x9322, 0x9322, 0x20D2,
+ 0x9323, 0x9325, 0x4EED, 0x9326, 0x9326, 0x1FB8, 0x9327, 0x9327, 0x4EF0,
+ 0x9328, 0x9328, 0x2079, 0x9329, 0x932A, 0x4EF1, 0x932B, 0x932B, 0x21AB,
+ 0x932C, 0x932D, 0x4EF3, 0x932E, 0x932E, 0x254D, 0x932F, 0x932F, 0x1EA5,
+ 0x9330, 0x9331, 0x4EF5, 0x9332, 0x9332, 0x204C, 0x9333, 0x9333, 0x2080,
+ 0x9334, 0x9335, 0x4EF7, 0x9336, 0x9336, 0x266D, 0x9337, 0x9337, 0x4EF9,
+ 0x9338, 0x9338, 0x2537, 0x9339, 0x933D, 0x4EFA, 0x933E, 0x933E, 0x1D83,
+ 0x933F, 0x933F, 0x4EFF, 0x9340, 0x9340, 0x254A, 0x9341, 0x9341, 0x21B8,
+ 0x9342, 0x9342, 0x4F00, 0x9343, 0x9343, 0x254E, 0x9344, 0x9345, 0x4F01,
+ 0x9346, 0x9346, 0x24FC, 0x9347, 0x9347, 0x2554, 0x9348, 0x934A, 0x4F03,
+ 0x934B, 0x934B, 0x1F3C, 0x934C, 0x934C, 0x4F06, 0x934D, 0x934D, 0x1ED5,
+ 0x934E, 0x9353, 0x4F07, 0x9354, 0x9354, 0x2556, 0x9355, 0x9357, 0x4F0D,
+ 0x9358, 0x9358, 0x2268, 0x9359, 0x935A, 0x4F10, 0x935B, 0x935B, 0x1ED6,
+ 0x935C, 0x9363, 0x4F12, 0x9364, 0x9364, 0x2557, 0x9365, 0x9365, 0x2553,
+ 0x9366, 0x9368, 0x4F1A, 0x9369, 0x9369, 0x2548, 0x936A, 0x936A, 0x1D84,
+ 0x936B, 0x936B, 0x4F1D, 0x936C, 0x936C, 0x20DC, 0x936D, 0x936F, 0x4F1E,
+ 0x9370, 0x9370, 0x2559, 0x9371, 0x9374, 0x4F21, 0x9375, 0x9375, 0x1F97,
+ 0x9376, 0x9376, 0x2555, 0x9377, 0x9379, 0x4F25, 0x937A, 0x937A, 0x227D,
+ 0x937B, 0x937D, 0x4F28, 0x937E, 0x937E, 0x257E, 0x937F, 0x9381, 0x4F2B,
+ 0x9382, 0x9382, 0x207C, 0x9383, 0x9383, 0x4F2E, 0x9384, 0x9384, 0x255A,
+ 0x9385, 0x9386, 0x4F2F, 0x9387, 0x9387, 0x255E, 0x9388, 0x9389, 0x4F31,
+ 0x938A, 0x938A, 0x1E34, 0x938B, 0x938E, 0x4F33, 0x938F, 0x938F, 0x1D86,
+ 0x9390, 0x9395, 0x4F37, 0x9396, 0x9396, 0x215E, 0x9397, 0x9397, 0x4F3D,
+ 0x9398, 0x9398, 0x2560, 0x9399, 0x93A1, 0x4F3E, 0x93A2, 0x93A2, 0x21A2,
+ 0x93A3, 0x93A3, 0x2354, 0x93A4, 0x93A5, 0x4F47, 0x93A6, 0x93A6, 0x2563,
+ 0x93A7, 0x93A7, 0x2527, 0x93A8, 0x93A8, 0x4F49, 0x93A9, 0x93A9, 0x252E,
+ 0x93AA, 0x93AA, 0x2558, 0x93AB, 0x93AB, 0x4F4A, 0x93AC, 0x93AC, 0x1F1B,
+ 0x93AD, 0x93AD, 0x4F4B, 0x93AE, 0x93AE, 0x2283, 0x93AF, 0x93AF, 0x4F4C,
+ 0x93B0, 0x93B0, 0x2564, 0x93B1, 0x93B2, 0x4F4D, 0x93B3, 0x93B3, 0x20A0,
+ 0x93B4, 0x93B4, 0x4F4F, 0x93B5, 0x93B5, 0x2565, 0x93B6, 0x93B7, 0x4F50,
+ 0x93B8, 0x93B8, 0x2561, 0x93B9, 0x93BE, 0x4F52, 0x93BF, 0x93BF, 0x2562,
+ 0x93C0, 0x93C2, 0x4F58, 0x93C3, 0x93C3, 0x256C, 0x93C4, 0x93C6, 0x4F5B,
+ 0x93C7, 0x93C7, 0x256D, 0x93C8, 0x93C8, 0x2020, 0x93C9, 0x93C9, 0x4F5E,
+ 0x93CA, 0x93CA, 0x1D85, 0x93CB, 0x93CB, 0x4F5F, 0x93CC, 0x93CC, 0x255F,
+ 0x93CD, 0x93CD, 0x256A, 0x93CE, 0x93D0, 0x4F60, 0x93D1, 0x93D1, 0x256E,
+ 0x93D2, 0x93D5, 0x4F63, 0x93D6, 0x93D6, 0x1E01, 0x93D7, 0x93D7, 0x2539,
+ 0x93D8, 0x93D8, 0x255C, 0x93D9, 0x93DB, 0x4F67, 0x93DC, 0x93DD, 0x2568,
+ 0x93DE, 0x93DE, 0x256B, 0x93DF, 0x93DF, 0x1E6F, 0x93E0, 0x93E0, 0x4F6A,
+ 0x93E1, 0x93E1, 0x1FC4, 0x93E2, 0x93E2, 0x2567, 0x93E3, 0x93E3, 0x4F6B,
+ 0x93E4, 0x93E4, 0x255B, 0x93E5, 0x93E7, 0x4F6C, 0x93E8, 0x93E8, 0x261D,
+ 0x93E9, 0x93F4, 0x4F6F, 0x93F5, 0x93F5, 0x252B, 0x93F6, 0x93F6, 0x4F7B,
+ 0x93F7, 0x93F7, 0x2571, 0x93F8, 0x93F8, 0x4F7C, 0x93F9, 0x93F9, 0x2577,
+ 0x93FA, 0x93FF, 0x4F7D, 0x9400, 0x9402, 0x4F83, 0x9403, 0x9403, 0x2522,
+ 0x9404, 0x940A, 0x4F86, 0x940B, 0x940B, 0x2533, 0x940C, 0x940F, 0x4F8D,
+ 0x9410, 0x9410, 0x202A, 0x9411, 0x9411, 0x4F91, 0x9412, 0x9412, 0x2536,
+ 0x9413, 0x9413, 0x2573, 0x9414, 0x9414, 0x256F, 0x9415, 0x9417, 0x4F92,
+ 0x9418, 0x9418, 0x2293, 0x9419, 0x9419, 0x2578, 0x941A, 0x941C, 0x4F95,
+ 0x941D, 0x941D, 0x2570, 0x941E, 0x941F, 0x4F98, 0x9420, 0x9420, 0x2575,
+ 0x9421, 0x9425, 0x4F9A, 0x9426, 0x9427, 0x2541, 0x9428, 0x9428, 0x255D,
+ 0x9429, 0x942D, 0x4F9F, 0x942E, 0x942E, 0x201A, 0x942F, 0x9431, 0x4FA4,
+ 0x9432, 0x9432, 0x257A, 0x9433, 0x9433, 0x2006, 0x9434, 0x9434, 0x4FA7,
+ 0x9435, 0x9435, 0x2177, 0x9436, 0x9437, 0x4FA8, 0x9438, 0x9438, 0x251B,
+ 0x9439, 0x9439, 0x4FAA, 0x943A, 0x943A, 0x2524, 0x943B, 0x943D, 0x4FAB,
+ 0x943E, 0x943E, 0x1D87, 0x943F, 0x943F, 0x257B, 0x9440, 0x9443, 0x4FAE,
+ 0x9444, 0x9444, 0x22A3, 0x9445, 0x9449, 0x4FB2, 0x944A, 0x944A, 0x2579,
+ 0x944B, 0x944B, 0x4FB7, 0x944C, 0x944C, 0x2566, 0x944D, 0x9451, 0x4FB8,
+ 0x9452, 0x9452, 0x1F93, 0x9453, 0x9453, 0x4FBD, 0x9454, 0x9454, 0x257C,
+ 0x9455, 0x945F, 0x4FBE, 0x9460, 0x9460, 0x2514, 0x9461, 0x9462, 0x4FC9,
+ 0x9463, 0x9463, 0x257D, 0x9464, 0x9464, 0x4FCB, 0x9465, 0x9465, 0x2572,
+ 0x9466, 0x946A, 0x4FCC, 0x946B, 0x946B, 0x1D88, 0x946C, 0x946C, 0x4FD1,
+ 0x946D, 0x946D, 0x2574, 0x946E, 0x946F, 0x4FD2, 0x9470, 0x9470, 0x224E,
+ 0x9471, 0x9471, 0x4FD4, 0x9472, 0x9472, 0x21C6, 0x9473, 0x9476, 0x4FD5,
+ 0x9477, 0x9477, 0x209F, 0x9478, 0x9478, 0x4FD9, 0x9479, 0x9479, 0x2576,
+ 0x947A, 0x947B, 0x4FDA, 0x947C, 0x947C, 0x2064, 0x947D, 0x947D, 0x22BF,
+ 0x947E, 0x947E, 0x261C, 0x947F, 0x947F, 0x225E, 0x9480, 0x9484, 0x4FDC,
+ 0x9485, 0x9487, 0x1A8E, 0x9488, 0x9488, 0x118C, 0x9489, 0x9489, 0x05E3,
+ 0x948A, 0x948A, 0x1A92, 0x948B, 0x948B, 0x1A91, 0x948C, 0x948D, 0x1A93,
+ 0x948E, 0x948E, 0x0C22, 0x948F, 0x9490, 0x1A95, 0x9491, 0x9491, 0x4FE1,
+ 0x9492, 0x9492, 0x064D, 0x9493, 0x9493, 0x05D7, 0x9494, 0x9494, 0x1A97,
+ 0x9495, 0x9495, 0x1A99, 0x9496, 0x9496, 0x4FE2, 0x9497, 0x9497, 0x1A98,
+ 0x9498, 0x9498, 0x4FE3, 0x9499, 0x9499, 0x06C1, 0x949A, 0x949C, 0x1A9A,
+ 0x949D, 0x949D, 0x061A, 0x949E, 0x949E, 0x04D3, 0x949F, 0x949F, 0x11D2,
+ 0x94A0, 0x94A0, 0x0B29, 0x94A1, 0x94A1, 0x041E, 0x94A2, 0x94A2, 0x06D1,
+ 0x94A3, 0x94A4, 0x1A9D, 0x94A5, 0x94A5, 0x1102, 0x94A6, 0x94A6, 0x0C52,
+ 0x94A7, 0x94A7, 0x092A, 0x94A8, 0x94A8, 0x0EE8, 0x94A9, 0x94A9, 0x070C,
+ 0x94AA, 0x94AA, 0x1AA0, 0x94AB, 0x94AB, 0x1A9F, 0x94AC, 0x94AC, 0x1AA2,
+ 0x94AD, 0x94AD, 0x1AA1, 0x94AE, 0x94AE, 0x0B66, 0x94AF, 0x94B0, 0x1AA3,
+ 0x94B1, 0x94B1, 0x0C2B, 0x94B2, 0x94B2, 0x1AA5, 0x94B3, 0x94B3, 0x0C2C,
+ 0x94B4, 0x94B4, 0x1AA6, 0x94B5, 0x94B5, 0x046E, 0x94B6, 0x94BA, 0x1AA7,
+ 0x94BB, 0x94BB, 0x1247, 0x94BC, 0x94BD, 0x1AAC, 0x94BE, 0x94BE, 0x084B,
+ 0x94BF, 0x94BF, 0x1AAE, 0x94C0, 0x94C0, 0x10B0, 0x94C1, 0x94C1, 0x0E4D,
+ 0x94C2, 0x94C2, 0x0473, 0x94C3, 0x94C3, 0x0A2E, 0x94C4, 0x94C4, 0x1AAF,
+ 0x94C5, 0x94C5, 0x0C23, 0x94C6, 0x94C6, 0x0AB2, 0x94C7, 0x94C7, 0x4FE4,
+ 0x94C8, 0x94CE, 0x1AB0, 0x94CF, 0x94CF, 0x4FE5, 0x94D0, 0x94D2, 0x1AB7,
+ 0x94D3, 0x94D4, 0x4FE6, 0x94D5, 0x94D7, 0x1ABA, 0x94D8, 0x94D8, 0x1ABE,
+ 0x94D9, 0x94D9, 0x1ABD, 0x94DA, 0x94DA, 0x4FE8, 0x94DB, 0x94DB, 0x1ABF,
+ 0x94DC, 0x94DC, 0x0E5E, 0x94DD, 0x94DD, 0x0A68, 0x94DE, 0x94E0, 0x1AC0,
+ 0x94E1, 0x94E1, 0x1142, 0x94E2, 0x94E2, 0x1AC3, 0x94E3, 0x94E3, 0x0F20,
+ 0x94E4, 0x94E5, 0x1AC4, 0x94E6, 0x94E6, 0x4FE9, 0x94E7, 0x94E8, 0x1AC6,
+ 0x94E9, 0x94E9, 0x1AC9, 0x94EA, 0x94EA, 0x1AC8, 0x94EB, 0x94EB, 0x1ACA,
+ 0x94EC, 0x94EC, 0x06F0, 0x94ED, 0x94ED, 0x0AFF, 0x94EE, 0x94EF, 0x1ACB,
+ 0x94F0, 0x94F0, 0x0893, 0x94F1, 0x94F1, 0x1046, 0x94F2, 0x94F2, 0x04C0,
+ 0x94F3, 0x94F5, 0x1ACD, 0x94F6, 0x94F6, 0x107F, 0x94F7, 0x94F7, 0x1AD0,
+ 0x94F8, 0x94F8, 0x11FC, 0x94F9, 0x94F9, 0x1AD1, 0x94FA, 0x94FA, 0x0BEB,
+ 0x94FB, 0x94FB, 0x4FEA, 0x94FC, 0x94FD, 0x1AD2, 0x94FE, 0x94FE, 0x09FD,
+ 0x94FF, 0x94FF, 0x1AD4, 0x9500, 0x9500, 0x0F67, 0x9501, 0x9501, 0x0DED,
+ 0x9502, 0x9502, 0x1AD6, 0x9503, 0x9503, 0x1AD5, 0x9504, 0x9504, 0x051F,
+ 0x9505, 0x9505, 0x0751, 0x9506, 0x9507, 0x1AD7, 0x9508, 0x9508, 0x0FAD,
+ 0x9509, 0x950A, 0x1AD9, 0x950B, 0x950B, 0x0683, 0x950C, 0x950C, 0x0F8A,
+ 0x950D, 0x950F, 0x1ADB, 0x9510, 0x9510, 0x0CCC, 0x9511, 0x9511, 0x0E33,
+ 0x9512, 0x9516, 0x1ADE, 0x9517, 0x9517, 0x1181, 0x9518, 0x9518, 0x1AE3,
+ 0x9519, 0x9519, 0x0570, 0x951A, 0x951A, 0x0AAF, 0x951B, 0x951B, 0x1AE4,
+ 0x951C, 0x951C, 0x4FEB, 0x951D, 0x951F, 0x1AE5, 0x9520, 0x9520, 0x4FEC,
+ 0x9521, 0x9521, 0x0F0C, 0x9522, 0x9522, 0x1AE8, 0x9523, 0x9523, 0x0A87,
+ 0x9524, 0x9524, 0x053B, 0x9525, 0x9525, 0x1213, 0x9526, 0x9526, 0x08C6,
+ 0x9527, 0x9527, 0x4FED, 0x9528, 0x9528, 0x0F34, 0x9529, 0x9529, 0x1AEB,
+ 0x952A, 0x952B, 0x1AE9, 0x952C, 0x952C, 0x1AEC, 0x952D, 0x952D, 0x05E6,
+ 0x952E, 0x952E, 0x086F, 0x952F, 0x952F, 0x0911, 0x9530, 0x9530, 0x0AD1,
+ 0x9531, 0x9532, 0x1AED, 0x9533, 0x9533, 0x4FEE, 0x9534, 0x9534, 0x1AEF,
+ 0x9535, 0x9535, 0x1AF7, 0x9536, 0x9538, 0x1AF0, 0x9539, 0x9539, 0x0C3F,
+ 0x953A, 0x953A, 0x1B19, 0x953B, 0x953B, 0x060C, 0x953C, 0x953C, 0x1AF3,
+ 0x953D, 0x953D, 0x4FEF, 0x953E, 0x953F, 0x1AF4, 0x9540, 0x9540, 0x0605,
+ 0x9541, 0x9541, 0x0AC3, 0x9542, 0x9542, 0x1AF6, 0x9543, 0x9543, 0x4FF0,
+ 0x9544, 0x9546, 0x1AF8, 0x9547, 0x9547, 0x1193, 0x9548, 0x9548, 0x4FF1,
+ 0x9549, 0x9549, 0x1AFB, 0x954A, 0x954A, 0x0B5A, 0x954B, 0x954B, 0x4FF2,
+ 0x954C, 0x954C, 0x1AFC, 0x954D, 0x954D, 0x0B5B, 0x954E, 0x954F, 0x1AFD,
+ 0x9550, 0x9550, 0x06DF, 0x9551, 0x9551, 0x0402, 0x9552, 0x9554, 0x1AFF,
+ 0x9555, 0x9555, 0x4FF3, 0x9556, 0x9559, 0x1B02, 0x955A, 0x955A, 0x4FF4,
+ 0x955B, 0x955B, 0x1B06, 0x955C, 0x955C, 0x08E4, 0x955D, 0x955D, 0x1B09,
+ 0x955E, 0x955F, 0x1B07, 0x9560, 0x9560, 0x4FF5, 0x9561, 0x9562, 0x1B0A,
+ 0x9563, 0x9563, 0x0A16, 0x9564, 0x956C, 0x1B0C, 0x956D, 0x956D, 0x09C3,
+ 0x956E, 0x956E, 0x4FF6, 0x956F, 0x956F, 0x1B15, 0x9570, 0x9570, 0x09F6,
+ 0x9571, 0x9573, 0x1B16, 0x9574, 0x9575, 0x4FF7, 0x9576, 0x9576, 0x0F4F,
+ 0x9577, 0x9577, 0x1E75, 0x9578, 0x957E, 0x4FF9, 0x957F, 0x957F, 0x04C9,
+ 0x9580, 0x9580, 0x207D, 0x9581, 0x9581, 0x5000, 0x9582, 0x9582, 0x23BF,
+ 0x9583, 0x9583, 0x2113, 0x9584, 0x9585, 0x5001, 0x9586, 0x9586, 0x23C0,
+ 0x9587, 0x9588, 0x5003, 0x9589, 0x9589, 0x1E45, 0x958A, 0x958A, 0x5005,
+ 0x958B, 0x958B, 0x1FD8, 0x958C, 0x958C, 0x23C4, 0x958D, 0x958D, 0x5006,
+ 0x958E, 0x958E, 0x23C2, 0x958F, 0x958F, 0x2104, 0x9590, 0x9590, 0x5007,
+ 0x9591, 0x9591, 0x21BD, 0x9592, 0x9592, 0x5008, 0x9593, 0x9593, 0x1F87,
+ 0x9594, 0x9594, 0x23C3, 0x9595, 0x9597, 0x5009, 0x9598, 0x9598, 0x2269,
+ 0x9599, 0x95A0, 0x500C, 0x95A1, 0x95A1, 0x1F43, 0x95A2, 0x95A2, 0x5014,
+ 0x95A3, 0x95A3, 0x1F1E, 0x95A4, 0x95A4, 0x2679, 0x95A5, 0x95A5, 0x1EEB,
+ 0x95A6, 0x95A7, 0x5015, 0x95A8, 0x95A8, 0x1F35, 0x95A9, 0x95A9, 0x208A,
+ 0x95AA, 0x95AA, 0x5017, 0x95AB, 0x95AB, 0x23C7, 0x95AC, 0x95AC, 0x23C9,
+ 0x95AD, 0x95AD, 0x23C6, 0x95AE, 0x95B1, 0x5018, 0x95B2, 0x95B2, 0x224F,
+ 0x95B3, 0x95B5, 0x501C, 0x95B6, 0x95B6, 0x23CB, 0x95B7, 0x95B8, 0x501F,
+ 0x95B9, 0x95B9, 0x21F3, 0x95BA, 0x95BA, 0x5021, 0x95BB, 0x95BB, 0x21F7,
+ 0x95BC, 0x95BC, 0x23CF, 0x95BD, 0x95BD, 0x23CE, 0x95BE, 0x95BE, 0x23CA,
+ 0x95BF, 0x95BF, 0x23CD, 0x95C0, 0x95C2, 0x5022, 0x95C3, 0x95C3, 0x23D0,
+ 0x95C4, 0x95C5, 0x5025, 0x95C6, 0x95C6, 0x266C, 0x95C7, 0x95C7, 0x5027,
+ 0x95C8, 0x95C8, 0x23C1, 0x95C9, 0x95C9, 0x5028, 0x95CA, 0x95CA, 0x1FEE,
+ 0x95CB, 0x95CB, 0x23D1, 0x95CC, 0x95CC, 0x1FF8, 0x95CD, 0x95CF, 0x5029,
+ 0x95D0, 0x95D0, 0x23D3, 0x95D1, 0x95D3, 0x502C, 0x95D4, 0x95D4, 0x23D2,
+ 0x95D5, 0x95D5, 0x23D4, 0x95D6, 0x95D6, 0x1E98, 0x95D7, 0x95DB, 0x502F,
+ 0x95DC, 0x95DC, 0x1F2C, 0x95DD, 0x95DD, 0x5034, 0x95DE, 0x95DE, 0x23D5,
+ 0x95DF, 0x95E0, 0x5035, 0x95E1, 0x95E1, 0x1E71, 0x95E2, 0x95E2, 0x2691,
+ 0x95E3, 0x95E4, 0x5037, 0x95E5, 0x95E5, 0x23C5, 0x95E6, 0x95E7, 0x5039,
+ 0x95E8, 0x95E8, 0x0ACA, 0x95E9, 0x95E9, 0x1685, 0x95EA, 0x95EA, 0x0CFA,
+ 0x95EB, 0x95EB, 0x1686, 0x95EC, 0x95EC, 0x503B, 0x95ED, 0x95ED, 0x043E,
+ 0x95EE, 0x95EE, 0x0ED9, 0x95EF, 0x95EF, 0x0536, 0x95F0, 0x95F0, 0x0CCD,
+ 0x95F1, 0x95F1, 0x1687, 0x95F2, 0x95F2, 0x0F3D, 0x95F3, 0x95F3, 0x1688,
+ 0x95F4, 0x95F4, 0x0857, 0x95F5, 0x95F6, 0x1689, 0x95F7, 0x95F7, 0x0ACB,
+ 0x95F8, 0x95F8, 0x1143, 0x95F9, 0x95F9, 0x0B39, 0x95FA, 0x95FA, 0x0744,
+ 0x95FB, 0x95FB, 0x0ED4, 0x95FC, 0x95FC, 0x168B, 0x95FD, 0x95FD, 0x0AFB,
+ 0x95FE, 0x95FE, 0x168C, 0x95FF, 0x95FF, 0x503C, 0x9600, 0x9600, 0x0644,
+ 0x9601, 0x9601, 0x06EE, 0x9602, 0x9602, 0x0789, 0x9603, 0x9604, 0x168D,
+ 0x9605, 0x9605, 0x1107, 0x9606, 0x9606, 0x168F, 0x9607, 0x9607, 0x503D,
+ 0x9608, 0x9608, 0x1690, 0x9609, 0x9609, 0x0FF4, 0x960A, 0x960D, 0x1691,
+ 0x960E, 0x960E, 0x0FFF, 0x960F, 0x960F, 0x1695, 0x9610, 0x9610, 0x04C2,
+ 0x9611, 0x9611, 0x09A6, 0x9612, 0x9612, 0x1696, 0x9613, 0x9613, 0x503E,
+ 0x9614, 0x9614, 0x0996, 0x9615, 0x9617, 0x1697, 0x9618, 0x9618, 0x503F,
+ 0x9619, 0x961A, 0x169A, 0x961B, 0x961B, 0x5040, 0x961C, 0x961C, 0x06B2,
+ 0x961D, 0x961D, 0x1354, 0x961E, 0x961E, 0x5041, 0x961F, 0x961F, 0x0612,
+ 0x9620, 0x9620, 0x5042, 0x9621, 0x9621, 0x1356, 0x9622, 0x9622, 0x1355,
+ 0x9623, 0x9629, 0x5043, 0x962A, 0x962A, 0x1358, 0x962B, 0x962D, 0x504A,
+ 0x962E, 0x962E, 0x0CC9, 0x962F, 0x9630, 0x504D, 0x9631, 0x9631, 0x1357,
+ 0x9632, 0x9632, 0x065D, 0x9633, 0x9633, 0x101D, 0x9634, 0x9634, 0x107C,
+ 0x9635, 0x9635, 0x1194, 0x9636, 0x9636, 0x08A8, 0x9637, 0x963A, 0x504F,
+ 0x963B, 0x963B, 0x1245, 0x963C, 0x963C, 0x135A, 0x963D, 0x963D, 0x1359,
+ 0x963E, 0x963E, 0x5053, 0x963F, 0x963F, 0x03AD, 0x9640, 0x9640, 0x0E84,
+ 0x9641, 0x9641, 0x5054, 0x9642, 0x9642, 0x135B, 0x9643, 0x9643, 0x5055,
+ 0x9644, 0x9644, 0x06B8, 0x9645, 0x9645, 0x083D, 0x9646, 0x9646, 0x0A64,
+ 0x9647, 0x9647, 0x0A4B, 0x9648, 0x9648, 0x04E7, 0x9649, 0x9649, 0x135C,
+ 0x964A, 0x964A, 0x5056, 0x964B, 0x964B, 0x0A51, 0x964C, 0x964C, 0x0B13,
+ 0x964D, 0x964D, 0x0886, 0x964E, 0x964F, 0x5057, 0x9650, 0x9650, 0x0F4B,
+ 0x9651, 0x9653, 0x5059, 0x9654, 0x9654, 0x135D, 0x9655, 0x9655, 0x0CFB,
+ 0x9656, 0x9657, 0x505C, 0x9658, 0x9658, 0x231A, 0x9659, 0x965A, 0x505E,
+ 0x965B, 0x965B, 0x0446, 0x965C, 0x965C, 0x5060, 0x965D, 0x965D, 0x2114,
+ 0x965E, 0x965E, 0x5061, 0x965F, 0x965F, 0x135E, 0x9660, 0x9660, 0x5062,
+ 0x9661, 0x9661, 0x05F7, 0x9662, 0x9662, 0x10FD, 0x9663, 0x9663, 0x2284,
+ 0x9664, 0x9664, 0x0522, 0x9665, 0x9666, 0x5063, 0x9667, 0x9667, 0x135F,
+ 0x9668, 0x9668, 0x110C, 0x9669, 0x9669, 0x0F42, 0x966A, 0x966A, 0x0BA4,
+ 0x966B, 0x966B, 0x5065, 0x966C, 0x966C, 0x1360, 0x966D, 0x966F, 0x5066,
+ 0x9670, 0x9670, 0x221C, 0x9671, 0x9671, 0x5069, 0x9672, 0x9672, 0x1361,
+ 0x9673, 0x9673, 0x1E7E, 0x9674, 0x9674, 0x1362, 0x9675, 0x9675, 0x0A33,
+ 0x9676, 0x9676, 0x0E28, 0x9677, 0x9677, 0x0F4A, 0x9678, 0x9678, 0x204D,
+ 0x9679, 0x967C, 0x506A, 0x967D, 0x967D, 0x2201, 0x967E, 0x9684, 0x506E,
+ 0x9685, 0x9685, 0x10CC, 0x9686, 0x9686, 0x0A48, 0x9687, 0x9687, 0x5075,
+ 0x9688, 0x9688, 0x1363, 0x9689, 0x9689, 0x5076, 0x968A, 0x968A, 0x1ED9,
+ 0x968B, 0x968B, 0x0DDA, 0x968C, 0x968C, 0x5077, 0x968D, 0x968D, 0x1364,
+ 0x968E, 0x968E, 0x1FB2, 0x968F, 0x968F, 0x0DDB, 0x9690, 0x9690, 0x1085,
+ 0x9691, 0x9693, 0x5078, 0x9694, 0x9694, 0x06EF, 0x9695, 0x9695, 0x2252,
+ 0x9696, 0x9696, 0x507B, 0x9697, 0x9697, 0x1365, 0x9698, 0x9698, 0x03BA,
+ 0x9699, 0x9699, 0x0F23, 0x969A, 0x969A, 0x507C, 0x969B, 0x969B, 0x1F79,
+ 0x969C, 0x969C, 0x1170, 0x969D, 0x96A6, 0x507D, 0x96A7, 0x96A7, 0x0DE2,
+ 0x96A8, 0x96A8, 0x2157, 0x96A9, 0x96A9, 0x5087, 0x96AA, 0x96AA, 0x21BF,
+ 0x96AB, 0x96AF, 0x5088, 0x96B0, 0x96B0, 0x1366, 0x96B1, 0x96B1, 0x221F,
+ 0x96B2, 0x96B2, 0x508D, 0x96B3, 0x96B3, 0x1684, 0x96B4, 0x96B4, 0x203D,
+ 0x96B5, 0x96B5, 0x508E, 0x96B6, 0x96B6, 0x09EE, 0x96B7, 0x96B7, 0x508F,
+ 0x96B8, 0x96B8, 0x2015, 0x96B9, 0x96B9, 0x1D79, 0x96BA, 0x96BA, 0x5090,
+ 0x96BB, 0x96BB, 0x26A5, 0x96BC, 0x96BD, 0x1D7A, 0x96BE, 0x96BE, 0x0B34,
+ 0x96BF, 0x96BF, 0x5091, 0x96C0, 0x96C0, 0x0C93, 0x96C1, 0x96C1, 0x100C,
+ 0x96C2, 0x96C3, 0x5092, 0x96C4, 0x96C4, 0x0FA6, 0x96C5, 0x96C5, 0x0FEE,
+ 0x96C6, 0x96C6, 0x0822, 0x96C7, 0x96C7, 0x0726, 0x96C8, 0x96C8, 0x5094,
+ 0x96C9, 0x96C9, 0x1B1C, 0x96CA, 0x96CB, 0x5095, 0x96CC, 0x96CC, 0x0549,
+ 0x96CD, 0x96CD, 0x109F, 0x96CE, 0x96CE, 0x1D7C, 0x96CF, 0x96CF, 0x0520,
+ 0x96D0, 0x96D1, 0x5097, 0x96D2, 0x96D2, 0x1D7D, 0x96D3, 0x96D4, 0x5099,
+ 0x96D5, 0x96D5, 0x05D2, 0x96D6, 0x96D6, 0x2156, 0x96D7, 0x96D8, 0x509B,
+ 0x96D9, 0x96D9, 0x2144, 0x96DA, 0x96DA, 0x509D, 0x96DB, 0x96DB, 0x1E91,
+ 0x96DC, 0x96DC, 0x2257, 0x96DD, 0x96DF, 0x509E, 0x96E0, 0x96E0, 0x1D7F,
+ 0x96E1, 0x96E1, 0x50A1, 0x96E2, 0x96E2, 0x200A, 0x96E3, 0x96E3, 0x2092,
+ 0x96E4, 0x96E7, 0x50A2, 0x96E8, 0x96E8, 0x10CF, 0x96E9, 0x96E9, 0x1D61,
+ 0x96EA, 0x96EA, 0x0FD2, 0x96EB, 0x96EE, 0x50A6, 0x96EF, 0x96EF, 0x1D63,
+ 0x96F0, 0x96F1, 0x50AA, 0x96F2, 0x96F2, 0x2250, 0x96F3, 0x96F3, 0x1D62,
+ 0x96F4, 0x96F5, 0x50AC, 0x96F6, 0x96F6, 0x0A2C, 0x96F7, 0x96F7, 0x09C2,
+ 0x96F8, 0x96F8, 0x50AE, 0x96F9, 0x96F9, 0x040B, 0x96FA, 0x96FA, 0x50AF,
+ 0x96FB, 0x96FB, 0x1EC3, 0x96FC, 0x96FD, 0x50B0, 0x96FE, 0x96FE, 0x0EFC,
+ 0x96FF, 0x96FF, 0x50B2, 0x9700, 0x9700, 0x0FB3, 0x9701, 0x9701, 0x1D65,
+ 0x9702, 0x9703, 0x50B3, 0x9704, 0x9704, 0x0F63, 0x9705, 0x9705, 0x50B5,
+ 0x9706, 0x9706, 0x1D64, 0x9707, 0x9707, 0x1191, 0x9708, 0x9708, 0x1D66,
+ 0x9709, 0x9709, 0x0ABE, 0x970A, 0x970C, 0x50B6, 0x970D, 0x970D, 0x0809,
+ 0x970E, 0x970E, 0x1D68, 0x970F, 0x970F, 0x1D67, 0x9710, 0x9712, 0x50B9,
+ 0x9713, 0x9713, 0x0B41, 0x9714, 0x9715, 0x50BC, 0x9716, 0x9716, 0x0A21,
+ 0x9717, 0x971B, 0x50BE, 0x971C, 0x971C, 0x0D9F, 0x971D, 0x971D, 0x50C3,
+ 0x971E, 0x971E, 0x0F29, 0x971F, 0x9726, 0x50C4, 0x9727, 0x9727, 0x21A8,
+ 0x9728, 0x9729, 0x50CC, 0x972A, 0x972A, 0x1D69, 0x972B, 0x972C, 0x50CE,
+ 0x972D, 0x972D, 0x1D6A, 0x972E, 0x972F, 0x50D0, 0x9730, 0x9730, 0x1D6B,
+ 0x9731, 0x9731, 0x50D2, 0x9732, 0x9732, 0x0A5D, 0x9733, 0x9737, 0x50D3,
+ 0x9738, 0x9738, 0x03DF, 0x9739, 0x9739, 0x0BBA, 0x973A, 0x973C, 0x50D8,
+ 0x973D, 0x973D, 0x260D, 0x973E, 0x973E, 0x1D6C, 0x973F, 0x9741, 0x50DB,
+ 0x9742, 0x9742, 0x260C, 0x9743, 0x9743, 0x50DE, 0x9744, 0x9744, 0x260E,
+ 0x9745, 0x9747, 0x50DF, 0x9748, 0x9748, 0x2032, 0x9749, 0x9751, 0x50E2,
+ 0x9752, 0x9752, 0x0C5D, 0x9753, 0x9753, 0x1D60, 0x9754, 0x9755, 0x50EB,
+ 0x9756, 0x9756, 0x08E7, 0x9757, 0x9758, 0x50ED, 0x9759, 0x9759, 0x08E1,
+ 0x975A, 0x975A, 0x260B, 0x975B, 0x975B, 0x05C6, 0x975C, 0x975D, 0x50EF,
+ 0x975E, 0x975E, 0x0664, 0x975F, 0x975F, 0x50F1, 0x9760, 0x9760, 0x094C,
+ 0x9761, 0x9761, 0x0AD7, 0x9762, 0x9762, 0x0AEB, 0x9763, 0x9764, 0x50F2,
+ 0x9765, 0x9765, 0x1282, 0x9766, 0x9767, 0x50F4, 0x9768, 0x9768, 0x22C3,
+ 0x9769, 0x9769, 0x06EA, 0x976A, 0x9772, 0x50F6, 0x9773, 0x9773, 0x08CA,
+ 0x9774, 0x9774, 0x0FCE, 0x9775, 0x9775, 0x50FF, 0x9776, 0x9776, 0x03DB,
+ 0x9777, 0x977B, 0x5100, 0x977C, 0x977C, 0x1DC8, 0x977D, 0x9784, 0x5105,
+ 0x9785, 0x9785, 0x1DC9, 0x9786, 0x978A, 0x510D, 0x978B, 0x978B, 0x0F77,
+ 0x978C, 0x978C, 0x5112, 0x978D, 0x978D, 0x03BB, 0x978E, 0x978E, 0x5113,
+ 0x978F, 0x978F, 0x1F23, 0x9790, 0x9790, 0x5114, 0x9791, 0x9792, 0x1DCA,
+ 0x9793, 0x9793, 0x5115, 0x9794, 0x9794, 0x1DCC, 0x9795, 0x9797, 0x5116,
+ 0x9798, 0x9798, 0x0C47, 0x9799, 0x979F, 0x5119, 0x97A0, 0x97A0, 0x08FE,
+ 0x97A1, 0x97A2, 0x5120, 0x97A3, 0x97A3, 0x1DCF, 0x97A4, 0x97A5, 0x5122,
+ 0x97A6, 0x97A6, 0x2695, 0x97A7, 0x97AA, 0x5124, 0x97AB, 0x97AB, 0x1DCE,
+ 0x97AC, 0x97AC, 0x5128, 0x97AD, 0x97AD, 0x0447, 0x97AE, 0x97AE, 0x5129,
+ 0x97AF, 0x97AF, 0x1DCD, 0x97B0, 0x97B1, 0x512A, 0x97B2, 0x97B2, 0x1DD0,
+ 0x97B3, 0x97B3, 0x512C, 0x97B4, 0x97B4, 0x1DD1, 0x97B5, 0x97BC, 0x512D,
+ 0x97BD, 0x97BD, 0x265E, 0x97BE, 0x97C2, 0x5135, 0x97C3, 0x97C3, 0x265D,
+ 0x97C4, 0x97C5, 0x513A, 0x97C6, 0x97C6, 0x2692, 0x97C7, 0x97C8, 0x513C,
+ 0x97C9, 0x97C9, 0x265F, 0x97CA, 0x97CA, 0x513E, 0x97CB, 0x97CB, 0x218D,
+ 0x97CC, 0x97CC, 0x20FD, 0x97CD, 0x97D2, 0x513F, 0x97D3, 0x97D3, 0x1F40,
+ 0x97D4, 0x97D8, 0x5145, 0x97D9, 0x97D9, 0x2465, 0x97DA, 0x97DB, 0x514A,
+ 0x97DC, 0x97DC, 0x2467, 0x97DD, 0x97DD, 0x514C, 0x97DE, 0x97DE, 0x2466,
+ 0x97DF, 0x97E5, 0x514D, 0x97E6, 0x97E6, 0x0EB3, 0x97E7, 0x97E7, 0x0CA8,
+ 0x97E8, 0x97E8, 0x5154, 0x97E9, 0x97E9, 0x0762, 0x97EA, 0x97EC, 0x184E,
+ 0x97ED, 0x97ED, 0x08F1, 0x97EE, 0x97F2, 0x5155, 0x97F3, 0x97F3, 0x107B,
+ 0x97F4, 0x97F4, 0x515A, 0x97F5, 0x97F5, 0x1112, 0x97F6, 0x97F6, 0x0D11,
+ 0x97F7, 0x97FE, 0x515B, 0x97FF, 0x97FF, 0x21C9, 0x9800, 0x9800, 0x5163,
+ 0x9801, 0x9801, 0x2209, 0x9802, 0x9802, 0x1EC9, 0x9803, 0x9803, 0x20E9,
+ 0x9804, 0x9804, 0x5164, 0x9805, 0x9805, 0x21CA, 0x9806, 0x9806, 0x2146,
+ 0x9807, 0x9807, 0x25C5, 0x9808, 0x9808, 0x21DC, 0x9809, 0x9809, 0x5165,
+ 0x980A, 0x980A, 0x245E, 0x980B, 0x980B, 0x5166, 0x980C, 0x980C, 0x214F,
+ 0x980D, 0x980D, 0x5167, 0x980E, 0x980F, 0x25C6, 0x9810, 0x9810, 0x2241,
+ 0x9811, 0x9811, 0x218A, 0x9812, 0x9812, 0x1E2F, 0x9813, 0x9813, 0x1EDC,
+ 0x9814, 0x9816, 0x5168, 0x9817, 0x9817, 0x20BF, 0x9818, 0x9818, 0x2034,
+ 0x9819, 0x981B, 0x516B, 0x981C, 0x981C, 0x25C9, 0x981D, 0x9820, 0x516E,
+ 0x9821, 0x9821, 0x25C8, 0x9822, 0x9823, 0x5172, 0x9824, 0x9824, 0x220E,
+ 0x9825, 0x9825, 0x5174, 0x9826, 0x9826, 0x25CB, 0x9827, 0x982C, 0x5175,
+ 0x982D, 0x982D, 0x217D, 0x982E, 0x982F, 0x517B, 0x9830, 0x9830, 0x1F7E,
+ 0x9831, 0x9836, 0x517D, 0x9837, 0x9837, 0x25CC, 0x9838, 0x9838, 0x1FC3,
+ 0x9839, 0x983A, 0x5183, 0x983B, 0x983B, 0x20B9, 0x983C, 0x983C, 0x5185,
+ 0x983D, 0x983D, 0x2181, 0x983E, 0x9845, 0x5186, 0x9846, 0x9846, 0x1FDA,
+ 0x9847, 0x984B, 0x518E, 0x984C, 0x984C, 0x2173, 0x984D, 0x984D, 0x1EE1,
+ 0x984E, 0x984E, 0x25CD, 0x984F, 0x9852, 0x5193, 0x9853, 0x9853, 0x25CE,
+ 0x9854, 0x9854, 0x21F6, 0x9855, 0x9857, 0x5197, 0x9858, 0x9858, 0x224B,
+ 0x9859, 0x9859, 0x25D1, 0x985A, 0x985A, 0x519A, 0x985B, 0x985B, 0x1EC0,
+ 0x985C, 0x985D, 0x519B, 0x985E, 0x985E, 0x2008, 0x985F, 0x9861, 0x519D,
+ 0x9862, 0x9862, 0x25D0, 0x9863, 0x9864, 0x51A0, 0x9865, 0x9865, 0x25D2,
+ 0x9866, 0x9866, 0x51A2, 0x9867, 0x9867, 0x1F2A, 0x9868, 0x986A, 0x51A3,
+ 0x986B, 0x986B, 0x1E72, 0x986C, 0x986C, 0x25D3, 0x986D, 0x986E, 0x51A6,
+ 0x986F, 0x986F, 0x21BE, 0x9870, 0x9870, 0x25D4, 0x9871, 0x9871, 0x2044,
+ 0x9872, 0x9872, 0x51A8, 0x9873, 0x9873, 0x25CF, 0x9874, 0x9874, 0x20F3,
+ 0x9875, 0x9875, 0x103A, 0x9876, 0x9876, 0x05E4, 0x9877, 0x9877, 0x0C67,
+ 0x9878, 0x9878, 0x1BE0, 0x9879, 0x9879, 0x0F5B, 0x987A, 0x987A, 0x0DA8,
+ 0x987B, 0x987B, 0x0FB6, 0x987C, 0x987C, 0x1827, 0x987D, 0x987D, 0x0E98,
+ 0x987E, 0x987E, 0x0724, 0x987F, 0x987F, 0x0618, 0x9880, 0x9880, 0x1BE1,
+ 0x9881, 0x9881, 0x03EF, 0x9882, 0x9882, 0x0DC1, 0x9883, 0x9883, 0x1BE2,
+ 0x9884, 0x9884, 0x10E7, 0x9885, 0x9885, 0x0A54, 0x9886, 0x9886, 0x0A35,
+ 0x9887, 0x9887, 0x0BE3, 0x9888, 0x9888, 0x08E0, 0x9889, 0x9889, 0x1BE3,
+ 0x988A, 0x988A, 0x0848, 0x988B, 0x988B, 0x51A9, 0x988C, 0x988D, 0x1BE4,
+ 0x988E, 0x988E, 0x51AA, 0x988F, 0x988F, 0x1BE6, 0x9890, 0x9890, 0x104A,
+ 0x9891, 0x9891, 0x0BD4, 0x9892, 0x9892, 0x51AB, 0x9893, 0x9893, 0x0E78,
+ 0x9894, 0x9894, 0x1BE7, 0x9895, 0x9895, 0x51AC, 0x9896, 0x9896, 0x1096,
+ 0x9897, 0x9897, 0x0952, 0x9898, 0x9898, 0x0E35, 0x9899, 0x9899, 0x51AD,
+ 0x989A, 0x989B, 0x1BE8, 0x989C, 0x989C, 0x0FFE, 0x989D, 0x989D, 0x062D,
+ 0x989E, 0x989F, 0x1BEA, 0x98A0, 0x98A0, 0x05C0, 0x98A1, 0x98A2, 0x1BEC,
+ 0x98A3, 0x98A3, 0x51AE, 0x98A4, 0x98A4, 0x04C3, 0x98A5, 0x98A6, 0x1BEE,
+ 0x98A7, 0x98A7, 0x0C82, 0x98A8, 0x98A8, 0x1F00, 0x98A9, 0x98AD, 0x51AF,
+ 0x98AE, 0x98AF, 0x24CC, 0x98B0, 0x98B0, 0x51B4, 0x98B1, 0x98B1, 0x2698,
+ 0x98B2, 0x98B2, 0x51B5, 0x98B3, 0x98B3, 0x2678, 0x98B4, 0x98B5, 0x51B6,
+ 0x98B6, 0x98B6, 0x24CE, 0x98B7, 0x98BB, 0x51B8, 0x98BC, 0x98BC, 0x24CF,
+ 0x98BD, 0x98C3, 0x51BD, 0x98C4, 0x98C4, 0x20B8, 0x98C5, 0x98C5, 0x51C4,
+ 0x98C6, 0x98C6, 0x24D0, 0x98C7, 0x98C7, 0x51C5, 0x98C8, 0x98C8, 0x24D1,
+ 0x98C9, 0x98CD, 0x51C6, 0x98CE, 0x98CE, 0x0684, 0x98CF, 0x98D0, 0x51CB,
+ 0x98D1, 0x98D3, 0x19B7, 0x98D4, 0x98D4, 0x51CD, 0x98D5, 0x98D5, 0x19BA,
+ 0x98D6, 0x98D7, 0x51CE, 0x98D8, 0x98D8, 0x0BCD, 0x98D9, 0x98DA, 0x19BB,
+ 0x98DB, 0x98DB, 0x1EF4, 0x98DC, 0x98DD, 0x51D0, 0x98DE, 0x98DE, 0x0666,
+ 0x98DF, 0x98DF, 0x0D4A, 0x98E0, 0x98E0, 0x239B, 0x98E1, 0x98E1, 0x51D2,
+ 0x98E2, 0x98E2, 0x267E, 0x98E3, 0x98E6, 0x51D3, 0x98E7, 0x98E7, 0x161A,
+ 0x98E8, 0x98E8, 0x1DE7, 0x98E9, 0x98E9, 0x239D, 0x98EA, 0x98EB, 0x239F,
+ 0x98EC, 0x98EC, 0x51D7, 0x98ED, 0x98ED, 0x23A1, 0x98EE, 0x98EE, 0x51D8,
+ 0x98EF, 0x98EF, 0x1EF1, 0x98F0, 0x98F1, 0x51D9, 0x98F2, 0x98F2, 0x221E,
+ 0x98F3, 0x98F3, 0x51DB, 0x98F4, 0x98F4, 0x23A2, 0x98F5, 0x98FB, 0x51DC,
+ 0x98FC, 0x98FC, 0x214B, 0x98FD, 0x98FD, 0x1E36, 0x98FE, 0x98FE, 0x2135,
+ 0x98FF, 0x98FF, 0x51E3, 0x9900, 0x9902, 0x51E4, 0x9903, 0x9903, 0x1FAD,
+ 0x9904, 0x9904, 0x51E7, 0x9905, 0x9905, 0x1E53, 0x9906, 0x9908, 0x51E8,
+ 0x9909, 0x9909, 0x23A3, 0x990A, 0x990A, 0x2203, 0x990B, 0x990B, 0x51EB,
+ 0x990C, 0x990C, 0x1EE7, 0x990D, 0x990D, 0x1DE8, 0x990E, 0x990F, 0x51EC,
+ 0x9910, 0x9910, 0x0494, 0x9911, 0x9911, 0x23A4, 0x9912, 0x9912, 0x2097,
+ 0x9913, 0x9913, 0x1EE4, 0x9914, 0x9917, 0x51EE, 0x9918, 0x9918, 0x2238,
+ 0x9919, 0x991A, 0x51F2, 0x991B, 0x991B, 0x23A5, 0x991C, 0x991D, 0x51F4,
+ 0x991E, 0x991E, 0x1F9A, 0x991F, 0x9920, 0x51F6, 0x9921, 0x9921, 0x21C3,
+ 0x9922, 0x9927, 0x51F8, 0x9928, 0x9928, 0x1F2E, 0x9929, 0x992D, 0x51FE,
+ 0x992E, 0x992E, 0x1DE9, 0x992F, 0x9932, 0x5203, 0x9933, 0x9933, 0x239C,
+ 0x9934, 0x9936, 0x5207, 0x9937, 0x9937, 0x23A6, 0x9938, 0x993B, 0x520A,
+ 0x993C, 0x993C, 0x239E, 0x993D, 0x993D, 0x520E, 0x993E, 0x993E, 0x2035,
+ 0x993F, 0x993F, 0x23A7, 0x9940, 0x9942, 0x520F, 0x9943, 0x9943, 0x23A8,
+ 0x9944, 0x9944, 0x5212, 0x9945, 0x9945, 0x2075, 0x9946, 0x9947, 0x5213,
+ 0x9948, 0x994A, 0x23A9, 0x994B, 0x994B, 0x1FEB, 0x994C, 0x994C, 0x23AC,
+ 0x994D, 0x9950, 0x5215, 0x9951, 0x9951, 0x1F6A, 0x9952, 0x9952, 0x20F9,
+ 0x9953, 0x9953, 0x5219, 0x9954, 0x9954, 0x1DEB, 0x9955, 0x9955, 0x1DEA,
+ 0x9956, 0x9956, 0x521A, 0x9957, 0x9957, 0x2666, 0x9958, 0x995B, 0x521B,
+ 0x995C, 0x995C, 0x2667, 0x995D, 0x995D, 0x521F, 0x995E, 0x995E, 0x1E6C,
+ 0x995F, 0x9961, 0x5220, 0x9962, 0x9962, 0x23AD, 0x9963, 0x9963, 0x161D,
+ 0x9964, 0x9964, 0x5223, 0x9965, 0x9965, 0x0815, 0x9966, 0x9966, 0x5224,
+ 0x9967, 0x996C, 0x161E, 0x996D, 0x996D, 0x0656, 0x996E, 0x996E, 0x1082,
+ 0x996F, 0x996F, 0x0875, 0x9970, 0x9970, 0x0D65, 0x9971, 0x9971, 0x040E,
+ 0x9972, 0x9972, 0x0DBC, 0x9973, 0x9973, 0x5225, 0x9974, 0x9974, 0x1624,
+ 0x9975, 0x9975, 0x063B, 0x9976, 0x9976, 0x0C9F, 0x9977, 0x9977, 0x1625,
+ 0x9978, 0x9979, 0x5226, 0x997A, 0x997A, 0x0899, 0x997B, 0x997B, 0x5228,
+ 0x997C, 0x997C, 0x0466, 0x997D, 0x997D, 0x1626, 0x997E, 0x997E, 0x5229,
+ 0x997F, 0x997F, 0x0635, 0x9980, 0x9980, 0x1627, 0x9981, 0x9981, 0x0B3C,
+ 0x9982, 0x9983, 0x522A, 0x9984, 0x9984, 0x1628, 0x9985, 0x9985, 0x0F47,
+ 0x9986, 0x9986, 0x0736, 0x9987, 0x9987, 0x1629, 0x9988, 0x9988, 0x098C,
+ 0x9989, 0x9989, 0x522C, 0x998A, 0x998A, 0x162A, 0x998B, 0x998B, 0x04BD,
+ 0x998C, 0x998C, 0x522D, 0x998D, 0x998D, 0x162B, 0x998E, 0x998E, 0x522E,
+ 0x998F, 0x998F, 0x0A3C, 0x9990, 0x9991, 0x162C, 0x9992, 0x9992, 0x0A9F,
+ 0x9993, 0x9995, 0x162E, 0x9996, 0x9996, 0x0D6E, 0x9997, 0x9997, 0x126E,
+ 0x9998, 0x9998, 0x12F9, 0x9999, 0x9999, 0x0F50, 0x999A, 0x99A4, 0x522F,
+ 0x99A5, 0x99A5, 0x1B2B, 0x99A6, 0x99A7, 0x523A, 0x99A8, 0x99A8, 0x13DE,
+ 0x99A9, 0x99AB, 0x523C, 0x99AC, 0x99AC, 0x206D, 0x99AD, 0x99AD, 0x2242,
+ 0x99AE, 0x99AE, 0x1F02, 0x99AF, 0x99B0, 0x523F, 0x99B1, 0x99B1, 0x2183,
+ 0x99B2, 0x99B2, 0x5241, 0x99B3, 0x99B3, 0x1E85, 0x99B4, 0x99B4, 0x21E9,
+ 0x99B5, 0x99C0, 0x5242, 0x99C1, 0x99C1, 0x1E57, 0x99C2, 0x99CF, 0x524E,
+ 0x99D0, 0x99D0, 0x22A5, 0x99D1, 0x99D1, 0x2407, 0x99D2, 0x99D2, 0x1FCA,
+ 0x99D3, 0x99D3, 0x525C, 0x99D4, 0x99D4, 0x2402, 0x99D5, 0x99D5, 0x1F82,
+ 0x99D6, 0x99D7, 0x525D, 0x99D8, 0x99D8, 0x2408, 0x99D9, 0x99D9, 0x2404,
+ 0x99DA, 0x99DA, 0x525F, 0x99DB, 0x99DB, 0x2131, 0x99DC, 0x99DC, 0x5260,
+ 0x99DD, 0x99DD, 0x2184, 0x99DE, 0x99DE, 0x5261, 0x99DF, 0x99DF, 0x2403,
+ 0x99E0, 0x99E0, 0x5262, 0x99E1, 0x99E1, 0x206E, 0x99E2, 0x99E2, 0x240B,
+ 0x99E3, 0x99EC, 0x5263, 0x99ED, 0x99ED, 0x1F3F, 0x99EE, 0x99F0, 0x526D,
+ 0x99F1, 0x99F1, 0x2067, 0x99F2, 0x99FE, 0x5270, 0x99FF, 0x99FF, 0x1FD7,
+ 0x9A00, 0x9A00, 0x527D, 0x9A01, 0x9A01, 0x1E83, 0x9A02, 0x9A04, 0x527E,
+ 0x9A05, 0x9A05, 0x240F, 0x9A06, 0x9A0C, 0x5281, 0x9A0D, 0x9A0D, 0x240E,
+ 0x9A0E, 0x9A0E, 0x20C7, 0x9A0F, 0x9A0F, 0x240D, 0x9A10, 0x9A15, 0x5288,
+ 0x9A16, 0x9A16, 0x2412, 0x9A17, 0x9A18, 0x528E, 0x9A19, 0x9A19, 0x20B7,
+ 0x9A1A, 0x9A2A, 0x5290, 0x9A2B, 0x9A2B, 0x23F0, 0x9A2C, 0x9A2C, 0x52A1,
+ 0x9A2D, 0x9A2D, 0x2411, 0x9A2E, 0x9A2E, 0x2414, 0x9A2F, 0x9A2F, 0x52A2,
+ 0x9A30, 0x9A30, 0x2170, 0x9A31, 0x9A35, 0x52A3, 0x9A36, 0x9A36, 0x2405,
+ 0x9A37, 0x9A37, 0x210C, 0x9A38, 0x9A38, 0x2415, 0x9A39, 0x9A3D, 0x52A8,
+ 0x9A3E, 0x9A3E, 0x2066, 0x9A3F, 0x9A3F, 0x52AD, 0x9A40, 0x9A40, 0x2352,
+ 0x9A41, 0x9A41, 0x2413, 0x9A42, 0x9A42, 0x2410, 0x9A43, 0x9A44, 0x2416,
+ 0x9A45, 0x9A45, 0x20F1, 0x9A46, 0x9A49, 0x52AE, 0x9A4A, 0x9A4A, 0x240A,
+ 0x9A4B, 0x9A4C, 0x52B2, 0x9A4D, 0x9A4D, 0x2409, 0x9A4E, 0x9A4E, 0x52B4,
+ 0x9A4F, 0x9A4F, 0x2418, 0x9A50, 0x9A54, 0x52B5, 0x9A55, 0x9A55, 0x1FA7,
+ 0x9A56, 0x9A56, 0x52BA, 0x9A57, 0x9A57, 0x21FC, 0x9A58, 0x9A59, 0x52BB,
+ 0x9A5A, 0x9A5A, 0x1FC1, 0x9A5B, 0x9A5B, 0x2406, 0x9A5C, 0x9A5E, 0x52BD,
+ 0x9A5F, 0x9A5F, 0x229C, 0x9A60, 0x9A61, 0x52C0, 0x9A62, 0x9A62, 0x204E,
+ 0x9A63, 0x9A63, 0x52C2, 0x9A64, 0x9A64, 0x241A, 0x9A65, 0x9A65, 0x2419,
+ 0x9A66, 0x9A69, 0x52C3, 0x9A6A, 0x9A6A, 0x240C, 0x9A6B, 0x9A6B, 0x52C7,
+ 0x9A6C, 0x9A6C, 0x0A94, 0x9A6D, 0x9A6D, 0x10E9, 0x9A6E, 0x9A6E, 0x0E85,
+ 0x9A6F, 0x9A6F, 0x0FDA, 0x9A70, 0x9A70, 0x0500, 0x9A71, 0x9A71, 0x0C7A,
+ 0x9A72, 0x9A72, 0x52C8, 0x9A73, 0x9A73, 0x047C, 0x9A74, 0x9A74, 0x0A66,
+ 0x9A75, 0x9A75, 0x17BA, 0x9A76, 0x9A76, 0x0D52, 0x9A77, 0x9A78, 0x17BB,
+ 0x9A79, 0x9A79, 0x0903, 0x9A7A, 0x9A7A, 0x17BD, 0x9A7B, 0x9A7B, 0x1201,
+ 0x9A7C, 0x9A7C, 0x0E86, 0x9A7D, 0x9A7D, 0x17BF, 0x9A7E, 0x9A7E, 0x0850,
+ 0x9A7F, 0x9A7F, 0x17BE, 0x9A80, 0x9A81, 0x17C0, 0x9A82, 0x9A82, 0x0A95,
+ 0x9A83, 0x9A83, 0x52C9, 0x9A84, 0x9A84, 0x088F, 0x9A85, 0x9A85, 0x17C2,
+ 0x9A86, 0x9A86, 0x0A8D, 0x9A87, 0x9A87, 0x075E, 0x9A88, 0x9A88, 0x17C3,
+ 0x9A89, 0x9A89, 0x52CA, 0x9A8A, 0x9A8A, 0x17C4, 0x9A8B, 0x9A8B, 0x04F7,
+ 0x9A8C, 0x9A8C, 0x1012, 0x9A8D, 0x9A8E, 0x52CB, 0x9A8F, 0x9A8F, 0x0932,
+ 0x9A90, 0x9A90, 0x17C5, 0x9A91, 0x9A91, 0x0C0E, 0x9A92, 0x9A93, 0x17C6,
+ 0x9A94, 0x9A95, 0x52CD, 0x9A96, 0x9A96, 0x17C8, 0x9A97, 0x9A97, 0x0BCC,
+ 0x9A98, 0x9A98, 0x17C9, 0x9A99, 0x9A99, 0x52CF, 0x9A9A, 0x9A9A, 0x0CE0,
+ 0x9A9B, 0x9A9D, 0x17CA, 0x9A9E, 0x9A9E, 0x1735, 0x9A9F, 0x9AA0, 0x17CD,
+ 0x9AA1, 0x9AA1, 0x0A89, 0x9AA2, 0x9AA3, 0x17CF, 0x9AA4, 0x9AA4, 0x11E7,
+ 0x9AA5, 0x9AA5, 0x17D1, 0x9AA6, 0x9AA6, 0x52D0, 0x9AA7, 0x9AA7, 0x17D2,
+ 0x9AA8, 0x9AA8, 0x0720, 0x9AA9, 0x9AAE, 0x52D1, 0x9AAF, 0x9AAF, 0x1E29,
+ 0x9AB0, 0x9AB0, 0x1DD3, 0x9AB1, 0x9AB1, 0x1DD2, 0x9AB2, 0x9AB5, 0x52D7,
+ 0x9AB6, 0x9AB6, 0x1DD6, 0x9AB7, 0x9AB7, 0x1DD4, 0x9AB8, 0x9AB8, 0x0758,
+ 0x9AB9, 0x9AB9, 0x52DB, 0x9ABA, 0x9ABA, 0x1DD7, 0x9ABB, 0x9ABB, 0x52DC,
+ 0x9ABC, 0x9ABC, 0x1DD8, 0x9ABD, 0x9ABF, 0x52DD, 0x9AC0, 0x9AC0, 0x1DDA,
+ 0x9AC1, 0x9AC1, 0x1DD9, 0x9AC2, 0x9AC2, 0x1DDC, 0x9AC3, 0x9AC4, 0x52E0,
+ 0x9AC5, 0x9AC5, 0x1DDB, 0x9AC6, 0x9ACA, 0x52E2, 0x9ACB, 0x9ACC, 0x1DDD,
+ 0x9ACD, 0x9ACE, 0x52E7, 0x9ACF, 0x9ACF, 0x2661, 0x9AD0, 0x9AD0, 0x52E9,
+ 0x9AD1, 0x9AD1, 0x1DDF, 0x9AD2, 0x9AD2, 0x26A4, 0x9AD3, 0x9AD3, 0x0DDD,
+ 0x9AD4, 0x9AD4, 0x2174, 0x9AD5, 0x9AD5, 0x2663, 0x9AD6, 0x9AD6, 0x2662,
+ 0x9AD7, 0x9AD7, 0x52EA, 0x9AD8, 0x9AD8, 0x06DA, 0x9AD9, 0x9ADE, 0x52EB,
+ 0x9ADF, 0x9ADF, 0x1DEC, 0x9AE0, 0x9AE0, 0x52F1, 0x9AE1, 0x9AE1, 0x1DED,
+ 0x9AE2, 0x9AE5, 0x52F2, 0x9AE6, 0x9AE6, 0x1DEE, 0x9AE7, 0x9AEA, 0x52F6,
+ 0x9AEB, 0x9AEB, 0x1DF0, 0x9AEC, 0x9AEC, 0x52FA, 0x9AED, 0x9AED, 0x1DF2,
+ 0x9AEE, 0x9AEE, 0x2675, 0x9AEF, 0x9AEF, 0x1DEF, 0x9AF0, 0x9AF8, 0x52FB,
+ 0x9AF9, 0x9AF9, 0x1DF3, 0x9AFA, 0x9AFA, 0x5304, 0x9AFB, 0x9AFB, 0x1DF1,
+ 0x9AFC, 0x9AFF, 0x5305, 0x9B00, 0x9B02, 0x5309, 0x9B03, 0x9B03, 0x1234,
+ 0x9B04, 0x9B05, 0x530C, 0x9B06, 0x9B06, 0x214C, 0x9B07, 0x9B07, 0x530E,
+ 0x9B08, 0x9B08, 0x1DF4, 0x9B09, 0x9B0C, 0x530F, 0x9B0D, 0x9B0D, 0x267A,
+ 0x9B0E, 0x9B0E, 0x5313, 0x9B0F, 0x9B0F, 0x1DF5, 0x9B10, 0x9B12, 0x5314,
+ 0x9B13, 0x9B13, 0x1DF6, 0x9B14, 0x9B19, 0x5317, 0x9B1A, 0x9B1A, 0x26A0,
+ 0x9B1B, 0x9B1E, 0x531D, 0x9B1F, 0x9B1F, 0x1DF7, 0x9B20, 0x9B21, 0x5321,
+ 0x9B22, 0x9B22, 0x2668, 0x9B23, 0x9B23, 0x1DF8, 0x9B24, 0x9B24, 0x5323,
+ 0x9B25, 0x9B25, 0x1ED0, 0x9B26, 0x9B26, 0x5324, 0x9B27, 0x9B27, 0x2096,
+ 0x9B28, 0x9B28, 0x5325, 0x9B29, 0x9B29, 0x23CC, 0x9B2A, 0x9B2D, 0x5326,
+ 0x9B2E, 0x9B2E, 0x23C8, 0x9B2F, 0x9B2F, 0x139B, 0x9B30, 0x9B30, 0x532A,
+ 0x9B31, 0x9B31, 0x223E, 0x9B32, 0x9B32, 0x1260, 0x9B33, 0x9B3A, 0x532B,
+ 0x9B3B, 0x9B3B, 0x1773, 0x9B3C, 0x9B3C, 0x0746, 0x9B3D, 0x9B40, 0x5333,
+ 0x9B41, 0x9B41, 0x098A, 0x9B42, 0x9B42, 0x07FF, 0x9B43, 0x9B43, 0x1DE1,
+ 0x9B44, 0x9B44, 0x0BE6, 0x9B45, 0x9B45, 0x1DE0, 0x9B46, 0x9B46, 0x5337,
+ 0x9B47, 0x9B47, 0x1DE2, 0x9B48, 0x9B48, 0x1DE4, 0x9B49, 0x9B49, 0x1DE3,
+ 0x9B4A, 0x9B4C, 0x5338, 0x9B4D, 0x9B4D, 0x1DE5, 0x9B4E, 0x9B4E, 0x2665,
+ 0x9B4F, 0x9B4F, 0x0EC9, 0x9B50, 0x9B50, 0x533B, 0x9B51, 0x9B51, 0x1DE6,
+ 0x9B52, 0x9B53, 0x533C, 0x9B54, 0x9B54, 0x0B0A, 0x9B55, 0x9B57, 0x533E,
+ 0x9B58, 0x9B58, 0x2664, 0x9B59, 0x9B59, 0x5341, 0x9B5A, 0x9B5A, 0x2239,
+ 0x9B5B, 0x9B6E, 0x5342, 0x9B6F, 0x9B6F, 0x204A, 0x9B70, 0x9B73, 0x5356,
+ 0x9B74, 0x9B74, 0x261F, 0x9B75, 0x9B76, 0x535A, 0x9B77, 0x9B77, 0x261E,
+ 0x9B78, 0x9B80, 0x535C, 0x9B81, 0x9B81, 0x2620, 0x9B82, 0x9B82, 0x5365,
+ 0x9B83, 0x9B83, 0x2621, 0x9B84, 0x9B8D, 0x5366, 0x9B8E, 0x9B8E, 0x2622,
+ 0x9B8F, 0x9B8F, 0x5370, 0x9B90, 0x9B90, 0x2627, 0x9B91, 0x9B91, 0x1E39,
+ 0x9B92, 0x9B92, 0x2625, 0x9B93, 0x9B99, 0x5371, 0x9B9A, 0x9B9A, 0x2629,
+ 0x9B9B, 0x9B9C, 0x5378, 0x9B9D, 0x9B9D, 0x262E, 0x9B9E, 0x9B9E, 0x262B,
+ 0x9B9F, 0x9BA9, 0x537A, 0x9BAA, 0x9BAA, 0x262A, 0x9BAB, 0x9BAB, 0x262D,
+ 0x9BAC, 0x9BAC, 0x5385, 0x9BAD, 0x9BAD, 0x2628, 0x9BAE, 0x9BAE, 0x21B9,
+ 0x9BAF, 0x9BBF, 0x5386, 0x9BC0, 0x9BC0, 0x2636, 0x9BC1, 0x9BC1, 0x2630,
+ 0x9BC2, 0x9BC6, 0x5397, 0x9BC7, 0x9BC7, 0x2638, 0x9BC8, 0x9BC8, 0x539C,
+ 0x9BC9, 0x9BC9, 0x200D, 0x9BCA, 0x9BCA, 0x2637, 0x9BCB, 0x9BD3, 0x539D,
+ 0x9BD4, 0x9BD4, 0x2645, 0x9BD5, 0x9BD5, 0x53A6, 0x9BD6, 0x9BD6, 0x263A,
+ 0x9BD7, 0x9BDA, 0x53A7, 0x9BDB, 0x9BDB, 0x2643, 0x9BDC, 0x9BDC, 0x53AB,
+ 0x9BDD, 0x9BDD, 0x2640, 0x9BDE, 0x9BE0, 0x53AC, 0x9BE1, 0x9BE1, 0x263D,
+ 0x9BE2, 0x9BE2, 0x2641, 0x9BE3, 0x9BE3, 0x53AF, 0x9BE4, 0x9BE4, 0x263E,
+ 0x9BE5, 0x9BE6, 0x53B0, 0x9BE7, 0x9BE7, 0x263F, 0x9BE8, 0x9BE8, 0x1FC0,
+ 0x9BE9, 0x9BE9, 0x53B2, 0x9BEA, 0x9BEB, 0x263B, 0x9BEC, 0x9BEF, 0x53B3,
+ 0x9BF0, 0x9BF0, 0x2642, 0x9BF1, 0x9BF3, 0x53B7, 0x9BF4, 0x9BF4, 0x2644,
+ 0x9BF5, 0x9BFC, 0x53BA, 0x9BFD, 0x9BFD, 0x2639, 0x9BFE, 0x9BFE, 0x53C2,
+ 0x9BFF, 0x9BFF, 0x264C, 0x9C00, 0x9C07, 0x53C3, 0x9C08, 0x9C08, 0x2647,
+ 0x9C09, 0x9C09, 0x264B, 0x9C0A, 0x9C0C, 0x53CB, 0x9C0D, 0x9C0D, 0x2649,
+ 0x9C0E, 0x9C0F, 0x53CE, 0x9C10, 0x9C10, 0x2648, 0x9C11, 0x9C11, 0x53D0,
+ 0x9C12, 0x9C12, 0x264A, 0x9C13, 0x9C13, 0x2108, 0x9C14, 0x9C1F, 0x53D1,
+ 0x9C20, 0x9C20, 0x264D, 0x9C21, 0x9C22, 0x53DD, 0x9C23, 0x9C23, 0x2634,
+ 0x9C24, 0x9C24, 0x53DF, 0x9C25, 0x9C25, 0x2651, 0x9C26, 0x9C27, 0x53E0,
+ 0x9C28, 0x9C28, 0x2650, 0x9C29, 0x9C29, 0x2652, 0x9C2A, 0x9C2C, 0x53E2,
+ 0x9C2D, 0x9C2D, 0x264F, 0x9C2E, 0x9C30, 0x53E5, 0x9C31, 0x9C31, 0x2632,
+ 0x9C32, 0x9C32, 0x264E, 0x9C33, 0x9C33, 0x2653, 0x9C34, 0x9C34, 0x53E8,
+ 0x9C35, 0x9C35, 0x2657, 0x9C36, 0x9C36, 0x53E9, 0x9C37, 0x9C37, 0x2635,
+ 0x9C38, 0x9C38, 0x53EA, 0x9C39, 0x9C39, 0x2633, 0x9C3A, 0x9C3A, 0x53EB,
+ 0x9C3B, 0x9C3B, 0x2656, 0x9C3C, 0x9C3D, 0x53EC, 0x9C3E, 0x9C3E, 0x2654,
+ 0x9C3F, 0x9C44, 0x53EE, 0x9C45, 0x9C45, 0x2658, 0x9C46, 0x9C47, 0x53F4,
+ 0x9C48, 0x9C48, 0x2655, 0x9C49, 0x9C49, 0x1E4D, 0x9C4A, 0x9C51, 0x53F6,
+ 0x9C52, 0x9C52, 0x265B, 0x9C53, 0x9C53, 0x53FE, 0x9C54, 0x9C54, 0x265A,
+ 0x9C55, 0x9C55, 0x53FF, 0x9C56, 0x9C56, 0x2659, 0x9C57, 0x9C57, 0x202E,
+ 0x9C58, 0x9C58, 0x262F, 0x9C59, 0x9C5C, 0x5400, 0x9C5D, 0x9C5D, 0x2646,
+ 0x9C5E, 0x9C5E, 0x5404, 0x9C5F, 0x9C5F, 0x2626, 0x9C60, 0x9C66, 0x5405,
+ 0x9C67, 0x9C67, 0x265C, 0x9C68, 0x9C6C, 0x540C, 0x9C6D, 0x9C6D, 0x262C,
+ 0x9C6E, 0x9C77, 0x5411, 0x9C78, 0x9C78, 0x2623, 0x9C79, 0x9C79, 0x541B,
+ 0x9C7A, 0x9C7A, 0x2631, 0x9C7B, 0x9C7B, 0x541C, 0x9C7C, 0x9C7C, 0x10C8,
+ 0x9C7D, 0x9C7E, 0x541D, 0x9C7F, 0x9C7F, 0x1D89, 0x9C80, 0x9C80, 0x541F,
+ 0x9C81, 0x9C81, 0x0A5A, 0x9C82, 0x9C82, 0x1D8A, 0x9C83, 0x9C84, 0x5420,
+ 0x9C85, 0x9C88, 0x1D8B, 0x9C89, 0x9C8A, 0x5422, 0x9C8B, 0x9C8B, 0x1D90,
+ 0x9C8C, 0x9C8C, 0x5424, 0x9C8D, 0x9C8D, 0x0414, 0x9C8E, 0x9C8E, 0x1D91,
+ 0x9C8F, 0x9C8F, 0x5425, 0x9C90, 0x9C92, 0x1D92, 0x9C93, 0x9C93, 0x5426,
+ 0x9C94, 0x9C95, 0x1D95, 0x9C96, 0x9C99, 0x5427, 0x9C9A, 0x9C9B, 0x1D97,
+ 0x9C9C, 0x9C9C, 0x0F37, 0x9C9D, 0x9C9D, 0x542B, 0x9C9E, 0x9CA3, 0x1D99,
+ 0x9CA4, 0x9CA4, 0x09DB, 0x9CA5, 0x9CA9, 0x1D9F, 0x9CAA, 0x9CAA, 0x542C,
+ 0x9CAB, 0x9CAB, 0x1DA4, 0x9CAC, 0x9CAC, 0x542D, 0x9CAD, 0x9CAE, 0x1DA5,
+ 0x9CAF, 0x9CAF, 0x542E, 0x9CB0, 0x9CB7, 0x1DA7, 0x9CB8, 0x9CB8, 0x08D7,
+ 0x9CB9, 0x9CB9, 0x542F, 0x9CBA, 0x9CBD, 0x1DAF, 0x9CBE, 0x9CC2, 0x5430,
+ 0x9CC3, 0x9CC3, 0x0CD5, 0x9CC4, 0x9CC7, 0x1DB3, 0x9CC8, 0x9CC9, 0x5435,
+ 0x9CCA, 0x9CD0, 0x1DB7, 0x9CD1, 0x9CD2, 0x5437, 0x9CD3, 0x9CD5, 0x1DBE,
+ 0x9CD6, 0x9CD6, 0x0457, 0x9CD7, 0x9CD9, 0x1DC1, 0x9CDA, 0x9CDB, 0x5439,
+ 0x9CDC, 0x9CDD, 0x1DC4, 0x9CDE, 0x9CDE, 0x0A24, 0x9CDF, 0x9CDF, 0x1DC6,
+ 0x9CE0, 0x9CE1, 0x543B, 0x9CE2, 0x9CE2, 0x1DC7, 0x9CE3, 0x9CE4, 0x543D,
+ 0x9CE5, 0x9CE5, 0x209C, 0x9CE6, 0x9CE8, 0x543F, 0x9CE9, 0x9CE9, 0x2580,
+ 0x9CEA, 0x9CEB, 0x5442, 0x9CEC, 0x9CEC, 0x22DC, 0x9CED, 0x9CF2, 0x5444,
+ 0x9CF3, 0x9CF3, 0x1F05, 0x9CF4, 0x9CF4, 0x208B, 0x9CF5, 0x9CF5, 0x544A,
+ 0x9CF6, 0x9CF6, 0x2581, 0x9CF7, 0x9CFF, 0x544B, 0x9D00, 0x9D05, 0x5454,
+ 0x9D06, 0x9D06, 0x2583, 0x9D07, 0x9D07, 0x2582, 0x9D08, 0x9D08, 0x545A,
+ 0x9D09, 0x9D09, 0x21EE, 0x9D0A, 0x9D14, 0x545B, 0x9D15, 0x9D15, 0x2182,
+ 0x9D16, 0x9D1A, 0x5466, 0x9D1B, 0x9D1B, 0x2243, 0x9D1C, 0x9D1C, 0x546B,
+ 0x9D1D, 0x9D1D, 0x2587, 0x9D1E, 0x9D1E, 0x546C, 0x9D1F, 0x9D1F, 0x2588,
+ 0x9D20, 0x9D22, 0x546D, 0x9D23, 0x9D23, 0x2584, 0x9D24, 0x9D25, 0x5470,
+ 0x9D26, 0x9D26, 0x21FD, 0x9D27, 0x9D27, 0x5472, 0x9D28, 0x9D28, 0x21EF,
+ 0x9D29, 0x9D2E, 0x5473, 0x9D2F, 0x9D2F, 0x258A, 0x9D30, 0x9D30, 0x258C,
+ 0x9D31, 0x9D3A, 0x5479, 0x9D3B, 0x9D3B, 0x1F47, 0x9D3C, 0x9D3E, 0x5483,
+ 0x9D3F, 0x9D3F, 0x1F1D, 0x9D40, 0x9D41, 0x5486, 0x9D42, 0x9D42, 0x258D,
+ 0x9D43, 0x9D50, 0x5488, 0x9D51, 0x9D51, 0x1FD0, 0x9D52, 0x9D52, 0x2592,
+ 0x9D53, 0x9D53, 0x258F, 0x9D54, 0x9D5B, 0x5496, 0x9D5C, 0x9D5C, 0x2594,
+ 0x9D5D, 0x9D5D, 0x1EE0, 0x9D5E, 0x9D5F, 0x549E, 0x9D60, 0x9D60, 0x2591,
+ 0x9D61, 0x9D61, 0x2595, 0x9D62, 0x9D69, 0x54A0, 0x9D6A, 0x9D6A, 0x2597,
+ 0x9D6B, 0x9D6B, 0x54A8, 0x9D6C, 0x9D6C, 0x20B6, 0x9D6D, 0x9D6E, 0x54A9,
+ 0x9D6F, 0x9D6F, 0x2598, 0x9D70, 0x9D71, 0x54AB, 0x9D72, 0x9D72, 0x20F6,
+ 0x9D73, 0x9D86, 0x54AD, 0x9D87, 0x9D87, 0x2585, 0x9D88, 0x9D88, 0x54C1,
+ 0x9D89, 0x9D89, 0x2599, 0x9D8A, 0x9D92, 0x54C2, 0x9D93, 0x9D93, 0x2596,
+ 0x9D94, 0x9D97, 0x54CB, 0x9D98, 0x9D98, 0x259A, 0x9D99, 0x9D99, 0x54CF,
+ 0x9D9A, 0x9D9A, 0x259B, 0x9D9B, 0x9DA4, 0x54D0, 0x9DA5, 0x9DA5, 0x259D,
+ 0x9DA6, 0x9DA8, 0x54DA, 0x9DA9, 0x9DA9, 0x259E, 0x9DAA, 0x9DAE, 0x54DD,
+ 0x9DAF, 0x9DAF, 0x234C, 0x9DB0, 0x9DB3, 0x54E2, 0x9DB4, 0x9DB4, 0x1F44,
+ 0x9DB5, 0x9DBA, 0x54E6, 0x9DBB, 0x9DBB, 0x2660, 0x9DBC, 0x9DBC, 0x25A0,
+ 0x9DBD, 0x9DBF, 0x54EC, 0x9DC0, 0x9DC0, 0x259C, 0x9DC1, 0x9DC1, 0x54EF,
+ 0x9DC2, 0x9DC2, 0x259F, 0x9DC3, 0x9DC3, 0x54F0, 0x9DC4, 0x9DC4, 0x1F6C,
+ 0x9DC5, 0x9DD2, 0x54F1, 0x9DD3, 0x9DD3, 0x25A2, 0x9DD4, 0x9DD6, 0x54FF,
+ 0x9DD7, 0x9DD7, 0x20AE, 0x9DD8, 0x9DD8, 0x5502, 0x9DD9, 0x9DD9, 0x258B,
+ 0x9DDA, 0x9DDA, 0x25A3, 0x9DDB, 0x9DE4, 0x5503, 0x9DE5, 0x9DE5, 0x2589,
+ 0x9DE6, 0x9DE6, 0x25A5, 0x9DE7, 0x9DEE, 0x550D, 0x9DEF, 0x9DEF, 0x25A4,
+ 0x9DF0, 0x9DF1, 0x5515, 0x9DF2, 0x9DF2, 0x25A6, 0x9DF3, 0x9DF3, 0x2593,
+ 0x9DF4, 0x9DF7, 0x5517, 0x9DF8, 0x9DF8, 0x25A7, 0x9DF9, 0x9DF9, 0x2222,
+ 0x9DFA, 0x9DFA, 0x25A9, 0x9DFB, 0x9DFF, 0x551B, 0x9E00, 0x9E0B, 0x5520,
+ 0x9E0C, 0x9E0C, 0x25A8, 0x9E0D, 0x9E14, 0x552C, 0x9E15, 0x9E15, 0x2586,
+ 0x9E16, 0x9E19, 0x5534, 0x9E1A, 0x9E1A, 0x25A1, 0x9E1B, 0x9E1B, 0x25AA,
+ 0x9E1C, 0x9E1C, 0x5538, 0x9E1D, 0x9E1D, 0x2590, 0x9E1E, 0x9E1E, 0x258E,
+ 0x9E1F, 0x9E1F, 0x0B54, 0x9E20, 0x9E20, 0x1B35, 0x9E21, 0x9E21, 0x0819,
+ 0x9E22, 0x9E22, 0x1B36, 0x9E23, 0x9E23, 0x0AFE, 0x9E24, 0x9E24, 0x5539,
+ 0x9E25, 0x9E25, 0x0B79, 0x9E26, 0x9E26, 0x0FE4, 0x9E27, 0x9E27, 0x553A,
+ 0x9E28, 0x9E2C, 0x1B37, 0x9E2D, 0x9E2D, 0x0FE5, 0x9E2E, 0x9E2E, 0x553B,
+ 0x9E2F, 0x9E2F, 0x1015, 0x9E30, 0x9E30, 0x553C, 0x9E31, 0x9E31, 0x1B3D,
+ 0x9E32, 0x9E32, 0x1B3C, 0x9E33, 0x9E33, 0x10EA, 0x9E34, 0x9E34, 0x553D,
+ 0x9E35, 0x9E35, 0x0E83, 0x9E36, 0x9E36, 0x1B3E, 0x9E37, 0x9E37, 0x1B40,
+ 0x9E38, 0x9E38, 0x1B3F, 0x9E39, 0x9E3A, 0x1B41, 0x9E3B, 0x9E3C, 0x553E,
+ 0x9E3D, 0x9E3D, 0x06E6, 0x9E3E, 0x9E3E, 0x1B43, 0x9E3F, 0x9E3F, 0x079F,
+ 0x9E40, 0x9E40, 0x5540, 0x9E41, 0x9E42, 0x1B44, 0x9E43, 0x9E43, 0x0918,
+ 0x9E44, 0x9E44, 0x1B46, 0x9E45, 0x9E45, 0x062B, 0x9E46, 0x9E49, 0x1B47,
+ 0x9E4A, 0x9E4A, 0x0C90, 0x9E4B, 0x9E4C, 0x1B4B, 0x9E4D, 0x9E4D, 0x5541,
+ 0x9E4E, 0x9E4E, 0x1B4D, 0x9E4F, 0x9E4F, 0x0BB5, 0x9E50, 0x9E50, 0x5542,
+ 0x9E51, 0x9E51, 0x1B4E, 0x9E52, 0x9E54, 0x5543, 0x9E55, 0x9E55, 0x1B4F,
+ 0x9E56, 0x9E56, 0x5546, 0x9E57, 0x9E57, 0x1B50, 0x9E58, 0x9E58, 0x1DD5,
+ 0x9E59, 0x9E59, 0x5547, 0x9E5A, 0x9E5C, 0x1B51, 0x9E5D, 0x9E5D, 0x5548,
+ 0x9E5E, 0x9E5E, 0x1B54, 0x9E5F, 0x9E62, 0x5549, 0x9E63, 0x9E63, 0x1B55,
+ 0x9E64, 0x9E64, 0x078E, 0x9E65, 0x9E65, 0x554D, 0x9E66, 0x9E6C, 0x1B56,
+ 0x9E6D, 0x9E6D, 0x1B5E, 0x9E6E, 0x9E6F, 0x554E, 0x9E70, 0x9E70, 0x108A,
+ 0x9E71, 0x9E71, 0x1B5D, 0x9E72, 0x9E72, 0x5550, 0x9E73, 0x9E73, 0x1B5F,
+ 0x9E74, 0x9E74, 0x5551, 0x9E75, 0x9E75, 0x2688, 0x9E76, 0x9E78, 0x5552,
+ 0x9E79, 0x9E79, 0x269E, 0x9E7A, 0x9E7A, 0x25FB, 0x9E7B, 0x9E7B, 0x5555,
+ 0x9E7C, 0x9E7C, 0x1F8C, 0x9E7D, 0x9E7D, 0x21F4, 0x9E7E, 0x9E7E, 0x1D16,
+ 0x9E7F, 0x9E7F, 0x0A60, 0x9E80, 0x9E81, 0x5556, 0x9E82, 0x9E82, 0x1DFC,
+ 0x9E83, 0x9E86, 0x5558, 0x9E87, 0x9E88, 0x1DFD, 0x9E89, 0x9E8A, 0x555C,
+ 0x9E8B, 0x9E8B, 0x1DFF, 0x9E8C, 0x9E91, 0x555E, 0x9E92, 0x9E92, 0x1E00,
+ 0x9E93, 0x9E93, 0x0A5B, 0x9E94, 0x9E96, 0x5564, 0x9E97, 0x9E97, 0x200F,
+ 0x9E98, 0x9E9C, 0x5567, 0x9E9D, 0x9E9D, 0x1E02, 0x9E9E, 0x9E9E, 0x556C,
+ 0x9E9F, 0x9E9F, 0x1E03, 0x9EA0, 0x9EA4, 0x556D, 0x9EA5, 0x9EA5, 0x2071,
+ 0x9EA6, 0x9EA6, 0x0A9A, 0x9EA7, 0x9EA8, 0x5572, 0x9EA9, 0x9EA9, 0x25F7,
+ 0x9EAA, 0x9EAE, 0x5574, 0x9EAF, 0x9EAF, 0x2696, 0x9EB0, 0x9EB3, 0x5579,
+ 0x9EB4, 0x9EB4, 0x1CEE, 0x9EB5, 0x9EB5, 0x268F, 0x9EB6, 0x9EB7, 0x557D,
+ 0x9EB8, 0x9EB8, 0x1CED, 0x9EB9, 0x9EBA, 0x557F, 0x9EBB, 0x9EBB, 0x0A90,
+ 0x9EBC, 0x9EBC, 0x5581, 0x9EBD, 0x9EBE, 0x1DF9, 0x9EBF, 0x9EC3, 0x5582,
+ 0x9EC4, 0x9EC4, 0x07DB, 0x9EC5, 0x9EC8, 0x5587, 0x9EC9, 0x9EC9, 0x12F8,
+ 0x9ECA, 0x9ECB, 0x558B, 0x9ECC, 0x9ECC, 0x22DA, 0x9ECD, 0x9ECD, 0x0D89,
+ 0x9ECE, 0x9ECE, 0x09D3, 0x9ECF, 0x9ECF, 0x1B2A, 0x9ED0, 0x9ED0, 0x558D,
+ 0x9ED1, 0x9ED1, 0x0791, 0x9ED2, 0x9ED3, 0x558E, 0x9ED4, 0x9ED4, 0x0C2A,
+ 0x9ED5, 0x9ED7, 0x5590, 0x9ED8, 0x9ED8, 0x0B0F, 0x9ED9, 0x9EDA, 0x5593,
+ 0x9EDB, 0x9EDD, 0x1E04, 0x9EDE, 0x9EDE, 0x1EC1, 0x9EDF, 0x9EDF, 0x1E08,
+ 0x9EE0, 0x9EE0, 0x1E07, 0x9EE1, 0x9EE1, 0x5595, 0x9EE2, 0x9EE2, 0x1E09,
+ 0x9EE3, 0x9EE4, 0x5596, 0x9EE5, 0x9EE5, 0x1E0C, 0x9EE6, 0x9EE6, 0x5598,
+ 0x9EE7, 0x9EE7, 0x1E0B, 0x9EE8, 0x9EE8, 0x1EB3, 0x9EE9, 0x9EE9, 0x1E0A,
+ 0x9EEA, 0x9EEA, 0x1E0D, 0x9EEB, 0x9EEE, 0x5599, 0x9EEF, 0x9EEF, 0x1E0E,
+ 0x9EF0, 0x9EF1, 0x559D, 0x9EF2, 0x9EF2, 0x266A, 0x9EF3, 0x9EF3, 0x559F,
+ 0x9EF4, 0x9EF4, 0x268A, 0x9EF5, 0x9EF6, 0x55A0, 0x9EF7, 0x9EF7, 0x2669,
+ 0x9EF8, 0x9EF8, 0x55A2, 0x9EF9, 0x9EF9, 0x1A55, 0x9EFA, 0x9EFA, 0x55A3,
+ 0x9EFB, 0x9EFC, 0x1A56, 0x9EFD, 0x9EFD, 0x2618, 0x9EFE, 0x9EFE, 0x1D76,
+ 0x9EFF, 0x9EFF, 0x2619, 0x9F00, 0x9F08, 0x55A4, 0x9F09, 0x9F09, 0x261A,
+ 0x9F0A, 0x9F0A, 0x55AD, 0x9F0B, 0x9F0B, 0x1D77, 0x9F0C, 0x9F0C, 0x55AE,
+ 0x9F0D, 0x9F0D, 0x1D78, 0x9F0E, 0x9F0E, 0x05E5, 0x9F0F, 0x9F0F, 0x55AF,
+ 0x9F10, 0x9F10, 0x1274, 0x9F11, 0x9F12, 0x55B0, 0x9F13, 0x9F13, 0x071D,
+ 0x9F14, 0x9F14, 0x55B2, 0x9F15, 0x9F15, 0x2673, 0x9F16, 0x9F16, 0x55B3,
+ 0x9F17, 0x9F17, 0x1271, 0x9F18, 0x9F18, 0x55B4, 0x9F19, 0x9F19, 0x13DF,
+ 0x9F1A, 0x9F1F, 0x55B5, 0x9F20, 0x9F20, 0x0D8A, 0x9F21, 0x9F21, 0x55BB,
+ 0x9F22, 0x9F22, 0x1E0F, 0x9F23, 0x9F2B, 0x55BC, 0x9F2C, 0x9F2C, 0x1E10,
+ 0x9F2D, 0x9F2E, 0x55C5, 0x9F2F, 0x9F2F, 0x1E11, 0x9F30, 0x9F36, 0x55C7,
+ 0x9F37, 0x9F37, 0x1E13, 0x9F38, 0x9F38, 0x55CE, 0x9F39, 0x9F39, 0x1E12,
+ 0x9F3A, 0x9F3A, 0x55CF, 0x9F3B, 0x9F3B, 0x0430, 0x9F3C, 0x9F3C, 0x55D0,
+ 0x9F3D, 0x9F3E, 0x1E14, 0x9F3F, 0x9F43, 0x55D1, 0x9F44, 0x9F44, 0x1E16,
+ 0x9F45, 0x9F49, 0x55D6, 0x9F4A, 0x9F4A, 0x20C6, 0x9F4B, 0x9F4B, 0x226B,
+ 0x9F4C, 0x9F4E, 0x55DB, 0x9F4F, 0x9F4F, 0x24D3, 0x9F50, 0x9F50, 0x0C0A,
+ 0x9F51, 0x9F51, 0x19C2, 0x9F52, 0x9F52, 0x1E86, 0x9F53, 0x9F53, 0x55DE,
+ 0x9F54, 0x9F54, 0x260F, 0x9F55, 0x9F58, 0x55DF, 0x9F59, 0x9F59, 0x2611,
+ 0x9F5A, 0x9F5B, 0x55E3, 0x9F5C, 0x9F5C, 0x2613, 0x9F5D, 0x9F5E, 0x55E5,
+ 0x9F5F, 0x9F5F, 0x2610, 0x9F60, 0x9F60, 0x2612, 0x9F61, 0x9F61, 0x2030,
+ 0x9F62, 0x9F62, 0x55E7, 0x9F63, 0x9F63, 0x2671, 0x9F64, 0x9F65, 0x55E8,
+ 0x9F66, 0x9F66, 0x2614, 0x9F67, 0x9F69, 0x55EA, 0x9F6A, 0x9F6A, 0x2616,
+ 0x9F6B, 0x9F6B, 0x55ED, 0x9F6C, 0x9F6C, 0x2615, 0x9F6D, 0x9F71, 0x55EE,
+ 0x9F72, 0x9F72, 0x20F2, 0x9F73, 0x9F76, 0x55F3, 0x9F77, 0x9F77, 0x2617,
+ 0x9F78, 0x9F7E, 0x55F7, 0x9F7F, 0x9F7F, 0x0502, 0x9F80, 0x9F80, 0x1D6D,
+ 0x9F81, 0x9F82, 0x55FE, 0x9F83, 0x9F83, 0x1D6E, 0x9F84, 0x9F84, 0x0A2D,
+ 0x9F85, 0x9F8A, 0x1D6F, 0x9F8B, 0x9F8B, 0x0C7E, 0x9F8C, 0x9F8C, 0x1D75,
+ 0x9F8D, 0x9F8D, 0x2037, 0x9F8E, 0x9F8F, 0x5600, 0x9F90, 0x9F90, 0x20B3,
+ 0x9F91, 0x9F93, 0x5602, 0x9F94, 0x9F94, 0x1F22, 0x9F95, 0x9F95, 0x24ED,
+ 0x9F96, 0x9F98, 0x5605, 0x9F99, 0x9F99, 0x0A43, 0x9F9A, 0x9F9A, 0x0701,
+ 0x9F9B, 0x9F9B, 0x1A54, 0x9F9C, 0x9F9C, 0x1F34, 0x9F9D, 0x9F9E, 0x5608,
+ 0x9F9F, 0x9F9F, 0x0743, 0x9FA0, 0x9FA0, 0x12F3, 0x9FA1, 0x9FA5, 0x560A,
+ 0xE816, 0xE818, 0x5620, 0xE81E, 0xE81E, 0x5628, 0xE826, 0xE826, 0x5630,
+ 0xE82B, 0xE82C, 0x5635, 0xE831, 0xE832, 0x563B, 0xE83B, 0xE83B, 0x5645,
+ 0xE843, 0xE843, 0x564D, 0xE854, 0xE855, 0x565E, 0xE864, 0xE864, 0x566E,
+ 0xF92C, 0xF92C, 0x560F, 0xFA0D, 0xFA0F, 0x5610, 0xFA11, 0xFA11, 0x5613,
+ 0xFA13, 0xFA14, 0x5614, 0xFA18, 0xFA18, 0x5616, 0xFA1F, 0xFA21, 0x5617,
+ 0xFA23, 0xFA24, 0x561A, 0xFA27, 0xFA29, 0x561C, 0xFE30, 0xFE30, 0x271D,
+ 0xFE49, 0xFE52, 0x272B, 0xFE54, 0xFE57, 0x2735, 0xFE59, 0xFE66, 0x2739,
+ 0xFE68, 0xFE6B, 0x2747, 0xFF01, 0xFF03, 0x0106, 0xFF04, 0xFF04, 0x00A6,
+ 0xFF05, 0xFF5D, 0x010A, 0xFF5E, 0xFF5E, 0x006A, 0xFFE0, 0xFFE1, 0x00A8,
+ 0xFFE2, 0xFFE2, 0x271E, 0xFFE3, 0xFFE3, 0x0163, 0xFFE4, 0xFFE4, 0x271F,
+ 0xFFE5, 0xFFE5, 0x0109,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-V_4.cpp b/core/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-V_4.cpp
new file mode 100644
index 0000000000..5d53067e26
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/GB1/UniGB-UCS2-V_4.cpp
@@ -0,0 +1,18 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h"
+
+const FX_WORD g_FXCMAP_UniGB_UCS2_V_4[24 * 3] = {
+ 0x2014, 0x2014, 0x0256, 0x2026, 0x2026, 0x0257, 0x2225, 0x2225, 0x1E1C,
+ 0x3001, 0x3001, 0x023F, 0x3002, 0x3002, 0x023E, 0x3008, 0x300F, 0x0248,
+ 0x3010, 0x3011, 0x0252, 0x3013, 0x3013, 0x1E1A, 0x3014, 0x3015, 0x0246,
+ 0x3016, 0x3017, 0x0250, 0xFF01, 0xFF01, 0x0242, 0xFF08, 0xFF09, 0x0244,
+ 0xFF0C, 0xFF0C, 0x023D, 0xFF0E, 0xFF0E, 0x1E1B, 0xFF1A, 0xFF1B, 0x0240,
+ 0xFF1D, 0xFF1D, 0x1E1C, 0xFF1F, 0xFF1F, 0x0243, 0xFF3B, 0xFF3B, 0x1E1D,
+ 0xFF3D, 0xFF3D, 0x1E1E, 0xFF3F, 0xFF3F, 0x0258, 0xFF5B, 0xFF5B, 0x0254,
+ 0xFF5D, 0xFF5D, 0x0255, 0xFF5E, 0xFF5E, 0x1E18, 0xFFE3, 0xFFE3, 0x1E1F,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.cpp b/core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.cpp
new file mode 100644
index 0000000000..4b34235a64
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.cpp
@@ -0,0 +1,55 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h"
+
+#include "core/fpdfapi/fpdf_cmaps/cmap_int.h"
+#include "core/fpdfapi/fpdf_font/font_int.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_resource.h"
+#include "core/include/fxcrt/fx_basic.h" // For FX_ArraySize().
+
+static const FXCMAP_CMap g_FXCMAP_GB1_cmaps[] = {
+ {"GB-EUC-H", FXCMAP_CMap::Range, g_FXCMAP_GB_EUC_H_0, 90, FXCMAP_CMap::None,
+ NULL, 0, 0},
+ {"GB-EUC-V", FXCMAP_CMap::Range, g_FXCMAP_GB_EUC_V_0, 20, FXCMAP_CMap::None,
+ NULL, 0, -1},
+ {"GBpc-EUC-H", FXCMAP_CMap::Range, g_FXCMAP_GBpc_EUC_H_0, 91,
+ FXCMAP_CMap::None, NULL, 0, 0},
+ {"GBpc-EUC-V", FXCMAP_CMap::Range, g_FXCMAP_GBpc_EUC_V_0, 20,
+ FXCMAP_CMap::None, NULL, 0, -1},
+ {"GBK-EUC-H", FXCMAP_CMap::Range, g_FXCMAP_GBK_EUC_H_2, 4071,
+ FXCMAP_CMap::None, NULL, 0, 0},
+ {"GBK-EUC-V", FXCMAP_CMap::Range, g_FXCMAP_GBK_EUC_V_2, 20,
+ FXCMAP_CMap::None, NULL, 0, -1},
+ {"GBKp-EUC-H", FXCMAP_CMap::Range, g_FXCMAP_GBKp_EUC_H_2, 4070,
+ FXCMAP_CMap::None, NULL, 0, -2},
+ {"GBKp-EUC-V", FXCMAP_CMap::Range, g_FXCMAP_GBKp_EUC_V_2, 20,
+ FXCMAP_CMap::None, NULL, 0, -1},
+ {"GBK2K-H", FXCMAP_CMap::Range, g_FXCMAP_GBK2K_H_5, 4071,
+ FXCMAP_CMap::Single, g_FXCMAP_GBK2K_H_5_DWord, 1017, -4},
+ {"GBK2K-V", FXCMAP_CMap::Range, g_FXCMAP_GBK2K_V_5, 41, FXCMAP_CMap::None,
+ NULL, 0, -1},
+ {"UniGB-UCS2-H", FXCMAP_CMap::Range, g_FXCMAP_UniGB_UCS2_H_4, 13825,
+ FXCMAP_CMap::None, NULL, 0, 0},
+ {"UniGB-UCS2-V", FXCMAP_CMap::Range, g_FXCMAP_UniGB_UCS2_V_4, 24,
+ FXCMAP_CMap::None, NULL, 0, -1},
+ {"UniGB-UTF16-H", FXCMAP_CMap::Range, g_FXCMAP_UniGB_UCS2_H_4, 13825,
+ FXCMAP_CMap::None, NULL, 0, 0},
+ {"UniGB-UTF16-V", FXCMAP_CMap::Range, g_FXCMAP_UniGB_UCS2_V_4, 24,
+ FXCMAP_CMap::None, NULL, 0, -1},
+};
+
+void CPDF_ModuleMgr::LoadEmbeddedGB1CMaps() {
+ CPDF_FontGlobals* pFontGlobals =
+ CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals();
+ pFontGlobals->m_EmbeddedCharsets[CIDSET_GB1].m_pMapList = g_FXCMAP_GB1_cmaps;
+ pFontGlobals->m_EmbeddedCharsets[CIDSET_GB1].m_Count =
+ FX_ArraySize(g_FXCMAP_GB1_cmaps);
+ pFontGlobals->m_EmbeddedToUnicodes[CIDSET_GB1].m_pMap =
+ g_FXCMAP_GB1CID2Unicode_5;
+ pFontGlobals->m_EmbeddedToUnicodes[CIDSET_GB1].m_Count = 30284;
+}
diff --git a/core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h b/core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h
new file mode 100644
index 0000000000..348783de9d
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/GB1/cmaps_gb1.h
@@ -0,0 +1,27 @@
+// Copyright 2015 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_FPDFAPI_FPDF_CMAPS_GB1_CMAPS_GB1_H_
+#define CORE_FPDFAPI_FPDF_CMAPS_GB1_CMAPS_GB1_H_
+
+#include "core/include/fxcrt/fx_system.h" // For FX_WORD.
+
+extern const FX_WORD g_FXCMAP_GB_EUC_H_0[];
+extern const FX_WORD g_FXCMAP_GB_EUC_V_0[];
+extern const FX_WORD g_FXCMAP_GBpc_EUC_H_0[];
+extern const FX_WORD g_FXCMAP_GBpc_EUC_V_0[];
+extern const FX_WORD g_FXCMAP_GBK_EUC_H_2[];
+extern const FX_WORD g_FXCMAP_GBK_EUC_V_2[];
+extern const FX_WORD g_FXCMAP_GBKp_EUC_H_2[];
+extern const FX_WORD g_FXCMAP_GBKp_EUC_V_2[];
+extern const FX_WORD g_FXCMAP_GBK2K_H_5[];
+extern const FX_WORD g_FXCMAP_GBK2K_H_5_DWord[];
+extern const FX_WORD g_FXCMAP_GBK2K_V_5[];
+extern const FX_WORD g_FXCMAP_UniGB_UCS2_H_4[];
+extern const FX_WORD g_FXCMAP_UniGB_UCS2_V_4[];
+extern const FX_WORD g_FXCMAP_GB1CID2Unicode_5[];
+
+#endif // CORE_FPDFAPI_FPDF_CMAPS_GB1_CMAPS_GB1_H_
diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/83pv-RKSJ-H_1.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/83pv-RKSJ-H_1.cpp
new file mode 100644
index 0000000000..19b3976a07
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Japan1/83pv-RKSJ-H_1.cpp
@@ -0,0 +1,84 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h"
+
+const FX_WORD g_FXCMAP_83pv_RKSJ_H_1[222 * 3] = {
+ 0x0020, 0x007E, 0x0001, 0x0080, 0x0080, 0x0061, 0x00A0, 0x00DF, 0x0146,
+ 0x00FD, 0x00FD, 0x0098, 0x00FE, 0x00FE, 0x00E4, 0x00FF, 0x00FF, 0x007C,
+ 0x8140, 0x817E, 0x0279, 0x8180, 0x81AC, 0x02B8, 0x81B8, 0x81BF, 0x02E5,
+ 0x81C8, 0x81CE, 0x02ED, 0x81DA, 0x81E8, 0x02F4, 0x81F0, 0x81F7, 0x0303,
+ 0x81FC, 0x81FC, 0x030B, 0x824F, 0x8258, 0x030C, 0x8260, 0x8279, 0x0316,
+ 0x8281, 0x829A, 0x0330, 0x829F, 0x82F1, 0x034A, 0x8340, 0x837E, 0x039D,
+ 0x8380, 0x8396, 0x03DC, 0x839F, 0x83B6, 0x03F3, 0x83BF, 0x83D6, 0x040B,
+ 0x8440, 0x8460, 0x0423, 0x8470, 0x847E, 0x0444, 0x8480, 0x8491, 0x0453,
+ 0x849F, 0x849F, 0x1D37, 0x84A0, 0x84A0, 0x1D39, 0x84A1, 0x84A1, 0x1D43,
+ 0x84A2, 0x84A2, 0x1D47, 0x84A3, 0x84A3, 0x1D4F, 0x84A4, 0x84A4, 0x1D4B,
+ 0x84A5, 0x84A5, 0x1D53, 0x84A6, 0x84A6, 0x1D63, 0x84A7, 0x84A7, 0x1D5B,
+ 0x84A8, 0x84A8, 0x1D6B, 0x84A9, 0x84A9, 0x1D73, 0x84AA, 0x84AA, 0x1D38,
+ 0x84AB, 0x84AB, 0x1D3A, 0x84AC, 0x84AC, 0x1D46, 0x84AD, 0x84AD, 0x1D4A,
+ 0x84AE, 0x84AE, 0x1D52, 0x84AF, 0x84AF, 0x1D4E, 0x84B0, 0x84B0, 0x1D5A,
+ 0x84B1, 0x84B1, 0x1D6A, 0x84B2, 0x84B2, 0x1D62, 0x84B3, 0x84B3, 0x1D72,
+ 0x84B4, 0x84B4, 0x1D82, 0x84B5, 0x84B5, 0x1D57, 0x84B6, 0x84B6, 0x1D66,
+ 0x84B7, 0x84B7, 0x1D5F, 0x84B8, 0x84B8, 0x1D6E, 0x84B9, 0x84B9, 0x1D76,
+ 0x84BA, 0x84BA, 0x1D54, 0x84BB, 0x84BB, 0x1D67, 0x84BC, 0x84BC, 0x1D5C,
+ 0x84BD, 0x84BD, 0x1D6F, 0x84BE, 0x84BE, 0x1D79, 0x8540, 0x857E, 0x00E8,
+ 0x8580, 0x8580, 0x0186, 0x8581, 0x859E, 0x0128, 0x859F, 0x85DD, 0x0147,
+ 0x85DE, 0x85FC, 0x0187, 0x8640, 0x867E, 0x01A6, 0x8680, 0x8691, 0x01E5,
+ 0x8692, 0x8692, 0x0127, 0x8693, 0x869E, 0x01F7, 0x86A2, 0x86ED, 0x1D37,
+ 0x8740, 0x875D, 0x1D83, 0x875F, 0x8775, 0x1DA1, 0x8780, 0x878F, 0x1DB8,
+ 0x8790, 0x8790, 0x02FA, 0x8791, 0x8791, 0x02F9, 0x8792, 0x8792, 0x0301,
+ 0x8793, 0x8799, 0x1DC8, 0x879A, 0x879A, 0x0300, 0x879B, 0x879C, 0x1DCF,
+ 0x889F, 0x88FC, 0x0465, 0x8940, 0x897E, 0x04C3, 0x8980, 0x89FC, 0x0502,
+ 0x8A40, 0x8A7E, 0x057F, 0x8A80, 0x8AFC, 0x05BE, 0x8B40, 0x8B7E, 0x063B,
+ 0x8B80, 0x8BFC, 0x067A, 0x8C40, 0x8C7E, 0x06F7, 0x8C80, 0x8CFC, 0x0736,
+ 0x8D40, 0x8D7E, 0x07B3, 0x8D80, 0x8DFC, 0x07F2, 0x8E40, 0x8E7E, 0x086F,
+ 0x8E80, 0x8EFC, 0x08AE, 0x8F40, 0x8F7E, 0x092B, 0x8F80, 0x8FFC, 0x096A,
+ 0x9040, 0x907E, 0x09E7, 0x9080, 0x90FC, 0x0A26, 0x9140, 0x917E, 0x0AA3,
+ 0x9180, 0x91FC, 0x0AE2, 0x9240, 0x927E, 0x0B5F, 0x9280, 0x92FC, 0x0B9E,
+ 0x9340, 0x937E, 0x0C1B, 0x9380, 0x93FC, 0x0C5A, 0x9440, 0x947E, 0x0CD7,
+ 0x9480, 0x94FC, 0x0D16, 0x9540, 0x957E, 0x0D93, 0x9580, 0x95FC, 0x0DD2,
+ 0x9640, 0x967E, 0x0E4F, 0x9680, 0x96FC, 0x0E8E, 0x9740, 0x977E, 0x0F0B,
+ 0x9780, 0x97FC, 0x0F4A, 0x9840, 0x9872, 0x0FC7, 0x989F, 0x98FC, 0x0FFA,
+ 0x9940, 0x997E, 0x1058, 0x9980, 0x99FC, 0x1097, 0x9A40, 0x9A7E, 0x1114,
+ 0x9A80, 0x9AFC, 0x1153, 0x9B40, 0x9B7E, 0x11D0, 0x9B80, 0x9BFC, 0x120F,
+ 0x9C40, 0x9C7E, 0x128C, 0x9C80, 0x9CFC, 0x12CB, 0x9D40, 0x9D7E, 0x1348,
+ 0x9D80, 0x9DFC, 0x1387, 0x9E40, 0x9E7E, 0x1404, 0x9E80, 0x9EFC, 0x1443,
+ 0x9F40, 0x9F7E, 0x14C0, 0x9F80, 0x9FFC, 0x14FF, 0xE040, 0xE07E, 0x157C,
+ 0xE080, 0xE0FC, 0x15BB, 0xE140, 0xE17E, 0x1638, 0xE180, 0xE1FC, 0x1677,
+ 0xE240, 0xE27E, 0x16F4, 0xE280, 0xE2FC, 0x1733, 0xE340, 0xE37E, 0x17B0,
+ 0xE380, 0xE3FC, 0x17EF, 0xE440, 0xE47E, 0x186C, 0xE480, 0xE4FC, 0x18AB,
+ 0xE540, 0xE57E, 0x1928, 0xE580, 0xE5FC, 0x1967, 0xE640, 0xE67E, 0x19E4,
+ 0xE680, 0xE6FC, 0x1A23, 0xE740, 0xE77E, 0x1AA0, 0xE780, 0xE7FC, 0x1ADF,
+ 0xE840, 0xE87E, 0x1B5C, 0xE880, 0xE8FC, 0x1B9B, 0xE940, 0xE97E, 0x1C18,
+ 0xE980, 0xE9FC, 0x1C57, 0xEA40, 0xEA7E, 0x1CD4, 0xEA80, 0xEAA2, 0x1D13,
+ 0xEAA3, 0xEAA4, 0x205C, 0xEB40, 0xEB40, 0x0279, 0xEB41, 0xEB42, 0x1ECF,
+ 0xEB43, 0xEB4F, 0x027C, 0xEB50, 0xEB51, 0x1ED1, 0xEB52, 0xEB5A, 0x028B,
+ 0xEB5B, 0xEB5D, 0x1ED3, 0xEB5E, 0xEB5F, 0x0297, 0xEB60, 0xEB64, 0x1ED6,
+ 0xEB65, 0xEB68, 0x029E, 0xEB69, 0xEB7A, 0x1EDB, 0xEB7B, 0xEB7E, 0x02B4,
+ 0xEB80, 0xEB80, 0x02B8, 0xEB81, 0xEB81, 0x1EED, 0xEB82, 0xEBAC, 0x02BA,
+ 0xEBB8, 0xEBBF, 0x02E5, 0xEBC8, 0xEBCE, 0x02ED, 0xEBDA, 0xEBE8, 0x02F4,
+ 0xEBF0, 0xEBF7, 0x0303, 0xEBFC, 0xEBFC, 0x030B, 0xEC4F, 0xEC58, 0x030C,
+ 0xEC60, 0xEC79, 0x0316, 0xEC81, 0xEC9A, 0x0330, 0xEC9F, 0xEC9F, 0x1EEE,
+ 0xECA0, 0xECA0, 0x034B, 0xECA1, 0xECA1, 0x1EEF, 0xECA2, 0xECA2, 0x034D,
+ 0xECA3, 0xECA3, 0x1EF0, 0xECA4, 0xECA4, 0x034F, 0xECA5, 0xECA5, 0x1EF1,
+ 0xECA6, 0xECA6, 0x0351, 0xECA7, 0xECA7, 0x1EF2, 0xECA8, 0xECC0, 0x0353,
+ 0xECC1, 0xECC1, 0x1EF3, 0xECC2, 0xECE0, 0x036D, 0xECE1, 0xECE1, 0x1EF4,
+ 0xECE2, 0xECE2, 0x038D, 0xECE3, 0xECE3, 0x1EF5, 0xECE4, 0xECE4, 0x038F,
+ 0xECE5, 0xECE5, 0x1EF6, 0xECE6, 0xECEB, 0x0391, 0xECEC, 0xECEC, 0x1EF7,
+ 0xECED, 0xECF1, 0x0398, 0xED40, 0xED40, 0x1EF8, 0xED41, 0xED41, 0x039E,
+ 0xED42, 0xED42, 0x1EF9, 0xED43, 0xED43, 0x03A0, 0xED44, 0xED44, 0x1EFA,
+ 0xED45, 0xED45, 0x03A2, 0xED46, 0xED46, 0x1EFB, 0xED47, 0xED47, 0x03A4,
+ 0xED48, 0xED48, 0x1EFC, 0xED49, 0xED61, 0x03A6, 0xED62, 0xED62, 0x1EFD,
+ 0xED63, 0xED7E, 0x03C0, 0xED80, 0xED82, 0x03DC, 0xED83, 0xED83, 0x1EFE,
+ 0xED84, 0xED84, 0x03E0, 0xED85, 0xED85, 0x1EFF, 0xED86, 0xED86, 0x03E2,
+ 0xED87, 0xED87, 0x1F00, 0xED88, 0xED8D, 0x03E4, 0xED8E, 0xED8E, 0x1F01,
+ 0xED8F, 0xED94, 0x03EB, 0xED95, 0xED96, 0x1F02, 0xED9F, 0xEDB6, 0x03F3,
+ 0xEDBF, 0xEDD6, 0x040B, 0xEE40, 0xEE5D, 0x1D83, 0xEE5F, 0xEE6E, 0x1F04,
+ 0xEE6F, 0xEE75, 0x1DB1, 0xEE80, 0xEE81, 0x1F14, 0xEE82, 0xEE8F, 0x1DBA,
+ 0xEE90, 0xEE90, 0x02FA, 0xEE91, 0xEE91, 0x02F9, 0xEE92, 0xEE92, 0x0301,
+ 0xEE93, 0xEE99, 0x1DC8, 0xEE9A, 0xEE9A, 0x0300, 0xEE9B, 0xEE9C, 0x1DCF,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-H_2.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-H_2.cpp
new file mode 100644
index 0000000000..d38111784e
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-H_2.cpp
@@ -0,0 +1,67 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h"
+
+const FX_WORD g_FXCMAP_90ms_RKSJ_H_2[171 * 3] = {
+ 0x0020, 0x007D, 0x00E7, 0x007E, 0x007E, 0x0277, 0x00A0, 0x00DF, 0x0146,
+ 0x8140, 0x817E, 0x0279, 0x8180, 0x81AC, 0x02B8, 0x81B8, 0x81BF, 0x02E5,
+ 0x81C8, 0x81CE, 0x02ED, 0x81DA, 0x81E8, 0x02F4, 0x81F0, 0x81F7, 0x0303,
+ 0x81FC, 0x81FC, 0x030B, 0x824F, 0x8258, 0x030C, 0x8260, 0x8279, 0x0316,
+ 0x8281, 0x829A, 0x0330, 0x829F, 0x82F1, 0x034A, 0x8340, 0x837E, 0x039D,
+ 0x8380, 0x8396, 0x03DC, 0x839F, 0x83B6, 0x03F3, 0x83BF, 0x83D6, 0x040B,
+ 0x8440, 0x8460, 0x0423, 0x8470, 0x847E, 0x0444, 0x8480, 0x8491, 0x0453,
+ 0x849F, 0x849F, 0x1D37, 0x84A0, 0x84A0, 0x1D39, 0x84A1, 0x84A1, 0x1D43,
+ 0x84A2, 0x84A2, 0x1D47, 0x84A3, 0x84A3, 0x1D4F, 0x84A4, 0x84A4, 0x1D4B,
+ 0x84A5, 0x84A5, 0x1D53, 0x84A6, 0x84A6, 0x1D63, 0x84A7, 0x84A7, 0x1D5B,
+ 0x84A8, 0x84A8, 0x1D6B, 0x84A9, 0x84A9, 0x1D73, 0x84AA, 0x84AA, 0x1D38,
+ 0x84AB, 0x84AB, 0x1D3A, 0x84AC, 0x84AC, 0x1D46, 0x84AD, 0x84AD, 0x1D4A,
+ 0x84AE, 0x84AE, 0x1D52, 0x84AF, 0x84AF, 0x1D4E, 0x84B0, 0x84B0, 0x1D5A,
+ 0x84B1, 0x84B1, 0x1D6A, 0x84B2, 0x84B2, 0x1D62, 0x84B3, 0x84B3, 0x1D72,
+ 0x84B4, 0x84B4, 0x1D82, 0x84B5, 0x84B5, 0x1D57, 0x84B6, 0x84B6, 0x1D66,
+ 0x84B7, 0x84B7, 0x1D5F, 0x84B8, 0x84B8, 0x1D6E, 0x84B9, 0x84B9, 0x1D76,
+ 0x84BA, 0x84BA, 0x1D54, 0x84BB, 0x84BB, 0x1D67, 0x84BC, 0x84BC, 0x1D5C,
+ 0x84BD, 0x84BD, 0x1D6F, 0x84BE, 0x84BE, 0x1D79, 0x8740, 0x875D, 0x1D83,
+ 0x875F, 0x8760, 0x1DA1, 0x8761, 0x8761, 0x1F66, 0x8762, 0x8762, 0x1DA4,
+ 0x8763, 0x8763, 0x1F68, 0x8764, 0x8764, 0x1DA6, 0x8765, 0x8765, 0x1F6A,
+ 0x8766, 0x8767, 0x1DA8, 0x8768, 0x8768, 0x1F6C, 0x8769, 0x876A, 0x1DAB,
+ 0x876B, 0x876B, 0x1F6B, 0x876C, 0x876D, 0x1DAE, 0x876E, 0x876E, 0x1F6F,
+ 0x876F, 0x8775, 0x1DB1, 0x877E, 0x877E, 0x2083, 0x8780, 0x8783, 0x1DB8,
+ 0x8784, 0x8784, 0x1F77, 0x8785, 0x878F, 0x1DBD, 0x8790, 0x8790, 0x02FA,
+ 0x8791, 0x8791, 0x02F9, 0x8792, 0x8792, 0x0301, 0x8793, 0x8799, 0x1DC8,
+ 0x879A, 0x879A, 0x0300, 0x879B, 0x879C, 0x1DCF, 0x889F, 0x88FC, 0x0465,
+ 0x8940, 0x897E, 0x04C3, 0x8980, 0x89FC, 0x0502, 0x8A40, 0x8A7E, 0x057F,
+ 0x8A80, 0x8AFC, 0x05BE, 0x8B40, 0x8B7E, 0x063B, 0x8B80, 0x8BFC, 0x067A,
+ 0x8C40, 0x8C7E, 0x06F7, 0x8C80, 0x8CFC, 0x0736, 0x8D40, 0x8D7E, 0x07B3,
+ 0x8D80, 0x8DFC, 0x07F2, 0x8E40, 0x8E7E, 0x086F, 0x8E80, 0x8EFC, 0x08AE,
+ 0x8F40, 0x8F7E, 0x092B, 0x8F80, 0x8FFC, 0x096A, 0x9040, 0x907E, 0x09E7,
+ 0x9080, 0x90FC, 0x0A26, 0x9140, 0x917E, 0x0AA3, 0x9180, 0x91FC, 0x0AE2,
+ 0x9240, 0x927E, 0x0B5F, 0x9280, 0x92FC, 0x0B9E, 0x9340, 0x937E, 0x0C1B,
+ 0x9380, 0x93FC, 0x0C5A, 0x9440, 0x947E, 0x0CD7, 0x9480, 0x94FC, 0x0D16,
+ 0x9540, 0x957E, 0x0D93, 0x9580, 0x95FC, 0x0DD2, 0x9640, 0x967E, 0x0E4F,
+ 0x9680, 0x96FC, 0x0E8E, 0x9740, 0x977E, 0x0F0B, 0x9780, 0x97FC, 0x0F4A,
+ 0x9840, 0x9872, 0x0FC7, 0x989F, 0x98FC, 0x0FFA, 0x9940, 0x997E, 0x1058,
+ 0x9980, 0x99FC, 0x1097, 0x9A40, 0x9A7E, 0x1114, 0x9A80, 0x9AFC, 0x1153,
+ 0x9B40, 0x9B7E, 0x11D0, 0x9B80, 0x9BFC, 0x120F, 0x9C40, 0x9C7E, 0x128C,
+ 0x9C80, 0x9CFC, 0x12CB, 0x9D40, 0x9D7E, 0x1348, 0x9D80, 0x9DFC, 0x1387,
+ 0x9E40, 0x9E7E, 0x1404, 0x9E80, 0x9EFC, 0x1443, 0x9F40, 0x9F7E, 0x14C0,
+ 0x9F80, 0x9FFC, 0x14FF, 0xE040, 0xE07E, 0x157C, 0xE080, 0xE0FC, 0x15BB,
+ 0xE140, 0xE17E, 0x1638, 0xE180, 0xE1FC, 0x1677, 0xE240, 0xE27E, 0x16F4,
+ 0xE280, 0xE2FC, 0x1733, 0xE340, 0xE37E, 0x17B0, 0xE380, 0xE3FC, 0x17EF,
+ 0xE440, 0xE47E, 0x186C, 0xE480, 0xE4FC, 0x18AB, 0xE540, 0xE57E, 0x1928,
+ 0xE580, 0xE5FC, 0x1967, 0xE640, 0xE67E, 0x19E4, 0xE680, 0xE6FC, 0x1A23,
+ 0xE740, 0xE77E, 0x1AA0, 0xE780, 0xE7FC, 0x1ADF, 0xE840, 0xE87E, 0x1B5C,
+ 0xE880, 0xE8FC, 0x1B9B, 0xE940, 0xE97E, 0x1C18, 0xE980, 0xE9FC, 0x1C57,
+ 0xEA40, 0xEA7E, 0x1CD4, 0xEA80, 0xEAA2, 0x1D13, 0xEAA3, 0xEAA4, 0x205C,
+ 0xED40, 0xED7E, 0x20A7, 0xED80, 0xEDB3, 0x20E6, 0xEDB4, 0xEDB4, 0x07C9,
+ 0xEDB5, 0xEDFC, 0x211A, 0xEE40, 0xEE7E, 0x2162, 0xEE80, 0xEEEC, 0x21A1,
+ 0xEEEF, 0xEEF8, 0x1F9C, 0xEEF9, 0xEEF9, 0x02EF, 0xEEFA, 0xEEFC, 0x1F45,
+ 0xFA40, 0xFA49, 0x1F9C, 0xFA4A, 0xFA53, 0x1D97, 0xFA54, 0xFA54, 0x02EF,
+ 0xFA55, 0xFA57, 0x1F45, 0xFA58, 0xFA58, 0x1DC2, 0xFA59, 0xFA59, 0x1DBA,
+ 0xFA5A, 0xFA5A, 0x1F77, 0xFA5B, 0xFA5B, 0x0300, 0xFA5C, 0xFA7E, 0x20A7,
+ 0xFA80, 0xFACF, 0x20CA, 0xFAD0, 0xFAD0, 0x07C9, 0xFAD1, 0xFAFC, 0x211A,
+ 0xFB40, 0xFB7E, 0x2146, 0xFB80, 0xFBFC, 0x2185, 0xFC40, 0xFC4B, 0x2202,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-V_2.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-V_2.cpp
new file mode 100644
index 0000000000..31a9ae55e2
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Japan1/90ms-RKSJ-V_2.cpp
@@ -0,0 +1,36 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h"
+
+const FX_WORD g_FXCMAP_90ms_RKSJ_V_2[78 * 3] = {
+ 0x8141, 0x8142, 0x1ECF, 0x8143, 0x8143, 0x204C, 0x8144, 0x8144, 0x2052,
+ 0x8150, 0x8151, 0x1ED1, 0x815B, 0x815D, 0x1ED3, 0x8160, 0x8164, 0x1ED6,
+ 0x8169, 0x817A, 0x1EDB, 0x8181, 0x8181, 0x1EED, 0x81A8, 0x81A8, 0x02E3,
+ 0x81A9, 0x81A9, 0x02E2, 0x81AA, 0x81AB, 0x02E0, 0x81AC, 0x81AC, 0x204E,
+ 0x829F, 0x829F, 0x1EEE, 0x82A1, 0x82A1, 0x1EEF, 0x82A3, 0x82A3, 0x1EF0,
+ 0x82A5, 0x82A5, 0x1EF1, 0x82A7, 0x82A7, 0x1EF2, 0x82C1, 0x82C1, 0x1EF3,
+ 0x82E1, 0x82E1, 0x1EF4, 0x82E3, 0x82E3, 0x1EF5, 0x82E5, 0x82E5, 0x1EF6,
+ 0x82EC, 0x82EC, 0x1EF7, 0x8340, 0x8340, 0x1EF8, 0x8342, 0x8342, 0x1EF9,
+ 0x8344, 0x8344, 0x1EFA, 0x8346, 0x8346, 0x1EFB, 0x8348, 0x8348, 0x1EFC,
+ 0x8362, 0x8362, 0x1EFD, 0x8383, 0x8383, 0x1EFE, 0x8385, 0x8385, 0x1EFF,
+ 0x8387, 0x8387, 0x1F00, 0x838E, 0x838E, 0x1F01, 0x8395, 0x8396, 0x1F02,
+ 0x849F, 0x849F, 0x1D39, 0x84A0, 0x84A0, 0x1D37, 0x84A1, 0x84A1, 0x1D47,
+ 0x84A2, 0x84A2, 0x1D4F, 0x84A3, 0x84A3, 0x1D4B, 0x84A4, 0x84A4, 0x1D43,
+ 0x84A5, 0x84A5, 0x1D63, 0x84A6, 0x84A6, 0x1D5B, 0x84A7, 0x84A7, 0x1D6B,
+ 0x84A8, 0x84A8, 0x1D53, 0x84A9, 0x84A9, 0x1D73, 0x84AA, 0x84AA, 0x1D3A,
+ 0x84AB, 0x84AB, 0x1D38, 0x84AC, 0x84AC, 0x1D4A, 0x84AD, 0x84AD, 0x1D52,
+ 0x84AE, 0x84AE, 0x1D4E, 0x84AF, 0x84AF, 0x1D46, 0x84B0, 0x84B0, 0x1D6A,
+ 0x84B1, 0x84B1, 0x1D62, 0x84B2, 0x84B2, 0x1D72, 0x84B3, 0x84B3, 0x1D5A,
+ 0x84B4, 0x84B4, 0x1D82, 0x84B5, 0x84B5, 0x1D66, 0x84B6, 0x84B6, 0x1D5F,
+ 0x84B7, 0x84B7, 0x1D6E, 0x84B8, 0x84B8, 0x1D57, 0x84B9, 0x84B9, 0x1D79,
+ 0x84BA, 0x84BA, 0x1D67, 0x84BB, 0x84BB, 0x1D5C, 0x84BC, 0x84BC, 0x1D6F,
+ 0x84BD, 0x84BD, 0x1D54, 0x84BE, 0x84BE, 0x1D76, 0x875F, 0x8760, 0x1F04,
+ 0x8761, 0x8761, 0x2089, 0x8762, 0x8762, 0x1F07, 0x8763, 0x8763, 0x2093,
+ 0x8764, 0x8764, 0x1F09, 0x8765, 0x8765, 0x2092, 0x8766, 0x8767, 0x1F0B,
+ 0x8768, 0x8768, 0x2098, 0x8769, 0x876A, 0x1F0E, 0x876B, 0x876B, 0x209C,
+ 0x876C, 0x876D, 0x1F11, 0x876E, 0x876E, 0x209D, 0x8780, 0x8781, 0x1F14,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-H_2.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-H_2.cpp
new file mode 100644
index 0000000000..dd930ea66d
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-H_2.cpp
@@ -0,0 +1,67 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h"
+
+const FX_WORD g_FXCMAP_90msp_RKSJ_H_2[170 * 3] = {
+ 0x0020, 0x007E, 0x0001, 0x00A0, 0x00DF, 0x0146, 0x8140, 0x817E, 0x0279,
+ 0x8180, 0x81AC, 0x02B8, 0x81B8, 0x81BF, 0x02E5, 0x81C8, 0x81CE, 0x02ED,
+ 0x81DA, 0x81E8, 0x02F4, 0x81F0, 0x81F7, 0x0303, 0x81FC, 0x81FC, 0x030B,
+ 0x824F, 0x8258, 0x030C, 0x8260, 0x8279, 0x0316, 0x8281, 0x829A, 0x0330,
+ 0x829F, 0x82F1, 0x034A, 0x8340, 0x837E, 0x039D, 0x8380, 0x8396, 0x03DC,
+ 0x839F, 0x83B6, 0x03F3, 0x83BF, 0x83D6, 0x040B, 0x8440, 0x8460, 0x0423,
+ 0x8470, 0x847E, 0x0444, 0x8480, 0x8491, 0x0453, 0x849F, 0x849F, 0x1D37,
+ 0x84A0, 0x84A0, 0x1D39, 0x84A1, 0x84A1, 0x1D43, 0x84A2, 0x84A2, 0x1D47,
+ 0x84A3, 0x84A3, 0x1D4F, 0x84A4, 0x84A4, 0x1D4B, 0x84A5, 0x84A5, 0x1D53,
+ 0x84A6, 0x84A6, 0x1D63, 0x84A7, 0x84A7, 0x1D5B, 0x84A8, 0x84A8, 0x1D6B,
+ 0x84A9, 0x84A9, 0x1D73, 0x84AA, 0x84AA, 0x1D38, 0x84AB, 0x84AB, 0x1D3A,
+ 0x84AC, 0x84AC, 0x1D46, 0x84AD, 0x84AD, 0x1D4A, 0x84AE, 0x84AE, 0x1D52,
+ 0x84AF, 0x84AF, 0x1D4E, 0x84B0, 0x84B0, 0x1D5A, 0x84B1, 0x84B1, 0x1D6A,
+ 0x84B2, 0x84B2, 0x1D62, 0x84B3, 0x84B3, 0x1D72, 0x84B4, 0x84B4, 0x1D82,
+ 0x84B5, 0x84B5, 0x1D57, 0x84B6, 0x84B6, 0x1D66, 0x84B7, 0x84B7, 0x1D5F,
+ 0x84B8, 0x84B8, 0x1D6E, 0x84B9, 0x84B9, 0x1D76, 0x84BA, 0x84BA, 0x1D54,
+ 0x84BB, 0x84BB, 0x1D67, 0x84BC, 0x84BC, 0x1D5C, 0x84BD, 0x84BD, 0x1D6F,
+ 0x84BE, 0x84BE, 0x1D79, 0x8740, 0x875D, 0x1D83, 0x875F, 0x8760, 0x1DA1,
+ 0x8761, 0x8761, 0x1F66, 0x8762, 0x8762, 0x1DA4, 0x8763, 0x8763, 0x1F68,
+ 0x8764, 0x8764, 0x1DA6, 0x8765, 0x8765, 0x1F6A, 0x8766, 0x8767, 0x1DA8,
+ 0x8768, 0x8768, 0x1F6C, 0x8769, 0x876A, 0x1DAB, 0x876B, 0x876B, 0x1F6B,
+ 0x876C, 0x876D, 0x1DAE, 0x876E, 0x876E, 0x1F6F, 0x876F, 0x8775, 0x1DB1,
+ 0x877E, 0x877E, 0x2083, 0x8780, 0x8783, 0x1DB8, 0x8784, 0x8784, 0x1F77,
+ 0x8785, 0x878F, 0x1DBD, 0x8790, 0x8790, 0x02FA, 0x8791, 0x8791, 0x02F9,
+ 0x8792, 0x8792, 0x0301, 0x8793, 0x8799, 0x1DC8, 0x879A, 0x879A, 0x0300,
+ 0x879B, 0x879C, 0x1DCF, 0x889F, 0x88FC, 0x0465, 0x8940, 0x897E, 0x04C3,
+ 0x8980, 0x89FC, 0x0502, 0x8A40, 0x8A7E, 0x057F, 0x8A80, 0x8AFC, 0x05BE,
+ 0x8B40, 0x8B7E, 0x063B, 0x8B80, 0x8BFC, 0x067A, 0x8C40, 0x8C7E, 0x06F7,
+ 0x8C80, 0x8CFC, 0x0736, 0x8D40, 0x8D7E, 0x07B3, 0x8D80, 0x8DFC, 0x07F2,
+ 0x8E40, 0x8E7E, 0x086F, 0x8E80, 0x8EFC, 0x08AE, 0x8F40, 0x8F7E, 0x092B,
+ 0x8F80, 0x8FFC, 0x096A, 0x9040, 0x907E, 0x09E7, 0x9080, 0x90FC, 0x0A26,
+ 0x9140, 0x917E, 0x0AA3, 0x9180, 0x91FC, 0x0AE2, 0x9240, 0x927E, 0x0B5F,
+ 0x9280, 0x92FC, 0x0B9E, 0x9340, 0x937E, 0x0C1B, 0x9380, 0x93FC, 0x0C5A,
+ 0x9440, 0x947E, 0x0CD7, 0x9480, 0x94FC, 0x0D16, 0x9540, 0x957E, 0x0D93,
+ 0x9580, 0x95FC, 0x0DD2, 0x9640, 0x967E, 0x0E4F, 0x9680, 0x96FC, 0x0E8E,
+ 0x9740, 0x977E, 0x0F0B, 0x9780, 0x97FC, 0x0F4A, 0x9840, 0x9872, 0x0FC7,
+ 0x989F, 0x98FC, 0x0FFA, 0x9940, 0x997E, 0x1058, 0x9980, 0x99FC, 0x1097,
+ 0x9A40, 0x9A7E, 0x1114, 0x9A80, 0x9AFC, 0x1153, 0x9B40, 0x9B7E, 0x11D0,
+ 0x9B80, 0x9BFC, 0x120F, 0x9C40, 0x9C7E, 0x128C, 0x9C80, 0x9CFC, 0x12CB,
+ 0x9D40, 0x9D7E, 0x1348, 0x9D80, 0x9DFC, 0x1387, 0x9E40, 0x9E7E, 0x1404,
+ 0x9E80, 0x9EFC, 0x1443, 0x9F40, 0x9F7E, 0x14C0, 0x9F80, 0x9FFC, 0x14FF,
+ 0xE040, 0xE07E, 0x157C, 0xE080, 0xE0FC, 0x15BB, 0xE140, 0xE17E, 0x1638,
+ 0xE180, 0xE1FC, 0x1677, 0xE240, 0xE27E, 0x16F4, 0xE280, 0xE2FC, 0x1733,
+ 0xE340, 0xE37E, 0x17B0, 0xE380, 0xE3FC, 0x17EF, 0xE440, 0xE47E, 0x186C,
+ 0xE480, 0xE4FC, 0x18AB, 0xE540, 0xE57E, 0x1928, 0xE580, 0xE5FC, 0x1967,
+ 0xE640, 0xE67E, 0x19E4, 0xE680, 0xE6FC, 0x1A23, 0xE740, 0xE77E, 0x1AA0,
+ 0xE780, 0xE7FC, 0x1ADF, 0xE840, 0xE87E, 0x1B5C, 0xE880, 0xE8FC, 0x1B9B,
+ 0xE940, 0xE97E, 0x1C18, 0xE980, 0xE9FC, 0x1C57, 0xEA40, 0xEA7E, 0x1CD4,
+ 0xEA80, 0xEAA2, 0x1D13, 0xEAA3, 0xEAA4, 0x205C, 0xED40, 0xED7E, 0x20A7,
+ 0xED80, 0xEDB3, 0x20E6, 0xEDB4, 0xEDB4, 0x07C9, 0xEDB5, 0xEDFC, 0x211A,
+ 0xEE40, 0xEE7E, 0x2162, 0xEE80, 0xEEEC, 0x21A1, 0xEEEF, 0xEEF8, 0x1F9C,
+ 0xEEF9, 0xEEF9, 0x02EF, 0xEEFA, 0xEEFC, 0x1F45, 0xFA40, 0xFA49, 0x1F9C,
+ 0xFA4A, 0xFA53, 0x1D97, 0xFA54, 0xFA54, 0x02EF, 0xFA55, 0xFA57, 0x1F45,
+ 0xFA58, 0xFA58, 0x1DC2, 0xFA59, 0xFA59, 0x1DBA, 0xFA5A, 0xFA5A, 0x1F77,
+ 0xFA5B, 0xFA5B, 0x0300, 0xFA5C, 0xFA7E, 0x20A7, 0xFA80, 0xFACF, 0x20CA,
+ 0xFAD0, 0xFAD0, 0x07C9, 0xFAD1, 0xFAFC, 0x211A, 0xFB40, 0xFB7E, 0x2146,
+ 0xFB80, 0xFBFC, 0x2185, 0xFC40, 0xFC4B, 0x2202,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-V_2.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-V_2.cpp
new file mode 100644
index 0000000000..a9731c4f8a
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Japan1/90msp-RKSJ-V_2.cpp
@@ -0,0 +1,36 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h"
+
+const FX_WORD g_FXCMAP_90msp_RKSJ_V_2[78 * 3] = {
+ 0x8141, 0x8142, 0x1ECF, 0x8143, 0x8143, 0x204C, 0x8144, 0x8144, 0x2052,
+ 0x8150, 0x8151, 0x1ED1, 0x815B, 0x815D, 0x1ED3, 0x8160, 0x8164, 0x1ED6,
+ 0x8169, 0x817A, 0x1EDB, 0x8181, 0x8181, 0x1EED, 0x81A8, 0x81A8, 0x02E3,
+ 0x81A9, 0x81A9, 0x02E2, 0x81AA, 0x81AB, 0x02E0, 0x81AC, 0x81AC, 0x204E,
+ 0x829F, 0x829F, 0x1EEE, 0x82A1, 0x82A1, 0x1EEF, 0x82A3, 0x82A3, 0x1EF0,
+ 0x82A5, 0x82A5, 0x1EF1, 0x82A7, 0x82A7, 0x1EF2, 0x82C1, 0x82C1, 0x1EF3,
+ 0x82E1, 0x82E1, 0x1EF4, 0x82E3, 0x82E3, 0x1EF5, 0x82E5, 0x82E5, 0x1EF6,
+ 0x82EC, 0x82EC, 0x1EF7, 0x8340, 0x8340, 0x1EF8, 0x8342, 0x8342, 0x1EF9,
+ 0x8344, 0x8344, 0x1EFA, 0x8346, 0x8346, 0x1EFB, 0x8348, 0x8348, 0x1EFC,
+ 0x8362, 0x8362, 0x1EFD, 0x8383, 0x8383, 0x1EFE, 0x8385, 0x8385, 0x1EFF,
+ 0x8387, 0x8387, 0x1F00, 0x838E, 0x838E, 0x1F01, 0x8395, 0x8396, 0x1F02,
+ 0x849F, 0x849F, 0x1D39, 0x84A0, 0x84A0, 0x1D37, 0x84A1, 0x84A1, 0x1D47,
+ 0x84A2, 0x84A2, 0x1D4F, 0x84A3, 0x84A3, 0x1D4B, 0x84A4, 0x84A4, 0x1D43,
+ 0x84A5, 0x84A5, 0x1D63, 0x84A6, 0x84A6, 0x1D5B, 0x84A7, 0x84A7, 0x1D6B,
+ 0x84A8, 0x84A8, 0x1D53, 0x84A9, 0x84A9, 0x1D73, 0x84AA, 0x84AA, 0x1D3A,
+ 0x84AB, 0x84AB, 0x1D38, 0x84AC, 0x84AC, 0x1D4A, 0x84AD, 0x84AD, 0x1D52,
+ 0x84AE, 0x84AE, 0x1D4E, 0x84AF, 0x84AF, 0x1D46, 0x84B0, 0x84B0, 0x1D6A,
+ 0x84B1, 0x84B1, 0x1D62, 0x84B2, 0x84B2, 0x1D72, 0x84B3, 0x84B3, 0x1D5A,
+ 0x84B4, 0x84B4, 0x1D82, 0x84B5, 0x84B5, 0x1D66, 0x84B6, 0x84B6, 0x1D5F,
+ 0x84B7, 0x84B7, 0x1D6E, 0x84B8, 0x84B8, 0x1D57, 0x84B9, 0x84B9, 0x1D79,
+ 0x84BA, 0x84BA, 0x1D67, 0x84BB, 0x84BB, 0x1D5C, 0x84BC, 0x84BC, 0x1D6F,
+ 0x84BD, 0x84BD, 0x1D54, 0x84BE, 0x84BE, 0x1D76, 0x875F, 0x8760, 0x1F04,
+ 0x8761, 0x8761, 0x2089, 0x8762, 0x8762, 0x1F07, 0x8763, 0x8763, 0x2093,
+ 0x8764, 0x8764, 0x1F09, 0x8765, 0x8765, 0x2092, 0x8766, 0x8767, 0x1F0B,
+ 0x8768, 0x8768, 0x2098, 0x8769, 0x876A, 0x1F0E, 0x876B, 0x876B, 0x209C,
+ 0x876C, 0x876D, 0x1F11, 0x876E, 0x876E, 0x209D, 0x8780, 0x8781, 0x1F14,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/90pv-RKSJ-H_1.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/90pv-RKSJ-H_1.cpp
new file mode 100644
index 0000000000..331e75614c
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Japan1/90pv-RKSJ-H_1.cpp
@@ -0,0 +1,98 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h"
+
+const FX_WORD g_FXCMAP_90pv_RKSJ_H_1[263 * 3] = {
+ 0x0020, 0x007E, 0x0001, 0x0080, 0x0080, 0x0061, 0x00A0, 0x00DF, 0x0146,
+ 0x00FD, 0x00FD, 0x0098, 0x00FE, 0x00FE, 0x00E4, 0x00FF, 0x00FF, 0x007C,
+ 0x8140, 0x817E, 0x0279, 0x8180, 0x81AC, 0x02B8, 0x81B8, 0x81BF, 0x02E5,
+ 0x81C8, 0x81CE, 0x02ED, 0x81DA, 0x81E8, 0x02F4, 0x81F0, 0x81F7, 0x0303,
+ 0x81FC, 0x81FC, 0x030B, 0x824F, 0x8258, 0x030C, 0x8260, 0x8279, 0x0316,
+ 0x8281, 0x829A, 0x0330, 0x829F, 0x82F1, 0x034A, 0x8340, 0x837E, 0x039D,
+ 0x8380, 0x8396, 0x03DC, 0x839F, 0x83B6, 0x03F3, 0x83BF, 0x83D6, 0x040B,
+ 0x8440, 0x8460, 0x0423, 0x8470, 0x847E, 0x0444, 0x8480, 0x8491, 0x0453,
+ 0x849F, 0x849F, 0x1D37, 0x84A0, 0x84A0, 0x1D39, 0x84A1, 0x84A1, 0x1D43,
+ 0x84A2, 0x84A2, 0x1D47, 0x84A3, 0x84A3, 0x1D4F, 0x84A4, 0x84A4, 0x1D4B,
+ 0x84A5, 0x84A5, 0x1D53, 0x84A6, 0x84A6, 0x1D63, 0x84A7, 0x84A7, 0x1D5B,
+ 0x84A8, 0x84A8, 0x1D6B, 0x84A9, 0x84A9, 0x1D73, 0x84AA, 0x84AA, 0x1D38,
+ 0x84AB, 0x84AB, 0x1D3A, 0x84AC, 0x84AC, 0x1D46, 0x84AD, 0x84AD, 0x1D4A,
+ 0x84AE, 0x84AE, 0x1D52, 0x84AF, 0x84AF, 0x1D4E, 0x84B0, 0x84B0, 0x1D5A,
+ 0x84B1, 0x84B1, 0x1D6A, 0x84B2, 0x84B2, 0x1D62, 0x84B3, 0x84B3, 0x1D72,
+ 0x84B4, 0x84B4, 0x1D82, 0x84B5, 0x84B5, 0x1D57, 0x84B6, 0x84B6, 0x1D66,
+ 0x84B7, 0x84B7, 0x1D5F, 0x84B8, 0x84B8, 0x1D6E, 0x84B9, 0x84B9, 0x1D76,
+ 0x84BA, 0x84BA, 0x1D54, 0x84BB, 0x84BB, 0x1D67, 0x84BC, 0x84BC, 0x1D5C,
+ 0x84BD, 0x84BD, 0x1D6F, 0x84BE, 0x84BE, 0x1D79, 0x8540, 0x8553, 0x1D83,
+ 0x855E, 0x8571, 0x1F87, 0x857C, 0x857E, 0x205E, 0x8580, 0x8585, 0x2061,
+ 0x8591, 0x859A, 0x1F7D, 0x859F, 0x85A8, 0x1D97, 0x85A9, 0x85AA, 0x2021,
+ 0x85AB, 0x85AD, 0x2067, 0x85B3, 0x85BC, 0x1F9C, 0x85BD, 0x85C1, 0x206A,
+ 0x85DB, 0x85F4, 0x1FB0, 0x8640, 0x8640, 0x1DB1, 0x8641, 0x8641, 0x1FFA,
+ 0x8642, 0x8642, 0x1DB2, 0x8643, 0x8643, 0x1F54, 0x8644, 0x8644, 0x1F56,
+ 0x8645, 0x8645, 0x206F, 0x8646, 0x8646, 0x1DB7, 0x8647, 0x8647, 0x1F57,
+ 0x8648, 0x8648, 0x1DB3, 0x8649, 0x8649, 0x1F55, 0x864A, 0x864A, 0x1DB4,
+ 0x864B, 0x864B, 0x2070, 0x864C, 0x864D, 0x1DB5, 0x864E, 0x864E, 0x1F65,
+ 0x864F, 0x8655, 0x1F58, 0x8656, 0x8656, 0x2071, 0x8657, 0x8657, 0x1F64,
+ 0x8658, 0x8659, 0x1F62, 0x865A, 0x865C, 0x1F5F, 0x865D, 0x865D, 0x2072,
+ 0x869B, 0x869D, 0x1DBA, 0x869E, 0x869E, 0x2073, 0x869F, 0x869F, 0x1F52,
+ 0x86A0, 0x86A1, 0x1F50, 0x86A2, 0x86A2, 0x1F53, 0x86A3, 0x86A3, 0x2013,
+ 0x86A4, 0x86A4, 0x2015, 0x86A5, 0x86A5, 0x2014, 0x86A6, 0x86A6, 0x2016,
+ 0x86B3, 0x86B3, 0x1F7A, 0x86B4, 0x86B4, 0x1F78, 0x86B5, 0x86B5, 0x2074,
+ 0x86C7, 0x86CA, 0x201B, 0x86CB, 0x86CE, 0x2075, 0x86CF, 0x86CF, 0x1F4E,
+ 0x86D0, 0x86D0, 0x1F4D, 0x86D1, 0x86D1, 0x1F4C, 0x86D2, 0x86D2, 0x1F4B,
+ 0x86D3, 0x86D6, 0x200E, 0x8740, 0x8746, 0x2005, 0x8747, 0x8747, 0x1FD6,
+ 0x8748, 0x8748, 0x200C, 0x8749, 0x8749, 0x1FD1, 0x874A, 0x874A, 0x1FCA,
+ 0x874B, 0x874B, 0x1DC4, 0x874C, 0x874C, 0x1FD7, 0x874D, 0x874D, 0x1DC2,
+ 0x874E, 0x874E, 0x1FD2, 0x874F, 0x874F, 0x1FCD, 0x8750, 0x8750, 0x1DC3,
+ 0x8751, 0x8751, 0x1FD5, 0x8752, 0x8752, 0x1FD3, 0x8753, 0x8753, 0x1FCF,
+ 0x8754, 0x8754, 0x1FD4, 0x8755, 0x8755, 0x1FD0, 0x8756, 0x8757, 0x1FCB,
+ 0x8758, 0x8758, 0x1FCE, 0x8791, 0x8792, 0x207D, 0x8793, 0x8797, 0x1DBD,
+ 0x8798, 0x8798, 0x1FDA, 0x8799, 0x8799, 0x1FE5, 0x879A, 0x879A, 0x207F,
+ 0x879B, 0x879B, 0x1FDE, 0x879C, 0x879C, 0x1FFF, 0x879D, 0x879D, 0x2080,
+ 0x879E, 0x879E, 0x201F, 0x879F, 0x879F, 0x1DA1, 0x87A0, 0x87A0, 0x1F66,
+ 0x87A1, 0x87A1, 0x1DA4, 0x87A2, 0x87A2, 0x1DA2, 0x87A3, 0x87A3, 0x1F67,
+ 0x87A4, 0x87A4, 0x1FF7, 0x87A5, 0x87A6, 0x2087, 0x87A7, 0x87A7, 0x1F6A,
+ 0x87A8, 0x87A8, 0x1DA8, 0x87A9, 0x87AA, 0x1F68, 0x87AB, 0x87AB, 0x1DA6,
+ 0x87AC, 0x87AC, 0x1DA9, 0x87AD, 0x87AD, 0x1DAF, 0x87AE, 0x87AE, 0x1F6E,
+ 0x87AF, 0x87AF, 0x1F6C, 0x87B0, 0x87B0, 0x1DAB, 0x87B1, 0x87B1, 0x1F6D,
+ 0x87B2, 0x87B2, 0x1F6B, 0x87B3, 0x87B3, 0x1DAC, 0x87B4, 0x87B4, 0x1F6F,
+ 0x87B5, 0x87B5, 0x1DAE, 0x87BD, 0x87BD, 0x1F70, 0x87BE, 0x87BF, 0x1F73,
+ 0x87C0, 0x87C1, 0x1F71, 0x87E5, 0x87E7, 0x1DC5, 0x87E8, 0x87E8, 0x2083,
+ 0x87FA, 0x87FA, 0x1F76, 0x87FB, 0x87FC, 0x2081, 0x8840, 0x8840, 0x1DC8,
+ 0x8841, 0x8842, 0x1DCD, 0x8854, 0x8855, 0x1DB8, 0x8868, 0x8868, 0x1F16,
+ 0x886A, 0x886D, 0x2079, 0x889F, 0x88FC, 0x0465, 0x8940, 0x897E, 0x04C3,
+ 0x8980, 0x89FC, 0x0502, 0x8A40, 0x8A7E, 0x057F, 0x8A80, 0x8AFC, 0x05BE,
+ 0x8B40, 0x8B7E, 0x063B, 0x8B80, 0x8BFC, 0x067A, 0x8C40, 0x8C7E, 0x06F7,
+ 0x8C80, 0x8CFC, 0x0736, 0x8D40, 0x8D7E, 0x07B3, 0x8D80, 0x8DFC, 0x07F2,
+ 0x8E40, 0x8E7E, 0x086F, 0x8E80, 0x8EFC, 0x08AE, 0x8F40, 0x8F7E, 0x092B,
+ 0x8F80, 0x8FFC, 0x096A, 0x9040, 0x907E, 0x09E7, 0x9080, 0x90FC, 0x0A26,
+ 0x9140, 0x917E, 0x0AA3, 0x9180, 0x91FC, 0x0AE2, 0x9240, 0x927E, 0x0B5F,
+ 0x9280, 0x92FC, 0x0B9E, 0x9340, 0x937E, 0x0C1B, 0x9380, 0x93FC, 0x0C5A,
+ 0x9440, 0x947E, 0x0CD7, 0x9480, 0x94FC, 0x0D16, 0x9540, 0x957E, 0x0D93,
+ 0x9580, 0x95FC, 0x0DD2, 0x9640, 0x967E, 0x0E4F, 0x9680, 0x96FC, 0x0E8E,
+ 0x9740, 0x977E, 0x0F0B, 0x9780, 0x97FC, 0x0F4A, 0x9840, 0x9872, 0x0FC7,
+ 0x989F, 0x98FC, 0x0FFA, 0x9940, 0x997E, 0x1058, 0x9980, 0x99FC, 0x1097,
+ 0x9A40, 0x9A7E, 0x1114, 0x9A80, 0x9AFC, 0x1153, 0x9B40, 0x9B7E, 0x11D0,
+ 0x9B80, 0x9BFC, 0x120F, 0x9C40, 0x9C7E, 0x128C, 0x9C80, 0x9CFC, 0x12CB,
+ 0x9D40, 0x9D7E, 0x1348, 0x9D80, 0x9DFC, 0x1387, 0x9E40, 0x9E7E, 0x1404,
+ 0x9E80, 0x9EFC, 0x1443, 0x9F40, 0x9F7E, 0x14C0, 0x9F80, 0x9FFC, 0x14FF,
+ 0xE040, 0xE07E, 0x157C, 0xE080, 0xE0FC, 0x15BB, 0xE140, 0xE17E, 0x1638,
+ 0xE180, 0xE1FC, 0x1677, 0xE240, 0xE27E, 0x16F4, 0xE280, 0xE2FC, 0x1733,
+ 0xE340, 0xE37E, 0x17B0, 0xE380, 0xE3FC, 0x17EF, 0xE440, 0xE47E, 0x186C,
+ 0xE480, 0xE4FC, 0x18AB, 0xE540, 0xE57E, 0x1928, 0xE580, 0xE5FC, 0x1967,
+ 0xE640, 0xE67E, 0x19E4, 0xE680, 0xE6FC, 0x1A23, 0xE740, 0xE77E, 0x1AA0,
+ 0xE780, 0xE7FC, 0x1ADF, 0xE840, 0xE87E, 0x1B5C, 0xE880, 0xE8FC, 0x1B9B,
+ 0xE940, 0xE97E, 0x1C18, 0xE980, 0xE9FC, 0x1C57, 0xEA40, 0xEA7E, 0x1CD4,
+ 0xEA80, 0xEAA2, 0x1D13, 0xEAA3, 0xEAA4, 0x205C, 0xEB41, 0xEB42, 0x1ECF,
+ 0xEB50, 0xEB51, 0x1ED1, 0xEB5B, 0xEB5D, 0x1ED3, 0xEB60, 0xEB64, 0x1ED6,
+ 0xEB69, 0xEB7A, 0x1EDB, 0xEB81, 0xEB81, 0x1EED, 0xEC9F, 0xEC9F, 0x1EEE,
+ 0xECA1, 0xECA1, 0x1EEF, 0xECA3, 0xECA3, 0x1EF0, 0xECA5, 0xECA5, 0x1EF1,
+ 0xECA7, 0xECA7, 0x1EF2, 0xECC1, 0xECC1, 0x1EF3, 0xECE1, 0xECE1, 0x1EF4,
+ 0xECE3, 0xECE3, 0x1EF5, 0xECE5, 0xECE5, 0x1EF6, 0xECEC, 0xECEC, 0x1EF7,
+ 0xED40, 0xED40, 0x1EF8, 0xED42, 0xED42, 0x1EF9, 0xED44, 0xED44, 0x1EFA,
+ 0xED46, 0xED46, 0x1EFB, 0xED48, 0xED48, 0x1EFC, 0xED62, 0xED62, 0x1EFD,
+ 0xED83, 0xED83, 0x1EFE, 0xED85, 0xED85, 0x1EFF, 0xED87, 0xED87, 0x1F00,
+ 0xED8E, 0xED8E, 0x1F01, 0xED95, 0xED96, 0x1F02,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-H_1.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-H_1.cpp
new file mode 100644
index 0000000000..ee3027a526
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-H_1.cpp
@@ -0,0 +1,222 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h"
+
+const FX_WORD g_FXCMAP_Add_RKSJ_H_1[635 * 3] = {
+ 0x0020, 0x007E, 0x00E7, 0x00A0, 0x00DF, 0x0146, 0x8140, 0x817E, 0x0279,
+ 0x8180, 0x81AC, 0x02B8, 0x81B8, 0x81BF, 0x02E5, 0x81C8, 0x81CE, 0x02ED,
+ 0x81DA, 0x81E8, 0x02F4, 0x81F0, 0x81F7, 0x0303, 0x81FC, 0x81FC, 0x030B,
+ 0x824F, 0x8258, 0x030C, 0x8260, 0x8279, 0x0316, 0x8281, 0x829A, 0x0330,
+ 0x829F, 0x82F1, 0x034A, 0x82F2, 0x82F4, 0x1F16, 0x8340, 0x837E, 0x039D,
+ 0x8380, 0x8396, 0x03DC, 0x839F, 0x83B6, 0x03F3, 0x83BF, 0x83D6, 0x040B,
+ 0x8440, 0x8460, 0x0423, 0x8470, 0x847E, 0x0444, 0x8480, 0x8491, 0x0453,
+ 0x849F, 0x849F, 0x1D37, 0x84A0, 0x84A0, 0x1D39, 0x84A1, 0x84A1, 0x1D43,
+ 0x84A2, 0x84A2, 0x1D47, 0x84A3, 0x84A3, 0x1D4F, 0x84A4, 0x84A4, 0x1D4B,
+ 0x84A5, 0x84A5, 0x1D53, 0x84A6, 0x84A6, 0x1D63, 0x84A7, 0x84A7, 0x1D5B,
+ 0x84A8, 0x84A8, 0x1D6B, 0x84A9, 0x84A9, 0x1D73, 0x84AA, 0x84AA, 0x1D38,
+ 0x84AB, 0x84AB, 0x1D3A, 0x84AC, 0x84AC, 0x1D46, 0x84AD, 0x84AD, 0x1D4A,
+ 0x84AE, 0x84AE, 0x1D52, 0x84AF, 0x84AF, 0x1D4E, 0x84B0, 0x84B0, 0x1D5A,
+ 0x84B1, 0x84B1, 0x1D6A, 0x84B2, 0x84B2, 0x1D62, 0x84B3, 0x84B3, 0x1D72,
+ 0x84B4, 0x84B4, 0x1D82, 0x84B5, 0x84B5, 0x1D57, 0x84B6, 0x84B6, 0x1D66,
+ 0x84B7, 0x84B7, 0x1D5F, 0x84B8, 0x84B8, 0x1D6E, 0x84B9, 0x84B9, 0x1D76,
+ 0x84BA, 0x84BA, 0x1D54, 0x84BB, 0x84BB, 0x1D67, 0x84BC, 0x84BC, 0x1D5C,
+ 0x84BD, 0x84BD, 0x1D6F, 0x84BE, 0x84BE, 0x1D79, 0x889F, 0x889F, 0x0465,
+ 0x88A0, 0x88A0, 0x1DD1, 0x88A1, 0x88AF, 0x0467, 0x88B0, 0x88B0, 0x1F19,
+ 0x88B1, 0x88B8, 0x0477, 0x88B9, 0x88B9, 0x1DD2, 0x88BA, 0x88EB, 0x0480,
+ 0x88EC, 0x88EC, 0x1DD3, 0x88ED, 0x88EE, 0x04B3, 0x88EF, 0x88EF, 0x1F1A,
+ 0x88F0, 0x88F0, 0x04B6, 0x88F1, 0x88F1, 0x1DD4, 0x88F2, 0x88F9, 0x04B8,
+ 0x88FA, 0x88FA, 0x1DD5, 0x88FB, 0x88FC, 0x04C1, 0x8940, 0x8948, 0x04C3,
+ 0x8949, 0x8949, 0x1DD6, 0x894A, 0x8951, 0x04CD, 0x8952, 0x8952, 0x1F1B,
+ 0x8953, 0x8953, 0x04D6, 0x8954, 0x8954, 0x1DD7, 0x8955, 0x8957, 0x04D8,
+ 0x8958, 0x8958, 0x1F1C, 0x8959, 0x895B, 0x04DC, 0x895C, 0x895C, 0x1DDA,
+ 0x895D, 0x8960, 0x04E0, 0x8961, 0x8961, 0x1DDB, 0x8962, 0x897E, 0x04E5,
+ 0x8980, 0x898A, 0x0502, 0x898B, 0x898B, 0x1DDC, 0x898C, 0x89A5, 0x050E,
+ 0x89A6, 0x89A6, 0x1DDD, 0x89A7, 0x89A7, 0x0529, 0x89A8, 0x89A8, 0x1DDE,
+ 0x89A9, 0x89DD, 0x052B, 0x89DE, 0x89DE, 0x1DDF, 0x89DF, 0x89E4, 0x0561,
+ 0x89E5, 0x89E5, 0x1F1D, 0x89E6, 0x89F7, 0x0568, 0x89F8, 0x89F8, 0x1DE0,
+ 0x89F9, 0x89FC, 0x057B, 0x8A40, 0x8A40, 0x057F, 0x8A41, 0x8A41, 0x1DE2,
+ 0x8A42, 0x8A7E, 0x0581, 0x8A80, 0x8A8A, 0x05BE, 0x8A8B, 0x8A8B, 0x1DE4,
+ 0x8A8C, 0x8A92, 0x05CA, 0x8A93, 0x8A93, 0x1DE5, 0x8A94, 0x8A99, 0x05D2,
+ 0x8A9A, 0x8A9A, 0x1DE6, 0x8A9B, 0x8ABF, 0x05D9, 0x8AC0, 0x8AC0, 0x1DE7,
+ 0x8AC1, 0x8ACA, 0x05FF, 0x8ACB, 0x8ACB, 0x1DE8, 0x8ACC, 0x8AE2, 0x060A,
+ 0x8AE3, 0x8AE3, 0x1DE9, 0x8AE4, 0x8AFC, 0x0622, 0x8B40, 0x8B49, 0x063B,
+ 0x8B4A, 0x8B4A, 0x1DEA, 0x8B4B, 0x8B5E, 0x0646, 0x8B5F, 0x8B5F, 0x1DEB,
+ 0x8B60, 0x8B7E, 0x065B, 0x8B80, 0x8B81, 0x067A, 0x8B82, 0x8B82, 0x1F1E,
+ 0x8B83, 0x8B87, 0x067D, 0x8B88, 0x8B88, 0x1F1F, 0x8B89, 0x8B9F, 0x0683,
+ 0x8BA0, 0x8BA0, 0x1DEC, 0x8BA1, 0x8BA7, 0x069B, 0x8BA8, 0x8BA8, 0x1DED,
+ 0x8BA9, 0x8BBF, 0x06A3, 0x8BC0, 0x8BC0, 0x1F20, 0x8BC1, 0x8BCC, 0x06BB,
+ 0x8BCD, 0x8BCD, 0x1DEE, 0x8BCE, 0x8BEA, 0x06C8, 0x8BEB, 0x8BEB, 0x1DEF,
+ 0x8BEC, 0x8BF1, 0x06E6, 0x8BF2, 0x8BF2, 0x1DF0, 0x8BF3, 0x8BF8, 0x06ED,
+ 0x8BF9, 0x8BF9, 0x1DF1, 0x8BFA, 0x8BFA, 0x06F4, 0x8BFB, 0x8BFB, 0x1DF2,
+ 0x8BFC, 0x8BFC, 0x06F6, 0x8C40, 0x8C55, 0x06F7, 0x8C56, 0x8C56, 0x1DF4,
+ 0x8C57, 0x8C70, 0x070E, 0x8C71, 0x8C71, 0x1DF7, 0x8C72, 0x8C7E, 0x0729,
+ 0x8C80, 0x8C90, 0x0736, 0x8C91, 0x8C91, 0x1DFA, 0x8C92, 0x8C9C, 0x0748,
+ 0x8C9D, 0x8C9D, 0x1F21, 0x8C9E, 0x8C9E, 0x1DFC, 0x8C9F, 0x8CB1, 0x0755,
+ 0x8CB2, 0x8CB2, 0x1DFD, 0x8CB3, 0x8CBE, 0x0769, 0x8CBF, 0x8CBF, 0x1DFE,
+ 0x8CC0, 0x8CFC, 0x0776, 0x8D40, 0x8D49, 0x07B3, 0x8D4A, 0x8D4A, 0x1DFF,
+ 0x8D4B, 0x8D7E, 0x07BE, 0x8D80, 0x8D8C, 0x07F2, 0x8D8D, 0x8D8D, 0x1E02,
+ 0x8D8E, 0x8D93, 0x0800, 0x8D94, 0x8D94, 0x1E03, 0x8D95, 0x8D98, 0x0807,
+ 0x8D99, 0x8D99, 0x1E04, 0x8D9A, 0x8DD0, 0x080C, 0x8DD1, 0x8DD1, 0x1E05,
+ 0x8DD2, 0x8DE4, 0x0844, 0x8DE5, 0x8DE5, 0x1E06, 0x8DE6, 0x8DF1, 0x0858,
+ 0x8DF2, 0x8DF2, 0x1E07, 0x8DF3, 0x8DFC, 0x0865, 0x8E40, 0x8E45, 0x086F,
+ 0x8E46, 0x8E46, 0x1E08, 0x8E47, 0x8E48, 0x0876, 0x8E49, 0x8E49, 0x1E09,
+ 0x8E4A, 0x8E4A, 0x0879, 0x8E4B, 0x8E4B, 0x1E0A, 0x8E4C, 0x8E57, 0x087B,
+ 0x8E58, 0x8E58, 0x1E0B, 0x8E59, 0x8E5F, 0x0888, 0x8E60, 0x8E60, 0x1F22,
+ 0x8E61, 0x8E7E, 0x0890, 0x8E80, 0x8EC5, 0x08AE, 0x8EC6, 0x8EC6, 0x1E0D,
+ 0x8EC7, 0x8EDA, 0x08F5, 0x8EDB, 0x8EDC, 0x1E0F, 0x8EDD, 0x8EFC, 0x090B,
+ 0x8F40, 0x8F49, 0x092B, 0x8F4A, 0x8F4A, 0x1E11, 0x8F4B, 0x8F54, 0x0936,
+ 0x8F55, 0x8F55, 0x1E12, 0x8F56, 0x8F7E, 0x0941, 0x8F80, 0x8F8B, 0x096A,
+ 0x8F8C, 0x8F8C, 0x1E13, 0x8F8D, 0x8F91, 0x0977, 0x8F92, 0x8F93, 0x1E15,
+ 0x8F94, 0x8FA2, 0x097E, 0x8FA3, 0x8FA3, 0x1E17, 0x8FA4, 0x8FB0, 0x098E,
+ 0x8FB1, 0x8FB1, 0x1E18, 0x8FB2, 0x8FD2, 0x099C, 0x8FD3, 0x8FD3, 0x1E1A,
+ 0x8FD4, 0x8FDC, 0x09BE, 0x8FDD, 0x8FDD, 0x1E1B, 0x8FDE, 0x8FE1, 0x09C8,
+ 0x8FE2, 0x8FE2, 0x1E1C, 0x8FE3, 0x8FFC, 0x09CD, 0x9040, 0x9048, 0x09E7,
+ 0x9049, 0x9049, 0x1E1D, 0x904A, 0x9077, 0x09F1, 0x9078, 0x9078, 0x1F23,
+ 0x9079, 0x907E, 0x0A20, 0x9080, 0x9080, 0x1E1F, 0x9081, 0x909F, 0x0A27,
+ 0x90A0, 0x90A0, 0x1E21, 0x90A1, 0x90E3, 0x0A47, 0x90E4, 0x90E4, 0x1E23,
+ 0x90E5, 0x90EE, 0x0A8B, 0x90EF, 0x90EF, 0x1E24, 0x90F0, 0x90F6, 0x0A96,
+ 0x90F7, 0x90F7, 0x1E26, 0x90F8, 0x90F8, 0x1F24, 0x90F9, 0x90F9, 0x0A9F,
+ 0x90FA, 0x90FB, 0x1F25, 0x90FC, 0x90FC, 0x0AA2, 0x9140, 0x9145, 0x0AA3,
+ 0x9146, 0x9146, 0x1E28, 0x9147, 0x9157, 0x0AAA, 0x9158, 0x9158, 0x1E29,
+ 0x9159, 0x916A, 0x0ABC, 0x916B, 0x916B, 0x1E2A, 0x916C, 0x916D, 0x0ACF,
+ 0x916E, 0x916E, 0x1E2B, 0x916F, 0x917D, 0x0AD2, 0x917E, 0x917E, 0x1E2C,
+ 0x9180, 0x9188, 0x0AE2, 0x9189, 0x9189, 0x1E2D, 0x918A, 0x91B4, 0x0AEC,
+ 0x91B5, 0x91B5, 0x1F27, 0x91B6, 0x91BA, 0x0B18, 0x91BB, 0x91BB, 0x1E2E,
+ 0x91BC, 0x91CA, 0x0B1E, 0x91CB, 0x91CB, 0x1E2F, 0x91CC, 0x91D9, 0x0B2E,
+ 0x91DA, 0x91DA, 0x1E30, 0x91DB, 0x91E0, 0x0B3D, 0x91E1, 0x91E1, 0x1E31,
+ 0x91E2, 0x91EC, 0x0B44, 0x91ED, 0x91ED, 0x1E32, 0x91EE, 0x91FA, 0x0B50,
+ 0x91FB, 0x91FB, 0x1E35, 0x91FC, 0x91FC, 0x0B5E, 0x9240, 0x9245, 0x0B5F,
+ 0x9246, 0x9246, 0x1E36, 0x9247, 0x9247, 0x0B66, 0x9248, 0x9248, 0x1E37,
+ 0x9249, 0x924B, 0x0B68, 0x924C, 0x924D, 0x1E39, 0x924E, 0x925B, 0x0B6D,
+ 0x925C, 0x925C, 0x1E3B, 0x925D, 0x927E, 0x0B7C, 0x9280, 0x928F, 0x0B9E,
+ 0x9290, 0x9290, 0x1E3C, 0x9291, 0x9294, 0x0BAF, 0x9295, 0x9295, 0x1E3D,
+ 0x9296, 0x929B, 0x0BB4, 0x929C, 0x929C, 0x1E3E, 0x929D, 0x92BA, 0x0BBB,
+ 0x92BB, 0x92BB, 0x1E3F, 0x92BC, 0x92C5, 0x0BDA, 0x92C6, 0x92C6, 0x1E40,
+ 0x92C7, 0x92C7, 0x0BE5, 0x92C8, 0x92C8, 0x1E41, 0x92C9, 0x92CC, 0x0BE7,
+ 0x92CD, 0x92CD, 0x1E43, 0x92CE, 0x92FC, 0x0BEC, 0x9340, 0x9340, 0x0C1B,
+ 0x9341, 0x9341, 0x1E44, 0x9342, 0x9345, 0x0C1D, 0x9346, 0x9346, 0x1E45,
+ 0x9347, 0x934C, 0x0C22, 0x934D, 0x934D, 0x1E46, 0x934E, 0x9354, 0x0C29,
+ 0x9355, 0x9355, 0x1E47, 0x9356, 0x935D, 0x0C31, 0x935E, 0x935E, 0x1E48,
+ 0x935F, 0x9366, 0x0C3A, 0x9367, 0x9367, 0x1E49, 0x9368, 0x9369, 0x0C43,
+ 0x936A, 0x936A, 0x1E4A, 0x936B, 0x936F, 0x0C46, 0x9370, 0x9370, 0x1F28,
+ 0x9371, 0x9371, 0x1E4C, 0x9372, 0x937E, 0x0C4D, 0x9380, 0x9383, 0x0C5A,
+ 0x9384, 0x9384, 0x1E4D, 0x9385, 0x9397, 0x0C5F, 0x9398, 0x9398, 0x1E4E,
+ 0x9399, 0x93BF, 0x0C73, 0x93C0, 0x93C0, 0x1E50, 0x93C1, 0x93D1, 0x0C9B,
+ 0x93D2, 0x93D2, 0x1E51, 0x93D3, 0x93D8, 0x0CAD, 0x93D9, 0x93D9, 0x1E53,
+ 0x93DA, 0x93E3, 0x0CB4, 0x93E4, 0x93E5, 0x1E56, 0x93E6, 0x93E7, 0x0CC0,
+ 0x93E8, 0x93E8, 0x1E58, 0x93E9, 0x93F3, 0x0CC3, 0x93F4, 0x93F4, 0x1EC0,
+ 0x93F5, 0x93FC, 0x0CCF, 0x9440, 0x9447, 0x0CD7, 0x9448, 0x9448, 0x1E59,
+ 0x9449, 0x9449, 0x1F29, 0x944A, 0x9457, 0x0CE1, 0x9458, 0x9458, 0x1E5A,
+ 0x9459, 0x9475, 0x0CF0, 0x9476, 0x9476, 0x1E5B, 0x9477, 0x947E, 0x0D0E,
+ 0x9480, 0x9486, 0x0D16, 0x9487, 0x9487, 0x1E5C, 0x9488, 0x9488, 0x0D1E,
+ 0x9489, 0x9489, 0x1E5D, 0x948A, 0x948C, 0x0D20, 0x948D, 0x948D, 0x1E5E,
+ 0x948E, 0x94A1, 0x0D24, 0x94A2, 0x94A2, 0x1E5F, 0x94A3, 0x94AB, 0x0D39,
+ 0x94AC, 0x94AC, 0x1E60, 0x94AD, 0x94AD, 0x0D43, 0x94AE, 0x94AE, 0x1E61,
+ 0x94AF, 0x94BD, 0x0D45, 0x94BE, 0x94BE, 0x1F2A, 0x94BF, 0x94D1, 0x0D55,
+ 0x94D2, 0x94D2, 0x1E62, 0x94D3, 0x94F2, 0x0D69, 0x94F3, 0x94F3, 0x1E64,
+ 0x94F4, 0x94FC, 0x0D8A, 0x9540, 0x9540, 0x0D93, 0x9541, 0x9542, 0x1E65,
+ 0x9543, 0x954D, 0x0D96, 0x954E, 0x954E, 0x1E67, 0x954F, 0x9550, 0x0DA2,
+ 0x9551, 0x9551, 0x1E68, 0x9552, 0x9553, 0x0DA5, 0x9554, 0x9554, 0x1E69,
+ 0x9555, 0x955E, 0x0DA8, 0x955F, 0x955F, 0x1E6A, 0x9560, 0x956C, 0x0DB3,
+ 0x956D, 0x956D, 0x1E6B, 0x956E, 0x957E, 0x0DC1, 0x9580, 0x95C0, 0x0DD2,
+ 0x95C1, 0x95C1, 0x1E6D, 0x95C2, 0x95CA, 0x0E14, 0x95CB, 0x95CB, 0x1E6E,
+ 0x95CC, 0x95D0, 0x0E1E, 0x95D1, 0x95D1, 0x1F2B, 0x95D2, 0x95D7, 0x0E24,
+ 0x95D8, 0x95D8, 0x1E6F, 0x95D9, 0x95F6, 0x0E2B, 0x95F7, 0x95F7, 0x1E70,
+ 0x95F8, 0x95FC, 0x0E4A, 0x9640, 0x9647, 0x0E4F, 0x9648, 0x9648, 0x1E72,
+ 0x9649, 0x9669, 0x0E58, 0x966A, 0x966A, 0x1E73, 0x966B, 0x967E, 0x0E7A,
+ 0x9680, 0x968F, 0x0E8E, 0x9690, 0x9690, 0x1E74, 0x9691, 0x9697, 0x0E9F,
+ 0x9698, 0x9698, 0x1F2C, 0x9699, 0x96CA, 0x0EA7, 0x96CB, 0x96CB, 0x1E75,
+ 0x96CC, 0x96D6, 0x0EDA, 0x96D7, 0x96D7, 0x1E76, 0x96D8, 0x96DC, 0x0EE6,
+ 0x96DD, 0x96DD, 0x1E77, 0x96DE, 0x96DF, 0x0EEC, 0x96E0, 0x96E0, 0x1E78,
+ 0x96E1, 0x96F7, 0x0EEF, 0x96F8, 0x96F8, 0x1E79, 0x96F9, 0x96F9, 0x0F07,
+ 0x96FA, 0x96FA, 0x1E7A, 0x96FB, 0x96FC, 0x0F09, 0x9740, 0x9750, 0x0F0B,
+ 0x9751, 0x9751, 0x1E7C, 0x9752, 0x976E, 0x0F1D, 0x976F, 0x976F, 0x1E7D,
+ 0x9770, 0x9772, 0x0F3B, 0x9773, 0x9773, 0x1E7E, 0x9774, 0x977E, 0x0F3F,
+ 0x9780, 0x9788, 0x0F4A, 0x9789, 0x9789, 0x1E7F, 0x978A, 0x97F7, 0x0F54,
+ 0x97F8, 0x97F9, 0x1E81, 0x97FA, 0x97FA, 0x1F2D, 0x97FB, 0x97FC, 0x0FC5,
+ 0x9840, 0x9840, 0x1E83, 0x9841, 0x984F, 0x0FC8, 0x9850, 0x9850, 0x1E84,
+ 0x9851, 0x9857, 0x0FD8, 0x9858, 0x9858, 0x1E85, 0x9859, 0x9872, 0x0FE0,
+ 0x989F, 0x98FC, 0x0FFA, 0x9940, 0x9940, 0x1058, 0x9941, 0x9941, 0x1F2E,
+ 0x9942, 0x995B, 0x105A, 0x995C, 0x995C, 0x1E86, 0x995D, 0x996B, 0x1075,
+ 0x996C, 0x996C, 0x1E89, 0x996D, 0x997E, 0x1085, 0x9980, 0x99B5, 0x1097,
+ 0x99B6, 0x99B6, 0x1F2F, 0x99B7, 0x99FC, 0x10CE, 0x9A40, 0x9A4E, 0x1114,
+ 0x9A4F, 0x9A4F, 0x1E8A, 0x9A50, 0x9A58, 0x1124, 0x9A59, 0x9A59, 0x1E8B,
+ 0x9A5A, 0x9A66, 0x112E, 0x9A67, 0x9A67, 0x1F30, 0x9A68, 0x9A7C, 0x113C,
+ 0x9A7D, 0x9A7D, 0x1E8D, 0x9A7E, 0x9A7E, 0x1152, 0x9A80, 0x9A8A, 0x1153,
+ 0x9A8B, 0x9A8B, 0x1E8E, 0x9A8C, 0x9A8C, 0x1F31, 0x9A8D, 0x9AC1, 0x1160,
+ 0x9AC2, 0x9AC2, 0x1E8F, 0x9AC3, 0x9AC3, 0x1F32, 0x9AC4, 0x9AE9, 0x1197,
+ 0x9AEA, 0x9AEA, 0x1F33, 0x9AEB, 0x9AFC, 0x11BE, 0x9B40, 0x9B5B, 0x11D0,
+ 0x9B5C, 0x9B5C, 0x1E90, 0x9B5D, 0x9B7E, 0x11ED, 0x9B80, 0x9B82, 0x120F,
+ 0x9B83, 0x9B83, 0x1E91, 0x9B84, 0x9B97, 0x1213, 0x9B98, 0x9B98, 0x1F34,
+ 0x9B99, 0x9B9F, 0x1228, 0x9BA0, 0x9BA0, 0x1E92, 0x9BA1, 0x9BFA, 0x1230,
+ 0x9BFB, 0x9BFC, 0x1F35, 0x9C40, 0x9C7E, 0x128C, 0x9C80, 0x9CA1, 0x12CB,
+ 0x9CA2, 0x9CA2, 0x1E94, 0x9CA3, 0x9CFC, 0x12EE, 0x9D40, 0x9D46, 0x1348,
+ 0x9D47, 0x9D47, 0x1F37, 0x9D48, 0x9D7E, 0x1350, 0x9D80, 0x9D80, 0x1E95,
+ 0x9D81, 0x9D8B, 0x1388, 0x9D8C, 0x9D8C, 0x1E96, 0x9D8D, 0x9DB6, 0x1394,
+ 0x9DB7, 0x9DB7, 0x1E97, 0x9DB8, 0x9DF7, 0x13BF, 0x9DF8, 0x9DF8, 0x1F38,
+ 0x9DF9, 0x9DFC, 0x1400, 0x9E40, 0x9E63, 0x1404, 0x9E64, 0x9E64, 0x1E99,
+ 0x9E65, 0x9E7E, 0x1429, 0x9E80, 0x9E8A, 0x1443, 0x9E8B, 0x9E8B, 0x1E9B,
+ 0x9E8C, 0x9EFC, 0x144F, 0x9F40, 0x9F7E, 0x14C0, 0x9F80, 0x9F80, 0x14FF,
+ 0x9F81, 0x9F81, 0x1F39, 0x9F82, 0x9FCD, 0x1501, 0x9FCE, 0x9FCE, 0x1E9D,
+ 0x9FCF, 0x9FD3, 0x154E, 0x9FD4, 0x9FD4, 0x1F3A, 0x9FD5, 0x9FF3, 0x1554,
+ 0x9FF4, 0x9FF4, 0x1F3B, 0x9FF5, 0x9FFC, 0x1574, 0xE040, 0xE07E, 0x157C,
+ 0xE080, 0xE092, 0x15BB, 0xE093, 0xE093, 0x1E9E, 0xE094, 0xE0A3, 0x15CF,
+ 0xE0A4, 0xE0A4, 0x1E9F, 0xE0A5, 0xE0DC, 0x15E0, 0xE0DD, 0xE0DD, 0x1EA0,
+ 0xE0DE, 0xE0FC, 0x1619, 0xE140, 0xE149, 0x1638, 0xE14A, 0xE14A, 0x1EA1,
+ 0xE14B, 0xE17E, 0x1643, 0xE180, 0xE1EC, 0x1677, 0xE1ED, 0xE1ED, 0x1EA5,
+ 0xE1EE, 0xE1FC, 0x16E5, 0xE240, 0xE268, 0x16F4, 0xE269, 0xE269, 0x1EA6,
+ 0xE26A, 0xE272, 0x171E, 0xE273, 0xE273, 0x1EA7, 0xE274, 0xE277, 0x1728,
+ 0xE278, 0xE278, 0x1F3C, 0xE279, 0xE27E, 0x172D, 0xE280, 0xE2B6, 0x1733,
+ 0xE2B7, 0xE2B7, 0x1EA8, 0xE2B8, 0xE2BD, 0x176B, 0xE2BE, 0xE2BE, 0x1F3D,
+ 0xE2BF, 0xE2E1, 0x1772, 0xE2E2, 0xE2E2, 0x1EA9, 0xE2E3, 0xE2EB, 0x1796,
+ 0xE2EC, 0xE2EC, 0x1EAA, 0xE2ED, 0xE2FC, 0x17A0, 0xE340, 0xE357, 0x17B0,
+ 0xE358, 0xE358, 0x1EAB, 0xE359, 0xE359, 0x17C9, 0xE35A, 0xE35A, 0x1EAC,
+ 0xE35B, 0xE364, 0x17CB, 0xE365, 0xE365, 0x1EAD, 0xE366, 0xE37E, 0x17D6,
+ 0xE380, 0xE3C6, 0x17EF, 0xE3C7, 0xE3C7, 0x1F3E, 0xE3C8, 0xE3FC, 0x1837,
+ 0xE440, 0xE47E, 0x186C, 0xE480, 0xE483, 0x18AB, 0xE484, 0xE484, 0x1EAF,
+ 0xE485, 0xE488, 0x18B0, 0xE489, 0xE489, 0x1EB0, 0xE48A, 0xE491, 0x18B5,
+ 0xE492, 0xE492, 0x1EB1, 0xE493, 0xE4B8, 0x18BE, 0xE4B9, 0xE4B9, 0x1EB3,
+ 0xE4BA, 0xE4CA, 0x18E5, 0xE4CB, 0xE4CB, 0x1F3F, 0xE4CC, 0xE4FC, 0x18F7,
+ 0xE540, 0xE57E, 0x1928, 0xE580, 0xE59D, 0x1967, 0xE59E, 0xE59E, 0x1F40,
+ 0xE59F, 0xE5B9, 0x1986, 0xE5BA, 0xE5BB, 0x1F41, 0xE5BC, 0xE5EC, 0x19A3,
+ 0xE5ED, 0xE5ED, 0x1EB8, 0xE5EE, 0xE5FC, 0x19D5, 0xE640, 0xE650, 0x19E4,
+ 0xE651, 0xE651, 0x1EB9, 0xE652, 0xE67E, 0x19F6, 0xE680, 0xE685, 0x1A23,
+ 0xE686, 0xE686, 0x1EBA, 0xE687, 0xE6E6, 0x1A2A, 0xE6E7, 0xE6E7, 0x1EBC,
+ 0xE6E8, 0xE6FC, 0x1A8B, 0xE740, 0xE76C, 0x1AA0, 0xE76D, 0xE76D, 0x1EBE,
+ 0xE76E, 0xE77E, 0x1ACE, 0xE780, 0xE7A6, 0x1ADF, 0xE7A7, 0xE7A7, 0x1EC1,
+ 0xE7A8, 0xE7BA, 0x1B07, 0xE7BB, 0xE7BB, 0x1EC2, 0xE7BC, 0xE7FC, 0x1B1B,
+ 0xE840, 0xE87E, 0x1B5C, 0xE880, 0xE8CE, 0x1B9B, 0xE8CF, 0xE8CF, 0x1EC7,
+ 0xE8D0, 0xE8FC, 0x1BEB, 0xE940, 0xE977, 0x1C18, 0xE978, 0xE978, 0x1F43,
+ 0xE979, 0xE97E, 0x1C51, 0xE980, 0xE9AA, 0x1C57, 0xE9AB, 0xE9AB, 0x1ECA,
+ 0xE9AC, 0xE9B9, 0x1C83, 0xE9BA, 0xE9BA, 0x1ECB, 0xE9BB, 0xE9CB, 0x1C92,
+ 0xE9CC, 0xE9CC, 0x1ECC, 0xE9CD, 0xE9FC, 0x1CA4, 0xEA40, 0xEA6F, 0x1CD4,
+ 0xEA70, 0xEA70, 0x1ECD, 0xEA71, 0xEA71, 0x1F44, 0xEA72, 0xEA7E, 0x1D06,
+ 0xEA80, 0xEA9C, 0x1D13, 0xEA9D, 0xEA9D, 0x1ECE, 0xEA9E, 0xEAA2, 0x1D31,
+ 0xEAA3, 0xEAA4, 0x205C, 0xEC40, 0xEC42, 0x1F45, 0xEC46, 0xEC46, 0x1F48,
+ 0xEC47, 0xEC47, 0x0300, 0xEC48, 0xEC48, 0x02FA, 0xEC49, 0xEC49, 0x02F9,
+ 0xEC4D, 0xEC57, 0x1F49, 0xEC5B, 0xEC5D, 0x1DB1, 0xEC5E, 0xEC5E, 0x1F54,
+ 0xEC5F, 0xEC5F, 0x1DB7, 0xEC60, 0xEC62, 0x1F55, 0xEC63, 0xEC65, 0x1DB4,
+ 0xEC66, 0xEC6F, 0x1F58, 0xEC70, 0xEC70, 0x0303, 0xEC71, 0xEC71, 0x1F62,
+ 0xEC72, 0xEC72, 0x0304, 0xEC73, 0xEC74, 0x1F63, 0xEC76, 0xEC76, 0x1F65,
+ 0xEC78, 0xEC78, 0x1DA4, 0xEC79, 0xEC79, 0x1DA1, 0xEC7A, 0xEC7A, 0x1F66,
+ 0xEC7B, 0xEC7B, 0x1DA2, 0xEC7C, 0xEC7E, 0x1F67, 0xEC80, 0xEC80, 0x1DA6,
+ 0xEC81, 0xEC81, 0x1F6A, 0xEC82, 0xEC82, 0x1DA8, 0xEC83, 0xEC83, 0x1DAC,
+ 0xEC84, 0xEC84, 0x1F6B, 0xEC85, 0xEC85, 0x1DAE, 0xEC86, 0xEC86, 0x1DAB,
+ 0xEC87, 0xEC88, 0x1F6C, 0xEC89, 0xEC89, 0x1DAF, 0xEC8A, 0xEC90, 0x1F6E,
+ 0xEC94, 0xEC99, 0x1F75, 0xEC9A, 0xEC9A, 0x1DBA, 0xEC9B, 0xEC9B, 0x1F7B,
+ 0xEC9E, 0xEC9E, 0x1F7C, 0xECA7, 0xECB0, 0x1F7D, 0xECB2, 0xECC5, 0x1F87,
+ 0xECC7, 0xECDA, 0x1D83, 0xECDB, 0xECDB, 0x1F9B, 0xECDC, 0xECE5, 0x1D97,
+ 0xECE9, 0xECFC, 0x1F9C, 0xED40, 0xED59, 0x1FB0, 0xED64, 0xED64, 0x1F16,
+ 0xED68, 0xED69, 0x1FCA, 0xED6A, 0xED6A, 0x1DC4, 0xED6B, 0xED6D, 0x1FCC,
+ 0xED6E, 0xED6E, 0x1DC3, 0xED6F, 0xED73, 0x1FCF, 0xED74, 0xED74, 0x1DC2,
+ 0xED75, 0xED78, 0x1FD4, 0xED7C, 0xED7E, 0x1FD8, 0xED80, 0xED8A, 0x1FDB,
+ 0xED8F, 0xED9E, 0x1FE6, 0xEF40, 0xEF41, 0x1ECF, 0xEF42, 0xEF42, 0x204C,
+ 0xEF43, 0xEF43, 0x2052, 0xEF44, 0xEF4D, 0x1ED1, 0xEF4E, 0xEF4E, 0x205A,
+ 0xEF4F, 0xEF4F, 0x2053, 0xEF50, 0xEF50, 0x2058, 0xEF51, 0xEF51, 0x2055,
+ 0xEF52, 0xEF63, 0x1EDB, 0xEF64, 0xEF79, 0x1EEE, 0xEF7A, 0xEF7B, 0x2048,
+ 0xEF8D, 0xEF90, 0x02E0, 0xEF91, 0xEF94, 0x1FF6,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-V_1.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-V_1.cpp
new file mode 100644
index 0000000000..b23057f738
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Japan1/Add-RKSJ-V_1.cpp
@@ -0,0 +1,29 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h"
+
+const FX_WORD g_FXCMAP_Add_RKSJ_V_1[57 * 3] = {
+ 0x8141, 0x8142, 0x1ECF, 0x8143, 0x8143, 0x204C, 0x8144, 0x8144, 0x2052,
+ 0x8150, 0x8151, 0x1ED1, 0x815B, 0x815D, 0x1ED3, 0x8160, 0x8164, 0x1ED6,
+ 0x8165, 0x8165, 0x205A, 0x8166, 0x8166, 0x2053, 0x8167, 0x8167, 0x2058,
+ 0x8168, 0x8168, 0x2055, 0x8169, 0x817A, 0x1EDB, 0x829F, 0x829F, 0x1EEE,
+ 0x82A1, 0x82A1, 0x1EEF, 0x82A3, 0x82A3, 0x1EF0, 0x82A5, 0x82A5, 0x1EF1,
+ 0x82A7, 0x82A7, 0x1EF2, 0x82C1, 0x82C1, 0x1EF3, 0x82E1, 0x82E1, 0x1EF4,
+ 0x82E3, 0x82E3, 0x1EF5, 0x82E5, 0x82E5, 0x1EF6, 0x82EC, 0x82EC, 0x1EF7,
+ 0x82F3, 0x82F4, 0x2048, 0x8340, 0x8340, 0x1EF8, 0x8342, 0x8342, 0x1EF9,
+ 0x8344, 0x8344, 0x1EFA, 0x8346, 0x8346, 0x1EFB, 0x8348, 0x8348, 0x1EFC,
+ 0x8362, 0x8362, 0x1EFD, 0x8383, 0x8383, 0x1EFE, 0x8385, 0x8385, 0x1EFF,
+ 0x8387, 0x8387, 0x1F00, 0x838E, 0x838E, 0x1F01, 0x8395, 0x8396, 0x1F02,
+ 0xEC78, 0xEC78, 0x1F07, 0xEC79, 0xEC79, 0x1F04, 0xEC7A, 0xEC7A, 0x2089,
+ 0xEC7B, 0xEC7B, 0x1F05, 0xEC7C, 0xEC7C, 0x208A, 0xEC7D, 0xEC7E, 0x2093,
+ 0xEC80, 0xEC80, 0x1F09, 0xEC81, 0xEC81, 0x2092, 0xEC82, 0xEC82, 0x1F0B,
+ 0xEC83, 0xEC83, 0x1F0F, 0xEC84, 0xEC84, 0x209C, 0xEC85, 0xEC85, 0x1F11,
+ 0xEC86, 0xEC86, 0x1F0E, 0xEC87, 0xEC87, 0x2098, 0xEC88, 0xEC88, 0x209B,
+ 0xEC89, 0xEC89, 0x1F12, 0xEC8A, 0xEC8A, 0x2097, 0xEC8B, 0xEC8C, 0x209D,
+ 0xEC8D, 0xEC8D, 0x20A6, 0xEC8E, 0xEC8E, 0x20A5, 0xEC8F, 0xEC8F, 0x20A1,
+ 0xEC90, 0xEC90, 0x20A4, 0xEC95, 0xEC95, 0x2084, 0xEF92, 0xEF92, 0x208D,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/Adobe-Japan1-UCS2_4.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/Adobe-Japan1-UCS2_4.cpp
new file mode 100644
index 0000000000..6be7bbfe5c
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Japan1/Adobe-Japan1-UCS2_4.cpp
@@ -0,0 +1,1726 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h"
+
+const FX_WORD g_FXCMAP_Japan1CID2Unicode_4[15444] = {
+ 0xFFFD, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x0030,
+ 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039,
+ 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, 0x0042,
+ 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B,
+ 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054,
+ 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x00A5, 0x005D,
+ 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066,
+ 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+ 0x0079, 0x007A, 0x007B, 0x00A6, 0x007D, 0x0303, 0x02BC, 0x005C, 0x02BB,
+ 0x007C, 0x007E, 0x00A1, 0x00A2, 0x00A3, 0x2044, 0x0192, 0x00A7, 0x00A4,
+ 0x201C, 0x00AB, 0x2039, 0x203A, 0xFB01, 0xFB02, 0x2012, 0x2020, 0x2021,
+ 0x00B7, 0x00B6, 0x2022, 0x201A, 0x201E, 0x201D, 0x00BB, 0x2026, 0x2030,
+ 0x00BF, 0x0301, 0x0302, 0x00AF, 0x0306, 0x0307, 0x0308, 0x030A, 0x00B8,
+ 0x030B, 0x0328, 0x030C, 0x0336, 0x00C6, 0x00AA, 0x0141, 0x00D8, 0x0152,
+ 0x00BA, 0x00E6, 0x0131, 0x0142, 0x00F8, 0x0153, 0x00DF, 0x002D, 0x00A9,
+ 0x00AC, 0x00AE, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B5, 0x00B9, 0x00BC,
+ 0x00BD, 0x00BE, 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C7,
+ 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, 0x00D0,
+ 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, 0x00D9, 0x00DA,
+ 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4,
+ 0x00E5, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE,
+ 0x00EF, 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
+ 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF, 0x0160, 0x0178,
+ 0x017D, 0x0305, 0x0161, 0x2122, 0x017E, 0x0030, 0x0020, 0x0021, 0x0022,
+ 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B,
+ 0x002C, 0x002D, 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034,
+ 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D,
+ 0x003E, 0x003F, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046,
+ 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
+ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058,
+ 0x0059, 0x005A, 0x005B, 0x00A5, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061,
+ 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A,
+ 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073,
+ 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C,
+ 0x007D, 0x203E, 0xFF60, 0xFF61, 0xFF62, 0xFF63, 0xFF64, 0xFF65, 0xFF66,
+ 0xFF67, 0xFF68, 0xFF69, 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6D, 0xFF6E, 0xFF6F,
+ 0xFF70, 0xFF71, 0xFF72, 0xFF73, 0xFF74, 0xFF75, 0xFF76, 0xFF77, 0xFF78,
+ 0xFF79, 0xFF7A, 0xFF7B, 0xFF7C, 0xFF7D, 0xFF7E, 0xFF7F, 0xFF80, 0xFF81,
+ 0xFF82, 0xFF83, 0xFF84, 0xFF85, 0xFF86, 0xFF87, 0xFF88, 0xFF89, 0xFF8A,
+ 0xFF8B, 0xFF8C, 0xFF8D, 0xFF8E, 0xFF8F, 0xFF90, 0xFF91, 0xFF92, 0xFF93,
+ 0xFF94, 0xFF95, 0xFF96, 0xFF97, 0xFF98, 0xFF99, 0xFF9A, 0xFF9B, 0xFF9C,
+ 0xFF9D, 0xFF9E, 0xFF9F, 0xFF40, 0x30F0, 0x30F1, 0x30EE, 0x30AB, 0x30B1,
+ 0x30F4, 0x30AC, 0x30AE, 0x30B0, 0x30B2, 0x30B4, 0x30B6, 0x30B8, 0x30BA,
+ 0x30BC, 0x30BE, 0x30C0, 0x30C2, 0x30C5, 0x30C7, 0x30C9, 0x30D0, 0x30D1,
+ 0x30D3, 0x30D4, 0x30D6, 0x30D7, 0x30D9, 0x30DA, 0x30DC, 0x30DD, 0xFF60,
+ 0x301D, 0x301E, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504, 0x2505, 0x2506,
+ 0x2507, 0x2508, 0x2509, 0x250A, 0x250B, 0x250C, 0x250D, 0x250E, 0x250F,
+ 0x2510, 0x2511, 0x2512, 0x2513, 0x2514, 0x2515, 0x2516, 0x2517, 0x2518,
+ 0x2519, 0x251A, 0x251B, 0x251C, 0x251D, 0x251E, 0x251F, 0x2520, 0x2521,
+ 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252A,
+ 0x252B, 0x252C, 0x252D, 0x252E, 0x252F, 0x2530, 0x2531, 0x2532, 0x2533,
+ 0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253A, 0x253B, 0x253C,
+ 0x253D, 0x253E, 0x253F, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545,
+ 0x2546, 0x2547, 0x2548, 0x2549, 0x254A, 0x254B, 0x2032, 0x00A8, 0x2036,
+ 0x005B, 0x005D, 0x3008, 0x3009, 0x300A, 0x300B, 0x300E, 0x300F, 0x3010,
+ 0x3011, 0x2012, 0xFF60, 0x3092, 0x3041, 0x3043, 0x3045, 0x3047, 0x3049,
+ 0x3083, 0x3085, 0x3087, 0x3063, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A,
+ 0x304B, 0x304D, 0x304F, 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B,
+ 0x305D, 0x305F, 0x3061, 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C,
+ 0x306D, 0x306E, 0x306F, 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F,
+ 0x3080, 0x3081, 0x3082, 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B,
+ 0x308C, 0x308D, 0x308F, 0x3093, 0x3090, 0x3091, 0x308E, 0x304C, 0x304E,
+ 0x3050, 0x3052, 0x3054, 0x3056, 0x3068, 0x305A, 0x305C, 0x305E, 0x3060,
+ 0x3062, 0x3065, 0x3067, 0x3069, 0x3070, 0x3071, 0x3073, 0x3074, 0x3076,
+ 0x3077, 0x3079, 0x307A, 0x307C, 0x307D, 0x00C4, 0x00F9, 0x00E9, 0x00ED,
+ 0x00DF, 0x00E7, 0x00C7, 0x00D1, 0x00F1, 0x00A2, 0x00A3, 0x00F3, 0x00FA,
+ 0x00A1, 0x00BF, 0x00BD, 0x00D6, 0x00DC, 0x00E4, 0x00EB, 0x00EF, 0x00F6,
+ 0x00DC, 0x00E2, 0x00EA, 0x00EE, 0x00F4, 0x00FC, 0x00E0, 0x00E9, 0x25B2,
+ 0x00E1, 0x007E, 0x0030, 0x3000, 0x3001, 0x3002, 0xFF0C, 0xFF0E, 0x30FB,
+ 0xFF1A, 0xFF1B, 0xFF1F, 0xFF01, 0x309B, 0x309C, 0x00B4, 0xFF40, 0x00A8,
+ 0xFF3E, 0x203E, 0xFF3F, 0x30FD, 0x30FE, 0x309D, 0x309E, 0x3003, 0x4EDD,
+ 0x3005, 0x3006, 0x3007, 0x30FC, 0x2015, 0x2010, 0xFF0F, 0xFF3C, 0xFF5E,
+ 0x2016, 0xFF5C, 0x2026, 0x2025, 0x2018, 0x2019, 0x201C, 0x201D, 0xFF08,
+ 0xFF09, 0x3014, 0x3015, 0xFF3B, 0xFF3D, 0xFF5B, 0xFF5D, 0x3008, 0x3009,
+ 0x300A, 0x300B, 0x300C, 0x300D, 0x300E, 0x300F, 0x3010, 0x3011, 0xFF0B,
+ 0xFF0D, 0x00B1, 0x00D7, 0x00F7, 0xFF1D, 0x2260, 0xFF1C, 0xFF1E, 0x2266,
+ 0x2267, 0x221E, 0x2234, 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103,
+ 0xFFE5, 0xFF04, 0x00A2, 0x00A3, 0xFF05, 0xFF03, 0xFF06, 0xFF0A, 0xFF20,
+ 0x00A7, 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE, 0x25C7, 0x25C6, 0x25A1,
+ 0x25A0, 0x25B3, 0x25B2, 0x25BD, 0x25BC, 0x203B, 0x3012, 0x2192, 0x2190,
+ 0x2191, 0x2193, 0x3013, 0x2208, 0x220B, 0x2286, 0x2287, 0x2282, 0x2283,
+ 0x222A, 0x2229, 0x2227, 0x2228, 0x00AC, 0x21D2, 0x21D4, 0x2200, 0x2203,
+ 0x2220, 0x22A5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x226A, 0x226B,
+ 0x221A, 0x223D, 0x221D, 0x2235, 0x222B, 0x222C, 0x212B, 0x2030, 0x266F,
+ 0x266D, 0x266A, 0x2020, 0x2021, 0x00B6, 0x25EF, 0xFF10, 0xFF11, 0xFF12,
+ 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18, 0xFF19, 0xFF21, 0xFF22,
+ 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B,
+ 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34,
+ 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF41, 0xFF42, 0xFF43,
+ 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C,
+ 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55,
+ 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0x3041, 0x3042, 0x3043, 0x3044,
+ 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D,
+ 0x304E, 0x304F, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056,
+ 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F,
+ 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
+ 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071,
+ 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A,
+ 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083,
+ 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C,
+ 0x308D, 0x308E, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A1, 0x30A2,
+ 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA, 0x30AB,
+ 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4,
+ 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD,
+ 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6,
+ 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF,
+ 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8,
+ 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0, 0x30E1,
+ 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, 0x30E9, 0x30EA,
+ 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3,
+ 0x30F4, 0x30F5, 0x30F6, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396,
+ 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
+ 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9,
+ 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9,
+ 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3,
+ 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x0410, 0x0411, 0x0412,
+ 0x0413, 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A,
+ 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423,
+ 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C,
+ 0x042D, 0x042E, 0x042F, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435,
+ 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D,
+ 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
+ 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
+ 0x4E9C, 0x5516, 0x5A03, 0x963F, 0x54C0, 0x611B, 0x6328, 0x59F6, 0x9022,
+ 0x8475, 0x831C, 0x7A50, 0x60AA, 0x63E1, 0x6E25, 0x65ED, 0x8466, 0x82A6,
+ 0x9BF5, 0x6893, 0x5727, 0x65A1, 0x6271, 0x5B9B, 0x59D0, 0x867B, 0x98F4,
+ 0x7D62, 0x7DBE, 0x9B8E, 0x6216, 0x7C9F, 0x88B7, 0x5B89, 0x5EB5, 0x6309,
+ 0x6697, 0x6848, 0x95C7, 0x978D, 0x674F, 0x4EE5, 0x4F0A, 0x4F4D, 0x4F9D,
+ 0x5049, 0x56F2, 0x5937, 0x59D4, 0x5A01, 0x5C09, 0x60DF, 0x610F, 0x6170,
+ 0x6613, 0x6905, 0x70BA, 0x754F, 0x7570, 0x79FB, 0x7DAD, 0x7DEF, 0x80C3,
+ 0x840E, 0x8863, 0x8B02, 0x9055, 0x907A, 0x533B, 0x4E95, 0x4EA5, 0x57DF,
+ 0x80B2, 0x90C1, 0x78EF, 0x4E00, 0x58F1, 0x6EA2, 0x9038, 0x7A32, 0x8328,
+ 0x828B, 0x9C2F, 0x5141, 0x5370, 0x54BD, 0x54E1, 0x56E0, 0x59FB, 0x5F15,
+ 0x98F2, 0x6DEB, 0x80E4, 0x852D, 0x9662, 0x9670, 0x96A0, 0x97FB, 0x540B,
+ 0x53F3, 0x5B87, 0x70CF, 0x7FBD, 0x8FC2, 0x96E8, 0x536F, 0x9D5C, 0x7ABA,
+ 0x4E11, 0x7893, 0x81FC, 0x6E26, 0x5618, 0x5504, 0x6B1D, 0x851A, 0x9C3B,
+ 0x59E5, 0x53A9, 0x6D66, 0x74DC, 0x958F, 0x5642, 0x4E91, 0x904B, 0x96F2,
+ 0x834F, 0x990C, 0x53E1, 0x55B6, 0x5B30, 0x5F71, 0x6620, 0x66F3, 0x6804,
+ 0x6C38, 0x6CF3, 0x6D29, 0x745B, 0x76C8, 0x7A4E, 0x9834, 0x82F1, 0x885B,
+ 0x8A60, 0x92ED, 0x6DB2, 0x75AB, 0x76CA, 0x99C5, 0x60A6, 0x8B01, 0x8D8A,
+ 0x95B2, 0x698E, 0x53AD, 0x5186, 0x5712, 0x5830, 0x5944, 0x5BB4, 0x5EF6,
+ 0x6028, 0x63A9, 0x63F4, 0x6CBF, 0x6F14, 0x708E, 0x7114, 0x7159, 0x71D5,
+ 0x733F, 0x7E01, 0x8276, 0x82D1, 0x8597, 0x9060, 0x925B, 0x9D1B, 0x5869,
+ 0x65BC, 0x6C5A, 0x7525, 0x51F9, 0x592E, 0x5965, 0x5F80, 0x5FDC, 0x62BC,
+ 0x65FA, 0x6A2A, 0x6B27, 0x6BB4, 0x738B, 0x7FC1, 0x8956, 0x9D2C, 0x9D0E,
+ 0x9EC4, 0x5CA1, 0x6C96, 0x837B, 0x5104, 0x5C4B, 0x61B6, 0x81C6, 0x6876,
+ 0x7261, 0x4E59, 0x4FFA, 0x5378, 0x6069, 0x6E29, 0x7A4F, 0x97F3, 0x4E0B,
+ 0x5316, 0x4EEE, 0x4F55, 0x4F3D, 0x4FA1, 0x4F73, 0x52A0, 0x53EF, 0x5609,
+ 0x590F, 0x5AC1, 0x5BB6, 0x5BE1, 0x79D1, 0x6687, 0x679C, 0x67B6, 0x6B4C,
+ 0x6CB3, 0x706B, 0x73C2, 0x798D, 0x79BE, 0x7A3C, 0x7B87, 0x82B1, 0x82DB,
+ 0x8304, 0x8377, 0x83EF, 0x83D3, 0x8766, 0x8AB2, 0x5629, 0x8CA8, 0x8FE6,
+ 0x904E, 0x971E, 0x868A, 0x4FC4, 0x5CE8, 0x6211, 0x7259, 0x753B, 0x81E5,
+ 0x82BD, 0x86FE, 0x8CC0, 0x96C5, 0x9913, 0x99D5, 0x4ECB, 0x4F1A, 0x89E3,
+ 0x56DE, 0x584A, 0x58CA, 0x5EFB, 0x5FEB, 0x602A, 0x6094, 0x6062, 0x61D0,
+ 0x6212, 0x62D0, 0x6539, 0x9B41, 0x6666, 0x68B0, 0x6D77, 0x7070, 0x754C,
+ 0x7686, 0x7D75, 0x82A5, 0x87F9, 0x958B, 0x968E, 0x8C9D, 0x51F1, 0x52BE,
+ 0x5916, 0x54B3, 0x5BB3, 0x5D16, 0x6168, 0x6982, 0x6DAF, 0x788D, 0x84CB,
+ 0x8857, 0x8A72, 0x93A7, 0x9AB8, 0x6D6C, 0x99A8, 0x86D9, 0x57A3, 0x67FF,
+ 0x86CE, 0x920E, 0x5283, 0x5687, 0x5404, 0x5ED3, 0x62E1, 0x64B9, 0x683C,
+ 0x6838, 0x6BBB, 0x7372, 0x78BA, 0x7A6B, 0x899A, 0x89D2, 0x8D6B, 0x8F03,
+ 0x90ED, 0x95A3, 0x9694, 0x9769, 0x5B66, 0x5CB3, 0x697D, 0x984D, 0x984E,
+ 0x639B, 0x7B20, 0x6A2B, 0x6A7F, 0x68B6, 0x9C0D, 0x6F5F, 0x5272, 0x559D,
+ 0x6070, 0x62EC, 0x6D3B, 0x6E07, 0x6ED1, 0x845B, 0x8910, 0x8F44, 0x4E14,
+ 0x9C39, 0x53F6, 0x691B, 0x6A3A, 0x9784, 0x682A, 0x515C, 0x7AC3, 0x84B2,
+ 0x91DC, 0x938C, 0x565B, 0x9D28, 0x6822, 0x8305, 0x8431, 0x7CA5, 0x5208,
+ 0x82C5, 0x74E6, 0x4E7E, 0x4F83, 0x51A0, 0x5BD2, 0x520A, 0x52D8, 0x52E7,
+ 0x5DFB, 0x559A, 0x582A, 0x59E6, 0x5B8C, 0x5B98, 0x5BDB, 0x5E72, 0x5E79,
+ 0x60A3, 0x611F, 0x6163, 0x61BE, 0x63DB, 0x6562, 0x67D1, 0x6853, 0x68FA,
+ 0x6B3E, 0x6B53, 0x6C57, 0x6F22, 0x6F97, 0x6F45, 0x74B0, 0x7518, 0x76E3,
+ 0x770B, 0x7AFF, 0x7BA1, 0x7C21, 0x7DE9, 0x7F36, 0x7FF0, 0x809D, 0x8266,
+ 0x839E, 0x89B3, 0x8ACC, 0x8CAB, 0x9084, 0x9451, 0x9593, 0x9591, 0x95A2,
+ 0x9665, 0x97D3, 0x9928, 0x8218, 0x4E38, 0x542B, 0x5CB8, 0x5DCC, 0x73A9,
+ 0x764C, 0x773C, 0x5CA9, 0x7FEB, 0x8D0B, 0x96C1, 0x9811, 0x9854, 0x9858,
+ 0x4F01, 0x4F0E, 0x5371, 0x559C, 0x5668, 0x57FA, 0x5947, 0x5B09, 0x5BC4,
+ 0x5C90, 0x5E0C, 0x5E7E, 0x5FCC, 0x63EE, 0x673A, 0x65D7, 0x65E2, 0x671F,
+ 0x68CB, 0x68C4, 0x6A5F, 0x5E30, 0x6BC5, 0x6C17, 0x6C7D, 0x757F, 0x7948,
+ 0x5B63, 0x7A00, 0x7D00, 0x5FBD, 0x898F, 0x8A18, 0x8CB4, 0x8D77, 0x8ECC,
+ 0x8F1D, 0x98E2, 0x9A0E, 0x9B3C, 0x4E80, 0x507D, 0x5100, 0x5993, 0x5B9C,
+ 0x622F, 0x6280, 0x64EC, 0x6B3A, 0x72A0, 0x7591, 0x7947, 0x7FA9, 0x87FB,
+ 0x8ABC, 0x8B70, 0x63AC, 0x83CA, 0x97A0, 0x5409, 0x5403, 0x55AB, 0x6854,
+ 0x6A58, 0x8A70, 0x7827, 0x6775, 0x9ECD, 0x5374, 0x5BA2, 0x811A, 0x8650,
+ 0x9006, 0x4E18, 0x4E45, 0x4EC7, 0x4F11, 0x53CA, 0x5438, 0x5BAE, 0x5F13,
+ 0x6025, 0x6551, 0x673D, 0x6C42, 0x6C72, 0x6CE3, 0x7078, 0x7403, 0x7A76,
+ 0x7AAE, 0x7B08, 0x7D1A, 0x7CFE, 0x7D66, 0x65E7, 0x725B, 0x53BB, 0x5C45,
+ 0x5DE8, 0x62D2, 0x62E0, 0x6319, 0x6E20, 0x865A, 0x8A31, 0x8DDD, 0x92F8,
+ 0x6F01, 0x79A6, 0x9B5A, 0x4EA8, 0x4EAB, 0x4EAC, 0x4F9B, 0x4FA0, 0x50D1,
+ 0x5147, 0x7AF6, 0x5171, 0x51F6, 0x5354, 0x5321, 0x537F, 0x53EB, 0x55AC,
+ 0x5883, 0x5CE1, 0x5F37, 0x5F4A, 0x602F, 0x6050, 0x606D, 0x631F, 0x6559,
+ 0x6A4B, 0x6CC1, 0x72C2, 0x72ED, 0x77EF, 0x80F8, 0x8105, 0x8208, 0x854E,
+ 0x90F7, 0x93E1, 0x97FF, 0x9957, 0x9A5A, 0x4EF0, 0x51DD, 0x5C2D, 0x6681,
+ 0x696D, 0x5C40, 0x66F2, 0x6975, 0x7389, 0x6850, 0x7C81, 0x50C5, 0x52E4,
+ 0x5747, 0x5DFE, 0x9326, 0x65A4, 0x6B23, 0x6B3D, 0x7434, 0x7981, 0x79BD,
+ 0x7B4B, 0x7DCA, 0x82B9, 0x83CC, 0x887F, 0x895F, 0x8B39, 0x8FD1, 0x91D1,
+ 0x541F, 0x9280, 0x4E5D, 0x5036, 0x53E5, 0x533A, 0x72D7, 0x7396, 0x77E9,
+ 0x82E6, 0x8EAF, 0x99C6, 0x99C8, 0x99D2, 0x5177, 0x611A, 0x865E, 0x55B0,
+ 0x7A7A, 0x5076, 0x5BD3, 0x9047, 0x9685, 0x4E32, 0x6ADB, 0x91E7, 0x5C51,
+ 0x5C48, 0x6398, 0x7A9F, 0x6C93, 0x9774, 0x8F61, 0x7AAA, 0x718A, 0x9688,
+ 0x7C82, 0x6817, 0x7E70, 0x6851, 0x936C, 0x52F2, 0x541B, 0x85AB, 0x8A13,
+ 0x7FA4, 0x8ECD, 0x90E1, 0x5366, 0x8888, 0x7941, 0x4FC2, 0x50BE, 0x5211,
+ 0x5144, 0x5553, 0x572D, 0x73EA, 0x578B, 0x5951, 0x5F62, 0x5F84, 0x6075,
+ 0x6176, 0x6167, 0x61A9, 0x63B2, 0x643A, 0x656C, 0x666F, 0x6842, 0x6E13,
+ 0x7566, 0x7A3D, 0x7CFB, 0x7D4C, 0x7D99, 0x7E4B, 0x7F6B, 0x830E, 0x834A,
+ 0x86CD, 0x8A08, 0x8A63, 0x8B66, 0x8EFD, 0x981A, 0x9D8F, 0x82B8, 0x8FCE,
+ 0x9BE8, 0x5287, 0x621F, 0x6483, 0x6FC0, 0x9699, 0x6841, 0x5091, 0x6B20,
+ 0x6C7A, 0x6F54, 0x7A74, 0x7D50, 0x8840, 0x8A23, 0x6708, 0x4EF6, 0x5039,
+ 0x5026, 0x5065, 0x517C, 0x5238, 0x5263, 0x55A7, 0x570F, 0x5805, 0x5ACC,
+ 0x5EFA, 0x61B2, 0x61F8, 0x62F3, 0x6372, 0x691C, 0x6A29, 0x727D, 0x72AC,
+ 0x732E, 0x7814, 0x786F, 0x7D79, 0x770C, 0x80A9, 0x898B, 0x8B19, 0x8CE2,
+ 0x8ED2, 0x9063, 0x9375, 0x967A, 0x9855, 0x9A13, 0x9E78, 0x5143, 0x539F,
+ 0x53B3, 0x5E7B, 0x5F26, 0x6E1B, 0x6E90, 0x7384, 0x73FE, 0x7D43, 0x8237,
+ 0x8A00, 0x8AFA, 0x9650, 0x4E4E, 0x500B, 0x53E4, 0x547C, 0x56FA, 0x59D1,
+ 0x5B64, 0x5DF1, 0x5EAB, 0x5F27, 0x6238, 0x6545, 0x67AF, 0x6E56, 0x72D0,
+ 0x7CCA, 0x88B4, 0x80A1, 0x80E1, 0x83F0, 0x864E, 0x8A87, 0x8DE8, 0x9237,
+ 0x96C7, 0x9867, 0x9F13, 0x4E94, 0x4E92, 0x4F0D, 0x5348, 0x5449, 0x543E,
+ 0x5A2F, 0x5F8C, 0x5FA1, 0x609F, 0x68A7, 0x6A8E, 0x745A, 0x7881, 0x8A9E,
+ 0x8AA4, 0x8B77, 0x9190, 0x4E5E, 0x9BC9, 0x4EA4, 0x4F7C, 0x4FAF, 0x5019,
+ 0x5016, 0x5149, 0x516C, 0x529F, 0x52B9, 0x52FE, 0x539A, 0x53E3, 0x5411,
+ 0x540E, 0x5589, 0x5751, 0x57A2, 0x597D, 0x5B54, 0x5B5D, 0x5B8F, 0x5DE5,
+ 0x5DE7, 0x5DF7, 0x5E78, 0x5E83, 0x5E9A, 0x5EB7, 0x5F18, 0x6052, 0x614C,
+ 0x6297, 0x62D8, 0x63A7, 0x653B, 0x6602, 0x6643, 0x66F4, 0x676D, 0x6821,
+ 0x6897, 0x69CB, 0x6C5F, 0x6D2A, 0x6D69, 0x6E2F, 0x6E9D, 0x7532, 0x7687,
+ 0x786C, 0x7A3F, 0x7CE0, 0x7D05, 0x7D18, 0x7D5E, 0x7DB1, 0x8015, 0x8003,
+ 0x80AF, 0x80B1, 0x8154, 0x818F, 0x822A, 0x8352, 0x884C, 0x8861, 0x8B1B,
+ 0x8CA2, 0x8CFC, 0x90CA, 0x9175, 0x9271, 0x783F, 0x92FC, 0x95A4, 0x964D,
+ 0x9805, 0x9999, 0x9AD8, 0x9D3B, 0x525B, 0x52AB, 0x53F7, 0x5408, 0x58D5,
+ 0x62F7, 0x6FE0, 0x8C6A, 0x8F5F, 0x9EB9, 0x514B, 0x523B, 0x544A, 0x56FD,
+ 0x7A40, 0x9177, 0x9D60, 0x9ED2, 0x7344, 0x6F09, 0x8170, 0x7511, 0x5FFD,
+ 0x60DA, 0x9AA8, 0x72DB, 0x8FBC, 0x6B64, 0x9803, 0x4ECA, 0x56F0, 0x5764,
+ 0x58BE, 0x5A5A, 0x6068, 0x61C7, 0x660F, 0x6606, 0x6839, 0x68B1, 0x6DF7,
+ 0x75D5, 0x7D3A, 0x826E, 0x9B42, 0x4E9B, 0x4F50, 0x53C9, 0x5506, 0x5D6F,
+ 0x5DE6, 0x5DEE, 0x67FB, 0x6C99, 0x7473, 0x7802, 0x8A50, 0x9396, 0x88DF,
+ 0x5750, 0x5EA7, 0x632B, 0x50B5, 0x50AC, 0x518D, 0x6700, 0x54C9, 0x585E,
+ 0x59BB, 0x5BB0, 0x5F69, 0x624D, 0x63A1, 0x683D, 0x6B73, 0x6E08, 0x707D,
+ 0x91C7, 0x7280, 0x7815, 0x7826, 0x796D, 0x658E, 0x7D30, 0x83DC, 0x88C1,
+ 0x8F09, 0x969B, 0x5264, 0x5728, 0x6750, 0x7F6A, 0x8CA1, 0x51B4, 0x5742,
+ 0x962A, 0x583A, 0x698A, 0x80B4, 0x54B2, 0x5D0E, 0x57FC, 0x7895, 0x9DFA,
+ 0x4F5C, 0x524A, 0x548B, 0x643E, 0x6628, 0x6714, 0x67F5, 0x7A84, 0x7B56,
+ 0x7D22, 0x932F, 0x685C, 0x9BAD, 0x7B39, 0x5319, 0x518A, 0x5237, 0x5BDF,
+ 0x62F6, 0x64AE, 0x64E6, 0x672D, 0x6BBA, 0x85A9, 0x96D1, 0x7690, 0x9BD6,
+ 0x634C, 0x9306, 0x9BAB, 0x76BF, 0x6652, 0x4E09, 0x5098, 0x53C2, 0x5C71,
+ 0x60E8, 0x6492, 0x6563, 0x685F, 0x71E6, 0x73CA, 0x7523, 0x7B97, 0x7E82,
+ 0x8695, 0x8B83, 0x8CDB, 0x9178, 0x9910, 0x65AC, 0x66AB, 0x6B8B, 0x4ED5,
+ 0x4ED4, 0x4F3A, 0x4F7F, 0x523A, 0x53F8, 0x53F2, 0x55E3, 0x56DB, 0x58EB,
+ 0x59CB, 0x59C9, 0x59FF, 0x5B50, 0x5C4D, 0x5E02, 0x5E2B, 0x5FD7, 0x601D,
+ 0x6307, 0x652F, 0x5B5C, 0x65AF, 0x65BD, 0x65E8, 0x679D, 0x6B62, 0x6B7B,
+ 0x6C0F, 0x7345, 0x7949, 0x79C1, 0x7CF8, 0x7D19, 0x7D2B, 0x80A2, 0x8102,
+ 0x81F3, 0x8996, 0x8A5E, 0x8A69, 0x8A66, 0x8A8C, 0x8AEE, 0x8CC7, 0x8CDC,
+ 0x96CC, 0x98FC, 0x6B6F, 0x4E8B, 0x4F3C, 0x4F8D, 0x5150, 0x5B57, 0x5BFA,
+ 0x6148, 0x6301, 0x6642, 0x6B21, 0x6ECB, 0x6CBB, 0x723E, 0x74BD, 0x75D4,
+ 0x78C1, 0x793A, 0x800C, 0x8033, 0x81EA, 0x8494, 0x8F9E, 0x6C50, 0x9E7F,
+ 0x5F0F, 0x8B58, 0x9D2B, 0x7AFA, 0x8EF8, 0x5B8D, 0x96EB, 0x4E03, 0x53F1,
+ 0x57F7, 0x5931, 0x5AC9, 0x5BA4, 0x6089, 0x6E7F, 0x6F06, 0x75BE, 0x8CEA,
+ 0x5B9F, 0x8500, 0x7BE0, 0x5072, 0x67F4, 0x829D, 0x5C61, 0x854A, 0x7E1E,
+ 0x820E, 0x5199, 0x5C04, 0x6368, 0x8D66, 0x659C, 0x716E, 0x793E, 0x7D17,
+ 0x8005, 0x8B1D, 0x8ECA, 0x906E, 0x86C7, 0x90AA, 0x501F, 0x52FA, 0x5C3A,
+ 0x6753, 0x707C, 0x7235, 0x914C, 0x91C8, 0x932B, 0x82E5, 0x5BC2, 0x5F31,
+ 0x60F9, 0x4E3B, 0x53D6, 0x5B88, 0x624B, 0x6731, 0x6B8A, 0x72E9, 0x73E0,
+ 0x7A2E, 0x816B, 0x8DA3, 0x9152, 0x9996, 0x5112, 0x53D7, 0x546A, 0x5BFF,
+ 0x6388, 0x6A39, 0x7DAC, 0x9700, 0x56DA, 0x53CE, 0x5468, 0x5B97, 0x5C31,
+ 0x5DDE, 0x4FEE, 0x6101, 0x62FE, 0x6D32, 0x79C0, 0x79CB, 0x7D42, 0x7E4D,
+ 0x7FD2, 0x81ED, 0x821F, 0x8490, 0x8846, 0x8972, 0x8B90, 0x8E74, 0x8F2F,
+ 0x9031, 0x914B, 0x916C, 0x96C6, 0x919C, 0x4EC0, 0x4F4F, 0x5145, 0x5341,
+ 0x5F93, 0x620E, 0x67D4, 0x6C41, 0x6E0B, 0x7363, 0x7E26, 0x91CD, 0x9283,
+ 0x53D4, 0x5919, 0x5BBF, 0x6DD1, 0x795D, 0x7E2E, 0x7C9B, 0x587E, 0x719F,
+ 0x51FA, 0x8853, 0x8FF0, 0x4FCA, 0x5CFB, 0x6625, 0x77AC, 0x7AE3, 0x821C,
+ 0x99FF, 0x51C6, 0x5FAA, 0x65EC, 0x696F, 0x6B89, 0x6DF3, 0x6E96, 0x6F64,
+ 0x76FE, 0x7D14, 0x5DE1, 0x9075, 0x9187, 0x9806, 0x51E6, 0x521D, 0x6240,
+ 0x6691, 0x66D9, 0x6E1A, 0x5EB6, 0x7DD2, 0x7F72, 0x66F8, 0x85AF, 0x85F7,
+ 0x8AF8, 0x52A9, 0x53D9, 0x5973, 0x5E8F, 0x5F90, 0x6055, 0x92E4, 0x9664,
+ 0x50B7, 0x511F, 0x52DD, 0x5320, 0x5347, 0x53EC, 0x54E8, 0x5546, 0x5531,
+ 0x5617, 0x5968, 0x59BE, 0x5A3C, 0x5BB5, 0x5C06, 0x5C0F, 0x5C11, 0x5C1A,
+ 0x5E84, 0x5E8A, 0x5EE0, 0x5F70, 0x627F, 0x6284, 0x62DB, 0x638C, 0x6377,
+ 0x6607, 0x660C, 0x662D, 0x6676, 0x677E, 0x68A2, 0x6A1F, 0x6A35, 0x6CBC,
+ 0x6D88, 0x6E09, 0x6E58, 0x713C, 0x7126, 0x7167, 0x75C7, 0x7701, 0x785D,
+ 0x7901, 0x7965, 0x79F0, 0x7AE0, 0x7B11, 0x7CA7, 0x7D39, 0x8096, 0x83D6,
+ 0x848B, 0x8549, 0x885D, 0x88F3, 0x8A1F, 0x8A3C, 0x8A54, 0x8A73, 0x8C61,
+ 0x8CDE, 0x91A4, 0x9266, 0x937E, 0x9418, 0x969C, 0x9798, 0x4E0A, 0x4E08,
+ 0x4E1E, 0x4E57, 0x5197, 0x5270, 0x57CE, 0x5834, 0x58CC, 0x5B22, 0x5E38,
+ 0x60C5, 0x64FE, 0x6761, 0x6756, 0x6D44, 0x72B6, 0x7573, 0x7A63, 0x84B8,
+ 0x8B72, 0x91B8, 0x9320, 0x5631, 0x57F4, 0x98FE, 0x62ED, 0x690D, 0x6B96,
+ 0x71ED, 0x7E54, 0x8077, 0x8272, 0x89E6, 0x98DF, 0x8755, 0x8FB1, 0x5C3B,
+ 0x4F38, 0x4FE1, 0x4FB5, 0x5507, 0x5A20, 0x5BDD, 0x5BE9, 0x5FC3, 0x614E,
+ 0x632F, 0x65B0, 0x664B, 0x68EE, 0x699B, 0x6D78, 0x6DF1, 0x7533, 0x75B9,
+ 0x771F, 0x795E, 0x79E6, 0x7D33, 0x81E3, 0x82AF, 0x85AA, 0x89AA, 0x8A3A,
+ 0x8EAB, 0x8F9B, 0x9032, 0x91DD, 0x9707, 0x4EBA, 0x4EC1, 0x5203, 0x5875,
+ 0x58EC, 0x5C0B, 0x751A, 0x5C3D, 0x814E, 0x8A0A, 0x8FC5, 0x9663, 0x976D,
+ 0x7B25, 0x8ACF, 0x9808, 0x9162, 0x56F3, 0x53A8, 0x9017, 0x5439, 0x5782,
+ 0x5E25, 0x63A8, 0x6C34, 0x708A, 0x7761, 0x7C8B, 0x7FE0, 0x8870, 0x9042,
+ 0x9154, 0x9310, 0x9318, 0x968F, 0x745E, 0x9AC4, 0x5D07, 0x5D69, 0x6570,
+ 0x67A2, 0x8DA8, 0x96DB, 0x636E, 0x6749, 0x6919, 0x83C5, 0x9817, 0x96C0,
+ 0x88FE, 0x6F84, 0x647A, 0x5BF8, 0x4E16, 0x702C, 0x755D, 0x662F, 0x51C4,
+ 0x5236, 0x52E2, 0x59D3, 0x5F81, 0x6027, 0x6210, 0x653F, 0x6574, 0x661F,
+ 0x6674, 0x68F2, 0x6816, 0x6B63, 0x6E05, 0x7272, 0x751F, 0x76DB, 0x7CBE,
+ 0x8056, 0x58F0, 0x88FD, 0x897F, 0x8AA0, 0x8A93, 0x8ACB, 0x901D, 0x9192,
+ 0x9752, 0x9759, 0x6589, 0x7A0E, 0x8106, 0x96BB, 0x5E2D, 0x60DC, 0x621A,
+ 0x65A5, 0x6614, 0x6790, 0x77F3, 0x7A4D, 0x7C4D, 0x7E3E, 0x810A, 0x8CAC,
+ 0x8D64, 0x8DE1, 0x8E5F, 0x78A9, 0x5207, 0x62D9, 0x63A5, 0x6442, 0x6298,
+ 0x8A2D, 0x7A83, 0x7BC0, 0x8AAC, 0x96EA, 0x7D76, 0x820C, 0x8749, 0x4ED9,
+ 0x5148, 0x5343, 0x5360, 0x5BA3, 0x5C02, 0x5C16, 0x5DDD, 0x6226, 0x6247,
+ 0x64B0, 0x6813, 0x6834, 0x6CC9, 0x6D45, 0x6D17, 0x67D3, 0x6F5C, 0x714E,
+ 0x717D, 0x65CB, 0x7A7F, 0x7BAD, 0x7DDA, 0x7E4A, 0x7FA8, 0x817A, 0x821B,
+ 0x8239, 0x85A6, 0x8A6E, 0x8CCE, 0x8DF5, 0x9078, 0x9077, 0x92AD, 0x9291,
+ 0x9583, 0x9BAE, 0x524D, 0x5584, 0x6F38, 0x7136, 0x5168, 0x7985, 0x7E55,
+ 0x81B3, 0x7CCE, 0x564C, 0x5851, 0x5CA8, 0x63AA, 0x66FE, 0x66FD, 0x695A,
+ 0x72D9, 0x758F, 0x758E, 0x790E, 0x7956, 0x79DF, 0x7C97, 0x7D20, 0x7D44,
+ 0x8607, 0x8A34, 0x963B, 0x9061, 0x9F20, 0x50E7, 0x5275, 0x53CC, 0x53E2,
+ 0x5009, 0x55AA, 0x58EE, 0x594F, 0x723D, 0x5B8B, 0x5C64, 0x531D, 0x60E3,
+ 0x60F3, 0x635C, 0x6383, 0x633F, 0x63BB, 0x64CD, 0x65E9, 0x66F9, 0x5DE3,
+ 0x69CD, 0x69FD, 0x6F15, 0x71E5, 0x4E89, 0x75E9, 0x76F8, 0x7A93, 0x7CDF,
+ 0x7DCF, 0x7D9C, 0x8061, 0x8349, 0x8358, 0x846C, 0x84BC, 0x85FB, 0x88C5,
+ 0x8D70, 0x9001, 0x906D, 0x9397, 0x971C, 0x9A12, 0x50CF, 0x5897, 0x618E,
+ 0x81D3, 0x8535, 0x8D08, 0x9020, 0x4FC3, 0x5074, 0x5247, 0x5373, 0x606F,
+ 0x6349, 0x675F, 0x6E2C, 0x8DB3, 0x901F, 0x4FD7, 0x5C5E, 0x8CCA, 0x65CF,
+ 0x7D9A, 0x5352, 0x8896, 0x5176, 0x63C3, 0x5B58, 0x5B6B, 0x5C0A, 0x640D,
+ 0x6751, 0x905C, 0x4ED6, 0x591A, 0x592A, 0x6C70, 0x8A51, 0x553E, 0x5815,
+ 0x59A5, 0x60F0, 0x6253, 0x67C1, 0x8235, 0x6955, 0x9640, 0x99C4, 0x9A28,
+ 0x4F53, 0x5806, 0x5BFE, 0x8010, 0x5CB1, 0x5E2F, 0x5F85, 0x6020, 0x614B,
+ 0x6234, 0x66FF, 0x6CF0, 0x6EDE, 0x80CE, 0x817F, 0x82D4, 0x888B, 0x8CB8,
+ 0x9000, 0x902E, 0x968A, 0x9EDB, 0x9BDB, 0x4EE3, 0x53F0, 0x5927, 0x7B2C,
+ 0x918D, 0x984C, 0x9DF9, 0x6EDD, 0x7027, 0x5353, 0x5544, 0x5B85, 0x6258,
+ 0x629E, 0x62D3, 0x6CA2, 0x6FEF, 0x7422, 0x8A17, 0x9438, 0x6FC1, 0x8AFE,
+ 0x8338, 0x51E7, 0x86F8, 0x53EA, 0x53E9, 0x4F46, 0x9054, 0x8FB0, 0x596A,
+ 0x8131, 0x5DFD, 0x7AEA, 0x8FBF, 0x68DA, 0x8C37, 0x72F8, 0x9C48, 0x6A3D,
+ 0x8AB0, 0x4E39, 0x5358, 0x5606, 0x5766, 0x62C5, 0x63A2, 0x65E6, 0x6B4E,
+ 0x6DE1, 0x6E5B, 0x70AD, 0x77ED, 0x7AEF, 0x7BAA, 0x7DBB, 0x803D, 0x80C6,
+ 0x86CB, 0x8A95, 0x935B, 0x56E3, 0x58C7, 0x5F3E, 0x65AD, 0x6696, 0x6A80,
+ 0x6BB5, 0x7537, 0x8AC7, 0x5024, 0x77E5, 0x5730, 0x5F1B, 0x6065, 0x667A,
+ 0x6C60, 0x75F4, 0x7A1A, 0x7F6E, 0x81F4, 0x8718, 0x9045, 0x99B3, 0x7BC9,
+ 0x755C, 0x7AF9, 0x7B51, 0x84C4, 0x9010, 0x79E9, 0x7A92, 0x8336, 0x5AE1,
+ 0x7740, 0x4E2D, 0x4EF2, 0x5B99, 0x5FE0, 0x62BD, 0x663C, 0x67F1, 0x6CE8,
+ 0x866B, 0x8877, 0x8A3B, 0x914E, 0x92F3, 0x99D0, 0x6A17, 0x7026, 0x732A,
+ 0x82E7, 0x8457, 0x8CAF, 0x4E01, 0x5146, 0x51CB, 0x558B, 0x5BF5, 0x5E16,
+ 0x5E33, 0x5E81, 0x5F14, 0x5F35, 0x5F6B, 0x5FB4, 0x61F2, 0x6311, 0x66A2,
+ 0x671D, 0x6F6E, 0x7252, 0x753A, 0x773A, 0x8074, 0x8139, 0x8178, 0x8776,
+ 0x8ABF, 0x8ADC, 0x8D85, 0x8DF3, 0x929A, 0x9577, 0x9802, 0x9CE5, 0x52C5,
+ 0x6357, 0x76F4, 0x6715, 0x6C88, 0x73CD, 0x8CC3, 0x93AE, 0x9673, 0x6D25,
+ 0x589C, 0x690E, 0x69CC, 0x8FFD, 0x939A, 0x75DB, 0x901A, 0x585A, 0x6802,
+ 0x63B4, 0x69FB, 0x4F43, 0x6F2C, 0x67D8, 0x8FBB, 0x8526, 0x7DB4, 0x9354,
+ 0x693F, 0x6F70, 0x576A, 0x58F7, 0x5B2C, 0x7D2C, 0x722A, 0x540A, 0x91E3,
+ 0x9DB4, 0x4EAD, 0x4F4E, 0x505C, 0x5075, 0x5243, 0x8C9E, 0x5448, 0x5824,
+ 0x5B9A, 0x5E1D, 0x5E95, 0x5EAD, 0x5EF7, 0x5F1F, 0x608C, 0x62B5, 0x633A,
+ 0x63D0, 0x68AF, 0x6C40, 0x7887, 0x798E, 0x7A0B, 0x7DE0, 0x8247, 0x8A02,
+ 0x8AE6, 0x8E44, 0x9013, 0x90B8, 0x912D, 0x91D8, 0x9F0E, 0x6CE5, 0x6458,
+ 0x64E2, 0x6575, 0x6EF4, 0x7684, 0x7B1B, 0x9069, 0x93D1, 0x6EBA, 0x54F2,
+ 0x5FB9, 0x64A4, 0x8F4D, 0x8FED, 0x9244, 0x5178, 0x586B, 0x5929, 0x5C55,
+ 0x5E97, 0x6DFB, 0x7E8F, 0x751C, 0x8CBC, 0x8EE2, 0x985B, 0x70B9, 0x4F1D,
+ 0x6BBF, 0x6FB1, 0x7530, 0x96FB, 0x514E, 0x5410, 0x5835, 0x5857, 0x59AC,
+ 0x5C60, 0x5F92, 0x6597, 0x675C, 0x6E21, 0x767B, 0x83DF, 0x8CED, 0x9014,
+ 0x90FD, 0x934D, 0x7825, 0x783A, 0x52AA, 0x5EA6, 0x571F, 0x5974, 0x6012,
+ 0x5012, 0x515A, 0x51AC, 0x51CD, 0x5200, 0x5510, 0x5854, 0x5858, 0x5957,
+ 0x5B95, 0x5CF6, 0x5D8B, 0x60BC, 0x6295, 0x642D, 0x6771, 0x6843, 0x68BC,
+ 0x68DF, 0x76D7, 0x6DD8, 0x6E6F, 0x6D9B, 0x706F, 0x71C8, 0x5F53, 0x75D8,
+ 0x7977, 0x7B49, 0x7B54, 0x7B52, 0x7CD6, 0x7D71, 0x5230, 0x8463, 0x8569,
+ 0x85E4, 0x8A0E, 0x8B04, 0x8C46, 0x8E0F, 0x9003, 0x900F, 0x9419, 0x9676,
+ 0x982D, 0x9A30, 0x95D8, 0x50CD, 0x52D5, 0x540C, 0x5802, 0x5C0E, 0x61A7,
+ 0x649E, 0x6D1E, 0x77B3, 0x7AE5, 0x80F4, 0x8404, 0x9053, 0x9285, 0x5CE0,
+ 0x9D07, 0x533F, 0x5F97, 0x5FB3, 0x6D9C, 0x7279, 0x7763, 0x79BF, 0x7BE4,
+ 0x6BD2, 0x72EC, 0x8AAD, 0x6803, 0x6A61, 0x51F8, 0x7A81, 0x6934, 0x5C4A,
+ 0x9CF6, 0x82EB, 0x5BC5, 0x9149, 0x701E, 0x5678, 0x5C6F, 0x60C7, 0x6566,
+ 0x6C8C, 0x8C5A, 0x9041, 0x9813, 0x5451, 0x66C7, 0x920D, 0x5948, 0x90A3,
+ 0x5185, 0x4E4D, 0x51EA, 0x8599, 0x8B0E, 0x7058, 0x637A, 0x934B, 0x6962,
+ 0x99B4, 0x7E04, 0x7577, 0x5357, 0x6960, 0x8EDF, 0x96E3, 0x6C5D, 0x4E8C,
+ 0x5C3C, 0x5F10, 0x8FE9, 0x5302, 0x8CD1, 0x8089, 0x8679, 0x5EFF, 0x65E5,
+ 0x4E73, 0x5165, 0x5982, 0x5C3F, 0x97EE, 0x4EFB, 0x598A, 0x5FCD, 0x8A8D,
+ 0x6FE1, 0x79B0, 0x7962, 0x5BE7, 0x8471, 0x732B, 0x71B1, 0x5E74, 0x5FF5,
+ 0x637B, 0x649A, 0x71C3, 0x7C98, 0x4E43, 0x5EFC, 0x4E4B, 0x57DC, 0x56A2,
+ 0x60A9, 0x6FC3, 0x7D0D, 0x80FD, 0x8133, 0x81BF, 0x8FB2, 0x8997, 0x86A4,
+ 0x5DF4, 0x628A, 0x64AD, 0x8987, 0x6777, 0x6CE2, 0x6D3E, 0x7436, 0x7834,
+ 0x5A46, 0x7F75, 0x82AD, 0x99AC, 0x4FF3, 0x5EC3, 0x62DD, 0x6392, 0x6557,
+ 0x676F, 0x76C3, 0x724C, 0x80CC, 0x80BA, 0x8F29, 0x914D, 0x500D, 0x57F9,
+ 0x5A92, 0x6885, 0x6973, 0x7164, 0x72FD, 0x8CB7, 0x58F2, 0x8CE0, 0x966A,
+ 0x9019, 0x877F, 0x79E4, 0x77E7, 0x8429, 0x4F2F, 0x5265, 0x535A, 0x62CD,
+ 0x67CF, 0x6CCA, 0x767D, 0x7B94, 0x7C95, 0x8236, 0x8584, 0x8FEB, 0x66DD,
+ 0x6F20, 0x7206, 0x7E1B, 0x83AB, 0x99C1, 0x9EA6, 0x51FD, 0x7BB1, 0x7872,
+ 0x7BB8, 0x8087, 0x7B48, 0x6AE8, 0x5E61, 0x808C, 0x7551, 0x7560, 0x516B,
+ 0x9262, 0x6E8C, 0x767A, 0x9197, 0x9AEA, 0x4F10, 0x7F70, 0x629C, 0x7B4F,
+ 0x95A5, 0x9CE9, 0x567A, 0x5859, 0x86E4, 0x96BC, 0x4F34, 0x5224, 0x534A,
+ 0x53CD, 0x53DB, 0x5E06, 0x642C, 0x6591, 0x677F, 0x6C3E, 0x6C4E, 0x7248,
+ 0x72AF, 0x73ED, 0x7554, 0x7E41, 0x822C, 0x85E9, 0x8CA9, 0x7BC4, 0x91C6,
+ 0x7169, 0x9812, 0x98EF, 0x633D, 0x6669, 0x756A, 0x76E4, 0x78D0, 0x8543,
+ 0x86EE, 0x532A, 0x5351, 0x5426, 0x5983, 0x5E87, 0x5F7C, 0x60B2, 0x6249,
+ 0x6279, 0x62AB, 0x6590, 0x6BD4, 0x6CCC, 0x75B2, 0x76AE, 0x7891, 0x79D8,
+ 0x7DCB, 0x7F77, 0x80A5, 0x88AB, 0x8AB9, 0x8CBB, 0x907F, 0x975E, 0x98DB,
+ 0x6A0B, 0x7C38, 0x5099, 0x5C3E, 0x5FAE, 0x6787, 0x6BD8, 0x7435, 0x7709,
+ 0x7F8E, 0x9F3B, 0x67CA, 0x7A17, 0x5339, 0x758B, 0x9AED, 0x5F66, 0x819D,
+ 0x83F1, 0x8098, 0x5F3C, 0x5FC5, 0x7562, 0x7B46, 0x903C, 0x6867, 0x59EB,
+ 0x5A9B, 0x7D10, 0x767E, 0x8B2C, 0x4FF5, 0x5F6A, 0x6A19, 0x6C37, 0x6F02,
+ 0x74E2, 0x7968, 0x8868, 0x8A55, 0x8C79, 0x5EDF, 0x63CF, 0x75C5, 0x79D2,
+ 0x82D7, 0x9328, 0x92F2, 0x849C, 0x86ED, 0x9C2D, 0x54C1, 0x5F6C, 0x658C,
+ 0x6D5C, 0x7015, 0x8CA7, 0x8CD3, 0x983B, 0x654F, 0x74F6, 0x4E0D, 0x4ED8,
+ 0x57E0, 0x592B, 0x5A66, 0x5BCC, 0x51A8, 0x5E03, 0x5E9C, 0x6016, 0x6276,
+ 0x6577, 0x65A7, 0x666E, 0x6D6E, 0x7236, 0x7B26, 0x8150, 0x819A, 0x8299,
+ 0x8B5C, 0x8CA0, 0x8CE6, 0x8D74, 0x961C, 0x9644, 0x4FAE, 0x64AB, 0x6B66,
+ 0x821E, 0x8461, 0x856A, 0x90E8, 0x5C01, 0x6953, 0x98A8, 0x847A, 0x8557,
+ 0x4F0F, 0x526F, 0x5FA9, 0x5E45, 0x670D, 0x798F, 0x8179, 0x8907, 0x8986,
+ 0x6DF5, 0x5F17, 0x6255, 0x6CB8, 0x4ECF, 0x7269, 0x9B92, 0x5206, 0x543B,
+ 0x5674, 0x58B3, 0x61A4, 0x626E, 0x711A, 0x596E, 0x7C89, 0x7CDE, 0x7D1B,
+ 0x96F0, 0x6587, 0x805E, 0x4E19, 0x4F75, 0x5175, 0x5840, 0x5E63, 0x5E73,
+ 0x5F0A, 0x67C4, 0x4E26, 0x853D, 0x9589, 0x965B, 0x7C73, 0x9801, 0x50FB,
+ 0x58C1, 0x7656, 0x78A7, 0x5225, 0x77A5, 0x8511, 0x7B86, 0x504F, 0x5909,
+ 0x7247, 0x7BC7, 0x7DE8, 0x8FBA, 0x8FD4, 0x904D, 0x4FBF, 0x52C9, 0x5A29,
+ 0x5F01, 0x97AD, 0x4FDD, 0x8217, 0x92EA, 0x5703, 0x6355, 0x6B69, 0x752B,
+ 0x88DC, 0x8F14, 0x7A42, 0x52DF, 0x5893, 0x6155, 0x620A, 0x66AE, 0x6BCD,
+ 0x7C3F, 0x83E9, 0x5023, 0x4FF8, 0x5305, 0x5446, 0x5831, 0x5949, 0x5B9D,
+ 0x5CF0, 0x5CEF, 0x5D29, 0x5E96, 0x62B1, 0x6367, 0x653E, 0x65B9, 0x670B,
+ 0x6CD5, 0x6CE1, 0x70F9, 0x7832, 0x7E2B, 0x80DE, 0x82B3, 0x840C, 0x84EC,
+ 0x8702, 0x8912, 0x8A2A, 0x8C4A, 0x90A6, 0x92D2, 0x98FD, 0x9CF3, 0x9D6C,
+ 0x4E4F, 0x4EA1, 0x508D, 0x5256, 0x574A, 0x59A8, 0x5E3D, 0x5FD8, 0x5FD9,
+ 0x623F, 0x66B4, 0x671B, 0x67D0, 0x68D2, 0x5192, 0x7D21, 0x80AA, 0x81A8,
+ 0x8B00, 0x8C8C, 0x8CBF, 0x927E, 0x9632, 0x5420, 0x982C, 0x5317, 0x50D5,
+ 0x535C, 0x58A8, 0x64B2, 0x6734, 0x7267, 0x7766, 0x7A46, 0x91E6, 0x52C3,
+ 0x6CA1, 0x6B86, 0x5800, 0x5E4C, 0x5954, 0x672C, 0x7FFB, 0x51E1, 0x76C6,
+ 0x6469, 0x78E8, 0x9B54, 0x9EBB, 0x57CB, 0x59B9, 0x6627, 0x679A, 0x6BCE,
+ 0x54E9, 0x69D9, 0x5E55, 0x819C, 0x6795, 0x9BAA, 0x67FE, 0x9C52, 0x685D,
+ 0x4EA6, 0x4FE3, 0x53C8, 0x62B9, 0x672B, 0x6CAB, 0x8FC4, 0x4FAD, 0x7E6D,
+ 0x9EBF, 0x4E07, 0x6162, 0x6E80, 0x6F2B, 0x8513, 0x5473, 0x672A, 0x9B45,
+ 0x5DF3, 0x7B95, 0x5CAC, 0x5BC6, 0x871C, 0x6E4A, 0x84D1, 0x7A14, 0x8108,
+ 0x5999, 0x7C8D, 0x6C11, 0x7720, 0x52D9, 0x5922, 0x7121, 0x725F, 0x77DB,
+ 0x9727, 0x9D61, 0x690B, 0x5A7F, 0x5A18, 0x51A5, 0x540D, 0x547D, 0x660E,
+ 0x76DF, 0x8FF7, 0x9298, 0x9CF4, 0x59EA, 0x725D, 0x6EC5, 0x514D, 0x68C9,
+ 0x7DBF, 0x7DEC, 0x9762, 0x9EBA, 0x6478, 0x6A21, 0x8302, 0x5984, 0x5B5F,
+ 0x6BDB, 0x731B, 0x76F2, 0x7DB2, 0x8017, 0x8499, 0x5132, 0x6728, 0x9ED9,
+ 0x76EE, 0x6762, 0x52FF, 0x9905, 0x5C24, 0x623B, 0x7C7E, 0x8CB0, 0x554F,
+ 0x60B6, 0x7D0B, 0x9580, 0x5301, 0x4E5F, 0x51B6, 0x591C, 0x723A, 0x8036,
+ 0x91CE, 0x5F25, 0x77E2, 0x5384, 0x5F79, 0x7D04, 0x85AC, 0x8A33, 0x8E8D,
+ 0x9756, 0x67F3, 0x85AE, 0x9453, 0x6109, 0x6108, 0x6CB9, 0x7652, 0x8AED,
+ 0x8F38, 0x552F, 0x4F51, 0x512A, 0x52C7, 0x53CB, 0x5BA5, 0x5E7D, 0x60A0,
+ 0x6182, 0x63D6, 0x6709, 0x67DA, 0x6E67, 0x6D8C, 0x7336, 0x7337, 0x7531,
+ 0x7950, 0x88D5, 0x8A98, 0x904A, 0x9091, 0x90F5, 0x96C4, 0x878D, 0x5915,
+ 0x4E88, 0x4F59, 0x4E0E, 0x8A89, 0x8F3F, 0x9810, 0x50AD, 0x5E7C, 0x5996,
+ 0x5BB9, 0x5EB8, 0x63DA, 0x63FA, 0x64C1, 0x66DC, 0x694A, 0x69D8, 0x6D0B,
+ 0x6EB6, 0x7194, 0x7528, 0x7AAF, 0x7F8A, 0x8000, 0x8449, 0x84C9, 0x8981,
+ 0x8B21, 0x8E0A, 0x9065, 0x967D, 0x990A, 0x617E, 0x6291, 0x6B32, 0x6C83,
+ 0x6D74, 0x7FCC, 0x7FFC, 0x6DC0, 0x7F85, 0x87BA, 0x88F8, 0x6765, 0x83B1,
+ 0x983C, 0x96F7, 0x6D1B, 0x7D61, 0x843D, 0x916A, 0x4E71, 0x5375, 0x5D50,
+ 0x6B04, 0x6FEB, 0x85CD, 0x862D, 0x89A7, 0x5229, 0x540F, 0x5C65, 0x674E,
+ 0x68A8, 0x7406, 0x7483, 0x75E2, 0x88CF, 0x88E1, 0x91CC, 0x96E2, 0x9678,
+ 0x5F8B, 0x7387, 0x7ACB, 0x844E, 0x63A0, 0x7565, 0x5289, 0x6D41, 0x6E9C,
+ 0x7409, 0x7559, 0x786B, 0x7C92, 0x9686, 0x7ADC, 0x9F8D, 0x4FB6, 0x616E,
+ 0x65C5, 0x865C, 0x4E86, 0x4EAE, 0x50DA, 0x4E21, 0x51CC, 0x5BEE, 0x6599,
+ 0x6881, 0x6DBC, 0x731F, 0x7642, 0x77AD, 0x7A1C, 0x7CE7, 0x826F, 0x8AD2,
+ 0x907C, 0x91CF, 0x9675, 0x9818, 0x529B, 0x7DD1, 0x502B, 0x5398, 0x6797,
+ 0x6DCB, 0x71D0, 0x7433, 0x81E8, 0x8F2A, 0x96A3, 0x9C57, 0x9E9F, 0x7460,
+ 0x5841, 0x6D99, 0x7D2F, 0x985E, 0x4EE4, 0x4F36, 0x4F8B, 0x51B7, 0x52B1,
+ 0x5DBA, 0x601C, 0x73B2, 0x793C, 0x82D3, 0x9234, 0x96B7, 0x96F6, 0x970A,
+ 0x9E97, 0x9F62, 0x66A6, 0x6B74, 0x5217, 0x52A3, 0x70C8, 0x88C2, 0x5EC9,
+ 0x604B, 0x6190, 0x6F23, 0x7149, 0x7C3E, 0x7DF4, 0x806F, 0x84EE, 0x9023,
+ 0x932C, 0x5442, 0x9B6F, 0x6AD3, 0x7089, 0x8CC2, 0x8DEF, 0x9732, 0x52B4,
+ 0x5A41, 0x5ECA, 0x5F04, 0x6717, 0x697C, 0x6994, 0x6D6A, 0x6F0F, 0x7262,
+ 0x72FC, 0x7BED, 0x8001, 0x807E, 0x874B, 0x90CE, 0x516D, 0x9E93, 0x7984,
+ 0x808B, 0x9332, 0x8AD6, 0x502D, 0x548C, 0x8A71, 0x6B6A, 0x8CC4, 0x8107,
+ 0x60D1, 0x67A0, 0x9DF2, 0x4E99, 0x4E98, 0x9C10, 0x8A6B, 0x85C1, 0x8568,
+ 0x6900, 0x6E7E, 0x7897, 0x8155, 0x5F0C, 0x4E10, 0x4E15, 0x4E2A, 0x4E31,
+ 0x4E36, 0x4E3C, 0x4E3F, 0x4E42, 0x4E56, 0x4E58, 0x4E82, 0x4E85, 0x8C6B,
+ 0x4E8A, 0x8212, 0x5F0D, 0x4E8E, 0x4E9E, 0x4E9F, 0x4EA0, 0x4EA2, 0x4EB0,
+ 0x4EB3, 0x4EB6, 0x4ECE, 0x4ECD, 0x4EC4, 0x4EC6, 0x4EC2, 0x4ED7, 0x4EDE,
+ 0x4EED, 0x4EDF, 0x4EF7, 0x4F09, 0x4F5A, 0x4F30, 0x4F5B, 0x4F5D, 0x4F57,
+ 0x4F47, 0x4F76, 0x4F88, 0x4F8F, 0x4F98, 0x4F7B, 0x4F69, 0x4F70, 0x4F91,
+ 0x4F6F, 0x4F86, 0x4F96, 0x5118, 0x4FD4, 0x4FDF, 0x4FCE, 0x4FD8, 0x4FDB,
+ 0x4FD1, 0x4FDA, 0x4FD0, 0x4FE4, 0x4FE5, 0x501A, 0x5028, 0x5014, 0x502A,
+ 0x5025, 0x5005, 0x4F1C, 0x4FF6, 0x5021, 0x5029, 0x502C, 0x4FFE, 0x4FEF,
+ 0x5011, 0x5006, 0x5043, 0x5047, 0x6703, 0x5055, 0x5050, 0x5048, 0x505A,
+ 0x5056, 0x506C, 0x5078, 0x5080, 0x509A, 0x5085, 0x50B4, 0x50B2, 0x50C9,
+ 0x50CA, 0x50B3, 0x50C2, 0x50D6, 0x50DE, 0x50E5, 0x50ED, 0x50E3, 0x50EE,
+ 0x50F9, 0x50F5, 0x5109, 0x5101, 0x5102, 0x5116, 0x5115, 0x5114, 0x511A,
+ 0x5121, 0x513A, 0x5137, 0x513C, 0x513B, 0x513F, 0x5140, 0x5152, 0x514C,
+ 0x5154, 0x5162, 0x7AF8, 0x5169, 0x516A, 0x516E, 0x5180, 0x5182, 0x56D8,
+ 0x518C, 0x5189, 0x518F, 0x5191, 0x5193, 0x5195, 0x5196, 0x51A4, 0x51A6,
+ 0x51A2, 0x51A9, 0x51AA, 0x51AB, 0x51B3, 0x51B1, 0x51B2, 0x51B0, 0x51B5,
+ 0x51BD, 0x51C5, 0x51C9, 0x51DB, 0x51E0, 0x8655, 0x51E9, 0x51ED, 0x51F0,
+ 0x51F5, 0x51FE, 0x5204, 0x520B, 0x5214, 0x520E, 0x5227, 0x522A, 0x522E,
+ 0x5233, 0x5239, 0x524F, 0x5244, 0x524B, 0x524C, 0x525E, 0x5254, 0x526A,
+ 0x5274, 0x5269, 0x5273, 0x527F, 0x527D, 0x528D, 0x5294, 0x5292, 0x5271,
+ 0x5288, 0x5291, 0x8FA8, 0x8FA7, 0x52AC, 0x52AD, 0x52BC, 0x52B5, 0x52C1,
+ 0x52CD, 0x52D7, 0x52DE, 0x52E3, 0x52E6, 0x98ED, 0x52E0, 0x52F3, 0x52F5,
+ 0x52F8, 0x52F9, 0x5306, 0x5308, 0x7538, 0x530D, 0x5310, 0x530F, 0x5315,
+ 0x531A, 0x5323, 0x532F, 0x5331, 0x5333, 0x5338, 0x5340, 0x5346, 0x5345,
+ 0x4E17, 0x5349, 0x534D, 0x51D6, 0x535E, 0x5369, 0x536E, 0x5918, 0x537B,
+ 0x5377, 0x5382, 0x5396, 0x53A0, 0x53A6, 0x53A5, 0x53AE, 0x53B0, 0x53B6,
+ 0x53C3, 0x7C12, 0x96D9, 0x53DF, 0x66FC, 0x71EE, 0x53EE, 0x53E8, 0x53ED,
+ 0x53FA, 0x5401, 0x543D, 0x5440, 0x542C, 0x542D, 0x543C, 0x542E, 0x5436,
+ 0x5429, 0x541D, 0x544E, 0x548F, 0x5475, 0x548E, 0x545F, 0x5471, 0x5477,
+ 0x5470, 0x5492, 0x547B, 0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54C7,
+ 0x54A2, 0x54B8, 0x54A5, 0x54AC, 0x54C4, 0x54C8, 0x54A8, 0x54AB, 0x54C2,
+ 0x54A4, 0x54BE, 0x54BC, 0x54D8, 0x54E5, 0x54E6, 0x550F, 0x5514, 0x54FD,
+ 0x54EE, 0x54ED, 0x54FA, 0x54E2, 0x5539, 0x5540, 0x5563, 0x554C, 0x552E,
+ 0x555C, 0x5545, 0x5556, 0x5557, 0x5538, 0x5533, 0x555D, 0x5599, 0x5580,
+ 0x54AF, 0x558A, 0x559F, 0x557B, 0x557E, 0x5598, 0x559E, 0x55AE, 0x557C,
+ 0x5583, 0x55A9, 0x5587, 0x55A8, 0x55DA, 0x55C5, 0x55DF, 0x55C4, 0x55DC,
+ 0x55E4, 0x55D4, 0x5614, 0x55F7, 0x5616, 0x55FE, 0x55FD, 0x561B, 0x55F9,
+ 0x564E, 0x5650, 0x71DF, 0x5634, 0x5636, 0x5632, 0x5638, 0x566B, 0x5664,
+ 0x562F, 0x566C, 0x566A, 0x5686, 0x5680, 0x568A, 0x56A0, 0x5694, 0x568F,
+ 0x56A5, 0x56AE, 0x56B6, 0x56B4, 0x56C2, 0x56BC, 0x56C1, 0x56C3, 0x56C0,
+ 0x56C8, 0x56CE, 0x56D1, 0x56D3, 0x56D7, 0x56EE, 0x56F9, 0x5700, 0x56FF,
+ 0x5704, 0x5709, 0x5708, 0x570B, 0x570D, 0x5713, 0x5718, 0x5716, 0x55C7,
+ 0x571C, 0x5726, 0x5737, 0x5738, 0x574E, 0x573B, 0x5740, 0x574F, 0x5769,
+ 0x57C0, 0x5788, 0x5761, 0x577F, 0x5789, 0x5793, 0x57A0, 0x57B3, 0x57A4,
+ 0x57AA, 0x57B0, 0x57C3, 0x57C6, 0x57D4, 0x57D2, 0x57D3, 0x580A, 0x57D6,
+ 0x57E3, 0x580B, 0x5819, 0x581D, 0x5872, 0x5821, 0x5862, 0x584B, 0x5870,
+ 0x6BC0, 0x5852, 0x583D, 0x5879, 0x5885, 0x58B9, 0x589F, 0x58AB, 0x58BA,
+ 0x58DE, 0x58BB, 0x58B8, 0x58AE, 0x58C5, 0x58D3, 0x58D1, 0x58D7, 0x58D9,
+ 0x58D8, 0x58E5, 0x58DC, 0x58E4, 0x58DF, 0x58EF, 0x58FA, 0x58F9, 0x58FB,
+ 0x58FC, 0x58FD, 0x5902, 0x590A, 0x5910, 0x591B, 0x68A6, 0x5925, 0x592C,
+ 0x592D, 0x5932, 0x5938, 0x593E, 0x7AD2, 0x5955, 0x5950, 0x594E, 0x595A,
+ 0x5958, 0x5962, 0x5960, 0x5967, 0x596C, 0x5969, 0x5978, 0x5981, 0x599D,
+ 0x4F5E, 0x4FAB, 0x59A3, 0x59B2, 0x59C6, 0x59E8, 0x59DC, 0x598D, 0x59D9,
+ 0x59DA, 0x5A25, 0x5A1F, 0x5A11, 0x5A1C, 0x5A09, 0x5A1A, 0x5A40, 0x5A6C,
+ 0x5A49, 0x5A35, 0x5A36, 0x5A62, 0x5A6A, 0x5A9A, 0x5ABC, 0x5ABE, 0x5ACB,
+ 0x5AC2, 0x5ABD, 0x5AE3, 0x5AD7, 0x5AE6, 0x5AE9, 0x5AD6, 0x5AFA, 0x5AFB,
+ 0x5B0C, 0x5B0B, 0x5B16, 0x5B32, 0x5AD0, 0x5B2A, 0x5B36, 0x5B3E, 0x5B43,
+ 0x5B45, 0x5B40, 0x5B51, 0x5B55, 0x5B5A, 0x5B5B, 0x5B65, 0x5B69, 0x5B70,
+ 0x5B73, 0x5B75, 0x5B78, 0x6588, 0x5B7A, 0x5B80, 0x5B83, 0x5BA6, 0x5BB8,
+ 0x5BC3, 0x5BC7, 0x5BC9, 0x5BD4, 0x5BD0, 0x5BE4, 0x5BE6, 0x5BE2, 0x5BDE,
+ 0x5BE5, 0x5BEB, 0x5BF0, 0x5BF6, 0x5BF3, 0x5C05, 0x5C07, 0x5C08, 0x5C0D,
+ 0x5C13, 0x5C20, 0x5C22, 0x5C28, 0x5C38, 0x5C39, 0x5C41, 0x5C46, 0x5C4E,
+ 0x5C53, 0x5C50, 0x5C4F, 0x5B71, 0x5C6C, 0x5C6E, 0x4E62, 0x5C76, 0x5C79,
+ 0x5C8C, 0x5C91, 0x5C94, 0x599B, 0x5CAB, 0x5CBB, 0x5CB6, 0x5CBC, 0x5CB7,
+ 0x5CC5, 0x5CBE, 0x5CC7, 0x5CD9, 0x5CE9, 0x5CFD, 0x5CFA, 0x5CED, 0x5D8C,
+ 0x5CEA, 0x5D0B, 0x5D15, 0x5D17, 0x5D5C, 0x5D1F, 0x5D1B, 0x5D11, 0x5D14,
+ 0x5D22, 0x5D1A, 0x5D19, 0x5D18, 0x5D4C, 0x5D52, 0x5D4E, 0x5D4B, 0x5D6C,
+ 0x5D73, 0x5D76, 0x5D87, 0x5D84, 0x5D82, 0x5DA2, 0x5D9D, 0x5DAC, 0x5DAE,
+ 0x5DBD, 0x5D90, 0x5DB7, 0x5DBC, 0x5DC9, 0x5DCD, 0x5DD3, 0x5DD2, 0x5DD6,
+ 0x5DDB, 0x5DEB, 0x5DF2, 0x5DF5, 0x5E0B, 0x5E1A, 0x5E19, 0x5E11, 0x5E1B,
+ 0x5E36, 0x5E37, 0x5E44, 0x5E43, 0x5E40, 0x5E4E, 0x5E57, 0x5E54, 0x5E5F,
+ 0x5E62, 0x5E64, 0x5E47, 0x5E75, 0x5E76, 0x5E7A, 0x9EBC, 0x5E7F, 0x5EA0,
+ 0x5EC1, 0x5EC2, 0x5EC8, 0x5ED0, 0x5ECF, 0x5ED6, 0x5EE3, 0x5EDD, 0x5EDA,
+ 0x5EDB, 0x5EE2, 0x5EE1, 0x5EE8, 0x5EE9, 0x5EEC, 0x5EF1, 0x5EF3, 0x5EF0,
+ 0x5EF4, 0x5EF8, 0x5EFE, 0x5F03, 0x5F09, 0x5F5D, 0x5F5C, 0x5F0B, 0x5F11,
+ 0x5F16, 0x5F29, 0x5F2D, 0x5F38, 0x5F41, 0x5F48, 0x5F4C, 0x5F4E, 0x5F2F,
+ 0x5F51, 0x5F56, 0x5F57, 0x5F59, 0x5F61, 0x5F6D, 0x5F73, 0x5F77, 0x5F83,
+ 0x5F82, 0x5F7F, 0x5F8A, 0x5F88, 0x5F91, 0x5F87, 0x5F9E, 0x5F99, 0x5F98,
+ 0x5FA0, 0x5FA8, 0x5FAD, 0x5FBC, 0x5FD6, 0x5FFB, 0x5FE4, 0x5FF8, 0x5FF1,
+ 0x5FDD, 0x60B3, 0x5FFF, 0x6021, 0x6060, 0x6019, 0x6010, 0x6029, 0x600E,
+ 0x6031, 0x601B, 0x6015, 0x602B, 0x6026, 0x600F, 0x603A, 0x605A, 0x6041,
+ 0x606A, 0x6077, 0x605F, 0x604A, 0x6046, 0x604D, 0x6063, 0x6043, 0x6064,
+ 0x6042, 0x606C, 0x606B, 0x6059, 0x6081, 0x608D, 0x60E7, 0x6083, 0x609A,
+ 0x6084, 0x609B, 0x6096, 0x6097, 0x6092, 0x60A7, 0x608B, 0x60E1, 0x60B8,
+ 0x60E0, 0x60D3, 0x60B4, 0x5FF0, 0x60BD, 0x60C6, 0x60B5, 0x60D8, 0x614D,
+ 0x6115, 0x6106, 0x60F6, 0x60F7, 0x6100, 0x60F4, 0x60FA, 0x6103, 0x6121,
+ 0x60FB, 0x60F1, 0x610D, 0x610E, 0x6147, 0x613E, 0x6128, 0x6127, 0x614A,
+ 0x613F, 0x613C, 0x612C, 0x6134, 0x613D, 0x6142, 0x6144, 0x6173, 0x6177,
+ 0x6158, 0x6159, 0x615A, 0x616B, 0x6174, 0x616F, 0x6165, 0x6171, 0x615F,
+ 0x615D, 0x6153, 0x6175, 0x6199, 0x6196, 0x6187, 0x61AC, 0x6194, 0x619A,
+ 0x618A, 0x6191, 0x61AB, 0x61AE, 0x61CC, 0x61CA, 0x61C9, 0x61F7, 0x61C8,
+ 0x61C3, 0x61C6, 0x61BA, 0x61CB, 0x7F79, 0x61CD, 0x61E6, 0x61E3, 0x61F6,
+ 0x61FA, 0x61F4, 0x61FF, 0x61FD, 0x61FC, 0x61FE, 0x6200, 0x6208, 0x6209,
+ 0x620D, 0x620C, 0x6214, 0x621B, 0x621E, 0x6221, 0x622A, 0x622E, 0x6230,
+ 0x6232, 0x6233, 0x6241, 0x624E, 0x625E, 0x6263, 0x625B, 0x6260, 0x6268,
+ 0x627C, 0x6282, 0x6289, 0x627E, 0x6292, 0x6293, 0x6296, 0x62D4, 0x6283,
+ 0x6294, 0x62D7, 0x62D1, 0x62BB, 0x62CF, 0x62FF, 0x62C6, 0x64D4, 0x62C8,
+ 0x62DC, 0x62CC, 0x62CA, 0x62C2, 0x62C7, 0x629B, 0x62C9, 0x630C, 0x62EE,
+ 0x62F1, 0x6327, 0x6302, 0x6308, 0x62EF, 0x62F5, 0x6350, 0x633E, 0x634D,
+ 0x641C, 0x634F, 0x6396, 0x638E, 0x6380, 0x63AB, 0x6376, 0x63A3, 0x638F,
+ 0x6389, 0x639F, 0x63B5, 0x636B, 0x6369, 0x63BE, 0x63E9, 0x63C0, 0x63C6,
+ 0x63E3, 0x63C9, 0x63D2, 0x63F6, 0x63C4, 0x6416, 0x6434, 0x6406, 0x6413,
+ 0x6426, 0x6436, 0x651D, 0x6417, 0x6428, 0x640F, 0x6467, 0x646F, 0x6476,
+ 0x644E, 0x652A, 0x6495, 0x6493, 0x64A5, 0x64A9, 0x6488, 0x64BC, 0x64DA,
+ 0x64D2, 0x64C5, 0x64C7, 0x64BB, 0x64D8, 0x64C2, 0x64F1, 0x64E7, 0x8209,
+ 0x64E0, 0x64E1, 0x62AC, 0x64E3, 0x64EF, 0x652C, 0x64F6, 0x64F4, 0x64F2,
+ 0x64FA, 0x6500, 0x64FD, 0x6518, 0x651C, 0x6505, 0x6524, 0x6523, 0x652B,
+ 0x6534, 0x6535, 0x6537, 0x6536, 0x6538, 0x754B, 0x6548, 0x6556, 0x6555,
+ 0x654D, 0x6558, 0x655E, 0x655D, 0x6572, 0x6578, 0x6582, 0x6583, 0x8B8A,
+ 0x659B, 0x659F, 0x65AB, 0x65B7, 0x65C3, 0x65C6, 0x65C1, 0x65C4, 0x65CC,
+ 0x65D2, 0x65DB, 0x65D9, 0x65E0, 0x65E1, 0x65F1, 0x6772, 0x660A, 0x6603,
+ 0x65FB, 0x6773, 0x6635, 0x6636, 0x6634, 0x661C, 0x664F, 0x6644, 0x6649,
+ 0x6641, 0x665E, 0x665D, 0x6664, 0x6667, 0x6668, 0x665F, 0x6662, 0x6670,
+ 0x6683, 0x6688, 0x668E, 0x6689, 0x6684, 0x6698, 0x669D, 0x66C1, 0x66B9,
+ 0x66C9, 0x66BE, 0x66BC, 0x66C4, 0x66B8, 0x66D6, 0x66DA, 0x66E0, 0x663F,
+ 0x66E6, 0x66E9, 0x66F0, 0x66F5, 0x66F7, 0x670F, 0x6716, 0x671E, 0x6726,
+ 0x6727, 0x9738, 0x672E, 0x673F, 0x6736, 0x6741, 0x6738, 0x6737, 0x6746,
+ 0x675E, 0x6760, 0x6759, 0x6763, 0x6764, 0x6789, 0x6770, 0x67A9, 0x677C,
+ 0x676A, 0x678C, 0x678B, 0x67A6, 0x67A1, 0x6785, 0x67B7, 0x67EF, 0x67B4,
+ 0x67EC, 0x67B3, 0x67E9, 0x67B8, 0x67E4, 0x67DE, 0x67DD, 0x67E2, 0x67EE,
+ 0x67B9, 0x67CE, 0x67C6, 0x67E7, 0x6A9C, 0x681E, 0x6846, 0x6829, 0x6840,
+ 0x684D, 0x6832, 0x684E, 0x68B3, 0x682B, 0x6859, 0x6863, 0x6877, 0x687F,
+ 0x689F, 0x688F, 0x68AD, 0x6894, 0x689D, 0x689B, 0x6883, 0x6AAE, 0x68B9,
+ 0x6874, 0x68B5, 0x68A0, 0x68BA, 0x690F, 0x688D, 0x687E, 0x6901, 0x68CA,
+ 0x6908, 0x68D8, 0x6922, 0x6926, 0x68E1, 0x690C, 0x68CD, 0x68D4, 0x68E7,
+ 0x68D5, 0x6936, 0x6912, 0x6904, 0x68D7, 0x68E3, 0x6925, 0x68F9, 0x68E0,
+ 0x68EF, 0x6928, 0x692A, 0x691A, 0x6923, 0x6921, 0x68C6, 0x6979, 0x6977,
+ 0x695C, 0x6978, 0x696B, 0x6954, 0x697E, 0x696E, 0x6939, 0x6974, 0x693D,
+ 0x6959, 0x6930, 0x6961, 0x695E, 0x695D, 0x6981, 0x696A, 0x69B2, 0x69AE,
+ 0x69D0, 0x69BF, 0x69C1, 0x69D3, 0x69BE, 0x69CE, 0x5BE8, 0x69CA, 0x69DD,
+ 0x69BB, 0x69C3, 0x69A7, 0x6A2E, 0x6991, 0x69A0, 0x699C, 0x6995, 0x69B4,
+ 0x69DE, 0x69E8, 0x6A02, 0x6A1B, 0x69FF, 0x6B0A, 0x69F9, 0x69F2, 0x69E7,
+ 0x6A05, 0x69B1, 0x6A1E, 0x69ED, 0x6A14, 0x69EB, 0x6A0A, 0x6A12, 0x6AC1,
+ 0x6A23, 0x6A13, 0x6A44, 0x6A0C, 0x6A72, 0x6A36, 0x6A78, 0x6A47, 0x6A62,
+ 0x6A59, 0x6A66, 0x6A48, 0x6A38, 0x6A22, 0x6A90, 0x6A8D, 0x6AA0, 0x6A84,
+ 0x6AA2, 0x6AA3, 0x6A97, 0x8617, 0x6ABB, 0x6AC3, 0x6AC2, 0x6AB8, 0x6AB3,
+ 0x6AAC, 0x6ADE, 0x6AD1, 0x6ADF, 0x6AAA, 0x6ADA, 0x6AEA, 0x6AFB, 0x6B05,
+ 0x8616, 0x6AFA, 0x6B12, 0x6B16, 0x9B31, 0x6B1F, 0x6B38, 0x6B37, 0x76DC,
+ 0x6B39, 0x98EE, 0x6B47, 0x6B43, 0x6B49, 0x6B50, 0x6B59, 0x6B54, 0x6B5B,
+ 0x6B5F, 0x6B61, 0x6B78, 0x6B79, 0x6B7F, 0x6B80, 0x6B84, 0x6B83, 0x6B8D,
+ 0x6B98, 0x6B95, 0x6B9E, 0x6BA4, 0x6BAA, 0x6BAB, 0x6BAF, 0x6BB2, 0x6BB1,
+ 0x6BB3, 0x6BB7, 0x6BBC, 0x6BC6, 0x6BCB, 0x6BD3, 0x6BDF, 0x6BEC, 0x6BEB,
+ 0x6BF3, 0x6BEF, 0x9EBE, 0x6C08, 0x6C13, 0x6C14, 0x6C1B, 0x6C24, 0x6C23,
+ 0x6C5E, 0x6C55, 0x6C62, 0x6C6A, 0x6C82, 0x6C8D, 0x6C9A, 0x6C81, 0x6C9B,
+ 0x6C7E, 0x6C68, 0x6C73, 0x6C92, 0x6C90, 0x6CC4, 0x6CF1, 0x6CD3, 0x6CBD,
+ 0x6CD7, 0x6CC5, 0x6CDD, 0x6CAE, 0x6CB1, 0x6CBE, 0x6CBA, 0x6CDB, 0x6CEF,
+ 0x6CD9, 0x6CEA, 0x6D1F, 0x884D, 0x6D36, 0x6D2B, 0x6D3D, 0x6D38, 0x6D19,
+ 0x6D35, 0x6D33, 0x6D12, 0x6D0C, 0x6D63, 0x6D93, 0x6D64, 0x6D5A, 0x6D79,
+ 0x6D59, 0x6D8E, 0x6D95, 0x6FE4, 0x6D85, 0x6DF9, 0x6E15, 0x6E0A, 0x6DB5,
+ 0x6DC7, 0x6DE6, 0x6DB8, 0x6DC6, 0x6DEC, 0x6DDE, 0x6DCC, 0x6DE8, 0x6DD2,
+ 0x6DC5, 0x6DFA, 0x6DD9, 0x6DE4, 0x6DD5, 0x6DEA, 0x6DEE, 0x6E2D, 0x6E6E,
+ 0x6E2E, 0x6E19, 0x6E72, 0x6E5F, 0x6E3E, 0x6E23, 0x6E6B, 0x6E2B, 0x6E76,
+ 0x6E4D, 0x6E1F, 0x6E43, 0x6E3A, 0x6E4E, 0x6E24, 0x6EFF, 0x6E1D, 0x6E38,
+ 0x6E82, 0x6EAA, 0x6E98, 0x6EC9, 0x6EB7, 0x6ED3, 0x6EBD, 0x6EAF, 0x6EC4,
+ 0x6EB2, 0x6ED4, 0x6ED5, 0x6E8F, 0x6EA5, 0x6EC2, 0x6E9F, 0x6F41, 0x6F11,
+ 0x704C, 0x6EEC, 0x6EF8, 0x6EFE, 0x6F3F, 0x6EF2, 0x6F31, 0x6EEF, 0x6F32,
+ 0x6ECC, 0x6F3E, 0x6F13, 0x6EF7, 0x6F86, 0x6F7A, 0x6F78, 0x6F81, 0x6F80,
+ 0x6F6F, 0x6F5B, 0x6FF3, 0x6F6D, 0x6F82, 0x6F7C, 0x6F58, 0x6F8E, 0x6F91,
+ 0x6FC2, 0x6F66, 0x6FB3, 0x6FA3, 0x6FA1, 0x6FA4, 0x6FB9, 0x6FC6, 0x6FAA,
+ 0x6FDF, 0x6FD5, 0x6FEC, 0x6FD4, 0x6FD8, 0x6FF1, 0x6FEE, 0x6FDB, 0x7009,
+ 0x700B, 0x6FFA, 0x7011, 0x7001, 0x700F, 0x6FFE, 0x701B, 0x701A, 0x6F74,
+ 0x701D, 0x7018, 0x701F, 0x7030, 0x703E, 0x7032, 0x7051, 0x7063, 0x7099,
+ 0x7092, 0x70AF, 0x70F1, 0x70AC, 0x70B8, 0x70B3, 0x70AE, 0x70DF, 0x70CB,
+ 0x70DD, 0x70D9, 0x7109, 0x70FD, 0x711C, 0x7119, 0x7165, 0x7155, 0x7188,
+ 0x7166, 0x7162, 0x714C, 0x7156, 0x716C, 0x718F, 0x71FB, 0x7184, 0x7195,
+ 0x71A8, 0x71AC, 0x71D7, 0x71B9, 0x71BE, 0x71D2, 0x71C9, 0x71D4, 0x71CE,
+ 0x71E0, 0x71EC, 0x71E7, 0x71F5, 0x71FC, 0x71F9, 0x71FF, 0x720D, 0x7210,
+ 0x721B, 0x7228, 0x722D, 0x722C, 0x7230, 0x7232, 0x723B, 0x723C, 0x723F,
+ 0x7240, 0x7246, 0x724B, 0x7258, 0x7274, 0x727E, 0x7282, 0x7281, 0x7287,
+ 0x7292, 0x7296, 0x72A2, 0x72A7, 0x72B9, 0x72B2, 0x72C3, 0x72C6, 0x72C4,
+ 0x72CE, 0x72D2, 0x72E2, 0x72E0, 0x72E1, 0x72F9, 0x72F7, 0x500F, 0x7317,
+ 0x730A, 0x731C, 0x7316, 0x731D, 0x7334, 0x732F, 0x7329, 0x7325, 0x733E,
+ 0x734E, 0x734F, 0x9ED8, 0x7357, 0x736A, 0x7368, 0x7370, 0x7378, 0x7375,
+ 0x737B, 0x737A, 0x73C8, 0x73B3, 0x73CE, 0x73BB, 0x73C0, 0x73E5, 0x73EE,
+ 0x73DE, 0x74A2, 0x7405, 0x746F, 0x7425, 0x73F8, 0x7432, 0x743A, 0x7455,
+ 0x743F, 0x745F, 0x7459, 0x7441, 0x745C, 0x7469, 0x7470, 0x7463, 0x746A,
+ 0x7476, 0x747E, 0x748B, 0x749E, 0x74A7, 0x74CA, 0x74CF, 0x74D4, 0x73F1,
+ 0x74E0, 0x74E3, 0x74E7, 0x74E9, 0x74EE, 0x74F2, 0x74F0, 0x74F1, 0x74F8,
+ 0x74F7, 0x7504, 0x7503, 0x7505, 0x750C, 0x750E, 0x750D, 0x7515, 0x7513,
+ 0x751E, 0x7526, 0x752C, 0x753C, 0x7544, 0x754D, 0x754A, 0x7549, 0x755B,
+ 0x7546, 0x755A, 0x7569, 0x7564, 0x7567, 0x756B, 0x756D, 0x7578, 0x7576,
+ 0x7586, 0x7587, 0x7574, 0x758A, 0x7589, 0x7582, 0x7594, 0x759A, 0x759D,
+ 0x75A5, 0x75A3, 0x75C2, 0x75B3, 0x75C3, 0x75B5, 0x75BD, 0x75B8, 0x75BC,
+ 0x75B1, 0x75CD, 0x75CA, 0x75D2, 0x75D9, 0x75E3, 0x75DE, 0x75FE, 0x75FF,
+ 0x75FC, 0x7601, 0x75F0, 0x75FA, 0x75F2, 0x75F3, 0x760B, 0x760D, 0x7609,
+ 0x761F, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634, 0x7630, 0x763B,
+ 0x7647, 0x7648, 0x7646, 0x765C, 0x7658, 0x7661, 0x7662, 0x7668, 0x7669,
+ 0x766A, 0x7667, 0x766C, 0x7670, 0x7672, 0x7676, 0x7678, 0x767C, 0x7680,
+ 0x7683, 0x7688, 0x768B, 0x768E, 0x7696, 0x7693, 0x7699, 0x769A, 0x76B0,
+ 0x76B4, 0x76B8, 0x76B9, 0x76BA, 0x76C2, 0x76CD, 0x76D6, 0x76D2, 0x76DE,
+ 0x76E1, 0x76E5, 0x76E7, 0x76EA, 0x862F, 0x76FB, 0x7708, 0x7707, 0x7704,
+ 0x7729, 0x7724, 0x771E, 0x7725, 0x7726, 0x771B, 0x7737, 0x7738, 0x7747,
+ 0x775A, 0x7768, 0x776B, 0x775B, 0x7765, 0x777F, 0x777E, 0x7779, 0x778E,
+ 0x778B, 0x7791, 0x77A0, 0x779E, 0x77B0, 0x77B6, 0x77B9, 0x77BF, 0x77BC,
+ 0x77BD, 0x77BB, 0x77C7, 0x77CD, 0x77D7, 0x77DA, 0x77DC, 0x77E3, 0x77EE,
+ 0x77FC, 0x780C, 0x7812, 0x7926, 0x7820, 0x792A, 0x7845, 0x788E, 0x7874,
+ 0x7886, 0x787C, 0x789A, 0x788C, 0x78A3, 0x78B5, 0x78AA, 0x78AF, 0x78D1,
+ 0x78C6, 0x78CB, 0x78D4, 0x78BE, 0x78BC, 0x78C5, 0x78CA, 0x78EC, 0x78E7,
+ 0x78DA, 0x78FD, 0x78F4, 0x7907, 0x7912, 0x7911, 0x7919, 0x792C, 0x792B,
+ 0x7940, 0x7960, 0x7957, 0x795F, 0x795A, 0x7955, 0x7953, 0x797A, 0x797F,
+ 0x798A, 0x799D, 0x79A7, 0x9F4B, 0x79AA, 0x79AE, 0x79B3, 0x79B9, 0x79BA,
+ 0x79C9, 0x79D5, 0x79E7, 0x79EC, 0x79E1, 0x79E3, 0x7A08, 0x7A0D, 0x7A18,
+ 0x7A19, 0x7A20, 0x7A1F, 0x7980, 0x7A31, 0x7A3B, 0x7A3E, 0x7A37, 0x7A43,
+ 0x7A57, 0x7A49, 0x7A61, 0x7A62, 0x7A69, 0x9F9D, 0x7A70, 0x7A79, 0x7A7D,
+ 0x7A88, 0x7A97, 0x7A95, 0x7A98, 0x7A96, 0x7AA9, 0x7AC8, 0x7AB0, 0x7AB6,
+ 0x7AC5, 0x7AC4, 0x7ABF, 0x9083, 0x7AC7, 0x7ACA, 0x7ACD, 0x7ACF, 0x7AD5,
+ 0x7AD3, 0x7AD9, 0x7ADA, 0x7ADD, 0x7AE1, 0x7AE2, 0x7AE6, 0x7AED, 0x7AF0,
+ 0x7B02, 0x7B0F, 0x7B0A, 0x7B06, 0x7B33, 0x7B18, 0x7B19, 0x7B1E, 0x7B35,
+ 0x7B28, 0x7B36, 0x7B50, 0x7B7A, 0x7B04, 0x7B4D, 0x7B0B, 0x7B4C, 0x7B45,
+ 0x7B75, 0x7B65, 0x7B74, 0x7B67, 0x7B70, 0x7B71, 0x7B6C, 0x7B6E, 0x7B9D,
+ 0x7B98, 0x7B9F, 0x7B8D, 0x7B9C, 0x7B9A, 0x7B8B, 0x7B92, 0x7B8F, 0x7B5D,
+ 0x7B99, 0x7BCB, 0x7BC1, 0x7BCC, 0x7BCF, 0x7BB4, 0x7BC6, 0x7BDD, 0x7BE9,
+ 0x7C11, 0x7C14, 0x7BE6, 0x7BE5, 0x7C60, 0x7C00, 0x7C07, 0x7C13, 0x7BF3,
+ 0x7BF7, 0x7C17, 0x7C0D, 0x7BF6, 0x7C23, 0x7C27, 0x7C2A, 0x7C1F, 0x7C37,
+ 0x7C2B, 0x7C3D, 0x7C4C, 0x7C43, 0x7C54, 0x7C4F, 0x7C40, 0x7C50, 0x7C58,
+ 0x7C5F, 0x7C64, 0x7C56, 0x7C65, 0x7C6C, 0x7C75, 0x7C83, 0x7C90, 0x7CA4,
+ 0x7CAD, 0x7CA2, 0x7CAB, 0x7CA1, 0x7CA8, 0x7CB3, 0x7CB2, 0x7CB1, 0x7CAE,
+ 0x7CB9, 0x7CBD, 0x7CC0, 0x7CC5, 0x7CC2, 0x7CD8, 0x7CD2, 0x7CDC, 0x7CE2,
+ 0x9B3B, 0x7CEF, 0x7CF2, 0x7CF4, 0x7CF6, 0x7CFA, 0x7D06, 0x7D02, 0x7D1C,
+ 0x7D15, 0x7D0A, 0x7D45, 0x7D4B, 0x7D2E, 0x7D32, 0x7D3F, 0x7D35, 0x7D46,
+ 0x7D73, 0x7D56, 0x7D4E, 0x7D72, 0x7D68, 0x7D6E, 0x7D4F, 0x7D63, 0x7D93,
+ 0x7D89, 0x7D5B, 0x7D8F, 0x7D7D, 0x7D9B, 0x7DBA, 0x7DAE, 0x7DA3, 0x7DB5,
+ 0x7DC7, 0x7DBD, 0x7DAB, 0x7E3D, 0x7DA2, 0x7DAF, 0x7DDC, 0x7DB8, 0x7D9F,
+ 0x7DB0, 0x7DD8, 0x7DDD, 0x7DE4, 0x7DDE, 0x7DFB, 0x7DF2, 0x7DE1, 0x7E05,
+ 0x7E0A, 0x7E23, 0x7E21, 0x7E12, 0x7E31, 0x7E1F, 0x7E09, 0x7E0B, 0x7E22,
+ 0x7E46, 0x7E66, 0x7E3B, 0x7E35, 0x7E39, 0x7E43, 0x7E37, 0x7E32, 0x7E3A,
+ 0x7E67, 0x7E5D, 0x7E56, 0x7E5E, 0x7E59, 0x7E5A, 0x7E79, 0x7E6A, 0x7E69,
+ 0x7E7C, 0x7E7B, 0x7E83, 0x7DD5, 0x7E7D, 0x8FAE, 0x7E7F, 0x7E88, 0x7E89,
+ 0x7E8C, 0x7E92, 0x7E90, 0x7E93, 0x7E94, 0x7E96, 0x7E8E, 0x7E9B, 0x7E9C,
+ 0x7F38, 0x7F3A, 0x7F45, 0x7F4C, 0x7F4D, 0x7F4E, 0x7F50, 0x7F51, 0x7F55,
+ 0x7F54, 0x7F58, 0x7F5F, 0x7F60, 0x7F68, 0x7F69, 0x7F67, 0x7F78, 0x7F82,
+ 0x7F86, 0x7F83, 0x7F88, 0x7F87, 0x7F8C, 0x7F94, 0x7F9E, 0x7F9D, 0x7F9A,
+ 0x7FA3, 0x7FAF, 0x7FB2, 0x7FB9, 0x7FAE, 0x7FB6, 0x7FB8, 0x8B71, 0x7FC5,
+ 0x7FC6, 0x7FCA, 0x7FD5, 0x7FD4, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FF3, 0x7FF9,
+ 0x98DC, 0x8006, 0x8004, 0x800B, 0x8012, 0x8018, 0x8019, 0x801C, 0x8021,
+ 0x8028, 0x803F, 0x803B, 0x804A, 0x8046, 0x8052, 0x8058, 0x805A, 0x805F,
+ 0x8062, 0x8068, 0x8073, 0x8072, 0x8070, 0x8076, 0x8079, 0x807D, 0x807F,
+ 0x8084, 0x8086, 0x8085, 0x809B, 0x8093, 0x809A, 0x80AD, 0x5190, 0x80AC,
+ 0x80DB, 0x80E5, 0x80D9, 0x80DD, 0x80C4, 0x80DA, 0x80D6, 0x8109, 0x80EF,
+ 0x80F1, 0x811B, 0x8129, 0x8123, 0x812F, 0x814B, 0x968B, 0x8146, 0x813E,
+ 0x8153, 0x8151, 0x80FC, 0x8171, 0x816E, 0x8165, 0x8166, 0x8174, 0x8183,
+ 0x8188, 0x818A, 0x8180, 0x8182, 0x81A0, 0x8195, 0x81A4, 0x81A3, 0x815F,
+ 0x8193, 0x81A9, 0x81B0, 0x81B5, 0x81BE, 0x81B8, 0x81BD, 0x81C0, 0x81C2,
+ 0x81BA, 0x81C9, 0x81CD, 0x81D1, 0x81D9, 0x81D8, 0x81C8, 0x81DA, 0x81DF,
+ 0x81E0, 0x81E7, 0x81FA, 0x81FB, 0x81FE, 0x8201, 0x8202, 0x8205, 0x8207,
+ 0x820A, 0x820D, 0x8210, 0x8216, 0x8229, 0x822B, 0x8238, 0x8233, 0x8240,
+ 0x8259, 0x8258, 0x825D, 0x825A, 0x825F, 0x8264, 0x8262, 0x8268, 0x826A,
+ 0x826B, 0x822E, 0x8271, 0x8277, 0x8278, 0x827E, 0x828D, 0x8292, 0x82AB,
+ 0x829F, 0x82BB, 0x82AC, 0x82E1, 0x82E3, 0x82DF, 0x82D2, 0x82F4, 0x82F3,
+ 0x82FA, 0x8393, 0x8303, 0x82FB, 0x82F9, 0x82DE, 0x8306, 0x82DC, 0x8309,
+ 0x82D9, 0x8335, 0x8334, 0x8316, 0x8332, 0x8331, 0x8340, 0x8339, 0x8350,
+ 0x8345, 0x832F, 0x832B, 0x8317, 0x8318, 0x8385, 0x839A, 0x83AA, 0x839F,
+ 0x83A2, 0x8396, 0x8323, 0x838E, 0x8387, 0x838A, 0x837C, 0x83B5, 0x8373,
+ 0x8375, 0x83A0, 0x8389, 0x83A8, 0x83F4, 0x8413, 0x83EB, 0x83CE, 0x83FD,
+ 0x8403, 0x83D8, 0x840B, 0x83C1, 0x83F7, 0x8407, 0x83E0, 0x83F2, 0x840D,
+ 0x8422, 0x8420, 0x83BD, 0x8438, 0x8506, 0x83FB, 0x846D, 0x842A, 0x843C,
+ 0x855A, 0x8484, 0x8477, 0x846B, 0x84AD, 0x846E, 0x8482, 0x8469, 0x8446,
+ 0x842C, 0x846F, 0x8479, 0x8435, 0x84CA, 0x8462, 0x84B9, 0x84BF, 0x849F,
+ 0x84D9, 0x84CD, 0x84BB, 0x84DA, 0x84D0, 0x84C1, 0x84C6, 0x84D6, 0x84A1,
+ 0x8521, 0x84FF, 0x84F4, 0x8517, 0x8518, 0x852C, 0x851F, 0x8515, 0x8514,
+ 0x84FC, 0x8540, 0x8563, 0x8558, 0x8548, 0x8541, 0x8602, 0x854B, 0x8555,
+ 0x8580, 0x85A4, 0x8588, 0x8591, 0x858A, 0x85A8, 0x856D, 0x8594, 0x859B,
+ 0x85EA, 0x8587, 0x859C, 0x8577, 0x857E, 0x8590, 0x85C9, 0x85BA, 0x85CF,
+ 0x85B9, 0x85D0, 0x85D5, 0x85DD, 0x85E5, 0x85DC, 0x85F9, 0x860A, 0x8613,
+ 0x860B, 0x85FE, 0x85FA, 0x8606, 0x8622, 0x861A, 0x8630, 0x863F, 0x864D,
+ 0x4E55, 0x8654, 0x865F, 0x8667, 0x8671, 0x8693, 0x86A3, 0x86A9, 0x86AA,
+ 0x868B, 0x868C, 0x86B6, 0x86AF, 0x86C4, 0x86C6, 0x86B0, 0x86C9, 0x8823,
+ 0x86AB, 0x86D4, 0x86DE, 0x86E9, 0x86EC, 0x86DF, 0x86DB, 0x86EF, 0x8712,
+ 0x8706, 0x8708, 0x8700, 0x8703, 0x86FB, 0x8711, 0x8709, 0x870D, 0x86F9,
+ 0x870A, 0x8734, 0x873F, 0x8737, 0x873B, 0x8725, 0x8729, 0x871A, 0x8760,
+ 0x875F, 0x8778, 0x874C, 0x874E, 0x8774, 0x8757, 0x8768, 0x876E, 0x8759,
+ 0x8753, 0x8763, 0x876A, 0x8805, 0x87A2, 0x879F, 0x8782, 0x87AF, 0x87CB,
+ 0x87BD, 0x87C0, 0x87D0, 0x96D6, 0x87AB, 0x87C4, 0x87B3, 0x87C7, 0x87C6,
+ 0x87BB, 0x87EF, 0x87F2, 0x87E0, 0x880F, 0x880D, 0x87FE, 0x87F6, 0x87F7,
+ 0x880E, 0x87D2, 0x8811, 0x8816, 0x8815, 0x8822, 0x8821, 0x8831, 0x8836,
+ 0x8839, 0x8827, 0x883B, 0x8844, 0x8842, 0x8852, 0x8859, 0x885E, 0x8862,
+ 0x886B, 0x8881, 0x887E, 0x889E, 0x8875, 0x887D, 0x88B5, 0x8872, 0x8882,
+ 0x8897, 0x8892, 0x88AE, 0x8899, 0x88A2, 0x888D, 0x88A4, 0x88B0, 0x88BF,
+ 0x88B1, 0x88C3, 0x88C4, 0x88D4, 0x88D8, 0x88D9, 0x88DD, 0x88F9, 0x8902,
+ 0x88FC, 0x88F4, 0x88E8, 0x88F2, 0x8904, 0x890C, 0x890A, 0x8913, 0x8943,
+ 0x891E, 0x8925, 0x892A, 0x892B, 0x8941, 0x8944, 0x893B, 0x8936, 0x8938,
+ 0x894C, 0x891D, 0x8960, 0x895E, 0x8966, 0x8964, 0x896D, 0x896A, 0x896F,
+ 0x8974, 0x8977, 0x897E, 0x8983, 0x8988, 0x898A, 0x8993, 0x8998, 0x89A1,
+ 0x89A9, 0x89A6, 0x89AC, 0x89AF, 0x89B2, 0x89BA, 0x89BD, 0x89BF, 0x89C0,
+ 0x89DA, 0x89DC, 0x89DD, 0x89E7, 0x89F4, 0x89F8, 0x8A03, 0x8A16, 0x8A10,
+ 0x8A0C, 0x8A1B, 0x8A1D, 0x8A25, 0x8A36, 0x8A41, 0x8A5B, 0x8A52, 0x8A46,
+ 0x8A48, 0x8A7C, 0x8A6D, 0x8A6C, 0x8A62, 0x8A85, 0x8A82, 0x8A84, 0x8AA8,
+ 0x8AA1, 0x8A91, 0x8AA5, 0x8AA6, 0x8A9A, 0x8AA3, 0x8AC4, 0x8ACD, 0x8AC2,
+ 0x8ADA, 0x8AEB, 0x8AF3, 0x8AE7, 0x8AE4, 0x8AF1, 0x8B14, 0x8AE0, 0x8AE2,
+ 0x8AF7, 0x8ADE, 0x8ADB, 0x8B0C, 0x8B07, 0x8B1A, 0x8AE1, 0x8B16, 0x8B10,
+ 0x8B17, 0x8B20, 0x8B33, 0x97AB, 0x8B26, 0x8B2B, 0x8B3E, 0x8B28, 0x8B41,
+ 0x8B4C, 0x8B4F, 0x8B4E, 0x8B49, 0x8B56, 0x8B5B, 0x8B5A, 0x8B6B, 0x8B5F,
+ 0x8B6C, 0x8B6F, 0x8B74, 0x8B7D, 0x8B80, 0x8B8C, 0x8B8E, 0x8B92, 0x8B93,
+ 0x8B96, 0x8B99, 0x8B9A, 0x8C3A, 0x8C41, 0x8C3F, 0x8C48, 0x8C4C, 0x8C4E,
+ 0x8C50, 0x8C55, 0x8C62, 0x8C6C, 0x8C78, 0x8C7A, 0x8C82, 0x8C89, 0x8C85,
+ 0x8C8A, 0x8C8D, 0x8C8E, 0x8C94, 0x8C7C, 0x8C98, 0x621D, 0x8CAD, 0x8CAA,
+ 0x8CBD, 0x8CB2, 0x8CB3, 0x8CAE, 0x8CB6, 0x8CC8, 0x8CC1, 0x8CE4, 0x8CE3,
+ 0x8CDA, 0x8CFD, 0x8CFA, 0x8CFB, 0x8D04, 0x8D05, 0x8D0A, 0x8D07, 0x8D0F,
+ 0x8D0D, 0x8D10, 0x9F4E, 0x8D13, 0x8CCD, 0x8D14, 0x8D16, 0x8D67, 0x8D6D,
+ 0x8D71, 0x8D73, 0x8D81, 0x8D99, 0x8DC2, 0x8DBE, 0x8DBA, 0x8DCF, 0x8DDA,
+ 0x8DD6, 0x8DCC, 0x8DDB, 0x8DCB, 0x8DEA, 0x8DEB, 0x8DDF, 0x8DE3, 0x8DFC,
+ 0x8E08, 0x8E09, 0x8DFF, 0x8E1D, 0x8E1E, 0x8E10, 0x8E1F, 0x8E42, 0x8E35,
+ 0x8E30, 0x8E34, 0x8E4A, 0x8E47, 0x8E49, 0x8E4C, 0x8E50, 0x8E48, 0x8E59,
+ 0x8E64, 0x8E60, 0x8E2A, 0x8E63, 0x8E55, 0x8E76, 0x8E72, 0x8E7C, 0x8E81,
+ 0x8E87, 0x8E85, 0x8E84, 0x8E8B, 0x8E8A, 0x8E93, 0x8E91, 0x8E94, 0x8E99,
+ 0x8EAA, 0x8EA1, 0x8EAC, 0x8EB0, 0x8EC6, 0x8EB1, 0x8EBE, 0x8EC5, 0x8EC8,
+ 0x8ECB, 0x8EDB, 0x8EE3, 0x8EFC, 0x8EFB, 0x8EEB, 0x8EFE, 0x8F0A, 0x8F05,
+ 0x8F15, 0x8F12, 0x8F19, 0x8F13, 0x8F1C, 0x8F1F, 0x8F1B, 0x8F0C, 0x8F26,
+ 0x8F33, 0x8F3B, 0x8F39, 0x8F45, 0x8F42, 0x8F3E, 0x8F4C, 0x8F49, 0x8F46,
+ 0x8F4E, 0x8F57, 0x8F5C, 0x8F62, 0x8F63, 0x8F64, 0x8F9C, 0x8F9F, 0x8FA3,
+ 0x8FAD, 0x8FAF, 0x8FB7, 0x8FDA, 0x8FE5, 0x8FE2, 0x8FEA, 0x8FEF, 0x9087,
+ 0x8FF4, 0x9005, 0x8FF9, 0x8FFA, 0x9011, 0x9015, 0x9021, 0x900D, 0x901E,
+ 0x9016, 0x900B, 0x9027, 0x9036, 0x9035, 0x9039, 0x8FF8, 0x904F, 0x9050,
+ 0x9051, 0x9052, 0x900E, 0x9049, 0x903E, 0x9056, 0x9058, 0x905E, 0x9068,
+ 0x906F, 0x9076, 0x96A8, 0x9072, 0x9082, 0x907D, 0x9081, 0x9080, 0x908A,
+ 0x9089, 0x908F, 0x90A8, 0x90AF, 0x90B1, 0x90B5, 0x90E2, 0x90E4, 0x6248,
+ 0x90DB, 0x9102, 0x9112, 0x9119, 0x9132, 0x9130, 0x914A, 0x9156, 0x9158,
+ 0x9163, 0x9165, 0x9169, 0x9173, 0x9172, 0x918B, 0x9189, 0x9182, 0x91A2,
+ 0x91AB, 0x91AF, 0x91AA, 0x91B5, 0x91B4, 0x91BA, 0x91C0, 0x91C1, 0x91C9,
+ 0x91CB, 0x91D0, 0x91D6, 0x91DF, 0x91E1, 0x91DB, 0x91FC, 0x91F5, 0x91F6,
+ 0x921E, 0x91FF, 0x9214, 0x922C, 0x9215, 0x9211, 0x925E, 0x9257, 0x9245,
+ 0x9249, 0x9264, 0x9248, 0x9295, 0x923F, 0x924B, 0x9250, 0x929C, 0x9296,
+ 0x9293, 0x929B, 0x925A, 0x92CF, 0x92B9, 0x92B7, 0x92E9, 0x930F, 0x92FA,
+ 0x9344, 0x932E, 0x9319, 0x9322, 0x931A, 0x9323, 0x933A, 0x9335, 0x933B,
+ 0x935C, 0x9360, 0x937C, 0x936E, 0x9356, 0x93B0, 0x93AC, 0x93AD, 0x9394,
+ 0x93B9, 0x93D6, 0x93D7, 0x93E8, 0x93E5, 0x93D8, 0x93C3, 0x93DD, 0x93D0,
+ 0x93C8, 0x93E4, 0x941A, 0x9414, 0x9413, 0x9403, 0x9407, 0x9410, 0x9436,
+ 0x942B, 0x9435, 0x9421, 0x943A, 0x9441, 0x9452, 0x9444, 0x945B, 0x9460,
+ 0x9462, 0x945E, 0x946A, 0x9229, 0x9470, 0x9475, 0x9477, 0x947D, 0x945A,
+ 0x947C, 0x947E, 0x9481, 0x947F, 0x9582, 0x9587, 0x958A, 0x9594, 0x9596,
+ 0x9598, 0x9599, 0x95A0, 0x95A8, 0x95A7, 0x95AD, 0x95BC, 0x95BB, 0x95B9,
+ 0x95BE, 0x95CA, 0x6FF6, 0x95C3, 0x95CD, 0x95CC, 0x95D5, 0x95D4, 0x95D6,
+ 0x95DC, 0x95E1, 0x95E5, 0x95E2, 0x9621, 0x9628, 0x962E, 0x962F, 0x9642,
+ 0x964C, 0x964F, 0x964B, 0x9677, 0x965C, 0x965E, 0x965D, 0x965F, 0x9666,
+ 0x9672, 0x966C, 0x968D, 0x9698, 0x9695, 0x9697, 0x96AA, 0x96A7, 0x96B1,
+ 0x96B2, 0x96B0, 0x96B4, 0x96B6, 0x96B8, 0x96B9, 0x96CE, 0x96CB, 0x96C9,
+ 0x96CD, 0x894D, 0x96DC, 0x970D, 0x96D5, 0x96F9, 0x9704, 0x9706, 0x9708,
+ 0x9713, 0x970E, 0x9711, 0x970F, 0x9716, 0x9719, 0x9724, 0x972A, 0x9730,
+ 0x9739, 0x973D, 0x973E, 0x9744, 0x9746, 0x9748, 0x9742, 0x9749, 0x975C,
+ 0x9760, 0x9764, 0x9766, 0x9768, 0x52D2, 0x976B, 0x9771, 0x9779, 0x9785,
+ 0x977C, 0x9781, 0x977A, 0x9786, 0x978B, 0x978F, 0x9790, 0x979C, 0x97A8,
+ 0x97A6, 0x97A3, 0x97B3, 0x97B4, 0x97C3, 0x97C6, 0x97C8, 0x97CB, 0x97DC,
+ 0x97ED, 0x9F4F, 0x97F2, 0x7ADF, 0x97F6, 0x97F5, 0x980F, 0x980C, 0x9838,
+ 0x9824, 0x9821, 0x9837, 0x983D, 0x9846, 0x984F, 0x984B, 0x986B, 0x986F,
+ 0x9870, 0x9871, 0x9874, 0x9873, 0x98AA, 0x98AF, 0x98B1, 0x98B6, 0x98C4,
+ 0x98C3, 0x98C6, 0x98E9, 0x98EB, 0x9903, 0x9909, 0x9912, 0x9914, 0x9918,
+ 0x9921, 0x991D, 0x991E, 0x9924, 0x9920, 0x992C, 0x992E, 0x993D, 0x993E,
+ 0x9942, 0x9949, 0x9945, 0x9950, 0x994B, 0x9951, 0x9952, 0x994C, 0x9955,
+ 0x9997, 0x9998, 0x99A5, 0x99AD, 0x99AE, 0x99BC, 0x99DF, 0x99DB, 0x99DD,
+ 0x99D8, 0x99D1, 0x99ED, 0x99EE, 0x99F1, 0x99F2, 0x99FB, 0x99F8, 0x9A01,
+ 0x9A0F, 0x9A05, 0x99E2, 0x9A19, 0x9A2B, 0x9A37, 0x9A45, 0x9A42, 0x9A40,
+ 0x9A43, 0x9A3E, 0x9A55, 0x9A4D, 0x9A5B, 0x9A57, 0x9A5F, 0x9A62, 0x9A65,
+ 0x9A64, 0x9A69, 0x9A6B, 0x9A6A, 0x9AAD, 0x9AB0, 0x9ABC, 0x9AC0, 0x9ACF,
+ 0x9AD1, 0x9AD3, 0x9AD4, 0x9ADE, 0x9ADF, 0x9AE2, 0x9AE3, 0x9AE6, 0x9AEF,
+ 0x9AEB, 0x9AEE, 0x9AF4, 0x9AF1, 0x9AF7, 0x9AFB, 0x9B06, 0x9B18, 0x9B1A,
+ 0x9B1F, 0x9B22, 0x9B23, 0x9B25, 0x9B27, 0x9B28, 0x9B29, 0x9B2A, 0x9B2E,
+ 0x9B2F, 0x9B32, 0x9B44, 0x9B43, 0x9B4F, 0x9B4D, 0x9B4E, 0x9B51, 0x9B58,
+ 0x9B74, 0x9B93, 0x9B83, 0x9B91, 0x9B96, 0x9B97, 0x9B9F, 0x9BA0, 0x9BA8,
+ 0x9BB4, 0x9BC0, 0x9BCA, 0x9BB9, 0x9BC6, 0x9BCF, 0x9BD1, 0x9BD2, 0x9BE3,
+ 0x9BE2, 0x9BE4, 0x9BD4, 0x9BE1, 0x9C3A, 0x9BF2, 0x9BF1, 0x9BF0, 0x9C15,
+ 0x9C14, 0x9C09, 0x9C13, 0x9C0C, 0x9C06, 0x9C08, 0x9C12, 0x9C0A, 0x9C04,
+ 0x9C2E, 0x9C1B, 0x9C25, 0x9C24, 0x9C21, 0x9C30, 0x9C47, 0x9C32, 0x9C46,
+ 0x9C3E, 0x9C5A, 0x9C60, 0x9C67, 0x9C76, 0x9C78, 0x9CE7, 0x9CEC, 0x9CF0,
+ 0x9D09, 0x9D08, 0x9CEB, 0x9D03, 0x9D06, 0x9D2A, 0x9D26, 0x9DAF, 0x9D23,
+ 0x9D1F, 0x9D44, 0x9D15, 0x9D12, 0x9D41, 0x9D3F, 0x9D3E, 0x9D46, 0x9D48,
+ 0x9D5D, 0x9D5E, 0x9D64, 0x9D51, 0x9D50, 0x9D59, 0x9D72, 0x9D89, 0x9D87,
+ 0x9DAB, 0x9D6F, 0x9D7A, 0x9D9A, 0x9DA4, 0x9DA9, 0x9DB2, 0x9DC4, 0x9DC1,
+ 0x9DBB, 0x9DB8, 0x9DBA, 0x9DC6, 0x9DCF, 0x9DC2, 0x9DD9, 0x9DD3, 0x9DF8,
+ 0x9DE6, 0x9DED, 0x9DEF, 0x9DFD, 0x9E1A, 0x9E1B, 0x9E1E, 0x9E75, 0x9E79,
+ 0x9E7D, 0x9E81, 0x9E88, 0x9E8B, 0x9E8C, 0x9E92, 0x9E95, 0x9E91, 0x9E9D,
+ 0x9EA5, 0x9EA9, 0x9EB8, 0x9EAA, 0x9EAD, 0x9761, 0x9ECC, 0x9ECE, 0x9ECF,
+ 0x9ED0, 0x9ED4, 0x9EDC, 0x9EDE, 0x9EDD, 0x9EE0, 0x9EE5, 0x9EE8, 0x9EEF,
+ 0x9EF4, 0x9EF6, 0x9EF7, 0x9EF9, 0x9EFB, 0x9EFC, 0x9EFD, 0x9F07, 0x9F08,
+ 0x76B7, 0x9F15, 0x9F21, 0x9F2C, 0x9F3E, 0x9F4A, 0x9F52, 0x9F54, 0x9F63,
+ 0x9F5F, 0x9F60, 0x9F61, 0x9F66, 0x9F67, 0x9F6C, 0x9F6A, 0x9F77, 0x9F72,
+ 0x9F76, 0x9F95, 0x9F9C, 0x9FA0, 0x582F, 0x69C7, 0x9059, 0x7464, 0x2642,
+ 0x2500, 0x2501, 0x2502, 0x2503, 0x2504, 0x2505, 0x2506, 0x2507, 0x2508,
+ 0x2509, 0x250A, 0x250B, 0x250C, 0x250D, 0x250E, 0x250F, 0x2510, 0x2511,
+ 0x2512, 0x2513, 0x2514, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251A,
+ 0x251B, 0x251C, 0x251D, 0x251E, 0x251F, 0x2520, 0x2521, 0x2522, 0x2523,
+ 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252A, 0x252B, 0x252C,
+ 0x252D, 0x252E, 0x252F, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535,
+ 0x2536, 0x2537, 0x2538, 0x2539, 0x253A, 0x253B, 0x253C, 0x253D, 0x253E,
+ 0x253F, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547,
+ 0x2548, 0x2549, 0x254A, 0x254B, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464,
+ 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246A, 0x246B, 0x246C, 0x246D,
+ 0x246E, 0x246F, 0x2470, 0x2471, 0x2472, 0x2473, 0x2160, 0x2161, 0x2162,
+ 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x3349, 0x3314,
+ 0x3322, 0x334D, 0x3318, 0x3327, 0x3303, 0x3336, 0x3351, 0x3357, 0x330D,
+ 0x3326, 0x3323, 0x332B, 0x334A, 0x333B, 0x339C, 0x339D, 0x339E, 0x338E,
+ 0x338F, 0x33C4, 0x33A1, 0x301D, 0x301F, 0x2116, 0x33CD, 0x2121, 0x32A4,
+ 0x32A5, 0x32A6, 0x32A7, 0x32A8, 0x3231, 0x3232, 0x3239, 0x337E, 0x337D,
+ 0x337C, 0x222E, 0x2211, 0x221A, 0x22A5, 0x2220, 0x221F, 0x22BF, 0x2229,
+ 0x222A, 0x555E, 0x98F4, 0x6EA2, 0x9C2F, 0x6DEB, 0x8FC2, 0x6B1D, 0x53A9,
+ 0x958F, 0x5642, 0x990C, 0x7130, 0x8956, 0x9DD7, 0x8FE6, 0x6062, 0x62D0,
+ 0x6666, 0x559D, 0x845B, 0x9784, 0x5699, 0x6F97, 0x7FF0, 0x7FEB, 0x5FBD,
+ 0x7947, 0x4FE0, 0x537F, 0x50C5, 0x8EC0, 0x55B0, 0x6ADB, 0x5C51, 0x9774,
+ 0x7941, 0x6167, 0x7A3D, 0x7E6B, 0x834A, 0x9699, 0x5026, 0x5ACC, 0x6372,
+ 0x9E7C, 0x8AFA, 0x5DF7, 0x663B, 0x6E9D, 0x9EB4, 0x9D60, 0x7511, 0x91C7,
+ 0x698A, 0x6805, 0x85A9, 0x9BD6, 0x9306, 0x73CA, 0x53F1, 0x5C62, 0x906E,
+ 0x6753, 0x707C, 0x7E61, 0x914B, 0x66D9, 0x6E1A, 0x85AF, 0x85F7, 0x54E8,
+ 0x5EE0, 0x68A2, 0x8523, 0x91AC, 0x9798, 0x8755, 0x9771, 0x9017, 0x7FE0,
+ 0x647A, 0x901D, 0x87EC, 0x64B0, 0x6813, 0x714E, 0x717D, 0x8A6E, 0x564C,
+ 0x9061, 0x5275, 0x6414, 0x7626, 0x905C, 0x9A52, 0x817F, 0x9EDB, 0x5544,
+ 0x6FEF, 0x7422, 0x86F8, 0x5DFD, 0x8FBF, 0x68DA, 0x9C48, 0x6A3D, 0x7C1E,
+ 0x8A3B, 0x7026, 0x51CB, 0x6357, 0x69CC, 0x939A, 0x585A, 0x6451, 0x912D,
+ 0x64E2, 0x6EBA, 0x5861, 0x985A, 0x5835, 0x5C60, 0x83DF, 0x8CED, 0x5858,
+ 0x79B1, 0x9D07, 0x7006, 0x701E, 0x5678, 0x9041, 0x9813, 0x90A3, 0x8B0E,
+ 0x7058, 0x6962, 0x79B0, 0x56CA, 0x724C, 0x9019, 0x79E4, 0x525D, 0x7BB8,
+ 0x6F51, 0x91B1, 0x633D, 0x6249, 0x6A0B, 0x67CA, 0x7A17, 0x903C, 0x5A9B,
+ 0x8B2C, 0x5EDF, 0x7015, 0x983B, 0x853D, 0x77A5, 0x5A29, 0x5E96, 0x6CE1,
+ 0x84EC, 0x9830, 0x9C52, 0x9EB5, 0x5132, 0x9905, 0x7C7E, 0x9453, 0x6108,
+ 0x7652, 0x7337, 0x7194, 0x8000, 0x840A, 0x907C, 0x6F23, 0x7149, 0x84EE,
+ 0x6994, 0x881F, 0x5154, 0x5189, 0x5195, 0x51A4, 0x5539, 0x5533, 0x55E4,
+ 0x5632, 0x56A5, 0x580B, 0x5ABE, 0x5BC3, 0x5C5B, 0x5E64, 0x6097, 0x6369,
+ 0x6406, 0x6522, 0x6583, 0x67A6, 0x67B4, 0x689B, 0x688E, 0x6E6E, 0x71D7,
+ 0x7228, 0x73CE, 0x7504, 0x750D, 0x7515, 0x7693, 0x787C, 0x7A31, 0x9F9D,
+ 0x7B99, 0x7C90, 0x7CAE, 0x7D9B, 0x7DAE, 0x7D9F, 0x7FD4, 0x822E, 0x828D,
+ 0x82D2, 0x8323, 0x8375, 0x8517, 0x853E, 0x8782, 0x87D2, 0x890A, 0x89AF,
+ 0x8ADE, 0x8B41, 0x8DDA, 0x8E09, 0x8F13, 0x8FEA, 0x8FE9, 0x9058, 0x6248,
+ 0x91C1, 0x95BB, 0x7762, 0x9724, 0x9760, 0x976D, 0x9824, 0x9B2E, 0x9B97,
+ 0x9BF2, 0x9EAA, 0x9F9C, 0x3001, 0x3002, 0x203E, 0xFF3F, 0x30FC, 0x2015,
+ 0x2010, 0x301C, 0x2016, 0xFF5C, 0x2026, 0x2025, 0xFF08, 0xFF09, 0x3014,
+ 0x3015, 0xFF3B, 0xFF3D, 0xFF5B, 0xFF5D, 0x3008, 0x3009, 0x300A, 0x300B,
+ 0x300C, 0x300D, 0x300E, 0x300F, 0x3010, 0x3011, 0xFF1D, 0x3041, 0x3043,
+ 0x3045, 0x3047, 0x3049, 0x3063, 0x3083, 0x3085, 0x3087, 0x308E, 0x30A1,
+ 0x30A3, 0x30A5, 0x30A7, 0x30A9, 0x30C3, 0x30E3, 0x30E5, 0x30E7, 0x30EE,
+ 0x30F5, 0x30F6, 0x3349, 0x3314, 0x3322, 0x334D, 0x3318, 0x3327, 0x3303,
+ 0x3336, 0x3351, 0x3357, 0x330D, 0x3326, 0x3323, 0x332B, 0x334A, 0x333B,
+ 0x301D, 0x301E, 0x3094, 0x304B, 0x3051, 0x82A6, 0x8328, 0x5653, 0x53A9,
+ 0x7259, 0x6C72, 0x7B08, 0x9957, 0x62F3, 0x9910, 0x976D, 0x717D, 0x7A7F,
+ 0x7BAD, 0x63C3, 0x83DF, 0x7962, 0x53DB, 0x7BC7, 0x8FC4, 0x7C3E, 0x50CA,
+ 0x5315, 0x55A9, 0x56AE, 0x5819, 0x591B, 0x5C28, 0x5ED0, 0x5ECF, 0x6241,
+ 0x66C1, 0x6C08, 0x6E23, 0x6EEC, 0x7A97, 0x7BDD, 0x7FE9, 0x8422, 0x8759,
+ 0x880E, 0x87D2, 0x9A19, 0x9EAD, 0xFFE4, 0xFF07, 0xFF02, 0x11A8, 0x25C1,
+ 0x25B7, 0x21E9, 0x21E7, 0x21E6, 0x21E8, 0x25A2, 0x2667, 0x2661, 0x2664,
+ 0x2662, 0x33A0, 0x33A2, 0x33A4, 0x33A5, 0x3397, 0x2113, 0x3398, 0x33B3,
+ 0x33B2, 0x33B1, 0x33B0, 0x3385, 0x3386, 0x3387, 0x33CB, 0x3390, 0x33D4,
+ 0x3396, 0x3322, 0x3316, 0x3318, 0x3315, 0x3303, 0x3323, 0x3357, 0x3342,
+ 0x3339, 0x333B, 0x3300, 0x3331, 0x3347, 0x331E, 0x332A, 0x33CD, 0x337F,
+ 0x2121, 0x260E, 0x3036, 0x3020, 0x00A9, 0x00AE, 0x0000, 0x2488, 0x2489,
+ 0x248A, 0x248B, 0x248C, 0x248D, 0x248E, 0x248F, 0x2490, 0x2474, 0x2475,
+ 0x2476, 0x2477, 0x2478, 0x2479, 0x247A, 0x247B, 0x247C, 0x247D, 0x247E,
+ 0x247F, 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487,
+ 0x3251, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
+ 0x2178, 0x2179, 0x3252, 0x3253, 0x3254, 0x3255, 0x3256, 0x3257, 0x3258,
+ 0x3259, 0x325A, 0x325B, 0x249C, 0x249D, 0x249E, 0x249F, 0x24A0, 0x24A1,
+ 0x24A2, 0x24A3, 0x24A4, 0x24A5, 0x24A6, 0x24A7, 0x24A8, 0x24A9, 0x24AA,
+ 0x24AB, 0x24AC, 0x24AD, 0x24AE, 0x24AF, 0x24B0, 0x24B1, 0x24B2, 0x24B3,
+ 0x24B4, 0x24B5, 0x3243, 0x323D, 0x323F, 0x3234, 0x3238, 0x3233, 0x323C,
+ 0x3242, 0x323E, 0x3236, 0x3235, 0x323B, 0x3240, 0x323A, 0x32B0, 0x32AD,
+ 0x32A9, 0x32AF, 0x3294, 0x32AA, 0x3298, 0x32AB, 0x3292, 0x3291, 0x3293,
+ 0x32AC, 0x32AE, 0x3296, 0x23A9, 0x23A8, 0x23A7, 0xFE38, 0x23AD, 0x23AC,
+ 0x23AB, 0xFE38, 0x23AB, 0x23AC, 0x23AD, 0xFE38, 0x23A7, 0x23A8, 0x23A9,
+ 0xFE38, 0x33CC, 0x3305, 0x00BD, 0x00BC, 0x339F, 0x33A3, 0x33A6, 0xFFFD,
+ 0xFFFD, 0x329E, 0x3388, 0x3389, 0x33C8, 0x222D, 0x5370, 0x3230, 0x322A,
+ 0x322B, 0x322C, 0x322D, 0x322E, 0x322F, 0x3237, 0x3241, 0x27A1, 0x21E6,
+ 0x21E7, 0x21E9, 0x25C9, 0x2660, 0x2665, 0x2663, 0x2666, 0x2600, 0x2601,
+ 0x2602, 0x2603, 0x261E, 0x261C, 0x261D, 0x261F, 0x3299, 0x24EA, 0x216A,
+ 0x216B, 0xFF10, 0xFF10, 0x3000, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585,
+ 0x2586, 0x2587, 0x2588, 0x258F, 0x258E, 0x258D, 0x258C, 0x258B, 0x258A,
+ 0x2589, 0x2594, 0x2595, 0x256D, 0x256E, 0x2570, 0x256F, 0x2550, 0x255E,
+ 0x256A, 0x2561, 0x25E2, 0x25E3, 0x25E5, 0x25E4, 0x25CF, 0x0ED0, 0x2571,
+ 0x2572, 0x2573, 0x304B, 0x3051, 0x9022, 0x8FBB, 0xFF0C, 0x00B0, 0x3013,
+ 0x309C, 0x309B, 0x02CF, 0xFF0E, 0x2018, 0x2019, 0x201C, 0x201D, 0x201C,
+ 0x201E, 0x2018, 0x201A, 0x02BA, 0x51DC, 0x7199, 0x2776, 0x2777, 0x2778,
+ 0x2779, 0x277A, 0x277B, 0x277C, 0x277D, 0x277E, 0x0000, 0x0000, 0x0000,
+ 0x217A, 0x217B, 0x0000, 0x0000, 0x0000, 0x217F, 0x210A, 0x2109, 0x0000,
+ 0x0000, 0x3004, 0x21C6, 0x21C4, 0x21C5, 0x0000, 0x30F7, 0x30F8, 0x30F9,
+ 0x30FA, 0x5927, 0x5C0F, 0x329D, 0x63A7, 0x0000, 0x0000, 0x337B, 0x337F,
+ 0x0000, 0x0000, 0x3333, 0x334E, 0x3322, 0x3316, 0x3305, 0x3305, 0x3305,
+ 0x3333, 0x334E, 0x334E, 0x334E, 0x3303, 0x3318, 0x3315, 0x3339, 0x3339,
+ 0x3339, 0x3357, 0x3342, 0x3342, 0x3342, 0x3323, 0x333B, 0x3300, 0x331E,
+ 0x331E, 0x331E, 0x332A, 0x332A, 0x332A, 0x3347, 0x3331, 0x7E8A, 0x891C,
+ 0x9348, 0x9288, 0x84DC, 0x4FC9, 0x70BB, 0x6631, 0x68C8, 0x92F9, 0x66FB,
+ 0x5F45, 0x4E28, 0x4EE1, 0x4EFC, 0x4F00, 0x4F03, 0x4F39, 0x4F56, 0x4F92,
+ 0x4F8A, 0x4F9A, 0x4F94, 0x4FCD, 0x5040, 0x5022, 0x4FFF, 0x501E, 0x5046,
+ 0x5070, 0x5042, 0x5094, 0x50F4, 0x50D8, 0x514A, 0x5164, 0x519D, 0x51BE,
+ 0x51EC, 0x5215, 0x529C, 0x52A6, 0x52C0, 0x52DB, 0x5300, 0x5307, 0x5324,
+ 0x5372, 0x5393, 0x53B2, 0x53DD, 0xFA0E, 0x549C, 0x548A, 0x54A9, 0x54FF,
+ 0x5586, 0x5759, 0x5765, 0x57AC, 0x57C8, 0x57C7, 0xFA0F, 0xFA10, 0x589E,
+ 0x58B2, 0x590B, 0x5953, 0x595B, 0x595D, 0x5963, 0x59A4, 0x59BA, 0x5B56,
+ 0x5BC0, 0x752F, 0x5BD8, 0x5BEC, 0x5C1E, 0x5CA6, 0x5CBA, 0x5CF5, 0x5D27,
+ 0x5D53, 0xFA11, 0x5D42, 0x5D6D, 0x5DB8, 0x5DB9, 0x5DD0, 0x5F21, 0x5F34,
+ 0x5F67, 0x5FB7, 0x5FDE, 0x605D, 0x6085, 0x608A, 0x60DE, 0x60D5, 0x6120,
+ 0x60F2, 0x6111, 0x6137, 0x6130, 0x6198, 0x6213, 0x62A6, 0x63F5, 0x6460,
+ 0x649D, 0x64CE, 0x654E, 0x6600, 0x6615, 0x6609, 0x662E, 0x661E, 0x6624,
+ 0x6665, 0x6657, 0x6659, 0xFA12, 0x6673, 0x6699, 0x66A0, 0x66B2, 0x66BF,
+ 0x66FA, 0x670E, 0xF929, 0x6766, 0x67BB, 0x6852, 0x67C0, 0x6801, 0x6844,
+ 0x68CF, 0xFA13, 0x6968, 0xFA14, 0x6998, 0x69E2, 0x6A30, 0x6A6B, 0x6A46,
+ 0x6A73, 0x6A7E, 0x6AE2, 0x6AE4, 0x6BD6, 0x6C3F, 0x6C5C, 0x6C86, 0x6C6F,
+ 0x6CDA, 0x6D04, 0x6D87, 0x6D6F, 0x6D96, 0x6DAC, 0x6DCF, 0x6DF8, 0x6DF2,
+ 0x6DFC, 0x6E39, 0x6E5C, 0x6E27, 0x6E3C, 0x6EBF, 0x6F88, 0x6FB5, 0x6FF5,
+ 0x7005, 0x7007, 0x7028, 0x7085, 0x70AB, 0x710F, 0x7104, 0x715C, 0x7146,
+ 0x7147, 0xFA15, 0x71C1, 0x71FE, 0x72B1, 0x72BE, 0x7324, 0xFA16, 0x7377,
+ 0x73BD, 0x73C9, 0x73D6, 0x73E3, 0x73D2, 0x7407, 0x73F5, 0x7426, 0x742A,
+ 0x7429, 0x742E, 0x7462, 0x7489, 0x749F, 0x7501, 0x756F, 0x7682, 0x769C,
+ 0x769E, 0x769B, 0x76A6, 0xFA17, 0x7746, 0x52AF, 0x7821, 0x784E, 0x7864,
+ 0x787A, 0x7930, 0xFA18, 0xFA19, 0xFA1A, 0x7994, 0xFA1B, 0x799B, 0x7AD1,
+ 0x7AE7, 0xFA1C, 0x7AEB, 0x7B9E, 0xFA1D, 0x7D48, 0x7D5C, 0x7DB7, 0x7DA0,
+ 0x7DD6, 0x7E52, 0x7F47, 0x7FA1, 0xFA1E, 0x8301, 0x8362, 0x837F, 0x83C7,
+ 0x83F6, 0x8448, 0x84B4, 0x8553, 0x8559, 0x856B, 0xFA1F, 0x85B0, 0xFA20,
+ 0xFA21, 0x8807, 0x88F5, 0x8A12, 0x8A37, 0x8A79, 0x8AA7, 0x8ABE, 0x8ADF,
+ 0xFA22, 0x8AF6, 0x8B53, 0x8B7F, 0x8CF0, 0x8CF4, 0x8D12, 0x8D76, 0xFA23,
+ 0x8ECF, 0xFA24, 0xFA25, 0x9067, 0x90DE, 0xFA26, 0x9115, 0x9127, 0x91DA,
+ 0x91D7, 0x91DE, 0x91ED, 0x91EE, 0x91E4, 0x91E5, 0x9206, 0x9210, 0x920A,
+ 0x923A, 0x9240, 0x923C, 0x924E, 0x9259, 0x9251, 0x9239, 0x9267, 0x92A7,
+ 0x9277, 0x9278, 0x92E7, 0x92D7, 0x92D9, 0x92D0, 0xFA27, 0x92D5, 0x92E0,
+ 0x92D3, 0x9325, 0x9321, 0x92FB, 0xFA28, 0x931E, 0x92FF, 0x931D, 0x9302,
+ 0x9370, 0x9357, 0x93A4, 0x93C6, 0x93DE, 0x93F8, 0x9431, 0x9445, 0x9448,
+ 0x9592, 0xF9DC, 0xFA29, 0x969D, 0x96AF, 0x9733, 0x973B, 0x9743, 0x974D,
+ 0x974F, 0x9751, 0x9755, 0x9857, 0x9865, 0xFA2A, 0xFA2B, 0x9927, 0xFA2C,
+ 0x999E, 0x9A4E, 0x9AD9, 0x9ADC, 0x9B75, 0x9B72, 0x9B8F, 0x9BB1, 0x9BBB,
+ 0x9C00, 0x9D70, 0x9D6B, 0xFA2D, 0x9E19, 0x9ED1, 0x00AC, 0x005C, 0x0020,
+ 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029,
+ 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x0030, 0x0031, 0x0032,
+ 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B,
+ 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044,
+ 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D,
+ 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056,
+ 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x00A5, 0x005D, 0x005E, 0x005F,
+ 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068,
+ 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, 0x0071,
+ 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A,
+ 0x007B, 0x00A6, 0x007D, 0x0303, 0x02BC, 0x005C, 0x02BB, 0x007C, 0x007E,
+ 0x00A1, 0x00A2, 0x00A3, 0x2044, 0x0192, 0x00A7, 0x00A4, 0x201C, 0x00AB,
+ 0x2039, 0x203A, 0xFB01, 0xFB02, 0x2012, 0x2020, 0x2021, 0x00B7, 0x00B6,
+ 0x2022, 0x201A, 0x201E, 0x201D, 0x00BB, 0x2026, 0x2030, 0x00BF, 0x0301,
+ 0x0302, 0x00AF, 0x0306, 0x0307, 0x0308, 0x030A, 0x00B8, 0x030B, 0x0328,
+ 0x030C, 0x0336, 0x00C6, 0x00AA, 0x0141, 0x00D8, 0x0152, 0x00BA, 0x00E6,
+ 0x0131, 0x0142, 0x00F8, 0x0153, 0x00DF, 0x002D, 0x00A9, 0x00AC, 0x00AE,
+ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B5, 0x00B9, 0x00BC, 0x00BD, 0x00BE,
+ 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C7, 0x00C8, 0x00C9,
+ 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, 0x00D0, 0x00D1, 0x00D2,
+ 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, 0x00D9, 0x00DA, 0x00DB, 0x00DC,
+ 0x00DD, 0x00DE, 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E7,
+ 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF, 0x00F0,
+ 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, 0x00F9, 0x00FA,
+ 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF, 0x0160, 0x0178, 0x017D, 0x0305,
+ 0x0161, 0x2122, 0x017E, 0x0030, 0x2002, 0x0021, 0x0022, 0x0023, 0x0024,
+ 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D,
+ 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036,
+ 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
+ 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048,
+ 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051,
+ 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A,
+ 0x005B, 0x00A5, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063,
+ 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C,
+ 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075,
+ 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x203E,
+ 0xFF40, 0x2032, 0x00A8, 0x2036, 0x00C4, 0x00F9, 0x00E9, 0x00ED, 0x00DF,
+ 0x00E7, 0x00C7, 0x00D1, 0x00F1, 0x00A2, 0x00A3, 0x00F3, 0x00FA, 0x00A1,
+ 0x00BF, 0x00BD, 0x00D6, 0x00DC, 0x00E4, 0x00EB, 0x00EF, 0x00F6, 0x00DC,
+ 0x00E2, 0x00EA, 0x00EE, 0x00F4, 0x00FC, 0x00E0, 0x00E9, 0x00E1, 0x007E,
+ 0x0030, 0x00AC, 0x005C, 0xFF60, 0xFF61, 0xFF62, 0xFF63, 0xFF64, 0xFF65,
+ 0xFF66, 0xFF67, 0xFF68, 0xFF69, 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6D, 0xFF6E,
+ 0xFF6F, 0xFF70, 0xFF71, 0xFF72, 0xFF73, 0xFF74, 0xFF75, 0xFF76, 0xFF77,
+ 0xFF78, 0xFF79, 0xFF7A, 0xFF7B, 0xFF7C, 0xFF7D, 0xFF7E, 0xFF7F, 0xFF80,
+ 0xFF81, 0xFF82, 0xFF83, 0xFF84, 0xFF85, 0xFF86, 0xFF87, 0xFF88, 0xFF89,
+ 0xFF8A, 0xFF8B, 0xFF8C, 0xFF8D, 0xFF8E, 0xFF8F, 0xFF90, 0xFF91, 0xFF92,
+ 0xFF93, 0xFF94, 0xFF95, 0xFF96, 0xFF97, 0xFF98, 0xFF99, 0xFF9A, 0xFF9B,
+ 0xFF9C, 0xFF9D, 0xFF9E, 0xFF9F, 0x30F0, 0x30F1, 0x30EE, 0x30AB, 0x30B1,
+ 0x30F4, 0x30AC, 0x30AE, 0x30B0, 0x30B2, 0x30B4, 0x30B6, 0x30B8, 0x30BA,
+ 0x30BC, 0x30BE, 0x30C0, 0x30C2, 0x30C5, 0x30C7, 0x30C9, 0x30D0, 0x30D1,
+ 0x30D3, 0x30D4, 0x30D6, 0x30D7, 0x30D9, 0x30DA, 0x30DC, 0x30DD, 0xFF60,
+ 0x3092, 0x3041, 0x3043, 0x3045, 0x3047, 0x3049, 0x3083, 0x3085, 0x3087,
+ 0x3063, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, 0x304B, 0x304D, 0x304F,
+ 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B, 0x305D, 0x305F, 0x3061,
+ 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F,
+ 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082,
+ 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308F,
+ 0x3093, 0x3090, 0x3091, 0x308E, 0x304C, 0x304E, 0x3050, 0x3052, 0x3054,
+ 0x3056, 0x3068, 0x305A, 0x305C, 0x305E, 0x3060, 0x3062, 0x3065, 0x3067,
+ 0x3069, 0x3070, 0x3071, 0x3073, 0x3074, 0x3076, 0x3077, 0x3079, 0x307A,
+ 0x307C, 0x307D, 0x301D, 0x301E, 0x005B, 0x005D, 0x3008, 0x3009, 0x300A,
+ 0x300B, 0x300E, 0x300F, 0x3010, 0x3011, 0x2012, 0xFF60, 0x2500, 0x2501,
+ 0x2502, 0x2503, 0x2504, 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250A,
+ 0x250B, 0x250C, 0x250D, 0x250E, 0x250F, 0x2510, 0x2511, 0x2512, 0x2513,
+ 0x2514, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251A, 0x251B, 0x251C,
+ 0x251D, 0x251E, 0x251F, 0x2520, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525,
+ 0x2526, 0x2527, 0x2528, 0x2529, 0x252A, 0x252B, 0x252C, 0x252D, 0x252E,
+ 0x252F, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537,
+ 0x2538, 0x2539, 0x253A, 0x253B, 0x253C, 0x253D, 0x253E, 0x253F, 0x2540,
+ 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549,
+ 0x254A, 0x254B, 0x25B2, 0x20AC, 0x2126, 0x2032, 0x2033, 0xFB00, 0xFB03,
+ 0xFB04, 0x0101, 0x012B, 0x016B, 0x0113, 0x014D, 0x0100, 0x012A, 0x016A,
+ 0x0112, 0x014C, 0x215B, 0x215C, 0x215D, 0x215E, 0x2153, 0x2154, 0x2070,
+ 0x2074, 0x2075, 0x2076, 0x2077, 0x2078, 0x2079, 0x2080, 0x2081, 0x2082,
+ 0x2083, 0x2084, 0x2085, 0x2086, 0x2087, 0x2088, 0x2089, 0x01CD, 0x011A,
+ 0x0000, 0x1EBC, 0x01CF, 0x0000, 0x0128, 0x01D1, 0x0000, 0x01D3, 0x016E,
+ 0x0168, 0x01CE, 0x011B, 0x0000, 0x1EBD, 0x01D0, 0x0000, 0x0129, 0x01D2,
+ 0x0000, 0x01D4, 0x016F, 0x0169, 0x0251, 0x0251, 0x0251, 0x01FD, 0x00E6,
+ 0x0254, 0x0254, 0x0254, 0x0259, 0x0259, 0x0259, 0x025A, 0x025A, 0x025A,
+ 0x025B, 0x025B, 0x025B, 0x006A, 0x014B, 0x0275, 0x028C, 0x028C, 0x028C,
+ 0x0292, 0x0283, 0x02D0, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025,
+ 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E,
+ 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040,
+ 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049,
+ 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052,
+ 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B,
+ 0x00A5, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064,
+ 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D,
+ 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076,
+ 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x00A6, 0x007D, 0x0303, 0x02BC,
+ 0x005C, 0x02BB, 0x007C, 0x007E, 0x00A1, 0x00A2, 0x00A3, 0x2044, 0x0192,
+ 0x00A7, 0x00A4, 0x201C, 0x00AB, 0x2039, 0x203A, 0xFB01, 0xFB02, 0x2012,
+ 0x2020, 0x2021, 0x00B7, 0x00B6, 0x2022, 0x201A, 0x201E, 0x201D, 0x00BB,
+ 0x2026, 0x2030, 0x00BF, 0x0301, 0x0302, 0x00AF, 0x0306, 0x0307, 0x0308,
+ 0x030A, 0x00B8, 0x030B, 0x0328, 0x030C, 0x0336, 0x00C6, 0x00AA, 0x0141,
+ 0x00D8, 0x0152, 0x00BA, 0x00E6, 0x0131, 0x0142, 0x00F8, 0x0153, 0x00DF,
+ 0x002D, 0x00A9, 0x00AC, 0x00AE, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B5,
+ 0x00B9, 0x00BC, 0x00BD, 0x00BE, 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4,
+ 0x00C5, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE,
+ 0x00CF, 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
+ 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00E0, 0x00E1, 0x00E2,
+ 0x00E3, 0x00E4, 0x00E5, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC,
+ 0x00ED, 0x00EE, 0x00EF, 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5,
+ 0x00F6, 0x00F7, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF,
+ 0x0160, 0x0178, 0x017D, 0x0305, 0x0161, 0x2122, 0x017E, 0x0030, 0x20AC,
+ 0x2126, 0x2032, 0x2033, 0xFB00, 0xFB03, 0xFB04, 0x0101, 0x012B, 0x016B,
+ 0x0113, 0x014D, 0x0100, 0x012A, 0x016A, 0x0112, 0x014C, 0x215B, 0x215C,
+ 0x215D, 0x215E, 0x2153, 0x2154, 0x2070, 0x2074, 0x2075, 0x2076, 0x2077,
+ 0x2078, 0x2079, 0x2080, 0x2081, 0x2082, 0x2083, 0x2084, 0x2085, 0x2086,
+ 0x2087, 0x2088, 0x2089, 0x01CD, 0x011A, 0x0000, 0x1EBC, 0x01CF, 0x0000,
+ 0x0128, 0x01D1, 0x0000, 0x01D3, 0x016E, 0x0168, 0x01CE, 0x011B, 0x0000,
+ 0x1EBD, 0x01D0, 0x0000, 0x0129, 0x01D2, 0x0000, 0x01D4, 0x016F, 0x0169,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038,
+ 0x0039, 0x0336, 0x002D, 0x003D, 0x002C, 0x0028, 0x0029, 0x002E, 0x002F,
+ 0x003A, 0x003B, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036,
+ 0x0037, 0x0038, 0x0039, 0x0336, 0x002D, 0x003D, 0x002C, 0x0028, 0x0029,
+ 0x002E, 0x002F, 0x003A, 0x003B, 0x00B7, 0x20AC, 0x0000, 0x2153, 0x2154,
+ 0x00BE, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159, 0x215A, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x215B, 0x215C, 0x215D, 0x215E, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0030,
+ 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039,
+ 0x0030, 0x2163, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176,
+ 0x2177, 0x2178, 0x2179, 0x217A, 0x217B, 0x0000, 0x0000, 0x0000, 0x2160,
+ 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169,
+ 0x216A, 0x216B, 0x0000, 0x0000, 0x0000, 0x0041, 0x0042, 0x0043, 0x0044,
+ 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D,
+ 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056,
+ 0x0057, 0x0058, 0x0059, 0x005A, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A,
+ 0x304B, 0x304D, 0x304F, 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B,
+ 0x305D, 0x305F, 0x3061, 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C,
+ 0x306D, 0x306E, 0x306F, 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F,
+ 0x3080, 0x3081, 0x3082, 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B,
+ 0x308C, 0x308D, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A2, 0x30A4,
+ 0x30A6, 0x30A8, 0x30AA, 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5,
+ 0x30B7, 0x30B9, 0x30BB, 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8,
+ 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8,
+ 0x30DB, 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8,
+ 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EF, 0x30F0, 0x30F1, 0x30F2,
+ 0x30F3, 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, 0x3226, 0x3227,
+ 0x3228, 0x3229, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x55B6, 0x5408, 0x6CEB, 0x554F, 0x7B54, 0x4F8B,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038,
+ 0x0039, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x3063, 0x624D, 0x3007, 0x4E00, 0x4E8C, 0x4E09, 0x56DB,
+ 0x4E94, 0x516D, 0x4E03, 0x516B, 0x4E5D, 0x5341, 0x3007, 0x4E00, 0x4E8C,
+ 0x4E09, 0x56DB, 0x4E94, 0x516D, 0x4E03, 0x516B, 0x4E5D, 0x5341, 0x3007,
+ 0x4E00, 0x4E8C, 0x4E09, 0x56DB, 0x4E94, 0x516D, 0x4E03, 0x516B, 0x4E5D,
+ 0x3064, 0x624D, 0x4E00, 0x4E8C, 0x4E09, 0x56DB, 0x4E94, 0x516D, 0x4E03,
+ 0x516B, 0x4E5D, 0x5341, 0x3007, 0x4E00, 0x4E8C, 0x4E09, 0x56DB, 0x4E94,
+ 0x516D, 0x4E03, 0x516B, 0x4E5D, 0x5341, 0x30B3, 0x3063, 0x30C3, 0x30A9,
+ 0x0000, 0x0000, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466,
+ 0x2467, 0x2468, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x24D0,
+ 0x24D1, 0x24D2, 0x24D3, 0x24D4, 0x24D5, 0x24D6, 0x24D7, 0x24D8, 0x24D9,
+ 0x24DA, 0x24DB, 0x24DC, 0x24DD, 0x24DE, 0x24DF, 0x24E0, 0x24E1, 0x24E2,
+ 0x24E3, 0x24E4, 0x24E5, 0x24E6, 0x24E7, 0x24E8, 0x24E9, 0x24B6, 0x24B7,
+ 0x24B8, 0x24B9, 0x24BA, 0x24BB, 0x24BC, 0x24BD, 0x24BE, 0x24BF, 0x24C0,
+ 0x24C1, 0x24C2, 0x24C3, 0x24C4, 0x24C5, 0x24C6, 0x24C7, 0x24C8, 0x24C9,
+ 0x24CA, 0x24CB, 0x24CC, 0x24CD, 0x24CE, 0x24CF, 0x3042, 0x3044, 0x3046,
+ 0x3048, 0x304A, 0x304B, 0x304D, 0x304F, 0x3051, 0x3053, 0x3055, 0x3057,
+ 0x3059, 0x305B, 0x305D, 0x305F, 0x3061, 0x3064, 0x3066, 0x3068, 0x306A,
+ 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3072, 0x3075, 0x3078, 0x307B,
+ 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3084, 0x3086, 0x3088, 0x3089,
+ 0x308A, 0x308B, 0x308C, 0x308D, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093,
+ 0x32D0, 0x32D1, 0x32D2, 0x32D3, 0x32D4, 0x32D5, 0x32D6, 0x32D7, 0x32D8,
+ 0x32D9, 0x32DA, 0x32DB, 0x32DC, 0x32DD, 0x32DE, 0x32DF, 0x32E0, 0x32E1,
+ 0x32E2, 0x32E3, 0x32E4, 0x32E5, 0x32E6, 0x32E7, 0x32E8, 0x32E9, 0x32EA,
+ 0x32EB, 0x32EC, 0x32ED, 0x32EE, 0x32EF, 0x32F0, 0x32F1, 0x32F2, 0x32F3,
+ 0x32F4, 0x32F5, 0x32F6, 0x32F7, 0x32F8, 0x32F9, 0x32FA, 0x32FB, 0x32FC,
+ 0x32FD, 0x32FE, 0x30F3, 0x3280, 0x3281, 0x3282, 0x3283, 0x3284, 0x3285,
+ 0x3286, 0x3287, 0x3288, 0x3289, 0x3290, 0x328A, 0x328B, 0x328C, 0x328D,
+ 0x328E, 0x328F, 0x8ABF, 0x329F, 0x526F, 0x6E1B, 0x6A19, 0x6B20, 0x57FA,
+ 0x7981, 0x32A0, 0x32A1, 0x329B, 0x329A, 0x32A3, 0x32A2, 0x3297, 0x51FA,
+ 0x329C, 0x3295, 0x6E08, 0x5897, 0x554F, 0x7B54, 0x4F8B, 0x96FB, 0x25CC,
+ 0x0030, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066,
+ 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+ 0x0079, 0x007A, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050,
+ 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059,
+ 0x005A, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, 0x304B, 0x304D, 0x304F,
+ 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B, 0x305D, 0x305F, 0x3061,
+ 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F,
+ 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082,
+ 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308F,
+ 0x3090, 0x3091, 0x3092, 0x3093, 0x30A2, 0x30A4, 0x30A6, 0x30A8, 0x30AA,
+ 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5, 0x30B7, 0x30B9, 0x30BB,
+ 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, 0x30CA, 0x30CB, 0x30CC,
+ 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8, 0x30DB, 0x30DE, 0x30DF,
+ 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8, 0x30E9, 0x30EA, 0x30EB,
+ 0x30EC, 0x30ED, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x65E5, 0x6708,
+ 0x706B, 0x6C34, 0x6728, 0x91D1, 0x571F, 0x554F, 0x7B54, 0x4F8B, 0x25CF,
+ 0x0030, 0x0000, 0x0031, 0x0000, 0x0032, 0x0000, 0x0033, 0x0000, 0x0034,
+ 0x0000, 0x0035, 0x0000, 0x0036, 0x0000, 0x0037, 0x0000, 0x0038, 0x0000,
+ 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066,
+ 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+ 0x0079, 0x007A, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050,
+ 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059,
+ 0x005A, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, 0x304B, 0x304D, 0x304F,
+ 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B, 0x305D, 0x305F, 0x3061,
+ 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F,
+ 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082,
+ 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308F,
+ 0x3090, 0x3091, 0x3092, 0x3093, 0x30A2, 0x30A4, 0x30A6, 0x30A8, 0x30AA,
+ 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5, 0x30B7, 0x30B9, 0x30BB,
+ 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, 0x30CA, 0x30CB, 0x30CC,
+ 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8, 0x30DB, 0x30DE, 0x30DF,
+ 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8, 0x30E9, 0x30EA, 0x30EB,
+ 0x30EC, 0x30ED, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x65E5, 0x6708,
+ 0x706B, 0x6C34, 0x6728, 0x91D1, 0x571F, 0x8CA0, 0x52DD, 0x554F, 0x7B54,
+ 0x4F8B, 0x25A1, 0x25A1, 0x0030, 0x0000, 0x0031, 0x0000, 0x0032, 0x0000,
+ 0x0033, 0x0000, 0x0034, 0x0000, 0x0035, 0x0000, 0x0036, 0x0000, 0x0037,
+ 0x0000, 0x0038, 0x0000, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0061, 0x0062, 0x0063,
+ 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C,
+ 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075,
+ 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x0041, 0x0042, 0x0043, 0x0044,
+ 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D,
+ 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056,
+ 0x0057, 0x0058, 0x0059, 0x005A, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A,
+ 0x304B, 0x304D, 0x304F, 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B,
+ 0x305D, 0x305F, 0x3061, 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C,
+ 0x306D, 0x306E, 0x306F, 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F,
+ 0x3080, 0x3081, 0x3082, 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B,
+ 0x308C, 0x308D, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A2, 0x30A4,
+ 0x30A6, 0x30A8, 0x30AA, 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5,
+ 0x30B7, 0x30B9, 0x30BB, 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8,
+ 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8,
+ 0x30DB, 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8,
+ 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EF, 0x30F0, 0x30F1, 0x30F2,
+ 0x30F3, 0x65E5, 0x6708, 0x706B, 0x6C34, 0x6728, 0x91D1, 0x571F, 0x554F,
+ 0x7B54, 0x4F8B, 0x25A0, 0x0030, 0x0000, 0x0031, 0x0000, 0x0032, 0x0000,
+ 0x0033, 0x0000, 0x0034, 0x0000, 0x0035, 0x0000, 0x0036, 0x0000, 0x0037,
+ 0x0000, 0x0038, 0x0000, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0061, 0x0062, 0x0063,
+ 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C,
+ 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075,
+ 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x0041, 0x0042, 0x0043, 0x0044,
+ 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D,
+ 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056,
+ 0x0057, 0x0058, 0x0059, 0x005A, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A,
+ 0x304B, 0x304D, 0x304F, 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B,
+ 0x305D, 0x305F, 0x3061, 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C,
+ 0x306D, 0x306E, 0x306F, 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F,
+ 0x3080, 0x3081, 0x3082, 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B,
+ 0x308C, 0x308D, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A2, 0x30A4,
+ 0x30A6, 0x30A8, 0x30AA, 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5,
+ 0x30B7, 0x30B9, 0x30BB, 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8,
+ 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8,
+ 0x30DB, 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8,
+ 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EF, 0x30F0, 0x30F1, 0x30F2,
+ 0x30F3, 0x65E5, 0x6708, 0x706B, 0x6C34, 0x6728, 0x91D1, 0x571F, 0x554F,
+ 0x7B54, 0x4F8B, 0x0030, 0x0000, 0x0031, 0x0000, 0x0032, 0x0000, 0x0033,
+ 0x0000, 0x0034, 0x0000, 0x0035, 0x0000, 0x0036, 0x0000, 0x0037, 0x0000,
+ 0x0038, 0x0000, 0x0039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0061, 0x0062, 0x0063, 0x0064,
+ 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D,
+ 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076,
+ 0x0077, 0x0078, 0x0079, 0x007A, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045,
+ 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E,
+ 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ 0x0058, 0x0059, 0x005A, 0x3042, 0x3044, 0x3046, 0x3048, 0x304A, 0x304B,
+ 0x304D, 0x304F, 0x3051, 0x3053, 0x3055, 0x3057, 0x3059, 0x305B, 0x305D,
+ 0x305F, 0x3061, 0x3064, 0x3066, 0x3068, 0x306A, 0x306B, 0x306C, 0x306D,
+ 0x306E, 0x306F, 0x3072, 0x3075, 0x3078, 0x307B, 0x307E, 0x307F, 0x3080,
+ 0x3081, 0x3082, 0x3084, 0x3086, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C,
+ 0x308D, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A2, 0x30A4, 0x30A6,
+ 0x30A8, 0x30AA, 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5, 0x30B7,
+ 0x30B9, 0x30BB, 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, 0x30CA,
+ 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8, 0x30DB,
+ 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8, 0x30E9,
+ 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3,
+ 0x65E5, 0x6708, 0x706B, 0x6C34, 0x6728, 0x91D1, 0x571F, 0x554F, 0x7B54,
+ 0x4F8B, 0x25A0, 0x33C2, 0x33CD, 0x2116, 0x0000, 0x33D8, 0x33DA, 0x2121,
+ 0x2122, 0x0000, 0x2100, 0x33C2, 0x0000, 0x33C4, 0x2105, 0x3397, 0x3371,
+ 0x3398, 0x2113, 0x338D, 0x339B, 0x3396, 0x0000, 0x0000, 0x33D7, 0x33D8,
+ 0x0000, 0x0000, 0x0000, 0x3301, 0x3302, 0x3304, 0x3306, 0x0000, 0x3308,
+ 0x0000, 0x3307, 0x330A, 0x0000, 0x3309, 0x0000, 0x330B, 0x0000, 0x330C,
+ 0x330E, 0x330F, 0x3310, 0x3311, 0x3312, 0x3313, 0x0000, 0x3317, 0x0000,
+ 0x3319, 0x0000, 0x331A, 0x331B, 0x331C, 0x331D, 0x331F, 0x3320, 0x3321,
+ 0x3324, 0x0000, 0x3325, 0x0000, 0x0000, 0x3328, 0x3329, 0x0000, 0x332D,
+ 0x0000, 0x0000, 0x332E, 0x332F, 0x3330, 0x3332, 0x0000, 0x0000, 0x3334,
+ 0x3335, 0x333C, 0x0000, 0x0000, 0x0000, 0x3337, 0x0000, 0x3338, 0x333A,
+ 0x333D, 0x3341, 0x333E, 0x333F, 0x3340, 0x3343, 0x3344, 0x3345, 0x3346,
+ 0x3348, 0x334B, 0x334C, 0x334F, 0x3350, 0x0000, 0x0000, 0x3352, 0x3354,
+ 0x0000, 0x0000, 0x3353, 0x3355, 0x3356, 0x0000, 0x3301, 0x3302, 0x3304,
+ 0x3306, 0x0000, 0x3308, 0x0000, 0x3307, 0x330A, 0x0000, 0x3309, 0x0000,
+ 0x330B, 0x0000, 0x330C, 0x330E, 0x330F, 0x3310, 0x3311, 0x3312, 0x3313,
+ 0x0000, 0x3317, 0x0000, 0x3319, 0x0000, 0x331A, 0x331B, 0x331C, 0x331D,
+ 0x331F, 0x3320, 0x3321, 0x3324, 0x0000, 0x3325, 0x0000, 0x0000, 0x3328,
+ 0x3329, 0x0000, 0x332D, 0x0000, 0x0000, 0x332E, 0x332F, 0x3330, 0x3332,
+ 0x0000, 0x0000, 0x3334, 0x3335, 0x333C, 0x0000, 0x0000, 0x0000, 0x3337,
+ 0x0000, 0x3338, 0x333A, 0x333D, 0x3341, 0x333E, 0x333F, 0x3340, 0x3343,
+ 0x3344, 0x3345, 0x3346, 0x3348, 0x334B, 0x334C, 0x334F, 0x3350, 0x0000,
+ 0x0000, 0x3352, 0x3354, 0x0000, 0x0000, 0x3353, 0x3355, 0x3356, 0x337E,
+ 0x337D, 0x337C, 0x337B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x002D, 0x003D, 0x2103, 0x2640, 0x2642, 0x3013,
+ 0x3012, 0x300C, 0x300D, 0x300E, 0x300F, 0x301A, 0x301B, 0x3018, 0x3019,
+ 0xFF08, 0xFF09, 0x301D, 0x301E, 0x2018, 0x2019, 0x201C, 0x201D, 0x0027,
+ 0x0022, 0x0000, 0x2135, 0x03D0, 0x220A, 0x210F, 0x00B5, 0x03C6, 0x03DB,
+ 0x03D1, 0xFFFD, 0x2668, 0x2669, 0x266C, 0xFF1A, 0x00A9, 0x00A9, 0x00AE,
+ 0x00AE, 0x303B, 0x303B, 0x3033, 0x3034, 0x3035, 0x203C, 0x2049, 0x0021,
+ 0x203C, 0x2049, 0x244A, 0x0000, 0x2213, 0x2260, 0x2243, 0x2272, 0x2273,
+ 0x300C, 0x300D, 0x300E, 0x300F, 0x301A, 0x301B, 0x3018, 0x3019, 0xFF5F,
+ 0xFF60, 0x300C, 0x300D, 0x300E, 0x300F, 0x301A, 0x301B, 0x3018, 0x3019,
+ 0xFF5F, 0xFF60, 0x239B, 0x239D, 0x239E, 0x23A0, 0x239D, 0x239B, 0x23A0,
+ 0x239E, 0x23A1, 0x23A3, 0x23A4, 0x23A6, 0x23A3, 0x23A1, 0x23A6, 0x23A4,
+ 0x23A1, 0x23A3, 0x23A4, 0x23A6, 0x23A3, 0x23A1, 0x23A6, 0x23A4, 0xFF5C,
+ 0x2015, 0x301D, 0x301E, 0x2018, 0x2019, 0x2018, 0x2019, 0x2702, 0x2702,
+ 0x2702, 0x2702, 0x303D, 0x3012, 0x309F, 0x534D, 0x2207, 0x2205, 0x22A0,
+ 0x2296, 0x2298, 0x2295, 0x2297, 0x229E, 0x2295, 0x0021, 0x25B3, 0x25C0,
+ 0x25B6, 0x21E6, 0x21E8, 0x21E7, 0x21E9, 0x21D0, 0x2194, 0x2198, 0x2199,
+ 0x2196, 0x2197, 0x21CC, 0x21C6, 0x21C4, 0x21C5, 0x2190, 0x2192, 0x2191,
+ 0x2193, 0x2194, 0x2195, 0x2504, 0x2506, 0x3030, 0x2307, 0x3030, 0x2307,
+ 0x3030, 0x2307, 0x3030, 0x2307, 0x3030, 0x2307, 0x2740, 0x273F, 0x25A1,
+ 0x25A0, 0x25A1, 0x25A1, 0x25A1, 0x25A1, 0x25A1, 0x25AB, 0x25A0, 0x25AA,
+ 0x271A, 0x271A, 0x25C7, 0x25C6, 0x25C7, 0x25C7, 0x25C7, 0x25C7, 0x25C7,
+ 0x25C6, 0x25C6, 0x25CE, 0x25C9, 0x25CB, 0x25E6, 0x25CF, 0x2022, 0x2756,
+ 0x2756, 0x2756, 0x2756, 0x3008, 0x3009, 0x3008, 0x3009, 0x300A, 0x300B,
+ 0x300A, 0x300B, 0x3053, 0x3053, 0x30B3, 0x30B3, 0x309D, 0x309E, 0x3041,
+ 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A,
+ 0x304B, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 0x3050, 0x3051, 0x3051,
+ 0x3052, 0x3053, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059,
+ 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, 0x3060, 0x3061, 0x3062,
+ 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306A, 0x306B,
+ 0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074,
+ 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D,
+ 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086,
+ 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F,
+ 0x3090, 0x3091, 0x3092, 0x3093, 0x3094, 0x30FD, 0x30FE, 0x30FC, 0x30A1,
+ 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA,
+ 0x30F5, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30F6, 0x30B1,
+ 0x30B2, 0x30B3, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9,
+ 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2,
+ 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB,
+ 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4,
+ 0x30D5, 0x30D6, 0x30D7, 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD,
+ 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6,
+ 0x30E7, 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF,
+ 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F7, 0x30F8, 0x30F9, 0x30FA,
+ 0x309D, 0x309E, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047,
+ 0x3048, 0x3049, 0x304A, 0x304B, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F,
+ 0x3050, 0x3051, 0x3051, 0x3052, 0x3053, 0x3053, 0x3054, 0x3055, 0x3056,
+ 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F,
+ 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
+ 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071,
+ 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A,
+ 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083,
+ 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C,
+ 0x308D, 0x308E, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x3094, 0x30FD,
+ 0x30FE, 0x30FC, 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7,
+ 0x30A8, 0x30A9, 0x30AA, 0x30F5, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF,
+ 0x30B0, 0x30F6, 0x30B1, 0x30B2, 0x30B3, 0x30B3, 0x30B4, 0x30B5, 0x30B6,
+ 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF,
+ 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8,
+ 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0, 0x30D1,
+ 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8, 0x30D9, 0x30DA,
+ 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E3,
+ 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC,
+ 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F7,
+ 0x30F8, 0x30F9, 0x30FA, 0x3001, 0x3002, 0x30FB, 0xFF0A, 0x203B, 0x25CB,
+ 0x25CE, 0x25C9, 0x25B3, 0x25B2, 0x30FD, 0x30FE, 0x309D, 0x309E, 0xFF08,
+ 0xFF09, 0x3014, 0x3015, 0xFF08, 0xFF09, 0x3014, 0x3015, 0x0030, 0x0031,
+ 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x3041,
+ 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A,
+ 0x304B, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 0x3050, 0x3051, 0x3051,
+ 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305A,
+ 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, 0x3060, 0x3061, 0x3062, 0x3063,
+ 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306A, 0x306B, 0x306C,
+ 0x306D, 0x306E, 0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075,
+ 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E,
+ 0x307F, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087,
+ 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, 0x3090,
+ 0x3091, 0x3092, 0x3093, 0x3094, 0x3041, 0x3043, 0x3045, 0x3047, 0x3049,
+ 0x304B, 0x3051, 0x3063, 0x3083, 0x3085, 0x3087, 0x308E, 0x30A1, 0x30A2,
+ 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA, 0x30AB,
+ 0x30F5, 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30B1, 0x30F6, 0x30B2,
+ 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB,
+ 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4,
+ 0x30C5, 0x30C6, 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD,
+ 0x30CE, 0x30CF, 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6,
+ 0x30D7, 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF,
+ 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8,
+ 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1,
+ 0x30F2, 0x30F3, 0x30F4, 0x30A1, 0x30A3, 0x30A5, 0x30A7, 0x30A9, 0x30F5,
+ 0x30F6, 0x30C3, 0x30E3, 0x30E5, 0x30E7, 0x30EE, 0x30FC, 0x30FC, 0x6CE8,
+ 0x20AC, 0x2126, 0x2032, 0x2033, 0xFB00, 0xFB03, 0xFB04, 0x0101, 0x012B,
+ 0x016B, 0x0113, 0x014D, 0x0100, 0x012A, 0x016A, 0x0112, 0x014C, 0x215B,
+ 0x215C, 0x215D, 0x215E, 0x2153, 0x2154, 0x2070, 0x2074, 0x2075, 0x2076,
+ 0x2077, 0x2078, 0x2079, 0x2080, 0x2081, 0x2082, 0x2083, 0x2084, 0x2085,
+ 0x2086, 0x2087, 0x2088, 0x2089, 0x01CD, 0x011A, 0x0000, 0x1EBC, 0x01CF,
+ 0x0000, 0x0128, 0x01D1, 0x0000, 0x01D3, 0x016E, 0x0168, 0x01CE, 0x011B,
+ 0x0000, 0x1EBD, 0x01D0, 0x0000, 0x0129, 0x01D2, 0x0000, 0x01D4, 0x016F,
+ 0x0169, 0x0251, 0x0251, 0x0251, 0x01FD, 0x00E6, 0x0254, 0x0254, 0x0254,
+ 0x0259, 0x0259, 0x0259, 0x025A, 0x025A, 0x025A, 0x025B, 0x025B, 0x025B,
+ 0x006A, 0x014B, 0x0275, 0x028C, 0x028C, 0x028C, 0x0292, 0x0283, 0x02D0,
+ 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028,
+ 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x0030, 0x0031,
+ 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A,
+ 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, 0x0042, 0x0043,
+ 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C,
+ 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055,
+ 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x00A5, 0x005D, 0x005E,
+ 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
+ 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070,
+ 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079,
+ 0x007A, 0x007B, 0x00A6, 0x007D, 0x0303, 0x02BC, 0x005C, 0x02BB, 0x007C,
+ 0x007E, 0x00A1, 0x00A2, 0x00A3, 0x2044, 0x0192, 0x00A7, 0x00A4, 0x201C,
+ 0x00AB, 0x2039, 0x203A, 0xFB01, 0xFB02, 0x2012, 0x2020, 0x2021, 0x00B7,
+ 0x00B6, 0x2022, 0x201A, 0x201E, 0x201D, 0x00BB, 0x2026, 0x2030, 0x00BF,
+ 0x0301, 0x0302, 0x00AF, 0x0306, 0x0307, 0x0308, 0x030A, 0x00B8, 0x030B,
+ 0x0328, 0x030C, 0x0336, 0x00C6, 0x00AA, 0x0141, 0x00D8, 0x0152, 0x00BA,
+ 0x00E6, 0x0131, 0x0142, 0x00F8, 0x0153, 0x00DF, 0x002D, 0x00A9, 0x00AC,
+ 0x00AE, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B5, 0x00B9, 0x00BC, 0x00BD,
+ 0x00BE, 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C7, 0x00C8,
+ 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, 0x00D0, 0x00D1,
+ 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, 0x00D9, 0x00DA, 0x00DB,
+ 0x00DC, 0x00DD, 0x00DE, 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5,
+ 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
+ 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, 0x00F9,
+ 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF, 0x0160, 0x0178, 0x017D,
+ 0x0305, 0x0161, 0x2122, 0x017E, 0x0030, 0x20AC, 0x2126, 0x2032, 0x2033,
+ 0xFB00, 0xFB03, 0xFB04, 0x0101, 0x012B, 0x016B, 0x0113, 0x014D, 0x0100,
+ 0x012A, 0x016A, 0x0112, 0x014C, 0x215B, 0x215C, 0x215D, 0x215E, 0x2153,
+ 0x2154, 0x2070, 0x2074, 0x2075, 0x2076, 0x2077, 0x2078, 0x2079, 0x2080,
+ 0x2081, 0x2082, 0x2083, 0x2084, 0x2085, 0x2086, 0x2087, 0x2088, 0x2089,
+ 0x01CD, 0x011A, 0x0000, 0x1EBC, 0x01CF, 0x0000, 0x0128, 0x01D1, 0x0000,
+ 0x01D3, 0x016E, 0x0168, 0x01CE, 0x011B, 0x0000, 0x1EBD, 0x01D0, 0x0000,
+ 0x0129, 0x01D2, 0x0000, 0x01D4, 0x016F, 0x0169, 0x0030, 0x0031, 0x0032,
+ 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x0336, 0x002D,
+ 0x003D, 0x002C, 0x0028, 0x0029, 0x002E, 0x002F, 0x003A, 0x003B, 0x0030,
+ 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039,
+ 0x0336, 0x002D, 0x003D, 0x002C, 0x0028, 0x0029, 0x002E, 0x002F, 0x003A,
+ 0x003B, 0x00B7, 0x002D, 0x003D, 0x2103, 0x2640, 0x2642, 0x3013, 0x3012,
+ 0x300C, 0x300D, 0x300E, 0x300F, 0x301A, 0x301B, 0x3018, 0x3019, 0xFF08,
+ 0xFF09, 0x301D, 0x301E, 0x2018, 0x2019, 0x201C, 0x201D, 0x0027, 0x0022,
+ 0x9038, 0x8B01, 0x7DE3, 0x9EC3, 0x6EAB, 0x798D, 0x6094, 0x6D77, 0x6168,
+ 0x6982, 0x6E34, 0x8910, 0x6F22, 0x5668, 0x65E2, 0x7948, 0x865B, 0x97FF,
+ 0x52E4, 0x8B39, 0x63ED, 0x64CA, 0x784F, 0x7A40, 0x6BBA, 0x7949, 0x8996,
+ 0x716E, 0x793E, 0x8005, 0x81ED, 0x795D, 0x6691, 0x7F72, 0x6D89, 0x72C0,
+ 0x613C, 0x771E, 0x7BC0, 0x7956, 0x50E7, 0x5C64, 0x5DE2, 0x618E, 0x8D08,
+ 0x537D, 0x5606, 0x8457, 0x5FB5, 0x61F2, 0x93AD, 0x798E, 0x9B2D, 0x7A81,
+ 0x96E3, 0x6885, 0x7E41, 0x6669, 0x5351, 0x7891, 0x8CD3, 0x654F, 0x4FAE,
+ 0x5002, 0x5840, 0x52C9, 0x6B65, 0x58A8, 0x6BCF, 0x514D, 0x623E, 0x7950,
+ 0x6B04, 0x9686, 0x865C, 0x6DDA, 0x985E, 0x66C6, 0x6B77, 0x7DF4, 0x934A,
+ 0x5ECA, 0x9304, 0x6982, 0x51B4, 0x634C, 0x86DB, 0x9089, 0x9022, 0x5049,
+ 0x7DEF, 0x9055, 0x53A9, 0x990C, 0x885B, 0x5EF6, 0x6CBF, 0x925B, 0x7FC1,
+ 0x82BD, 0x96C5, 0x5BB3, 0x6168, 0x6982, 0x6BBB, 0x6562, 0x8CAB, 0x5DCC,
+ 0x9811, 0x5E30, 0x8ECC, 0x7AAE, 0x5747, 0x5091, 0x7A74, 0x5065, 0x5EFA,
+ 0x9237, 0x6A8E, 0x4EA4, 0x516C, 0x66F4, 0x6821, 0x786C, 0x7D5E, 0x8003,
+ 0x8CFC, 0x964D, 0x62F7, 0x7F6A, 0x4F7F, 0x53F2, 0x59C9, 0x8B1D, 0x90AA,
+ 0x53CE, 0x8F2F, 0x67D4, 0x77AC, 0x821C, 0x696F, 0x677E, 0x8A1F, 0x4E08,
+ 0x57F4, 0x690D, 0x8077, 0x89AA, 0x9042, 0x636E, 0x6442, 0x8239, 0x7DCF,
+ 0x8061, 0x50CF, 0x8A95, 0x6065, 0x5146, 0x773A, 0x8074, 0x8DF3, 0x5EAD,
+ 0x5EF7, 0x8247, 0x6843, 0x9003, 0x6D3E, 0x6392, 0x8F29, 0x73ED, 0x9812,
+ 0x60B2, 0x6249, 0x6590, 0x7DCB, 0x8AB9, 0x8CA7, 0x7236, 0x847A, 0x5206,
+ 0x5674, 0x61A4, 0x7C89, 0x7D1B, 0x96F0, 0x853D, 0x4FBF, 0x6367, 0x76C6,
+ 0x685D, 0x8108, 0x8036, 0x7FFC, 0x540F, 0x96A3, 0x9E9F, 0x9E97, 0x806F,
+ 0x807E, 0x6E7E, 0x5085, 0x5193, 0x51DB, 0x5315, 0x5340, 0x96D9, 0x55A9,
+ 0x56C1, 0x570D, 0x58AB, 0x59DA, 0x5A36, 0x5ABE, 0x5D4E, 0x5D87, 0x5DC9,
+ 0x5DD3, 0x5F2D, 0x5F98, 0x60D8, 0x613D, 0x61FE, 0x6268, 0x62CF, 0x651D,
+ 0x640F, 0x64F2, 0x655D, 0x665F, 0x67A9, 0x67E7, 0x696B, 0x6930, 0x69A7,
+ 0x6A44, 0x6A90, 0x6C08, 0x6C13, 0x6E23, 0x6F11, 0x6EFE, 0x6F3E, 0x71FF,
+ 0x73E5, 0x7432, 0x745F, 0x74E0, 0x750C, 0x7672, 0x792A, 0x78D4, 0x79BA,
+ 0x7A19, 0x7A95, 0x7CF2, 0x7D73, 0x7DDD, 0x7E35, 0x7FAE, 0x7FE1, 0x805A,
+ 0x805F, 0x8073, 0x8070, 0x8076, 0x8153, 0x818A, 0x81B5, 0x81CD, 0x83F2,
+ 0x8555, 0x85D5, 0x871A, 0x8836, 0x889E, 0x88D8, 0x88F4, 0x892B, 0x893B,
+ 0x896A, 0x896F, 0x8A1D, 0x8D05, 0x8D0F, 0x9F4E, 0x8E91, 0x8EA1, 0x9052,
+ 0x900E, 0x9130, 0x9156, 0x9158, 0x9165, 0x9173, 0x9172, 0x91A2, 0x91AF,
+ 0x91AA, 0x91B4, 0x91BA, 0x9477, 0x9698, 0x973D, 0x9760, 0x9771, 0x980C,
+ 0x9873, 0x98C3, 0x9A45, 0x9B4D, 0x9B58, 0x9BC6, 0x9BE1, 0x9BF1, 0x9D48,
+ 0x9DCF, 0x9F08, 0x6271, 0x6697, 0x610F, 0x8863, 0x9055, 0x907A, 0x78EF,
+ 0x54E1, 0x2ED7, 0x2EBD, 0x53A9, 0x74DC, 0x904B, 0x990C, 0x885E, 0x92B3,
+ 0x95B1, 0x5EF6, 0x63F4, 0x6CBF, 0x7159, 0x9060, 0x925B, 0x65BC, 0x5F80,
+ 0x7FC1, 0x5378, 0x97F3, 0x5316, 0x82B1, 0x83D3, 0x8CA8, 0x904E, 0x82BD,
+ 0x96C5, 0x9913, 0x5EFB, 0x7070, 0x5BB3, 0x6168, 0x6168, 0x6168, 0x69EA,
+ 0x6982, 0x676E, 0x89D2, 0x9694, 0x5272, 0x8F44, 0x938C, 0x82C5, 0x5BD2,
+ 0x74B0, 0x7DE9, 0x7F36, 0x9084, 0x9592, 0x97D3, 0x8218, 0x5371, 0x559C,
+ 0x3402, 0x3402, 0x5E7E, 0x65E3, 0x671F, 0x6A5F, 0x8D77, 0x98E2, 0x5409,
+ 0x55AB, 0x8650, 0x9006, 0x53CA, 0x5438, 0x6025, 0x7D1A, 0x5DE8, 0x62D2,
+ 0x8DDD, 0x9B5A, 0x9B5A, 0x537F, 0x5F3A, 0x6050, 0x69C1, 0x6A4B, 0x6A4B,
+ 0x9115, 0x97FF, 0x9957, 0x6681, 0x2EA9, 0x8FD1, 0x5036, 0x77E9, 0x5177,
+ 0x865E, 0x7A7A, 0x9047, 0x6ADB, 0x5553, 0x5951, 0x6075, 0x6167, 0x8FCE,
+ 0x5091, 0x6F54, 0x7A74, 0x2EBC, 0x2EBC, 0x517C, 0x5238, 0x61B2, 0x6743,
+ 0x80A9, 0x8B19, 0x9063, 0x539F, 0x8A01, 0x6236, 0x96C7, 0x9867, 0x5433,
+ 0x5A1B, 0x8AA4, 0x5DE5, 0x614C, 0x6285, 0x63A7, 0x69CB, 0x6D69, 0x6E2F,
+ 0x8015, 0x8154, 0x8352, 0x8B1B, 0x8CFC, 0x543F, 0x9177, 0x8170, 0x7511,
+ 0x8FBC, 0x4ECA, 0x9396, 0x5EA7, 0x5F69, 0x63A1, 0x6B72, 0x83DC, 0x51B4,
+ 0x54B2, 0x524A, 0x7522, 0x9910, 0x59FF, 0x59FF, 0x5DFF, 0x8AEE, 0x8AEE,
+ 0x8CC7, 0x8CC7, 0x6B21, 0x6B21, 0x6ECB, 0x73BA, 0x53F1, 0x6368, 0x659C,
+ 0x90AA, 0x52FA, 0x7235, 0x7235, 0x914C, 0x5F31, 0x4E3B, 0x53D7, 0x6388,
+ 0x5468, 0x7D42, 0x7FD2, 0x8846, 0x9031, 0x4F4F, 0x8853, 0x8FF0, 0x5DE1,
+ 0x9075, 0x9075, 0x6240, 0x66F8, 0x5973, 0x52DD, 0x5546, 0x5BB5, 0x5C06,
+ 0x2E8C, 0x2E8D, 0x5C19, 0x6D88, 0x785D, 0x8096, 0x4E08, 0x5B82, 0x57CE,
+ 0x60C5, 0x57F4, 0x98FE, 0x690D, 0x6B96, 0x98DF, 0x98E0, 0x2EDE, 0x378D,
+ 0x4FB5, 0x2E97, 0x6D78, 0x771F, 0x9032, 0x4EBB, 0x4EBA, 0x5203, 0x5C0B,
+ 0x8A0A, 0x8A0A, 0x8FC5, 0x8870, 0x9042, 0x351F, 0x52E2, 0x6210, 0x76DB,
+ 0x8056, 0x8980, 0x8AA0, 0x8ACB, 0x975C, 0x975C, 0x7A05, 0x8106, 0x96BB,
+ 0x7C4D, 0x7BC0, 0x8AAA, 0x96EA, 0x7D76, 0x6247, 0x6F98, 0x7FA1, 0x8239,
+ 0x9078, 0x9077, 0x524D, 0x5168, 0x6383, 0x63F7, 0x7626, 0x8D70, 0x9001,
+ 0x906D, 0x9020, 0x2ECA, 0x901F, 0x8CCA, 0x5C0A, 0x5C0A, 0x59A5, 0x6CF0,
+ 0x9000, 0x902E, 0x968A, 0x9BDB, 0x5927, 0x3427, 0x7027, 0x9054, 0x812B,
+ 0x4E39, 0x6B4E, 0x70AD, 0x8A95, 0x6696, 0x5024, 0x7F6E, 0x7BC9, 0x2EAE,
+ 0x7B51, 0x9010, 0x67F1, 0x6CE8, 0x99D0, 0x5F6B, 0x5FB5, 0x61F2, 0x671D,
+ 0x6F6E, 0x8ABF, 0x76F4, 0x6715, 0x6715, 0x589C, 0x8FFD, 0x901A, 0x576A,
+ 0x91E3, 0x5448, 0x5E1D, 0x7A0B, 0x7684, 0x9069, 0x8FED, 0x6DFB, 0x514E,
+ 0x9014, 0x783A, 0x5721, 0x571F, 0x51AC, 0x5510, 0x7CD6, 0x85E4, 0x8B04,
+ 0x9003, 0x900F, 0x9A30, 0x5C0E, 0x9053, 0x5451, 0x3B88, 0x5167, 0x8089,
+ 0x4E73, 0x5FCD, 0x8A8D, 0x5BE7, 0x7D0D, 0x8987, 0x6D3E, 0x80BA, 0x535A,
+ 0x8584, 0x8FEB, 0x7E1B, 0x8087, 0x4E37, 0x6F51, 0x91B1, 0x4F34, 0x5224,
+ 0x534A, 0x5E06, 0x7554, 0x6669, 0x8543, 0x907F, 0x5FAE, 0x9F3B, 0x5339,
+ 0x2EAA, 0x5F65, 0x59EC, 0x59EB, 0x8A55, 0x5E99, 0x75C5, 0x5A66, 0x6577,
+ 0x6D6E, 0x8CA0, 0x8CA0, 0x670D, 0x8986, 0x4E19, 0x5E63, 0x5E73, 0x5F0A,
+ 0x8511, 0x504F, 0x7DE8, 0x8FD4, 0x904D, 0x7C3F, 0x5305, 0x5D29, 0x62B1,
+ 0x670B, 0x7832, 0x7E2B, 0x80DE, 0x840C, 0x90A6, 0x90A6, 0x98FD, 0x9D6C,
+ 0x4EA1, 0x5E3D, 0x5FD8, 0x5FD9, 0x623F, 0x671B, 0x671B, 0x5192, 0x6469,
+ 0x7FFB, 0x51E1, 0x78E8, 0x9B54, 0x2FC7, 0x69D9, 0x685D, 0x4FE3, 0x53C8,
+ 0x7E6D, 0x9EBF, 0x8108, 0x660E, 0x76DF, 0x8FF7, 0x5984, 0x52D0, 0x76F2,
+ 0x8017, 0x623E, 0x7D0B, 0x9580, 0x7D04, 0x8E8D, 0x687A, 0x687A, 0x6801,
+ 0x6109, 0x8AED, 0x8F38, 0x52C7, 0x6709, 0x7336, 0x7336, 0x7337, 0x88D5,
+ 0x904A, 0x66DC, 0x2EB7, 0x8981, 0x990A, 0x7FCC, 0x7FFC, 0x8EB6, 0x862D,
+ 0x7387, 0x9F8D, 0x9F8D, 0x65C5, 0x6881, 0x71D0, 0x96A3, 0x9C57, 0x9E9F,
+ 0x7C7B, 0x5EC9, 0x6190, 0x9023, 0x6717, 0x8002, 0x8107, 0x50CA, 0x511A,
+ 0x5154, 0x5195, 0x2E87, 0x528D, 0x52D7, 0x52F9, 0x5349, 0x353E, 0x53DF,
+ 0x66FC, 0x5533, 0x55E4, 0x5455, 0x56C0, 0x5939, 0x5A1C, 0x5AC2, 0x5B73,
+ 0x5BC3, 0x5C14, 0x37E2, 0x5CE6, 0x5E54, 0x4E48, 0x5EE3, 0x6097, 0x62D4,
+ 0x62CC, 0x641C, 0x63C6, 0x6428, 0x8209, 0x631B, 0x665F, 0x665F, 0x6663,
+ 0x66F5, 0x675E, 0x689D, 0x688D, 0x69F6, 0x6961, 0x5BE8, 0x5BE8, 0x69BB,
+ 0x6BCC, 0x6F11, 0x6E17, 0x6F98, 0x6CAA, 0x6CAA, 0x701B, 0x7162, 0x723B,
+ 0x4E2C, 0x731C, 0x74CA, 0x74EF, 0x7575, 0x75EC, 0x764E, 0x3FB1, 0x776A,
+ 0x77A9, 0x7940, 0x7953, 0x7953, 0x9F4B, 0x79AE, 0x9083, 0x7B53, 0x7C11,
+ 0x7C14, 0x4264, 0x7C50, 0x7C58, 0x7D46, 0x7D63, 0x7E22, 0x7E22, 0x7E48,
+ 0x7E35, 0x7E43, 0x7E8C, 0x7F50, 0x7F51, 0x7F51, 0x7F51, 0x7FC5, 0x7FC6,
+ 0x7FE9, 0x8141, 0x4453, 0x8258, 0x8279, 0x2EBF, 0x2EC0, 0x82E3, 0x5179,
+ 0x83A2, 0x8420, 0x83BD, 0x84F4, 0x856D, 0x8587, 0x85F4, 0x4E55, 0x8737,
+ 0x873B, 0x8805, 0x87BD, 0x867D, 0x8836, 0x8944, 0x88C6, 0x89BD, 0x8ADB,
+ 0x8B3E, 0x8B5A, 0x8D73, 0x8D99, 0x8DCB, 0x8E34, 0x8E4A, 0x8FEF, 0x9087,
+ 0x8FFA, 0x901E, 0x9035, 0x9050, 0x8FC8, 0x9081, 0x908A, 0x908A, 0x908A,
+ 0x908A, 0x908A, 0x908A, 0x9089, 0x9089, 0x9089, 0x9089, 0x9089, 0x9089,
+ 0x9089, 0x9089, 0x9089, 0x9089, 0x9089, 0x9089, 0x92CF, 0x93DD, 0x95BC,
+ 0x9621, 0x96B2, 0x975C, 0x9839, 0x98EB, 0x9903, 0x9909, 0x9945, 0x9945,
+ 0x994B, 0x9A08, 0x9A5F, 0x9A65, 0x9AEF, 0x9B18, 0x9BDF, 0x9D09, 0x9D08,
+ 0x9EA5, 0x9ECC, 0x9F08, 0x9F4A, 0x9F63, 0x9F67, 0x9F6C, 0x7199, 0x7199,
+ 0x891C, 0x68C8, 0x66FB, 0x5F45, 0x5300, 0x5389, 0x5953, 0xFA11, 0x6852,
+ 0x6A73, 0x6D87, 0xFA15, 0x8A12, 0x4E04, 0x4E05, 0x4E1F, 0x4E2B, 0x4E2F,
+ 0x4E30, 0x4E40, 0x4E41, 0x4E44, 0x4E5A, 0x4E7F, 0x4E8D, 0x4E96, 0x4EB9,
+ 0x4ED0, 0x4EE0, 0x4EFD, 0x4EFF, 0x4F0B, 0x4F15, 0x4F60, 0x4F3B, 0x4F49,
+ 0x4F54, 0x4F7A, 0x4F7D, 0x4F7E, 0x4F97, 0x4FBE, 0x4FCF, 0x4FFD, 0x5000,
+ 0x5001, 0x5010, 0x501B, 0x5027, 0x502E, 0x5057, 0x5066, 0x506A, 0x503B,
+ 0x508F, 0x5096, 0x509C, 0x50CC, 0x50E6, 0x50E9, 0x50EF, 0x5108, 0x510B,
+ 0x5110, 0x511B, 0x511E, 0x515F, 0x51A1, 0x51BC, 0x51DE, 0x51EE, 0x51F4,
+ 0x5201, 0x5202, 0x5213, 0x5249, 0x5261, 0x5266, 0x5293, 0x52C8, 0x52F0,
+ 0x530A, 0x530B, 0x533E, 0x534C, 0x534B, 0x5361, 0x536C, 0x53AB, 0x53DA,
+ 0x53E6, 0x53F5, 0x5427, 0x544D, 0x5466, 0x546B, 0x5474, 0x548D, 0x5496,
+ 0x54A1, 0x54AD, 0x54B9, 0x54BF, 0x54C6, 0x54CD, 0x550E, 0x552B, 0x5535,
+ 0x554A, 0x5560, 0x5561, 0x5588, 0x558E, 0x5608, 0x560E, 0x560F, 0x5637,
+ 0x563F, 0x5649, 0x564B, 0x564F, 0x5666, 0x5669, 0x566F, 0x5671, 0x5672,
+ 0x5695, 0x569A, 0x56AC, 0x56AD, 0x56B1, 0x56C9, 0x56DD, 0x56E4, 0x570A,
+ 0x5715, 0x5723, 0x572F, 0x5733, 0x5734, 0x574C, 0x5770, 0x578C, 0x579C,
+ 0x57B8, 0x57E6, 0x57ED, 0x57F5, 0x57F6, 0x57FF, 0x5809, 0x5820, 0x5832,
+ 0x587C, 0x5880, 0x58A9, 0x58CE, 0x58D0, 0x58D4, 0x58DA, 0x58E9, 0x590C,
+ 0x5924, 0x592F, 0x5961, 0x596D, 0x59CA, 0x59D2, 0x59DD, 0x59E3, 0x59E4,
+ 0x5A04, 0x5A0C, 0x5A23, 0x5A47, 0x5A55, 0x5A63, 0x5A6D, 0x5A7E, 0x5A9E,
+ 0x5AA7, 0x5AAC, 0x5AB3, 0x5AE0, 0x5B00, 0x5B19, 0x5B25, 0x5B2D, 0x5B41,
+ 0x5B7C, 0x5B7E, 0x5B7F, 0x5B8A, 0x5C23, 0x5C2B, 0x5C30, 0x5C63, 0x5C69,
+ 0x5C7C, 0x5CCB, 0x5CD2, 0x5CF4, 0x5D24, 0x5D26, 0x5D43, 0x5D46, 0x5D4A,
+ 0x5D92, 0x5D94, 0x5D99, 0x5DA0, 0x5DD8, 0x5DE0, 0x5DF8, 0x5E00, 0x5E12,
+ 0x5E14, 0x5E15, 0x5E18, 0x5E2E, 0x5E58, 0x5E6B, 0x5E6C, 0x5EA8, 0x5EAA,
+ 0x5EBE, 0x5EBF, 0x5ECB, 0x5ED2, 0x5F07, 0x5F0E, 0x5F1C, 0x5F1D, 0x5F22,
+ 0x5F28, 0x5F36, 0x5F3B, 0x5F40, 0x5F50, 0x5F58, 0x5F64, 0x5F89, 0x5F9C,
+ 0x5FA7, 0x5FA4, 0x5FAF, 0x5FB8, 0x5FC4, 0x5FC9, 0x5FE1, 0x5FE9, 0x5FED,
+ 0x5FFC, 0x6017, 0x601A, 0x6033, 0x6061, 0x607F, 0x609E, 0x60A4, 0x60B0,
+ 0x60CB, 0x60DB, 0x60F8, 0x6112, 0x6113, 0x6114, 0x611C, 0x617C, 0x618D,
+ 0x619F, 0x61A8, 0x61C2, 0x61DF, 0x6215, 0x6229, 0x6243, 0x6246, 0x624C,
+ 0x6251, 0x6256, 0x62C4, 0x62FC, 0x630A, 0x630D, 0x6318, 0x6339, 0x6342,
+ 0x6343, 0x6365, 0x6374, 0x637D, 0x6384, 0x6387, 0x6390, 0x639E, 0x63D1,
+ 0x63DC, 0x6409, 0x6410, 0x6422, 0x6454, 0x645B, 0x646D, 0x647B, 0x64BE,
+ 0x64BF, 0x64E5, 0x64F7, 0x64FB, 0x6504, 0x6516, 0x6519, 0x6547, 0x6567,
+ 0x6581, 0x6585, 0x65C2, 0x65F0, 0x65F2, 0x662C, 0x664C, 0x665B, 0x665C,
+ 0x6661, 0x666B, 0x6677, 0x66A4, 0x66C8, 0x66EC, 0x6705, 0x6713, 0x6733,
+ 0x6748, 0x674C, 0x6776, 0x677B, 0x67B0, 0x67B2, 0x67F9, 0x67D7, 0x67D9,
+ 0x67F0, 0x682C, 0x6830, 0x6831, 0x685B, 0x6872, 0x6875, 0x687A, 0x6884,
+ 0x68A5, 0x68B2, 0x68D0, 0x68D6, 0x68E8, 0x68ED, 0x68F0, 0x68F1, 0x68FC,
+ 0x6911, 0x6913, 0x6935, 0x693B, 0x6957, 0x6963, 0x6972, 0x697F, 0x6980,
+ 0x69A6, 0x69AD, 0x69B7, 0x69D6, 0x69D7, 0x6A01, 0x6A0F, 0x6A15, 0x6A28,
+ 0x6A34, 0x6A3E, 0x6A45, 0x6A50, 0x6A51, 0x6A56, 0x6A5B, 0x6A83, 0x6A89,
+ 0x6A91, 0x6A9D, 0x6A9E, 0x6A9F, 0x6ADC, 0x6AE7, 0x6AEC, 0x6B1E, 0x6B24,
+ 0x6B35, 0x6B46, 0x6B56, 0x6B60, 0x6B82, 0x6BBE, 0x6BE1, 0x6BF1, 0x6C10,
+ 0x6C33, 0x6C35, 0x6C3A, 0x6C59, 0x6C76, 0x6C7B, 0x6C85, 0x6C95, 0x6C9C,
+ 0x6CD0, 0x6CD4, 0x6CD6, 0x6CE0, 0x6CEB, 0x6CEC, 0x6CEE, 0x6D0A, 0x6D0E,
+ 0x6D11, 0x6D2E, 0x6D57, 0x6D5E, 0x6D65, 0x6D82, 0x6DBF, 0x6DC4, 0x6DCA,
+ 0x6DD6, 0x6DE9, 0x6E22, 0x6E51, 0x6EC7, 0x6ECA, 0x6ECE, 0x6EFD, 0x6F1A,
+ 0x6F2A, 0x6F2F, 0x6F33, 0x6F5A, 0x6F5E, 0x6F62, 0x6F7D, 0x6F8B, 0x6F8D,
+ 0x6F92, 0x6F94, 0x6F9A, 0x6FA7, 0x6FA8, 0x6FB6, 0x6FDA, 0x6FDE, 0x6FF9,
+ 0x7039, 0x703C, 0x704A, 0x7054, 0x705D, 0x705E, 0x7064, 0x706C, 0x707E,
+ 0x7081, 0x7095, 0x70B7, 0x70D3, 0x70D4, 0x70D8, 0x70DC, 0x7107, 0x7120,
+ 0x7131, 0x714A, 0x7152, 0x7160, 0x7179, 0x7192, 0x71B3, 0x71CB, 0x71D3,
+ 0x71D6, 0x7200, 0x721D, 0x722B, 0x7238, 0x7241, 0x7253, 0x7255, 0x7256,
+ 0x725C, 0x728D, 0x72AD, 0x72B4, 0x72C7, 0x72FB, 0x7304, 0x7305, 0x7328,
+ 0x7331, 0x7343, 0x736C, 0x737C, 0x7383, 0x7385, 0x7386, 0x7395, 0x739E,
+ 0x739F, 0x73A0, 0x73A6, 0x73AB, 0x73B5, 0x73B7, 0x73BC, 0x73CF, 0x73D9,
+ 0x73E9, 0x73F4, 0x73FD, 0x7404, 0x740A, 0x741A, 0x741B, 0x7424, 0x7428,
+ 0x742C, 0x742F, 0x7430, 0x7431, 0x7439, 0x7444, 0x7447, 0x744B, 0x744D,
+ 0x7451, 0x7457, 0x7466, 0x746B, 0x7471, 0x7480, 0x7485, 0x7486, 0x7487,
+ 0x7490, 0x7498, 0x749C, 0x74A0, 0x74A3, 0x74A8, 0x74AB, 0x74B5, 0x74BF,
+ 0x74C8, 0x74DA, 0x74DE, 0x754E, 0x7579, 0x7581, 0x7590, 0x7592, 0x7593,
+ 0x75B4, 0x75E4, 0x75F9, 0x7600, 0x760A, 0x7615, 0x7616, 0x7619, 0x761E,
+ 0x762D, 0x7635, 0x7643, 0x764B, 0x7665, 0x766D, 0x766F, 0x7671, 0x7674,
+ 0x76A4, 0x76A5, 0x76C5, 0x76CC, 0x76EC, 0x76FC, 0x7734, 0x7736, 0x775C,
+ 0x775F, 0x7760, 0x7772, 0x777D, 0x7795, 0x77AA, 0x77E6, 0x77F0, 0x77F4,
+ 0x7806, 0x7822, 0x782D, 0x782E, 0x7830, 0x7835, 0x7868, 0x789E, 0x78C8,
+ 0x78CC, 0x78CE, 0x78E4, 0x78E0, 0x78E1, 0x78F2, 0x78F7, 0x78FB, 0x7931,
+ 0x7934, 0x793B, 0x793D, 0x7945, 0x795B, 0x795C, 0x798B, 0x7996, 0x7998,
+ 0x79B8, 0x79BB, 0x79CA, 0x79DA, 0x7A03, 0x7A09, 0x7A11, 0x7A1E, 0x7A2D,
+ 0x7A39, 0x7A45, 0x7A4C, 0x7A5D, 0x7A60, 0x7A6D, 0x7A78, 0x7AA0, 0x7AA3,
+ 0x7AB3, 0x7ABB, 0x7ABC, 0x7AC6, 0x7B07, 0x7B14, 0x7B27, 0x7B31, 0x7B47,
+ 0x7B4E, 0x7B60, 0x7B69, 0x7B6D, 0x7B72, 0x7B91, 0x7BAF, 0x7BD7, 0x7BD9,
+ 0x7C0B, 0x7C0F, 0x7C20, 0x7C26, 0x7C31, 0x7C36, 0x7C51, 0x7C59, 0x7C67,
+ 0x7C6E, 0x7C70, 0x7CBC, 0x7CBF, 0x7CC8, 0x7CC9, 0x7CD7, 0x7CD9, 0x7CDD,
+ 0x7CEB, 0x7D07, 0x7D08, 0x7D09, 0x7D13, 0x7D1D, 0x7D23, 0x7D41, 0x7D53,
+ 0x7D59, 0x7D5D, 0x7D7A, 0x7D86, 0x7D8B, 0x7D8C, 0x7DCC, 0x7DEB, 0x7DF1,
+ 0x7DF9, 0x7E08, 0x7E11, 0x7E15, 0x7E20, 0x7E47, 0x7E62, 0x7E6E, 0x7E73,
+ 0x7E8D, 0x7E91, 0x7E98, 0x7F44, 0x7F4F, 0x7F52, 0x7F53, 0x7F61, 0x7F91,
+ 0x7FBF, 0x7FCE, 0x7FDF, 0x7FE5, 0x7FEC, 0x7FEE, 0x7FEF, 0x7FFA, 0x800E,
+ 0x8011, 0x8014, 0x8024, 0x8026, 0x803A, 0x803C, 0x8060, 0x8071, 0x8075,
+ 0x809E, 0x80A6, 0x80AB, 0x80D7, 0x80D8, 0x8116, 0x8118, 0x813A, 0x814A,
+ 0x814C, 0x8181, 0x8184, 0x81B4, 0x81CF, 0x81F9, 0x8203, 0x8221, 0x8232,
+ 0x8234, 0x8246, 0x824B, 0x824F, 0x828E, 0x82AE, 0x82B7, 0x82BE, 0x82C6,
+ 0x82FE, 0x8343, 0x8351, 0x8355, 0x8386, 0x838D, 0x8392, 0x8398, 0x83A9,
+ 0x83BF, 0x83C0, 0x83EA, 0x840F, 0x8411, 0x844A, 0x8476, 0x84A8, 0x84AF,
+ 0x84C0, 0x84C2, 0x84F0, 0x84FD, 0x850C, 0x8534, 0x855E, 0x858F, 0x85B7,
+ 0x85CE, 0x85AD, 0x8612, 0x8629, 0x8652, 0x8663, 0x866C, 0x866F, 0x867A,
+ 0x868D, 0x8691, 0x8698, 0x86A7, 0x86A8, 0x86FA, 0x86FD, 0x870B, 0x8713,
+ 0x8719, 0x871E, 0x8728, 0x873E, 0x8771, 0x8788, 0x8799, 0x87AC, 0x87AD,
+ 0x87B5, 0x87D6, 0x87EB, 0x87ED, 0x8801, 0x8803, 0x8806, 0x880B, 0x8814,
+ 0x881C, 0x8856, 0x885F, 0x8864, 0x8898, 0x88AA, 0x88BD, 0x88BE, 0x88CA,
+ 0x88D2, 0x88DB, 0x88F0, 0x88F1, 0x8906, 0x8918, 0x8919, 0x891A, 0x8927,
+ 0x8930, 0x893E, 0x897B, 0x89D4, 0x89D6, 0x89E5, 0x89F1, 0x8A07, 0x8A0F,
+ 0x8A15, 0x8A22, 0x8A4E, 0x8A7F, 0x8AF4, 0x8B1F, 0x8B37, 0x8B43, 0x8B44,
+ 0x8B54, 0x8B9C, 0x8B9E, 0x8C47, 0x8C54, 0x8C73, 0x8CA4, 0x8CD9, 0x8CE1,
+ 0x8CF8, 0x8CFE, 0x8D1B, 0x8D69, 0x8D6C, 0x8D84, 0x8D8D, 0x8D95, 0x8DA6,
+ 0x8DC6, 0x8DCE, 0x8DE4, 0x8DEC, 0x8E20, 0x8E4B, 0x8E6C, 0x8E70, 0x8E7A,
+ 0x8E92, 0x8EAE, 0x8EB3, 0x8ED1, 0x8ED4, 0x8EF9, 0x8F17, 0x8F36, 0x8FA6,
+ 0x8FB5, 0x8FB6, 0x8FC6, 0x8FE0, 0x8FE4, 0x8FF6, 0x9002, 0x902C, 0x9044,
+ 0x9088, 0x9095, 0x9099, 0x909B, 0x90A2, 0x90B4, 0x90D7, 0x90DD, 0x90F4,
+ 0x9117, 0x911C, 0x9131, 0x913A, 0x913D, 0x9148, 0x915B, 0x9161, 0x9164,
+ 0x918E, 0x919E, 0x91A8, 0x91AD, 0x91AE, 0x91B2, 0x91BC, 0x91F0, 0x91F7,
+ 0x91FB, 0x9207, 0x9228, 0x9233, 0x9238, 0x9243, 0x9247, 0x924F, 0x9260,
+ 0x92C2, 0x92CB, 0x92CC, 0x92DF, 0x930D, 0x9315, 0x931F, 0x9327, 0x9347,
+ 0x9352, 0x9365, 0x936A, 0x936D, 0x939B, 0x93BA, 0x93A9, 0x93C1, 0x93CA,
+ 0x93E2, 0x93FA, 0x93FD, 0x940F, 0x9434, 0x943F, 0x9455, 0x946B, 0x9472,
+ 0x9578, 0x95A6, 0x95A9, 0x95AB, 0x95B4, 0x95BD, 0x95DA, 0x961D, 0x9641,
+ 0x9658, 0x9684, 0x96A4, 0x96A9, 0x96D2, 0x5DB2, 0x96DE, 0x96E9, 0x96F1,
+ 0x9702, 0x9709, 0x975A, 0x9763, 0x976E, 0x9773, 0x979A, 0x97A2, 0x97B5,
+ 0x97B6, 0x97D9, 0x97DE, 0x97F4, 0x980A, 0x980E, 0x981E, 0x9823, 0x982B,
+ 0x983E, 0x9852, 0x9853, 0x9859, 0x986C, 0x98B8, 0x98BA, 0x98BF, 0x98C8,
+ 0x98E5, 0x9932, 0x9933, 0x9940, 0x994D, 0x995C, 0x995F, 0x99B1, 0x99B9,
+ 0x99BA, 0x99C9, 0x9A02, 0x9A16, 0x9A24, 0x9A27, 0x9A2D, 0x9A2E, 0x9A36,
+ 0x9A38, 0x9A4A, 0x9A56, 0x9AB5, 0x9AB6, 0x9AF9, 0x9B03, 0x9B20, 0x9B33,
+ 0x9B34, 0x9B73, 0x9B79, 0x9BA7, 0x9BC1, 0x9BC7, 0x9BD7, 0x9BE7, 0x9BEB,
+ 0x9BF7, 0x9BFA, 0x9BFD, 0x9C0B, 0x9C27, 0x9C2A, 0x9C36, 0x9C41, 0x9C53,
+ 0x9C63, 0x9C6A, 0x9C77, 0x9D02, 0x9D42, 0x9D47, 0x9D63, 0x9D69, 0x9D7C,
+ 0x9D7E, 0x9D8D, 0x9DB1, 0x9DC3, 0x9DC7, 0x9DD6, 0x9DDF, 0x9DEB, 0x9DF4,
+ 0x9E15, 0x9E1D, 0x9EA4, 0x9EA8, 0x9EAC, 0x9EE7, 0x9EEE, 0x9F10, 0x9F12,
+ 0x9F17, 0x9F19, 0x9F2F, 0x9F37, 0x9F39, 0x9F41, 0x9F45, 0x9F57, 0x9F68,
+ 0x9F71, 0x9F75, 0x9F90, 0x9F94, 0x9FA2, 0x4E30, 0x3405, 0x4F60, 0x5620,
+ 0x5ECB, 0x2E95, 0x60A4, 0x69D7, 0x6B24, 0x6FF9, 0x6EE6, 0x71B3, 0x2EA4,
+ 0x7AC6, 0x7F61, 0x8071, 0x809E, 0x2ECC, 0x91F0, 0x5DB2, 0x97DE, 0x4FD3,
+ 0x50D9, 0x50F0, 0x51C3, 0x5676, 0x6A54, 0x6D01, 0x6DD0, 0x6E42, 0x6ED9,
+ 0x73E4, 0x7421, 0x756C, 0x7851, 0x87F5, 0xFFFD, 0x73A8, 0x3AF3, 0x34DB,
+ 0x440C, 0x3E8A, 0xFFFD, 0xFFFD, 0x4BE8, 0xFFFD, 0x3EDA, 0x3B22, 0xFFFD,
+ 0x457A, 0x4093, 0xFFFD, 0x4665, 0x4103, 0x4293, 0x46AE, 0x3488, 0xFFFD,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/EUC-H_1.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/EUC-H_1.cpp
new file mode 100644
index 0000000000..e729ebf90c
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Japan1/EUC-H_1.cpp
@@ -0,0 +1,50 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h"
+
+const FX_WORD g_FXCMAP_EUC_H_1[120 * 3] = {
+ 0x0020, 0x007E, 0x00E7, 0x8EA0, 0x8EDF, 0x0146, 0xA1A1, 0xA1FE, 0x0279,
+ 0xA2A1, 0xA2AE, 0x02D7, 0xA2BA, 0xA2C1, 0x02E5, 0xA2CA, 0xA2D0, 0x02ED,
+ 0xA2DC, 0xA2EA, 0x02F4, 0xA2F2, 0xA2F9, 0x0303, 0xA2FE, 0xA2FE, 0x030B,
+ 0xA3B0, 0xA3B9, 0x030C, 0xA3C1, 0xA3DA, 0x0316, 0xA3E1, 0xA3FA, 0x0330,
+ 0xA4A1, 0xA4F3, 0x034A, 0xA5A1, 0xA5F6, 0x039D, 0xA6A1, 0xA6B8, 0x03F3,
+ 0xA6C1, 0xA6D8, 0x040B, 0xA7A1, 0xA7C1, 0x0423, 0xA7D1, 0xA7F1, 0x0444,
+ 0xA8A1, 0xA8A1, 0x1D37, 0xA8A2, 0xA8A2, 0x1D39, 0xA8A3, 0xA8A3, 0x1D43,
+ 0xA8A4, 0xA8A4, 0x1D47, 0xA8A5, 0xA8A5, 0x1D4F, 0xA8A6, 0xA8A6, 0x1D4B,
+ 0xA8A7, 0xA8A7, 0x1D53, 0xA8A8, 0xA8A8, 0x1D63, 0xA8A9, 0xA8A9, 0x1D5B,
+ 0xA8AA, 0xA8AA, 0x1D6B, 0xA8AB, 0xA8AB, 0x1D73, 0xA8AC, 0xA8AC, 0x1D38,
+ 0xA8AD, 0xA8AD, 0x1D3A, 0xA8AE, 0xA8AE, 0x1D46, 0xA8AF, 0xA8AF, 0x1D4A,
+ 0xA8B0, 0xA8B0, 0x1D52, 0xA8B1, 0xA8B1, 0x1D4E, 0xA8B2, 0xA8B2, 0x1D5A,
+ 0xA8B3, 0xA8B3, 0x1D6A, 0xA8B4, 0xA8B4, 0x1D62, 0xA8B5, 0xA8B5, 0x1D72,
+ 0xA8B6, 0xA8B6, 0x1D82, 0xA8B7, 0xA8B7, 0x1D57, 0xA8B8, 0xA8B8, 0x1D66,
+ 0xA8B9, 0xA8B9, 0x1D5F, 0xA8BA, 0xA8BA, 0x1D6E, 0xA8BB, 0xA8BB, 0x1D76,
+ 0xA8BC, 0xA8BC, 0x1D54, 0xA8BD, 0xA8BD, 0x1D67, 0xA8BE, 0xA8BE, 0x1D5C,
+ 0xA8BF, 0xA8BF, 0x1D6F, 0xA8C0, 0xA8C0, 0x1D79, 0xB0A1, 0xB0FE, 0x0465,
+ 0xB1A1, 0xB1FE, 0x04C3, 0xB2A1, 0xB2FE, 0x0521, 0xB3A1, 0xB3FE, 0x057F,
+ 0xB4A1, 0xB4FE, 0x05DD, 0xB5A1, 0xB5FE, 0x063B, 0xB6A1, 0xB6FE, 0x0699,
+ 0xB7A1, 0xB7FE, 0x06F7, 0xB8A1, 0xB8FE, 0x0755, 0xB9A1, 0xB9FE, 0x07B3,
+ 0xBAA1, 0xBAFE, 0x0811, 0xBBA1, 0xBBFE, 0x086F, 0xBCA1, 0xBCFE, 0x08CD,
+ 0xBDA1, 0xBDFE, 0x092B, 0xBEA1, 0xBEFE, 0x0989, 0xBFA1, 0xBFFE, 0x09E7,
+ 0xC0A1, 0xC0FE, 0x0A45, 0xC1A1, 0xC1FE, 0x0AA3, 0xC2A1, 0xC2FE, 0x0B01,
+ 0xC3A1, 0xC3FE, 0x0B5F, 0xC4A1, 0xC4FE, 0x0BBD, 0xC5A1, 0xC5FE, 0x0C1B,
+ 0xC6A1, 0xC6FE, 0x0C79, 0xC7A1, 0xC7FE, 0x0CD7, 0xC8A1, 0xC8FE, 0x0D35,
+ 0xC9A1, 0xC9FE, 0x0D93, 0xCAA1, 0xCAFE, 0x0DF1, 0xCBA1, 0xCBFE, 0x0E4F,
+ 0xCCA1, 0xCCFE, 0x0EAD, 0xCDA1, 0xCDFE, 0x0F0B, 0xCEA1, 0xCEFE, 0x0F69,
+ 0xCFA1, 0xCFD3, 0x0FC7, 0xD0A1, 0xD0FE, 0x0FFA, 0xD1A1, 0xD1FE, 0x1058,
+ 0xD2A1, 0xD2FE, 0x10B6, 0xD3A1, 0xD3FE, 0x1114, 0xD4A1, 0xD4FE, 0x1172,
+ 0xD5A1, 0xD5FE, 0x11D0, 0xD6A1, 0xD6FE, 0x122E, 0xD7A1, 0xD7FE, 0x128C,
+ 0xD8A1, 0xD8FE, 0x12EA, 0xD9A1, 0xD9FE, 0x1348, 0xDAA1, 0xDAFE, 0x13A6,
+ 0xDBA1, 0xDBFE, 0x1404, 0xDCA1, 0xDCFE, 0x1462, 0xDDA1, 0xDDFE, 0x14C0,
+ 0xDEA1, 0xDEFE, 0x151E, 0xDFA1, 0xDFFE, 0x157C, 0xE0A1, 0xE0FE, 0x15DA,
+ 0xE1A1, 0xE1FE, 0x1638, 0xE2A1, 0xE2FE, 0x1696, 0xE3A1, 0xE3FE, 0x16F4,
+ 0xE4A1, 0xE4FE, 0x1752, 0xE5A1, 0xE5FE, 0x17B0, 0xE6A1, 0xE6FE, 0x180E,
+ 0xE7A1, 0xE7FE, 0x186C, 0xE8A1, 0xE8FE, 0x18CA, 0xE9A1, 0xE9FE, 0x1928,
+ 0xEAA1, 0xEAFE, 0x1986, 0xEBA1, 0xEBFE, 0x19E4, 0xECA1, 0xECFE, 0x1A42,
+ 0xEDA1, 0xEDFE, 0x1AA0, 0xEEA1, 0xEEFE, 0x1AFE, 0xEFA1, 0xEFFE, 0x1B5C,
+ 0xF0A1, 0xF0FE, 0x1BBA, 0xF1A1, 0xF1FE, 0x1C18, 0xF2A1, 0xF2FE, 0x1C76,
+ 0xF3A1, 0xF3FE, 0x1CD4, 0xF4A1, 0xF4A4, 0x1D32, 0xF4A5, 0xF4A6, 0x205C,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/EUC-V_1.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/EUC-V_1.cpp
new file mode 100644
index 0000000000..af095bc570
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Japan1/EUC-V_1.cpp
@@ -0,0 +1,19 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h"
+
+const FX_WORD g_FXCMAP_EUC_V_1[27 * 3] = {
+ 0xA1A2, 0xA1A3, 0x1ECF, 0xA1B1, 0xA1B2, 0x1ED1, 0xA1BC, 0xA1BE, 0x1ED3,
+ 0xA1C1, 0xA1C5, 0x1ED6, 0xA1CA, 0xA1DB, 0x1EDB, 0xA1E1, 0xA1E1, 0x1EED,
+ 0xA4A1, 0xA4A1, 0x1EEE, 0xA4A3, 0xA4A3, 0x1EEF, 0xA4A5, 0xA4A5, 0x1EF0,
+ 0xA4A7, 0xA4A7, 0x1EF1, 0xA4A9, 0xA4A9, 0x1EF2, 0xA4C3, 0xA4C3, 0x1EF3,
+ 0xA4E3, 0xA4E3, 0x1EF4, 0xA4E5, 0xA4E5, 0x1EF5, 0xA4E7, 0xA4E7, 0x1EF6,
+ 0xA4EE, 0xA4EE, 0x1EF7, 0xA5A1, 0xA5A1, 0x1EF8, 0xA5A3, 0xA5A3, 0x1EF9,
+ 0xA5A5, 0xA5A5, 0x1EFA, 0xA5A7, 0xA5A7, 0x1EFB, 0xA5A9, 0xA5A9, 0x1EFC,
+ 0xA5C3, 0xA5C3, 0x1EFD, 0xA5E3, 0xA5E3, 0x1EFE, 0xA5E5, 0xA5E5, 0x1EFF,
+ 0xA5E7, 0xA5E7, 0x1F00, 0xA5EE, 0xA5EE, 0x1F01, 0xA5F5, 0xA5F6, 0x1F02,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-H_2.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-H_2.cpp
new file mode 100644
index 0000000000..f4399cbdea
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-H_2.cpp
@@ -0,0 +1,232 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h"
+
+const FX_WORD g_FXCMAP_Ext_RKSJ_H_2[665 * 3] = {
+ 0x0020, 0x007E, 0x00E7, 0x00A0, 0x00DF, 0x0146, 0x8140, 0x817E, 0x0279,
+ 0x8180, 0x8188, 0x02B8, 0x8189, 0x8189, 0x1D36, 0x818A, 0x81AC, 0x02C2,
+ 0x824F, 0x8258, 0x030C, 0x8260, 0x8279, 0x0316, 0x8281, 0x829A, 0x0330,
+ 0x829F, 0x82F1, 0x034A, 0x8340, 0x837E, 0x039D, 0x8380, 0x8396, 0x03DC,
+ 0x839F, 0x83B6, 0x03F3, 0x83BF, 0x83D6, 0x040B, 0x8440, 0x8460, 0x0423,
+ 0x8470, 0x847E, 0x0444, 0x8480, 0x8491, 0x0453, 0x8540, 0x857E, 0x00E8,
+ 0x8580, 0x8580, 0x0186, 0x8581, 0x859E, 0x0128, 0x859F, 0x85DD, 0x0147,
+ 0x85DE, 0x85FC, 0x0187, 0x8640, 0x867E, 0x01A6, 0x8680, 0x8691, 0x01E5,
+ 0x8692, 0x8692, 0x0127, 0x8693, 0x869E, 0x01F7, 0x86A2, 0x86ED, 0x1D37,
+ 0x8740, 0x875D, 0x1D83, 0x875F, 0x8775, 0x1DA1, 0x877E, 0x877E, 0x2083,
+ 0x8780, 0x878F, 0x1DB8, 0x8790, 0x8790, 0x02FA, 0x8791, 0x8791, 0x02F9,
+ 0x8792, 0x8792, 0x0301, 0x8793, 0x8799, 0x1DC8, 0x879A, 0x879A, 0x0300,
+ 0x879B, 0x879C, 0x1DCF, 0x889F, 0x889F, 0x0465, 0x88A0, 0x88A0, 0x1DD1,
+ 0x88A1, 0x88B0, 0x0467, 0x88B1, 0x88B1, 0x1CA2, 0x88B2, 0x88B8, 0x0478,
+ 0x88B9, 0x88B9, 0x1DD2, 0x88BA, 0x88EB, 0x0480, 0x88EC, 0x88EC, 0x1DD3,
+ 0x88ED, 0x88F0, 0x04B3, 0x88F1, 0x88F1, 0x1DD4, 0x88F2, 0x88F9, 0x04B8,
+ 0x88FA, 0x88FA, 0x1DD5, 0x88FB, 0x88FC, 0x04C1, 0x8940, 0x8948, 0x04C3,
+ 0x8949, 0x8949, 0x1DD6, 0x894A, 0x8953, 0x04CD, 0x8954, 0x8954, 0x1DD7,
+ 0x8955, 0x8957, 0x04D8, 0x8958, 0x8958, 0x1DD8, 0x8959, 0x895A, 0x04DC,
+ 0x895B, 0x895C, 0x1DD9, 0x895D, 0x8960, 0x04E0, 0x8961, 0x8961, 0x1DDB,
+ 0x8962, 0x897E, 0x04E5, 0x8980, 0x898A, 0x0502, 0x898B, 0x898B, 0x1DDC,
+ 0x898C, 0x89A5, 0x050E, 0x89A6, 0x89A6, 0x1DDD, 0x89A7, 0x89A7, 0x1CC9,
+ 0x89A8, 0x89A8, 0x1DDE, 0x89A9, 0x89DD, 0x052B, 0x89DE, 0x89DE, 0x1DDF,
+ 0x89DF, 0x89F7, 0x0561, 0x89F8, 0x89F8, 0x1DE0, 0x89F9, 0x89FA, 0x057B,
+ 0x89FB, 0x89FB, 0x1DE1, 0x89FC, 0x89FC, 0x057E, 0x8A40, 0x8A40, 0x057F,
+ 0x8A41, 0x8A41, 0x1DE2, 0x8A42, 0x8A60, 0x0581, 0x8A61, 0x8A61, 0x1961,
+ 0x8A62, 0x8A67, 0x05A1, 0x8A68, 0x8A68, 0x139F, 0x8A69, 0x8A7E, 0x05A8,
+ 0x8A80, 0x8A84, 0x05BE, 0x8A85, 0x8A85, 0x1DE3, 0x8A86, 0x8A8A, 0x05C4,
+ 0x8A8B, 0x8A8B, 0x1DE4, 0x8A8C, 0x8A92, 0x05CA, 0x8A93, 0x8A93, 0x1DE5,
+ 0x8A94, 0x8A95, 0x05D2, 0x8A96, 0x8A96, 0x1731, 0x8A97, 0x8A99, 0x05D5,
+ 0x8A9A, 0x8A9A, 0x1DE6, 0x8A9B, 0x8ABF, 0x05D9, 0x8AC0, 0x8AC0, 0x1DE7,
+ 0x8AC1, 0x8AC1, 0x1572, 0x8AC2, 0x8ACA, 0x0600, 0x8ACB, 0x8ACB, 0x1DE8,
+ 0x8ACC, 0x8ACF, 0x060A, 0x8AD0, 0x8AD0, 0x1A20, 0x8AD1, 0x8AE2, 0x060F,
+ 0x8AE3, 0x8AE3, 0x1DE9, 0x8AE4, 0x8AFC, 0x0622, 0x8B40, 0x8B49, 0x063B,
+ 0x8B4A, 0x8B4A, 0x1DEA, 0x8B4B, 0x8B5E, 0x0646, 0x8B5F, 0x8B5F, 0x1DEB,
+ 0x8B60, 0x8B7E, 0x065B, 0x8B80, 0x8B9F, 0x067A, 0x8BA0, 0x8BA0, 0x1DEC,
+ 0x8BA1, 0x8BA7, 0x069B, 0x8BA8, 0x8BA8, 0x1DED, 0x8BA9, 0x8BC3, 0x06A3,
+ 0x8BC4, 0x8BC4, 0x1D32, 0x8BC5, 0x8BCC, 0x06BF, 0x8BCD, 0x8BCD, 0x1DEE,
+ 0x8BCE, 0x8BEA, 0x06C8, 0x8BEB, 0x8BEB, 0x1DEF, 0x8BEC, 0x8BF1, 0x06E6,
+ 0x8BF2, 0x8BF2, 0x1DF0, 0x8BF3, 0x8BF8, 0x06ED, 0x8BF9, 0x8BF9, 0x1DF1,
+ 0x8BFA, 0x8BFA, 0x06F4, 0x8BFB, 0x8BFB, 0x1DF2, 0x8BFC, 0x8BFC, 0x06F6,
+ 0x8C40, 0x8C42, 0x06F7, 0x8C43, 0x8C43, 0x1DF3, 0x8C44, 0x8C55, 0x06FB,
+ 0x8C56, 0x8C56, 0x1DF4, 0x8C57, 0x8C63, 0x070E, 0x8C64, 0x8C64, 0x1DF5,
+ 0x8C65, 0x8C6C, 0x071C, 0x8C6D, 0x8C6D, 0x1DF6, 0x8C6E, 0x8C70, 0x0725,
+ 0x8C71, 0x8C71, 0x1DF7, 0x8C72, 0x8C73, 0x0729, 0x8C74, 0x8C74, 0x1DF8,
+ 0x8C75, 0x8C79, 0x072C, 0x8C7A, 0x8C7A, 0x1C0D, 0x8C7B, 0x8C7E, 0x0732,
+ 0x8C80, 0x8C83, 0x0736, 0x8C84, 0x8C84, 0x1DF9, 0x8C85, 0x8C90, 0x073B,
+ 0x8C91, 0x8C91, 0x1DFA, 0x8C92, 0x8C98, 0x0748, 0x8C99, 0x8C99, 0x1DFB,
+ 0x8C9A, 0x8C9D, 0x0750, 0x8C9E, 0x8C9E, 0x1DFC, 0x8C9F, 0x8CB1, 0x0755,
+ 0x8CB2, 0x8CB2, 0x1DFD, 0x8CB3, 0x8CBE, 0x0769, 0x8CBF, 0x8CBF, 0x1DFE,
+ 0x8CC0, 0x8CFC, 0x0776, 0x8D40, 0x8D49, 0x07B3, 0x8D4A, 0x8D4A, 0x1DFF,
+ 0x8D4B, 0x8D55, 0x07BE, 0x8D56, 0x8D56, 0x1E00, 0x8D57, 0x8D60, 0x07CA,
+ 0x8D61, 0x8D61, 0x1E01, 0x8D62, 0x8D7A, 0x07D5, 0x8D7B, 0x8D7B, 0x16DD,
+ 0x8D7C, 0x8D7E, 0x07EF, 0x8D80, 0x8D8C, 0x07F2, 0x8D8D, 0x8D8D, 0x1E02,
+ 0x8D8E, 0x8D93, 0x0800, 0x8D94, 0x8D94, 0x1E03, 0x8D95, 0x8D98, 0x0807,
+ 0x8D99, 0x8D99, 0x1E04, 0x8D9A, 0x8DD0, 0x080C, 0x8DD1, 0x8DD1, 0x1E05,
+ 0x8DD2, 0x8DE4, 0x0844, 0x8DE5, 0x8DE5, 0x1E06, 0x8DE6, 0x8DF1, 0x0858,
+ 0x8DF2, 0x8DF2, 0x1E07, 0x8DF3, 0x8DFC, 0x0865, 0x8E40, 0x8E45, 0x086F,
+ 0x8E46, 0x8E46, 0x1E08, 0x8E47, 0x8E48, 0x0876, 0x8E49, 0x8E49, 0x1E09,
+ 0x8E4A, 0x8E4A, 0x0879, 0x8E4B, 0x8E4B, 0x1E0A, 0x8E4C, 0x8E57, 0x087B,
+ 0x8E58, 0x8E58, 0x1E0B, 0x8E59, 0x8E7E, 0x0888, 0x8E80, 0x8EB5, 0x08AE,
+ 0x8EB6, 0x8EB6, 0x1E0C, 0x8EB7, 0x8EC5, 0x08E5, 0x8EC6, 0x8EC6, 0x1E0D,
+ 0x8EC7, 0x8EC7, 0x1929, 0x8EC8, 0x8ED4, 0x08F6, 0x8ED5, 0x8ED5, 0x1E0E,
+ 0x8ED6, 0x8EDA, 0x0904, 0x8EDB, 0x8EDC, 0x1E0F, 0x8EDD, 0x8EFC, 0x090B,
+ 0x8F40, 0x8F49, 0x092B, 0x8F4A, 0x8F4A, 0x1E11, 0x8F4B, 0x8F54, 0x0936,
+ 0x8F55, 0x8F55, 0x1E12, 0x8F56, 0x8F7E, 0x0941, 0x8F80, 0x8F8B, 0x096A,
+ 0x8F8C, 0x8F8D, 0x1E13, 0x8F8E, 0x8F91, 0x0978, 0x8F92, 0x8F93, 0x1E15,
+ 0x8F94, 0x8FA2, 0x097E, 0x8FA3, 0x8FA3, 0x1E17, 0x8FA4, 0x8FB0, 0x098E,
+ 0x8FB1, 0x8FB1, 0x1E18, 0x8FB2, 0x8FBC, 0x099C, 0x8FBD, 0x8FBD, 0x1E19,
+ 0x8FBE, 0x8FD2, 0x09A8, 0x8FD3, 0x8FD3, 0x1E1A, 0x8FD4, 0x8FDC, 0x09BE,
+ 0x8FDD, 0x8FDD, 0x1E1B, 0x8FDE, 0x8FE1, 0x09C8, 0x8FE2, 0x8FE2, 0x1E1C,
+ 0x8FE3, 0x8FFC, 0x09CD, 0x9040, 0x9048, 0x09E7, 0x9049, 0x9049, 0x1E1D,
+ 0x904A, 0x9077, 0x09F1, 0x9078, 0x9078, 0x1E1E, 0x9079, 0x907E, 0x0A20,
+ 0x9080, 0x9080, 0x1E1F, 0x9081, 0x9088, 0x0A27, 0x9089, 0x9089, 0x1E20,
+ 0x908A, 0x909F, 0x0A30, 0x90A0, 0x90A0, 0x1E21, 0x90A1, 0x90BF, 0x0A47,
+ 0x90C0, 0x90C0, 0x1E22, 0x90C1, 0x90E3, 0x0A67, 0x90E4, 0x90E4, 0x1E23,
+ 0x90E5, 0x90EE, 0x0A8B, 0x90EF, 0x90F0, 0x1E24, 0x90F1, 0x90F6, 0x0A97,
+ 0x90F7, 0x90F8, 0x1E26, 0x90F9, 0x90FC, 0x0A9F, 0x9140, 0x9145, 0x0AA3,
+ 0x9146, 0x9146, 0x1E28, 0x9147, 0x9147, 0x1A6E, 0x9148, 0x9157, 0x0AAB,
+ 0x9158, 0x9158, 0x1E29, 0x9159, 0x916A, 0x0ABC, 0x916B, 0x916B, 0x1E2A,
+ 0x916C, 0x916D, 0x0ACF, 0x916E, 0x916E, 0x1E2B, 0x916F, 0x917D, 0x0AD2,
+ 0x917E, 0x917E, 0x1E2C, 0x9180, 0x9188, 0x0AE2, 0x9189, 0x9189, 0x1E2D,
+ 0x918A, 0x91BA, 0x0AEC, 0x91BB, 0x91BB, 0x1E2E, 0x91BC, 0x91CA, 0x0B1E,
+ 0x91CB, 0x91CB, 0x1E2F, 0x91CC, 0x91D9, 0x0B2E, 0x91DA, 0x91DA, 0x1E30,
+ 0x91DB, 0x91E0, 0x0B3D, 0x91E1, 0x91E1, 0x1E31, 0x91E2, 0x91EC, 0x0B44,
+ 0x91ED, 0x91ED, 0x1E32, 0x91EE, 0x91F2, 0x0B50, 0x91F3, 0x91F4, 0x1E33,
+ 0x91F5, 0x91FA, 0x0B57, 0x91FB, 0x91FB, 0x1E35, 0x91FC, 0x91FC, 0x0B5E,
+ 0x9240, 0x9245, 0x0B5F, 0x9246, 0x9246, 0x1E36, 0x9247, 0x9247, 0x0B66,
+ 0x9248, 0x9249, 0x1E37, 0x924A, 0x924B, 0x0B69, 0x924C, 0x924D, 0x1E39,
+ 0x924E, 0x925B, 0x0B6D, 0x925C, 0x925C, 0x1E3B, 0x925D, 0x927E, 0x0B7C,
+ 0x9280, 0x928F, 0x0B9E, 0x9290, 0x9290, 0x1E3C, 0x9291, 0x9294, 0x0BAF,
+ 0x9295, 0x9295, 0x1E3D, 0x9296, 0x929B, 0x0BB4, 0x929C, 0x929C, 0x1E3E,
+ 0x929D, 0x92BA, 0x0BBB, 0x92BB, 0x92BB, 0x1E3F, 0x92BC, 0x92C5, 0x0BDA,
+ 0x92C6, 0x92C6, 0x1E40, 0x92C7, 0x92C7, 0x0BE5, 0x92C8, 0x92C8, 0x1E41,
+ 0x92C9, 0x92CA, 0x0BE7, 0x92CB, 0x92CB, 0x1E42, 0x92CC, 0x92CC, 0x0BEA,
+ 0x92CD, 0x92CD, 0x1E43, 0x92CE, 0x92D8, 0x0BEC, 0x92D9, 0x92D9, 0x11B5,
+ 0x92DA, 0x92FC, 0x0BF8, 0x9340, 0x9340, 0x0C1B, 0x9341, 0x9341, 0x1E44,
+ 0x9342, 0x9345, 0x0C1D, 0x9346, 0x9346, 0x1E45, 0x9347, 0x934C, 0x0C22,
+ 0x934D, 0x934D, 0x1E46, 0x934E, 0x9354, 0x0C29, 0x9355, 0x9355, 0x1E47,
+ 0x9356, 0x935D, 0x0C31, 0x935E, 0x935E, 0x1E48, 0x935F, 0x9366, 0x0C3A,
+ 0x9367, 0x9367, 0x1E49, 0x9368, 0x9369, 0x0C43, 0x936A, 0x936A, 0x1E4A,
+ 0x936B, 0x936F, 0x0C46, 0x9370, 0x9371, 0x1E4B, 0x9372, 0x9375, 0x0C4D,
+ 0x9376, 0x9376, 0x16DF, 0x9377, 0x937E, 0x0C52, 0x9380, 0x9383, 0x0C5A,
+ 0x9384, 0x9384, 0x1E4D, 0x9385, 0x938D, 0x0C5F, 0x938E, 0x938E, 0x1450,
+ 0x938F, 0x9392, 0x0C69, 0x9393, 0x9393, 0x1536, 0x9394, 0x9397, 0x0C6E,
+ 0x9398, 0x9398, 0x1E4E, 0x9399, 0x93BB, 0x0C73, 0x93BC, 0x93BC, 0x1E4F,
+ 0x93BD, 0x93BF, 0x0C97, 0x93C0, 0x93C0, 0x1E50, 0x93C1, 0x93D1, 0x0C9B,
+ 0x93D2, 0x93D3, 0x1E51, 0x93D4, 0x93D8, 0x0CAE, 0x93D9, 0x93DA, 0x1E53,
+ 0x93DB, 0x93DE, 0x0CB5, 0x93DF, 0x93DF, 0x1E55, 0x93E0, 0x93E3, 0x0CBA,
+ 0x93E4, 0x93E5, 0x1E56, 0x93E6, 0x93E7, 0x0CC0, 0x93E8, 0x93E8, 0x1E58,
+ 0x93E9, 0x93F3, 0x0CC3, 0x93F4, 0x93F4, 0x1AED, 0x93F5, 0x93FC, 0x0CCF,
+ 0x9440, 0x9447, 0x0CD7, 0x9448, 0x9448, 0x1E59, 0x9449, 0x9457, 0x0CE0,
+ 0x9458, 0x9458, 0x1E5A, 0x9459, 0x9475, 0x0CF0, 0x9476, 0x9476, 0x1E5B,
+ 0x9477, 0x947E, 0x0D0E, 0x9480, 0x9486, 0x0D16, 0x9487, 0x9487, 0x1E5C,
+ 0x9488, 0x9488, 0x1989, 0x9489, 0x9489, 0x1E5D, 0x948A, 0x948C, 0x0D20,
+ 0x948D, 0x948D, 0x1E5E, 0x948E, 0x94A1, 0x0D24, 0x94A2, 0x94A2, 0x1E5F,
+ 0x94A3, 0x94AB, 0x0D39, 0x94AC, 0x94AC, 0x1E60, 0x94AD, 0x94AD, 0x0D43,
+ 0x94AE, 0x94AE, 0x1E61, 0x94AF, 0x94D1, 0x0D45, 0x94D2, 0x94D2, 0x1E62,
+ 0x94D3, 0x94DF, 0x0D69, 0x94E0, 0x94E0, 0x1E63, 0x94E1, 0x94F2, 0x0D77,
+ 0x94F3, 0x94F3, 0x1E64, 0x94F4, 0x94FC, 0x0D8A, 0x9540, 0x9540, 0x0D93,
+ 0x9541, 0x9542, 0x1E65, 0x9543, 0x954D, 0x0D96, 0x954E, 0x954E, 0x1E67,
+ 0x954F, 0x954F, 0x143B, 0x9550, 0x9550, 0x0DA3, 0x9551, 0x9551, 0x1E68,
+ 0x9552, 0x9553, 0x0DA5, 0x9554, 0x9554, 0x1E69, 0x9555, 0x955E, 0x0DA8,
+ 0x955F, 0x955F, 0x1E6A, 0x9560, 0x956C, 0x0DB3, 0x956D, 0x956D, 0x1E6B,
+ 0x956E, 0x956F, 0x0DC1, 0x9570, 0x9570, 0x1E6C, 0x9571, 0x957E, 0x0DC4,
+ 0x9580, 0x95C0, 0x0DD2, 0x95C1, 0x95C1, 0x1E6D, 0x95C2, 0x95CA, 0x0E14,
+ 0x95CB, 0x95CB, 0x1E6E, 0x95CC, 0x95D7, 0x0E1E, 0x95D8, 0x95D8, 0x1E6F,
+ 0x95D9, 0x95F6, 0x0E2B, 0x95F7, 0x95F7, 0x1E70, 0x95F8, 0x95FC, 0x0E4A,
+ 0x9640, 0x9640, 0x0E4F, 0x9641, 0x9641, 0x1E71, 0x9642, 0x9647, 0x0E51,
+ 0x9648, 0x9648, 0x1E72, 0x9649, 0x9669, 0x0E58, 0x966A, 0x966A, 0x1E73,
+ 0x966B, 0x967E, 0x0E7A, 0x9680, 0x9689, 0x0E8E, 0x968A, 0x968A, 0x1D33,
+ 0x968B, 0x968F, 0x0E99, 0x9690, 0x9690, 0x1E74, 0x9691, 0x9698, 0x0E9F,
+ 0x9699, 0x9699, 0x102F, 0x969A, 0x96CA, 0x0EA8, 0x96CB, 0x96CB, 0x1E75,
+ 0x96CC, 0x96D6, 0x0EDA, 0x96D7, 0x96D7, 0x1E76, 0x96D8, 0x96DC, 0x0EE6,
+ 0x96DD, 0x96DD, 0x1E77, 0x96DE, 0x96DF, 0x0EEC, 0x96E0, 0x96E0, 0x1E78,
+ 0x96E1, 0x96F6, 0x0EEF, 0x96F7, 0x96F7, 0x1935, 0x96F8, 0x96F8, 0x1E79,
+ 0x96F9, 0x96F9, 0x0F07, 0x96FA, 0x96FA, 0x1E7A, 0x96FB, 0x96FB, 0x0F09,
+ 0x96FC, 0x96FC, 0x1E7B, 0x9740, 0x9750, 0x0F0B, 0x9751, 0x9751, 0x1E7C,
+ 0x9752, 0x976E, 0x0F1D, 0x976F, 0x976F, 0x1E7D, 0x9770, 0x9772, 0x0F3B,
+ 0x9773, 0x9773, 0x1E7E, 0x9774, 0x9778, 0x0F3F, 0x9779, 0x9779, 0x1D34,
+ 0x977A, 0x977E, 0x0F45, 0x9780, 0x9788, 0x0F4A, 0x9789, 0x9789, 0x1E7F,
+ 0x978A, 0x97C8, 0x0F54, 0x97C9, 0x97C9, 0x1E80, 0x97CA, 0x97F7, 0x0F94,
+ 0x97F8, 0x97F9, 0x1E81, 0x97FA, 0x97FC, 0x0FC4, 0x9840, 0x9840, 0x1E83,
+ 0x9841, 0x984F, 0x0FC8, 0x9850, 0x9850, 0x1E84, 0x9851, 0x9854, 0x0FD8,
+ 0x9855, 0x9855, 0x1777, 0x9856, 0x9857, 0x0FDD, 0x9858, 0x9858, 0x1E85,
+ 0x9859, 0x9872, 0x0FE0, 0x989F, 0x98D3, 0x0FFA, 0x98D4, 0x98D4, 0x0EA7,
+ 0x98D5, 0x98FC, 0x1030, 0x9940, 0x995B, 0x1058, 0x995C, 0x995C, 0x1E86,
+ 0x995D, 0x9965, 0x1075, 0x9966, 0x9966, 0x1E87, 0x9967, 0x9969, 0x107F,
+ 0x996A, 0x996A, 0x1E88, 0x996B, 0x996B, 0x1083, 0x996C, 0x996C, 0x1E89,
+ 0x996D, 0x997E, 0x1085, 0x9980, 0x99FC, 0x1097, 0x9A40, 0x9A4E, 0x1114,
+ 0x9A4F, 0x9A4F, 0x1E8A, 0x9A50, 0x9A58, 0x1124, 0x9A59, 0x9A59, 0x1E8B,
+ 0x9A5A, 0x9A6E, 0x112E, 0x9A6F, 0x9A6F, 0x1E8C, 0x9A70, 0x9A7C, 0x1144,
+ 0x9A7D, 0x9A7D, 0x1E8D, 0x9A7E, 0x9A7E, 0x1152, 0x9A80, 0x9A8A, 0x1153,
+ 0x9A8B, 0x9A8B, 0x1E8E, 0x9A8C, 0x9AC1, 0x115F, 0x9AC2, 0x9AC2, 0x1E8F,
+ 0x9AC3, 0x9AE1, 0x1196, 0x9AE2, 0x9AE2, 0x0BF7, 0x9AE3, 0x9AFC, 0x11B6,
+ 0x9B40, 0x9B5B, 0x11D0, 0x9B5C, 0x9B5C, 0x1E90, 0x9B5D, 0x9B7E, 0x11ED,
+ 0x9B80, 0x9B82, 0x120F, 0x9B83, 0x9B83, 0x1E91, 0x9B84, 0x9B9F, 0x1213,
+ 0x9BA0, 0x9BA0, 0x1E92, 0x9BA1, 0x9BEF, 0x1230, 0x9BF0, 0x9BF0, 0x1E93,
+ 0x9BF1, 0x9BFC, 0x1280, 0x9C40, 0x9C7E, 0x128C, 0x9C80, 0x9CA1, 0x12CB,
+ 0x9CA2, 0x9CA2, 0x1E94, 0x9CA3, 0x9CFC, 0x12EE, 0x9D40, 0x9D7E, 0x1348,
+ 0x9D80, 0x9D80, 0x1E95, 0x9D81, 0x9D8B, 0x1388, 0x9D8C, 0x9D8C, 0x1E96,
+ 0x9D8D, 0x9D97, 0x1394, 0x9D98, 0x9D98, 0x05A7, 0x9D99, 0x9DB6, 0x13A0,
+ 0x9DB7, 0x9DB7, 0x1E97, 0x9DB8, 0x9DCA, 0x13BF, 0x9DCB, 0x9DCB, 0x1E98,
+ 0x9DCC, 0x9DFC, 0x13D3, 0x9E40, 0x9E63, 0x1404, 0x9E64, 0x9E64, 0x1E99,
+ 0x9E65, 0x9E68, 0x1429, 0x9E69, 0x9E69, 0x1E9A, 0x9E6A, 0x9E76, 0x142E,
+ 0x9E77, 0x9E77, 0x0DA2, 0x9E78, 0x9E7E, 0x143C, 0x9E80, 0x9E8A, 0x1443,
+ 0x9E8B, 0x9E8B, 0x1E9B, 0x9E8C, 0x9E8C, 0x144F, 0x9E8D, 0x9E8D, 0x0C68,
+ 0x9E8E, 0x9E93, 0x1451, 0x9E94, 0x9E94, 0x1E9C, 0x9E95, 0x9EFC, 0x1458,
+ 0x9F40, 0x9F7E, 0x14C0, 0x9F80, 0x9FB6, 0x14FF, 0x9FB7, 0x9FB7, 0x0C6D,
+ 0x9FB8, 0x9FCD, 0x1537, 0x9FCE, 0x9FCE, 0x1E9D, 0x9FCF, 0x9FF2, 0x154E,
+ 0x9FF3, 0x9FF3, 0x05FF, 0x9FF4, 0x9FFC, 0x1573, 0xE040, 0xE07E, 0x157C,
+ 0xE080, 0xE092, 0x15BB, 0xE093, 0xE093, 0x1E9E, 0xE094, 0xE0A3, 0x15CF,
+ 0xE0A4, 0xE0A4, 0x1E9F, 0xE0A5, 0xE0DC, 0x15E0, 0xE0DD, 0xE0DD, 0x1EA0,
+ 0xE0DE, 0xE0F3, 0x1619, 0xE0F4, 0xE0F4, 0x1D35, 0xE0F5, 0xE0FC, 0x1630,
+ 0xE140, 0xE149, 0x1638, 0xE14A, 0xE14A, 0x1EA1, 0xE14B, 0xE14E, 0x1643,
+ 0xE14F, 0xE150, 0x1EA2, 0xE151, 0xE17E, 0x1649, 0xE180, 0xE1A8, 0x1677,
+ 0xE1A9, 0xE1A9, 0x1EA4, 0xE1AA, 0xE1E5, 0x16A1, 0xE1E6, 0xE1E6, 0x07EE,
+ 0xE1E7, 0xE1E7, 0x16DE, 0xE1E8, 0xE1E8, 0x0C51, 0xE1E9, 0xE1EC, 0x16E0,
+ 0xE1ED, 0xE1ED, 0x1EA5, 0xE1EE, 0xE1FC, 0x16E5, 0xE240, 0xE268, 0x16F4,
+ 0xE269, 0xE269, 0x1EA6, 0xE26A, 0xE272, 0x171E, 0xE273, 0xE273, 0x1EA7,
+ 0xE274, 0xE27C, 0x1728, 0xE27D, 0xE27D, 0x05D4, 0xE27E, 0xE27E, 0x1732,
+ 0xE280, 0xE2B6, 0x1733, 0xE2B7, 0xE2B7, 0x1EA8, 0xE2B8, 0xE2C3, 0x176B,
+ 0xE2C4, 0xE2C4, 0x0FDC, 0xE2C5, 0xE2E1, 0x1778, 0xE2E2, 0xE2E2, 0x1EA9,
+ 0xE2E3, 0xE2EB, 0x1796, 0xE2EC, 0xE2EC, 0x1EAA, 0xE2ED, 0xE2FC, 0x17A0,
+ 0xE340, 0xE357, 0x17B0, 0xE358, 0xE358, 0x1EAB, 0xE359, 0xE359, 0x17C9,
+ 0xE35A, 0xE35A, 0x1EAC, 0xE35B, 0xE364, 0x17CB, 0xE365, 0xE365, 0x1EAD,
+ 0xE366, 0xE37E, 0x17D6, 0xE380, 0xE3C3, 0x17EF, 0xE3C4, 0xE3C4, 0x1EAE,
+ 0xE3C5, 0xE3FC, 0x1834, 0xE440, 0xE47E, 0x186C, 0xE480, 0xE483, 0x18AB,
+ 0xE484, 0xE484, 0x1EAF, 0xE485, 0xE488, 0x18B0, 0xE489, 0xE489, 0x1EB0,
+ 0xE48A, 0xE491, 0x18B5, 0xE492, 0xE492, 0x1EB1, 0xE493, 0xE4B1, 0x18BE,
+ 0xE4B2, 0xE4B2, 0x1EB2, 0xE4B3, 0xE4B8, 0x18DE, 0xE4B9, 0xE4B9, 0x1EB3,
+ 0xE4BA, 0xE4F1, 0x18E5, 0xE4F2, 0xE4F2, 0x1EB4, 0xE4F3, 0xE4FC, 0x191E,
+ 0xE540, 0xE540, 0x1928, 0xE541, 0xE541, 0x08F5, 0xE542, 0xE54C, 0x192A,
+ 0xE54D, 0xE54D, 0x0F05, 0xE54E, 0xE55A, 0x1936, 0xE55B, 0xE55B, 0x1EB5,
+ 0xE55C, 0xE578, 0x1944, 0xE579, 0xE579, 0x05A0, 0xE57A, 0xE57E, 0x1962,
+ 0xE580, 0xE5A1, 0x1967, 0xE5A2, 0xE5A2, 0x0D1E, 0xE5A3, 0xE5A4, 0x198A,
+ 0xE5A5, 0xE5A5, 0x1EB6, 0xE5A6, 0xE5BA, 0x198D, 0xE5BB, 0xE5BB, 0x1EB7,
+ 0xE5BC, 0xE5EC, 0x19A3, 0xE5ED, 0xE5ED, 0x1EB8, 0xE5EE, 0xE5FC, 0x19D5,
+ 0xE640, 0xE650, 0x19E4, 0xE651, 0xE651, 0x1EB9, 0xE652, 0xE67B, 0x19F6,
+ 0xE67C, 0xE67C, 0x060E, 0xE67D, 0xE67E, 0x1A21, 0xE680, 0xE685, 0x1A23,
+ 0xE686, 0xE686, 0x1EBA, 0xE687, 0xE695, 0x1A2A, 0xE696, 0xE696, 0x1EBB,
+ 0xE697, 0xE6CA, 0x1A3A, 0xE6CB, 0xE6CB, 0x0AAA, 0xE6CC, 0xE6E6, 0x1A6F,
+ 0xE6E7, 0xE6E7, 0x1EBC, 0xE6E8, 0xE6F1, 0x1A8B, 0xE6F2, 0xE6F2, 0x1EBD,
+ 0xE6F3, 0xE6FC, 0x1A96, 0xE740, 0xE76C, 0x1AA0, 0xE76D, 0xE76D, 0x1EBE,
+ 0xE76E, 0xE77E, 0x1ACE, 0xE780, 0xE78B, 0x1ADF, 0xE78C, 0xE78C, 0x1EBF,
+ 0xE78D, 0xE78D, 0x1AEC, 0xE78E, 0xE78E, 0x1EC0, 0xE78F, 0xE7A6, 0x1AEE,
+ 0xE7A7, 0xE7A7, 0x1EC1, 0xE7A8, 0xE7BA, 0x1B07, 0xE7BB, 0xE7BB, 0x1EC2,
+ 0xE7BC, 0xE7D4, 0x1B1B, 0xE7D5, 0xE7D5, 0x1EC3, 0xE7D6, 0xE7FC, 0x1B35,
+ 0xE840, 0xE87E, 0x1B5C, 0xE880, 0xE884, 0x1B9B, 0xE885, 0xE885, 0x1EC4,
+ 0xE886, 0xE8B0, 0x1BA1, 0xE8B1, 0xE8B1, 0x1EC5, 0xE8B2, 0xE8C2, 0x1BCD,
+ 0xE8C3, 0xE8C3, 0x1EC6, 0xE8C4, 0xE8CE, 0x1BDF, 0xE8CF, 0xE8CF, 0x1EC7,
+ 0xE8D0, 0xE8D4, 0x1BEB, 0xE8D5, 0xE8D5, 0x1EC8, 0xE8D6, 0xE8F1, 0x1BF1,
+ 0xE8F2, 0xE8F2, 0x0731, 0xE8F3, 0xE8F3, 0x1EC9, 0xE8F4, 0xE8FC, 0x1C0F,
+ 0xE940, 0xE97E, 0x1C18, 0xE980, 0xE9AA, 0x1C57, 0xE9AB, 0xE9AB, 0x1ECA,
+ 0xE9AC, 0xE9B9, 0x1C83, 0xE9BA, 0xE9BA, 0x1ECB, 0xE9BB, 0xE9CA, 0x1C92,
+ 0xE9CB, 0xE9CB, 0x0477, 0xE9CC, 0xE9CC, 0x1ECC, 0xE9CD, 0xE9F1, 0x1CA4,
+ 0xE9F2, 0xE9F2, 0x0529, 0xE9F3, 0xE9FC, 0x1CCA, 0xEA40, 0xEA6F, 0x1CD4,
+ 0xEA70, 0xEA70, 0x1ECD, 0xEA71, 0xEA7E, 0x1D05, 0xEA80, 0xEA9C, 0x1D13,
+ 0xEA9D, 0xEA9D, 0x1ECE, 0xEA9E, 0xEA9E, 0x1D31, 0xED40, 0xED7E, 0x20A7,
+ 0xED80, 0xEDB3, 0x20E6, 0xEDB4, 0xEDB4, 0x07C9, 0xEDB5, 0xEDFC, 0x211A,
+ 0xEE40, 0xEE7E, 0x2162, 0xEE80, 0xEEEC, 0x21A1, 0xEEEF, 0xEEF8, 0x1F9C,
+ 0xEEF9, 0xEEF9, 0x02EF, 0xEEFA, 0xEEFC, 0x1F45,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-V_2.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-V_2.cpp
new file mode 100644
index 0000000000..f3dbea981c
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Japan1/Ext-RKSJ-V_2.cpp
@@ -0,0 +1,23 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h"
+
+const FX_WORD g_FXCMAP_Ext_RKSJ_V_2[39 * 3] = {
+ 0x8141, 0x8142, 0x1ECF, 0x8143, 0x8143, 0x204C, 0x8144, 0x8144, 0x2052,
+ 0x814A, 0x814A, 0x2050, 0x814B, 0x814B, 0x204F, 0x815B, 0x815D, 0x1ED3,
+ 0x8160, 0x8164, 0x1ED6, 0x8165, 0x8165, 0x2059, 0x8166, 0x8166, 0x2054,
+ 0x8167, 0x8167, 0x2057, 0x8168, 0x8168, 0x2056, 0x8169, 0x817A, 0x1EDB,
+ 0x818B, 0x818B, 0x204D, 0x818C, 0x818C, 0x2051, 0x818D, 0x818D, 0x205B,
+ 0x81AC, 0x81AC, 0x204E, 0x829F, 0x829F, 0x1EEE, 0x82A1, 0x82A1, 0x1EEF,
+ 0x82A3, 0x82A3, 0x1EF0, 0x82A5, 0x82A5, 0x1EF1, 0x82A7, 0x82A7, 0x1EF2,
+ 0x82C1, 0x82C1, 0x1EF3, 0x82E1, 0x82E1, 0x1EF4, 0x82E3, 0x82E3, 0x1EF5,
+ 0x82E5, 0x82E5, 0x1EF6, 0x82EC, 0x82EC, 0x1EF7, 0x8340, 0x8340, 0x1EF8,
+ 0x8342, 0x8342, 0x1EF9, 0x8344, 0x8344, 0x1EFA, 0x8346, 0x8346, 0x1EFB,
+ 0x8348, 0x8348, 0x1EFC, 0x8362, 0x8362, 0x1EFD, 0x8383, 0x8383, 0x1EFE,
+ 0x8385, 0x8385, 0x1EFF, 0x8387, 0x8387, 0x1F00, 0x838E, 0x838E, 0x1F01,
+ 0x8395, 0x8396, 0x1F02, 0x875F, 0x876E, 0x1F04, 0x8780, 0x8781, 0x1F14,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/H_1.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/H_1.cpp
new file mode 100644
index 0000000000..2905a5896b
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Japan1/H_1.cpp
@@ -0,0 +1,50 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h"
+
+const FX_WORD g_FXCMAP_H_1[118 * 3] = {
+ 0x2121, 0x217E, 0x0279, 0x2221, 0x222E, 0x02D7, 0x223A, 0x2241, 0x02E5,
+ 0x224A, 0x2250, 0x02ED, 0x225C, 0x226A, 0x02F4, 0x2272, 0x2279, 0x0303,
+ 0x227E, 0x227E, 0x030B, 0x2330, 0x2339, 0x030C, 0x2341, 0x235A, 0x0316,
+ 0x2361, 0x237A, 0x0330, 0x2421, 0x2473, 0x034A, 0x2521, 0x2576, 0x039D,
+ 0x2621, 0x2638, 0x03F3, 0x2641, 0x2658, 0x040B, 0x2721, 0x2741, 0x0423,
+ 0x2751, 0x2771, 0x0444, 0x2821, 0x2821, 0x1D37, 0x2822, 0x2822, 0x1D39,
+ 0x2823, 0x2823, 0x1D43, 0x2824, 0x2824, 0x1D47, 0x2825, 0x2825, 0x1D4F,
+ 0x2826, 0x2826, 0x1D4B, 0x2827, 0x2827, 0x1D53, 0x2828, 0x2828, 0x1D63,
+ 0x2829, 0x2829, 0x1D5B, 0x282A, 0x282A, 0x1D6B, 0x282B, 0x282B, 0x1D73,
+ 0x282C, 0x282C, 0x1D38, 0x282D, 0x282D, 0x1D3A, 0x282E, 0x282E, 0x1D46,
+ 0x282F, 0x282F, 0x1D4A, 0x2830, 0x2830, 0x1D52, 0x2831, 0x2831, 0x1D4E,
+ 0x2832, 0x2832, 0x1D5A, 0x2833, 0x2833, 0x1D6A, 0x2834, 0x2834, 0x1D62,
+ 0x2835, 0x2835, 0x1D72, 0x2836, 0x2836, 0x1D82, 0x2837, 0x2837, 0x1D57,
+ 0x2838, 0x2838, 0x1D66, 0x2839, 0x2839, 0x1D5F, 0x283A, 0x283A, 0x1D6E,
+ 0x283B, 0x283B, 0x1D76, 0x283C, 0x283C, 0x1D54, 0x283D, 0x283D, 0x1D67,
+ 0x283E, 0x283E, 0x1D5C, 0x283F, 0x283F, 0x1D6F, 0x2840, 0x2840, 0x1D79,
+ 0x3021, 0x307E, 0x0465, 0x3121, 0x317E, 0x04C3, 0x3221, 0x327E, 0x0521,
+ 0x3321, 0x337E, 0x057F, 0x3421, 0x347E, 0x05DD, 0x3521, 0x357E, 0x063B,
+ 0x3621, 0x367E, 0x0699, 0x3721, 0x377E, 0x06F7, 0x3821, 0x387E, 0x0755,
+ 0x3921, 0x397E, 0x07B3, 0x3A21, 0x3A7E, 0x0811, 0x3B21, 0x3B7E, 0x086F,
+ 0x3C21, 0x3C7E, 0x08CD, 0x3D21, 0x3D7E, 0x092B, 0x3E21, 0x3E7E, 0x0989,
+ 0x3F21, 0x3F7E, 0x09E7, 0x4021, 0x407E, 0x0A45, 0x4121, 0x417E, 0x0AA3,
+ 0x4221, 0x427E, 0x0B01, 0x4321, 0x437E, 0x0B5F, 0x4421, 0x447E, 0x0BBD,
+ 0x4521, 0x457E, 0x0C1B, 0x4621, 0x467E, 0x0C79, 0x4721, 0x477E, 0x0CD7,
+ 0x4821, 0x487E, 0x0D35, 0x4921, 0x497E, 0x0D93, 0x4A21, 0x4A7E, 0x0DF1,
+ 0x4B21, 0x4B7E, 0x0E4F, 0x4C21, 0x4C7E, 0x0EAD, 0x4D21, 0x4D7E, 0x0F0B,
+ 0x4E21, 0x4E7E, 0x0F69, 0x4F21, 0x4F53, 0x0FC7, 0x5021, 0x507E, 0x0FFA,
+ 0x5121, 0x517E, 0x1058, 0x5221, 0x527E, 0x10B6, 0x5321, 0x537E, 0x1114,
+ 0x5421, 0x547E, 0x1172, 0x5521, 0x557E, 0x11D0, 0x5621, 0x567E, 0x122E,
+ 0x5721, 0x577E, 0x128C, 0x5821, 0x587E, 0x12EA, 0x5921, 0x597E, 0x1348,
+ 0x5A21, 0x5A7E, 0x13A6, 0x5B21, 0x5B7E, 0x1404, 0x5C21, 0x5C7E, 0x1462,
+ 0x5D21, 0x5D7E, 0x14C0, 0x5E21, 0x5E7E, 0x151E, 0x5F21, 0x5F7E, 0x157C,
+ 0x6021, 0x607E, 0x15DA, 0x6121, 0x617E, 0x1638, 0x6221, 0x627E, 0x1696,
+ 0x6321, 0x637E, 0x16F4, 0x6421, 0x647E, 0x1752, 0x6521, 0x657E, 0x17B0,
+ 0x6621, 0x667E, 0x180E, 0x6721, 0x677E, 0x186C, 0x6821, 0x687E, 0x18CA,
+ 0x6921, 0x697E, 0x1928, 0x6A21, 0x6A7E, 0x1986, 0x6B21, 0x6B7E, 0x19E4,
+ 0x6C21, 0x6C7E, 0x1A42, 0x6D21, 0x6D7E, 0x1AA0, 0x6E21, 0x6E7E, 0x1AFE,
+ 0x6F21, 0x6F7E, 0x1B5C, 0x7021, 0x707E, 0x1BBA, 0x7121, 0x717E, 0x1C18,
+ 0x7221, 0x727E, 0x1C76, 0x7321, 0x737E, 0x1CD4, 0x7421, 0x7424, 0x1D32,
+ 0x7425, 0x7426, 0x205C,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-H_4.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-H_4.cpp
new file mode 100644
index 0000000000..ac3ae2f82c
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-H_4.cpp
@@ -0,0 +1,12 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h"
+
+const FX_WORD g_FXCMAP_UniJIS_UCS2_HW_H_4[4 * 3] = {
+ 0x0020, 0x005B, 0x00E7, 0x005C, 0x005C, 0x220F,
+ 0x005D, 0x007E, 0x0124, 0x00A5, 0x00A5, 0x0123,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-V_4.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-V_4.cpp
new file mode 100644
index 0000000000..2753934fc2
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-HW-V_4.cpp
@@ -0,0 +1,77 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h"
+
+const FX_WORD g_FXCMAP_UniJIS_UCS2_HW_V_4[199 * 3] = {
+ 0x0020, 0x005B, 0x00E7, 0x005C, 0x005C, 0x220F, 0x005D, 0x007E, 0x0124,
+ 0x00A5, 0x00A5, 0x0123, 0x00B0, 0x00B0, 0x204D, 0x2010, 0x2010, 0x1ED5,
+ 0x2015, 0x2015, 0x1ED4, 0x2016, 0x2016, 0x1ED7, 0x2018, 0x2019, 0x2059,
+ 0x201C, 0x201D, 0x2057, 0x2025, 0x2025, 0x1EDA, 0x2026, 0x2026, 0x1ED9,
+ 0x2032, 0x2032, 0x2051, 0x2033, 0x2033, 0x205B, 0x2190, 0x2190, 0x02E2,
+ 0x2191, 0x2191, 0x02E0, 0x2192, 0x2192, 0x02E3, 0x2193, 0x2193, 0x02E1,
+ 0x2195, 0x2195, 0x2FB6, 0x21C4, 0x21C4, 0x2077, 0x21C5, 0x21C5, 0x2076,
+ 0x21C6, 0x21C6, 0x2078, 0x21E6, 0x21E6, 0x1F4C, 0x21E7, 0x21E7, 0x1F4E,
+ 0x21E8, 0x21E8, 0x1F4B, 0x21E9, 0x21E9, 0x1F4D, 0x2225, 0x2225, 0x1ED7,
+ 0x223C, 0x223C, 0x1ED6, 0x22EF, 0x22EF, 0x1ED9, 0x2500, 0x2501, 0x1D39,
+ 0x2502, 0x2503, 0x1D37, 0x2504, 0x2505, 0x1D3D, 0x2506, 0x2507, 0x1D3B,
+ 0x2508, 0x2509, 0x1D41, 0x250A, 0x250B, 0x1D3F, 0x250C, 0x250C, 0x1D47,
+ 0x250D, 0x250D, 0x1D49, 0x250E, 0x250E, 0x1D48, 0x250F, 0x250F, 0x1D4A,
+ 0x2510, 0x2510, 0x1D4F, 0x2511, 0x2511, 0x1D51, 0x2512, 0x2512, 0x1D50,
+ 0x2513, 0x2513, 0x1D52, 0x2514, 0x2514, 0x1D43, 0x2515, 0x2515, 0x1D45,
+ 0x2516, 0x2516, 0x1D44, 0x2517, 0x2517, 0x1D46, 0x2518, 0x2518, 0x1D4B,
+ 0x2519, 0x2519, 0x1D4D, 0x251A, 0x251A, 0x1D4C, 0x251B, 0x251B, 0x1D4E,
+ 0x251C, 0x251C, 0x1D63, 0x251D, 0x251D, 0x1D67, 0x251E, 0x251E, 0x1D65,
+ 0x251F, 0x251F, 0x1D64, 0x2520, 0x2520, 0x1D66, 0x2521, 0x2521, 0x1D69,
+ 0x2522, 0x2522, 0x1D68, 0x2523, 0x2524, 0x1D6A, 0x2525, 0x2525, 0x1D6F,
+ 0x2526, 0x2526, 0x1D6D, 0x2527, 0x2527, 0x1D6C, 0x2528, 0x2528, 0x1D6E,
+ 0x2529, 0x2529, 0x1D71, 0x252A, 0x252A, 0x1D70, 0x252B, 0x252B, 0x1D72,
+ 0x252C, 0x252C, 0x1D5B, 0x252D, 0x252F, 0x1D5D, 0x2530, 0x2530, 0x1D5C,
+ 0x2531, 0x2533, 0x1D60, 0x2534, 0x2534, 0x1D53, 0x2535, 0x2537, 0x1D55,
+ 0x2538, 0x2538, 0x1D54, 0x2539, 0x253B, 0x1D58, 0x253D, 0x253F, 0x1D77,
+ 0x2540, 0x2540, 0x1D75, 0x2541, 0x2541, 0x1D74, 0x2542, 0x2542, 0x1D76,
+ 0x2543, 0x2543, 0x1D7B, 0x2544, 0x2544, 0x1D7D, 0x2545, 0x2545, 0x1D7A,
+ 0x2546, 0x2546, 0x1D7C, 0x2547, 0x2547, 0x1D81, 0x2548, 0x2548, 0x1D80,
+ 0x2549, 0x254A, 0x1D7E, 0x261C, 0x261C, 0x201D, 0x261D, 0x261D, 0x201B,
+ 0x261E, 0x261E, 0x201E, 0x261F, 0x261F, 0x201C, 0x2702, 0x2702, 0x2F92,
+ 0x27A1, 0x27A1, 0x2011, 0x3001, 0x3002, 0x1ECF, 0x3008, 0x3011, 0x1EE3,
+ 0x3013, 0x3013, 0x204E, 0x3014, 0x3015, 0x1EDD, 0x301C, 0x301C, 0x1ED6,
+ 0x301D, 0x301D, 0x1F14, 0x301F, 0x301F, 0x1F15, 0x3041, 0x3041, 0x1EEE,
+ 0x3043, 0x3043, 0x1EEF, 0x3045, 0x3045, 0x1EF0, 0x3047, 0x3047, 0x1EF1,
+ 0x3049, 0x3049, 0x1EF2, 0x3063, 0x3063, 0x1EF3, 0x3083, 0x3083, 0x1EF4,
+ 0x3085, 0x3085, 0x1EF5, 0x3087, 0x3087, 0x1EF6, 0x308E, 0x308E, 0x1EF7,
+ 0x309B, 0x309B, 0x2050, 0x309C, 0x309C, 0x204F, 0x30A1, 0x30A1, 0x1EF8,
+ 0x30A3, 0x30A3, 0x1EF9, 0x30A5, 0x30A5, 0x1EFA, 0x30A7, 0x30A7, 0x1EFB,
+ 0x30A9, 0x30A9, 0x1EFC, 0x30C3, 0x30C3, 0x1EFD, 0x30E3, 0x30E3, 0x1EFE,
+ 0x30E5, 0x30E5, 0x1EFF, 0x30E7, 0x30E7, 0x1F00, 0x30EE, 0x30EE, 0x1F01,
+ 0x30F5, 0x30F6, 0x1F02, 0x30FC, 0x30FC, 0x1ED3, 0x3300, 0x3300, 0x209E,
+ 0x3301, 0x3302, 0x2EB6, 0x3303, 0x3303, 0x2092, 0x3304, 0x3304, 0x2EB8,
+ 0x3305, 0x3305, 0x208D, 0x3306, 0x3306, 0x2EB9, 0x3307, 0x3307, 0x2EBD,
+ 0x3308, 0x3308, 0x2EBB, 0x3309, 0x3309, 0x2EC0, 0x330A, 0x330A, 0x2EBE,
+ 0x330B, 0x330B, 0x2EC2, 0x330C, 0x330C, 0x2EC4, 0x330D, 0x330D, 0x1F0E,
+ 0x330E, 0x3313, 0x2EC5, 0x3314, 0x3314, 0x1F05, 0x3315, 0x3315, 0x2094,
+ 0x3316, 0x3316, 0x208A, 0x3317, 0x3317, 0x2ECC, 0x3318, 0x3318, 0x2093,
+ 0x3319, 0x3319, 0x2ECE, 0x331A, 0x331D, 0x2ED0, 0x331E, 0x331E, 0x20A1,
+ 0x331F, 0x3321, 0x2ED4, 0x3322, 0x3322, 0x2089, 0x3323, 0x3323, 0x209C,
+ 0x3324, 0x3324, 0x2ED7, 0x3325, 0x3325, 0x2ED9, 0x3326, 0x3326, 0x1F0F,
+ 0x3327, 0x3327, 0x1F09, 0x3328, 0x3329, 0x2EDC, 0x332A, 0x332A, 0x20A4,
+ 0x332B, 0x332B, 0x1F11, 0x332D, 0x332D, 0x2EDF, 0x332E, 0x3330, 0x2EE2,
+ 0x3331, 0x3331, 0x20A6, 0x3332, 0x3332, 0x2EE5, 0x3333, 0x3333, 0x208E,
+ 0x3334, 0x3335, 0x2EE8, 0x3336, 0x3336, 0x1F0B, 0x3337, 0x3337, 0x2EEE,
+ 0x3338, 0x3338, 0x2EF0, 0x3339, 0x3339, 0x2097, 0x333A, 0x333A, 0x2EF1,
+ 0x333B, 0x333B, 0x209D, 0x333C, 0x333C, 0x2EEA, 0x333D, 0x333D, 0x2EF2,
+ 0x333E, 0x3340, 0x2EF4, 0x3341, 0x3341, 0x2EF3, 0x3342, 0x3342, 0x209B,
+ 0x3343, 0x3346, 0x2EF7, 0x3347, 0x3347, 0x20A5, 0x3348, 0x3348, 0x2EFB,
+ 0x3349, 0x3349, 0x1F04, 0x334A, 0x334A, 0x1F12, 0x334B, 0x334C, 0x2EFC,
+ 0x334D, 0x334D, 0x1F07, 0x334E, 0x334E, 0x2091, 0x334F, 0x3350, 0x2EFE,
+ 0x3351, 0x3351, 0x1F0C, 0x3352, 0x3352, 0x2F02, 0x3353, 0x3353, 0x2F06,
+ 0x3354, 0x3354, 0x2F03, 0x3355, 0x3356, 0x2F07, 0x3357, 0x3357, 0x2098,
+ 0x337F, 0x337F, 0x2084, 0xFF08, 0xFF09, 0x1EDB, 0xFF0C, 0xFF0C, 0x204C,
+ 0xFF0E, 0xFF0E, 0x2052, 0xFF1D, 0xFF1D, 0x1EED, 0xFF3B, 0xFF3B, 0x1EDF,
+ 0xFF3D, 0xFF3D, 0x1EE0, 0xFF3F, 0xFF3F, 0x1ED2, 0xFF5B, 0xFF5B, 0x1EE1,
+ 0xFF5C, 0xFF5C, 0x1ED8, 0xFF5D, 0xFF5D, 0x1EE2, 0xFF5E, 0xFF5E, 0x1ED6,
+ 0xFFE3, 0xFFE3, 0x1ED1,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-H_4.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-H_4.cpp
new file mode 100644
index 0000000000..9c1387a185
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-H_4.cpp
@@ -0,0 +1,2182 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h"
+
+const FX_WORD g_FXCMAP_UniJIS_UCS2_H_4[9772 * 2] = {
+ 0x0020, 0x0001, 0x0021, 0x0002, 0x0022, 0x0003, 0x0023, 0x0004, 0x0024,
+ 0x0005, 0x0025, 0x0006, 0x0026, 0x0007, 0x0027, 0x0008, 0x0028, 0x0009,
+ 0x0029, 0x000A, 0x002A, 0x000B, 0x002B, 0x000C, 0x002C, 0x000D, 0x002D,
+ 0x000E, 0x002E, 0x000F, 0x002F, 0x0010, 0x0030, 0x0011, 0x0031, 0x0012,
+ 0x0032, 0x0013, 0x0033, 0x0014, 0x0034, 0x0015, 0x0035, 0x0016, 0x0036,
+ 0x0017, 0x0037, 0x0018, 0x0038, 0x0019, 0x0039, 0x001A, 0x003A, 0x001B,
+ 0x003B, 0x001C, 0x003C, 0x001D, 0x003D, 0x001E, 0x003E, 0x001F, 0x003F,
+ 0x0020, 0x0040, 0x0021, 0x0041, 0x0022, 0x0042, 0x0023, 0x0043, 0x0024,
+ 0x0044, 0x0025, 0x0045, 0x0026, 0x0046, 0x0027, 0x0047, 0x0028, 0x0048,
+ 0x0029, 0x0049, 0x002A, 0x004A, 0x002B, 0x004B, 0x002C, 0x004C, 0x002D,
+ 0x004D, 0x002E, 0x004E, 0x002F, 0x004F, 0x0030, 0x0050, 0x0031, 0x0051,
+ 0x0032, 0x0052, 0x0033, 0x0053, 0x0034, 0x0054, 0x0035, 0x0055, 0x0036,
+ 0x0056, 0x0037, 0x0057, 0x0038, 0x0058, 0x0039, 0x0059, 0x003A, 0x005A,
+ 0x003B, 0x005B, 0x003C, 0x005C, 0x0061, 0x005D, 0x003E, 0x005E, 0x003F,
+ 0x005F, 0x0040, 0x0060, 0x0041, 0x0061, 0x0042, 0x0062, 0x0043, 0x0063,
+ 0x0044, 0x0064, 0x0045, 0x0065, 0x0046, 0x0066, 0x0047, 0x0067, 0x0048,
+ 0x0068, 0x0049, 0x0069, 0x004A, 0x006A, 0x004B, 0x006B, 0x004C, 0x006C,
+ 0x004D, 0x006D, 0x004E, 0x006E, 0x004F, 0x006F, 0x0050, 0x0070, 0x0051,
+ 0x0071, 0x0052, 0x0072, 0x0053, 0x0073, 0x0054, 0x0074, 0x0055, 0x0075,
+ 0x0056, 0x0076, 0x0057, 0x0077, 0x0058, 0x0078, 0x0059, 0x0079, 0x005A,
+ 0x007A, 0x005B, 0x007B, 0x005C, 0x007C, 0x005D, 0x007D, 0x005E, 0x007E,
+ 0x005F, 0x00A1, 0x0065, 0x00A2, 0x0066, 0x00A3, 0x0067, 0x00A4, 0x006B,
+ 0x00A5, 0x003D, 0x00A6, 0x0063, 0x00A7, 0x02D0, 0x00A8, 0x0287, 0x00A9,
+ 0x0098, 0x00AA, 0x008C, 0x00AB, 0x006D, 0x00AC, 0x0099, 0x00AD, 0x0097,
+ 0x00AE, 0x009A, 0x00AF, 0x0081, 0x00B0, 0x02C3, 0x00B1, 0x02B6, 0x00B2,
+ 0x009D, 0x00B3, 0x009E, 0x00B4, 0x0285, 0x00B5, 0x009F, 0x00B6, 0x030A,
+ 0x00B7, 0x0075, 0x00B8, 0x0086, 0x00B9, 0x00A0, 0x00BA, 0x0090, 0x00BB,
+ 0x007B, 0x00BC, 0x00A1, 0x00BD, 0x00A2, 0x00BE, 0x00A3, 0x00BF, 0x007E,
+ 0x00C0, 0x00A4, 0x00C1, 0x00A5, 0x00C2, 0x00A6, 0x00C3, 0x00A7, 0x00C4,
+ 0x00A8, 0x00C5, 0x00A9, 0x00C6, 0x008B, 0x00C7, 0x00AA, 0x00C8, 0x00AB,
+ 0x00C9, 0x00AC, 0x00CA, 0x00AD, 0x00CB, 0x00AE, 0x00CC, 0x00AF, 0x00CD,
+ 0x00B0, 0x00CE, 0x00B1, 0x00CF, 0x00B2, 0x00D0, 0x00B3, 0x00D1, 0x00B4,
+ 0x00D2, 0x00B5, 0x00D3, 0x00B6, 0x00D4, 0x00B7, 0x00D5, 0x00B8, 0x00D6,
+ 0x00B9, 0x00D7, 0x02B7, 0x00D8, 0x008E, 0x00D9, 0x00BB, 0x00DA, 0x00BC,
+ 0x00DB, 0x00BD, 0x00DC, 0x00BE, 0x00DD, 0x00BF, 0x00DE, 0x00C0, 0x00DF,
+ 0x0096, 0x00E0, 0x00C1, 0x00E1, 0x00C2, 0x00E2, 0x00C3, 0x00E3, 0x00C4,
+ 0x00E4, 0x00C5, 0x00E5, 0x00C6, 0x00E6, 0x0091, 0x00E7, 0x00C7, 0x00E8,
+ 0x00C8, 0x00E9, 0x00C9, 0x00EA, 0x00CA, 0x00EB, 0x00CB, 0x00EC, 0x00CC,
+ 0x00ED, 0x00CD, 0x00EE, 0x00CE, 0x00EF, 0x00CF, 0x00F0, 0x00D0, 0x00F1,
+ 0x00D1, 0x00F2, 0x00D2, 0x00F3, 0x00D3, 0x00F4, 0x00D4, 0x00F5, 0x00D5,
+ 0x00F6, 0x00D6, 0x00F7, 0x02B8, 0x00F8, 0x0094, 0x00F9, 0x00D8, 0x00FA,
+ 0x00D9, 0x00FB, 0x00DA, 0x00FC, 0x00DB, 0x00FD, 0x00DC, 0x00FE, 0x00DD,
+ 0x00FF, 0x00DE, 0x0100, 0x2496, 0x0101, 0x2491, 0x0112, 0x2499, 0x0113,
+ 0x2494, 0x011A, 0x24B3, 0x011B, 0x24BF, 0x0127, 0x2F3C, 0x0128, 0x24B8,
+ 0x0129, 0x24C4, 0x012A, 0x2497, 0x012B, 0x2492, 0x0131, 0x0092, 0x0141,
+ 0x008D, 0x0142, 0x0093, 0x014B, 0x24DC, 0x014C, 0x249A, 0x014D, 0x2495,
+ 0x0152, 0x008F, 0x0153, 0x0095, 0x0160, 0x00DF, 0x0161, 0x00E3, 0x0168,
+ 0x24BD, 0x0169, 0x24C9, 0x016A, 0x2498, 0x016B, 0x2493, 0x016E, 0x24BC,
+ 0x016F, 0x24C8, 0x0178, 0x00E0, 0x017D, 0x00E1, 0x017E, 0x00E5, 0x01C0,
+ 0x0063, 0x01CD, 0x24B2, 0x01CE, 0x24BE, 0x01CF, 0x24B6, 0x01D0, 0x24C2,
+ 0x01D1, 0x24B9, 0x01D2, 0x24C5, 0x01D3, 0x24BB, 0x01D4, 0x24C7, 0x01FD,
+ 0x24CD, 0x0251, 0x24CA, 0x0254, 0x24CF, 0x0259, 0x24D2, 0x025A, 0x24D5,
+ 0x025B, 0x24D8, 0x0275, 0x24DD, 0x0283, 0x24E2, 0x028C, 0x24DE, 0x0292,
+ 0x24E1, 0x02D0, 0x24E3, 0x0300, 0x0041, 0x0301, 0x007F, 0x0302, 0x0080,
+ 0x0303, 0x005F, 0x0304, 0x0081, 0x0305, 0x00E2, 0x0306, 0x0082, 0x0307,
+ 0x0083, 0x0308, 0x0084, 0x030A, 0x0085, 0x030B, 0x0087, 0x030C, 0x0089,
+ 0x0327, 0x0086, 0x0328, 0x0088, 0x0332, 0x0040, 0x0336, 0x008A, 0x0361,
+ 0x02F6, 0x0391, 0x03F3, 0x0392, 0x03F4, 0x0393, 0x03F5, 0x0394, 0x03F6,
+ 0x0395, 0x03F7, 0x0396, 0x03F8, 0x0397, 0x03F9, 0x0398, 0x03FA, 0x0399,
+ 0x03FB, 0x039A, 0x03FC, 0x039B, 0x03FD, 0x039C, 0x03FE, 0x039D, 0x03FF,
+ 0x039E, 0x0400, 0x039F, 0x0401, 0x03A0, 0x0402, 0x03A1, 0x0403, 0x03A3,
+ 0x0404, 0x03A4, 0x0405, 0x03A5, 0x0406, 0x03A6, 0x0407, 0x03A7, 0x0408,
+ 0x03A8, 0x0409, 0x03A9, 0x040A, 0x03B1, 0x040B, 0x03B2, 0x040C, 0x03B3,
+ 0x040D, 0x03B4, 0x040E, 0x03B5, 0x040F, 0x03B6, 0x0410, 0x03B7, 0x0411,
+ 0x03B8, 0x0412, 0x03B9, 0x0413, 0x03BA, 0x0414, 0x03BB, 0x0415, 0x03BC,
+ 0x0416, 0x03BD, 0x0417, 0x03BE, 0x0418, 0x03BF, 0x0419, 0x03C0, 0x041A,
+ 0x03C1, 0x041B, 0x03C3, 0x041C, 0x03C4, 0x041D, 0x03C5, 0x041E, 0x03C6,
+ 0x041F, 0x03C7, 0x0420, 0x03C8, 0x0421, 0x03C9, 0x0422, 0x03D0, 0x2F3A,
+ 0x03D1, 0x2F40, 0x03DB, 0x2F3F, 0x0401, 0x0429, 0x0410, 0x0423, 0x0411,
+ 0x0424, 0x0412, 0x0425, 0x0413, 0x0426, 0x0414, 0x0427, 0x0415, 0x0428,
+ 0x0416, 0x042A, 0x0417, 0x042B, 0x0418, 0x042C, 0x0419, 0x042D, 0x041A,
+ 0x042E, 0x041B, 0x042F, 0x041C, 0x0430, 0x041D, 0x0431, 0x041E, 0x0432,
+ 0x041F, 0x0433, 0x0420, 0x0434, 0x0421, 0x0435, 0x0422, 0x0436, 0x0423,
+ 0x0437, 0x0424, 0x0438, 0x0425, 0x0439, 0x0426, 0x043A, 0x0427, 0x043B,
+ 0x0428, 0x043C, 0x0429, 0x043D, 0x042A, 0x043E, 0x042B, 0x043F, 0x042C,
+ 0x0440, 0x042D, 0x0441, 0x042E, 0x0442, 0x042F, 0x0443, 0x0430, 0x0444,
+ 0x0431, 0x0445, 0x0432, 0x0446, 0x0433, 0x0447, 0x0434, 0x0448, 0x0435,
+ 0x0449, 0x0436, 0x044B, 0x0437, 0x044C, 0x0438, 0x044D, 0x0439, 0x044E,
+ 0x043A, 0x044F, 0x043B, 0x0450, 0x043C, 0x0451, 0x043D, 0x0452, 0x043E,
+ 0x0453, 0x043F, 0x0454, 0x0440, 0x0455, 0x0441, 0x0456, 0x0442, 0x0457,
+ 0x0443, 0x0458, 0x0444, 0x0459, 0x0445, 0x045A, 0x0446, 0x045B, 0x0447,
+ 0x045C, 0x0448, 0x045D, 0x0449, 0x045E, 0x044A, 0x045F, 0x044B, 0x0460,
+ 0x044C, 0x0461, 0x044D, 0x0462, 0x044E, 0x0463, 0x044F, 0x0464, 0x0451,
+ 0x044A, 0x045B, 0x2F3C, 0x1EBC, 0x24B5, 0x1EBD, 0x24C1, 0x2002, 0x00E7,
+ 0x2003, 0x0279, 0x2010, 0x0296, 0x2011, 0x000E, 0x2012, 0x0072, 0x2013,
+ 0x0072, 0x2014, 0x008A, 0x2015, 0x0295, 0x2016, 0x029A, 0x2018, 0x029E,
+ 0x2019, 0x029F, 0x201A, 0x0078, 0x201C, 0x02A0, 0x201D, 0x02A1, 0x201E,
+ 0x0079, 0x2020, 0x0308, 0x2021, 0x0309, 0x2022, 0x0077, 0x2025, 0x029D,
+ 0x2026, 0x029C, 0x2030, 0x0304, 0x2032, 0x02C4, 0x2033, 0x02C5, 0x2039,
+ 0x006E, 0x203A, 0x006F, 0x203B, 0x02DE, 0x203C, 0x2F4F, 0x203E, 0x0145,
+ 0x2044, 0x0068, 0x2049, 0x2F50, 0x2070, 0x24A1, 0x2074, 0x24A2, 0x2075,
+ 0x24A3, 0x2076, 0x24A4, 0x2077, 0x24A5, 0x2078, 0x24A6, 0x2079, 0x24A7,
+ 0x2080, 0x24A8, 0x2081, 0x24A9, 0x2082, 0x24AA, 0x2083, 0x24AB, 0x2084,
+ 0x24AC, 0x2085, 0x24AD, 0x2086, 0x24AE, 0x2087, 0x24AF, 0x2088, 0x24B0,
+ 0x2089, 0x24B1, 0x20AC, 0x248A, 0x20DD, 0x030B, 0x2100, 0x2E4F, 0x2103,
+ 0x02C6, 0x2105, 0x2E53, 0x2109, 0x2071, 0x210A, 0x2070, 0x210F, 0x2F3C,
+ 0x2113, 0x1F59, 0x2116, 0x1DBA, 0x2121, 0x1F77, 0x2122, 0x00E4, 0x2126,
+ 0x248B, 0x212B, 0x0303, 0x2135, 0x2F39, 0x2153, 0x249F, 0x2154, 0x24A0,
+ 0x215B, 0x249B, 0x215C, 0x249C, 0x215D, 0x249D, 0x215E, 0x249E, 0x2160,
+ 0x1D97, 0x2161, 0x1D98, 0x2162, 0x1D99, 0x2163, 0x1D9A, 0x2164, 0x1D9B,
+ 0x2165, 0x1D9C, 0x2166, 0x1D9D, 0x2167, 0x1D9E, 0x2168, 0x1D9F, 0x2169,
+ 0x1DA0, 0x216A, 0x2021, 0x216B, 0x2022, 0x2170, 0x1F9C, 0x2171, 0x1F9D,
+ 0x2172, 0x1F9E, 0x2173, 0x1F9F, 0x2174, 0x1FA0, 0x2175, 0x1FA1, 0x2176,
+ 0x1FA2, 0x2177, 0x1FA3, 0x2178, 0x1FA4, 0x2179, 0x1FA5, 0x217A, 0x206A,
+ 0x217B, 0x206B, 0x217F, 0x206F, 0x2190, 0x02E1, 0x2191, 0x02E2, 0x2192,
+ 0x02E0, 0x2193, 0x02E3, 0x2194, 0x2FA9, 0x2195, 0x2FB7, 0x2196, 0x2FAC,
+ 0x2197, 0x2FAD, 0x2198, 0x2FAA, 0x2199, 0x2FAB, 0x21C4, 0x2076, 0x21C5,
+ 0x2077, 0x21C6, 0x2075, 0x21CC, 0x2FAE, 0x21D0, 0x2FA8, 0x21D2, 0x02F0,
+ 0x21D4, 0x02F1, 0x21E6, 0x1F4D, 0x21E7, 0x1F4C, 0x21E8, 0x1F4E, 0x21E9,
+ 0x1F4B, 0x2200, 0x02F2, 0x2202, 0x02F7, 0x2203, 0x02F3, 0x2205, 0x2F98,
+ 0x2207, 0x02F8, 0x2208, 0x02E5, 0x220A, 0x2F3B, 0x220B, 0x02E6, 0x2211,
+ 0x1DC9, 0x2212, 0x02B5, 0x2213, 0x2F56, 0x221A, 0x02FD, 0x221D, 0x02FF,
+ 0x221E, 0x02BF, 0x221F, 0x1DCD, 0x2220, 0x02F4, 0x2225, 0x029A, 0x2227,
+ 0x02ED, 0x2228, 0x02EE, 0x2229, 0x02EC, 0x222A, 0x02EB, 0x222B, 0x0301,
+ 0x222C, 0x0302, 0x222D, 0x2003, 0x222E, 0x1DC8, 0x2234, 0x02C0, 0x2235,
+ 0x0300, 0x223C, 0x0299, 0x223D, 0x02FE, 0x2243, 0x2F58, 0x2252, 0x02FA,
+ 0x2260, 0x02BA, 0x2261, 0x02F9, 0x2266, 0x02BD, 0x2267, 0x02BE, 0x226A,
+ 0x02FB, 0x226B, 0x02FC, 0x2272, 0x2F59, 0x2273, 0x2F5A, 0x2282, 0x02E9,
+ 0x2283, 0x02EA, 0x2286, 0x02E7, 0x2287, 0x02E8, 0x2295, 0x2F9C, 0x2296,
+ 0x2F9A, 0x2297, 0x2F9D, 0x2298, 0x2F9B, 0x229D, 0x2F9A, 0x229E, 0x2F9E,
+ 0x22A0, 0x2F99, 0x22A5, 0x02F5, 0x22BF, 0x1DCE, 0x22EE, 0x1ED9, 0x22EF,
+ 0x029C, 0x2300, 0x2F98, 0x2307, 0x2FBB, 0x2312, 0x02F6, 0x244A, 0x2F54,
+ 0x2460, 0x1D83, 0x2461, 0x1D84, 0x2462, 0x1D85, 0x2463, 0x1D86, 0x2464,
+ 0x1D87, 0x2465, 0x1D88, 0x2466, 0x1D89, 0x2467, 0x1D8A, 0x2468, 0x1D8B,
+ 0x2469, 0x1D8C, 0x246A, 0x1D8D, 0x246B, 0x1D8E, 0x246C, 0x1D8F, 0x246D,
+ 0x1D90, 0x246E, 0x1D91, 0x246F, 0x1D92, 0x2470, 0x1D93, 0x2471, 0x1D94,
+ 0x2472, 0x1D95, 0x2473, 0x1D96, 0x2474, 0x1F87, 0x2475, 0x1F88, 0x2476,
+ 0x1F89, 0x2477, 0x1F8A, 0x2478, 0x1F8B, 0x2479, 0x1F8C, 0x247A, 0x1F8D,
+ 0x247B, 0x1F8E, 0x247C, 0x1F8F, 0x247D, 0x1F90, 0x247E, 0x1F91, 0x247F,
+ 0x1F92, 0x2480, 0x1F93, 0x2481, 0x1F94, 0x2482, 0x1F95, 0x2483, 0x1F96,
+ 0x2484, 0x1F97, 0x2485, 0x1F98, 0x2486, 0x1F99, 0x2487, 0x1F9A, 0x2488,
+ 0x1F7E, 0x2489, 0x1F7F, 0x248A, 0x1F80, 0x248B, 0x1F81, 0x248C, 0x1F82,
+ 0x248D, 0x1F83, 0x248E, 0x1F84, 0x248F, 0x1F85, 0x2490, 0x1F86, 0x249C,
+ 0x1FB0, 0x249D, 0x1FB1, 0x249E, 0x1FB2, 0x249F, 0x1FB3, 0x24A0, 0x1FB4,
+ 0x24A1, 0x1FB5, 0x24A2, 0x1FB6, 0x24A3, 0x1FB7, 0x24A4, 0x1FB8, 0x24A5,
+ 0x1FB9, 0x24A6, 0x1FBA, 0x24A7, 0x1FBB, 0x24A8, 0x1FBC, 0x24A9, 0x1FBD,
+ 0x24AA, 0x1FBE, 0x24AB, 0x1FBF, 0x24AC, 0x1FC0, 0x24AD, 0x1FC1, 0x24AE,
+ 0x1FC2, 0x24AF, 0x1FC3, 0x24B0, 0x1FC4, 0x24B1, 0x1FC5, 0x24B2, 0x1FC6,
+ 0x24B3, 0x1FC7, 0x24B4, 0x1FC8, 0x24B5, 0x1FC9, 0x24B6, 0x2863, 0x24B7,
+ 0x2864, 0x24B8, 0x2865, 0x24B9, 0x2866, 0x24BA, 0x2867, 0x24BB, 0x2868,
+ 0x24BC, 0x2869, 0x24BD, 0x286A, 0x24BE, 0x286B, 0x24BF, 0x286C, 0x24C0,
+ 0x286D, 0x24C1, 0x286E, 0x24C2, 0x286F, 0x24C3, 0x2870, 0x24C4, 0x2871,
+ 0x24C5, 0x2872, 0x24C6, 0x2873, 0x24C7, 0x2874, 0x24C8, 0x2875, 0x24C9,
+ 0x2876, 0x24CA, 0x2877, 0x24CB, 0x2878, 0x24CC, 0x2879, 0x24CD, 0x287A,
+ 0x24CE, 0x287B, 0x24CF, 0x287C, 0x24D0, 0x2849, 0x24D1, 0x284A, 0x24D2,
+ 0x284B, 0x24D3, 0x284C, 0x24D4, 0x284D, 0x24D5, 0x284E, 0x24D6, 0x284F,
+ 0x24D7, 0x2850, 0x24D8, 0x2851, 0x24D9, 0x2852, 0x24DA, 0x2853, 0x24DB,
+ 0x2854, 0x24DC, 0x2855, 0x24DD, 0x2856, 0x24DE, 0x2857, 0x24DF, 0x2858,
+ 0x24E0, 0x2859, 0x24E1, 0x285A, 0x24E2, 0x285B, 0x24E3, 0x285C, 0x24E4,
+ 0x285D, 0x24E5, 0x285E, 0x24E6, 0x285F, 0x24E7, 0x2860, 0x24E8, 0x2861,
+ 0x24E9, 0x2862, 0x24EA, 0x2020, 0x2500, 0x1D37, 0x2501, 0x1D38, 0x2502,
+ 0x1D39, 0x2503, 0x1D3A, 0x2504, 0x1D3B, 0x2505, 0x1D3C, 0x2506, 0x1D3D,
+ 0x2507, 0x1D3E, 0x2508, 0x1D3F, 0x2509, 0x1D40, 0x250A, 0x1D41, 0x250B,
+ 0x1D42, 0x250C, 0x1D43, 0x250D, 0x1D44, 0x250E, 0x1D45, 0x250F, 0x1D46,
+ 0x2510, 0x1D47, 0x2511, 0x1D48, 0x2512, 0x1D49, 0x2513, 0x1D4A, 0x2514,
+ 0x1D4B, 0x2515, 0x1D4C, 0x2516, 0x1D4D, 0x2517, 0x1D4E, 0x2518, 0x1D4F,
+ 0x2519, 0x1D50, 0x251A, 0x1D51, 0x251B, 0x1D52, 0x251C, 0x1D53, 0x251D,
+ 0x1D54, 0x251E, 0x1D55, 0x251F, 0x1D56, 0x2520, 0x1D57, 0x2521, 0x1D58,
+ 0x2522, 0x1D59, 0x2523, 0x1D5A, 0x2524, 0x1D5B, 0x2525, 0x1D5C, 0x2526,
+ 0x1D5D, 0x2527, 0x1D5E, 0x2528, 0x1D5F, 0x2529, 0x1D60, 0x252A, 0x1D61,
+ 0x252B, 0x1D62, 0x252C, 0x1D63, 0x252D, 0x1D64, 0x252E, 0x1D65, 0x252F,
+ 0x1D66, 0x2530, 0x1D67, 0x2531, 0x1D68, 0x2532, 0x1D69, 0x2533, 0x1D6A,
+ 0x2534, 0x1D6B, 0x2535, 0x1D6C, 0x2536, 0x1D6D, 0x2537, 0x1D6E, 0x2538,
+ 0x1D6F, 0x2539, 0x1D70, 0x253A, 0x1D71, 0x253B, 0x1D72, 0x253C, 0x1D73,
+ 0x253D, 0x1D74, 0x253E, 0x1D75, 0x253F, 0x1D76, 0x2540, 0x1D77, 0x2541,
+ 0x1D78, 0x2542, 0x1D79, 0x2543, 0x1D7A, 0x2544, 0x1D7B, 0x2545, 0x1D7C,
+ 0x2546, 0x1D7D, 0x2547, 0x1D7E, 0x2548, 0x1D7F, 0x2549, 0x1D80, 0x254A,
+ 0x1D81, 0x254B, 0x1D82, 0x2550, 0x203B, 0x255E, 0x203C, 0x2561, 0x203E,
+ 0x256A, 0x203D, 0x256D, 0x2037, 0x256E, 0x2038, 0x256F, 0x203A, 0x2570,
+ 0x2039, 0x2571, 0x2045, 0x2572, 0x2046, 0x2573, 0x2047, 0x2581, 0x2026,
+ 0x2582, 0x2027, 0x2583, 0x2028, 0x2584, 0x2029, 0x2585, 0x202A, 0x2586,
+ 0x202B, 0x2587, 0x202C, 0x2588, 0x202D, 0x2589, 0x2034, 0x258A, 0x2033,
+ 0x258B, 0x2032, 0x258C, 0x2031, 0x258D, 0x2030, 0x258E, 0x202F, 0x258F,
+ 0x202E, 0x2594, 0x2035, 0x2595, 0x2036, 0x25A0, 0x02D9, 0x25A1, 0x02D8,
+ 0x25A2, 0x1F4F, 0x25AA, 0x2FCF, 0x25AB, 0x2FCD, 0x25B2, 0x02DB, 0x25B3,
+ 0x02DA, 0x25B6, 0x2FA3, 0x25B7, 0x1F4A, 0x25BC, 0x02DD, 0x25BD, 0x02DC,
+ 0x25C0, 0x2FA2, 0x25C1, 0x1F49, 0x25C6, 0x02D7, 0x25C7, 0x02D6, 0x25C9,
+ 0x2012, 0x25CB, 0x02D3, 0x25CC, 0x2906, 0x25CE, 0x02D5, 0x25CF, 0x02D4,
+ 0x25E2, 0x203F, 0x25E3, 0x2040, 0x25E4, 0x2042, 0x25E5, 0x2041, 0x25E6,
+ 0x2FDE, 0x25EF, 0x030B, 0x2600, 0x2017, 0x2601, 0x2018, 0x2602, 0x2019,
+ 0x2603, 0x201A, 0x2605, 0x02D2, 0x2606, 0x02D1, 0x260E, 0x1F78, 0x2612,
+ 0x2F99, 0x261C, 0x201C, 0x261D, 0x201D, 0x261E, 0x201B, 0x261F, 0x201E,
+ 0x2640, 0x02C2, 0x2642, 0x02C1, 0x2660, 0x2013, 0x2661, 0x1F51, 0x2662,
+ 0x1F53, 0x2663, 0x2015, 0x2664, 0x1F52, 0x2665, 0x2014, 0x2666, 0x2016,
+ 0x2667, 0x1F50, 0x2668, 0x2F42, 0x2669, 0x2F43, 0x266A, 0x0307, 0x266C,
+ 0x2F44, 0x266D, 0x0306, 0x266F, 0x0305, 0x2702, 0x2F90, 0x271A, 0x2FD1,
+ 0x2756, 0x2FE3, 0x2776, 0x205E, 0x2777, 0x205F, 0x2778, 0x2060, 0x2779,
+ 0x2061, 0x277A, 0x2062, 0x277B, 0x2063, 0x277C, 0x2064, 0x277D, 0x2065,
+ 0x277E, 0x2066, 0x27A1, 0x200E, 0x2E83, 0x37E1, 0x2E85, 0x3620, 0x2E87,
+ 0x3719, 0x2E89, 0x3814, 0x2E8B, 0x371E, 0x2E8C, 0x3609, 0x2E8D, 0x360A,
+ 0x2E8E, 0x1071, 0x2E8F, 0x388C, 0x2E90, 0x1226, 0x2E92, 0x0EB2, 0x2E93,
+ 0x1283, 0x2E94, 0x12AB, 0x2E95, 0x3C1F, 0x2E96, 0x38C2, 0x2E97, 0x361C,
+ 0x2E98, 0x38E1, 0x2E99, 0x13C3, 0x2E9B, 0x13E1, 0x2E9F, 0x0E3C, 0x2EA0,
+ 0x0EBD, 0x2EA1, 0x3961, 0x2EA2, 0x3962, 0x2EA3, 0x399D, 0x2EA4, 0x3C26,
+ 0x2EA6, 0x374D, 0x2EA8, 0x39BC, 0x2EA9, 0x35A1, 0x2EAA, 0x36AB, 0x2EAB,
+ 0x3A97, 0x2EAC, 0x08D4, 0x2EAD, 0x3A39, 0x2EAE, 0x3662, 0x2EB1, 0x3A98,
+ 0x2EB2, 0x3A97, 0x2EB3, 0x376D, 0x2EB7, 0x36FE, 0x2EB9, 0x3713, 0x2EBC,
+ 0x35B3, 0x2EBD, 0x354E, 0x2EBE, 0x3775, 0x2EBF, 0x3776, 0x2EC0, 0x3777,
+ 0x2EC1, 0x078B, 0x2EC2, 0x3B0A, 0x2EC3, 0x362E, 0x2EC4, 0x0A62, 0x2EC6,
+ 0x3572, 0x2ECA, 0x364A, 0x2ECC, 0x3C2B, 0x2ECD, 0x3B50, 0x2ECF, 0x3B9E,
+ 0x2ED1, 0x0BD5, 0x2ED2, 0x3B97, 0x2ED6, 0x3B9E, 0x2ED7, 0x354D, 0x2ED8,
+ 0x0A68, 0x2EDD, 0x3617, 0x2EDE, 0x3619, 0x2EDF, 0x3618, 0x2EE4, 0x064E,
+ 0x2EE8, 0x0D34, 0x2EE9, 0x052B, 0x2EEB, 0x0A6A, 0x2EED, 0x08C3, 0x2EEF,
+ 0x0F7D, 0x2EF2, 0x064F, 0x2F00, 0x04B0, 0x2F01, 0x20B3, 0x2F02, 0x0FFF,
+ 0x2F03, 0x1001, 0x2F04, 0x0535, 0x2F05, 0x1006, 0x2F06, 0x0CCB, 0x2F07,
+ 0x100E, 0x2F08, 0x0A13, 0x2F09, 0x1070, 0x2F0A, 0x0CD6, 0x2F0B, 0x0D40,
+ 0x2F0C, 0x107B, 0x2F0D, 0x1083, 0x2F0E, 0x1089, 0x2F0F, 0x1093, 0x2F10,
+ 0x1098, 0x2F11, 0x0C5B, 0x2F12, 0x0F97, 0x2F13, 0x10C6, 0x2F14, 0x10CD,
+ 0x2F15, 0x10CE, 0x2F16, 0x10D3, 0x2F17, 0x0947, 0x2F18, 0x0E7C, 0x2F19,
+ 0x10DC, 0x2F1A, 0x10E1, 0x2F1B, 0x10E8, 0x2F1C, 0x0EA2, 0x2F1D, 0x07B1,
+ 0x2F1E, 0x116B, 0x2F1F, 0x0C54, 0x2F20, 0x089C, 0x2F21, 0x11BA, 0x2F22,
+ 0x11BB, 0x2F23, 0x0F26, 0x2F24, 0x0B47, 0x2F25, 0x0981, 0x2F26, 0x08A0,
+ 0x2F27, 0x120E, 0x2F28, 0x0A47, 0x2F29, 0x0996, 0x2F2A, 0x1226, 0x2F2B,
+ 0x1228, 0x2F2C, 0x1232, 0x2F2D, 0x0881, 0x2F2E, 0x126C, 0x2F2F, 0x07BB,
+ 0x2F30, 0x077E, 0x2F31, 0x06CA, 0x2F32, 0x05EF, 0x2F33, 0x1283, 0x2F34,
+ 0x1285, 0x2F35, 0x1299, 0x2F36, 0x129B, 0x2F37, 0x12A0, 0x2F38, 0x0677,
+ 0x2F39, 0x38B9, 0x2F3A, 0x12AF, 0x2F3B, 0x12B1, 0x2F3C, 0x09FA, 0x2F3D,
+ 0x1342, 0x2F3E, 0x0781, 0x2F3F, 0x0916, 0x2F40, 0x08A7, 0x2F41, 0x13C2,
+ 0x2F42, 0x0E08, 0x2F43, 0x0C47, 0x2F44, 0x06CC, 0x2F45, 0x0E4D, 0x2F46,
+ 0x13E0, 0x2F47, 0x0CD4, 0x2F48, 0x140C, 0x2F49, 0x0744, 0x2F4A, 0x0EE6,
+ 0x2F4B, 0x073D, 0x2F4C, 0x08AD, 0x2F4D, 0x14E5, 0x2F4E, 0x14F4, 0x2F4F,
+ 0x14F8, 0x2F50, 0x0D7A, 0x2F51, 0x0EDF, 0x2F52, 0x08AF, 0x2F53, 0x1502,
+ 0x2F54, 0x0A2B, 0x2F55, 0x0550, 0x2F56, 0x0BFA, 0x2F57, 0x0DD5, 0x2F58,
+ 0x15E4, 0x2F59, 0x15E6, 0x2F5A, 0x0E22, 0x2F5B, 0x0567, 0x2F5C, 0x0687,
+ 0x2F5D, 0x0758, 0x2F5E, 0x0770, 0x2F5F, 0x06C4, 0x2F60, 0x04DD, 0x2F61,
+ 0x05E0, 0x2F62, 0x0601, 0x2F63, 0x0A5C, 0x2F64, 0x0F3B, 0x2F65, 0x0C3E,
+ 0x2F66, 0x0D97, 0x2F67, 0x3A00, 0x2F68, 0x1697, 0x2F69, 0x0D28, 0x2F6A,
+ 0x0D7D, 0x2F6B, 0x087C, 0x2F6C, 0x0EE8, 0x2F6D, 0x0EC3, 0x2F6E, 0x0EFC,
+ 0x2F6F, 0x0A74, 0x2F70, 0x08D4, 0x2F71, 0x3A41, 0x2F72, 0x0553, 0x2F73,
+ 0x0740, 0x2F74, 0x0F71, 0x2F75, 0x0B9B, 0x2F76, 0x0E16, 0x2F77, 0x08B3,
+ 0x2F78, 0x0608, 0x2F79, 0x1813, 0x2F7A, 0x0F3D, 0x2F7B, 0x04CB, 0x2F7C,
+ 0x0FDD, 0x2F7D, 0x08D5, 0x2F7E, 0x183D, 0x2F7F, 0x08D6, 0x2F80, 0x1853,
+ 0x2F81, 0x0CD1, 0x2F82, 0x0A09, 0x2F83, 0x08D7, 0x2F84, 0x08B8, 0x2F85,
+ 0x04D3, 0x2F86, 0x0A89, 0x2F87, 0x0AA6, 0x2F88, 0x0938, 0x2F89, 0x0821,
+ 0x2F8A, 0x09ED, 0x2F8B, 0x18B2, 0x2F8C, 0x194F, 0x2F8D, 0x0BAC, 0x2F8E,
+ 0x0742, 0x2F8F, 0x07E6, 0x2F90, 0x04A5, 0x2F91, 0x19EB, 0x2F92, 0x075F,
+ 0x2F93, 0x05AF, 0x2F94, 0x0774, 0x2F95, 0x0B69, 0x2F96, 0x0C7E, 0x2F97,
+ 0x1A56, 0x2F98, 0x1A59, 0x2F99, 0x058B, 0x2F9A, 0x0A7A, 0x2F9B, 0x0AF8,
+ 0x2F9C, 0x0B0D, 0x2F9D, 0x0A0E, 0x2F9E, 0x0902, 0x2F9F, 0x0A0F, 0x2FA0,
+ 0x0B62, 0x2FA1, 0x3B4F, 0x2FA2, 0x0F22, 0x2FA3, 0x0CAB, 0x2FA4, 0x0D64,
+ 0x2FA5, 0x0F6C, 0x2FA6, 0x06DA, 0x2FA7, 0x0BD5, 0x2FA8, 0x0EF3, 0x2FA9,
+ 0x0DDE, 0x2FAA, 0x1BC9, 0x2FAB, 0x1BCB, 0x2FAC, 0x04CD, 0x2FAD, 0x21F7,
+ 0x2FAE, 0x0D87, 0x2FAF, 0x0ED8, 0x2FB0, 0x05B5, 0x2FB1, 0x1C03, 0x2FB2,
+ 0x1C05, 0x2FB3, 0x053B, 0x2FB4, 0x0E17, 0x2FB5, 0x0DE9, 0x2FB6, 0x0D88,
+ 0x2FB7, 0x09EF, 0x2FB8, 0x091F, 0x2FB9, 0x07F3, 0x2FBA, 0x0D05, 0x2FBB,
+ 0x080E, 0x2FBC, 0x07F4, 0x2FBD, 0x1C6C, 0x2FBE, 0x1C7D, 0x2FBF, 0x1C83,
+ 0x2FC0, 0x1C84, 0x2FC1, 0x064E, 0x2FC2, 0x0695, 0x2FC3, 0x0BD7, 0x2FC4,
+ 0x1CF6, 0x2FC5, 0x08DB, 0x2FC6, 0x1D01, 0x2FC7, 0x0E91, 0x2FC8, 0x340B,
+ 0x2FC9, 0x066A, 0x2FCA, 0x0807, 0x2FCB, 0x1D16, 0x2FCC, 0x1D19, 0x2FCD,
+ 0x0C1E, 0x2FCE, 0x0791, 0x2FCF, 0x0ACF, 0x2FD0, 0x0D93, 0x2FD1, 0x1D21,
+ 0x2FD2, 0x1D22, 0x2FD3, 0x0F7E, 0x2FD4, 0x1D30, 0x2FD5, 0x1D31, 0x3000,
+ 0x0279, 0x3001, 0x027A, 0x3002, 0x027B, 0x3003, 0x028F, 0x3004, 0x2074,
+ 0x3005, 0x0291, 0x3006, 0x0292, 0x3007, 0x0293, 0x3008, 0x02AA, 0x3009,
+ 0x02AB, 0x300A, 0x02AC, 0x300B, 0x02AD, 0x300C, 0x02AE, 0x300D, 0x02AF,
+ 0x300E, 0x02B0, 0x300F, 0x02B1, 0x3010, 0x02B2, 0x3011, 0x02B3, 0x3012,
+ 0x02DF, 0x3013, 0x02E4, 0x3014, 0x02A4, 0x3015, 0x02A5, 0x301C, 0x0299,
+ 0x301D, 0x1DB8, 0x301F, 0x1DB9, 0x3020, 0x1F7A, 0x3030, 0x2FBA, 0x3033,
+ 0x2F4C, 0x3034, 0x2F4D, 0x3035, 0x2F4E, 0x3036, 0x1F79, 0x3041, 0x034A,
+ 0x3042, 0x034B, 0x3043, 0x034C, 0x3044, 0x034D, 0x3045, 0x034E, 0x3046,
+ 0x034F, 0x3047, 0x0350, 0x3048, 0x0351, 0x3049, 0x0352, 0x304A, 0x0353,
+ 0x304B, 0x0354, 0x304C, 0x0355, 0x304D, 0x0356, 0x304E, 0x0357, 0x304F,
+ 0x0358, 0x3050, 0x0359, 0x3051, 0x035A, 0x3052, 0x035B, 0x3053, 0x035C,
+ 0x3054, 0x035D, 0x3055, 0x035E, 0x3056, 0x035F, 0x3057, 0x0360, 0x3058,
+ 0x0361, 0x3059, 0x0362, 0x305A, 0x0363, 0x305B, 0x0364, 0x305C, 0x0365,
+ 0x305D, 0x0366, 0x305E, 0x0367, 0x305F, 0x0368, 0x3060, 0x0369, 0x3061,
+ 0x036A, 0x3062, 0x036B, 0x3063, 0x036C, 0x3064, 0x036D, 0x3065, 0x036E,
+ 0x3066, 0x036F, 0x3067, 0x0370, 0x3068, 0x0371, 0x3069, 0x0372, 0x306A,
+ 0x0373, 0x306B, 0x0374, 0x306C, 0x0375, 0x306D, 0x0376, 0x306E, 0x0377,
+ 0x306F, 0x0378, 0x3070, 0x0379, 0x3071, 0x037A, 0x3072, 0x037B, 0x3073,
+ 0x037C, 0x3074, 0x037D, 0x3075, 0x037E, 0x3076, 0x037F, 0x3077, 0x0380,
+ 0x3078, 0x0381, 0x3079, 0x0382, 0x307A, 0x0383, 0x307B, 0x0384, 0x307C,
+ 0x0385, 0x307D, 0x0386, 0x307E, 0x0387, 0x307F, 0x0388, 0x3080, 0x0389,
+ 0x3081, 0x038A, 0x3082, 0x038B, 0x3083, 0x038C, 0x3084, 0x038D, 0x3085,
+ 0x038E, 0x3086, 0x038F, 0x3087, 0x0390, 0x3088, 0x0391, 0x3089, 0x0392,
+ 0x308A, 0x0393, 0x308B, 0x0394, 0x308C, 0x0395, 0x308D, 0x0396, 0x308E,
+ 0x0397, 0x308F, 0x0398, 0x3090, 0x0399, 0x3091, 0x039A, 0x3092, 0x039B,
+ 0x3093, 0x039C, 0x3094, 0x1F16, 0x309B, 0x0283, 0x309C, 0x0284, 0x309D,
+ 0x028D, 0x309E, 0x028E, 0x30A1, 0x039D, 0x30A2, 0x039E, 0x30A3, 0x039F,
+ 0x30A4, 0x03A0, 0x30A5, 0x03A1, 0x30A6, 0x03A2, 0x30A7, 0x03A3, 0x30A8,
+ 0x03A4, 0x30A9, 0x03A5, 0x30AA, 0x03A6, 0x30AB, 0x03A7, 0x30AC, 0x03A8,
+ 0x30AD, 0x03A9, 0x30AE, 0x03AA, 0x30AF, 0x03AB, 0x30B0, 0x03AC, 0x30B1,
+ 0x03AD, 0x30B2, 0x03AE, 0x30B3, 0x03AF, 0x30B4, 0x03B0, 0x30B5, 0x03B1,
+ 0x30B6, 0x03B2, 0x30B7, 0x03B3, 0x30B8, 0x03B4, 0x30B9, 0x03B5, 0x30BA,
+ 0x03B6, 0x30BB, 0x03B7, 0x30BC, 0x03B8, 0x30BD, 0x03B9, 0x30BE, 0x03BA,
+ 0x30BF, 0x03BB, 0x30C0, 0x03BC, 0x30C1, 0x03BD, 0x30C2, 0x03BE, 0x30C3,
+ 0x03BF, 0x30C4, 0x03C0, 0x30C5, 0x03C1, 0x30C6, 0x03C2, 0x30C7, 0x03C3,
+ 0x30C8, 0x03C4, 0x30C9, 0x03C5, 0x30CA, 0x03C6, 0x30CB, 0x03C7, 0x30CC,
+ 0x03C8, 0x30CD, 0x03C9, 0x30CE, 0x03CA, 0x30CF, 0x03CB, 0x30D0, 0x03CC,
+ 0x30D1, 0x03CD, 0x30D2, 0x03CE, 0x30D3, 0x03CF, 0x30D4, 0x03D0, 0x30D5,
+ 0x03D1, 0x30D6, 0x03D2, 0x30D7, 0x03D3, 0x30D8, 0x03D4, 0x30D9, 0x03D5,
+ 0x30DA, 0x03D6, 0x30DB, 0x03D7, 0x30DC, 0x03D8, 0x30DD, 0x03D9, 0x30DE,
+ 0x03DA, 0x30DF, 0x03DB, 0x30E0, 0x03DC, 0x30E1, 0x03DD, 0x30E2, 0x03DE,
+ 0x30E3, 0x03DF, 0x30E4, 0x03E0, 0x30E5, 0x03E1, 0x30E6, 0x03E2, 0x30E7,
+ 0x03E3, 0x30E8, 0x03E4, 0x30E9, 0x03E5, 0x30EA, 0x03E6, 0x30EB, 0x03E7,
+ 0x30EC, 0x03E8, 0x30ED, 0x03E9, 0x30EE, 0x03EA, 0x30EF, 0x03EB, 0x30F0,
+ 0x03EC, 0x30F1, 0x03ED, 0x30F2, 0x03EE, 0x30F3, 0x03EF, 0x30F4, 0x03F0,
+ 0x30F5, 0x03F1, 0x30F6, 0x03F2, 0x30F7, 0x2079, 0x30F8, 0x207A, 0x30F9,
+ 0x207B, 0x30FA, 0x207C, 0x30FB, 0x027E, 0x30FC, 0x0294, 0x30FD, 0x028B,
+ 0x30FE, 0x028C, 0x3220, 0x278E, 0x3221, 0x278F, 0x3222, 0x2790, 0x3223,
+ 0x2791, 0x3224, 0x2792, 0x3225, 0x2793, 0x3226, 0x2794, 0x3227, 0x2795,
+ 0x3228, 0x2796, 0x3229, 0x2797, 0x322A, 0x2006, 0x322B, 0x2007, 0x322C,
+ 0x2008, 0x322D, 0x2009, 0x322E, 0x200A, 0x322F, 0x200B, 0x3230, 0x2005,
+ 0x3231, 0x1DC2, 0x3232, 0x1DC3, 0x3233, 0x1FCF, 0x3234, 0x1FCD, 0x3235,
+ 0x1FD4, 0x3236, 0x1FD3, 0x3237, 0x200C, 0x3238, 0x1FCE, 0x3239, 0x1DC4,
+ 0x323A, 0x1FD7, 0x323B, 0x1FD5, 0x323C, 0x1FD0, 0x323D, 0x1FCB, 0x323E,
+ 0x1FD2, 0x323F, 0x1FCC, 0x3240, 0x1FD6, 0x3241, 0x200D, 0x3242, 0x1FD1,
+ 0x3243, 0x1FCA, 0x3280, 0x28DD, 0x3281, 0x28DE, 0x3282, 0x28DF, 0x3283,
+ 0x28E0, 0x3284, 0x28E1, 0x3285, 0x28E2, 0x3286, 0x28E3, 0x3287, 0x28E4,
+ 0x3288, 0x28E5, 0x3289, 0x28E6, 0x328A, 0x28E8, 0x328B, 0x28E9, 0x328C,
+ 0x28EA, 0x328D, 0x28EB, 0x328E, 0x28EC, 0x328F, 0x28ED, 0x3290, 0x28E7,
+ 0x3291, 0x1FE1, 0x3292, 0x1FE0, 0x3293, 0x1FE2, 0x3294, 0x1FDC, 0x3295,
+ 0x28FF, 0x3296, 0x1FE5, 0x3297, 0x28FC, 0x3298, 0x1FDE, 0x3299, 0x201F,
+ 0x329A, 0x28F9, 0x329B, 0x28F8, 0x329C, 0x28FE, 0x329D, 0x207F, 0x329E,
+ 0x1FFF, 0x329F, 0x28EF, 0x32A0, 0x28F6, 0x32A1, 0x28F7, 0x32A2, 0x28FB,
+ 0x32A3, 0x28FA, 0x32A4, 0x1DBD, 0x32A5, 0x1DBE, 0x32A6, 0x1DBF, 0x32A7,
+ 0x1DC0, 0x32A8, 0x1DC1, 0x32A9, 0x1FDA, 0x32AA, 0x1FDD, 0x32AB, 0x1FDF,
+ 0x32AC, 0x1FE3, 0x32AD, 0x1FD9, 0x32AE, 0x1FE4, 0x32AF, 0x1FDB, 0x32B0,
+ 0x1FD8, 0x32D0, 0x28AD, 0x32D1, 0x28AE, 0x32D2, 0x28AF, 0x32D3, 0x28B0,
+ 0x32D4, 0x28B1, 0x32D5, 0x28B2, 0x32D6, 0x28B3, 0x32D7, 0x28B4, 0x32D8,
+ 0x28B5, 0x32D9, 0x28B6, 0x32DA, 0x28B7, 0x32DB, 0x28B8, 0x32DC, 0x28B9,
+ 0x32DD, 0x28BA, 0x32DE, 0x28BB, 0x32DF, 0x28BC, 0x32E0, 0x28BD, 0x32E1,
+ 0x28BE, 0x32E2, 0x28BF, 0x32E3, 0x28C0, 0x32E4, 0x28C1, 0x32E5, 0x28C2,
+ 0x32E6, 0x28C3, 0x32E7, 0x28C4, 0x32E8, 0x28C5, 0x32E9, 0x28C6, 0x32EA,
+ 0x28C7, 0x32EB, 0x28C8, 0x32EC, 0x28C9, 0x32ED, 0x28CA, 0x32EE, 0x28CB,
+ 0x32EF, 0x28CC, 0x32F0, 0x28CD, 0x32F1, 0x28CE, 0x32F2, 0x28CF, 0x32F3,
+ 0x28D0, 0x32F4, 0x28D1, 0x32F5, 0x28D2, 0x32F6, 0x28D3, 0x32F7, 0x28D4,
+ 0x32F8, 0x28D5, 0x32F9, 0x28D6, 0x32FA, 0x28D7, 0x32FB, 0x28D8, 0x32FC,
+ 0x28D9, 0x32FD, 0x28DA, 0x32FE, 0x28DB, 0x3300, 0x1F70, 0x3301, 0x2E62,
+ 0x3302, 0x2E63, 0x3303, 0x1F6A, 0x3304, 0x2E64, 0x3305, 0x1FF7, 0x3306,
+ 0x2E65, 0x3307, 0x2E69, 0x3308, 0x2E67, 0x3309, 0x2E6C, 0x330A, 0x2E6A,
+ 0x330B, 0x2E6E, 0x330C, 0x2E70, 0x330D, 0x1DAB, 0x330E, 0x2E71, 0x330F,
+ 0x2E72, 0x3310, 0x2E73, 0x3311, 0x2E74, 0x3312, 0x2E75, 0x3313, 0x2E76,
+ 0x3314, 0x1DA2, 0x3315, 0x1F69, 0x3316, 0x1F67, 0x3317, 0x2E78, 0x3318,
+ 0x1F68, 0x3319, 0x2E7A, 0x331A, 0x2E7C, 0x331B, 0x2E7D, 0x331C, 0x2E7E,
+ 0x331D, 0x2E7F, 0x331E, 0x1F73, 0x331F, 0x2E80, 0x3320, 0x2E81, 0x3321,
+ 0x2E82, 0x3322, 0x1F66, 0x3323, 0x1F6B, 0x3324, 0x2E83, 0x3325, 0x2E85,
+ 0x3326, 0x1DAC, 0x3327, 0x1DA6, 0x3328, 0x2E88, 0x3329, 0x2E89, 0x332A,
+ 0x1F74, 0x332B, 0x1DAE, 0x332D, 0x2E8B, 0x332E, 0x2E8E, 0x332F, 0x2E8F,
+ 0x3330, 0x2E90, 0x3331, 0x1F71, 0x3332, 0x2E91, 0x3333, 0x2087, 0x3334,
+ 0x2E94, 0x3335, 0x2E95, 0x3336, 0x1DA8, 0x3337, 0x2E9A, 0x3338, 0x2E9C,
+ 0x3339, 0x1F6E, 0x333A, 0x2E9D, 0x333B, 0x1F6F, 0x333C, 0x2E96, 0x333D,
+ 0x2E9E, 0x333E, 0x2EA0, 0x333F, 0x2EA1, 0x3340, 0x2EA2, 0x3341, 0x2E9F,
+ 0x3342, 0x1F6D, 0x3343, 0x2EA3, 0x3344, 0x2EA4, 0x3345, 0x2EA5, 0x3346,
+ 0x2EA6, 0x3347, 0x1F72, 0x3348, 0x2EA7, 0x3349, 0x1DA1, 0x334A, 0x1DAF,
+ 0x334B, 0x2EA8, 0x334C, 0x2EA9, 0x334D, 0x1DA4, 0x334E, 0x2088, 0x334F,
+ 0x2EAA, 0x3350, 0x2EAB, 0x3351, 0x1DA9, 0x3352, 0x2EAE, 0x3353, 0x2EB2,
+ 0x3354, 0x2EAF, 0x3355, 0x2EB3, 0x3356, 0x2EB4, 0x3357, 0x1F6C, 0x3371,
+ 0x2E55, 0x337B, 0x2083, 0x337C, 0x1DC7, 0x337D, 0x1DC6, 0x337E, 0x1DC5,
+ 0x337F, 0x1F76, 0x3385, 0x1F5F, 0x3386, 0x1F60, 0x3387, 0x1F61, 0x3388,
+ 0x2000, 0x3389, 0x2001, 0x338D, 0x2E58, 0x338E, 0x1DB4, 0x338F, 0x1DB5,
+ 0x3390, 0x1F63, 0x3396, 0x1F65, 0x3397, 0x1F58, 0x3398, 0x1F5A, 0x339B,
+ 0x2E59, 0x339C, 0x1DB1, 0x339D, 0x1DB2, 0x339E, 0x1DB3, 0x339F, 0x1FFA,
+ 0x33A0, 0x1F54, 0x33A1, 0x1DB7, 0x33A2, 0x1F55, 0x33A3, 0x1FFB, 0x33A4,
+ 0x1F56, 0x33A5, 0x1F57, 0x33A6, 0x1FFC, 0x33B0, 0x1F5E, 0x33B1, 0x1F5D,
+ 0x33B2, 0x1F5C, 0x33B3, 0x1F5B, 0x33C2, 0x2E50, 0x33C4, 0x1DB6, 0x33C8,
+ 0x2002, 0x33CB, 0x1F62, 0x33CC, 0x1FF6, 0x33CD, 0x1DBB, 0x33D4, 0x1F64,
+ 0x33D7, 0x2E5D, 0x33D8, 0x2E5E, 0x33DA, 0x2E4B, 0x3402, 0x3582, 0x3405,
+ 0x3C1B, 0x3427, 0x3656, 0x3488, 0x3C52, 0x34DB, 0x3C41, 0x351F, 0x3629,
+ 0x353E, 0x371E, 0x378D, 0x361A, 0x37E2, 0x372B, 0x3AF3, 0x3C40, 0x3B22,
+ 0x3C49, 0x3B88, 0x368D, 0x3E8A, 0x3C43, 0x3EDA, 0x3C48, 0x3FB1, 0x3754,
+ 0x4093, 0x3C4C, 0x4103, 0x3C4F, 0x4264, 0x3760, 0x4293, 0x3C50, 0x440C,
+ 0x3C42, 0x4453, 0x3773, 0x457A, 0x3C4B, 0x4665, 0x3C4E, 0x46AE, 0x3C51,
+ 0x4BE8, 0x3C46, 0x4E00, 0x04B0, 0x4E01, 0x0BB8, 0x4E03, 0x08E3, 0x4E04,
+ 0x37D8, 0x4E05, 0x37D9, 0x4E07, 0x0EAA, 0x4E08, 0x09CE, 0x4E09, 0x087E,
+ 0x4E0A, 0x09CD, 0x4E0B, 0x053C, 0x4E0D, 0x0DC6, 0x4E0E, 0x0F29, 0x4E10,
+ 0x0FFB, 0x4E11, 0x04D1, 0x4E14, 0x05CC, 0x4E15, 0x0FFC, 0x4E16, 0x0A48,
+ 0x4E17, 0x10D7, 0x4E18, 0x0670, 0x4E19, 0x0E0A, 0x4E1E, 0x09CF, 0x4E1F,
+ 0x37DA, 0x4E21, 0x0F86, 0x4E26, 0x0E12, 0x4E28, 0x20B3, 0x4E2A, 0x0FFD,
+ 0x4E2B, 0x37DB, 0x4E2C, 0x374D, 0x4E2D, 0x0BA4, 0x4E2F, 0x37DC, 0x4E30,
+ 0x37DD, 0x4E31, 0x0FFE, 0x4E32, 0x06F2, 0x4E36, 0x0FFF, 0x4E37, 0x369D,
+ 0x4E38, 0x0619, 0x4E39, 0x0B6E, 0x4E3B, 0x0913, 0x4E3C, 0x1000, 0x4E3F,
+ 0x1001, 0x4E40, 0x37DE, 0x4E41, 0x37DF, 0x4E42, 0x1002, 0x4E43, 0x0CEB,
+ 0x4E44, 0x37E0, 0x4E45, 0x0671, 0x4E48, 0x372E, 0x4E4B, 0x0CED, 0x4E4D,
+ 0x0CBB, 0x4E4E, 0x0777, 0x4E4F, 0x0E61, 0x4E55, 0x1950, 0x4E56, 0x1003,
+ 0x4E57, 0x09D0, 0x4E58, 0x1004, 0x4E59, 0x0535, 0x4E5A, 0x37E1, 0x4E5D,
+ 0x06DD, 0x4E5E, 0x07A4, 0x4E5F, 0x0EF5, 0x4E62, 0x1233, 0x4E71, 0x0F5A,
+ 0x4E73, 0x0CD5, 0x4E7E, 0x05E1, 0x4E7F, 0x37E2, 0x4E80, 0x064F, 0x4E82,
+ 0x1005, 0x4E85, 0x1006, 0x4E86, 0x0F83, 0x4E88, 0x0F27, 0x4E89, 0x0AEA,
+ 0x4E8A, 0x1008, 0x4E8B, 0x08C4, 0x4E8C, 0x0CCB, 0x4E8D, 0x37E3, 0x4E8E,
+ 0x100B, 0x4E91, 0x04E0, 0x4E92, 0x0793, 0x4E94, 0x0792, 0x4E95, 0x04AA,
+ 0x4E96, 0x37E4, 0x4E98, 0x0FF1, 0x4E99, 0x0FF0, 0x4E9B, 0x0823, 0x4E9C,
+ 0x0465, 0x4E9E, 0x100C, 0x4E9F, 0x100D, 0x4EA0, 0x100E, 0x4EA1, 0x0E62,
+ 0x4EA2, 0x100F, 0x4EA4, 0x07A6, 0x4EA5, 0x04AB, 0x4EA6, 0x0EA0, 0x4EA8,
+ 0x0696, 0x4EAB, 0x0697, 0x4EAC, 0x0698, 0x4EAD, 0x0BFE, 0x4EAE, 0x0F84,
+ 0x4EB0, 0x1010, 0x4EB3, 0x1011, 0x4EB6, 0x1012, 0x4EB9, 0x37E5, 0x4EBA,
+ 0x0A13, 0x4EBB, 0x3620, 0x4EC0, 0x0944, 0x4EC1, 0x0A14, 0x4EC2, 0x1017,
+ 0x4EC4, 0x1015, 0x4EC6, 0x1016, 0x4EC7, 0x0672, 0x4ECA, 0x0813, 0x4ECB,
+ 0x0570, 0x4ECD, 0x1014, 0x4ECE, 0x1013, 0x4ECF, 0x0DF9, 0x4ED0, 0x37E6,
+ 0x4ED4, 0x0894, 0x4ED5, 0x0893, 0x4ED6, 0x0B1E, 0x4ED7, 0x1018, 0x4ED8,
+ 0x0DC7, 0x4ED9, 0x0A8B, 0x4EDD, 0x0290, 0x4EDE, 0x1019, 0x4EDF, 0x101B,
+ 0x4EE0, 0x37E7, 0x4EE1, 0x20B4, 0x4EE3, 0x0B45, 0x4EE4, 0x0FA9, 0x4EE5,
+ 0x048E, 0x4EED, 0x101A, 0x4EEE, 0x053E, 0x4EF0, 0x06BC, 0x4EF2, 0x0BA5,
+ 0x4EF6, 0x0745, 0x4EF7, 0x101C, 0x4EFB, 0x0CDA, 0x4EFC, 0x20B5, 0x4EFD,
+ 0x37E8, 0x4EFF, 0x37E9, 0x4F00, 0x20B6, 0x4F01, 0x0627, 0x4F03, 0x20B7,
+ 0x4F09, 0x101D, 0x4F0A, 0x048F, 0x4F0B, 0x37EA, 0x4F0D, 0x0794, 0x4F0E,
+ 0x0628, 0x4F0F, 0x0DEC, 0x4F10, 0x0D46, 0x4F11, 0x0673, 0x4F15, 0x37EB,
+ 0x4F1A, 0x0571, 0x4F1C, 0x1040, 0x4F1D, 0x0C3B, 0x4F2F, 0x0D22, 0x4F30,
+ 0x101F, 0x4F34, 0x0D50, 0x4F36, 0x0FAA, 0x4F38, 0x09F3, 0x4F39, 0x20B8,
+ 0x4F3A, 0x0895, 0x4F3B, 0x37ED, 0x4F3C, 0x08C5, 0x4F3D, 0x0540, 0x4F43,
+ 0x0BED, 0x4F46, 0x0B60, 0x4F47, 0x1023, 0x4F49, 0x37EE, 0x4F4D, 0x0490,
+ 0x4F4E, 0x0BFF, 0x4F4F, 0x0945, 0x4F50, 0x0824, 0x4F51, 0x0F0E, 0x4F53,
+ 0x0B2E, 0x4F54, 0x37EF, 0x4F55, 0x053F, 0x4F56, 0x20B9, 0x4F57, 0x1022,
+ 0x4F59, 0x0F28, 0x4F5A, 0x101E, 0x4F5B, 0x1020, 0x4F5C, 0x085E, 0x4F5D,
+ 0x1021, 0x4F5E, 0x11D3, 0x4F60, 0x37EC, 0x4F69, 0x1029, 0x4F6F, 0x102C,
+ 0x4F70, 0x102A, 0x4F73, 0x0542, 0x4F75, 0x0E0B, 0x4F76, 0x1024, 0x4F7A,
+ 0x37F0, 0x4F7B, 0x1028, 0x4F7C, 0x07A7, 0x4F7D, 0x37F1, 0x4F7E, 0x37F2,
+ 0x4F7F, 0x0896, 0x4F83, 0x05E2, 0x4F86, 0x102D, 0x4F88, 0x1025, 0x4F8A,
+ 0x20BB, 0x4F8B, 0x0FAB, 0x4F8D, 0x08C6, 0x4F8F, 0x1026, 0x4F91, 0x102B,
+ 0x4F92, 0x20BA, 0x4F94, 0x20BD, 0x4F96, 0x102E, 0x4F97, 0x37F3, 0x4F98,
+ 0x1027, 0x4F9A, 0x20BC, 0x4F9B, 0x0699, 0x4F9D, 0x0491, 0x4FA0, 0x069A,
+ 0x4FA1, 0x0541, 0x4FAB, 0x11D4, 0x4FAD, 0x0EA7, 0x4FAE, 0x0DE0, 0x4FAF,
+ 0x07A8, 0x4FB5, 0x09F5, 0x4FB6, 0x0F7F, 0x4FBE, 0x37F4, 0x4FBF, 0x0E28,
+ 0x4FC2, 0x070E, 0x4FC3, 0x0B05, 0x4FC4, 0x0564, 0x4FC9, 0x20AC, 0x4FCA,
+ 0x095D, 0x4FCD, 0x20BE, 0x4FCE, 0x1032, 0x4FCF, 0x37F5, 0x4FD0, 0x1037,
+ 0x4FD1, 0x1035, 0x4FD3, 0x3C2F, 0x4FD4, 0x1030, 0x4FD7, 0x0B0F, 0x4FD8,
+ 0x1033, 0x4FDA, 0x1036, 0x4FDB, 0x1034, 0x4FDD, 0x0E2D, 0x4FDF, 0x1031,
+ 0x4FE0, 0x1DEC, 0x4FE1, 0x09F4, 0x4FE3, 0x0EA1, 0x4FE4, 0x1038, 0x4FE5,
+ 0x1039, 0x4FEE, 0x092E, 0x4FEF, 0x1046, 0x4FF3, 0x0D06, 0x4FF5, 0x0DA8,
+ 0x4FF6, 0x1041, 0x4FF8, 0x0E40, 0x4FFA, 0x0536, 0x4FFD, 0x37F6, 0x4FFE,
+ 0x1045, 0x4FFF, 0x20C1, 0x5000, 0x37F7, 0x5001, 0x37F8, 0x5002, 0x3447,
+ 0x5005, 0x103F, 0x5006, 0x1048, 0x5009, 0x0AD4, 0x500B, 0x0778, 0x500D,
+ 0x0D12, 0x500F, 0x1600, 0x5010, 0x37F9, 0x5011, 0x1047, 0x5012, 0x0C57,
+ 0x5014, 0x103C, 0x5016, 0x07AA, 0x5019, 0x07A9, 0x501A, 0x103A, 0x501B,
+ 0x37FA, 0x501E, 0x20C2, 0x501F, 0x0906, 0x5021, 0x1042, 0x5022, 0x20C0,
+ 0x5023, 0x0E3F, 0x5024, 0x0B8B, 0x5025, 0x103E, 0x5026, 0x0747, 0x5027,
+ 0x37FB, 0x5028, 0x103B, 0x5029, 0x1043, 0x502A, 0x103D, 0x502B, 0x0F99,
+ 0x502C, 0x1044, 0x502D, 0x0FE7, 0x502E, 0x37FC, 0x5036, 0x06DE, 0x5039,
+ 0x0746, 0x503B, 0x3800, 0x5040, 0x20BF, 0x5042, 0x20C5, 0x5043, 0x1049,
+ 0x5046, 0x20C3, 0x5047, 0x104A, 0x5048, 0x104E, 0x5049, 0x0492, 0x504F,
+ 0x0E20, 0x5050, 0x104D, 0x5055, 0x104C, 0x5056, 0x1050, 0x5057, 0x37FD,
+ 0x505A, 0x104F, 0x505C, 0x0C00, 0x5065, 0x0748, 0x5066, 0x37FE, 0x506A,
+ 0x37FF, 0x506C, 0x1051, 0x5070, 0x20C4, 0x5072, 0x08F1, 0x5074, 0x0B06,
+ 0x5075, 0x0C01, 0x5076, 0x06EE, 0x5078, 0x1052, 0x507D, 0x0650, 0x5080,
+ 0x1053, 0x5085, 0x1055, 0x508D, 0x0E63, 0x508F, 0x3801, 0x5091, 0x073C,
+ 0x5094, 0x20C6, 0x5096, 0x3802, 0x5098, 0x087F, 0x5099, 0x0D8B, 0x509A,
+ 0x1054, 0x509C, 0x3803, 0x50AC, 0x0835, 0x50AD, 0x0F2D, 0x50B2, 0x1057,
+ 0x50B3, 0x105A, 0x50B4, 0x1056, 0x50B5, 0x0834, 0x50B7, 0x0987, 0x50BE,
+ 0x070F, 0x50C2, 0x105B, 0x50C5, 0x06C7, 0x50C9, 0x1058, 0x50CA, 0x1059,
+ 0x50CC, 0x3804, 0x50CD, 0x0C87, 0x50CF, 0x0AFE, 0x50D1, 0x069B, 0x50D5,
+ 0x0E7B, 0x50D6, 0x105C, 0x50D8, 0x20C8, 0x50D9, 0x3C30, 0x50DA, 0x0F85,
+ 0x50DE, 0x105D, 0x50E3, 0x1060, 0x50E5, 0x105E, 0x50E6, 0x3805, 0x50E7,
+ 0x0AD0, 0x50E9, 0x3806, 0x50ED, 0x105F, 0x50EE, 0x1061, 0x50EF, 0x3807,
+ 0x50F0, 0x3C31, 0x50F4, 0x20C7, 0x50F5, 0x1063, 0x50F9, 0x1062, 0x50FB,
+ 0x0E18, 0x5100, 0x0651, 0x5101, 0x1065, 0x5102, 0x1066, 0x5104, 0x052F,
+ 0x5108, 0x3808, 0x5109, 0x1064, 0x510B, 0x3809, 0x5110, 0x380A, 0x5112,
+ 0x0920, 0x5114, 0x1069, 0x5115, 0x1068, 0x5116, 0x1067, 0x5118, 0x102F,
+ 0x511A, 0x106A, 0x511B, 0x380B, 0x511E, 0x380C, 0x511F, 0x0988, 0x5121,
+ 0x106B, 0x512A, 0x0F0F, 0x5132, 0x0EE5, 0x5137, 0x106D, 0x513A, 0x106C,
+ 0x513B, 0x106F, 0x513C, 0x106E, 0x513F, 0x1070, 0x5140, 0x1071, 0x5141,
+ 0x04B8, 0x5143, 0x0769, 0x5144, 0x0711, 0x5145, 0x0946, 0x5146, 0x0BB9,
+ 0x5147, 0x069C, 0x5148, 0x0A8C, 0x5149, 0x07AB, 0x514A, 0x20C9, 0x514B,
+ 0x0800, 0x514C, 0x1073, 0x514D, 0x0ED4, 0x514E, 0x0C40, 0x5150, 0x08C7,
+ 0x5152, 0x1072, 0x5154, 0x1074, 0x515A, 0x0C58, 0x515C, 0x05D3, 0x515F,
+ 0x380D, 0x5162, 0x1075, 0x5164, 0x20CA, 0x5165, 0x0CD6, 0x5167, 0x368E,
+ 0x5168, 0x0AB6, 0x5169, 0x1077, 0x516A, 0x1078, 0x516B, 0x0D40, 0x516C,
+ 0x07AC, 0x516D, 0x0FE1, 0x516E, 0x1079, 0x5171, 0x069E, 0x5175, 0x0E0C,
+ 0x5176, 0x0B16, 0x5177, 0x06E9, 0x5178, 0x0C2F, 0x5179, 0x3779, 0x517C,
+ 0x0749, 0x5180, 0x107A, 0x5182, 0x107B, 0x5185, 0x0CBA, 0x5186, 0x0501,
+ 0x5189, 0x107E, 0x518A, 0x086D, 0x518C, 0x107D, 0x518D, 0x0836, 0x518F,
+ 0x107F, 0x5190, 0x185B, 0x5191, 0x1080, 0x5192, 0x0E6F, 0x5193, 0x1081,
+ 0x5195, 0x1082, 0x5196, 0x1083, 0x5197, 0x09D1, 0x5199, 0x08F8, 0x519D,
+ 0x20CB, 0x51A0, 0x05E3, 0x51A1, 0x380E, 0x51A2, 0x1086, 0x51A4, 0x1084,
+ 0x51A5, 0x0EC9, 0x51A6, 0x1085, 0x51A8, 0x0DCC, 0x51A9, 0x1087, 0x51AA,
+ 0x1088, 0x51AB, 0x1089, 0x51AC, 0x0C59, 0x51B0, 0x108D, 0x51B1, 0x108B,
+ 0x51B2, 0x108C, 0x51B3, 0x108A, 0x51B4, 0x0853, 0x51B5, 0x108E, 0x51B6,
+ 0x0EF6, 0x51B7, 0x0FAC, 0x51BC, 0x380F, 0x51BD, 0x108F, 0x51BE, 0x20CC,
+ 0x51C3, 0x3C32, 0x51C4, 0x0A4C, 0x51C5, 0x1090, 0x51C6, 0x0964, 0x51C9,
+ 0x1091, 0x51CB, 0x0BBA, 0x51CC, 0x0F87, 0x51CD, 0x0C5A, 0x51D6, 0x10DA,
+ 0x51DB, 0x1092, 0x51DC, 0x205C, 0x51DD, 0x06BD, 0x51DE, 0x3810, 0x51E0,
+ 0x1093, 0x51E1, 0x0E8C, 0x51E6, 0x0972, 0x51E7, 0x0B5C, 0x51E9, 0x1095,
+ 0x51EA, 0x0CBC, 0x51EC, 0x20CD, 0x51ED, 0x1096, 0x51EE, 0x3811, 0x51F0,
+ 0x1097, 0x51F1, 0x058C, 0x51F4, 0x3812, 0x51F5, 0x1098, 0x51F6, 0x069F,
+ 0x51F8, 0x0CA4, 0x51F9, 0x051C, 0x51FA, 0x095A, 0x51FD, 0x0D35, 0x51FE,
+ 0x1099, 0x5200, 0x0C5B, 0x5201, 0x3813, 0x5202, 0x3814, 0x5203, 0x0A15,
+ 0x5204, 0x109A, 0x5206, 0x0DFC, 0x5207, 0x0A7E, 0x5208, 0x05DE, 0x520A,
+ 0x05E5, 0x520B, 0x109B, 0x520E, 0x109D, 0x5211, 0x0710, 0x5213, 0x3815,
+ 0x5214, 0x109C, 0x5215, 0x20CE, 0x5217, 0x0FBB, 0x521D, 0x0973, 0x5224,
+ 0x0D51, 0x5225, 0x0E1C, 0x5227, 0x109E, 0x5229, 0x0F62, 0x522A, 0x109F,
+ 0x522E, 0x10A0, 0x5230, 0x0C78, 0x5233, 0x10A1, 0x5236, 0x0A4D, 0x5237,
+ 0x086E, 0x5238, 0x074A, 0x5239, 0x10A2, 0x523A, 0x0897, 0x523B, 0x0801,
+ 0x5243, 0x0C02, 0x5244, 0x10A4, 0x5247, 0x0B07, 0x5249, 0x3816, 0x524A,
+ 0x085F, 0x524B, 0x10A5, 0x524C, 0x10A6, 0x524D, 0x0AB2, 0x524F, 0x10A3,
+ 0x5254, 0x10A8, 0x5256, 0x0E64, 0x525B, 0x07F6, 0x525D, 0x1E5E, 0x525E,
+ 0x10A7, 0x5261, 0x3817, 0x5263, 0x074B, 0x5264, 0x084E, 0x5265, 0x0D23,
+ 0x5266, 0x3818, 0x5269, 0x10AB, 0x526A, 0x10A9, 0x526F, 0x0DED, 0x5270,
+ 0x09D2, 0x5271, 0x10B2, 0x5272, 0x05C2, 0x5273, 0x10AC, 0x5274, 0x10AA,
+ 0x5275, 0x0AD1, 0x527D, 0x10AE, 0x527F, 0x10AD, 0x5283, 0x05A2, 0x5287,
+ 0x0736, 0x5288, 0x10B3, 0x5289, 0x0F75, 0x528D, 0x10AF, 0x5291, 0x10B4,
+ 0x5292, 0x10B1, 0x5293, 0x3819, 0x5294, 0x10B0, 0x529B, 0x0F97, 0x529C,
+ 0x20CF, 0x529F, 0x07AD, 0x52A0, 0x0543, 0x52A3, 0x0FBC, 0x52A6, 0x20D0,
+ 0x52A9, 0x097F, 0x52AA, 0x0C52, 0x52AB, 0x07F7, 0x52AC, 0x10B7, 0x52AD,
+ 0x10B8, 0x52AF, 0x217D, 0x52B1, 0x0FAD, 0x52B4, 0x0FD1, 0x52B5, 0x10BA,
+ 0x52B9, 0x07AE, 0x52BC, 0x10B9, 0x52BE, 0x058D, 0x52C0, 0x20D1, 0x52C1,
+ 0x10BB, 0x52C3, 0x0E84, 0x52C5, 0x0BD8, 0x52C7, 0x0F10, 0x52C8, 0x381A,
+ 0x52C9, 0x0E29, 0x52CD, 0x10BC, 0x52D0, 0x36E8, 0x52D2, 0x1BEE, 0x52D5,
+ 0x0C88, 0x52D7, 0x10BD, 0x52D8, 0x05E6, 0x52D9, 0x0EBF, 0x52DB, 0x20D2,
+ 0x52DD, 0x0989, 0x52DE, 0x10BE, 0x52DF, 0x0E37, 0x52E0, 0x10C2, 0x52E2,
+ 0x0A4E, 0x52E3, 0x10BF, 0x52E4, 0x06C8, 0x52E6, 0x10C0, 0x52E7, 0x05E7,
+ 0x52F0, 0x381B, 0x52F2, 0x0704, 0x52F3, 0x10C3, 0x52F5, 0x10C4, 0x52F8,
+ 0x10C5, 0x52F9, 0x10C6, 0x52FA, 0x0907, 0x52FE, 0x07AF, 0x52FF, 0x0EEA,
+ 0x5300, 0x20D3, 0x5301, 0x0EF4, 0x5302, 0x0CCF, 0x5305, 0x0E41, 0x5306,
+ 0x10C7, 0x5307, 0x20D4, 0x5308, 0x10C8, 0x530A, 0x381C, 0x530B, 0x381D,
+ 0x530D, 0x10CA, 0x530F, 0x10CC, 0x5310, 0x10CB, 0x5315, 0x10CD, 0x5316,
+ 0x053D, 0x5317, 0x0E7A, 0x5319, 0x086C, 0x531A, 0x10CE, 0x531D, 0x0ADB,
+ 0x5320, 0x098A, 0x5321, 0x06A1, 0x5323, 0x10CF, 0x5324, 0x20D5, 0x532A,
+ 0x0D6F, 0x532F, 0x10D0, 0x5331, 0x10D1, 0x5333, 0x10D2, 0x5338, 0x10D3,
+ 0x5339, 0x0D96, 0x533A, 0x06E0, 0x533B, 0x04A9, 0x533E, 0x381E, 0x533F,
+ 0x0C97, 0x5340, 0x10D4, 0x5341, 0x0947, 0x5343, 0x0A8D, 0x5345, 0x10D6,
+ 0x5346, 0x10D5, 0x5347, 0x098B, 0x5348, 0x0795, 0x5349, 0x10D8, 0x534A,
+ 0x0D52, 0x534B, 0x3820, 0x534C, 0x381F, 0x534D, 0x10D9, 0x5351, 0x0D70,
+ 0x5352, 0x0B14, 0x5353, 0x0B4E, 0x5354, 0x06A0, 0x5357, 0x0CC6, 0x5358,
+ 0x0B6F, 0x535A, 0x0D24, 0x535C, 0x0E7C, 0x535E, 0x10DB, 0x5360, 0x0A8E,
+ 0x5361, 0x3821, 0x5366, 0x070B, 0x5369, 0x10DC, 0x536C, 0x3822, 0x536E,
+ 0x10DD, 0x536F, 0x04CE, 0x5370, 0x04B9, 0x5371, 0x0629, 0x5372, 0x20D6,
+ 0x5373, 0x0B08, 0x5374, 0x066B, 0x5375, 0x0F5B, 0x5377, 0x10E0, 0x5378,
+ 0x0537, 0x537B, 0x10DF, 0x537D, 0x3435, 0x537F, 0x06A2, 0x5382, 0x10E1,
+ 0x5384, 0x0EFD, 0x5389, 0x37D0, 0x5393, 0x20D7, 0x5396, 0x10E2, 0x5398,
+ 0x0F9A, 0x539A, 0x07B0, 0x539F, 0x076A, 0x53A0, 0x10E3, 0x53A5, 0x10E5,
+ 0x53A6, 0x10E4, 0x53A8, 0x0A25, 0x53A9, 0x04DB, 0x53AB, 0x3823, 0x53AD,
+ 0x0500, 0x53AE, 0x10E6, 0x53B0, 0x10E7, 0x53B2, 0x20D8, 0x53B3, 0x076B,
+ 0x53B6, 0x10E8, 0x53BB, 0x0688, 0x53C2, 0x0880, 0x53C3, 0x10E9, 0x53C8,
+ 0x0EA2, 0x53C9, 0x0825, 0x53CA, 0x0674, 0x53CB, 0x0F11, 0x53CC, 0x0AD2,
+ 0x53CD, 0x0D53, 0x53CE, 0x0929, 0x53D4, 0x0951, 0x53D6, 0x0914, 0x53D7,
+ 0x0921, 0x53D9, 0x0980, 0x53DA, 0x3824, 0x53DB, 0x0D54, 0x53DD, 0x20D9,
+ 0x53DF, 0x10EC, 0x53E1, 0x04E5, 0x53E2, 0x0AD3, 0x53E3, 0x07B1, 0x53E4,
+ 0x0779, 0x53E5, 0x06DF, 0x53E6, 0x3825, 0x53E8, 0x10F0, 0x53E9, 0x0B5F,
+ 0x53EA, 0x0B5E, 0x53EB, 0x06A3, 0x53EC, 0x098C, 0x53ED, 0x10F1, 0x53EE,
+ 0x10EF, 0x53EF, 0x0544, 0x53F0, 0x0B46, 0x53F1, 0x08E4, 0x53F2, 0x0899,
+ 0x53F3, 0x04C8, 0x53F5, 0x3826, 0x53F6, 0x05CE, 0x53F7, 0x07F8, 0x53F8,
+ 0x0898, 0x53FA, 0x10F2, 0x5401, 0x10F3, 0x5403, 0x0663, 0x5404, 0x05A4,
+ 0x5408, 0x07F9, 0x5409, 0x0662, 0x540A, 0x0BFB, 0x540B, 0x04C7, 0x540C,
+ 0x0C89, 0x540D, 0x0ECA, 0x540E, 0x07B3, 0x540F, 0x0F63, 0x5410, 0x0C41,
+ 0x5411, 0x07B2, 0x541B, 0x0705, 0x541D, 0x10FC, 0x541F, 0x06DB, 0x5420,
+ 0x0E78, 0x5426, 0x0D71, 0x5427, 0x3827, 0x5429, 0x10FB, 0x542B, 0x061A,
+ 0x542C, 0x10F6, 0x542D, 0x10F7, 0x542E, 0x10F9, 0x5433, 0x35C0, 0x5436,
+ 0x10FA, 0x5438, 0x0675, 0x5439, 0x0A27, 0x543B, 0x0DFD, 0x543C, 0x10F8,
+ 0x543D, 0x10F4, 0x543E, 0x0797, 0x543F, 0x35CF, 0x5440, 0x10F5, 0x5442,
+ 0x0FCA, 0x5446, 0x0E42, 0x5448, 0x0C04, 0x5449, 0x0796, 0x544A, 0x0802,
+ 0x544D, 0x3828, 0x544E, 0x10FD, 0x5451, 0x0CB5, 0x5455, 0x3723, 0x545F,
+ 0x1101, 0x5466, 0x3829, 0x5468, 0x092A, 0x546A, 0x0922, 0x546B, 0x382A,
+ 0x5470, 0x1104, 0x5471, 0x1102, 0x5473, 0x0EAF, 0x5474, 0x382B, 0x5475,
+ 0x10FF, 0x5476, 0x1108, 0x5477, 0x1103, 0x547B, 0x1106, 0x547C, 0x077A,
+ 0x547D, 0x0ECB, 0x5480, 0x1107, 0x5484, 0x1109, 0x5486, 0x110B, 0x548A,
+ 0x20DC, 0x548B, 0x0860, 0x548C, 0x0FE8, 0x548D, 0x382C, 0x548E, 0x1100,
+ 0x548F, 0x10FE, 0x5490, 0x110A, 0x5492, 0x1105, 0x5496, 0x382D, 0x549C,
+ 0x20DB, 0x54A1, 0x382E, 0x54A2, 0x110D, 0x54A4, 0x1116, 0x54A5, 0x110F,
+ 0x54A8, 0x1113, 0x54A9, 0x20DD, 0x54AB, 0x1114, 0x54AC, 0x1110, 0x54AD,
+ 0x382F, 0x54AF, 0x1131, 0x54B2, 0x0859, 0x54B3, 0x058F, 0x54B8, 0x110E,
+ 0x54B9, 0x3830, 0x54BC, 0x1118, 0x54BD, 0x04BA, 0x54BE, 0x1117, 0x54BF,
+ 0x3831, 0x54C0, 0x0469, 0x54C1, 0x0DBC, 0x54C2, 0x1115, 0x54C4, 0x1111,
+ 0x54C6, 0x3832, 0x54C7, 0x110C, 0x54C8, 0x1112, 0x54C9, 0x0838, 0x54CD,
+ 0x3833, 0x54D8, 0x1119, 0x54E1, 0x04BB, 0x54E2, 0x1122, 0x54E5, 0x111A,
+ 0x54E6, 0x111B, 0x54E8, 0x098D, 0x54E9, 0x0E97, 0x54ED, 0x1120, 0x54EE,
+ 0x111F, 0x54F2, 0x0C29, 0x54FA, 0x1121, 0x54FD, 0x111E, 0x54FF, 0x20DE,
+ 0x5504, 0x04D6, 0x5506, 0x0826, 0x5507, 0x09F6, 0x550E, 0x3834, 0x550F,
+ 0x111C, 0x5510, 0x0C5C, 0x5514, 0x111D, 0x5516, 0x0466, 0x552B, 0x3835,
+ 0x552E, 0x1127, 0x552F, 0x0F0D, 0x5531, 0x098F, 0x5533, 0x112D, 0x5535,
+ 0x3836, 0x5538, 0x112C, 0x5539, 0x1123, 0x553E, 0x0B23, 0x5540, 0x1124,
+ 0x5544, 0x0B4F, 0x5545, 0x1129, 0x5546, 0x098E, 0x554A, 0x3837, 0x554C,
+ 0x1126, 0x554F, 0x0EF0, 0x5553, 0x0712, 0x5556, 0x112A, 0x5557, 0x112B,
+ 0x555C, 0x1128, 0x555D, 0x112E, 0x555E, 0x1DD1, 0x5560, 0x3838, 0x5561,
+ 0x3839, 0x5563, 0x1125, 0x557B, 0x1134, 0x557C, 0x1139, 0x557E, 0x1135,
+ 0x5580, 0x1130, 0x5583, 0x113A, 0x5584, 0x0AB3, 0x5586, 0x20DF, 0x5587,
+ 0x113C, 0x5588, 0x383A, 0x5589, 0x07B4, 0x558A, 0x1132, 0x558B, 0x0BBB,
+ 0x558E, 0x383B, 0x5598, 0x1136, 0x5599, 0x112F, 0x559A, 0x05E9, 0x559C,
+ 0x062A, 0x559D, 0x05C3, 0x559E, 0x1137, 0x559F, 0x1133, 0x55A7, 0x074C,
+ 0x55A8, 0x113D, 0x55A9, 0x113B, 0x55AA, 0x0AD5, 0x55AB, 0x0664, 0x55AC,
+ 0x06A4, 0x55AE, 0x1138, 0x55B0, 0x06EC, 0x55B6, 0x04E6, 0x55C4, 0x1141,
+ 0x55C5, 0x113F, 0x55C7, 0x1178, 0x55D4, 0x1144, 0x55DA, 0x113E, 0x55DC,
+ 0x1142, 0x55DF, 0x1140, 0x55E3, 0x089A, 0x55E4, 0x1143, 0x55F7, 0x1146,
+ 0x55F9, 0x114B, 0x55FD, 0x1149, 0x55FE, 0x1148, 0x5606, 0x0B70, 0x5608,
+ 0x383C, 0x5609, 0x0545, 0x560E, 0x383D, 0x560F, 0x383E, 0x5614, 0x1145,
+ 0x5616, 0x1147, 0x5617, 0x0990, 0x5618, 0x04D5, 0x561B, 0x114A, 0x5620,
+ 0x3C1D, 0x5629, 0x055E, 0x562F, 0x1155, 0x5631, 0x09E4, 0x5632, 0x1151,
+ 0x5634, 0x114F, 0x5636, 0x1150, 0x5637, 0x383F, 0x5638, 0x1152, 0x563F,
+ 0x3840, 0x5642, 0x04DF, 0x5649, 0x3841, 0x564B, 0x3842, 0x564C, 0x0ABB,
+ 0x564E, 0x114C, 0x564F, 0x3843, 0x5650, 0x114D, 0x5653, 0x1F1B, 0x565B,
+ 0x05D8, 0x5664, 0x1154, 0x5666, 0x3844, 0x5668, 0x062B, 0x5669, 0x3845,
+ 0x566A, 0x1157, 0x566B, 0x1153, 0x566C, 0x1156, 0x566F, 0x3846, 0x5671,
+ 0x3847, 0x5672, 0x3848, 0x5674, 0x0DFE, 0x5676, 0x3C33, 0x5678, 0x0CAD,
+ 0x567A, 0x0D4C, 0x5680, 0x1159, 0x5686, 0x1158, 0x5687, 0x05A3, 0x568A,
+ 0x115A, 0x568F, 0x115D, 0x5694, 0x115C, 0x5695, 0x3849, 0x5699, 0x1DE6,
+ 0x569A, 0x384A, 0x56A0, 0x115B, 0x56A2, 0x0CEF, 0x56A5, 0x115E, 0x56AC,
+ 0x384B, 0x56AD, 0x384C, 0x56AE, 0x115F, 0x56B1, 0x384D, 0x56B4, 0x1161,
+ 0x56B6, 0x1160, 0x56BC, 0x1163, 0x56C0, 0x1166, 0x56C1, 0x1164, 0x56C2,
+ 0x1162, 0x56C3, 0x1165, 0x56C8, 0x1167, 0x56C9, 0x384E, 0x56CA, 0x1E5A,
+ 0x56CE, 0x1168, 0x56D1, 0x1169, 0x56D3, 0x116A, 0x56D7, 0x116B, 0x56D8,
+ 0x107C, 0x56DA, 0x0928, 0x56DB, 0x089B, 0x56DD, 0x384F, 0x56DE, 0x0573,
+ 0x56E0, 0x04BC, 0x56E3, 0x0B82, 0x56E4, 0x3850, 0x56EE, 0x116C, 0x56F0,
+ 0x0814, 0x56F2, 0x0493, 0x56F3, 0x0A24, 0x56F9, 0x116D, 0x56FA, 0x077B,
+ 0x56FD, 0x0803, 0x56FF, 0x116F, 0x5700, 0x116E, 0x5703, 0x0E30, 0x5704,
+ 0x1170, 0x5708, 0x1172, 0x5709, 0x1171, 0x570A, 0x3851, 0x570B, 0x1173,
+ 0x570D, 0x1174, 0x570F, 0x074D, 0x5712, 0x0502, 0x5713, 0x1175, 0x5715,
+ 0x3852, 0x5716, 0x1177, 0x5718, 0x1176, 0x571C, 0x1179, 0x571F, 0x0C54,
+ 0x5721, 0x3680, 0x5723, 0x3853, 0x5726, 0x117A, 0x5727, 0x0479, 0x5728,
+ 0x084F, 0x572D, 0x0713, 0x572F, 0x3854, 0x5730, 0x0B8D, 0x5733, 0x3855,
+ 0x5734, 0x3856, 0x5737, 0x117B, 0x5738, 0x117C, 0x573B, 0x117E, 0x5740,
+ 0x117F, 0x5742, 0x0854, 0x5747, 0x06C9, 0x574A, 0x0E65, 0x574C, 0x3857,
+ 0x574E, 0x117D, 0x574F, 0x1180, 0x5750, 0x0831, 0x5751, 0x07B5, 0x5759,
+ 0x20E0, 0x5761, 0x1184, 0x5764, 0x0815, 0x5765, 0x20E1, 0x5766, 0x0B71,
+ 0x5769, 0x1181, 0x576A, 0x0BF6, 0x5770, 0x3858, 0x577F, 0x1185, 0x5782,
+ 0x0A28, 0x5788, 0x1183, 0x5789, 0x1186, 0x578B, 0x0715, 0x578C, 0x3859,
+ 0x5793, 0x1187, 0x579C, 0x385A, 0x57A0, 0x1188, 0x57A2, 0x07B6, 0x57A3,
+ 0x059E, 0x57A4, 0x118A, 0x57AA, 0x118B, 0x57AC, 0x20E2, 0x57B0, 0x118C,
+ 0x57B3, 0x1189, 0x57B8, 0x385B, 0x57C0, 0x1182, 0x57C3, 0x118D, 0x57C6,
+ 0x118E, 0x57C7, 0x20E4, 0x57C8, 0x20E3, 0x57CB, 0x0E92, 0x57CE, 0x09D3,
+ 0x57D2, 0x1190, 0x57D3, 0x1191, 0x57D4, 0x118F, 0x57D6, 0x1193, 0x57DC,
+ 0x0CEE, 0x57DF, 0x04AC, 0x57E0, 0x0DC8, 0x57E3, 0x1194, 0x57E6, 0x385C,
+ 0x57ED, 0x385D, 0x57F4, 0x09E5, 0x57F5, 0x385E, 0x57F6, 0x385F, 0x57F7,
+ 0x08E5, 0x57F9, 0x0D13, 0x57FA, 0x062C, 0x57FC, 0x085B, 0x57FF, 0x3860,
+ 0x5800, 0x0E87, 0x5802, 0x0C8A, 0x5805, 0x074E, 0x5806, 0x0B2F, 0x5809,
+ 0x3861, 0x580A, 0x1192, 0x580B, 0x1195, 0x5815, 0x0B24, 0x5819, 0x1196,
+ 0x581D, 0x1197, 0x5820, 0x3862, 0x5821, 0x1199, 0x5824, 0x0C05, 0x582A,
+ 0x05EA, 0x582F, 0x1D32, 0x5830, 0x0503, 0x5831, 0x0E43, 0x5832, 0x3863,
+ 0x5834, 0x09D4, 0x5835, 0x0C42, 0x583A, 0x0856, 0x583D, 0x119F, 0x5840,
+ 0x0E0D, 0x5841, 0x0FA5, 0x584A, 0x0574, 0x584B, 0x119B, 0x5851, 0x0ABC,
+ 0x5852, 0x119E, 0x5854, 0x0C5D, 0x5857, 0x0C43, 0x5858, 0x0C5E, 0x5859,
+ 0x0D4D, 0x585A, 0x0BE9, 0x585E, 0x0839, 0x5861, 0x1E47, 0x5862, 0x119A,
+ 0x5869, 0x0518, 0x586B, 0x0C30, 0x5870, 0x119C, 0x5872, 0x1198, 0x5875,
+ 0x0A16, 0x5879, 0x11A0, 0x587C, 0x3864, 0x587E, 0x0958, 0x5880, 0x3865,
+ 0x5883, 0x06A5, 0x5885, 0x11A1, 0x5893, 0x0E38, 0x5897, 0x0AFF, 0x589C,
+ 0x0BE2, 0x589E, 0x20E7, 0x589F, 0x11A3, 0x58A8, 0x0E7D, 0x58A9, 0x3866,
+ 0x58AB, 0x11A4, 0x58AE, 0x11A9, 0x58B2, 0x20E8, 0x58B3, 0x0DFF, 0x58B8,
+ 0x11A8, 0x58B9, 0x11A2, 0x58BA, 0x11A5, 0x58BB, 0x11A7, 0x58BE, 0x0816,
+ 0x58C1, 0x0E19, 0x58C5, 0x11AA, 0x58C7, 0x0B83, 0x58CA, 0x0575, 0x58CC,
+ 0x09D5, 0x58CE, 0x3867, 0x58D0, 0x3868, 0x58D1, 0x11AC, 0x58D3, 0x11AB,
+ 0x58D4, 0x3869, 0x58D5, 0x07FA, 0x58D7, 0x11AD, 0x58D8, 0x11AF, 0x58D9,
+ 0x11AE, 0x58DA, 0x386A, 0x58DC, 0x11B1, 0x58DE, 0x11A6, 0x58DF, 0x11B3,
+ 0x58E4, 0x11B2, 0x58E5, 0x11B0, 0x58E9, 0x386B, 0x58EB, 0x089C, 0x58EC,
+ 0x0A17, 0x58EE, 0x0AD6, 0x58EF, 0x11B4, 0x58F0, 0x0A60, 0x58F1, 0x04B1,
+ 0x58F2, 0x0D1A, 0x58F7, 0x0BF7, 0x58F9, 0x11B6, 0x58FA, 0x11B5, 0x58FB,
+ 0x11B7, 0x58FC, 0x11B8, 0x58FD, 0x11B9, 0x5902, 0x11BA, 0x5909, 0x0E21,
+ 0x590A, 0x11BB, 0x590B, 0x20E9, 0x590C, 0x386C, 0x590F, 0x0546, 0x5910,
+ 0x11BC, 0x5915, 0x0F26, 0x5916, 0x058E, 0x5918, 0x10DE, 0x5919, 0x0952,
+ 0x591A, 0x0B1F, 0x591B, 0x11BD, 0x591C, 0x0EF7, 0x5922, 0x0EC0, 0x5924,
+ 0x386D, 0x5925, 0x11BF, 0x5927, 0x0B47, 0x5929, 0x0C31, 0x592A, 0x0B20,
+ 0x592B, 0x0DC9, 0x592C, 0x11C0, 0x592D, 0x11C1, 0x592E, 0x051D, 0x592F,
+ 0x386E, 0x5931, 0x08E6, 0x5932, 0x11C2, 0x5937, 0x0494, 0x5938, 0x11C3,
+ 0x5939, 0x3725, 0x593E, 0x11C4, 0x5944, 0x0504, 0x5947, 0x062D, 0x5948,
+ 0x0CB8, 0x5949, 0x0E44, 0x594E, 0x11C8, 0x594F, 0x0AD7, 0x5950, 0x11C7,
+ 0x5951, 0x0716, 0x5953, 0x20EA, 0x5954, 0x0E89, 0x5955, 0x11C6, 0x5957,
+ 0x0C5F, 0x5958, 0x11CA, 0x595A, 0x11C9, 0x595B, 0x20EB, 0x595D, 0x20EC,
+ 0x5960, 0x11CC, 0x5961, 0x386F, 0x5962, 0x11CB, 0x5963, 0x20ED, 0x5965,
+ 0x051E, 0x5967, 0x11CD, 0x5968, 0x0991, 0x5969, 0x11CF, 0x596A, 0x0B63,
+ 0x596C, 0x11CE, 0x596D, 0x3870, 0x596E, 0x0E03, 0x5973, 0x0981, 0x5974,
+ 0x0C55, 0x5978, 0x11D0, 0x597D, 0x07B7, 0x5981, 0x11D1, 0x5982, 0x0CD7,
+ 0x5983, 0x0D72, 0x5984, 0x0EDD, 0x598A, 0x0CDB, 0x598D, 0x11DA, 0x5993,
+ 0x0652, 0x5996, 0x0F2F, 0x5999, 0x0EBB, 0x599B, 0x1239, 0x599D, 0x11D2,
+ 0x59A3, 0x11D5, 0x59A4, 0x20EE, 0x59A5, 0x0B25, 0x59A8, 0x0E66, 0x59AC,
+ 0x0C44, 0x59B2, 0x11D6, 0x59B9, 0x0E93, 0x59BA, 0x20EF, 0x59BB, 0x083A,
+ 0x59BE, 0x0992, 0x59C6, 0x11D7, 0x59C9, 0x089E, 0x59CA, 0x3871, 0x59CB,
+ 0x089D, 0x59D0, 0x047D, 0x59D1, 0x077C, 0x59D2, 0x3872, 0x59D3, 0x0A4F,
+ 0x59D4, 0x0495, 0x59D9, 0x11DB, 0x59DA, 0x11DC, 0x59DC, 0x11D9, 0x59DD,
+ 0x3873, 0x59E3, 0x3874, 0x59E4, 0x3875, 0x59E5, 0x04DA, 0x59E6, 0x05EB,
+ 0x59E8, 0x11D8, 0x59EA, 0x0ED1, 0x59EB, 0x0DA3, 0x59EC, 0x36AD, 0x59F6,
+ 0x046C, 0x59FB, 0x04BD, 0x59FF, 0x089F, 0x5A01, 0x0496, 0x5A03, 0x0467,
+ 0x5A04, 0x3876, 0x5A09, 0x11E1, 0x5A0C, 0x3877, 0x5A11, 0x11DF, 0x5A18,
+ 0x0EC8, 0x5A1A, 0x11E2, 0x5A1B, 0x35C1, 0x5A1C, 0x11E0, 0x5A1F, 0x11DE,
+ 0x5A20, 0x09F7, 0x5A23, 0x3878, 0x5A25, 0x11DD, 0x5A29, 0x0E2A, 0x5A2F,
+ 0x0798, 0x5A35, 0x11E6, 0x5A36, 0x11E7, 0x5A3C, 0x0993, 0x5A40, 0x11E3,
+ 0x5A41, 0x0FD2, 0x5A46, 0x0D02, 0x5A47, 0x3879, 0x5A49, 0x11E5, 0x5A55,
+ 0x387A, 0x5A5A, 0x0817, 0x5A62, 0x11E8, 0x5A63, 0x387B, 0x5A66, 0x0DCA,
+ 0x5A6A, 0x11E9, 0x5A6C, 0x11E4, 0x5A6D, 0x387C, 0x5A7E, 0x387D, 0x5A7F,
+ 0x0EC7, 0x5A92, 0x0D14, 0x5A9A, 0x11EA, 0x5A9B, 0x0DA4, 0x5A9E, 0x387E,
+ 0x5AA7, 0x387F, 0x5AAC, 0x3880, 0x5AB3, 0x3881, 0x5ABC, 0x11EB, 0x5ABD,
+ 0x11EF, 0x5ABE, 0x11EC, 0x5AC1, 0x0547, 0x5AC2, 0x11EE, 0x5AC9, 0x08E7,
+ 0x5ACB, 0x11ED, 0x5ACC, 0x074F, 0x5AD0, 0x11FB, 0x5AD6, 0x11F4, 0x5AD7,
+ 0x11F1, 0x5AE0, 0x3882, 0x5AE1, 0x0BA2, 0x5AE3, 0x11F0, 0x5AE6, 0x11F2,
+ 0x5AE9, 0x11F3, 0x5AFA, 0x11F5, 0x5AFB, 0x11F6, 0x5B00, 0x3883, 0x5B09,
+ 0x062E, 0x5B0B, 0x11F8, 0x5B0C, 0x11F7, 0x5B16, 0x11F9, 0x5B19, 0x3884,
+ 0x5B22, 0x09D6, 0x5B25, 0x3885, 0x5B2A, 0x11FC, 0x5B2C, 0x0BF8, 0x5B2D,
+ 0x3886, 0x5B30, 0x04E7, 0x5B32, 0x11FA, 0x5B36, 0x11FD, 0x5B3E, 0x11FE,
+ 0x5B40, 0x1201, 0x5B41, 0x3887, 0x5B43, 0x11FF, 0x5B45, 0x1200, 0x5B50,
+ 0x08A0, 0x5B51, 0x1202, 0x5B54, 0x07B8, 0x5B55, 0x1203, 0x5B56, 0x20F0,
+ 0x5B57, 0x08C8, 0x5B58, 0x0B18, 0x5B5A, 0x1204, 0x5B5B, 0x1205, 0x5B5C,
+ 0x08A8, 0x5B5D, 0x07B9, 0x5B5F, 0x0EDE, 0x5B63, 0x0642, 0x5B64, 0x077D,
+ 0x5B65, 0x1206, 0x5B66, 0x05B6, 0x5B69, 0x1207, 0x5B6B, 0x0B19, 0x5B70,
+ 0x1208, 0x5B71, 0x1230, 0x5B73, 0x1209, 0x5B75, 0x120A, 0x5B78, 0x120B,
+ 0x5B7A, 0x120D, 0x5B7C, 0x3888, 0x5B7E, 0x3889, 0x5B7F, 0x388A, 0x5B80,
+ 0x120E, 0x5B82, 0x3610, 0x5B83, 0x120F, 0x5B85, 0x0B50, 0x5B87, 0x04C9,
+ 0x5B88, 0x0915, 0x5B89, 0x0486, 0x5B8A, 0x388B, 0x5B8B, 0x0AD9, 0x5B8C,
+ 0x05EC, 0x5B8D, 0x08E1, 0x5B8F, 0x07BA, 0x5B95, 0x0C60, 0x5B97, 0x092B,
+ 0x5B98, 0x05ED, 0x5B99, 0x0BA6, 0x5B9A, 0x0C06, 0x5B9B, 0x047C, 0x5B9C,
+ 0x0653, 0x5B9D, 0x0E45, 0x5B9F, 0x08EE, 0x5BA2, 0x066C, 0x5BA3, 0x0A8F,
+ 0x5BA4, 0x08E8, 0x5BA5, 0x0F12, 0x5BA6, 0x1210, 0x5BAE, 0x0676, 0x5BB0,
+ 0x083B, 0x5BB3, 0x0590, 0x5BB4, 0x0505, 0x5BB5, 0x0994, 0x5BB6, 0x0548,
+ 0x5BB8, 0x1211, 0x5BB9, 0x0F30, 0x5BBF, 0x0953, 0x5BC0, 0x20F1, 0x5BC2,
+ 0x0910, 0x5BC3, 0x1212, 0x5BC4, 0x062F, 0x5BC5, 0x0CAA, 0x5BC6, 0x0EB5,
+ 0x5BC7, 0x1213, 0x5BC9, 0x1214, 0x5BCC, 0x0DCB, 0x5BD0, 0x1216, 0x5BD2,
+ 0x05E4, 0x5BD3, 0x06EF, 0x5BD4, 0x1215, 0x5BD8, 0x20F3, 0x5BDB, 0x05EE,
+ 0x5BDD, 0x09F8, 0x5BDE, 0x121A, 0x5BDF, 0x086F, 0x5BE1, 0x0549, 0x5BE2,
+ 0x1219, 0x5BE4, 0x1217, 0x5BE5, 0x121B, 0x5BE6, 0x1218, 0x5BE7, 0x0CE1,
+ 0x5BE8, 0x148E, 0x5BE9, 0x09F9, 0x5BEB, 0x121C, 0x5BEC, 0x20F4, 0x5BEE,
+ 0x0F88, 0x5BF0, 0x121D, 0x5BF3, 0x121F, 0x5BF5, 0x0BBC, 0x5BF6, 0x121E,
+ 0x5BF8, 0x0A47, 0x5BFA, 0x08C9, 0x5BFE, 0x0B30, 0x5BFF, 0x0923, 0x5C01,
+ 0x0DE7, 0x5C02, 0x0A90, 0x5C04, 0x08F9, 0x5C05, 0x1220, 0x5C06, 0x0995,
+ 0x5C07, 0x1221, 0x5C08, 0x1222, 0x5C09, 0x0497, 0x5C0A, 0x0B1A, 0x5C0B,
+ 0x0A18, 0x5C0D, 0x1223, 0x5C0E, 0x0C8B, 0x5C0F, 0x0996, 0x5C11, 0x0997,
+ 0x5C13, 0x1224, 0x5C14, 0x372A, 0x5C16, 0x0A91, 0x5C19, 0x360B, 0x5C1A,
+ 0x0998, 0x5C1E, 0x20F5, 0x5C20, 0x1225, 0x5C22, 0x1226, 0x5C23, 0x388C,
+ 0x5C24, 0x0EEC, 0x5C28, 0x1227, 0x5C2B, 0x388D, 0x5C2D, 0x06BE, 0x5C30,
+ 0x388E, 0x5C31, 0x092C, 0x5C38, 0x1228, 0x5C39, 0x1229, 0x5C3A, 0x0908,
+ 0x5C3B, 0x09F2, 0x5C3C, 0x0CCC, 0x5C3D, 0x0A1A, 0x5C3E, 0x0D8C, 0x5C3F,
+ 0x0CD8, 0x5C40, 0x06C1, 0x5C41, 0x122A, 0x5C45, 0x0689, 0x5C46, 0x122B,
+ 0x5C48, 0x06F6, 0x5C4A, 0x0CA7, 0x5C4B, 0x0530, 0x5C4D, 0x08A1, 0x5C4E,
+ 0x122C, 0x5C4F, 0x122F, 0x5C50, 0x122E, 0x5C51, 0x06F5, 0x5C53, 0x122D,
+ 0x5C55, 0x0C32, 0x5C5B, 0x1E92, 0x5C5E, 0x0B10, 0x5C60, 0x0C45, 0x5C61,
+ 0x08F4, 0x5C62, 0x1E0D, 0x5C63, 0x388F, 0x5C64, 0x0ADA, 0x5C65, 0x0F64,
+ 0x5C69, 0x3890, 0x5C6C, 0x1231, 0x5C6E, 0x1232, 0x5C6F, 0x0CAE, 0x5C71,
+ 0x0881, 0x5C76, 0x1234, 0x5C79, 0x1235, 0x5C7C, 0x3891, 0x5C8C, 0x1236,
+ 0x5C90, 0x0630, 0x5C91, 0x1237, 0x5C94, 0x1238, 0x5CA1, 0x052C, 0x5CA6,
+ 0x20F6, 0x5CA8, 0x0ABD, 0x5CA9, 0x0620, 0x5CAB, 0x123A, 0x5CAC, 0x0EB4,
+ 0x5CB1, 0x0B32, 0x5CB3, 0x05B7, 0x5CB6, 0x123C, 0x5CB7, 0x123E, 0x5CB8,
+ 0x061B, 0x5CBA, 0x20F7, 0x5CBB, 0x123B, 0x5CBC, 0x123D, 0x5CBE, 0x1240,
+ 0x5CC5, 0x123F, 0x5CC7, 0x1241, 0x5CCB, 0x3892, 0x5CD2, 0x3893, 0x5CD9,
+ 0x1242, 0x5CE0, 0x0C95, 0x5CE1, 0x06A6, 0x5CE6, 0x372C, 0x5CE8, 0x0565,
+ 0x5CE9, 0x1243, 0x5CEA, 0x1248, 0x5CED, 0x1246, 0x5CEF, 0x0E47, 0x5CF0,
+ 0x0E46, 0x5CF4, 0x3894, 0x5CF5, 0x20F8, 0x5CF6, 0x0C61, 0x5CFA, 0x1245,
+ 0x5CFB, 0x095E, 0x5CFD, 0x1244, 0x5D07, 0x0A38, 0x5D0B, 0x1249, 0x5D0E,
+ 0x085A, 0x5D11, 0x124F, 0x5D14, 0x1250, 0x5D15, 0x124A, 0x5D16, 0x0591,
+ 0x5D17, 0x124B, 0x5D18, 0x1254, 0x5D19, 0x1253, 0x5D1A, 0x1252, 0x5D1B,
+ 0x124E, 0x5D1F, 0x124D, 0x5D22, 0x1251, 0x5D24, 0x3895, 0x5D26, 0x3896,
+ 0x5D27, 0x20F9, 0x5D29, 0x0E48, 0x5D42, 0x20FC, 0x5D43, 0x3897, 0x5D46,
+ 0x3898, 0x5D4A, 0x3899, 0x5D4B, 0x1258, 0x5D4C, 0x1255, 0x5D4E, 0x1257,
+ 0x5D50, 0x0F5C, 0x5D52, 0x1256, 0x5D53, 0x20FA, 0x5D5C, 0x124C, 0x5D69,
+ 0x0A39, 0x5D6C, 0x1259, 0x5D6D, 0x20FD, 0x5D6F, 0x0827, 0x5D73, 0x125A,
+ 0x5D76, 0x125B, 0x5D82, 0x125E, 0x5D84, 0x125D, 0x5D87, 0x125C, 0x5D8B,
+ 0x0C62, 0x5D8C, 0x1247, 0x5D90, 0x1264, 0x5D92, 0x389A, 0x5D94, 0x389B,
+ 0x5D99, 0x389C, 0x5D9D, 0x1260, 0x5DA0, 0x389D, 0x5DA2, 0x125F, 0x5DAC,
+ 0x1261, 0x5DAE, 0x1262, 0x5DB2, 0x3BA5, 0x5DB7, 0x1265, 0x5DB8, 0x20FE,
+ 0x5DB9, 0x20FF, 0x5DBA, 0x0FAE, 0x5DBC, 0x1266, 0x5DBD, 0x1263, 0x5DC9,
+ 0x1267, 0x5DCC, 0x061C, 0x5DCD, 0x1268, 0x5DD0, 0x2100, 0x5DD2, 0x126A,
+ 0x5DD3, 0x1269, 0x5DD6, 0x126B, 0x5DD8, 0x389E, 0x5DDB, 0x126C, 0x5DDD,
+ 0x0A92, 0x5DDE, 0x092D, 0x5DE0, 0x389F, 0x5DE1, 0x096E, 0x5DE2, 0x3432,
+ 0x5DE3, 0x0AE5, 0x5DE5, 0x07BB, 0x5DE6, 0x0828, 0x5DE7, 0x07BC, 0x5DE8,
+ 0x068A, 0x5DEB, 0x126D, 0x5DEE, 0x0829, 0x5DF1, 0x077E, 0x5DF2, 0x126E,
+ 0x5DF3, 0x0EB2, 0x5DF4, 0x0CF9, 0x5DF5, 0x126F, 0x5DF7, 0x07BD, 0x5DF8,
+ 0x38A0, 0x5DFB, 0x05E8, 0x5DFD, 0x0B65, 0x5DFE, 0x06CA, 0x5DFF, 0x35E2,
+ 0x5E00, 0x38A1, 0x5E02, 0x08A2, 0x5E03, 0x0DCD, 0x5E06, 0x0D55, 0x5E0B,
+ 0x1270, 0x5E0C, 0x0631, 0x5E11, 0x1273, 0x5E12, 0x38A2, 0x5E14, 0x38A3,
+ 0x5E15, 0x38A4, 0x5E16, 0x0BBD, 0x5E18, 0x38A5, 0x5E19, 0x1272, 0x5E1A,
+ 0x1271, 0x5E1B, 0x1274, 0x5E1D, 0x0C07, 0x5E25, 0x0A29, 0x5E2B, 0x08A3,
+ 0x5E2D, 0x0A6E, 0x5E2E, 0x38A6, 0x5E2F, 0x0B33, 0x5E30, 0x063C, 0x5E33,
+ 0x0BBE, 0x5E36, 0x1275, 0x5E37, 0x1276, 0x5E38, 0x09D7, 0x5E3D, 0x0E67,
+ 0x5E40, 0x1279, 0x5E43, 0x1278, 0x5E44, 0x1277, 0x5E45, 0x0DEF, 0x5E47,
+ 0x1280, 0x5E4C, 0x0E88, 0x5E4E, 0x127A, 0x5E54, 0x127C, 0x5E55, 0x0E99,
+ 0x5E57, 0x127B, 0x5E58, 0x38A7, 0x5E5F, 0x127D, 0x5E61, 0x0D3C, 0x5E62,
+ 0x127E, 0x5E63, 0x0E0E, 0x5E64, 0x127F, 0x5E6B, 0x38A8, 0x5E6C, 0x38A9,
+ 0x5E72, 0x05EF, 0x5E73, 0x0E0F, 0x5E74, 0x0CE5, 0x5E75, 0x1281, 0x5E76,
+ 0x1282, 0x5E78, 0x07BE, 0x5E79, 0x05F0, 0x5E7A, 0x1283, 0x5E7B, 0x076C,
+ 0x5E7C, 0x0F2E, 0x5E7D, 0x0F13, 0x5E7E, 0x0632, 0x5E7F, 0x1285, 0x5E81,
+ 0x0BBF, 0x5E83, 0x07BF, 0x5E84, 0x0999, 0x5E87, 0x0D73, 0x5E8A, 0x099A,
+ 0x5E8F, 0x0982, 0x5E95, 0x0C08, 0x5E96, 0x0E49, 0x5E97, 0x0C33, 0x5E99,
+ 0x36B0, 0x5E9A, 0x07C0, 0x5E9C, 0x0DCE, 0x5EA0, 0x1286, 0x5EA6, 0x0C53,
+ 0x5EA7, 0x0832, 0x5EA8, 0x38AA, 0x5EAA, 0x38AB, 0x5EAB, 0x077F, 0x5EAD,
+ 0x0C09, 0x5EB5, 0x0487, 0x5EB6, 0x0978, 0x5EB7, 0x07C1, 0x5EB8, 0x0F31,
+ 0x5EBE, 0x38AC, 0x5EBF, 0x38AD, 0x5EC1, 0x1287, 0x5EC2, 0x1288, 0x5EC3,
+ 0x0D07, 0x5EC8, 0x1289, 0x5EC9, 0x0FBF, 0x5ECA, 0x0FD3, 0x5ECB, 0x38AE,
+ 0x5ECF, 0x128B, 0x5ED0, 0x128A, 0x5ED2, 0x38AF, 0x5ED3, 0x05A5, 0x5ED6,
+ 0x128C, 0x5EDA, 0x128F, 0x5EDB, 0x1290, 0x5EDD, 0x128E, 0x5EDF, 0x0DB2,
+ 0x5EE0, 0x099B, 0x5EE1, 0x1292, 0x5EE2, 0x1291, 0x5EE3, 0x128D, 0x5EE8,
+ 0x1293, 0x5EE9, 0x1294, 0x5EEC, 0x1295, 0x5EF0, 0x1298, 0x5EF1, 0x1296,
+ 0x5EF3, 0x1297, 0x5EF4, 0x1299, 0x5EF6, 0x0506, 0x5EF7, 0x0C0A, 0x5EF8,
+ 0x129A, 0x5EFA, 0x0750, 0x5EFB, 0x0576, 0x5EFC, 0x0CEC, 0x5EFE, 0x129B,
+ 0x5EFF, 0x0CD3, 0x5F01, 0x0E2B, 0x5F03, 0x129C, 0x5F04, 0x0FD4, 0x5F07,
+ 0x38B0, 0x5F09, 0x129D, 0x5F0A, 0x0E10, 0x5F0B, 0x12A0, 0x5F0C, 0x0FFA,
+ 0x5F0D, 0x100A, 0x5F0E, 0x38B1, 0x5F0F, 0x08DC, 0x5F10, 0x0CCD, 0x5F11,
+ 0x12A1, 0x5F13, 0x0677, 0x5F14, 0x0BC0, 0x5F15, 0x04BE, 0x5F16, 0x12A2,
+ 0x5F17, 0x0DF6, 0x5F18, 0x07C2, 0x5F1B, 0x0B8E, 0x5F1C, 0x38B2, 0x5F1D,
+ 0x38B3, 0x5F1F, 0x0C0B, 0x5F21, 0x2101, 0x5F22, 0x38B4, 0x5F25, 0x0EFB,
+ 0x5F26, 0x076D, 0x5F27, 0x0780, 0x5F28, 0x38B5, 0x5F29, 0x12A3, 0x5F2D,
+ 0x12A4, 0x5F2F, 0x12AA, 0x5F31, 0x0911, 0x5F34, 0x2102, 0x5F35, 0x0BC1,
+ 0x5F36, 0x38B6, 0x5F37, 0x06A7, 0x5F38, 0x12A5, 0x5F3A, 0x3598, 0x5F3B,
+ 0x38B7, 0x5F3C, 0x0D9D, 0x5F3E, 0x0B84, 0x5F40, 0x38B8, 0x5F41, 0x12A6,
+ 0x5F45, 0x20B2, 0x5F48, 0x12A7, 0x5F4A, 0x06A8, 0x5F4C, 0x12A8, 0x5F4E,
+ 0x12A9, 0x5F50, 0x38B9, 0x5F51, 0x12AB, 0x5F53, 0x0C70, 0x5F56, 0x12AC,
+ 0x5F57, 0x12AD, 0x5F58, 0x38BA, 0x5F59, 0x12AE, 0x5F5C, 0x129F, 0x5F5D,
+ 0x129E, 0x5F61, 0x12AF, 0x5F62, 0x0717, 0x5F64, 0x38BB, 0x5F65, 0x36AC,
+ 0x5F66, 0x0D99, 0x5F67, 0x2103, 0x5F69, 0x083C, 0x5F6A, 0x0DA9, 0x5F6B,
+ 0x0BC2, 0x5F6C, 0x0DBD, 0x5F6D, 0x12B0, 0x5F70, 0x099C, 0x5F71, 0x04E8,
+ 0x5F73, 0x12B1, 0x5F77, 0x12B2, 0x5F79, 0x0EFE, 0x5F7C, 0x0D74, 0x5F7F,
+ 0x12B5, 0x5F80, 0x051F, 0x5F81, 0x0A50, 0x5F82, 0x12B4, 0x5F83, 0x12B3,
+ 0x5F84, 0x0718, 0x5F85, 0x0B34, 0x5F87, 0x12B9, 0x5F88, 0x12B7, 0x5F89,
+ 0x38BC, 0x5F8A, 0x12B6, 0x5F8B, 0x0F6F, 0x5F8C, 0x0799, 0x5F90, 0x0983,
+ 0x5F91, 0x12B8, 0x5F92, 0x0C46, 0x5F93, 0x0948, 0x5F97, 0x0C98, 0x5F98,
+ 0x12BC, 0x5F99, 0x12BB, 0x5F9C, 0x38BD, 0x5F9E, 0x12BA, 0x5FA0, 0x12BD,
+ 0x5FA1, 0x079A, 0x5FA4, 0x38BF, 0x5FA7, 0x38BE, 0x5FA8, 0x12BE, 0x5FA9,
+ 0x0DEE, 0x5FAA, 0x0965, 0x5FAD, 0x12BF, 0x5FAE, 0x0D8D, 0x5FAF, 0x38C0,
+ 0x5FB3, 0x0C99, 0x5FB4, 0x0BC3, 0x5FB5, 0x3438, 0x5FB7, 0x2104, 0x5FB8,
+ 0x38C1, 0x5FB9, 0x0C2A, 0x5FBC, 0x12C0, 0x5FBD, 0x0645, 0x5FC3, 0x09FA,
+ 0x5FC4, 0x38C2, 0x5FC5, 0x0D9E, 0x5FC9, 0x38C3, 0x5FCC, 0x0633, 0x5FCD,
+ 0x0CDC, 0x5FD6, 0x12C1, 0x5FD7, 0x08A4, 0x5FD8, 0x0E68, 0x5FD9, 0x0E69,
+ 0x5FDC, 0x0520, 0x5FDD, 0x12C6, 0x5FDE, 0x2105, 0x5FE0, 0x0BA7, 0x5FE1,
+ 0x38C4, 0x5FE4, 0x12C3, 0x5FE9, 0x38C5, 0x5FEB, 0x0577, 0x5FED, 0x38C6,
+ 0x5FF0, 0x12F6, 0x5FF1, 0x12C5, 0x5FF5, 0x0CE6, 0x5FF8, 0x12C4, 0x5FFB,
+ 0x12C2, 0x5FFC, 0x38C7, 0x5FFD, 0x080C, 0x5FFF, 0x12C8, 0x600E, 0x12CE,
+ 0x600F, 0x12D4, 0x6010, 0x12CC, 0x6012, 0x0C56, 0x6015, 0x12D1, 0x6016,
+ 0x0DCF, 0x6017, 0x38C8, 0x6019, 0x12CB, 0x601A, 0x38C9, 0x601B, 0x12D0,
+ 0x601C, 0x0FAF, 0x601D, 0x08A5, 0x6020, 0x0B35, 0x6021, 0x12C9, 0x6025,
+ 0x0678, 0x6026, 0x12D3, 0x6027, 0x0A51, 0x6028, 0x0507, 0x6029, 0x12CD,
+ 0x602A, 0x0578, 0x602B, 0x12D2, 0x602F, 0x06A9, 0x6031, 0x12CF, 0x6033,
+ 0x38CA, 0x603A, 0x12D5, 0x6041, 0x12D7, 0x6042, 0x12E1, 0x6043, 0x12DF,
+ 0x6046, 0x12DC, 0x604A, 0x12DB, 0x604B, 0x0FC0, 0x604D, 0x12DD, 0x6050,
+ 0x06AA, 0x6052, 0x07C3, 0x6055, 0x0984, 0x6059, 0x12E4, 0x605A, 0x12D6,
+ 0x605D, 0x2106, 0x605F, 0x12DA, 0x6060, 0x12CA, 0x6061, 0x38CB, 0x6062,
+ 0x057A, 0x6063, 0x12DE, 0x6064, 0x12E0, 0x6065, 0x0B8F, 0x6068, 0x0818,
+ 0x6069, 0x0538, 0x606A, 0x12D8, 0x606B, 0x12E3, 0x606C, 0x12E2, 0x606D,
+ 0x06AB, 0x606F, 0x0B09, 0x6070, 0x05C4, 0x6075, 0x0719, 0x6077, 0x12D9,
+ 0x607F, 0x38CC, 0x6081, 0x12E5, 0x6083, 0x12E8, 0x6084, 0x12EA, 0x6085,
+ 0x2107, 0x6089, 0x08E9, 0x608A, 0x2108, 0x608B, 0x12F0, 0x608C, 0x0C0C,
+ 0x608D, 0x12E6, 0x6092, 0x12EE, 0x6094, 0x0579, 0x6096, 0x12EC, 0x6097,
+ 0x12ED, 0x609A, 0x12E9, 0x609B, 0x12EB, 0x609E, 0x38CD, 0x609F, 0x079B,
+ 0x60A0, 0x0F14, 0x60A3, 0x05F1, 0x60A4, 0x38CE, 0x60A6, 0x04FB, 0x60A7,
+ 0x12EF, 0x60A9, 0x0CF0, 0x60AA, 0x0471, 0x60B0, 0x38CF, 0x60B2, 0x0D75,
+ 0x60B3, 0x12C7, 0x60B4, 0x12F5, 0x60B5, 0x12F9, 0x60B6, 0x0EF1, 0x60B8,
+ 0x12F2, 0x60BC, 0x0C63, 0x60BD, 0x12F7, 0x60C5, 0x09D8, 0x60C6, 0x12F8,
+ 0x60C7, 0x0CAF, 0x60CB, 0x38D0, 0x60D1, 0x0FED, 0x60D3, 0x12F4, 0x60D5,
+ 0x210A, 0x60D8, 0x12FA, 0x60DA, 0x080D, 0x60DB, 0x38D1, 0x60DC, 0x0A6F,
+ 0x60DE, 0x2109, 0x60DF, 0x0498, 0x60E0, 0x12F3, 0x60E1, 0x12F1, 0x60E3,
+ 0x0ADC, 0x60E7, 0x12E7, 0x60E8, 0x0882, 0x60F0, 0x0B26, 0x60F1, 0x1306,
+ 0x60F2, 0x210C, 0x60F3, 0x0ADD, 0x60F4, 0x1301, 0x60F6, 0x12FE, 0x60F7,
+ 0x12FF, 0x60F8, 0x38D2, 0x60F9, 0x0912, 0x60FA, 0x1302, 0x60FB, 0x1305,
+ 0x6100, 0x1300, 0x6101, 0x092F, 0x6103, 0x1303, 0x6106, 0x12FD, 0x6108,
+ 0x0F08, 0x6109, 0x0F07, 0x610D, 0x1307, 0x610E, 0x1308, 0x610F, 0x0499,
+ 0x6111, 0x210D, 0x6112, 0x38D3, 0x6113, 0x38D4, 0x6114, 0x38D5, 0x6115,
+ 0x12FC, 0x611A, 0x06EA, 0x611B, 0x046A, 0x611C, 0x38D6, 0x611F, 0x05F2,
+ 0x6120, 0x210B, 0x6121, 0x1304, 0x6127, 0x130C, 0x6128, 0x130B, 0x612C,
+ 0x1310, 0x6130, 0x210F, 0x6134, 0x1311, 0x6137, 0x210E, 0x613C, 0x130F,
+ 0x613D, 0x1312, 0x613E, 0x130A, 0x613F, 0x130E, 0x6142, 0x1313, 0x6144,
+ 0x1314, 0x6147, 0x1309, 0x6148, 0x08CA, 0x614A, 0x130D, 0x614B, 0x0B36,
+ 0x614C, 0x07C4, 0x614D, 0x12FB, 0x614E, 0x09FB, 0x6153, 0x1321, 0x6155,
+ 0x0E39, 0x6158, 0x1317, 0x6159, 0x1318, 0x615A, 0x1319, 0x615D, 0x1320,
+ 0x615F, 0x131F, 0x6162, 0x0EAB, 0x6163, 0x05F3, 0x6165, 0x131D, 0x6167,
+ 0x071B, 0x6168, 0x0592, 0x616B, 0x131A, 0x616E, 0x0F80, 0x616F, 0x131C,
+ 0x6170, 0x049A, 0x6171, 0x131E, 0x6173, 0x1315, 0x6174, 0x131B, 0x6175,
+ 0x1322, 0x6176, 0x071A, 0x6177, 0x1316, 0x617C, 0x38D7, 0x617E, 0x0F47,
+ 0x6182, 0x0F15, 0x6187, 0x1325, 0x618A, 0x1329, 0x618D, 0x38D8, 0x618E,
+ 0x0B00, 0x6190, 0x0FC1, 0x6191, 0x132A, 0x6194, 0x1327, 0x6196, 0x1324,
+ 0x6198, 0x2110, 0x6199, 0x1323, 0x619A, 0x1328, 0x619F, 0x38D9, 0x61A4,
+ 0x0E00, 0x61A7, 0x0C8C, 0x61A8, 0x38DA, 0x61A9, 0x071C, 0x61AB, 0x132B,
+ 0x61AC, 0x1326, 0x61AE, 0x132C, 0x61B2, 0x0751, 0x61B6, 0x0531, 0x61BA,
+ 0x1334, 0x61BE, 0x05F4, 0x61C2, 0x38DB, 0x61C3, 0x1332, 0x61C6, 0x1333,
+ 0x61C7, 0x0819, 0x61C8, 0x1331, 0x61C9, 0x132F, 0x61CA, 0x132E, 0x61CB,
+ 0x1335, 0x61CC, 0x132D, 0x61CD, 0x1337, 0x61D0, 0x057B, 0x61DF, 0x38DC,
+ 0x61E3, 0x1339, 0x61E6, 0x1338, 0x61F2, 0x0BC4, 0x61F4, 0x133C, 0x61F6,
+ 0x133A, 0x61F7, 0x1330, 0x61F8, 0x0752, 0x61FA, 0x133B, 0x61FC, 0x133F,
+ 0x61FD, 0x133E, 0x61FE, 0x1340, 0x61FF, 0x133D, 0x6200, 0x1341, 0x6208,
+ 0x1342, 0x6209, 0x1343, 0x620A, 0x0E3A, 0x620C, 0x1345, 0x620D, 0x1344,
+ 0x620E, 0x0949, 0x6210, 0x0A52, 0x6211, 0x0566, 0x6212, 0x057C, 0x6213,
+ 0x2111, 0x6214, 0x1346, 0x6215, 0x38DD, 0x6216, 0x0483, 0x621A, 0x0A70,
+ 0x621B, 0x1347, 0x621D, 0x1A64, 0x621E, 0x1348, 0x621F, 0x0737, 0x6221,
+ 0x1349, 0x6226, 0x0A93, 0x6229, 0x38DE, 0x622A, 0x134A, 0x622E, 0x134B,
+ 0x622F, 0x0654, 0x6230, 0x134C, 0x6232, 0x134D, 0x6233, 0x134E, 0x6234,
+ 0x0B37, 0x6236, 0x35BD, 0x6238, 0x0781, 0x623B, 0x0EED, 0x623E, 0x344E,
+ 0x623F, 0x0E6A, 0x6240, 0x0974, 0x6241, 0x134F, 0x6243, 0x38DF, 0x6246,
+ 0x38E0, 0x6247, 0x0A94, 0x6248, 0x1B1A, 0x6249, 0x0D76, 0x624B, 0x0916,
+ 0x624C, 0x38E1, 0x624D, 0x083D, 0x624E, 0x1350, 0x6251, 0x38E2, 0x6253,
+ 0x0B27, 0x6255, 0x0DF7, 0x6256, 0x38E3, 0x6258, 0x0B51, 0x625B, 0x1353,
+ 0x625E, 0x1351, 0x6260, 0x1354, 0x6263, 0x1352, 0x6268, 0x1355, 0x626E,
+ 0x0E01, 0x6271, 0x047B, 0x6276, 0x0DD0, 0x6279, 0x0D77, 0x627C, 0x1356,
+ 0x627E, 0x1359, 0x627F, 0x099D, 0x6280, 0x0655, 0x6282, 0x1357, 0x6283,
+ 0x135E, 0x6284, 0x099E, 0x6285, 0x35C5, 0x6289, 0x1358, 0x628A, 0x0CFA,
+ 0x6291, 0x0F48, 0x6292, 0x135A, 0x6293, 0x135B, 0x6294, 0x135F, 0x6295,
+ 0x0C64, 0x6296, 0x135C, 0x6297, 0x07C5, 0x6298, 0x0A82, 0x629B, 0x136D,
+ 0x629C, 0x0D48, 0x629E, 0x0B52, 0x62A6, 0x2112, 0x62AB, 0x0D78, 0x62AC,
+ 0x13B2, 0x62B1, 0x0E4A, 0x62B5, 0x0C0D, 0x62B9, 0x0EA3, 0x62BB, 0x1362,
+ 0x62BC, 0x0521, 0x62BD, 0x0BA8, 0x62C2, 0x136B, 0x62C4, 0x38E4, 0x62C5,
+ 0x0B72, 0x62C6, 0x1365, 0x62C7, 0x136C, 0x62C8, 0x1367, 0x62C9, 0x136E,
+ 0x62CA, 0x136A, 0x62CC, 0x1369, 0x62CD, 0x0D25, 0x62CF, 0x1363, 0x62D0,
+ 0x057D, 0x62D1, 0x1361, 0x62D2, 0x068B, 0x62D3, 0x0B53, 0x62D4, 0x135D,
+ 0x62D7, 0x1360, 0x62D8, 0x07C6, 0x62D9, 0x0A7F, 0x62DB, 0x099F, 0x62DC,
+ 0x1368, 0x62DD, 0x0D08, 0x62E0, 0x068C, 0x62E1, 0x05A6, 0x62EC, 0x05C5,
+ 0x62ED, 0x09E7, 0x62EE, 0x1370, 0x62EF, 0x1375, 0x62F1, 0x1371, 0x62F3,
+ 0x0753, 0x62F5, 0x1376, 0x62F6, 0x0870, 0x62F7, 0x07FB, 0x62FC, 0x38E5,
+ 0x62FE, 0x0930, 0x62FF, 0x1364, 0x6301, 0x08CB, 0x6302, 0x1373, 0x6307,
+ 0x08A6, 0x6308, 0x1374, 0x6309, 0x0488, 0x630A, 0x38E6, 0x630C, 0x136F,
+ 0x630D, 0x38E7, 0x6311, 0x0BC5, 0x6318, 0x38E8, 0x6319, 0x068D, 0x631B,
+ 0x3737, 0x631F, 0x06AC, 0x6327, 0x1372, 0x6328, 0x046B, 0x632B, 0x0833,
+ 0x632F, 0x09FC, 0x6339, 0x38E9, 0x633A, 0x0C0E, 0x633D, 0x0D68, 0x633E,
+ 0x1378, 0x633F, 0x0AE0, 0x6342, 0x38EA, 0x6343, 0x38EB, 0x6349, 0x0B0A,
+ 0x634C, 0x0879, 0x634D, 0x1379, 0x634F, 0x137B, 0x6350, 0x1377, 0x6355,
+ 0x0E31, 0x6357, 0x0BD9, 0x635C, 0x0ADE, 0x6365, 0x38EC, 0x6367, 0x0E4B,
+ 0x6368, 0x08FA, 0x6369, 0x1387, 0x636B, 0x1386, 0x636E, 0x0A3E, 0x6372,
+ 0x0754, 0x6374, 0x38ED, 0x6376, 0x1380, 0x6377, 0x09A1, 0x637A, 0x0CC0,
+ 0x637B, 0x0CE7, 0x637D, 0x38EE, 0x6380, 0x137E, 0x6383, 0x0ADF, 0x6384,
+ 0x38EF, 0x6387, 0x38F0, 0x6388, 0x0924, 0x6389, 0x1383, 0x638C, 0x09A0,
+ 0x638E, 0x137D, 0x638F, 0x1382, 0x6390, 0x38F1, 0x6392, 0x0D09, 0x6396,
+ 0x137C, 0x6398, 0x06F7, 0x639B, 0x05BB, 0x639E, 0x38F2, 0x639F, 0x1384,
+ 0x63A0, 0x0F73, 0x63A1, 0x083E, 0x63A2, 0x0B73, 0x63A3, 0x1381, 0x63A5,
+ 0x0A80, 0x63A7, 0x07C7, 0x63A8, 0x0A2A, 0x63A9, 0x0508, 0x63AA, 0x0ABE,
+ 0x63AB, 0x137F, 0x63AC, 0x065F, 0x63B2, 0x071D, 0x63B4, 0x0BEB, 0x63B5,
+ 0x1385, 0x63BB, 0x0AE1, 0x63BE, 0x1388, 0x63C0, 0x138A, 0x63C3, 0x0B17,
+ 0x63C4, 0x1390, 0x63C6, 0x138B, 0x63C9, 0x138D, 0x63CF, 0x0DB3, 0x63D0,
+ 0x0C0F, 0x63D1, 0x38F3, 0x63D2, 0x138E, 0x63D6, 0x0F16, 0x63DA, 0x0F32,
+ 0x63DB, 0x05F5, 0x63DC, 0x38F4, 0x63E1, 0x0472, 0x63E3, 0x138C, 0x63E9,
+ 0x1389, 0x63ED, 0x341C, 0x63EE, 0x0634, 0x63F4, 0x0509, 0x63F5, 0x2113,
+ 0x63F6, 0x138F, 0x63F7, 0x3644, 0x63FA, 0x0F33, 0x6406, 0x1393, 0x6409,
+ 0x38F5, 0x640D, 0x0B1B, 0x640F, 0x139A, 0x6410, 0x38F6, 0x6413, 0x1394,
+ 0x6414, 0x1E2C, 0x6416, 0x1391, 0x6417, 0x1398, 0x641C, 0x137A, 0x6422,
+ 0x38F7, 0x6426, 0x1395, 0x6428, 0x1399, 0x642C, 0x0D56, 0x642D, 0x0C65,
+ 0x6434, 0x1392, 0x6436, 0x1396, 0x643A, 0x071E, 0x643E, 0x0861, 0x6442,
+ 0x0A81, 0x644E, 0x139E, 0x6451, 0x1E43, 0x6454, 0x38F8, 0x6458, 0x0C20,
+ 0x645B, 0x38F9, 0x6460, 0x2114, 0x6467, 0x139B, 0x6469, 0x0E8E, 0x646D,
+ 0x38FA, 0x646F, 0x139C, 0x6476, 0x139D, 0x6478, 0x0EDA, 0x647A, 0x0A46,
+ 0x647B, 0x38FB, 0x6483, 0x0738, 0x6488, 0x13A4, 0x6492, 0x0883, 0x6493,
+ 0x13A1, 0x6495, 0x13A0, 0x649A, 0x0CE8, 0x649D, 0x2115, 0x649E, 0x0C8D,
+ 0x64A4, 0x0C2B, 0x64A5, 0x13A2, 0x64A9, 0x13A3, 0x64AB, 0x0DE1, 0x64AD,
+ 0x0CFB, 0x64AE, 0x0871, 0x64B0, 0x0A95, 0x64B2, 0x0E7E, 0x64B9, 0x05A7,
+ 0x64BB, 0x13AA, 0x64BC, 0x13A5, 0x64BE, 0x38FC, 0x64BF, 0x38FD, 0x64C1,
+ 0x0F34, 0x64C2, 0x13AC, 0x64C5, 0x13A8, 0x64C7, 0x13A9, 0x64CA, 0x341D,
+ 0x64CD, 0x0AE2, 0x64CE, 0x2116, 0x64D2, 0x13A7, 0x64D4, 0x1366, 0x64D8,
+ 0x13AB, 0x64DA, 0x13A6, 0x64E0, 0x13B0, 0x64E1, 0x13B1, 0x64E2, 0x0C21,
+ 0x64E3, 0x13B3, 0x64E5, 0x38FE, 0x64E6, 0x0872, 0x64E7, 0x13AE, 0x64EC,
+ 0x0656, 0x64EF, 0x13B4, 0x64F1, 0x13AD, 0x64F2, 0x13B8, 0x64F4, 0x13B7,
+ 0x64F6, 0x13B6, 0x64F7, 0x38FF, 0x64FA, 0x13B9, 0x64FB, 0x3900, 0x64FD,
+ 0x13BB, 0x64FE, 0x09D9, 0x6500, 0x13BA, 0x6504, 0x3901, 0x6505, 0x13BE,
+ 0x6516, 0x3902, 0x6518, 0x13BC, 0x6519, 0x3903, 0x651C, 0x13BD, 0x651D,
+ 0x1397, 0x6522, 0x1E97, 0x6523, 0x13C0, 0x6524, 0x13BF, 0x652A, 0x139F,
+ 0x652B, 0x13C1, 0x652C, 0x13B5, 0x652F, 0x08A7, 0x6534, 0x13C2, 0x6535,
+ 0x13C3, 0x6536, 0x13C5, 0x6537, 0x13C4, 0x6538, 0x13C6, 0x6539, 0x057E,
+ 0x653B, 0x07C8, 0x653E, 0x0E4C, 0x653F, 0x0A53, 0x6545, 0x0782, 0x6547,
+ 0x3904, 0x6548, 0x13C8, 0x654D, 0x13CB, 0x654E, 0x2117, 0x654F, 0x0DC4,
+ 0x6551, 0x0679, 0x6555, 0x13CA, 0x6556, 0x13C9, 0x6557, 0x0D0A, 0x6558,
+ 0x13CC, 0x6559, 0x06AD, 0x655D, 0x13CE, 0x655E, 0x13CD, 0x6562, 0x05F6,
+ 0x6563, 0x0884, 0x6566, 0x0CB0, 0x6567, 0x3905, 0x656C, 0x071F, 0x6570,
+ 0x0A3A, 0x6572, 0x13CF, 0x6574, 0x0A54, 0x6575, 0x0C22, 0x6577, 0x0DD1,
+ 0x6578, 0x13D0, 0x6581, 0x3906, 0x6582, 0x13D1, 0x6583, 0x13D2, 0x6585,
+ 0x3907, 0x6587, 0x0E08, 0x6588, 0x120C, 0x6589, 0x0A6A, 0x658C, 0x0DBE,
+ 0x658E, 0x0848, 0x6590, 0x0D79, 0x6591, 0x0D57, 0x6597, 0x0C47, 0x6599,
+ 0x0F89, 0x659B, 0x13D4, 0x659C, 0x08FC, 0x659F, 0x13D5, 0x65A1, 0x047A,
+ 0x65A4, 0x06CC, 0x65A5, 0x0A71, 0x65A7, 0x0DD2, 0x65AB, 0x13D6, 0x65AC,
+ 0x0890, 0x65AD, 0x0B85, 0x65AF, 0x08A9, 0x65B0, 0x09FD, 0x65B7, 0x13D7,
+ 0x65B9, 0x0E4D, 0x65BC, 0x0519, 0x65BD, 0x08AA, 0x65C1, 0x13DA, 0x65C2,
+ 0x3908, 0x65C3, 0x13D8, 0x65C4, 0x13DB, 0x65C5, 0x0F81, 0x65C6, 0x13D9,
+ 0x65CB, 0x0A9F, 0x65CC, 0x13DC, 0x65CF, 0x0B12, 0x65D2, 0x13DD, 0x65D7,
+ 0x0636, 0x65D9, 0x13DF, 0x65DB, 0x13DE, 0x65E0, 0x13E0, 0x65E1, 0x13E1,
+ 0x65E2, 0x0637, 0x65E3, 0x3585, 0x65E5, 0x0CD4, 0x65E6, 0x0B74, 0x65E7,
+ 0x0686, 0x65E8, 0x08AB, 0x65E9, 0x0AE3, 0x65EC, 0x0966, 0x65ED, 0x0474,
+ 0x65F0, 0x3909, 0x65F1, 0x13E2, 0x65F2, 0x390A, 0x65FA, 0x0522, 0x65FB,
+ 0x13E6, 0x6600, 0x2118, 0x6602, 0x07C9, 0x6603, 0x13E5, 0x6606, 0x081B,
+ 0x6607, 0x09A2, 0x6609, 0x211A, 0x660A, 0x13E4, 0x660C, 0x09A3, 0x660E,
+ 0x0ECC, 0x660F, 0x081A, 0x6613, 0x049B, 0x6614, 0x0A72, 0x6615, 0x2119,
+ 0x661C, 0x13EB, 0x661E, 0x211C, 0x661F, 0x0A55, 0x6620, 0x04E9, 0x6624,
+ 0x211D, 0x6625, 0x095F, 0x6627, 0x0E94, 0x6628, 0x0862, 0x662C, 0x390B,
+ 0x662D, 0x09A4, 0x662E, 0x211B, 0x662F, 0x0A4B, 0x6631, 0x20AE, 0x6634,
+ 0x13EA, 0x6635, 0x13E8, 0x6636, 0x13E9, 0x663B, 0x1E00, 0x663C, 0x0BA9,
+ 0x663F, 0x1409, 0x6641, 0x13EF, 0x6642, 0x08CC, 0x6643, 0x07CA, 0x6644,
+ 0x13ED, 0x6649, 0x13EE, 0x664B, 0x09FE, 0x664C, 0x390C, 0x664F, 0x13EC,
+ 0x6652, 0x087D, 0x6657, 0x211F, 0x6659, 0x2120, 0x665B, 0x390D, 0x665C,
+ 0x390E, 0x665D, 0x13F1, 0x665E, 0x13F0, 0x665F, 0x13F5, 0x6661, 0x390F,
+ 0x6662, 0x13F6, 0x6663, 0x373A, 0x6664, 0x13F2, 0x6665, 0x211E, 0x6666,
+ 0x0580, 0x6667, 0x13F3, 0x6668, 0x13F4, 0x6669, 0x0D69, 0x666B, 0x3910,
+ 0x666E, 0x0DD3, 0x666F, 0x0720, 0x6670, 0x13F7, 0x6673, 0x2122, 0x6674,
+ 0x0A56, 0x6676, 0x09A5, 0x6677, 0x3911, 0x667A, 0x0B90, 0x6681, 0x06BF,
+ 0x6683, 0x13F8, 0x6684, 0x13FC, 0x6687, 0x054B, 0x6688, 0x13F9, 0x6689,
+ 0x13FB, 0x668E, 0x13FA, 0x6691, 0x0975, 0x6696, 0x0B86, 0x6697, 0x0489,
+ 0x6698, 0x13FD, 0x6699, 0x2123, 0x669D, 0x13FE, 0x66A0, 0x2124, 0x66A2,
+ 0x0BC6, 0x66A4, 0x3912, 0x66A6, 0x0FB9, 0x66AB, 0x0891, 0x66AE, 0x0E3B,
+ 0x66B2, 0x2125, 0x66B4, 0x0E6B, 0x66B8, 0x1405, 0x66B9, 0x1400, 0x66BC,
+ 0x1403, 0x66BE, 0x1402, 0x66BF, 0x2126, 0x66C1, 0x13FF, 0x66C4, 0x1404,
+ 0x66C6, 0x3455, 0x66C7, 0x0CB6, 0x66C8, 0x3913, 0x66C9, 0x1401, 0x66D6,
+ 0x1406, 0x66D9, 0x0976, 0x66DA, 0x1407, 0x66DC, 0x0F35, 0x66DD, 0x0D2E,
+ 0x66E0, 0x1408, 0x66E6, 0x140A, 0x66E9, 0x140B, 0x66EC, 0x3914, 0x66F0,
+ 0x140C, 0x66F2, 0x06C2, 0x66F3, 0x04EA, 0x66F4, 0x07CB, 0x66F5, 0x140D,
+ 0x66F7, 0x140E, 0x66F8, 0x097B, 0x66F9, 0x0AE4, 0x66FA, 0x2127, 0x66FB,
+ 0x20B1, 0x66FC, 0x10ED, 0x66FD, 0x0AC0, 0x66FE, 0x0ABF, 0x66FF, 0x0B38,
+ 0x6700, 0x0837, 0x6703, 0x104B, 0x6705, 0x3915, 0x6708, 0x0744, 0x6709,
+ 0x0F17, 0x670B, 0x0E4E, 0x670D, 0x0DF0, 0x670E, 0x2128, 0x670F, 0x140F,
+ 0x6713, 0x3916, 0x6714, 0x0863, 0x6715, 0x0BDB, 0x6716, 0x1410, 0x6717,
+ 0x0FD5, 0x671B, 0x0E6C, 0x671D, 0x0BC7, 0x671E, 0x1411, 0x671F, 0x0638,
+ 0x6726, 0x1412, 0x6727, 0x1413, 0x6728, 0x0EE6, 0x672A, 0x0EB0, 0x672B,
+ 0x0EA4, 0x672C, 0x0E8A, 0x672D, 0x0873, 0x672E, 0x1415, 0x6731, 0x0917,
+ 0x6733, 0x3917, 0x6734, 0x0E7F, 0x6736, 0x1417, 0x6737, 0x141A, 0x6738,
+ 0x1419, 0x673A, 0x0635, 0x673D, 0x067A, 0x673F, 0x1416, 0x6741, 0x1418,
+ 0x6743, 0x35B7, 0x6746, 0x141B, 0x6748, 0x3918, 0x6749, 0x0A3F, 0x674C,
+ 0x3919, 0x674E, 0x0F65, 0x674F, 0x048D, 0x6750, 0x0850, 0x6751, 0x0B1C,
+ 0x6753, 0x0909, 0x6756, 0x09DB, 0x6759, 0x141E, 0x675C, 0x0C48, 0x675E,
+ 0x141C, 0x675F, 0x0B0B, 0x6760, 0x141D, 0x6761, 0x09DA, 0x6762, 0x0EE9,
+ 0x6763, 0x141F, 0x6764, 0x1420, 0x6765, 0x0F52, 0x6766, 0x212A, 0x676A,
+ 0x1425, 0x676D, 0x07CC, 0x676E, 0x3571, 0x676F, 0x0D0B, 0x6770, 0x1422,
+ 0x6771, 0x0C66, 0x6772, 0x13E3, 0x6773, 0x13E7, 0x6775, 0x0669, 0x6776,
+ 0x391A, 0x6777, 0x0CFD, 0x677B, 0x391B, 0x677C, 0x1424, 0x677E, 0x09A6,
+ 0x677F, 0x0D58, 0x6785, 0x142A, 0x6787, 0x0D8E, 0x6789, 0x1421, 0x678B,
+ 0x1427, 0x678C, 0x1426, 0x6790, 0x0A73, 0x6795, 0x0E9B, 0x6797, 0x0F9B,
+ 0x679A, 0x0E95, 0x679C, 0x054C, 0x679D, 0x08AC, 0x67A0, 0x0FEE, 0x67A1,
+ 0x1429, 0x67A2, 0x0A3B, 0x67A6, 0x1428, 0x67A9, 0x1423, 0x67AF, 0x0783,
+ 0x67B0, 0x391C, 0x67B2, 0x391D, 0x67B3, 0x142F, 0x67B4, 0x142D, 0x67B6,
+ 0x054D, 0x67B7, 0x142B, 0x67B8, 0x1431, 0x67B9, 0x1437, 0x67BB, 0x212B,
+ 0x67C0, 0x212D, 0x67C1, 0x0B28, 0x67C4, 0x0E11, 0x67C6, 0x1439, 0x67CA,
+ 0x0D94, 0x67CE, 0x1438, 0x67CF, 0x0D26, 0x67D0, 0x0E6D, 0x67D1, 0x05F7,
+ 0x67D3, 0x0A9B, 0x67D4, 0x094A, 0x67D7, 0x391F, 0x67D8, 0x0BEF, 0x67D9,
+ 0x3920, 0x67DA, 0x0F18, 0x67DD, 0x1434, 0x67DE, 0x1433, 0x67E2, 0x1435,
+ 0x67E4, 0x1432, 0x67E7, 0x143A, 0x67E9, 0x1430, 0x67EC, 0x142E, 0x67EE,
+ 0x1436, 0x67EF, 0x142C, 0x67F0, 0x3921, 0x67F1, 0x0BAA, 0x67F3, 0x0F04,
+ 0x67F4, 0x08F2, 0x67F5, 0x0864, 0x67F9, 0x391E, 0x67FB, 0x082A, 0x67FE,
+ 0x0E9D, 0x67FF, 0x059F, 0x6801, 0x212E, 0x6802, 0x0BEA, 0x6803, 0x0CA2,
+ 0x6804, 0x04EB, 0x6805, 0x1E07, 0x6813, 0x0A96, 0x6816, 0x0A58, 0x6817,
+ 0x0700, 0x681E, 0x143C, 0x6821, 0x07CD, 0x6822, 0x05DA, 0x6829, 0x143E,
+ 0x682A, 0x05D2, 0x682B, 0x1444, 0x682C, 0x3922, 0x6830, 0x3923, 0x6831,
+ 0x3924, 0x6832, 0x1441, 0x6834, 0x0A97, 0x6838, 0x05A9, 0x6839, 0x081C,
+ 0x683C, 0x05A8, 0x683D, 0x083F, 0x6840, 0x143F, 0x6841, 0x073B, 0x6842,
+ 0x0721, 0x6843, 0x0C67, 0x6844, 0x212F, 0x6846, 0x143D, 0x6848, 0x048A,
+ 0x684D, 0x1440, 0x684E, 0x1442, 0x6850, 0x06C5, 0x6851, 0x0702, 0x6852,
+ 0x212C, 0x6853, 0x05F8, 0x6854, 0x0665, 0x6859, 0x1445, 0x685B, 0x3925,
+ 0x685C, 0x0869, 0x685D, 0x0E9F, 0x685F, 0x0885, 0x6863, 0x1446, 0x6867,
+ 0x0DA2, 0x6872, 0x3926, 0x6874, 0x1452, 0x6875, 0x3927, 0x6876, 0x0533,
+ 0x6877, 0x1447, 0x687A, 0x3928, 0x687E, 0x1458, 0x687F, 0x1448, 0x6881,
+ 0x0F8A, 0x6883, 0x144F, 0x6884, 0x3929, 0x6885, 0x0D15, 0x688D, 0x1457,
+ 0x688E, 0x1E9C, 0x688F, 0x144A, 0x6893, 0x0478, 0x6894, 0x144C, 0x6897,
+ 0x07CE, 0x689B, 0x144E, 0x689D, 0x144D, 0x689F, 0x1449, 0x68A0, 0x1454,
+ 0x68A2, 0x09A7, 0x68A5, 0x392A, 0x68A6, 0x11BE, 0x68A7, 0x079C, 0x68A8,
+ 0x0F66, 0x68AD, 0x144B, 0x68AF, 0x0C10, 0x68B0, 0x0581, 0x68B1, 0x081D,
+ 0x68B2, 0x392B, 0x68B3, 0x1443, 0x68B5, 0x1453, 0x68B6, 0x05BF, 0x68B9,
+ 0x1451, 0x68BA, 0x1455, 0x68BC, 0x0C68, 0x68C4, 0x063A, 0x68C6, 0x1473,
+ 0x68C8, 0x20AF, 0x68C9, 0x0ED5, 0x68CA, 0x145A, 0x68CB, 0x0639, 0x68CD,
+ 0x1461, 0x68CF, 0x2130, 0x68D0, 0x392C, 0x68D2, 0x0E6E, 0x68D4, 0x1462,
+ 0x68D5, 0x1464, 0x68D6, 0x392D, 0x68D7, 0x1468, 0x68D8, 0x145C, 0x68DA,
+ 0x0B68, 0x68DF, 0x0C69, 0x68E0, 0x146C, 0x68E1, 0x145F, 0x68E3, 0x1469,
+ 0x68E7, 0x1463, 0x68E8, 0x392E, 0x68ED, 0x392F, 0x68EE, 0x09FF, 0x68EF,
+ 0x146D, 0x68F0, 0x3930, 0x68F1, 0x3931, 0x68F2, 0x0A57, 0x68F9, 0x146B,
+ 0x68FA, 0x05F9, 0x68FC, 0x3932, 0x6900, 0x0FF6, 0x6901, 0x1459, 0x6904,
+ 0x1467, 0x6905, 0x049C, 0x6908, 0x145B, 0x690B, 0x0EC6, 0x690C, 0x1460,
+ 0x690D, 0x09E8, 0x690E, 0x0BE3, 0x690F, 0x1456, 0x6911, 0x3933, 0x6912,
+ 0x1466, 0x6913, 0x3934, 0x6919, 0x0A40, 0x691A, 0x1470, 0x691B, 0x05CF,
+ 0x691C, 0x0755, 0x6921, 0x1472, 0x6922, 0x145D, 0x6923, 0x1471, 0x6925,
+ 0x146A, 0x6926, 0x145E, 0x6928, 0x146E, 0x692A, 0x146F, 0x6930, 0x1480,
+ 0x6934, 0x0CA6, 0x6935, 0x3935, 0x6936, 0x1465, 0x6939, 0x147C, 0x693B,
+ 0x3936, 0x693D, 0x147E, 0x693F, 0x0BF4, 0x694A, 0x0F36, 0x6953, 0x0DE8,
+ 0x6954, 0x1479, 0x6955, 0x0B2A, 0x6957, 0x3937, 0x6959, 0x147F, 0x695A,
+ 0x0AC1, 0x695C, 0x1476, 0x695D, 0x1483, 0x695E, 0x1482, 0x6960, 0x0CC7,
+ 0x6961, 0x1481, 0x6962, 0x0CC2, 0x6963, 0x3938, 0x6968, 0x2132, 0x696A,
+ 0x1485, 0x696B, 0x1478, 0x696D, 0x06C0, 0x696E, 0x147B, 0x696F, 0x0967,
+ 0x6972, 0x3939, 0x6973, 0x0D16, 0x6974, 0x147D, 0x6975, 0x06C3, 0x6977,
+ 0x1475, 0x6978, 0x1477, 0x6979, 0x1474, 0x697C, 0x0FD6, 0x697D, 0x05B8,
+ 0x697E, 0x147A, 0x697F, 0x393A, 0x6980, 0x393B, 0x6981, 0x1484, 0x6982,
+ 0x0593, 0x698A, 0x0857, 0x698E, 0x04FF, 0x6991, 0x1495, 0x6994, 0x0FD7,
+ 0x6995, 0x1498, 0x6998, 0x2134, 0x699B, 0x0A00, 0x699C, 0x1497, 0x69A0,
+ 0x1496, 0x69A6, 0x393C, 0x69A7, 0x1493, 0x69AD, 0x393D, 0x69AE, 0x1487,
+ 0x69B1, 0x14A4, 0x69B2, 0x1486, 0x69B4, 0x1499, 0x69B7, 0x393E, 0x69BB,
+ 0x1491, 0x69BE, 0x148C, 0x69BF, 0x1489, 0x69C1, 0x148A, 0x69C3, 0x1492,
+ 0x69C7, 0x1D33, 0x69CA, 0x148F, 0x69CB, 0x07CF, 0x69CC, 0x0BE4, 0x69CD,
+ 0x0AE6, 0x69CE, 0x148D, 0x69D0, 0x1488, 0x69D3, 0x148B, 0x69D6, 0x393F,
+ 0x69D7, 0x3940, 0x69D8, 0x0F37, 0x69D9, 0x0E98, 0x69DD, 0x1490, 0x69DE,
+ 0x149A, 0x69E2, 0x2135, 0x69E7, 0x14A2, 0x69E8, 0x149B, 0x69EA, 0x356F,
+ 0x69EB, 0x14A8, 0x69ED, 0x14A6, 0x69F2, 0x14A1, 0x69F6, 0x373F, 0x69F9,
+ 0x14A0, 0x69FB, 0x0BEC, 0x69FD, 0x0AE7, 0x69FF, 0x149E, 0x6A01, 0x3941,
+ 0x6A02, 0x149C, 0x6A05, 0x14A3, 0x6A0A, 0x14A9, 0x6A0B, 0x0D89, 0x6A0C,
+ 0x14AF, 0x6A0F, 0x3942, 0x6A12, 0x14AA, 0x6A13, 0x14AD, 0x6A14, 0x14A7,
+ 0x6A15, 0x3943, 0x6A17, 0x0BB2, 0x6A19, 0x0DAA, 0x6A1B, 0x149D, 0x6A1E,
+ 0x14A5, 0x6A1F, 0x09A8, 0x6A21, 0x0EDB, 0x6A22, 0x14B9, 0x6A23, 0x14AC,
+ 0x6A28, 0x3944, 0x6A29, 0x0756, 0x6A2A, 0x0523, 0x6A2B, 0x05BD, 0x6A2E,
+ 0x1494, 0x6A30, 0x2136, 0x6A34, 0x3945, 0x6A35, 0x09A9, 0x6A36, 0x14B1,
+ 0x6A38, 0x14B8, 0x6A39, 0x0925, 0x6A3A, 0x05D0, 0x6A3D, 0x0B6C, 0x6A3E,
+ 0x3946, 0x6A44, 0x14AE, 0x6A45, 0x3947, 0x6A46, 0x2138, 0x6A47, 0x14B3,
+ 0x6A48, 0x14B7, 0x6A4B, 0x06AE, 0x6A50, 0x3948, 0x6A51, 0x3949, 0x6A54,
+ 0x3C34, 0x6A56, 0x394A, 0x6A58, 0x0666, 0x6A59, 0x14B5, 0x6A5B, 0x394B,
+ 0x6A5F, 0x063B, 0x6A61, 0x0CA3, 0x6A62, 0x14B4, 0x6A66, 0x14B6, 0x6A6B,
+ 0x2137, 0x6A72, 0x14B0, 0x6A73, 0x2139, 0x6A78, 0x14B2, 0x6A7E, 0x213A,
+ 0x6A7F, 0x05BE, 0x6A80, 0x0B87, 0x6A83, 0x394C, 0x6A84, 0x14BD, 0x6A89,
+ 0x394D, 0x6A8D, 0x14BB, 0x6A8E, 0x079D, 0x6A90, 0x14BA, 0x6A91, 0x394E,
+ 0x6A97, 0x14C0, 0x6A9C, 0x143B, 0x6A9D, 0x394F, 0x6A9E, 0x3950, 0x6A9F,
+ 0x3951, 0x6AA0, 0x14BC, 0x6AA2, 0x14BE, 0x6AA3, 0x14BF, 0x6AAA, 0x14CB,
+ 0x6AAC, 0x14C7, 0x6AAE, 0x1450, 0x6AB3, 0x14C6, 0x6AB8, 0x14C5, 0x6ABB,
+ 0x14C2, 0x6AC1, 0x14AB, 0x6AC2, 0x14C4, 0x6AC3, 0x14C3, 0x6AD1, 0x14C9,
+ 0x6AD3, 0x0FCC, 0x6ADA, 0x14CC, 0x6ADB, 0x06F3, 0x6ADC, 0x3952, 0x6ADE,
+ 0x14C8, 0x6ADF, 0x14CA, 0x6AE2, 0x213B, 0x6AE4, 0x213C, 0x6AE7, 0x3953,
+ 0x6AE8, 0x0D3B, 0x6AEA, 0x14CD, 0x6AEC, 0x3954, 0x6AFA, 0x14D1, 0x6AFB,
+ 0x14CE, 0x6B04, 0x0F5D, 0x6B05, 0x14CF, 0x6B0A, 0x149F, 0x6B12, 0x14D2,
+ 0x6B16, 0x14D3, 0x6B1D, 0x04D7, 0x6B1E, 0x3955, 0x6B1F, 0x14D5, 0x6B20,
+ 0x073D, 0x6B21, 0x08CD, 0x6B23, 0x06CD, 0x6B24, 0x3956, 0x6B27, 0x0524,
+ 0x6B32, 0x0F49, 0x6B35, 0x3957, 0x6B37, 0x14D7, 0x6B38, 0x14D6, 0x6B39,
+ 0x14D9, 0x6B3A, 0x0657, 0x6B3D, 0x06CE, 0x6B3E, 0x05FA, 0x6B43, 0x14DC,
+ 0x6B46, 0x3958, 0x6B47, 0x14DB, 0x6B49, 0x14DD, 0x6B4C, 0x054E, 0x6B4E,
+ 0x0B75, 0x6B50, 0x14DE, 0x6B53, 0x05FB, 0x6B54, 0x14E0, 0x6B56, 0x3959,
+ 0x6B59, 0x14DF, 0x6B5B, 0x14E1, 0x6B5F, 0x14E2, 0x6B60, 0x395A, 0x6B61,
+ 0x14E3, 0x6B62, 0x08AD, 0x6B63, 0x0A59, 0x6B64, 0x0811, 0x6B65, 0x344A,
+ 0x6B66, 0x0DE2, 0x6B69, 0x0E32, 0x6B6A, 0x0FEA, 0x6B6F, 0x08C3, 0x6B72,
+ 0x35D9, 0x6B73, 0x0840, 0x6B74, 0x0FBA, 0x6B77, 0x3456, 0x6B78, 0x14E4,
+ 0x6B79, 0x14E5, 0x6B7B, 0x08AE, 0x6B7F, 0x14E6, 0x6B80, 0x14E7, 0x6B82,
+ 0x395B, 0x6B83, 0x14E9, 0x6B84, 0x14E8, 0x6B86, 0x0E86, 0x6B89, 0x0968,
+ 0x6B8A, 0x0918, 0x6B8B, 0x0892, 0x6B8D, 0x14EA, 0x6B95, 0x14EC, 0x6B96,
+ 0x09E9, 0x6B98, 0x14EB, 0x6B9E, 0x14ED, 0x6BA4, 0x14EE, 0x6BAA, 0x14EF,
+ 0x6BAB, 0x14F0, 0x6BAF, 0x14F1, 0x6BB1, 0x14F3, 0x6BB2, 0x14F2, 0x6BB3,
+ 0x14F4, 0x6BB4, 0x0525, 0x6BB5, 0x0B88, 0x6BB7, 0x14F5, 0x6BBA, 0x0874,
+ 0x6BBB, 0x05AA, 0x6BBC, 0x14F6, 0x6BBE, 0x395C, 0x6BBF, 0x0C3C, 0x6BC0,
+ 0x119D, 0x6BC5, 0x063D, 0x6BC6, 0x14F7, 0x6BCB, 0x14F8, 0x6BCC, 0x3744,
+ 0x6BCD, 0x0E3C, 0x6BCE, 0x0E96, 0x6BCF, 0x344C, 0x6BD2, 0x0C9F, 0x6BD3,
+ 0x14F9, 0x6BD4, 0x0D7A, 0x6BD6, 0x213D, 0x6BD8, 0x0D8F, 0x6BDB, 0x0EDF,
+ 0x6BDF, 0x14FA, 0x6BE1, 0x395D, 0x6BEB, 0x14FC, 0x6BEC, 0x14FB, 0x6BEF,
+ 0x14FE, 0x6BF1, 0x395E, 0x6BF3, 0x14FD, 0x6C08, 0x1500, 0x6C0F, 0x08AF,
+ 0x6C10, 0x395F, 0x6C11, 0x0EBD, 0x6C13, 0x1501, 0x6C14, 0x1502, 0x6C17,
+ 0x063E, 0x6C1B, 0x1503, 0x6C23, 0x1505, 0x6C24, 0x1504, 0x6C33, 0x3960,
+ 0x6C34, 0x0A2B, 0x6C35, 0x3961, 0x6C37, 0x0DAB, 0x6C38, 0x04EC, 0x6C3A,
+ 0x3962, 0x6C3E, 0x0D59, 0x6C3F, 0x213E, 0x6C40, 0x0C11, 0x6C41, 0x094B,
+ 0x6C42, 0x067B, 0x6C4E, 0x0D5A, 0x6C50, 0x08DA, 0x6C55, 0x1507, 0x6C57,
+ 0x05FC, 0x6C59, 0x3963, 0x6C5A, 0x051A, 0x6C5C, 0x213F, 0x6C5D, 0x0CCA,
+ 0x6C5E, 0x1506, 0x6C5F, 0x07D0, 0x6C60, 0x0B91, 0x6C62, 0x1508, 0x6C68,
+ 0x1510, 0x6C6A, 0x1509, 0x6C6F, 0x2141, 0x6C70, 0x0B21, 0x6C72, 0x067C,
+ 0x6C73, 0x1511, 0x6C76, 0x3964, 0x6C7A, 0x073E, 0x6C7B, 0x3965, 0x6C7D,
+ 0x063F, 0x6C7E, 0x150F, 0x6C81, 0x150D, 0x6C82, 0x150A, 0x6C83, 0x0F4A,
+ 0x6C85, 0x3966, 0x6C86, 0x2140, 0x6C88, 0x0BDC, 0x6C8C, 0x0CB1, 0x6C8D,
+ 0x150B, 0x6C90, 0x1513, 0x6C92, 0x1512, 0x6C93, 0x06F9, 0x6C95, 0x3967,
+ 0x6C96, 0x052D, 0x6C99, 0x082B, 0x6C9A, 0x150C, 0x6C9B, 0x150E, 0x6C9C,
+ 0x3968, 0x6CA1, 0x0E85, 0x6CA2, 0x0B54, 0x6CAA, 0x3749, 0x6CAB, 0x0EA5,
+ 0x6CAE, 0x151B, 0x6CB1, 0x151C, 0x6CB3, 0x054F, 0x6CB8, 0x0DF8, 0x6CB9,
+ 0x0F09, 0x6CBA, 0x151E, 0x6CBB, 0x08CF, 0x6CBC, 0x09AA, 0x6CBD, 0x1517,
+ 0x6CBE, 0x151D, 0x6CBF, 0x050A, 0x6CC1, 0x06AF, 0x6CC4, 0x1514, 0x6CC5,
+ 0x1519, 0x6CC9, 0x0A98, 0x6CCA, 0x0D27, 0x6CCC, 0x0D7B, 0x6CD0, 0x3969,
+ 0x6CD3, 0x1516, 0x6CD4, 0x396A, 0x6CD5, 0x0E4F, 0x6CD6, 0x396B, 0x6CD7,
+ 0x1518, 0x6CD9, 0x1521, 0x6CDA, 0x2142, 0x6CDB, 0x151F, 0x6CDD, 0x151A,
+ 0x6CE0, 0x396C, 0x6CE1, 0x0E50, 0x6CE2, 0x0CFE, 0x6CE3, 0x067D, 0x6CE5,
+ 0x0C1F, 0x6CE8, 0x0BAB, 0x6CEA, 0x1522, 0x6CEB, 0x396D, 0x6CEC, 0x396E,
+ 0x6CEE, 0x396F, 0x6CEF, 0x1520, 0x6CF0, 0x0B39, 0x6CF1, 0x1515, 0x6CF3,
+ 0x04ED, 0x6D01, 0x3C35, 0x6D04, 0x2143, 0x6D0A, 0x3970, 0x6D0B, 0x0F38,
+ 0x6D0C, 0x152D, 0x6D0E, 0x3971, 0x6D11, 0x3972, 0x6D12, 0x152C, 0x6D17,
+ 0x0A9A, 0x6D19, 0x1529, 0x6D1B, 0x0F56, 0x6D1E, 0x0C8E, 0x6D1F, 0x1523,
+ 0x6D25, 0x0BE1, 0x6D29, 0x04EE, 0x6D2A, 0x07D1, 0x6D2B, 0x1526, 0x6D2E,
+ 0x3973, 0x6D32, 0x0931, 0x6D33, 0x152B, 0x6D35, 0x152A, 0x6D36, 0x1525,
+ 0x6D38, 0x1528, 0x6D3B, 0x05C6, 0x6D3D, 0x1527, 0x6D3E, 0x0CFF, 0x6D41,
+ 0x0F76, 0x6D44, 0x09DC, 0x6D45, 0x0A99, 0x6D57, 0x3974, 0x6D59, 0x1533,
+ 0x6D5A, 0x1531, 0x6D5C, 0x0DBF, 0x6D5E, 0x3975, 0x6D63, 0x152E, 0x6D64,
+ 0x1530, 0x6D65, 0x3976, 0x6D66, 0x04DC, 0x6D69, 0x07D2, 0x6D6A, 0x0FD8,
+ 0x6D6C, 0x059B, 0x6D6E, 0x0DD4, 0x6D6F, 0x2145, 0x6D74, 0x0F4B, 0x6D77,
+ 0x0582, 0x6D78, 0x0A01, 0x6D79, 0x1532, 0x6D82, 0x3977, 0x6D85, 0x1537,
+ 0x6D87, 0x2144, 0x6D88, 0x09AB, 0x6D89, 0x342A, 0x6D8C, 0x0F1A, 0x6D8E,
+ 0x1534, 0x6D93, 0x152F, 0x6D95, 0x1535, 0x6D96, 0x2146, 0x6D99, 0x0FA6,
+ 0x6D9B, 0x0C6D, 0x6D9C, 0x0C9A, 0x6DAC, 0x2147, 0x6DAF, 0x0594, 0x6DB2,
+ 0x04F7, 0x6DB5, 0x153B, 0x6DB8, 0x153E, 0x6DBC, 0x0F8B, 0x6DBF, 0x3978,
+ 0x6DC0, 0x0F4E, 0x6DC4, 0x3979, 0x6DC5, 0x1545, 0x6DC6, 0x153F, 0x6DC7,
+ 0x153C, 0x6DCA, 0x397A, 0x6DCB, 0x0F9C, 0x6DCC, 0x1542, 0x6DCF, 0x2148,
+ 0x6DD0, 0x3C36, 0x6DD1, 0x0954, 0x6DD2, 0x1544, 0x6DD5, 0x1549, 0x6DD6,
+ 0x397B, 0x6DD8, 0x0C6B, 0x6DD9, 0x1547, 0x6DDA, 0x3453, 0x6DDE, 0x1541,
+ 0x6DE1, 0x0B76, 0x6DE4, 0x1548, 0x6DE6, 0x153D, 0x6DE8, 0x1543, 0x6DE9,
+ 0x397C, 0x6DEA, 0x154A, 0x6DEB, 0x04C0, 0x6DEC, 0x1540, 0x6DEE, 0x154B,
+ 0x6DF1, 0x0A02, 0x6DF2, 0x214A, 0x6DF3, 0x0969, 0x6DF5, 0x0DF5, 0x6DF7,
+ 0x081E, 0x6DF8, 0x2149, 0x6DF9, 0x1538, 0x6DFA, 0x1546, 0x6DFB, 0x0C34,
+ 0x6DFC, 0x214B, 0x6E05, 0x0A5A, 0x6E07, 0x05C7, 0x6E08, 0x0841, 0x6E09,
+ 0x09AC, 0x6E0A, 0x153A, 0x6E0B, 0x094C, 0x6E13, 0x0722, 0x6E15, 0x1539,
+ 0x6E17, 0x3746, 0x6E19, 0x154F, 0x6E1A, 0x0977, 0x6E1B, 0x076E, 0x6E1D,
+ 0x155E, 0x6E1F, 0x1558, 0x6E20, 0x068E, 0x6E21, 0x0C49, 0x6E22, 0x397D,
+ 0x6E23, 0x1553, 0x6E24, 0x155C, 0x6E25, 0x0473, 0x6E26, 0x04D4, 0x6E27,
+ 0x214E, 0x6E29, 0x0539, 0x6E2B, 0x1555, 0x6E2C, 0x0B0C, 0x6E2D, 0x154C,
+ 0x6E2E, 0x154E, 0x6E2F, 0x07D3, 0x6E34, 0x3412, 0x6E38, 0x155F, 0x6E39,
+ 0x214C, 0x6E3A, 0x155A, 0x6E3C, 0x214F, 0x6E3E, 0x1552, 0x6E42, 0x3C37,
+ 0x6E43, 0x1559, 0x6E4A, 0x0EB7, 0x6E4D, 0x1557, 0x6E4E, 0x155B, 0x6E51,
+ 0x397E, 0x6E56, 0x0784, 0x6E58, 0x09AD, 0x6E5B, 0x0B77, 0x6E5C, 0x214D,
+ 0x6E5F, 0x1551, 0x6E67, 0x0F19, 0x6E6B, 0x1554, 0x6E6E, 0x154D, 0x6E6F,
+ 0x0C6C, 0x6E72, 0x1550, 0x6E76, 0x1556, 0x6E7E, 0x0FF7, 0x6E7F, 0x08EA,
+ 0x6E80, 0x0EAC, 0x6E82, 0x1560, 0x6E8C, 0x0D42, 0x6E8F, 0x156C, 0x6E90,
+ 0x076F, 0x6E96, 0x096A, 0x6E98, 0x1562, 0x6E9C, 0x0F77, 0x6E9D, 0x07D4,
+ 0x6E9F, 0x156F, 0x6EA2, 0x04B2, 0x6EA5, 0x156D, 0x6EAA, 0x1561, 0x6EAB,
+ 0x340C, 0x6EAF, 0x1567, 0x6EB2, 0x1569, 0x6EB6, 0x0F39, 0x6EB7, 0x1564,
+ 0x6EBA, 0x0C28, 0x6EBD, 0x1566, 0x6EBF, 0x2150, 0x6EC2, 0x156E, 0x6EC4,
+ 0x1568, 0x6EC5, 0x0ED3, 0x6EC7, 0x397F, 0x6EC9, 0x1563, 0x6ECA, 0x3980,
+ 0x6ECB, 0x08CE, 0x6ECC, 0x157B, 0x6ECE, 0x3981, 0x6ED1, 0x05C8, 0x6ED3,
+ 0x1565, 0x6ED4, 0x156A, 0x6ED5, 0x156B, 0x6ED9, 0x3C38, 0x6EDD, 0x0B4C,
+ 0x6EDE, 0x0B3A, 0x6EE6, 0x3C24, 0x6EEC, 0x1573, 0x6EEF, 0x1579, 0x6EF2,
+ 0x1577, 0x6EF4, 0x0C23, 0x6EF7, 0x157E, 0x6EF8, 0x1574, 0x6EFD, 0x3982,
+ 0x6EFE, 0x1575, 0x6EFF, 0x155D, 0x6F01, 0x0693, 0x6F02, 0x0DAC, 0x6F06,
+ 0x08EB, 0x6F09, 0x0809, 0x6F0F, 0x0FD9, 0x6F11, 0x1571, 0x6F13, 0x157D,
+ 0x6F14, 0x050B, 0x6F15, 0x0AE8, 0x6F1A, 0x3983, 0x6F20, 0x0D2F, 0x6F22,
+ 0x05FD, 0x6F23, 0x0FC2, 0x6F2A, 0x3984, 0x6F2B, 0x0EAD, 0x6F2C, 0x0BEE,
+ 0x6F2F, 0x3985, 0x6F31, 0x1578, 0x6F32, 0x157A, 0x6F33, 0x3986, 0x6F38,
+ 0x0AB4, 0x6F3E, 0x157C, 0x6F3F, 0x1576, 0x6F41, 0x1570, 0x6F45, 0x05FF,
+ 0x6F51, 0x1E60, 0x6F54, 0x073F, 0x6F58, 0x158A, 0x6F5A, 0x3987, 0x6F5B,
+ 0x1585, 0x6F5C, 0x0A9C, 0x6F5E, 0x3988, 0x6F5F, 0x05C1, 0x6F62, 0x3989,
+ 0x6F64, 0x096B, 0x6F66, 0x158E, 0x6F6D, 0x1587, 0x6F6E, 0x0BC8, 0x6F6F,
+ 0x1584, 0x6F70, 0x0BF5, 0x6F74, 0x15A7, 0x6F78, 0x1581, 0x6F7A, 0x1580,
+ 0x6F7C, 0x1589, 0x6F7D, 0x398A, 0x6F80, 0x1583, 0x6F81, 0x1582, 0x6F82,
+ 0x1588, 0x6F84, 0x0A45, 0x6F86, 0x157F, 0x6F88, 0x2151, 0x6F8B, 0x398B,
+ 0x6F8D, 0x398C, 0x6F8E, 0x158B, 0x6F91, 0x158C, 0x6F92, 0x398D, 0x6F94,
+ 0x398E, 0x6F97, 0x05FE, 0x6F98, 0x363C, 0x6F9A, 0x398F, 0x6FA1, 0x1591,
+ 0x6FA3, 0x1590, 0x6FA4, 0x1592, 0x6FA7, 0x3990, 0x6FA8, 0x3991, 0x6FAA,
+ 0x1595, 0x6FB1, 0x0C3D, 0x6FB3, 0x158F, 0x6FB5, 0x2152, 0x6FB6, 0x3992,
+ 0x6FB9, 0x1593, 0x6FC0, 0x0739, 0x6FC1, 0x0B59, 0x6FC2, 0x158D, 0x6FC3,
+ 0x0CF1, 0x6FC6, 0x1594, 0x6FD4, 0x1599, 0x6FD5, 0x1597, 0x6FD8, 0x159A,
+ 0x6FDA, 0x3993, 0x6FDB, 0x159D, 0x6FDE, 0x3994, 0x6FDF, 0x1596, 0x6FE0,
+ 0x07FC, 0x6FE1, 0x0CDE, 0x6FE4, 0x1536, 0x6FEB, 0x0F5E, 0x6FEC, 0x1598,
+ 0x6FEE, 0x159C, 0x6FEF, 0x0B55, 0x6FF1, 0x159B, 0x6FF3, 0x1586, 0x6FF5,
+ 0x2153, 0x6FF6, 0x1BA4, 0x6FF9, 0x3995, 0x6FFA, 0x15A0, 0x6FFE, 0x15A4,
+ 0x7001, 0x15A2, 0x7005, 0x2154, 0x7006, 0x1E50, 0x7007, 0x2155, 0x7009,
+ 0x159E, 0x700B, 0x159F, 0x700F, 0x15A3, 0x7011, 0x15A1, 0x7015, 0x0DC0,
+ 0x7018, 0x15A9, 0x701A, 0x15A6, 0x701B, 0x15A5, 0x701D, 0x15A8, 0x701E,
+ 0x0CAC, 0x701F, 0x15AA, 0x7026, 0x0BB3, 0x7027, 0x0B4D, 0x7028, 0x2156,
+ 0x702C, 0x0A49, 0x7030, 0x15AB, 0x7032, 0x15AD, 0x7039, 0x3996, 0x703C,
+ 0x3997, 0x703E, 0x15AC, 0x704A, 0x3998, 0x704C, 0x1572, 0x7051, 0x15AE,
+ 0x7054, 0x3999, 0x7058, 0x0CBF, 0x705D, 0x399A, 0x705E, 0x399B, 0x7063,
+ 0x15AF, 0x7064, 0x399C, 0x706B, 0x0550, 0x706C, 0x399D, 0x706F, 0x0C6E,
+ 0x7070, 0x0583, 0x7078, 0x067E, 0x707C, 0x090A, 0x707D, 0x0842, 0x707E,
+ 0x399E, 0x7081, 0x399F, 0x7085, 0x2157, 0x7089, 0x0FCD, 0x708A, 0x0A2C,
+ 0x708E, 0x050C, 0x7092, 0x15B1, 0x7095, 0x39A0, 0x7099, 0x15B0, 0x70AB,
+ 0x2158, 0x70AC, 0x15B4, 0x70AD, 0x0B78, 0x70AE, 0x15B7, 0x70AF, 0x15B2,
+ 0x70B3, 0x15B6, 0x70B7, 0x39A1, 0x70B8, 0x15B5, 0x70B9, 0x0C3A, 0x70BA,
+ 0x049D, 0x70BB, 0x20AD, 0x70C8, 0x0FBD, 0x70CB, 0x15B9, 0x70CF, 0x04CA,
+ 0x70D3, 0x39A2, 0x70D4, 0x39A3, 0x70D8, 0x39A4, 0x70D9, 0x15BB, 0x70DC,
+ 0x39A5, 0x70DD, 0x15BA, 0x70DF, 0x15B8, 0x70F1, 0x15B3, 0x70F9, 0x0E51,
+ 0x70FD, 0x15BD, 0x7104, 0x215A, 0x7107, 0x39A6, 0x7109, 0x15BC, 0x710F,
+ 0x2159, 0x7114, 0x050D, 0x7119, 0x15BF, 0x711A, 0x0E02, 0x711C, 0x15BE,
+ 0x7120, 0x39A7, 0x7121, 0x0EC1, 0x7126, 0x09AF, 0x7130, 0x1DDC, 0x7131,
+ 0x39A8, 0x7136, 0x0AB5, 0x713C, 0x09AE, 0x7146, 0x215C, 0x7147, 0x215D,
+ 0x7149, 0x0FC3, 0x714A, 0x39A9, 0x714C, 0x15C5, 0x714E, 0x0A9D, 0x7152,
+ 0x39AA, 0x7155, 0x15C1, 0x7156, 0x15C6, 0x7159, 0x050E, 0x715C, 0x215B,
+ 0x7160, 0x39AB, 0x7162, 0x15C4, 0x7164, 0x0D17, 0x7165, 0x15C0, 0x7166,
+ 0x15C3, 0x7167, 0x09B0, 0x7169, 0x0D65, 0x716C, 0x15C7, 0x716E, 0x08FD,
+ 0x7179, 0x39AC, 0x717D, 0x0A9E, 0x7184, 0x15CA, 0x7188, 0x15C2, 0x718A,
+ 0x06FD, 0x718F, 0x15C8, 0x7192, 0x39AD, 0x7194, 0x0F3A, 0x7195, 0x15CB,
+ 0x7199, 0x205D, 0x719F, 0x0959, 0x71A8, 0x15CC, 0x71AC, 0x15CD, 0x71B1,
+ 0x0CE4, 0x71B3, 0x39AE, 0x71B9, 0x15CF, 0x71BE, 0x15D0, 0x71C1, 0x215F,
+ 0x71C3, 0x0CE9, 0x71C8, 0x0C6F, 0x71C9, 0x15D2, 0x71CB, 0x39AF, 0x71CE,
+ 0x15D4, 0x71D0, 0x0F9D, 0x71D2, 0x15D1, 0x71D3, 0x39B0, 0x71D4, 0x15D3,
+ 0x71D5, 0x050F, 0x71D6, 0x39B1, 0x71D7, 0x15CE, 0x71DF, 0x114E, 0x71E0,
+ 0x15D5, 0x71E5, 0x0AE9, 0x71E6, 0x0886, 0x71E7, 0x15D7, 0x71EC, 0x15D6,
+ 0x71ED, 0x09EA, 0x71EE, 0x10EE, 0x71F5, 0x15D8, 0x71F9, 0x15DA, 0x71FB,
+ 0x15C9, 0x71FC, 0x15D9, 0x71FE, 0x2160, 0x71FF, 0x15DB, 0x7200, 0x39B2,
+ 0x7206, 0x0D30, 0x720D, 0x15DC, 0x7210, 0x15DD, 0x721B, 0x15DE, 0x721D,
+ 0x39B3, 0x7228, 0x15DF, 0x722A, 0x0BFA, 0x722B, 0x39B4, 0x722C, 0x15E1,
+ 0x722D, 0x15E0, 0x7230, 0x15E2, 0x7232, 0x15E3, 0x7235, 0x090B, 0x7236,
+ 0x0DD5, 0x7238, 0x39B5, 0x723A, 0x0EF8, 0x723B, 0x15E4, 0x723C, 0x15E5,
+ 0x723D, 0x0AD8, 0x723E, 0x08D0, 0x723F, 0x15E6, 0x7240, 0x15E7, 0x7241,
+ 0x39B6, 0x7246, 0x15E8, 0x7247, 0x0E22, 0x7248, 0x0D5B, 0x724B, 0x15E9,
+ 0x724C, 0x0D0D, 0x7252, 0x0BC9, 0x7253, 0x39B7, 0x7255, 0x39B8, 0x7256,
+ 0x39B9, 0x7258, 0x15EA, 0x7259, 0x0567, 0x725B, 0x0687, 0x725C, 0x39BA,
+ 0x725D, 0x0ED2, 0x725F, 0x0EC2, 0x7261, 0x0534, 0x7262, 0x0FDA, 0x7267,
+ 0x0E80, 0x7269, 0x0DFA, 0x7272, 0x0A5B, 0x7274, 0x15EB, 0x7279, 0x0C9B,
+ 0x727D, 0x0757, 0x727E, 0x15EC, 0x7280, 0x0844, 0x7281, 0x15EE, 0x7282,
+ 0x15ED, 0x7287, 0x15EF, 0x728D, 0x39BB, 0x7292, 0x15F0, 0x7296, 0x15F1,
+ 0x72A0, 0x0658, 0x72A2, 0x15F2, 0x72A7, 0x15F3, 0x72AC, 0x0758, 0x72AD,
+ 0x39BC, 0x72AF, 0x0D5C, 0x72B1, 0x2161, 0x72B2, 0x15F5, 0x72B4, 0x39BD,
+ 0x72B6, 0x09DD, 0x72B9, 0x15F4, 0x72BE, 0x2162, 0x72C0, 0x342B, 0x72C2,
+ 0x06B0, 0x72C3, 0x15F6, 0x72C4, 0x15F8, 0x72C6, 0x15F7, 0x72C7, 0x39BE,
+ 0x72CE, 0x15F9, 0x72D0, 0x0785, 0x72D2, 0x15FA, 0x72D7, 0x06E1, 0x72D9,
+ 0x0AC2, 0x72DB, 0x080F, 0x72E0, 0x15FC, 0x72E1, 0x15FD, 0x72E2, 0x15FB,
+ 0x72E9, 0x0919, 0x72EC, 0x0CA0, 0x72ED, 0x06B1, 0x72F7, 0x15FF, 0x72F8,
+ 0x0B6A, 0x72F9, 0x15FE, 0x72FB, 0x39BF, 0x72FC, 0x0FDB, 0x72FD, 0x0D18,
+ 0x7304, 0x39C0, 0x7305, 0x39C1, 0x730A, 0x1602, 0x7316, 0x1604, 0x7317,
+ 0x1601, 0x731B, 0x0EE0, 0x731C, 0x1603, 0x731D, 0x1605, 0x731F, 0x0F8C,
+ 0x7324, 0x2163, 0x7325, 0x1609, 0x7328, 0x39C2, 0x7329, 0x1608, 0x732A,
+ 0x0BB4, 0x732B, 0x0CE3, 0x732E, 0x0759, 0x732F, 0x1607, 0x7331, 0x39C3,
+ 0x7334, 0x1606, 0x7336, 0x0F1B, 0x7337, 0x0F1C, 0x733E, 0x160A, 0x733F,
+ 0x0510, 0x7343, 0x39C4, 0x7344, 0x0808, 0x7345, 0x08B0, 0x734E, 0x160B,
+ 0x734F, 0x160C, 0x7357, 0x160E, 0x7363, 0x094D, 0x7368, 0x1610, 0x736A,
+ 0x160F, 0x736C, 0x39C5, 0x7370, 0x1611, 0x7372, 0x05AB, 0x7375, 0x1613,
+ 0x7377, 0x2165, 0x7378, 0x1612, 0x737A, 0x1615, 0x737B, 0x1614, 0x737C,
+ 0x39C6, 0x7383, 0x39C7, 0x7384, 0x0770, 0x7385, 0x39C8, 0x7386, 0x39C9,
+ 0x7387, 0x0F70, 0x7389, 0x06C4, 0x738B, 0x0526, 0x7395, 0x39CA, 0x7396,
+ 0x06E2, 0x739E, 0x39CB, 0x739F, 0x39CC, 0x73A0, 0x39CD, 0x73A6, 0x39CE,
+ 0x73A8, 0x3C3F, 0x73A9, 0x061D, 0x73AB, 0x39CF, 0x73B2, 0x0FB0, 0x73B3,
+ 0x1617, 0x73B5, 0x39D0, 0x73B7, 0x39D1, 0x73BA, 0x35EA, 0x73BB, 0x1619,
+ 0x73BC, 0x39D2, 0x73BD, 0x2166, 0x73C0, 0x161A, 0x73C2, 0x0551, 0x73C8,
+ 0x1616, 0x73C9, 0x2167, 0x73CA, 0x0887, 0x73CD, 0x0BDD, 0x73CE, 0x1618,
+ 0x73CF, 0x39D3, 0x73D2, 0x216A, 0x73D6, 0x2168, 0x73D9, 0x39D4, 0x73DE,
+ 0x161D, 0x73E0, 0x091A, 0x73E3, 0x2169, 0x73E4, 0x3C39, 0x73E5, 0x161B,
+ 0x73E9, 0x39D5, 0x73EA, 0x0714, 0x73ED, 0x0D5D, 0x73EE, 0x161C, 0x73F1,
+ 0x1637, 0x73F4, 0x39D6, 0x73F5, 0x216C, 0x73F8, 0x1622, 0x73FD, 0x39D7,
+ 0x73FE, 0x0771, 0x7403, 0x067F, 0x7404, 0x39D8, 0x7405, 0x161F, 0x7406,
+ 0x0F67, 0x7407, 0x216B, 0x7409, 0x0F78, 0x740A, 0x39D9, 0x741A, 0x39DA,
+ 0x741B, 0x39DB, 0x7421, 0x3C3A, 0x7422, 0x0B56, 0x7424, 0x39DC, 0x7425,
+ 0x1621, 0x7426, 0x216D, 0x7428, 0x39DD, 0x7429, 0x216F, 0x742A, 0x216E,
+ 0x742C, 0x39DE, 0x742E, 0x2170, 0x742F, 0x39DF, 0x7430, 0x39E0, 0x7431,
+ 0x39E1, 0x7432, 0x1623, 0x7433, 0x0F9E, 0x7434, 0x06CF, 0x7435, 0x0D90,
+ 0x7436, 0x0D00, 0x7439, 0x39E2, 0x743A, 0x1624, 0x743F, 0x1626, 0x7441,
+ 0x1629, 0x7444, 0x39E3, 0x7447, 0x39E4, 0x744B, 0x39E5, 0x744D, 0x39E6,
+ 0x7451, 0x39E7, 0x7455, 0x1625, 0x7457, 0x39E8, 0x7459, 0x1628, 0x745A,
+ 0x079E, 0x745B, 0x04EF, 0x745C, 0x162A, 0x745E, 0x0A36, 0x745F, 0x1627,
+ 0x7460, 0x0FA4, 0x7462, 0x2171, 0x7463, 0x162D, 0x7464, 0x1D35, 0x7466,
+ 0x39E9, 0x7469, 0x162B, 0x746A, 0x162E, 0x746B, 0x39EA, 0x746F, 0x1620,
+ 0x7470, 0x162C, 0x7471, 0x39EB, 0x7473, 0x082C, 0x7476, 0x162F, 0x747E,
+ 0x1630, 0x7480, 0x39EC, 0x7483, 0x0F68, 0x7485, 0x39ED, 0x7486, 0x39EE,
+ 0x7487, 0x39EF, 0x7489, 0x2172, 0x748B, 0x1631, 0x7490, 0x39F0, 0x7498,
+ 0x39F1, 0x749C, 0x39F2, 0x749E, 0x1632, 0x749F, 0x2173, 0x74A0, 0x39F3,
+ 0x74A2, 0x161E, 0x74A3, 0x39F4, 0x74A7, 0x1633, 0x74A8, 0x39F5, 0x74AB,
+ 0x39F6, 0x74B0, 0x0600, 0x74B5, 0x39F7, 0x74BD, 0x08D1, 0x74BF, 0x39F8,
+ 0x74C8, 0x39F9, 0x74CA, 0x1634, 0x74CF, 0x1635, 0x74D4, 0x1636, 0x74DA,
+ 0x39FA, 0x74DC, 0x04DD, 0x74DE, 0x39FB, 0x74E0, 0x1638, 0x74E2, 0x0DAD,
+ 0x74E3, 0x1639, 0x74E6, 0x05E0, 0x74E7, 0x163A, 0x74E9, 0x163B, 0x74EE,
+ 0x163C, 0x74EF, 0x3750, 0x74F0, 0x163E, 0x74F1, 0x163F, 0x74F2, 0x163D,
+ 0x74F6, 0x0DC5, 0x74F7, 0x1641, 0x74F8, 0x1640, 0x7501, 0x2174, 0x7503,
+ 0x1643, 0x7504, 0x1642, 0x7505, 0x1644, 0x750C, 0x1645, 0x750D, 0x1647,
+ 0x750E, 0x1646, 0x7511, 0x080B, 0x7513, 0x1649, 0x7515, 0x1648, 0x7518,
+ 0x0601, 0x751A, 0x0A19, 0x751C, 0x0C36, 0x751E, 0x164A, 0x751F, 0x0A5C,
+ 0x7522, 0x35DE, 0x7523, 0x0888, 0x7525, 0x051B, 0x7526, 0x164B, 0x7528,
+ 0x0F3B, 0x752B, 0x0E33, 0x752C, 0x164C, 0x752F, 0x20F2, 0x7530, 0x0C3E,
+ 0x7531, 0x0F1D, 0x7532, 0x07D5, 0x7533, 0x0A03, 0x7537, 0x0B89, 0x7538,
+ 0x10C9, 0x753A, 0x0BCA, 0x753B, 0x0568, 0x753C, 0x164D, 0x7544, 0x164E,
+ 0x7546, 0x1653, 0x7549, 0x1651, 0x754A, 0x1650, 0x754B, 0x13C7, 0x754C,
+ 0x0584, 0x754D, 0x164F, 0x754E, 0x39FC, 0x754F, 0x049E, 0x7551, 0x0D3E,
+ 0x7554, 0x0D5E, 0x7559, 0x0F79, 0x755A, 0x1654, 0x755B, 0x1652, 0x755C,
+ 0x0B9A, 0x755D, 0x0A4A, 0x7560, 0x0D3F, 0x7562, 0x0D9F, 0x7564, 0x1656,
+ 0x7565, 0x0F74, 0x7566, 0x0723, 0x7567, 0x1657, 0x7569, 0x1655, 0x756A,
+ 0x0D6A, 0x756B, 0x1658, 0x756C, 0x3C3B, 0x756D, 0x1659, 0x756F, 0x2175,
+ 0x7570, 0x049F, 0x7573, 0x09DE, 0x7574, 0x165E, 0x7575, 0x3751, 0x7576,
+ 0x165B, 0x7577, 0x0CC5, 0x7578, 0x165A, 0x7579, 0x39FD, 0x757F, 0x0640,
+ 0x7581, 0x39FE, 0x7582, 0x1661, 0x7586, 0x165C, 0x7587, 0x165D, 0x7589,
+ 0x1660, 0x758A, 0x165F, 0x758B, 0x0D97, 0x758E, 0x0AC4, 0x758F, 0x0AC3,
+ 0x7590, 0x39FF, 0x7591, 0x0659, 0x7592, 0x3A00, 0x7593, 0x3A01, 0x7594,
+ 0x1662, 0x759A, 0x1663, 0x759D, 0x1664, 0x75A3, 0x1666, 0x75A5, 0x1665,
+ 0x75AB, 0x04F8, 0x75B1, 0x166E, 0x75B2, 0x0D7C, 0x75B3, 0x1668, 0x75B4,
+ 0x3A02, 0x75B5, 0x166A, 0x75B8, 0x166C, 0x75B9, 0x0A04, 0x75BC, 0x166D,
+ 0x75BD, 0x166B, 0x75BE, 0x08EC, 0x75C2, 0x1667, 0x75C3, 0x1669, 0x75C5,
+ 0x0DB4, 0x75C7, 0x09B1, 0x75CA, 0x1670, 0x75CD, 0x166F, 0x75D2, 0x1671,
+ 0x75D4, 0x08D2, 0x75D5, 0x081F, 0x75D8, 0x0C71, 0x75D9, 0x1672, 0x75DB,
+ 0x0BE7, 0x75DE, 0x1674, 0x75E2, 0x0F69, 0x75E3, 0x1673, 0x75E4, 0x3A03,
+ 0x75E9, 0x0AEB, 0x75EC, 0x3752, 0x75F0, 0x1679, 0x75F2, 0x167B, 0x75F3,
+ 0x167C, 0x75F4, 0x0B92, 0x75F9, 0x3A04, 0x75FA, 0x167A, 0x75FC, 0x1677,
+ 0x75FE, 0x1675, 0x75FF, 0x1676, 0x7600, 0x3A05, 0x7601, 0x1678, 0x7609,
+ 0x167F, 0x760A, 0x3A06, 0x760B, 0x167D, 0x760D, 0x167E, 0x7615, 0x3A07,
+ 0x7616, 0x3A08, 0x7619, 0x3A09, 0x761E, 0x3A0A, 0x761F, 0x1680, 0x7620,
+ 0x1682, 0x7621, 0x1683, 0x7622, 0x1684, 0x7624, 0x1685, 0x7626, 0x1E2D,
+ 0x7627, 0x1681, 0x762D, 0x3A0B, 0x7630, 0x1687, 0x7634, 0x1686, 0x7635,
+ 0x3A0C, 0x763B, 0x1688, 0x7642, 0x0F8D, 0x7643, 0x3A0D, 0x7646, 0x168B,
+ 0x7647, 0x1689, 0x7648, 0x168A, 0x764B, 0x3A0E, 0x764C, 0x061E, 0x764E,
+ 0x3753, 0x7652, 0x0F0A, 0x7656, 0x0E1A, 0x7658, 0x168D, 0x765C, 0x168C,
+ 0x7661, 0x168E, 0x7662, 0x168F, 0x7665, 0x3A0F, 0x7667, 0x1693, 0x7668,
+ 0x1690, 0x7669, 0x1691, 0x766A, 0x1692, 0x766C, 0x1694, 0x766D, 0x3A10,
+ 0x766F, 0x3A11, 0x7670, 0x1695, 0x7671, 0x3A12, 0x7672, 0x1696, 0x7674,
+ 0x3A13, 0x7676, 0x1697, 0x7678, 0x1698, 0x767A, 0x0D43, 0x767B, 0x0C4A,
+ 0x767C, 0x1699, 0x767D, 0x0D28, 0x767E, 0x0DA6, 0x7680, 0x169A, 0x7682,
+ 0x2176, 0x7683, 0x169B, 0x7684, 0x0C24, 0x7686, 0x0585, 0x7687, 0x07D6,
+ 0x7688, 0x169C, 0x768B, 0x169D, 0x768E, 0x169E, 0x7690, 0x0877, 0x7693,
+ 0x16A0, 0x7696, 0x169F, 0x7699, 0x16A1, 0x769A, 0x16A2, 0x769B, 0x2179,
+ 0x769C, 0x2177, 0x769E, 0x2178, 0x76A4, 0x3A14, 0x76A5, 0x3A15, 0x76A6,
+ 0x217A, 0x76AE, 0x0D7D, 0x76B0, 0x16A3, 0x76B4, 0x16A4, 0x76B7, 0x1D1C,
+ 0x76B8, 0x16A5, 0x76B9, 0x16A6, 0x76BA, 0x16A7, 0x76BF, 0x087C, 0x76C2,
+ 0x16A8, 0x76C3, 0x0D0C, 0x76C5, 0x3A16, 0x76C6, 0x0E8D, 0x76C8, 0x04F0,
+ 0x76CA, 0x04F9, 0x76CC, 0x3A17, 0x76CD, 0x16A9, 0x76D2, 0x16AB, 0x76D6,
+ 0x16AA, 0x76D7, 0x0C6A, 0x76DB, 0x0A5D, 0x76DC, 0x14D8, 0x76DE, 0x16AC,
+ 0x76DF, 0x0ECD, 0x76E1, 0x16AD, 0x76E3, 0x0602, 0x76E4, 0x0D6B, 0x76E5,
+ 0x16AE, 0x76E7, 0x16AF, 0x76EA, 0x16B0, 0x76EC, 0x3A18, 0x76EE, 0x0EE8,
+ 0x76F2, 0x0EE1, 0x76F4, 0x0BDA, 0x76F8, 0x0AEC, 0x76FB, 0x16B2, 0x76FC,
+ 0x3A19, 0x76FE, 0x096C, 0x7701, 0x09B2, 0x7704, 0x16B5, 0x7707, 0x16B4,
+ 0x7708, 0x16B3, 0x7709, 0x0D91, 0x770B, 0x0603, 0x770C, 0x075D, 0x771B,
+ 0x16BB, 0x771E, 0x16B8, 0x771F, 0x0A05, 0x7720, 0x0EBE, 0x7724, 0x16B7,
+ 0x7725, 0x16B9, 0x7726, 0x16BA, 0x7729, 0x16B6, 0x7734, 0x3A1A, 0x7736,
+ 0x3A1B, 0x7737, 0x16BC, 0x7738, 0x16BD, 0x773A, 0x0BCB, 0x773C, 0x061F,
+ 0x7740, 0x0BA3, 0x7746, 0x217C, 0x7747, 0x16BE, 0x775A, 0x16BF, 0x775B,
+ 0x16C2, 0x775C, 0x3A1C, 0x775F, 0x3A1D, 0x7760, 0x3A1E, 0x7761, 0x0A2D,
+ 0x7762, 0x1EC5, 0x7763, 0x0C9C, 0x7765, 0x16C3, 0x7766, 0x0E81, 0x7768,
+ 0x16C0, 0x776A, 0x3755, 0x776B, 0x16C1, 0x7772, 0x3A1F, 0x7779, 0x16C6,
+ 0x777D, 0x3A20, 0x777E, 0x16C5, 0x777F, 0x16C4, 0x778B, 0x16C8, 0x778E,
+ 0x16C7, 0x7791, 0x16C9, 0x7795, 0x3A21, 0x779E, 0x16CB, 0x77A0, 0x16CA,
+ 0x77A5, 0x0E1D, 0x77A9, 0x3756, 0x77AA, 0x3A22, 0x77AC, 0x0960, 0x77AD,
+ 0x0F8E, 0x77B0, 0x16CC, 0x77B3, 0x0C8F, 0x77B6, 0x16CD, 0x77B9, 0x16CE,
+ 0x77BB, 0x16D2, 0x77BC, 0x16D0, 0x77BD, 0x16D1, 0x77BF, 0x16CF, 0x77C7,
+ 0x16D3, 0x77CD, 0x16D4, 0x77D7, 0x16D5, 0x77DA, 0x16D6, 0x77DB, 0x0EC3,
+ 0x77DC, 0x16D7, 0x77E2, 0x0EFC, 0x77E3, 0x16D8, 0x77E5, 0x0B8C, 0x77E6,
+ 0x3A23, 0x77E7, 0x0D20, 0x77E9, 0x06E3, 0x77ED, 0x0B79, 0x77EE, 0x16D9,
+ 0x77EF, 0x06B2, 0x77F0, 0x3A24, 0x77F3, 0x0A74, 0x77F4, 0x3A25, 0x77FC,
+ 0x16DA, 0x7802, 0x082D, 0x7806, 0x3A26, 0x780C, 0x16DB, 0x7812, 0x16DC,
+ 0x7814, 0x075A, 0x7815, 0x0845, 0x7820, 0x16DE, 0x7821, 0x217E, 0x7822,
+ 0x3A27, 0x7825, 0x0C50, 0x7826, 0x0846, 0x7827, 0x0668, 0x782D, 0x3A28,
+ 0x782E, 0x3A29, 0x7830, 0x3A2A, 0x7832, 0x0E52, 0x7834, 0x0D01, 0x7835,
+ 0x3A2B, 0x783A, 0x0C51, 0x783F, 0x07EE, 0x7845, 0x16E0, 0x784E, 0x217F,
+ 0x784F, 0x341E, 0x7851, 0x3C3C, 0x785D, 0x09B3, 0x7864, 0x2180, 0x7868,
+ 0x3A2C, 0x786B, 0x0F7A, 0x786C, 0x07D7, 0x786F, 0x075B, 0x7872, 0x0D37,
+ 0x7874, 0x16E2, 0x787A, 0x2181, 0x787C, 0x16E4, 0x7881, 0x079F, 0x7886,
+ 0x16E3, 0x7887, 0x0C12, 0x788C, 0x16E6, 0x788D, 0x0595, 0x788E, 0x16E1,
+ 0x7891, 0x0D7E, 0x7893, 0x04D2, 0x7895, 0x085C, 0x7897, 0x0FF8, 0x789A,
+ 0x16E5, 0x789E, 0x3A2D, 0x78A3, 0x16E7, 0x78A7, 0x0E1B, 0x78A9, 0x0A7D,
+ 0x78AA, 0x16E9, 0x78AF, 0x16EA, 0x78B5, 0x16E8, 0x78BA, 0x05AC, 0x78BC,
+ 0x16F0, 0x78BE, 0x16EF, 0x78C1, 0x08D3, 0x78C5, 0x16F1, 0x78C6, 0x16EC,
+ 0x78C8, 0x3A2E, 0x78CA, 0x16F2, 0x78CB, 0x16ED, 0x78CC, 0x3A2F, 0x78CE,
+ 0x3A30, 0x78D0, 0x0D6C, 0x78D1, 0x16EB, 0x78D4, 0x16EE, 0x78DA, 0x16F5,
+ 0x78E0, 0x3A32, 0x78E1, 0x3A33, 0x78E4, 0x3A31, 0x78E7, 0x16F4, 0x78E8,
+ 0x0E8F, 0x78EC, 0x16F3, 0x78EF, 0x04AF, 0x78F2, 0x3A34, 0x78F4, 0x16F7,
+ 0x78F7, 0x3A35, 0x78FB, 0x3A36, 0x78FD, 0x16F6, 0x7901, 0x09B4, 0x7907,
+ 0x16F8, 0x790E, 0x0AC5, 0x7911, 0x16FA, 0x7912, 0x16F9, 0x7919, 0x16FB,
+ 0x7926, 0x16DD, 0x792A, 0x16DF, 0x792B, 0x16FD, 0x792C, 0x16FC, 0x7930,
+ 0x2182, 0x7931, 0x3A37, 0x7934, 0x3A38, 0x793A, 0x08D4, 0x793B, 0x3A39,
+ 0x793C, 0x0FB1, 0x793D, 0x3A3A, 0x793E, 0x08FE, 0x7940, 0x16FE, 0x7941,
+ 0x070D, 0x7945, 0x3A3B, 0x7947, 0x065A, 0x7948, 0x0641, 0x7949, 0x08B1,
+ 0x7950, 0x0F1E, 0x7953, 0x1704, 0x7955, 0x1703, 0x7956, 0x0AC6, 0x7957,
+ 0x1700, 0x795A, 0x1702, 0x795B, 0x3A3C, 0x795C, 0x3A3D, 0x795D, 0x0955,
+ 0x795E, 0x0A06, 0x795F, 0x1701, 0x7960, 0x16FF, 0x7962, 0x0CE0, 0x7965,
+ 0x09B5, 0x7968, 0x0DAE, 0x796D, 0x0847, 0x7977, 0x0C72, 0x797A, 0x1705,
+ 0x797F, 0x1706, 0x7980, 0x171C, 0x7981, 0x06D0, 0x7984, 0x0FE3, 0x7985,
+ 0x0AB7, 0x798A, 0x1707, 0x798B, 0x3A3E, 0x798D, 0x0552, 0x798E, 0x0C13,
+ 0x798F, 0x0DF1, 0x7994, 0x2186, 0x7996, 0x3A3F, 0x7998, 0x3A40, 0x799B,
+ 0x2188, 0x799D, 0x1708, 0x79A6, 0x0694, 0x79A7, 0x1709, 0x79AA, 0x170B,
+ 0x79AE, 0x170C, 0x79B0, 0x0CDF, 0x79B1, 0x1E4E, 0x79B3, 0x170D, 0x79B8,
+ 0x3A41, 0x79B9, 0x170E, 0x79BA, 0x170F, 0x79BB, 0x3A42, 0x79BD, 0x06D1,
+ 0x79BE, 0x0553, 0x79BF, 0x0C9D, 0x79C0, 0x0932, 0x79C1, 0x08B2, 0x79C9,
+ 0x1710, 0x79CA, 0x3A43, 0x79CB, 0x0933, 0x79D1, 0x054A, 0x79D2, 0x0DB5,
+ 0x79D5, 0x1711, 0x79D8, 0x0D7F, 0x79DA, 0x3A44, 0x79DF, 0x0AC7, 0x79E1,
+ 0x1714, 0x79E3, 0x1715, 0x79E4, 0x0D1F, 0x79E6, 0x0A07, 0x79E7, 0x1712,
+ 0x79E9, 0x0B9F, 0x79EC, 0x1713, 0x79F0, 0x09B6, 0x79FB, 0x04A0, 0x7A00,
+ 0x0643, 0x7A03, 0x3A45, 0x7A05, 0x3633, 0x7A08, 0x1716, 0x7A09, 0x3A46,
+ 0x7A0B, 0x0C14, 0x7A0D, 0x1717, 0x7A0E, 0x0A6B, 0x7A11, 0x3A47, 0x7A14,
+ 0x0EB9, 0x7A17, 0x0D95, 0x7A18, 0x1718, 0x7A19, 0x1719, 0x7A1A, 0x0B93,
+ 0x7A1C, 0x0F8F, 0x7A1E, 0x3A48, 0x7A1F, 0x171B, 0x7A20, 0x171A, 0x7A2D,
+ 0x3A49, 0x7A2E, 0x091B, 0x7A31, 0x171D, 0x7A32, 0x04B4, 0x7A37, 0x1720,
+ 0x7A39, 0x3A4A, 0x7A3B, 0x171E, 0x7A3C, 0x0554, 0x7A3D, 0x0724, 0x7A3E,
+ 0x171F, 0x7A3F, 0x07D8, 0x7A40, 0x0804, 0x7A42, 0x0E36, 0x7A43, 0x1721,
+ 0x7A45, 0x3A4B, 0x7A46, 0x0E82, 0x7A49, 0x1723, 0x7A4C, 0x3A4C, 0x7A4D,
+ 0x0A75, 0x7A4E, 0x04F1, 0x7A4F, 0x053A, 0x7A50, 0x0470, 0x7A57, 0x1722,
+ 0x7A5D, 0x3A4D, 0x7A60, 0x3A4E, 0x7A61, 0x1724, 0x7A62, 0x1725, 0x7A63,
+ 0x09DF, 0x7A69, 0x1726, 0x7A6B, 0x05AD, 0x7A6D, 0x3A4F, 0x7A70, 0x1728,
+ 0x7A74, 0x0740, 0x7A76, 0x0680, 0x7A78, 0x3A50, 0x7A79, 0x1729, 0x7A7A,
+ 0x06ED, 0x7A7D, 0x172A, 0x7A7F, 0x0AA0, 0x7A81, 0x0CA5, 0x7A83, 0x0A84,
+ 0x7A84, 0x0865, 0x7A88, 0x172B, 0x7A92, 0x0BA0, 0x7A93, 0x0AED, 0x7A95,
+ 0x172D, 0x7A96, 0x172F, 0x7A97, 0x172C, 0x7A98, 0x172E, 0x7A9F, 0x06F8,
+ 0x7AA0, 0x3A51, 0x7AA3, 0x3A52, 0x7AA9, 0x1730, 0x7AAA, 0x06FC, 0x7AAE,
+ 0x0681, 0x7AAF, 0x0F3C, 0x7AB0, 0x1732, 0x7AB3, 0x3A53, 0x7AB6, 0x1733,
+ 0x7ABA, 0x04D0, 0x7ABB, 0x3A54, 0x7ABC, 0x3A55, 0x7ABF, 0x1736, 0x7AC3,
+ 0x05D4, 0x7AC4, 0x1735, 0x7AC5, 0x1734, 0x7AC6, 0x3A56, 0x7AC7, 0x1738,
+ 0x7AC8, 0x1731, 0x7ACA, 0x1739, 0x7ACB, 0x0F71, 0x7ACD, 0x173A, 0x7ACF,
+ 0x173B, 0x7AD1, 0x2189, 0x7AD2, 0x11C5, 0x7AD3, 0x173D, 0x7AD5, 0x173C,
+ 0x7AD9, 0x173E, 0x7ADA, 0x173F, 0x7ADC, 0x0F7D, 0x7ADD, 0x1740, 0x7ADF,
+ 0x1C08, 0x7AE0, 0x09B7, 0x7AE1, 0x1741, 0x7AE2, 0x1742, 0x7AE3, 0x0961,
+ 0x7AE5, 0x0C90, 0x7AE6, 0x1743, 0x7AE7, 0x218A, 0x7AEA, 0x0B66, 0x7AEB,
+ 0x218C, 0x7AED, 0x1744, 0x7AEF, 0x0B7A, 0x7AF0, 0x1745, 0x7AF6, 0x069D,
+ 0x7AF8, 0x1076, 0x7AF9, 0x0B9B, 0x7AFA, 0x08DF, 0x7AFF, 0x0604, 0x7B02,
+ 0x1746, 0x7B04, 0x1753, 0x7B06, 0x1749, 0x7B07, 0x3A57, 0x7B08, 0x0682,
+ 0x7B0A, 0x1748, 0x7B0B, 0x1755, 0x7B0F, 0x1747, 0x7B11, 0x09B8, 0x7B14,
+ 0x3A58, 0x7B18, 0x174B, 0x7B19, 0x174C, 0x7B1B, 0x0C25, 0x7B1E, 0x174D,
+ 0x7B20, 0x05BC, 0x7B25, 0x0A20, 0x7B26, 0x0DD6, 0x7B27, 0x3A59, 0x7B28,
+ 0x174F, 0x7B2C, 0x0B48, 0x7B31, 0x3A5A, 0x7B33, 0x174A, 0x7B35, 0x174E,
+ 0x7B36, 0x1750, 0x7B39, 0x086B, 0x7B45, 0x1757, 0x7B46, 0x0DA0, 0x7B47,
+ 0x3A5B, 0x7B48, 0x0D3A, 0x7B49, 0x0C73, 0x7B4B, 0x06D2, 0x7B4C, 0x1756,
+ 0x7B4D, 0x1754, 0x7B4E, 0x3A5C, 0x7B4F, 0x0D49, 0x7B50, 0x1751, 0x7B51,
+ 0x0B9C, 0x7B52, 0x0C75, 0x7B53, 0x375D, 0x7B54, 0x0C74, 0x7B56, 0x0866,
+ 0x7B5D, 0x1769, 0x7B60, 0x3A5D, 0x7B65, 0x1759, 0x7B67, 0x175B, 0x7B69,
+ 0x3A5E, 0x7B6C, 0x175E, 0x7B6D, 0x3A5F, 0x7B6E, 0x175F, 0x7B70, 0x175C,
+ 0x7B71, 0x175D, 0x7B72, 0x3A60, 0x7B74, 0x175A, 0x7B75, 0x1758, 0x7B7A,
+ 0x1752, 0x7B86, 0x0E1F, 0x7B87, 0x0555, 0x7B8B, 0x1766, 0x7B8D, 0x1763,
+ 0x7B8F, 0x1768, 0x7B91, 0x3A61, 0x7B92, 0x1767, 0x7B94, 0x0D29, 0x7B95,
+ 0x0EB3, 0x7B97, 0x0889, 0x7B98, 0x1761, 0x7B99, 0x176A, 0x7B9A, 0x1765,
+ 0x7B9C, 0x1764, 0x7B9D, 0x1760, 0x7B9E, 0x218D, 0x7B9F, 0x1762, 0x7BA1,
+ 0x0605, 0x7BAA, 0x0B7B, 0x7BAD, 0x0AA1, 0x7BAF, 0x3A62, 0x7BB1, 0x0D36,
+ 0x7BB4, 0x176F, 0x7BB8, 0x0D38, 0x7BC0, 0x0A85, 0x7BC1, 0x176C, 0x7BC4,
+ 0x0D63, 0x7BC6, 0x1770, 0x7BC7, 0x0E23, 0x7BC9, 0x0B99, 0x7BCB, 0x176B,
+ 0x7BCC, 0x176D, 0x7BCF, 0x176E, 0x7BD7, 0x3A63, 0x7BD9, 0x3A64, 0x7BDD,
+ 0x1771, 0x7BE0, 0x08F0, 0x7BE4, 0x0C9E, 0x7BE5, 0x1776, 0x7BE6, 0x1775,
+ 0x7BE9, 0x1772, 0x7BED, 0x0FDC, 0x7BF3, 0x177B, 0x7BF6, 0x177F, 0x7BF7,
+ 0x177C, 0x7C00, 0x1778, 0x7C07, 0x1779, 0x7C0B, 0x3A65, 0x7C0D, 0x177E,
+ 0x7C0F, 0x3A66, 0x7C11, 0x1773, 0x7C12, 0x10EA, 0x7C13, 0x177A, 0x7C14,
+ 0x1774, 0x7C17, 0x177D, 0x7C1E, 0x1E3B, 0x7C1F, 0x1783, 0x7C20, 0x3A67,
+ 0x7C21, 0x0606, 0x7C23, 0x1780, 0x7C26, 0x3A68, 0x7C27, 0x1781, 0x7C2A,
+ 0x1782, 0x7C2B, 0x1785, 0x7C31, 0x3A69, 0x7C36, 0x3A6A, 0x7C37, 0x1784,
+ 0x7C38, 0x0D8A, 0x7C3D, 0x1786, 0x7C3E, 0x0FC4, 0x7C3F, 0x0E3D, 0x7C40,
+ 0x178B, 0x7C43, 0x1788, 0x7C4C, 0x1787, 0x7C4D, 0x0A76, 0x7C4F, 0x178A,
+ 0x7C50, 0x178C, 0x7C51, 0x3A6B, 0x7C54, 0x1789, 0x7C56, 0x1790, 0x7C58,
+ 0x178D, 0x7C59, 0x3A6C, 0x7C5F, 0x178E, 0x7C60, 0x1777, 0x7C64, 0x178F,
+ 0x7C65, 0x1791, 0x7C67, 0x3A6D, 0x7C6C, 0x1792, 0x7C6E, 0x3A6E, 0x7C70,
+ 0x3A6F, 0x7C73, 0x0E16, 0x7C75, 0x1793, 0x7C7B, 0x370E, 0x7C7E, 0x0EEE,
+ 0x7C81, 0x06C6, 0x7C82, 0x06FF, 0x7C83, 0x1794, 0x7C89, 0x0E04, 0x7C8B,
+ 0x0A2E, 0x7C8D, 0x0EBC, 0x7C90, 0x1795, 0x7C92, 0x0F7B, 0x7C95, 0x0D2A,
+ 0x7C97, 0x0AC8, 0x7C98, 0x0CEA, 0x7C9B, 0x0957, 0x7C9F, 0x0484, 0x7CA1,
+ 0x179A, 0x7CA2, 0x1798, 0x7CA4, 0x1796, 0x7CA5, 0x05DD, 0x7CA7, 0x09B9,
+ 0x7CA8, 0x179B, 0x7CAB, 0x1799, 0x7CAD, 0x1797, 0x7CAE, 0x179F, 0x7CB1,
+ 0x179E, 0x7CB2, 0x179D, 0x7CB3, 0x179C, 0x7CB9, 0x17A0, 0x7CBC, 0x3A70,
+ 0x7CBD, 0x17A1, 0x7CBE, 0x0A5E, 0x7CBF, 0x3A71, 0x7CC0, 0x17A2, 0x7CC2,
+ 0x17A4, 0x7CC5, 0x17A3, 0x7CC8, 0x3A72, 0x7CC9, 0x3A73, 0x7CCA, 0x0786,
+ 0x7CCE, 0x0ABA, 0x7CD2, 0x17A6, 0x7CD6, 0x0C76, 0x7CD7, 0x3A74, 0x7CD8,
+ 0x17A5, 0x7CD9, 0x3A75, 0x7CDC, 0x17A7, 0x7CDD, 0x3A76, 0x7CDE, 0x0E05,
+ 0x7CDF, 0x0AEE, 0x7CE0, 0x07D9, 0x7CE2, 0x17A8, 0x7CE7, 0x0F90, 0x7CEB,
+ 0x3A77, 0x7CEF, 0x17AA, 0x7CF2, 0x17AB, 0x7CF4, 0x17AC, 0x7CF6, 0x17AD,
+ 0x7CF8, 0x08B3, 0x7CFA, 0x17AE, 0x7CFB, 0x0725, 0x7CFE, 0x0684, 0x7D00,
+ 0x0644, 0x7D02, 0x17B0, 0x7D04, 0x0EFF, 0x7D05, 0x07DA, 0x7D06, 0x17AF,
+ 0x7D07, 0x3A78, 0x7D08, 0x3A79, 0x7D09, 0x3A7A, 0x7D0A, 0x17B3, 0x7D0B,
+ 0x0EF2, 0x7D0D, 0x0CF2, 0x7D10, 0x0DA5, 0x7D13, 0x3A7B, 0x7D14, 0x096D,
+ 0x7D15, 0x17B2, 0x7D17, 0x08FF, 0x7D18, 0x07DB, 0x7D19, 0x08B4, 0x7D1A,
+ 0x0683, 0x7D1B, 0x0E06, 0x7D1C, 0x17B1, 0x7D1D, 0x3A7C, 0x7D20, 0x0AC9,
+ 0x7D21, 0x0E70, 0x7D22, 0x0867, 0x7D23, 0x3A7D, 0x7D2B, 0x08B5, 0x7D2C,
+ 0x0BF9, 0x7D2E, 0x17B6, 0x7D2F, 0x0FA7, 0x7D30, 0x0849, 0x7D32, 0x17B7,
+ 0x7D33, 0x0A08, 0x7D35, 0x17B9, 0x7D39, 0x09BA, 0x7D3A, 0x0820, 0x7D3F,
+ 0x17B8, 0x7D41, 0x3A7E, 0x7D42, 0x0934, 0x7D43, 0x0772, 0x7D44, 0x0ACA,
+ 0x7D45, 0x17B4, 0x7D46, 0x17BA, 0x7D48, 0x218F, 0x7D4B, 0x17B5, 0x7D4C,
+ 0x0726, 0x7D4E, 0x17BD, 0x7D4F, 0x17C1, 0x7D50, 0x0741, 0x7D53, 0x3A7F,
+ 0x7D56, 0x17BC, 0x7D59, 0x3A80, 0x7D5B, 0x17C5, 0x7D5C, 0x2190, 0x7D5D,
+ 0x3A81, 0x7D5E, 0x07DC, 0x7D61, 0x0F57, 0x7D62, 0x0480, 0x7D63, 0x17C2,
+ 0x7D66, 0x0685, 0x7D68, 0x17BF, 0x7D6E, 0x17C0, 0x7D71, 0x0C77, 0x7D72,
+ 0x17BE, 0x7D73, 0x17BB, 0x7D75, 0x0586, 0x7D76, 0x0A88, 0x7D79, 0x075C,
+ 0x7D7A, 0x3A82, 0x7D7D, 0x17C7, 0x7D86, 0x3A83, 0x7D89, 0x17C4, 0x7D8B,
+ 0x3A84, 0x7D8C, 0x3A85, 0x7D8F, 0x17C6, 0x7D93, 0x17C3, 0x7D99, 0x0727,
+ 0x7D9A, 0x0B13, 0x7D9B, 0x17C8, 0x7D9C, 0x0AF0, 0x7D9F, 0x17D5, 0x7DA0,
+ 0x2192, 0x7DA2, 0x17D1, 0x7DA3, 0x17CB, 0x7DAB, 0x17CF, 0x7DAC, 0x0926,
+ 0x7DAD, 0x04A1, 0x7DAE, 0x17CA, 0x7DAF, 0x17D2, 0x7DB0, 0x17D6, 0x7DB1,
+ 0x07DD, 0x7DB2, 0x0EE2, 0x7DB4, 0x0BF2, 0x7DB5, 0x17CC, 0x7DB7, 0x2191,
+ 0x7DB8, 0x17D4, 0x7DBA, 0x17C9, 0x7DBB, 0x0B7C, 0x7DBD, 0x17CE, 0x7DBE,
+ 0x0481, 0x7DBF, 0x0ED6, 0x7DC7, 0x17CD, 0x7DCA, 0x06D3, 0x7DCB, 0x0D80,
+ 0x7DCC, 0x3A86, 0x7DCF, 0x0AEF, 0x7DD1, 0x0F98, 0x7DD2, 0x0979, 0x7DD5,
+ 0x17FD, 0x7DD6, 0x2193, 0x7DD8, 0x17D7, 0x7DDA, 0x0AA2, 0x7DDC, 0x17D3,
+ 0x7DDD, 0x17D8, 0x7DDE, 0x17DA, 0x7DE0, 0x0C15, 0x7DE1, 0x17DD, 0x7DE3,
+ 0x340A, 0x7DE4, 0x17D9, 0x7DE8, 0x0E24, 0x7DE9, 0x0607, 0x7DEB, 0x3A87,
+ 0x7DEC, 0x0ED7, 0x7DEF, 0x04A2, 0x7DF1, 0x3A88, 0x7DF2, 0x17DC, 0x7DF4,
+ 0x0FC5, 0x7DF9, 0x3A89, 0x7DFB, 0x17DB, 0x7E01, 0x0511, 0x7E04, 0x0CC4,
+ 0x7E05, 0x17DE, 0x7E08, 0x3A8A, 0x7E09, 0x17E5, 0x7E0A, 0x17DF, 0x7E0B,
+ 0x17E6, 0x7E11, 0x3A8B, 0x7E12, 0x17E2, 0x7E15, 0x3A8C, 0x7E1B, 0x0D31,
+ 0x7E1E, 0x08F6, 0x7E1F, 0x17E4, 0x7E20, 0x3A8D, 0x7E21, 0x17E1, 0x7E22,
+ 0x17E7, 0x7E23, 0x17E0, 0x7E26, 0x094E, 0x7E2B, 0x0E53, 0x7E2E, 0x0956,
+ 0x7E31, 0x17E3, 0x7E32, 0x17EF, 0x7E35, 0x17EB, 0x7E37, 0x17EE, 0x7E39,
+ 0x17EC, 0x7E3A, 0x17F0, 0x7E3B, 0x17EA, 0x7E3D, 0x17D0, 0x7E3E, 0x0A77,
+ 0x7E41, 0x0D5F, 0x7E43, 0x17ED, 0x7E46, 0x17E8, 0x7E47, 0x3A8E, 0x7E48,
+ 0x3767, 0x7E4A, 0x0AA3, 0x7E4B, 0x0728, 0x7E4D, 0x0935, 0x7E52, 0x2194,
+ 0x7E54, 0x09EB, 0x7E55, 0x0AB8, 0x7E56, 0x17F3, 0x7E59, 0x17F5, 0x7E5A,
+ 0x17F6, 0x7E5D, 0x17F2, 0x7E5E, 0x17F4, 0x7E61, 0x1E11, 0x7E62, 0x3A8F,
+ 0x7E66, 0x17E9, 0x7E67, 0x17F1, 0x7E69, 0x17F9, 0x7E6A, 0x17F8, 0x7E6B,
+ 0x1DF7, 0x7E6D, 0x0EA8, 0x7E6E, 0x3A90, 0x7E70, 0x0701, 0x7E73, 0x3A91,
+ 0x7E79, 0x17F7, 0x7E7B, 0x17FB, 0x7E7C, 0x17FA, 0x7E7D, 0x17FE, 0x7E7F,
+ 0x1800, 0x7E82, 0x088A, 0x7E83, 0x17FC, 0x7E88, 0x1801, 0x7E89, 0x1802,
+ 0x7E8A, 0x20A7, 0x7E8C, 0x1803, 0x7E8D, 0x3A92, 0x7E8E, 0x1809, 0x7E8F,
+ 0x0C35, 0x7E90, 0x1805, 0x7E91, 0x3A93, 0x7E92, 0x1804, 0x7E93, 0x1806,
+ 0x7E94, 0x1807, 0x7E96, 0x1808, 0x7E98, 0x3A94, 0x7E9B, 0x180A, 0x7E9C,
+ 0x180B, 0x7F36, 0x0608, 0x7F38, 0x180C, 0x7F3A, 0x180D, 0x7F44, 0x3A95,
+ 0x7F45, 0x180E, 0x7F47, 0x2195, 0x7F4C, 0x180F, 0x7F4D, 0x1810, 0x7F4E,
+ 0x1811, 0x7F4F, 0x3A96, 0x7F50, 0x1812, 0x7F51, 0x1813, 0x7F52, 0x3A97,
+ 0x7F53, 0x3A98, 0x7F54, 0x1815, 0x7F55, 0x1814, 0x7F58, 0x1816, 0x7F5F,
+ 0x1817, 0x7F60, 0x1818, 0x7F61, 0x3A99, 0x7F67, 0x181B, 0x7F68, 0x1819,
+ 0x7F69, 0x181A, 0x7F6A, 0x0851, 0x7F6B, 0x0729, 0x7F6E, 0x0B94, 0x7F70,
+ 0x0D47, 0x7F72, 0x097A, 0x7F75, 0x0D03, 0x7F77, 0x0D81, 0x7F78, 0x181C,
+ 0x7F79, 0x1336, 0x7F82, 0x181D, 0x7F83, 0x181F, 0x7F85, 0x0F4F, 0x7F86,
+ 0x181E, 0x7F87, 0x1821, 0x7F88, 0x1820, 0x7F8A, 0x0F3D, 0x7F8C, 0x1822,
+ 0x7F8E, 0x0D92, 0x7F91, 0x3A9A, 0x7F94, 0x1823, 0x7F9A, 0x1826, 0x7F9D,
+ 0x1825, 0x7F9E, 0x1824, 0x7FA1, 0x2196, 0x7FA3, 0x1827, 0x7FA4, 0x0708,
+ 0x7FA8, 0x0AA4, 0x7FA9, 0x065B, 0x7FAE, 0x182B, 0x7FAF, 0x1828, 0x7FB2,
+ 0x1829, 0x7FB6, 0x182C, 0x7FB8, 0x182D, 0x7FB9, 0x182A, 0x7FBD, 0x04CB,
+ 0x7FBF, 0x3A9B, 0x7FC1, 0x0527, 0x7FC5, 0x182F, 0x7FC6, 0x1830, 0x7FCA,
+ 0x1831, 0x7FCC, 0x0F4C, 0x7FCE, 0x3A9C, 0x7FD2, 0x0936, 0x7FD4, 0x1833,
+ 0x7FD5, 0x1832, 0x7FDF, 0x3A9D, 0x7FE0, 0x0A2F, 0x7FE1, 0x1834, 0x7FE5,
+ 0x3A9E, 0x7FE6, 0x1835, 0x7FE9, 0x1836, 0x7FEB, 0x0621, 0x7FEC, 0x3A9F,
+ 0x7FEE, 0x3AA0, 0x7FEF, 0x3AA1, 0x7FF0, 0x0609, 0x7FF3, 0x1837, 0x7FF9,
+ 0x1838, 0x7FFA, 0x3AA2, 0x7FFB, 0x0E8B, 0x7FFC, 0x0F4D, 0x8000, 0x0F3E,
+ 0x8001, 0x0FDD, 0x8002, 0x3713, 0x8003, 0x07DF, 0x8004, 0x183B, 0x8005,
+ 0x0900, 0x8006, 0x183A, 0x800B, 0x183C, 0x800C, 0x08D5, 0x800E, 0x3AA3,
+ 0x8010, 0x0B31, 0x8011, 0x3AA4, 0x8012, 0x183D, 0x8014, 0x3AA5, 0x8015,
+ 0x07DE, 0x8017, 0x0EE3, 0x8018, 0x183E, 0x8019, 0x183F, 0x801C, 0x1840,
+ 0x8021, 0x1841, 0x8024, 0x3AA6, 0x8026, 0x3AA7, 0x8028, 0x1842, 0x8033,
+ 0x08D6, 0x8036, 0x0EF9, 0x803A, 0x3AA8, 0x803B, 0x1844, 0x803C, 0x3AA9,
+ 0x803D, 0x0B7D, 0x803F, 0x1843, 0x8046, 0x1846, 0x804A, 0x1845, 0x8052,
+ 0x1847, 0x8056, 0x0A5F, 0x8058, 0x1848, 0x805A, 0x1849, 0x805E, 0x0E09,
+ 0x805F, 0x184A, 0x8060, 0x3AAA, 0x8061, 0x0AF1, 0x8062, 0x184B, 0x8068,
+ 0x184C, 0x806F, 0x0FC6, 0x8070, 0x184F, 0x8071, 0x3AAB, 0x8072, 0x184E,
+ 0x8073, 0x184D, 0x8074, 0x0BCC, 0x8075, 0x3AAC, 0x8076, 0x1850, 0x8077,
+ 0x09EC, 0x8079, 0x1851, 0x807D, 0x1852, 0x807E, 0x0FDE, 0x807F, 0x1853,
+ 0x8084, 0x1854, 0x8085, 0x1856, 0x8086, 0x1855, 0x8087, 0x0D39, 0x8089,
+ 0x0CD1, 0x808B, 0x0FE4, 0x808C, 0x0D3D, 0x8093, 0x1858, 0x8096, 0x09BB,
+ 0x8098, 0x0D9C, 0x809A, 0x1859, 0x809B, 0x1857, 0x809D, 0x060A, 0x809E,
+ 0x3AAD, 0x80A1, 0x0788, 0x80A2, 0x08B6, 0x80A5, 0x0D82, 0x80A6, 0x3AAE,
+ 0x80A9, 0x075E, 0x80AA, 0x0E71, 0x80AB, 0x3AAF, 0x80AC, 0x185C, 0x80AD,
+ 0x185A, 0x80AF, 0x07E0, 0x80B1, 0x07E1, 0x80B2, 0x04AD, 0x80B4, 0x0858,
+ 0x80BA, 0x0D0F, 0x80C3, 0x04A3, 0x80C4, 0x1861, 0x80C6, 0x0B7E, 0x80CC,
+ 0x0D0E, 0x80CE, 0x0B3B, 0x80D6, 0x1863, 0x80D7, 0x3AB0, 0x80D8, 0x3AB1,
+ 0x80D9, 0x185F, 0x80DA, 0x1862, 0x80DB, 0x185D, 0x80DD, 0x1860, 0x80DE,
+ 0x0E54, 0x80E1, 0x0789, 0x80E4, 0x04C1, 0x80E5, 0x185E, 0x80EF, 0x1865,
+ 0x80F1, 0x1866, 0x80F4, 0x0C91, 0x80F8, 0x06B3, 0x80FC, 0x1871, 0x80FD,
+ 0x0CF3, 0x8102, 0x08B7, 0x8105, 0x06B4, 0x8106, 0x0A6C, 0x8107, 0x0FEC,
+ 0x8108, 0x0EBA, 0x8109, 0x1864, 0x810A, 0x0A78, 0x8116, 0x3AB2, 0x8118,
+ 0x3AB3, 0x811A, 0x066D, 0x811B, 0x1867, 0x8123, 0x1869, 0x8129, 0x1868,
+ 0x812B, 0x3659, 0x812F, 0x186A, 0x8131, 0x0B64, 0x8133, 0x0CF4, 0x8139,
+ 0x0BCD, 0x813A, 0x3AB4, 0x813E, 0x186E, 0x8141, 0x3772, 0x8146, 0x186D,
+ 0x814A, 0x3AB5, 0x814B, 0x186B, 0x814C, 0x3AB6, 0x814E, 0x0A1B, 0x8150,
+ 0x0DD7, 0x8151, 0x1870, 0x8153, 0x186F, 0x8154, 0x07E2, 0x8155, 0x0FF9,
+ 0x815F, 0x1880, 0x8165, 0x1874, 0x8166, 0x1875, 0x816B, 0x091C, 0x816E,
+ 0x1873, 0x8170, 0x080A, 0x8171, 0x1872, 0x8174, 0x1876, 0x8178, 0x0BCE,
+ 0x8179, 0x0DF2, 0x817A, 0x0AA5, 0x817F, 0x0B3C, 0x8180, 0x187A, 0x8181,
+ 0x3AB7, 0x8182, 0x187B, 0x8183, 0x1877, 0x8184, 0x3AB8, 0x8188, 0x1878,
+ 0x818A, 0x1879, 0x818F, 0x07E3, 0x8193, 0x1881, 0x8195, 0x187D, 0x819A,
+ 0x0DD8, 0x819C, 0x0E9A, 0x819D, 0x0D9A, 0x81A0, 0x187C, 0x81A3, 0x187F,
+ 0x81A4, 0x187E, 0x81A8, 0x0E72, 0x81A9, 0x1882, 0x81B0, 0x1883, 0x81B3,
+ 0x0AB9, 0x81B4, 0x3AB9, 0x81B5, 0x1884, 0x81B8, 0x1886, 0x81BA, 0x188A,
+ 0x81BD, 0x1887, 0x81BE, 0x1885, 0x81BF, 0x0CF5, 0x81C0, 0x1888, 0x81C2,
+ 0x1889, 0x81C6, 0x0532, 0x81C8, 0x1890, 0x81C9, 0x188B, 0x81CD, 0x188C,
+ 0x81CF, 0x3ABA, 0x81D1, 0x188D, 0x81D3, 0x0B01, 0x81D8, 0x188F, 0x81D9,
+ 0x188E, 0x81DA, 0x1891, 0x81DF, 0x1892, 0x81E0, 0x1893, 0x81E3, 0x0A09,
+ 0x81E5, 0x0569, 0x81E7, 0x1894, 0x81E8, 0x0F9F, 0x81EA, 0x08D7, 0x81ED,
+ 0x0937, 0x81F3, 0x08B8, 0x81F4, 0x0B95, 0x81F9, 0x3ABB, 0x81FA, 0x1895,
+ 0x81FB, 0x1896, 0x81FC, 0x04D3, 0x81FE, 0x1897, 0x8201, 0x1898, 0x8202,
+ 0x1899, 0x8203, 0x3ABC, 0x8205, 0x189A, 0x8207, 0x189B, 0x8208, 0x06B5,
+ 0x8209, 0x13AF, 0x820A, 0x189C, 0x820C, 0x0A89, 0x820D, 0x189D, 0x820E,
+ 0x08F7, 0x8210, 0x189E, 0x8212, 0x1009, 0x8216, 0x189F, 0x8217, 0x0E2E,
+ 0x8218, 0x0618, 0x821B, 0x0AA6, 0x821C, 0x0962, 0x821E, 0x0DE3, 0x821F,
+ 0x0938, 0x8221, 0x3ABD, 0x8229, 0x18A0, 0x822A, 0x07E4, 0x822B, 0x18A1,
+ 0x822C, 0x0D60, 0x822E, 0x18AF, 0x8232, 0x3ABE, 0x8233, 0x18A3, 0x8234,
+ 0x3ABF, 0x8235, 0x0B29, 0x8236, 0x0D2B, 0x8237, 0x0773, 0x8238, 0x18A2,
+ 0x8239, 0x0AA7, 0x8240, 0x18A4, 0x8246, 0x3AC0, 0x8247, 0x0C16, 0x824B,
+ 0x3AC1, 0x824F, 0x3AC2, 0x8258, 0x18A6, 0x8259, 0x18A5, 0x825A, 0x18A8,
+ 0x825D, 0x18A7, 0x825F, 0x18A9, 0x8262, 0x18AB, 0x8264, 0x18AA, 0x8266,
+ 0x060B, 0x8268, 0x18AC, 0x826A, 0x18AD, 0x826B, 0x18AE, 0x826E, 0x0821,
+ 0x826F, 0x0F91, 0x8271, 0x18B0, 0x8272, 0x09ED, 0x8276, 0x0512, 0x8277,
+ 0x18B1, 0x8278, 0x18B2, 0x8279, 0x3775, 0x827E, 0x18B3, 0x828B, 0x04B6,
+ 0x828D, 0x18B4, 0x828E, 0x3AC3, 0x8292, 0x18B5, 0x8299, 0x0DD9, 0x829D,
+ 0x08F3, 0x829F, 0x18B7, 0x82A5, 0x0587, 0x82A6, 0x0476, 0x82AB, 0x18B6,
+ 0x82AC, 0x18B9, 0x82AD, 0x0D04, 0x82AE, 0x3AC4, 0x82AF, 0x0A0A, 0x82B1,
+ 0x0556, 0x82B3, 0x0E55, 0x82B7, 0x3AC5, 0x82B8, 0x0733, 0x82B9, 0x06D4,
+ 0x82BB, 0x18B8, 0x82BD, 0x056A, 0x82BE, 0x3AC6, 0x82C5, 0x05DF, 0x82C6,
+ 0x3AC7, 0x82D1, 0x0513, 0x82D2, 0x18BD, 0x82D3, 0x0FB2, 0x82D4, 0x0B3D,
+ 0x82D7, 0x0DB6, 0x82D9, 0x18C9, 0x82DB, 0x0557, 0x82DC, 0x18C7, 0x82DE,
+ 0x18C5, 0x82DF, 0x18BC, 0x82E1, 0x18BA, 0x82E3, 0x18BB, 0x82E5, 0x090F,
+ 0x82E6, 0x06E4, 0x82E7, 0x0BB5, 0x82EB, 0x0CA9, 0x82F1, 0x04F3, 0x82F3,
+ 0x18BF, 0x82F4, 0x18BE, 0x82F9, 0x18C4, 0x82FA, 0x18C0, 0x82FB, 0x18C3,
+ 0x82FE, 0x3AC8, 0x8301, 0x2198, 0x8302, 0x0EDC, 0x8303, 0x18C2, 0x8304,
+ 0x0558, 0x8305, 0x05DB, 0x8306, 0x18C6, 0x8309, 0x18C8, 0x830E, 0x072A,
+ 0x8316, 0x18CC, 0x8317, 0x18D5, 0x8318, 0x18D6, 0x831C, 0x046F, 0x8323,
+ 0x18DD, 0x8328, 0x04B5, 0x832B, 0x18D4, 0x832F, 0x18D3, 0x8331, 0x18CE,
+ 0x8332, 0x18CD, 0x8334, 0x18CB, 0x8335, 0x18CA, 0x8336, 0x0BA1, 0x8338,
+ 0x0B5B, 0x8339, 0x18D0, 0x8340, 0x18CF, 0x8343, 0x3AC9, 0x8345, 0x18D2,
+ 0x8349, 0x0AF2, 0x834A, 0x072B, 0x834F, 0x04E3, 0x8350, 0x18D1, 0x8351,
+ 0x3ACA, 0x8352, 0x07E5, 0x8355, 0x3ACB, 0x8358, 0x0AF3, 0x8362, 0x2199,
+ 0x8373, 0x18E3, 0x8375, 0x18E4, 0x8377, 0x0559, 0x837B, 0x052E, 0x837C,
+ 0x18E1, 0x837F, 0x219A, 0x8385, 0x18D7, 0x8386, 0x3ACC, 0x8387, 0x18DF,
+ 0x8389, 0x18E6, 0x838A, 0x18E0, 0x838D, 0x3ACD, 0x838E, 0x18DE, 0x8392,
+ 0x3ACE, 0x8393, 0x18C1, 0x8396, 0x18DC, 0x8398, 0x3ACF, 0x839A, 0x18D8,
+ 0x839E, 0x060C, 0x839F, 0x18DA, 0x83A0, 0x18E5, 0x83A2, 0x18DB, 0x83A8,
+ 0x18E7, 0x83A9, 0x3AD0, 0x83AA, 0x18D9, 0x83AB, 0x0D32, 0x83B1, 0x0F53,
+ 0x83B5, 0x18E2, 0x83BD, 0x18F8, 0x83BF, 0x3AD1, 0x83C0, 0x3AD2, 0x83C1,
+ 0x18F0, 0x83C5, 0x0A41, 0x83C7, 0x219B, 0x83CA, 0x0660, 0x83CC, 0x06D5,
+ 0x83CE, 0x18EB, 0x83D3, 0x055B, 0x83D6, 0x09BC, 0x83D8, 0x18EE, 0x83DC,
+ 0x084A, 0x83DF, 0x0C4B, 0x83E0, 0x18F3, 0x83E9, 0x0E3E, 0x83EA, 0x3AD3,
+ 0x83EB, 0x18EA, 0x83EF, 0x055A, 0x83F0, 0x078A, 0x83F1, 0x0D9B, 0x83F2,
+ 0x18F4, 0x83F4, 0x18E8, 0x83F6, 0x219C, 0x83F7, 0x18F1, 0x83FB, 0x18FB,
+ 0x83FD, 0x18EC, 0x8403, 0x18ED, 0x8404, 0x0C92, 0x8407, 0x18F2, 0x840A,
+ 0x1E7F, 0x840B, 0x18EF, 0x840C, 0x0E56, 0x840D, 0x18F5, 0x840E, 0x04A4,
+ 0x840F, 0x3AD4, 0x8411, 0x3AD5, 0x8413, 0x18E9, 0x8420, 0x18F7, 0x8422,
+ 0x18F6, 0x8429, 0x0D21, 0x842A, 0x18FD, 0x842C, 0x1908, 0x8431, 0x05DC,
+ 0x8435, 0x190B, 0x8438, 0x18F9, 0x843C, 0x18FE, 0x843D, 0x0F58, 0x8446,
+ 0x1907, 0x8448, 0x219D, 0x8449, 0x0F3F, 0x844A, 0x3AD6, 0x844E, 0x0F72,
+ 0x8457, 0x0BB6, 0x845B, 0x05C9, 0x8461, 0x0DE4, 0x8462, 0x190D, 0x8463,
+ 0x0C79, 0x8466, 0x0475, 0x8469, 0x1906, 0x846B, 0x1902, 0x846C, 0x0AF4,
+ 0x846D, 0x18FC, 0x846E, 0x1904, 0x846F, 0x1909, 0x8471, 0x0CE2, 0x8475,
+ 0x046E, 0x8476, 0x3AD7, 0x8477, 0x1901, 0x8479, 0x190A, 0x847A, 0x0DEA,
+ 0x8482, 0x1905, 0x8484, 0x1900, 0x848B, 0x09BD, 0x8490, 0x0939, 0x8494,
+ 0x08D8, 0x8499, 0x0EE4, 0x849C, 0x0DB9, 0x849F, 0x1910, 0x84A1, 0x1919,
+ 0x84A8, 0x3AD8, 0x84AD, 0x1903, 0x84AF, 0x3AD9, 0x84B2, 0x05D5, 0x84B4,
+ 0x219E, 0x84B8, 0x09E0, 0x84B9, 0x190E, 0x84BB, 0x1913, 0x84BC, 0x0AF5,
+ 0x84BF, 0x190F, 0x84C0, 0x3ADA, 0x84C1, 0x1916, 0x84C2, 0x3ADB, 0x84C4,
+ 0x0B9D, 0x84C6, 0x1917, 0x84C9, 0x0F40, 0x84CA, 0x190C, 0x84CB, 0x0596,
+ 0x84CD, 0x1912, 0x84D0, 0x1915, 0x84D1, 0x0EB8, 0x84D6, 0x1918, 0x84D9,
+ 0x1911, 0x84DA, 0x1914, 0x84DC, 0x20AB, 0x84EC, 0x0E57, 0x84EE, 0x0FC7,
+ 0x84F0, 0x3ADC, 0x84F4, 0x191C, 0x84FC, 0x1923, 0x84FD, 0x3ADD, 0x84FF,
+ 0x191B, 0x8500, 0x08EF, 0x8506, 0x18FA, 0x850C, 0x3ADE, 0x8511, 0x0E1E,
+ 0x8513, 0x0EAE, 0x8514, 0x1922, 0x8515, 0x1921, 0x8517, 0x191D, 0x8518,
+ 0x191E, 0x851A, 0x04D8, 0x851F, 0x1920, 0x8521, 0x191A, 0x8523, 0x1E1A,
+ 0x8526, 0x0BF1, 0x852C, 0x191F, 0x852D, 0x04C2, 0x8534, 0x3ADF, 0x8535,
+ 0x0B02, 0x853D, 0x0E13, 0x853E, 0x1EB5, 0x8540, 0x1924, 0x8541, 0x1928,
+ 0x8543, 0x0D6D, 0x8548, 0x1927, 0x8549, 0x09BE, 0x854A, 0x08F5, 0x854B,
+ 0x192A, 0x854E, 0x06B6, 0x8553, 0x219F, 0x8555, 0x192B, 0x8557, 0x0DEB,
+ 0x8558, 0x1926, 0x8559, 0x21A0, 0x855A, 0x18FF, 0x855E, 0x3AE0, 0x8563,
+ 0x1925, 0x8568, 0x0FF5, 0x8569, 0x0C7A, 0x856A, 0x0DE5, 0x856B, 0x21A1,
+ 0x856D, 0x1932, 0x8577, 0x1938, 0x857E, 0x1939, 0x8580, 0x192C, 0x8584,
+ 0x0D2C, 0x8587, 0x1936, 0x8588, 0x192E, 0x858A, 0x1930, 0x858F, 0x3AE1,
+ 0x8590, 0x193A, 0x8591, 0x192F, 0x8594, 0x1933, 0x8597, 0x0514, 0x8599,
+ 0x0CBD, 0x859B, 0x1934, 0x859C, 0x1937, 0x85A4, 0x192D, 0x85A6, 0x0AA8,
+ 0x85A8, 0x1931, 0x85A9, 0x0875, 0x85AA, 0x0A0B, 0x85AB, 0x0706, 0x85AC,
+ 0x0F00, 0x85AD, 0x3AE4, 0x85AE, 0x0F05, 0x85AF, 0x097C, 0x85B0, 0x21A3,
+ 0x85B7, 0x3AE2, 0x85B9, 0x193E, 0x85BA, 0x193C, 0x85C1, 0x0FF4, 0x85C9,
+ 0x193B, 0x85CD, 0x0F5F, 0x85CE, 0x3AE3, 0x85CF, 0x193D, 0x85D0, 0x193F,
+ 0x85D5, 0x1940, 0x85DC, 0x1943, 0x85DD, 0x1941, 0x85E4, 0x0C7B, 0x85E5,
+ 0x1942, 0x85E9, 0x0D61, 0x85EA, 0x1935, 0x85F4, 0x3780, 0x85F7, 0x097D,
+ 0x85F9, 0x1944, 0x85FA, 0x1949, 0x85FB, 0x0AF6, 0x85FE, 0x1948, 0x8602,
+ 0x1929, 0x8606, 0x194A, 0x8607, 0x0ACB, 0x860A, 0x1945, 0x860B, 0x1947,
+ 0x8612, 0x3AE5, 0x8613, 0x1946, 0x8616, 0x14D0, 0x8617, 0x14C1, 0x861A,
+ 0x194C, 0x8622, 0x194B, 0x8629, 0x3AE6, 0x862D, 0x0F60, 0x862F, 0x16B1,
+ 0x8630, 0x194D, 0x863F, 0x194E, 0x864D, 0x194F, 0x864E, 0x078B, 0x8650,
+ 0x066E, 0x8652, 0x3AE7, 0x8654, 0x1951, 0x8655, 0x1094, 0x865A, 0x068F,
+ 0x865B, 0x3418, 0x865C, 0x0F82, 0x865E, 0x06EB, 0x865F, 0x1952, 0x8663,
+ 0x3AE8, 0x8667, 0x1953, 0x866B, 0x0BAC, 0x866C, 0x3AE9, 0x866F, 0x3AEA,
+ 0x8671, 0x1954, 0x8679, 0x0CD2, 0x867A, 0x3AEB, 0x867B, 0x047E, 0x867D,
+ 0x3786, 0x868A, 0x0563, 0x868B, 0x1959, 0x868C, 0x195A, 0x868D, 0x3AEC,
+ 0x8691, 0x3AED, 0x8693, 0x1955, 0x8695, 0x088B, 0x8698, 0x3AEE, 0x86A3,
+ 0x1956, 0x86A4, 0x0CF8, 0x86A7, 0x3AEF, 0x86A8, 0x3AF0, 0x86A9, 0x1957,
+ 0x86AA, 0x1958, 0x86AB, 0x1962, 0x86AF, 0x195C, 0x86B0, 0x195F, 0x86B6,
+ 0x195B, 0x86C4, 0x195D, 0x86C6, 0x195E, 0x86C7, 0x0904, 0x86C9, 0x1960,
+ 0x86CB, 0x0B7F, 0x86CD, 0x072C, 0x86CE, 0x05A0, 0x86D4, 0x1963, 0x86D9,
+ 0x059D, 0x86DB, 0x1968, 0x86DE, 0x1964, 0x86DF, 0x1967, 0x86E4, 0x0D4E,
+ 0x86E9, 0x1965, 0x86EC, 0x1966, 0x86ED, 0x0DBA, 0x86EE, 0x0D6E, 0x86EF,
+ 0x1969, 0x86F8, 0x0B5D, 0x86F9, 0x1973, 0x86FA, 0x3AF1, 0x86FB, 0x196F,
+ 0x86FD, 0x3AF2, 0x86FE, 0x056B, 0x8700, 0x196D, 0x8702, 0x0E58, 0x8703,
+ 0x196E, 0x8706, 0x196B, 0x8708, 0x196C, 0x8709, 0x1971, 0x870A, 0x1974,
+ 0x870B, 0x3AF3, 0x870D, 0x1972, 0x8711, 0x1970, 0x8712, 0x196A, 0x8713,
+ 0x3AF4, 0x8718, 0x0B96, 0x8719, 0x3AF5, 0x871A, 0x197B, 0x871C, 0x0EB6,
+ 0x871E, 0x3AF6, 0x8725, 0x1979, 0x8728, 0x3AF7, 0x8729, 0x197A, 0x8734,
+ 0x1975, 0x8737, 0x1977, 0x873B, 0x1978, 0x873E, 0x3AF8, 0x873F, 0x1976,
+ 0x8749, 0x0A8A, 0x874B, 0x0FDF, 0x874C, 0x197F, 0x874E, 0x1980, 0x8753,
+ 0x1986, 0x8755, 0x09F0, 0x8757, 0x1982, 0x8759, 0x1985, 0x875F, 0x197D,
+ 0x8760, 0x197C, 0x8763, 0x1987, 0x8766, 0x055C, 0x8768, 0x1983, 0x876A,
+ 0x1988, 0x876E, 0x1984, 0x8771, 0x3AF9, 0x8774, 0x1981, 0x8776, 0x0BCF,
+ 0x8778, 0x197E, 0x877F, 0x0D1E, 0x8782, 0x198C, 0x8788, 0x3AFA, 0x878D,
+ 0x0F25, 0x8799, 0x3AFB, 0x879F, 0x198B, 0x87A2, 0x198A, 0x87AB, 0x1993,
+ 0x87AC, 0x3AFC, 0x87AD, 0x3AFD, 0x87AF, 0x198D, 0x87B3, 0x1995, 0x87B5,
+ 0x3AFE, 0x87BA, 0x0F50, 0x87BB, 0x1998, 0x87BD, 0x198F, 0x87C0, 0x1990,
+ 0x87C4, 0x1994, 0x87C6, 0x1997, 0x87C7, 0x1996, 0x87CB, 0x198E, 0x87D0,
+ 0x1991, 0x87D2, 0x19A2, 0x87D6, 0x3AFF, 0x87E0, 0x199B, 0x87EB, 0x3B00,
+ 0x87EC, 0x1E23, 0x87ED, 0x3B01, 0x87EF, 0x1999, 0x87F2, 0x199A, 0x87F5,
+ 0x3C3D, 0x87F6, 0x199F, 0x87F7, 0x19A0, 0x87F9, 0x0588, 0x87FB, 0x065C,
+ 0x87FE, 0x199E, 0x8801, 0x3B02, 0x8803, 0x3B03, 0x8805, 0x1989, 0x8806,
+ 0x3B04, 0x8807, 0x21A6, 0x880B, 0x3B05, 0x880D, 0x199D, 0x880E, 0x19A1,
+ 0x880F, 0x199C, 0x8811, 0x19A3, 0x8814, 0x3B06, 0x8815, 0x19A5, 0x8816,
+ 0x19A4, 0x881C, 0x3B07, 0x881F, 0x1E85, 0x8821, 0x19A7, 0x8822, 0x19A6,
+ 0x8823, 0x1961, 0x8827, 0x19AB, 0x8831, 0x19A8, 0x8836, 0x19A9, 0x8839,
+ 0x19AA, 0x883B, 0x19AC, 0x8840, 0x0742, 0x8842, 0x19AE, 0x8844, 0x19AD,
+ 0x8846, 0x093A, 0x884C, 0x07E6, 0x884D, 0x1524, 0x8852, 0x19AF, 0x8853,
+ 0x095B, 0x8856, 0x3B08, 0x8857, 0x0597, 0x8859, 0x19B0, 0x885B, 0x04F4,
+ 0x885D, 0x09BF, 0x885E, 0x19B1, 0x885F, 0x3B09, 0x8861, 0x07E7, 0x8862,
+ 0x19B2, 0x8863, 0x04A5, 0x8864, 0x3B0A, 0x8868, 0x0DAF, 0x886B, 0x19B3,
+ 0x8870, 0x0A30, 0x8872, 0x19BA, 0x8875, 0x19B7, 0x8877, 0x0BAD, 0x887D,
+ 0x19B8, 0x887E, 0x19B5, 0x887F, 0x06D6, 0x8881, 0x19B4, 0x8882, 0x19BB,
+ 0x8888, 0x070C, 0x888B, 0x0B3E, 0x888D, 0x19C1, 0x8892, 0x19BD, 0x8896,
+ 0x0B15, 0x8897, 0x19BC, 0x8898, 0x3B0B, 0x8899, 0x19BF, 0x889E, 0x19B6,
+ 0x88A2, 0x19C0, 0x88A4, 0x19C2, 0x88AA, 0x3B0C, 0x88AB, 0x0D83, 0x88AE,
+ 0x19BE, 0x88B0, 0x19C3, 0x88B1, 0x19C5, 0x88B4, 0x0787, 0x88B5, 0x19B9,
+ 0x88B7, 0x0485, 0x88BD, 0x3B0D, 0x88BE, 0x3B0E, 0x88BF, 0x19C4, 0x88C1,
+ 0x084B, 0x88C2, 0x0FBE, 0x88C3, 0x19C6, 0x88C4, 0x19C7, 0x88C5, 0x0AF7,
+ 0x88C6, 0x3789, 0x88CA, 0x3B0F, 0x88CF, 0x0F6A, 0x88D2, 0x3B10, 0x88D4,
+ 0x19C8, 0x88D5, 0x0F1F, 0x88D8, 0x19C9, 0x88D9, 0x19CA, 0x88DB, 0x3B11,
+ 0x88DC, 0x0E34, 0x88DD, 0x19CB, 0x88DF, 0x0830, 0x88E1, 0x0F6B, 0x88E8,
+ 0x19D0, 0x88F0, 0x3B12, 0x88F1, 0x3B13, 0x88F2, 0x19D1, 0x88F3, 0x09C0,
+ 0x88F4, 0x19CF, 0x88F5, 0x21A7, 0x88F8, 0x0F51, 0x88F9, 0x19CC, 0x88FC,
+ 0x19CE, 0x88FD, 0x0A61, 0x88FE, 0x0A44, 0x8902, 0x19CD, 0x8904, 0x19D2,
+ 0x8906, 0x3B14, 0x8907, 0x0DF3, 0x890A, 0x19D4, 0x890C, 0x19D3, 0x8910,
+ 0x05CA, 0x8912, 0x0E59, 0x8913, 0x19D5, 0x8918, 0x3B15, 0x8919, 0x3B16,
+ 0x891A, 0x3B17, 0x891C, 0x20A8, 0x891D, 0x19E1, 0x891E, 0x19D7, 0x8925,
+ 0x19D8, 0x8927, 0x3B18, 0x892A, 0x19D9, 0x892B, 0x19DA, 0x8930, 0x3B19,
+ 0x8936, 0x19DE, 0x8938, 0x19DF, 0x893B, 0x19DD, 0x893E, 0x3B1A, 0x8941,
+ 0x19DB, 0x8943, 0x19D6, 0x8944, 0x19DC, 0x894C, 0x19E0, 0x894D, 0x1BD0,
+ 0x8956, 0x0528, 0x895E, 0x19E3, 0x895F, 0x06D7, 0x8960, 0x19E2, 0x8964,
+ 0x19E5, 0x8966, 0x19E4, 0x896A, 0x19E7, 0x896D, 0x19E6, 0x896F, 0x19E8,
+ 0x8972, 0x093B, 0x8974, 0x19E9, 0x8977, 0x19EA, 0x897B, 0x3B1B, 0x897E,
+ 0x19EB, 0x897F, 0x0A62, 0x8980, 0x362E, 0x8981, 0x0F41, 0x8983, 0x19EC,
+ 0x8986, 0x0DF4, 0x8987, 0x0CFC, 0x8988, 0x19ED, 0x898A, 0x19EE, 0x898B,
+ 0x075F, 0x898F, 0x0646, 0x8993, 0x19EF, 0x8996, 0x08B9, 0x8997, 0x0CF7,
+ 0x8998, 0x19F0, 0x899A, 0x05AE, 0x89A1, 0x19F1, 0x89A6, 0x19F3, 0x89A7,
+ 0x0F61, 0x89A9, 0x19F2, 0x89AA, 0x0A0C, 0x89AC, 0x19F4, 0x89AF, 0x19F5,
+ 0x89B2, 0x19F6, 0x89B3, 0x060D, 0x89BA, 0x19F7, 0x89BD, 0x19F8, 0x89BF,
+ 0x19F9, 0x89C0, 0x19FA, 0x89D2, 0x05AF, 0x89D4, 0x3B1C, 0x89D6, 0x3B1D,
+ 0x89DA, 0x19FB, 0x89DC, 0x19FC, 0x89DD, 0x19FD, 0x89E3, 0x0572, 0x89E5,
+ 0x3B1E, 0x89E6, 0x09EE, 0x89E7, 0x19FE, 0x89F1, 0x3B1F, 0x89F4, 0x19FF,
+ 0x89F8, 0x1A00, 0x8A00, 0x0774, 0x8A01, 0x35BC, 0x8A02, 0x0C17, 0x8A03,
+ 0x1A01, 0x8A07, 0x3B20, 0x8A08, 0x072D, 0x8A0A, 0x0A1C, 0x8A0C, 0x1A04,
+ 0x8A0E, 0x0C7C, 0x8A0F, 0x3B21, 0x8A10, 0x1A03, 0x8A12, 0x21A8, 0x8A13,
+ 0x0707, 0x8A15, 0x3B22, 0x8A16, 0x1A02, 0x8A17, 0x0B57, 0x8A18, 0x0647,
+ 0x8A1B, 0x1A05, 0x8A1D, 0x1A06, 0x8A1F, 0x09C1, 0x8A22, 0x3B23, 0x8A23,
+ 0x0743, 0x8A25, 0x1A07, 0x8A2A, 0x0E5A, 0x8A2D, 0x0A83, 0x8A31, 0x0690,
+ 0x8A33, 0x0F01, 0x8A34, 0x0ACC, 0x8A36, 0x1A08, 0x8A37, 0x21A9, 0x8A3A,
+ 0x0A0D, 0x8A3B, 0x0BAE, 0x8A3C, 0x09C2, 0x8A41, 0x1A09, 0x8A46, 0x1A0C,
+ 0x8A48, 0x1A0D, 0x8A4E, 0x3B24, 0x8A50, 0x082E, 0x8A51, 0x0B22, 0x8A52,
+ 0x1A0B, 0x8A54, 0x09C3, 0x8A55, 0x0DB0, 0x8A5B, 0x1A0A, 0x8A5E, 0x08BA,
+ 0x8A60, 0x04F5, 0x8A62, 0x1A11, 0x8A63, 0x072E, 0x8A66, 0x08BC, 0x8A69,
+ 0x08BB, 0x8A6B, 0x0FF3, 0x8A6C, 0x1A10, 0x8A6D, 0x1A0F, 0x8A6E, 0x0AA9,
+ 0x8A70, 0x0667, 0x8A71, 0x0FE9, 0x8A72, 0x0598, 0x8A73, 0x09C4, 0x8A79,
+ 0x21AA, 0x8A7C, 0x1A0E, 0x8A7F, 0x3B25, 0x8A82, 0x1A13, 0x8A84, 0x1A14,
+ 0x8A85, 0x1A12, 0x8A87, 0x078C, 0x8A89, 0x0F2A, 0x8A8C, 0x08BD, 0x8A8D,
+ 0x0CDD, 0x8A91, 0x1A17, 0x8A93, 0x0A64, 0x8A95, 0x0B80, 0x8A98, 0x0F20,
+ 0x8A9A, 0x1A1A, 0x8A9E, 0x07A0, 0x8AA0, 0x0A63, 0x8AA1, 0x1A16, 0x8AA3,
+ 0x1A1B, 0x8AA4, 0x07A1, 0x8AA5, 0x1A18, 0x8AA6, 0x1A19, 0x8AA7, 0x21AB,
+ 0x8AA8, 0x1A15, 0x8AAA, 0x3638, 0x8AAC, 0x0A86, 0x8AAD, 0x0CA1, 0x8AB0,
+ 0x0B6D, 0x8AB2, 0x055D, 0x8AB9, 0x0D84, 0x8ABC, 0x065D, 0x8ABE, 0x21AC,
+ 0x8ABF, 0x0BD0, 0x8AC2, 0x1A1E, 0x8AC4, 0x1A1C, 0x8AC7, 0x0B8A, 0x8ACB,
+ 0x0A65, 0x8ACC, 0x060E, 0x8ACD, 0x1A1D, 0x8ACF, 0x0A21, 0x8AD2, 0x0F92,
+ 0x8AD6, 0x0FE6, 0x8ADA, 0x1A1F, 0x8ADB, 0x1A2A, 0x8ADC, 0x0BD1, 0x8ADE,
+ 0x1A29, 0x8ADF, 0x21AD, 0x8AE0, 0x1A26, 0x8AE1, 0x1A2E, 0x8AE2, 0x1A27,
+ 0x8AE4, 0x1A23, 0x8AE6, 0x0C18, 0x8AE7, 0x1A22, 0x8AEB, 0x1A20, 0x8AED,
+ 0x0F0B, 0x8AEE, 0x08BE, 0x8AF1, 0x1A24, 0x8AF3, 0x1A21, 0x8AF4, 0x3B26,
+ 0x8AF6, 0x21AF, 0x8AF7, 0x1A28, 0x8AF8, 0x097E, 0x8AFA, 0x0775, 0x8AFE,
+ 0x0B5A, 0x8B00, 0x0E73, 0x8B01, 0x04FC, 0x8B02, 0x04A6, 0x8B04, 0x0C7D,
+ 0x8B07, 0x1A2C, 0x8B0C, 0x1A2B, 0x8B0E, 0x0CBE, 0x8B10, 0x1A30, 0x8B14,
+ 0x1A25, 0x8B16, 0x1A2F, 0x8B17, 0x1A31, 0x8B19, 0x0760, 0x8B1A, 0x1A2D,
+ 0x8B1B, 0x07E8, 0x8B1D, 0x0901, 0x8B1F, 0x3B27, 0x8B20, 0x1A32, 0x8B21,
+ 0x0F42, 0x8B26, 0x1A35, 0x8B28, 0x1A38, 0x8B2B, 0x1A36, 0x8B2C, 0x0DA7,
+ 0x8B33, 0x1A33, 0x8B37, 0x3B28, 0x8B39, 0x06D8, 0x8B3E, 0x1A37, 0x8B41,
+ 0x1A39, 0x8B43, 0x3B29, 0x8B44, 0x3B2A, 0x8B49, 0x1A3D, 0x8B4C, 0x1A3A,
+ 0x8B4E, 0x1A3C, 0x8B4F, 0x1A3B, 0x8B53, 0x21B0, 0x8B54, 0x3B2B, 0x8B56,
+ 0x1A3E, 0x8B58, 0x08DD, 0x8B5A, 0x1A40, 0x8B5B, 0x1A3F, 0x8B5C, 0x0DDA,
+ 0x8B5F, 0x1A42, 0x8B66, 0x072F, 0x8B6B, 0x1A41, 0x8B6C, 0x1A43, 0x8B6F,
+ 0x1A44, 0x8B70, 0x065E, 0x8B71, 0x182E, 0x8B72, 0x09E1, 0x8B74, 0x1A45,
+ 0x8B77, 0x07A2, 0x8B7D, 0x1A46, 0x8B7F, 0x21B1, 0x8B80, 0x1A47, 0x8B83,
+ 0x088C, 0x8B8A, 0x13D3, 0x8B8C, 0x1A48, 0x8B8E, 0x1A49, 0x8B90, 0x093C,
+ 0x8B92, 0x1A4A, 0x8B93, 0x1A4B, 0x8B96, 0x1A4C, 0x8B99, 0x1A4D, 0x8B9A,
+ 0x1A4E, 0x8B9C, 0x3B2C, 0x8B9E, 0x3B2D, 0x8C37, 0x0B69, 0x8C3A, 0x1A4F,
+ 0x8C3F, 0x1A51, 0x8C41, 0x1A50, 0x8C46, 0x0C7E, 0x8C47, 0x3B2E, 0x8C48,
+ 0x1A52, 0x8C4A, 0x0E5B, 0x8C4C, 0x1A53, 0x8C4E, 0x1A54, 0x8C50, 0x1A55,
+ 0x8C54, 0x3B2F, 0x8C55, 0x1A56, 0x8C5A, 0x0CB2, 0x8C61, 0x09C5, 0x8C62,
+ 0x1A57, 0x8C6A, 0x07FD, 0x8C6B, 0x1007, 0x8C6C, 0x1A58, 0x8C73, 0x3B30,
+ 0x8C78, 0x1A59, 0x8C79, 0x0DB1, 0x8C7A, 0x1A5A, 0x8C7C, 0x1A62, 0x8C82,
+ 0x1A5B, 0x8C85, 0x1A5D, 0x8C89, 0x1A5C, 0x8C8A, 0x1A5E, 0x8C8C, 0x0E74,
+ 0x8C8D, 0x1A5F, 0x8C8E, 0x1A60, 0x8C94, 0x1A61, 0x8C98, 0x1A63, 0x8C9D,
+ 0x058B, 0x8C9E, 0x0C03, 0x8CA0, 0x0DDB, 0x8CA1, 0x0852, 0x8CA2, 0x07E9,
+ 0x8CA4, 0x3B31, 0x8CA7, 0x0DC1, 0x8CA8, 0x055F, 0x8CA9, 0x0D62, 0x8CAA,
+ 0x1A66, 0x8CAB, 0x060F, 0x8CAC, 0x0A79, 0x8CAD, 0x1A65, 0x8CAE, 0x1A6A,
+ 0x8CAF, 0x0BB7, 0x8CB0, 0x0EEF, 0x8CB2, 0x1A68, 0x8CB3, 0x1A69, 0x8CB4,
+ 0x0648, 0x8CB6, 0x1A6B, 0x8CB7, 0x0D19, 0x8CB8, 0x0B3F, 0x8CBB, 0x0D85,
+ 0x8CBC, 0x0C37, 0x8CBD, 0x1A67, 0x8CBF, 0x0E75, 0x8CC0, 0x056C, 0x8CC1,
+ 0x1A6D, 0x8CC2, 0x0FCE, 0x8CC3, 0x0BDE, 0x8CC4, 0x0FEB, 0x8CC7, 0x08BF,
+ 0x8CC8, 0x1A6C, 0x8CCA, 0x0B11, 0x8CCD, 0x1A7D, 0x8CCE, 0x0AAA, 0x8CD1,
+ 0x0CD0, 0x8CD3, 0x0DC2, 0x8CD9, 0x3B32, 0x8CDA, 0x1A70, 0x8CDB, 0x088D,
+ 0x8CDC, 0x08C0, 0x8CDE, 0x09C6, 0x8CE0, 0x0D1B, 0x8CE1, 0x3B33, 0x8CE2,
+ 0x0761, 0x8CE3, 0x1A6F, 0x8CE4, 0x1A6E, 0x8CE6, 0x0DDC, 0x8CEA, 0x08ED,
+ 0x8CED, 0x0C4C, 0x8CF0, 0x21B2, 0x8CF4, 0x21B3, 0x8CF8, 0x3B34, 0x8CFA,
+ 0x1A72, 0x8CFB, 0x1A73, 0x8CFC, 0x07EA, 0x8CFD, 0x1A71, 0x8CFE, 0x3B35,
+ 0x8D04, 0x1A74, 0x8D05, 0x1A75, 0x8D07, 0x1A77, 0x8D08, 0x0B03, 0x8D0A,
+ 0x1A76, 0x8D0B, 0x0622, 0x8D0D, 0x1A79, 0x8D0F, 0x1A78, 0x8D10, 0x1A7A,
+ 0x8D12, 0x21B4, 0x8D13, 0x1A7C, 0x8D14, 0x1A7E, 0x8D16, 0x1A7F, 0x8D1B,
+ 0x3B36, 0x8D64, 0x0A7A, 0x8D66, 0x08FB, 0x8D67, 0x1A80, 0x8D69, 0x3B37,
+ 0x8D6B, 0x05B0, 0x8D6C, 0x3B38, 0x8D6D, 0x1A81, 0x8D70, 0x0AF8, 0x8D71,
+ 0x1A82, 0x8D73, 0x1A83, 0x8D74, 0x0DDD, 0x8D76, 0x21B5, 0x8D77, 0x0649,
+ 0x8D81, 0x1A84, 0x8D84, 0x3B39, 0x8D85, 0x0BD2, 0x8D8A, 0x04FD, 0x8D8D,
+ 0x3B3A, 0x8D95, 0x3B3B, 0x8D99, 0x1A85, 0x8DA3, 0x091D, 0x8DA6, 0x3B3C,
+ 0x8DA8, 0x0A3C, 0x8DB3, 0x0B0D, 0x8DBA, 0x1A88, 0x8DBE, 0x1A87, 0x8DC2,
+ 0x1A86, 0x8DC6, 0x3B3D, 0x8DCB, 0x1A8E, 0x8DCC, 0x1A8C, 0x8DCE, 0x3B3E,
+ 0x8DCF, 0x1A89, 0x8DD6, 0x1A8B, 0x8DDA, 0x1A8A, 0x8DDB, 0x1A8D, 0x8DDD,
+ 0x0691, 0x8DDF, 0x1A91, 0x8DE1, 0x0A7B, 0x8DE3, 0x1A92, 0x8DE4, 0x3B3F,
+ 0x8DE8, 0x078D, 0x8DEA, 0x1A8F, 0x8DEB, 0x1A90, 0x8DEC, 0x3B40, 0x8DEF,
+ 0x0FCF, 0x8DF3, 0x0BD3, 0x8DF5, 0x0AAB, 0x8DFC, 0x1A93, 0x8DFF, 0x1A96,
+ 0x8E08, 0x1A94, 0x8E09, 0x1A95, 0x8E0A, 0x0F43, 0x8E0F, 0x0C7F, 0x8E10,
+ 0x1A99, 0x8E1D, 0x1A97, 0x8E1E, 0x1A98, 0x8E1F, 0x1A9A, 0x8E20, 0x3B41,
+ 0x8E2A, 0x1AA8, 0x8E30, 0x1A9D, 0x8E34, 0x1A9E, 0x8E35, 0x1A9C, 0x8E42,
+ 0x1A9B, 0x8E44, 0x0C19, 0x8E47, 0x1AA0, 0x8E48, 0x1AA4, 0x8E49, 0x1AA1,
+ 0x8E4A, 0x1A9F, 0x8E4B, 0x3B42, 0x8E4C, 0x1AA2, 0x8E50, 0x1AA3, 0x8E55,
+ 0x1AAA, 0x8E59, 0x1AA5, 0x8E5F, 0x0A7C, 0x8E60, 0x1AA7, 0x8E63, 0x1AA9,
+ 0x8E64, 0x1AA6, 0x8E6C, 0x3B43, 0x8E70, 0x3B44, 0x8E72, 0x1AAC, 0x8E74,
+ 0x093D, 0x8E76, 0x1AAB, 0x8E7A, 0x3B45, 0x8E7C, 0x1AAD, 0x8E81, 0x1AAE,
+ 0x8E84, 0x1AB1, 0x8E85, 0x1AB0, 0x8E87, 0x1AAF, 0x8E8A, 0x1AB3, 0x8E8B,
+ 0x1AB2, 0x8E8D, 0x0F02, 0x8E91, 0x1AB5, 0x8E92, 0x3B46, 0x8E93, 0x1AB4,
+ 0x8E94, 0x1AB6, 0x8E99, 0x1AB7, 0x8EA1, 0x1AB9, 0x8EAA, 0x1AB8, 0x8EAB,
+ 0x0A0E, 0x8EAC, 0x1ABA, 0x8EAE, 0x3B47, 0x8EAF, 0x06E5, 0x8EB0, 0x1ABB,
+ 0x8EB1, 0x1ABD, 0x8EB3, 0x3B48, 0x8EB6, 0x3703, 0x8EBE, 0x1ABE, 0x8EC0,
+ 0x1DEF, 0x8EC5, 0x1ABF, 0x8EC6, 0x1ABC, 0x8EC8, 0x1AC0, 0x8ECA, 0x0902,
+ 0x8ECB, 0x1AC1, 0x8ECC, 0x064A, 0x8ECD, 0x0709, 0x8ECF, 0x21B7, 0x8ED1,
+ 0x3B49, 0x8ED2, 0x0762, 0x8ED4, 0x3B4A, 0x8EDB, 0x1AC2, 0x8EDF, 0x0CC8,
+ 0x8EE2, 0x0C38, 0x8EE3, 0x1AC3, 0x8EEB, 0x1AC6, 0x8EF8, 0x08E0, 0x8EF9,
+ 0x3B4B, 0x8EFB, 0x1AC5, 0x8EFC, 0x1AC4, 0x8EFD, 0x0730, 0x8EFE, 0x1AC7,
+ 0x8F03, 0x05B1, 0x8F05, 0x1AC9, 0x8F09, 0x084C, 0x8F0A, 0x1AC8, 0x8F0C,
+ 0x1AD1, 0x8F12, 0x1ACB, 0x8F13, 0x1ACD, 0x8F14, 0x0E35, 0x8F15, 0x1ACA,
+ 0x8F17, 0x3B4C, 0x8F19, 0x1ACC, 0x8F1B, 0x1AD0, 0x8F1C, 0x1ACE, 0x8F1D,
+ 0x064B, 0x8F1F, 0x1ACF, 0x8F26, 0x1AD2, 0x8F29, 0x0D10, 0x8F2A, 0x0FA0,
+ 0x8F2F, 0x093E, 0x8F33, 0x1AD3, 0x8F36, 0x3B4D, 0x8F38, 0x0F0C, 0x8F39,
+ 0x1AD5, 0x8F3B, 0x1AD4, 0x8F3E, 0x1AD8, 0x8F3F, 0x0F2B, 0x8F42, 0x1AD7,
+ 0x8F44, 0x05CB, 0x8F45, 0x1AD6, 0x8F46, 0x1ADB, 0x8F49, 0x1ADA, 0x8F4C,
+ 0x1AD9, 0x8F4D, 0x0C2C, 0x8F4E, 0x1ADC, 0x8F57, 0x1ADD, 0x8F5C, 0x1ADE,
+ 0x8F5F, 0x07FE, 0x8F61, 0x06FB, 0x8F62, 0x1ADF, 0x8F63, 0x1AE0, 0x8F64,
+ 0x1AE1, 0x8F9B, 0x0A0F, 0x8F9C, 0x1AE2, 0x8F9E, 0x08D9, 0x8F9F, 0x1AE3,
+ 0x8FA3, 0x1AE4, 0x8FA6, 0x3B4E, 0x8FA7, 0x10B6, 0x8FA8, 0x10B5, 0x8FAD,
+ 0x1AE5, 0x8FAE, 0x17FF, 0x8FAF, 0x1AE6, 0x8FB0, 0x0B62, 0x8FB1, 0x09F1,
+ 0x8FB2, 0x0CF6, 0x8FB5, 0x3B4F, 0x8FB6, 0x3B50, 0x8FB7, 0x1AE7, 0x8FBA,
+ 0x0E25, 0x8FBB, 0x0BF0, 0x8FBC, 0x0810, 0x8FBF, 0x0B67, 0x8FC2, 0x04CC,
+ 0x8FC4, 0x0EA6, 0x8FC5, 0x0A1D, 0x8FC6, 0x3B51, 0x8FC8, 0x3799, 0x8FCE,
+ 0x0734, 0x8FD1, 0x06D9, 0x8FD4, 0x0E26, 0x8FDA, 0x1AE8, 0x8FE0, 0x3B52,
+ 0x8FE2, 0x1AEA, 0x8FE4, 0x3B53, 0x8FE5, 0x1AE9, 0x8FE6, 0x0560, 0x8FE9,
+ 0x0CCE, 0x8FEA, 0x1AEB, 0x8FEB, 0x0D2D, 0x8FED, 0x0C2D, 0x8FEF, 0x1AEC,
+ 0x8FF0, 0x095C, 0x8FF4, 0x1AEE, 0x8FF6, 0x3B54, 0x8FF7, 0x0ECE, 0x8FF8,
+ 0x1AFD, 0x8FF9, 0x1AF0, 0x8FFA, 0x1AF1, 0x8FFD, 0x0BE5, 0x9000, 0x0B40,
+ 0x9001, 0x0AF9, 0x9002, 0x3B55, 0x9003, 0x0C80, 0x9005, 0x1AEF, 0x9006,
+ 0x066F, 0x900B, 0x1AF8, 0x900D, 0x1AF5, 0x900E, 0x1B02, 0x900F, 0x0C81,
+ 0x9010, 0x0B9E, 0x9011, 0x1AF2, 0x9013, 0x0C1A, 0x9014, 0x0C4D, 0x9015,
+ 0x1AF3, 0x9016, 0x1AF7, 0x9017, 0x0A26, 0x9019, 0x0D1D, 0x901A, 0x0BE8,
+ 0x901D, 0x0A66, 0x901E, 0x1AF6, 0x901F, 0x0B0E, 0x9020, 0x0B04, 0x9021,
+ 0x1AF4, 0x9022, 0x046D, 0x9023, 0x0FC8, 0x9027, 0x1AF9, 0x902C, 0x3B56,
+ 0x902E, 0x0B41, 0x9031, 0x093F, 0x9032, 0x0A10, 0x9035, 0x1AFB, 0x9036,
+ 0x1AFA, 0x9038, 0x04B3, 0x9039, 0x1AFC, 0x903C, 0x0DA1, 0x903E, 0x1B04,
+ 0x9041, 0x0CB3, 0x9042, 0x0A31, 0x9044, 0x3B57, 0x9045, 0x0B97, 0x9047,
+ 0x06F0, 0x9049, 0x1B03, 0x904A, 0x0F21, 0x904B, 0x04E1, 0x904D, 0x0E27,
+ 0x904E, 0x0561, 0x904F, 0x1AFE, 0x9050, 0x1AFF, 0x9051, 0x1B00, 0x9052,
+ 0x1B01, 0x9053, 0x0C93, 0x9054, 0x0B61, 0x9055, 0x04A7, 0x9056, 0x1B05,
+ 0x9058, 0x1B06, 0x9059, 0x1D34, 0x905C, 0x0B1D, 0x905E, 0x1B07, 0x9060,
+ 0x0515, 0x9061, 0x0ACE, 0x9063, 0x0763, 0x9065, 0x0F44, 0x9067, 0x21BA,
+ 0x9068, 0x1B08, 0x9069, 0x0C26, 0x906D, 0x0AFA, 0x906E, 0x0903, 0x906F,
+ 0x1B09, 0x9072, 0x1B0C, 0x9075, 0x096F, 0x9076, 0x1B0A, 0x9077, 0x0AAD,
+ 0x9078, 0x0AAC, 0x907A, 0x04A8, 0x907C, 0x0F93, 0x907D, 0x1B0E, 0x907F,
+ 0x0D86, 0x9080, 0x1B10, 0x9081, 0x1B0F, 0x9082, 0x1B0D, 0x9083, 0x1737,
+ 0x9084, 0x0610, 0x9087, 0x1AED, 0x9088, 0x3B58, 0x9089, 0x1B12, 0x908A,
+ 0x1B11, 0x908F, 0x1B13, 0x9091, 0x0F22, 0x9095, 0x3B59, 0x9099, 0x3B5A,
+ 0x909B, 0x3B5B, 0x90A2, 0x3B5C, 0x90A3, 0x0CB9, 0x90A6, 0x0E5C, 0x90A8,
+ 0x1B14, 0x90AA, 0x0905, 0x90AF, 0x1B15, 0x90B1, 0x1B16, 0x90B4, 0x3B5D,
+ 0x90B5, 0x1B17, 0x90B8, 0x0C1B, 0x90C1, 0x04AE, 0x90CA, 0x07EB, 0x90CE,
+ 0x0FE0, 0x90D7, 0x3B5E, 0x90DB, 0x1B1B, 0x90DD, 0x3B5F, 0x90DE, 0x21BB,
+ 0x90E1, 0x070A, 0x90E2, 0x1B18, 0x90E4, 0x1B19, 0x90E8, 0x0DE6, 0x90ED,
+ 0x05B2, 0x90F4, 0x3B60, 0x90F5, 0x0F23, 0x90F7, 0x06B7, 0x90FD, 0x0C4E,
+ 0x9102, 0x1B1C, 0x9112, 0x1B1D, 0x9115, 0x21BD, 0x9117, 0x3B61, 0x9119,
+ 0x1B1E, 0x911C, 0x3B62, 0x9127, 0x21BE, 0x912D, 0x0C1C, 0x9130, 0x1B20,
+ 0x9131, 0x3B63, 0x9132, 0x1B1F, 0x913A, 0x3B64, 0x913D, 0x3B65, 0x9148,
+ 0x3B66, 0x9149, 0x0CAB, 0x914A, 0x1B21, 0x914B, 0x0940, 0x914C, 0x090C,
+ 0x914D, 0x0D11, 0x914E, 0x0BAF, 0x9152, 0x091E, 0x9154, 0x0A32, 0x9156,
+ 0x1B22, 0x9158, 0x1B23, 0x915B, 0x3B67, 0x9161, 0x3B68, 0x9162, 0x0A23,
+ 0x9163, 0x1B24, 0x9164, 0x3B69, 0x9165, 0x1B25, 0x9169, 0x1B26, 0x916A,
+ 0x0F59, 0x916C, 0x0941, 0x9172, 0x1B28, 0x9173, 0x1B27, 0x9175, 0x07EC,
+ 0x9177, 0x0805, 0x9178, 0x088E, 0x9182, 0x1B2B, 0x9187, 0x0970, 0x9189,
+ 0x1B2A, 0x918B, 0x1B29, 0x918D, 0x0B49, 0x918E, 0x3B6A, 0x9190, 0x07A3,
+ 0x9192, 0x0A67, 0x9197, 0x0D44, 0x919C, 0x0943, 0x919E, 0x3B6B, 0x91A2,
+ 0x1B2C, 0x91A4, 0x09C7, 0x91A8, 0x3B6C, 0x91AA, 0x1B2F, 0x91AB, 0x1B2D,
+ 0x91AC, 0x1E1B, 0x91AD, 0x3B6D, 0x91AE, 0x3B6E, 0x91AF, 0x1B2E, 0x91B1,
+ 0x1E61, 0x91B2, 0x3B6F, 0x91B4, 0x1B31, 0x91B5, 0x1B30, 0x91B8, 0x09E2,
+ 0x91BA, 0x1B32, 0x91BC, 0x3B70, 0x91C0, 0x1B33, 0x91C1, 0x1B34, 0x91C6,
+ 0x0D64, 0x91C7, 0x0843, 0x91C8, 0x090D, 0x91C9, 0x1B35, 0x91CB, 0x1B36,
+ 0x91CC, 0x0F6C, 0x91CD, 0x094F, 0x91CE, 0x0EFA, 0x91CF, 0x0F94, 0x91D0,
+ 0x1B37, 0x91D1, 0x06DA, 0x91D6, 0x1B38, 0x91D7, 0x21C0, 0x91D8, 0x0C1D,
+ 0x91DA, 0x21BF, 0x91DB, 0x1B3B, 0x91DC, 0x05D6, 0x91DD, 0x0A11, 0x91DE,
+ 0x21C1, 0x91DF, 0x1B39, 0x91E1, 0x1B3A, 0x91E3, 0x0BFC, 0x91E4, 0x21C4,
+ 0x91E5, 0x21C5, 0x91E6, 0x0E83, 0x91E7, 0x06F4, 0x91ED, 0x21C2, 0x91EE,
+ 0x21C3, 0x91F0, 0x3B71, 0x91F5, 0x1B3D, 0x91F6, 0x1B3E, 0x91F7, 0x3B72,
+ 0x91FB, 0x3B73, 0x91FC, 0x1B3C, 0x91FF, 0x1B40, 0x9206, 0x21C6, 0x9207,
+ 0x3B74, 0x920A, 0x21C8, 0x920D, 0x0CB7, 0x920E, 0x05A1, 0x9210, 0x21C7,
+ 0x9211, 0x1B44, 0x9214, 0x1B41, 0x9215, 0x1B43, 0x921E, 0x1B3F, 0x9228,
+ 0x3B75, 0x9229, 0x1B8A, 0x922C, 0x1B42, 0x9233, 0x3B76, 0x9234, 0x0FB3,
+ 0x9237, 0x078E, 0x9238, 0x3B77, 0x9239, 0x21CF, 0x923A, 0x21C9, 0x923C,
+ 0x21CB, 0x923F, 0x1B4C, 0x9240, 0x21CA, 0x9243, 0x3B78, 0x9244, 0x0C2E,
+ 0x9245, 0x1B47, 0x9247, 0x3B79, 0x9248, 0x1B4A, 0x9249, 0x1B48, 0x924B,
+ 0x1B4D, 0x924E, 0x21CC, 0x924F, 0x3B7A, 0x9250, 0x1B4E, 0x9251, 0x21CE,
+ 0x9257, 0x1B46, 0x9259, 0x21CD, 0x925A, 0x1B53, 0x925B, 0x0516, 0x925E,
+ 0x1B45, 0x9260, 0x3B7B, 0x9262, 0x0D41, 0x9264, 0x1B49, 0x9266, 0x09C8,
+ 0x9267, 0x21D0, 0x9271, 0x07ED, 0x9277, 0x21D2, 0x9278, 0x21D3, 0x927E,
+ 0x0E76, 0x9280, 0x06DC, 0x9283, 0x0950, 0x9285, 0x0C94, 0x9288, 0x20AA,
+ 0x9291, 0x0AAF, 0x9293, 0x1B51, 0x9295, 0x1B4B, 0x9296, 0x1B50, 0x9298,
+ 0x0ECF, 0x929A, 0x0BD4, 0x929B, 0x1B52, 0x929C, 0x1B4F, 0x92A7, 0x21D1,
+ 0x92AD, 0x0AAE, 0x92B3, 0x3554, 0x92B7, 0x1B56, 0x92B9, 0x1B55, 0x92C2,
+ 0x3B7C, 0x92CB, 0x3B7D, 0x92CC, 0x3B7E, 0x92CF, 0x1B54, 0x92D0, 0x21D7,
+ 0x92D2, 0x0E5D, 0x92D3, 0x21DB, 0x92D5, 0x21D9, 0x92D7, 0x21D5, 0x92D9,
+ 0x21D6, 0x92DF, 0x3B7F, 0x92E0, 0x21DA, 0x92E4, 0x0985, 0x92E7, 0x21D4,
+ 0x92E9, 0x1B57, 0x92EA, 0x0E2F, 0x92ED, 0x04F6, 0x92F2, 0x0DB8, 0x92F3,
+ 0x0BB0, 0x92F8, 0x0692, 0x92F9, 0x20B0, 0x92FA, 0x1B59, 0x92FB, 0x21DE,
+ 0x92FC, 0x07EF, 0x92FF, 0x21E1, 0x9302, 0x21E3, 0x9304, 0x345A, 0x9306,
+ 0x087A, 0x930D, 0x3B80, 0x930F, 0x1B58, 0x9310, 0x0A33, 0x9315, 0x3B81,
+ 0x9318, 0x0A34, 0x9319, 0x1B5C, 0x931A, 0x1B5E, 0x931D, 0x21E2, 0x931E,
+ 0x21E0, 0x931F, 0x3B82, 0x9320, 0x09E3, 0x9321, 0x21DD, 0x9322, 0x1B5D,
+ 0x9323, 0x1B5F, 0x9325, 0x21DC, 0x9326, 0x06CB, 0x9327, 0x3B83, 0x9328,
+ 0x0DB7, 0x932B, 0x090E, 0x932C, 0x0FC9, 0x932E, 0x1B5B, 0x932F, 0x0868,
+ 0x9332, 0x0FE5, 0x9335, 0x1B61, 0x933A, 0x1B60, 0x933B, 0x1B62, 0x9344,
+ 0x1B5A, 0x9347, 0x3B84, 0x9348, 0x20A9, 0x934A, 0x3458, 0x934B, 0x0CC1,
+ 0x934D, 0x0C4F, 0x9352, 0x3B85, 0x9354, 0x0BF3, 0x9356, 0x1B67, 0x9357,
+ 0x21E5, 0x935B, 0x0B81, 0x935C, 0x1B63, 0x9360, 0x1B64, 0x9365, 0x3B86,
+ 0x936A, 0x3B87, 0x936C, 0x0703, 0x936D, 0x3B88, 0x936E, 0x1B66, 0x9370,
+ 0x21E4, 0x9375, 0x0764, 0x937C, 0x1B65, 0x937E, 0x09C9, 0x938C, 0x05D7,
+ 0x9394, 0x1B6B, 0x9396, 0x082F, 0x9397, 0x0AFB, 0x939A, 0x0BE6, 0x939B,
+ 0x3B89, 0x93A4, 0x21E6, 0x93A7, 0x0599, 0x93A9, 0x3B8B, 0x93AC, 0x1B69,
+ 0x93AD, 0x1B6A, 0x93AE, 0x0BDF, 0x93B0, 0x1B68, 0x93B9, 0x1B6C, 0x93BA,
+ 0x3B8A, 0x93C1, 0x3B8C, 0x93C3, 0x1B72, 0x93C6, 0x21E7, 0x93C8, 0x1B75,
+ 0x93CA, 0x3B8D, 0x93D0, 0x1B74, 0x93D1, 0x0C27, 0x93D6, 0x1B6D, 0x93D7,
+ 0x1B6E, 0x93D8, 0x1B71, 0x93DD, 0x1B73, 0x93DE, 0x21E8, 0x93E1, 0x06B8,
+ 0x93E2, 0x3B8E, 0x93E4, 0x1B76, 0x93E5, 0x1B70, 0x93E8, 0x1B6F, 0x93F8,
+ 0x21E9, 0x93FA, 0x3B8F, 0x93FD, 0x3B90, 0x9403, 0x1B7A, 0x9407, 0x1B7B,
+ 0x940F, 0x3B91, 0x9410, 0x1B7C, 0x9413, 0x1B79, 0x9414, 0x1B78, 0x9418,
+ 0x09CA, 0x9419, 0x0C82, 0x941A, 0x1B77, 0x9421, 0x1B80, 0x942B, 0x1B7E,
+ 0x9431, 0x21EA, 0x9434, 0x3B92, 0x9435, 0x1B7F, 0x9436, 0x1B7D, 0x9438,
+ 0x0B58, 0x943A, 0x1B81, 0x943F, 0x3B93, 0x9441, 0x1B82, 0x9444, 0x1B84,
+ 0x9445, 0x21EB, 0x9448, 0x21EC, 0x9451, 0x0611, 0x9452, 0x1B83, 0x9453,
+ 0x0F06, 0x9455, 0x3B94, 0x945A, 0x1B8F, 0x945B, 0x1B85, 0x945E, 0x1B88,
+ 0x9460, 0x1B86, 0x9462, 0x1B87, 0x946A, 0x1B89, 0x946B, 0x3B95, 0x9470,
+ 0x1B8B, 0x9472, 0x3B96, 0x9475, 0x1B8C, 0x9477, 0x1B8D, 0x947C, 0x1B90,
+ 0x947D, 0x1B8E, 0x947E, 0x1B91, 0x947F, 0x1B93, 0x9481, 0x1B92, 0x9577,
+ 0x0BD5, 0x9578, 0x3B97, 0x9580, 0x0EF3, 0x9582, 0x1B94, 0x9583, 0x0AB0,
+ 0x9587, 0x1B95, 0x9589, 0x0E14, 0x958A, 0x1B96, 0x958B, 0x0589, 0x958F,
+ 0x04DE, 0x9591, 0x0613, 0x9592, 0x21ED, 0x9593, 0x0612, 0x9594, 0x1B97,
+ 0x9596, 0x1B98, 0x9598, 0x1B99, 0x9599, 0x1B9A, 0x95A0, 0x1B9B, 0x95A2,
+ 0x0614, 0x95A3, 0x05B3, 0x95A4, 0x07F0, 0x95A5, 0x0D4A, 0x95A6, 0x3B98,
+ 0x95A7, 0x1B9D, 0x95A8, 0x1B9C, 0x95A9, 0x3B99, 0x95AB, 0x3B9A, 0x95AD,
+ 0x1B9E, 0x95B1, 0x3555, 0x95B2, 0x04FE, 0x95B4, 0x3B9B, 0x95B9, 0x1BA1,
+ 0x95BB, 0x1BA0, 0x95BC, 0x1B9F, 0x95BD, 0x3B9C, 0x95BE, 0x1BA2, 0x95C3,
+ 0x1BA5, 0x95C7, 0x048B, 0x95CA, 0x1BA3, 0x95CC, 0x1BA7, 0x95CD, 0x1BA6,
+ 0x95D4, 0x1BA9, 0x95D5, 0x1BA8, 0x95D6, 0x1BAA, 0x95D8, 0x0C86, 0x95DA,
+ 0x3B9D, 0x95DC, 0x1BAB, 0x95E1, 0x1BAC, 0x95E2, 0x1BAE, 0x95E5, 0x1BAD,
+ 0x961C, 0x0DDE, 0x961D, 0x3B9E, 0x9621, 0x1BAF, 0x9628, 0x1BB0, 0x962A,
+ 0x0855, 0x962E, 0x1BB1, 0x962F, 0x1BB2, 0x9632, 0x0E77, 0x963B, 0x0ACD,
+ 0x963F, 0x0468, 0x9640, 0x0B2B, 0x9641, 0x3B9F, 0x9642, 0x1BB3, 0x9644,
+ 0x0DDF, 0x964B, 0x1BB6, 0x964C, 0x1BB4, 0x964D, 0x07F1, 0x964F, 0x1BB5,
+ 0x9650, 0x0776, 0x9658, 0x3BA0, 0x965B, 0x0E15, 0x965C, 0x1BB8, 0x965D,
+ 0x1BBA, 0x965E, 0x1BB9, 0x965F, 0x1BBB, 0x9662, 0x04C3, 0x9663, 0x0A1E,
+ 0x9664, 0x0986, 0x9665, 0x0615, 0x9666, 0x1BBC, 0x966A, 0x0D1C, 0x966C,
+ 0x1BBE, 0x9670, 0x04C4, 0x9672, 0x1BBD, 0x9673, 0x0BE0, 0x9675, 0x0F95,
+ 0x9676, 0x0C83, 0x9677, 0x1BB7, 0x9678, 0x0F6E, 0x967A, 0x0765, 0x967D,
+ 0x0F45, 0x9684, 0x3BA1, 0x9685, 0x06F1, 0x9686, 0x0F7C, 0x9688, 0x06FE,
+ 0x968A, 0x0B42, 0x968B, 0x186C, 0x968D, 0x1BBF, 0x968E, 0x058A, 0x968F,
+ 0x0A35, 0x9694, 0x05B4, 0x9695, 0x1BC1, 0x9697, 0x1BC2, 0x9698, 0x1BC0,
+ 0x9699, 0x073A, 0x969B, 0x084D, 0x969C, 0x09CB, 0x969D, 0x21F0, 0x96A0,
+ 0x04C5, 0x96A3, 0x0FA1, 0x96A4, 0x3BA2, 0x96A7, 0x1BC4, 0x96A8, 0x1B0B,
+ 0x96A9, 0x3BA3, 0x96AA, 0x1BC3, 0x96AF, 0x21F1, 0x96B0, 0x1BC7, 0x96B1,
+ 0x1BC5, 0x96B2, 0x1BC6, 0x96B4, 0x1BC8, 0x96B6, 0x1BC9, 0x96B7, 0x0FB4,
+ 0x96B8, 0x1BCA, 0x96B9, 0x1BCB, 0x96BB, 0x0A6D, 0x96BC, 0x0D4F, 0x96C0,
+ 0x0A43, 0x96C1, 0x0623, 0x96C4, 0x0F24, 0x96C5, 0x056D, 0x96C6, 0x0942,
+ 0x96C7, 0x078F, 0x96C9, 0x1BCE, 0x96CB, 0x1BCD, 0x96CC, 0x08C1, 0x96CD,
+ 0x1BCF, 0x96CE, 0x1BCC, 0x96D1, 0x0876, 0x96D2, 0x3BA4, 0x96D5, 0x1BD3,
+ 0x96D6, 0x1992, 0x96D9, 0x10EB, 0x96DB, 0x0A3D, 0x96DC, 0x1BD1, 0x96DE,
+ 0x3BA6, 0x96E2, 0x0F6D, 0x96E3, 0x0CC9, 0x96E8, 0x04CD, 0x96E9, 0x3BA7,
+ 0x96EA, 0x0A87, 0x96EB, 0x08E2, 0x96F0, 0x0E07, 0x96F1, 0x3BA8, 0x96F2,
+ 0x04E2, 0x96F6, 0x0FB5, 0x96F7, 0x0F55, 0x96F9, 0x1BD4, 0x96FB, 0x0C3F,
+ 0x9700, 0x0927, 0x9702, 0x3BA9, 0x9704, 0x1BD5, 0x9706, 0x1BD6, 0x9707,
+ 0x0A12, 0x9708, 0x1BD7, 0x9709, 0x3BAA, 0x970A, 0x0FB6, 0x970D, 0x1BD2,
+ 0x970E, 0x1BD9, 0x970F, 0x1BDB, 0x9711, 0x1BDA, 0x9713, 0x1BD8, 0x9716,
+ 0x1BDC, 0x9719, 0x1BDD, 0x971C, 0x0AFC, 0x971E, 0x0562, 0x9724, 0x1BDE,
+ 0x9727, 0x0EC4, 0x972A, 0x1BDF, 0x9730, 0x1BE0, 0x9732, 0x0FD0, 0x9733,
+ 0x21F2, 0x9738, 0x1414, 0x9739, 0x1BE1, 0x973B, 0x21F3, 0x973D, 0x1BE2,
+ 0x973E, 0x1BE3, 0x9742, 0x1BE7, 0x9743, 0x21F4, 0x9744, 0x1BE4, 0x9746,
+ 0x1BE5, 0x9748, 0x1BE6, 0x9749, 0x1BE8, 0x974D, 0x21F5, 0x974F, 0x21F6,
+ 0x9751, 0x21F7, 0x9752, 0x0A68, 0x9755, 0x21F8, 0x9756, 0x0F03, 0x9759,
+ 0x0A69, 0x975A, 0x3BAB, 0x975C, 0x1BE9, 0x975E, 0x0D87, 0x9760, 0x1BEA,
+ 0x9761, 0x1D06, 0x9762, 0x0ED8, 0x9763, 0x3BAC, 0x9764, 0x1BEB, 0x9766,
+ 0x1BEC, 0x9768, 0x1BED, 0x9769, 0x05B5, 0x976B, 0x1BEF, 0x976D, 0x0A1F,
+ 0x976E, 0x3BAD, 0x9771, 0x1BF0, 0x9773, 0x3BAE, 0x9774, 0x06FA, 0x9779,
+ 0x1BF1, 0x977A, 0x1BF5, 0x977C, 0x1BF3, 0x9781, 0x1BF4, 0x9784, 0x05D1,
+ 0x9785, 0x1BF2, 0x9786, 0x1BF6, 0x978B, 0x1BF7, 0x978D, 0x048C, 0x978F,
+ 0x1BF8, 0x9790, 0x1BF9, 0x9798, 0x09CC, 0x979A, 0x3BAF, 0x979C, 0x1BFA,
+ 0x97A0, 0x0661, 0x97A2, 0x3BB0, 0x97A3, 0x1BFD, 0x97A6, 0x1BFC, 0x97A8,
+ 0x1BFB, 0x97AB, 0x1A34, 0x97AD, 0x0E2C, 0x97B3, 0x1BFE, 0x97B4, 0x1BFF,
+ 0x97B5, 0x3BB1, 0x97B6, 0x3BB2, 0x97C3, 0x1C00, 0x97C6, 0x1C01, 0x97C8,
+ 0x1C02, 0x97CB, 0x1C03, 0x97D3, 0x0616, 0x97D9, 0x3BB3, 0x97DC, 0x1C04,
+ 0x97DE, 0x3BB4, 0x97ED, 0x1C05, 0x97EE, 0x0CD9, 0x97F2, 0x1C07, 0x97F3,
+ 0x053B, 0x97F4, 0x3BB5, 0x97F5, 0x1C0A, 0x97F6, 0x1C09, 0x97FB, 0x04C6,
+ 0x97FF, 0x06B9, 0x9801, 0x0E17, 0x9802, 0x0BD6, 0x9803, 0x0812, 0x9805,
+ 0x07F2, 0x9806, 0x0971, 0x9808, 0x0A22, 0x980A, 0x3BB6, 0x980C, 0x1C0C,
+ 0x980E, 0x3BB7, 0x980F, 0x1C0B, 0x9810, 0x0F2C, 0x9811, 0x0624, 0x9812,
+ 0x0D66, 0x9813, 0x0CB4, 0x9817, 0x0A42, 0x9818, 0x0F96, 0x981A, 0x0731,
+ 0x981E, 0x3BB8, 0x9821, 0x1C0F, 0x9823, 0x3BB9, 0x9824, 0x1C0E, 0x982B,
+ 0x3BBA, 0x982C, 0x0E79, 0x982D, 0x0C84, 0x9830, 0x1E73, 0x9834, 0x04F2,
+ 0x9837, 0x1C10, 0x9838, 0x1C0D, 0x9839, 0x37B3, 0x983B, 0x0DC3, 0x983C,
+ 0x0F54, 0x983D, 0x1C11, 0x983E, 0x3BBB, 0x9846, 0x1C12, 0x984B, 0x1C14,
+ 0x984C, 0x0B4A, 0x984D, 0x05B9, 0x984E, 0x05BA, 0x984F, 0x1C13, 0x9852,
+ 0x3BBC, 0x9853, 0x3BBD, 0x9854, 0x0625, 0x9855, 0x0766, 0x9857, 0x21F9,
+ 0x9858, 0x0626, 0x9859, 0x3BBE, 0x985A, 0x1E48, 0x985B, 0x0C39, 0x985E,
+ 0x0FA8, 0x9865, 0x21FA, 0x9867, 0x0790, 0x986B, 0x1C15, 0x986C, 0x3BBF,
+ 0x986F, 0x1C16, 0x9870, 0x1C17, 0x9871, 0x1C18, 0x9873, 0x1C1A, 0x9874,
+ 0x1C19, 0x98A8, 0x0DE9, 0x98AA, 0x1C1B, 0x98AF, 0x1C1C, 0x98B1, 0x1C1D,
+ 0x98B6, 0x1C1E, 0x98B8, 0x3BC0, 0x98BA, 0x3BC1, 0x98BF, 0x3BC2, 0x98C3,
+ 0x1C20, 0x98C4, 0x1C1F, 0x98C6, 0x1C21, 0x98C8, 0x3BC3, 0x98DB, 0x0D88,
+ 0x98DC, 0x1839, 0x98DF, 0x09EF, 0x98E0, 0x3618, 0x98E2, 0x064C, 0x98E5,
+ 0x3BC4, 0x98E9, 0x1C22, 0x98EB, 0x1C23, 0x98ED, 0x10C1, 0x98EE, 0x14DA,
+ 0x98EF, 0x0D67, 0x98F2, 0x04BF, 0x98F4, 0x047F, 0x98FC, 0x08C2, 0x98FD,
+ 0x0E5E, 0x98FE, 0x09E6, 0x9903, 0x1C24, 0x9905, 0x0EEB, 0x9909, 0x1C25,
+ 0x990A, 0x0F46, 0x990C, 0x04E4, 0x9910, 0x088F, 0x9912, 0x1C26, 0x9913,
+ 0x056E, 0x9914, 0x1C27, 0x9918, 0x1C28, 0x991D, 0x1C2A, 0x991E, 0x1C2B,
+ 0x9920, 0x1C2D, 0x9921, 0x1C29, 0x9924, 0x1C2C, 0x9927, 0x21FD, 0x9928,
+ 0x0617, 0x992C, 0x1C2E, 0x992E, 0x1C2F, 0x9932, 0x3BC5, 0x9933, 0x3BC6,
+ 0x993D, 0x1C30, 0x993E, 0x1C31, 0x9940, 0x3BC7, 0x9942, 0x1C32, 0x9945,
+ 0x1C34, 0x9949, 0x1C33, 0x994B, 0x1C36, 0x994C, 0x1C39, 0x994D, 0x3BC8,
+ 0x9950, 0x1C35, 0x9951, 0x1C37, 0x9952, 0x1C38, 0x9955, 0x1C3A, 0x9957,
+ 0x06BA, 0x995C, 0x3BC9, 0x995F, 0x3BCA, 0x9996, 0x091F, 0x9997, 0x1C3B,
+ 0x9998, 0x1C3C, 0x9999, 0x07F3, 0x999E, 0x21FF, 0x99A5, 0x1C3D, 0x99A8,
+ 0x059C, 0x99AC, 0x0D05, 0x99AD, 0x1C3E, 0x99AE, 0x1C3F, 0x99B1, 0x3BCB,
+ 0x99B3, 0x0B98, 0x99B4, 0x0CC3, 0x99B9, 0x3BCC, 0x99BA, 0x3BCD, 0x99BC,
+ 0x1C40, 0x99C1, 0x0D33, 0x99C4, 0x0B2C, 0x99C5, 0x04FA, 0x99C6, 0x06E6,
+ 0x99C8, 0x06E7, 0x99C9, 0x3BCE, 0x99D0, 0x0BB1, 0x99D1, 0x1C45, 0x99D2,
+ 0x06E8, 0x99D5, 0x056F, 0x99D8, 0x1C44, 0x99DB, 0x1C42, 0x99DD, 0x1C43,
+ 0x99DF, 0x1C41, 0x99E2, 0x1C4F, 0x99ED, 0x1C46, 0x99EE, 0x1C47, 0x99F1,
+ 0x1C48, 0x99F2, 0x1C49, 0x99F8, 0x1C4B, 0x99FB, 0x1C4A, 0x99FF, 0x0963,
+ 0x9A01, 0x1C4C, 0x9A02, 0x3BCF, 0x9A05, 0x1C4E, 0x9A08, 0x37BA, 0x9A0E,
+ 0x064D, 0x9A0F, 0x1C4D, 0x9A12, 0x0AFD, 0x9A13, 0x0767, 0x9A16, 0x3BD0,
+ 0x9A19, 0x1C50, 0x9A24, 0x3BD1, 0x9A27, 0x3BD2, 0x9A28, 0x0B2D, 0x9A2B,
+ 0x1C51, 0x9A2D, 0x3BD3, 0x9A2E, 0x3BD4, 0x9A30, 0x0C85, 0x9A36, 0x3BD5,
+ 0x9A37, 0x1C52, 0x9A38, 0x3BD6, 0x9A3E, 0x1C57, 0x9A40, 0x1C55, 0x9A42,
+ 0x1C54, 0x9A43, 0x1C56, 0x9A45, 0x1C53, 0x9A4A, 0x3BD7, 0x9A4D, 0x1C59,
+ 0x9A4E, 0x2200, 0x9A52, 0x1E2F, 0x9A55, 0x1C58, 0x9A56, 0x3BD8, 0x9A57,
+ 0x1C5B, 0x9A5A, 0x06BB, 0x9A5B, 0x1C5A, 0x9A5F, 0x1C5C, 0x9A62, 0x1C5D,
+ 0x9A64, 0x1C5F, 0x9A65, 0x1C5E, 0x9A69, 0x1C60, 0x9A6A, 0x1C62, 0x9A6B,
+ 0x1C61, 0x9AA8, 0x080E, 0x9AAD, 0x1C63, 0x9AB0, 0x1C64, 0x9AB5, 0x3BD9,
+ 0x9AB6, 0x3BDA, 0x9AB8, 0x059A, 0x9ABC, 0x1C65, 0x9AC0, 0x1C66, 0x9AC4,
+ 0x0A37, 0x9ACF, 0x1C67, 0x9AD1, 0x1C68, 0x9AD3, 0x1C69, 0x9AD4, 0x1C6A,
+ 0x9AD8, 0x07F4, 0x9AD9, 0x2201, 0x9ADC, 0x2202, 0x9ADE, 0x1C6B, 0x9ADF,
+ 0x1C6C, 0x9AE2, 0x1C6D, 0x9AE3, 0x1C6E, 0x9AE6, 0x1C6F, 0x9AEA, 0x0D45,
+ 0x9AEB, 0x1C71, 0x9AED, 0x0D98, 0x9AEE, 0x1C72, 0x9AEF, 0x1C70, 0x9AF1,
+ 0x1C74, 0x9AF4, 0x1C73, 0x9AF7, 0x1C75, 0x9AF9, 0x3BDB, 0x9AFB, 0x1C76,
+ 0x9B03, 0x3BDC, 0x9B06, 0x1C77, 0x9B18, 0x1C78, 0x9B1A, 0x1C79, 0x9B1F,
+ 0x1C7A, 0x9B20, 0x3BDD, 0x9B22, 0x1C7B, 0x9B23, 0x1C7C, 0x9B25, 0x1C7D,
+ 0x9B27, 0x1C7E, 0x9B28, 0x1C7F, 0x9B29, 0x1C80, 0x9B2A, 0x1C81, 0x9B2D,
+ 0x343C, 0x9B2E, 0x1C82, 0x9B2F, 0x1C83, 0x9B31, 0x14D4, 0x9B32, 0x1C84,
+ 0x9B33, 0x3BDE, 0x9B34, 0x3BDF, 0x9B3B, 0x17A9, 0x9B3C, 0x064E, 0x9B41,
+ 0x057F, 0x9B42, 0x0822, 0x9B43, 0x1C86, 0x9B44, 0x1C85, 0x9B45, 0x0EB1,
+ 0x9B4D, 0x1C88, 0x9B4E, 0x1C89, 0x9B4F, 0x1C87, 0x9B51, 0x1C8A, 0x9B54,
+ 0x0E90, 0x9B58, 0x1C8B, 0x9B5A, 0x0695, 0x9B6F, 0x0FCB, 0x9B72, 0x2204,
+ 0x9B73, 0x3BE0, 0x9B74, 0x1C8C, 0x9B75, 0x2203, 0x9B79, 0x3BE1, 0x9B83,
+ 0x1C8E, 0x9B8E, 0x0482, 0x9B8F, 0x2205, 0x9B91, 0x1C8F, 0x9B92, 0x0DFB,
+ 0x9B93, 0x1C8D, 0x9B96, 0x1C90, 0x9B97, 0x1C91, 0x9B9F, 0x1C92, 0x9BA0,
+ 0x1C93, 0x9BA7, 0x3BE2, 0x9BA8, 0x1C94, 0x9BAA, 0x0E9C, 0x9BAB, 0x087B,
+ 0x9BAD, 0x086A, 0x9BAE, 0x0AB1, 0x9BB1, 0x2206, 0x9BB4, 0x1C95, 0x9BB9,
+ 0x1C98, 0x9BBB, 0x2207, 0x9BC0, 0x1C96, 0x9BC1, 0x3BE3, 0x9BC6, 0x1C99,
+ 0x9BC7, 0x3BE4, 0x9BC9, 0x07A5, 0x9BCA, 0x1C97, 0x9BCF, 0x1C9A, 0x9BD1,
+ 0x1C9B, 0x9BD2, 0x1C9C, 0x9BD4, 0x1CA0, 0x9BD6, 0x0878, 0x9BD7, 0x3BE5,
+ 0x9BDB, 0x0B44, 0x9BDF, 0x37BF, 0x9BE1, 0x1CA1, 0x9BE2, 0x1C9E, 0x9BE3,
+ 0x1C9D, 0x9BE4, 0x1C9F, 0x9BE7, 0x3BE6, 0x9BE8, 0x0735, 0x9BEB, 0x3BE7,
+ 0x9BF0, 0x1CA5, 0x9BF1, 0x1CA4, 0x9BF2, 0x1CA3, 0x9BF5, 0x0477, 0x9BF7,
+ 0x3BE8, 0x9BFA, 0x3BE9, 0x9BFD, 0x3BEA, 0x9C00, 0x2208, 0x9C04, 0x1CAF,
+ 0x9C06, 0x1CAB, 0x9C08, 0x1CAC, 0x9C09, 0x1CA8, 0x9C0A, 0x1CAE, 0x9C0B,
+ 0x3BEB, 0x9C0C, 0x1CAA, 0x9C0D, 0x05C0, 0x9C10, 0x0FF2, 0x9C12, 0x1CAD,
+ 0x9C13, 0x1CA9, 0x9C14, 0x1CA7, 0x9C15, 0x1CA6, 0x9C1B, 0x1CB1, 0x9C21,
+ 0x1CB4, 0x9C24, 0x1CB3, 0x9C25, 0x1CB2, 0x9C27, 0x3BEC, 0x9C2A, 0x3BED,
+ 0x9C2D, 0x0DBB, 0x9C2E, 0x1CB0, 0x9C2F, 0x04B7, 0x9C30, 0x1CB5, 0x9C32,
+ 0x1CB7, 0x9C36, 0x3BEE, 0x9C39, 0x05CD, 0x9C3A, 0x1CA2, 0x9C3B, 0x04D9,
+ 0x9C3E, 0x1CB9, 0x9C41, 0x3BEF, 0x9C46, 0x1CB8, 0x9C47, 0x1CB6, 0x9C48,
+ 0x0B6B, 0x9C52, 0x0E9E, 0x9C53, 0x3BF0, 0x9C57, 0x0FA2, 0x9C5A, 0x1CBA,
+ 0x9C60, 0x1CBB, 0x9C63, 0x3BF1, 0x9C67, 0x1CBC, 0x9C6A, 0x3BF2, 0x9C76,
+ 0x1CBD, 0x9C77, 0x3BF3, 0x9C78, 0x1CBE, 0x9CE5, 0x0BD7, 0x9CE7, 0x1CBF,
+ 0x9CE9, 0x0D4B, 0x9CEB, 0x1CC4, 0x9CEC, 0x1CC0, 0x9CF0, 0x1CC1, 0x9CF3,
+ 0x0E5F, 0x9CF4, 0x0ED0, 0x9CF6, 0x0CA8, 0x9D02, 0x3BF4, 0x9D03, 0x1CC5,
+ 0x9D06, 0x1CC6, 0x9D07, 0x0C96, 0x9D08, 0x1CC3, 0x9D09, 0x1CC2, 0x9D0E,
+ 0x052A, 0x9D12, 0x1CCE, 0x9D15, 0x1CCD, 0x9D1B, 0x0517, 0x9D1F, 0x1CCB,
+ 0x9D23, 0x1CCA, 0x9D26, 0x1CC8, 0x9D28, 0x05D9, 0x9D2A, 0x1CC7, 0x9D2B,
+ 0x08DE, 0x9D2C, 0x0529, 0x9D3B, 0x07F5, 0x9D3E, 0x1CD1, 0x9D3F, 0x1CD0,
+ 0x9D41, 0x1CCF, 0x9D42, 0x3BF5, 0x9D44, 0x1CCC, 0x9D46, 0x1CD2, 0x9D47,
+ 0x3BF6, 0x9D48, 0x1CD3, 0x9D50, 0x1CD8, 0x9D51, 0x1CD7, 0x9D59, 0x1CD9,
+ 0x9D5C, 0x04CF, 0x9D5D, 0x1CD4, 0x9D5E, 0x1CD5, 0x9D60, 0x0806, 0x9D61,
+ 0x0EC5, 0x9D63, 0x3BF7, 0x9D64, 0x1CD6, 0x9D69, 0x3BF8, 0x9D6B, 0x220A,
+ 0x9D6C, 0x0E60, 0x9D6F, 0x1CDE, 0x9D70, 0x2209, 0x9D72, 0x1CDA, 0x9D7A,
+ 0x1CDF, 0x9D7C, 0x3BF9, 0x9D7E, 0x3BFA, 0x9D87, 0x1CDC, 0x9D89, 0x1CDB,
+ 0x9D8D, 0x3BFB, 0x9D8F, 0x0732, 0x9D9A, 0x1CE0, 0x9DA4, 0x1CE1, 0x9DA9,
+ 0x1CE2, 0x9DAB, 0x1CDD, 0x9DAF, 0x1CC9, 0x9DB1, 0x3BFC, 0x9DB2, 0x1CE3,
+ 0x9DB4, 0x0BFD, 0x9DB8, 0x1CE7, 0x9DBA, 0x1CE8, 0x9DBB, 0x1CE6, 0x9DC1,
+ 0x1CE5, 0x9DC2, 0x1CEB, 0x9DC3, 0x3BFD, 0x9DC4, 0x1CE4, 0x9DC6, 0x1CE9,
+ 0x9DC7, 0x3BFE, 0x9DCF, 0x1CEA, 0x9DD3, 0x1CED, 0x9DD6, 0x3BFF, 0x9DD7,
+ 0x1DDE, 0x9DD9, 0x1CEC, 0x9DDF, 0x3C00, 0x9DE6, 0x1CEF, 0x9DEB, 0x3C01,
+ 0x9DED, 0x1CF0, 0x9DEF, 0x1CF1, 0x9DF2, 0x0FEF, 0x9DF4, 0x3C02, 0x9DF8,
+ 0x1CEE, 0x9DF9, 0x0B4B, 0x9DFA, 0x085D, 0x9DFD, 0x1CF2, 0x9E15, 0x3C03,
+ 0x9E19, 0x220C, 0x9E1A, 0x1CF3, 0x9E1B, 0x1CF4, 0x9E1D, 0x3C04, 0x9E1E,
+ 0x1CF5, 0x9E75, 0x1CF6, 0x9E78, 0x0768, 0x9E79, 0x1CF7, 0x9E7C, 0x1DFD,
+ 0x9E7D, 0x1CF8, 0x9E7F, 0x08DB, 0x9E81, 0x1CF9, 0x9E88, 0x1CFA, 0x9E8B,
+ 0x1CFB, 0x9E8C, 0x1CFC, 0x9E91, 0x1CFF, 0x9E92, 0x1CFD, 0x9E93, 0x0FE2,
+ 0x9E95, 0x1CFE, 0x9E97, 0x0FB7, 0x9E9D, 0x1D00, 0x9E9F, 0x0FA3, 0x9EA4,
+ 0x3C05, 0x9EA5, 0x1D01, 0x9EA6, 0x0D34, 0x9EA8, 0x3C06, 0x9EA9, 0x1D02,
+ 0x9EAA, 0x1D04, 0x9EAC, 0x3C07, 0x9EAD, 0x1D05, 0x9EB4, 0x1E02, 0x9EB5,
+ 0x1E75, 0x9EB8, 0x1D03, 0x9EB9, 0x07FF, 0x9EBA, 0x0ED9, 0x9EBB, 0x0E91,
+ 0x9EBC, 0x1284, 0x9EBE, 0x14FF, 0x9EBF, 0x0EA9, 0x9EC3, 0x340B, 0x9EC4,
+ 0x052B, 0x9ECC, 0x1D07, 0x9ECD, 0x066A, 0x9ECE, 0x1D08, 0x9ECF, 0x1D09,
+ 0x9ED0, 0x1D0A, 0x9ED1, 0x220D, 0x9ED2, 0x0807, 0x9ED4, 0x1D0B, 0x9ED8,
+ 0x160D, 0x9ED9, 0x0EE7, 0x9EDB, 0x0B43, 0x9EDC, 0x1D0C, 0x9EDD, 0x1D0E,
+ 0x9EDE, 0x1D0D, 0x9EE0, 0x1D0F, 0x9EE5, 0x1D10, 0x9EE7, 0x3C08, 0x9EE8,
+ 0x1D11, 0x9EEE, 0x3C09, 0x9EEF, 0x1D12, 0x9EF4, 0x1D13, 0x9EF6, 0x1D14,
+ 0x9EF7, 0x1D15, 0x9EF9, 0x1D16, 0x9EFB, 0x1D17, 0x9EFC, 0x1D18, 0x9EFD,
+ 0x1D19, 0x9F07, 0x1D1A, 0x9F08, 0x1D1B, 0x9F0E, 0x0C1E, 0x9F10, 0x3C0A,
+ 0x9F12, 0x3C0B, 0x9F13, 0x0791, 0x9F15, 0x1D1D, 0x9F17, 0x3C0C, 0x9F19,
+ 0x3C0D, 0x9F20, 0x0ACF, 0x9F21, 0x1D1E, 0x9F2C, 0x1D1F, 0x9F2F, 0x3C0E,
+ 0x9F37, 0x3C0F, 0x9F39, 0x3C10, 0x9F3B, 0x0D93, 0x9F3E, 0x1D20, 0x9F41,
+ 0x3C11, 0x9F45, 0x3C12, 0x9F4A, 0x1D21, 0x9F4B, 0x170A, 0x9F4E, 0x1A7B,
+ 0x9F4F, 0x1C06, 0x9F52, 0x1D22, 0x9F54, 0x1D23, 0x9F57, 0x3C13, 0x9F5F,
+ 0x1D25, 0x9F60, 0x1D26, 0x9F61, 0x1D27, 0x9F62, 0x0FB8, 0x9F63, 0x1D24,
+ 0x9F66, 0x1D28, 0x9F67, 0x1D29, 0x9F68, 0x3C14, 0x9F6A, 0x1D2B, 0x9F6C,
+ 0x1D2A, 0x9F71, 0x3C15, 0x9F72, 0x1D2D, 0x9F75, 0x3C16, 0x9F76, 0x1D2E,
+ 0x9F77, 0x1D2C, 0x9F8D, 0x0F7E, 0x9F90, 0x3C17, 0x9F94, 0x3C18, 0x9F95,
+ 0x1D2F, 0x9F9C, 0x1D30, 0x9F9D, 0x1727, 0x9FA0, 0x1D31, 0x9FA2, 0x3C19,
+ 0xF929, 0x2129, 0xF9DC, 0x21EE, 0xFA0E, 0x20DA, 0xFA0F, 0x20E5, 0xFA10,
+ 0x20E6, 0xFA11, 0x20FB, 0xFA12, 0x2121, 0xFA13, 0x2131, 0xFA14, 0x2133,
+ 0xFA15, 0x215E, 0xFA16, 0x2164, 0xFA17, 0x217B, 0xFA18, 0x2183, 0xFA19,
+ 0x2184, 0xFA1A, 0x2185, 0xFA1B, 0x2187, 0xFA1C, 0x218B, 0xFA1D, 0x218E,
+ 0xFA1E, 0x2197, 0xFA1F, 0x21A2, 0xFA20, 0x21A4, 0xFA21, 0x21A5, 0xFA22,
+ 0x21AE, 0xFA23, 0x21B6, 0xFA24, 0x21B8, 0xFA25, 0x21B9, 0xFA26, 0x21BC,
+ 0xFA27, 0x21D8, 0xFA28, 0x21DF, 0xFA29, 0x21EF, 0xFA2A, 0x21FB, 0xFA2B,
+ 0x21FC, 0xFA2C, 0x21FE, 0xFA2D, 0x220B, 0xFB00, 0x248E, 0xFB01, 0x0070,
+ 0xFB02, 0x0071, 0xFB03, 0x248F, 0xFB04, 0x2490, 0xFE30, 0x1EDA, 0xFE31,
+ 0x1ED4, 0xFE32, 0x1ED5, 0xFE33, 0x1ED2, 0xFE35, 0x1EDB, 0xFE36, 0x1EDC,
+ 0xFE37, 0x1EE1, 0xFE38, 0x1EE2, 0xFE39, 0x1EDD, 0xFE3A, 0x1EDE, 0xFE3B,
+ 0x1EEB, 0xFE3C, 0x1EEC, 0xFE3D, 0x1EE5, 0xFE3E, 0x1EE6, 0xFE3F, 0x1EE3,
+ 0xFE40, 0x1EE4, 0xFE41, 0x1EE7, 0xFE42, 0x1EE8, 0xFE43, 0x1EE9, 0xFE44,
+ 0x1EEA, 0xFF01, 0x0282, 0xFF02, 0x1F47, 0xFF03, 0x02CC, 0xFF04, 0x02C8,
+ 0xFF05, 0x02CB, 0xFF06, 0x02CD, 0xFF07, 0x1F46, 0xFF08, 0x02A2, 0xFF09,
+ 0x02A3, 0xFF0A, 0x02CE, 0xFF0B, 0x02B4, 0xFF0C, 0x027C, 0xFF0D, 0x02B5,
+ 0xFF0E, 0x027D, 0xFF0F, 0x0297, 0xFF10, 0x030C, 0xFF11, 0x030D, 0xFF12,
+ 0x030E, 0xFF13, 0x030F, 0xFF14, 0x0310, 0xFF15, 0x0311, 0xFF16, 0x0312,
+ 0xFF17, 0x0313, 0xFF18, 0x0314, 0xFF19, 0x0315, 0xFF1A, 0x027F, 0xFF1B,
+ 0x0280, 0xFF1C, 0x02BB, 0xFF1D, 0x02B9, 0xFF1E, 0x02BC, 0xFF1F, 0x0281,
+ 0xFF20, 0x02CF, 0xFF21, 0x0316, 0xFF22, 0x0317, 0xFF23, 0x0318, 0xFF24,
+ 0x0319, 0xFF25, 0x031A, 0xFF26, 0x031B, 0xFF27, 0x031C, 0xFF28, 0x031D,
+ 0xFF29, 0x031E, 0xFF2A, 0x031F, 0xFF2B, 0x0320, 0xFF2C, 0x0321, 0xFF2D,
+ 0x0322, 0xFF2E, 0x0323, 0xFF2F, 0x0324, 0xFF30, 0x0325, 0xFF31, 0x0326,
+ 0xFF32, 0x0327, 0xFF33, 0x0328, 0xFF34, 0x0329, 0xFF35, 0x032A, 0xFF36,
+ 0x032B, 0xFF37, 0x032C, 0xFF38, 0x032D, 0xFF39, 0x032E, 0xFF3A, 0x032F,
+ 0xFF3B, 0x02A6, 0xFF3C, 0x0298, 0xFF3D, 0x02A7, 0xFF3E, 0x0288, 0xFF3F,
+ 0x028A, 0xFF40, 0x0286, 0xFF41, 0x0330, 0xFF42, 0x0331, 0xFF43, 0x0332,
+ 0xFF44, 0x0333, 0xFF45, 0x0334, 0xFF46, 0x0335, 0xFF47, 0x0336, 0xFF48,
+ 0x0337, 0xFF49, 0x0338, 0xFF4A, 0x0339, 0xFF4B, 0x033A, 0xFF4C, 0x033B,
+ 0xFF4D, 0x033C, 0xFF4E, 0x033D, 0xFF4F, 0x033E, 0xFF50, 0x033F, 0xFF51,
+ 0x0340, 0xFF52, 0x0341, 0xFF53, 0x0342, 0xFF54, 0x0343, 0xFF55, 0x0344,
+ 0xFF56, 0x0345, 0xFF57, 0x0346, 0xFF58, 0x0347, 0xFF59, 0x0348, 0xFF5A,
+ 0x0349, 0xFF5B, 0x02A8, 0xFF5C, 0x029B, 0xFF5D, 0x02A9, 0xFF5E, 0x0299,
+ 0xFF61, 0x0147, 0xFF62, 0x0148, 0xFF63, 0x0149, 0xFF64, 0x014A, 0xFF65,
+ 0x014B, 0xFF66, 0x014C, 0xFF67, 0x014D, 0xFF68, 0x014E, 0xFF69, 0x014F,
+ 0xFF6A, 0x0150, 0xFF6B, 0x0151, 0xFF6C, 0x0152, 0xFF6D, 0x0153, 0xFF6E,
+ 0x0154, 0xFF6F, 0x0155, 0xFF70, 0x0156, 0xFF71, 0x0157, 0xFF72, 0x0158,
+ 0xFF73, 0x0159, 0xFF74, 0x015A, 0xFF75, 0x015B, 0xFF76, 0x015C, 0xFF77,
+ 0x015D, 0xFF78, 0x015E, 0xFF79, 0x015F, 0xFF7A, 0x0160, 0xFF7B, 0x0161,
+ 0xFF7C, 0x0162, 0xFF7D, 0x0163, 0xFF7E, 0x0164, 0xFF7F, 0x0165, 0xFF80,
+ 0x0166, 0xFF81, 0x0167, 0xFF82, 0x0168, 0xFF83, 0x0169, 0xFF84, 0x016A,
+ 0xFF85, 0x016B, 0xFF86, 0x016C, 0xFF87, 0x016D, 0xFF88, 0x016E, 0xFF89,
+ 0x016F, 0xFF8A, 0x0170, 0xFF8B, 0x0171, 0xFF8C, 0x0172, 0xFF8D, 0x0173,
+ 0xFF8E, 0x0174, 0xFF8F, 0x0175, 0xFF90, 0x0176, 0xFF91, 0x0177, 0xFF92,
+ 0x0178, 0xFF93, 0x0179, 0xFF94, 0x017A, 0xFF95, 0x017B, 0xFF96, 0x017C,
+ 0xFF97, 0x017D, 0xFF98, 0x017E, 0xFF99, 0x017F, 0xFF9A, 0x0180, 0xFF9B,
+ 0x0181, 0xFF9C, 0x0182, 0xFF9D, 0x0183, 0xFF9E, 0x0184, 0xFF9F, 0x0185,
+ 0xFFE0, 0x02C9, 0xFFE1, 0x02CA, 0xFFE2, 0x02EF, 0xFFE3, 0x0289, 0xFFE4,
+ 0x1F45, 0xFFE5, 0x02C7, 0xFFE8, 0x0143,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-V_4.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-V_4.cpp
new file mode 100644
index 0000000000..fc0375cb20
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Japan1/UniJIS-UCS2-V_4.cpp
@@ -0,0 +1,66 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h"
+
+const FX_WORD g_FXCMAP_UniJIS_UCS2_V_4[251 * 2] = {
+ 0x00B0, 0x204D, 0x2010, 0x1ED5, 0x2015, 0x1ED4, 0x2016, 0x1ED7, 0x2018,
+ 0x2059, 0x2019, 0x205A, 0x201C, 0x2057, 0x201D, 0x2058, 0x2025, 0x1EDA,
+ 0x2026, 0x1ED9, 0x2032, 0x2051, 0x2033, 0x205B, 0x2190, 0x02E2, 0x2191,
+ 0x02E0, 0x2192, 0x02E3, 0x2193, 0x02E1, 0x2195, 0x2FB6, 0x21C4, 0x2077,
+ 0x21C5, 0x2076, 0x21C6, 0x2078, 0x21E6, 0x1F4C, 0x21E7, 0x1F4E, 0x21E8,
+ 0x1F4B, 0x21E9, 0x1F4D, 0x2225, 0x1ED7, 0x223C, 0x1ED6, 0x22EF, 0x1ED9,
+ 0x2500, 0x1D39, 0x2501, 0x1D3A, 0x2502, 0x1D37, 0x2503, 0x1D38, 0x2504,
+ 0x1D3D, 0x2505, 0x1D3E, 0x2506, 0x1D3B, 0x2507, 0x1D3C, 0x2508, 0x1D41,
+ 0x2509, 0x1D42, 0x250A, 0x1D3F, 0x250B, 0x1D40, 0x250C, 0x1D47, 0x250D,
+ 0x1D49, 0x250E, 0x1D48, 0x250F, 0x1D4A, 0x2510, 0x1D4F, 0x2511, 0x1D51,
+ 0x2512, 0x1D50, 0x2513, 0x1D52, 0x2514, 0x1D43, 0x2515, 0x1D45, 0x2516,
+ 0x1D44, 0x2517, 0x1D46, 0x2518, 0x1D4B, 0x2519, 0x1D4D, 0x251A, 0x1D4C,
+ 0x251B, 0x1D4E, 0x251C, 0x1D63, 0x251D, 0x1D67, 0x251E, 0x1D65, 0x251F,
+ 0x1D64, 0x2520, 0x1D66, 0x2521, 0x1D69, 0x2522, 0x1D68, 0x2523, 0x1D6A,
+ 0x2524, 0x1D6B, 0x2525, 0x1D6F, 0x2526, 0x1D6D, 0x2527, 0x1D6C, 0x2528,
+ 0x1D6E, 0x2529, 0x1D71, 0x252A, 0x1D70, 0x252B, 0x1D72, 0x252C, 0x1D5B,
+ 0x252D, 0x1D5D, 0x252E, 0x1D5E, 0x252F, 0x1D5F, 0x2530, 0x1D5C, 0x2531,
+ 0x1D60, 0x2532, 0x1D61, 0x2533, 0x1D62, 0x2534, 0x1D53, 0x2535, 0x1D55,
+ 0x2536, 0x1D56, 0x2537, 0x1D57, 0x2538, 0x1D54, 0x2539, 0x1D58, 0x253A,
+ 0x1D59, 0x253B, 0x1D5A, 0x253D, 0x1D77, 0x253E, 0x1D78, 0x253F, 0x1D79,
+ 0x2540, 0x1D75, 0x2541, 0x1D74, 0x2542, 0x1D76, 0x2543, 0x1D7B, 0x2544,
+ 0x1D7D, 0x2545, 0x1D7A, 0x2546, 0x1D7C, 0x2547, 0x1D81, 0x2548, 0x1D80,
+ 0x2549, 0x1D7E, 0x254A, 0x1D7F, 0x261C, 0x201D, 0x261D, 0x201B, 0x261E,
+ 0x201E, 0x261F, 0x201C, 0x2702, 0x2F92, 0x27A1, 0x2011, 0x3001, 0x1ECF,
+ 0x3002, 0x1ED0, 0x3008, 0x1EE3, 0x3009, 0x1EE4, 0x300A, 0x1EE5, 0x300B,
+ 0x1EE6, 0x300C, 0x1EE7, 0x300D, 0x1EE8, 0x300E, 0x1EE9, 0x300F, 0x1EEA,
+ 0x3010, 0x1EEB, 0x3011, 0x1EEC, 0x3013, 0x204E, 0x3014, 0x1EDD, 0x3015,
+ 0x1EDE, 0x301C, 0x1ED6, 0x301D, 0x1F14, 0x301F, 0x1F15, 0x3041, 0x1EEE,
+ 0x3043, 0x1EEF, 0x3045, 0x1EF0, 0x3047, 0x1EF1, 0x3049, 0x1EF2, 0x3063,
+ 0x1EF3, 0x3083, 0x1EF4, 0x3085, 0x1EF5, 0x3087, 0x1EF6, 0x308E, 0x1EF7,
+ 0x309B, 0x2050, 0x309C, 0x204F, 0x30A1, 0x1EF8, 0x30A3, 0x1EF9, 0x30A5,
+ 0x1EFA, 0x30A7, 0x1EFB, 0x30A9, 0x1EFC, 0x30C3, 0x1EFD, 0x30E3, 0x1EFE,
+ 0x30E5, 0x1EFF, 0x30E7, 0x1F00, 0x30EE, 0x1F01, 0x30F5, 0x1F02, 0x30F6,
+ 0x1F03, 0x30FC, 0x1ED3, 0x3300, 0x209E, 0x3301, 0x2EB6, 0x3302, 0x2EB7,
+ 0x3303, 0x2092, 0x3304, 0x2EB8, 0x3305, 0x208D, 0x3306, 0x2EB9, 0x3307,
+ 0x2EBD, 0x3308, 0x2EBB, 0x3309, 0x2EC0, 0x330A, 0x2EBE, 0x330B, 0x2EC2,
+ 0x330C, 0x2EC4, 0x330D, 0x1F0E, 0x330E, 0x2EC5, 0x330F, 0x2EC6, 0x3310,
+ 0x2EC7, 0x3311, 0x2EC8, 0x3312, 0x2EC9, 0x3313, 0x2ECA, 0x3314, 0x1F05,
+ 0x3315, 0x2094, 0x3316, 0x208A, 0x3317, 0x2ECC, 0x3318, 0x2093, 0x3319,
+ 0x2ECE, 0x331A, 0x2ED0, 0x331B, 0x2ED1, 0x331C, 0x2ED2, 0x331D, 0x2ED3,
+ 0x331E, 0x20A1, 0x331F, 0x2ED4, 0x3320, 0x2ED5, 0x3321, 0x2ED6, 0x3322,
+ 0x2089, 0x3323, 0x209C, 0x3324, 0x2ED7, 0x3325, 0x2ED9, 0x3326, 0x1F0F,
+ 0x3327, 0x1F09, 0x3328, 0x2EDC, 0x3329, 0x2EDD, 0x332A, 0x20A4, 0x332B,
+ 0x1F11, 0x332D, 0x2EDF, 0x332E, 0x2EE2, 0x332F, 0x2EE3, 0x3330, 0x2EE4,
+ 0x3331, 0x20A6, 0x3332, 0x2EE5, 0x3333, 0x208E, 0x3334, 0x2EE8, 0x3335,
+ 0x2EE9, 0x3336, 0x1F0B, 0x3337, 0x2EEE, 0x3338, 0x2EF0, 0x3339, 0x2097,
+ 0x333A, 0x2EF1, 0x333B, 0x209D, 0x333C, 0x2EEA, 0x333D, 0x2EF2, 0x333E,
+ 0x2EF4, 0x333F, 0x2EF5, 0x3340, 0x2EF6, 0x3341, 0x2EF3, 0x3342, 0x209B,
+ 0x3343, 0x2EF7, 0x3344, 0x2EF8, 0x3345, 0x2EF9, 0x3346, 0x2EFA, 0x3347,
+ 0x20A5, 0x3348, 0x2EFB, 0x3349, 0x1F04, 0x334A, 0x1F12, 0x334B, 0x2EFC,
+ 0x334C, 0x2EFD, 0x334D, 0x1F07, 0x334E, 0x2091, 0x334F, 0x2EFE, 0x3350,
+ 0x2EFF, 0x3351, 0x1F0C, 0x3352, 0x2F02, 0x3353, 0x2F06, 0x3354, 0x2F03,
+ 0x3355, 0x2F07, 0x3356, 0x2F08, 0x3357, 0x2098, 0x337F, 0x2084, 0xFF08,
+ 0x1EDB, 0xFF09, 0x1EDC, 0xFF0C, 0x204C, 0xFF0E, 0x2052, 0xFF1D, 0x1EED,
+ 0xFF3B, 0x1EDF, 0xFF3D, 0x1EE0, 0xFF3F, 0x1ED2, 0xFF5B, 0x1EE1, 0xFF5C,
+ 0x1ED8, 0xFF5D, 0x1EE2, 0xFF5E, 0x1ED6, 0xFFE3, 0x1ED1,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/V_1.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/V_1.cpp
new file mode 100644
index 0000000000..1c5663e3d9
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Japan1/V_1.cpp
@@ -0,0 +1,19 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h"
+
+const FX_WORD g_FXCMAP_V_1[27 * 3] = {
+ 0x2122, 0x2123, 0x1ECF, 0x2131, 0x2132, 0x1ED1, 0x213C, 0x213E, 0x1ED3,
+ 0x2141, 0x2145, 0x1ED6, 0x214A, 0x215B, 0x1EDB, 0x2161, 0x2161, 0x1EED,
+ 0x2421, 0x2421, 0x1EEE, 0x2423, 0x2423, 0x1EEF, 0x2425, 0x2425, 0x1EF0,
+ 0x2427, 0x2427, 0x1EF1, 0x2429, 0x2429, 0x1EF2, 0x2443, 0x2443, 0x1EF3,
+ 0x2463, 0x2463, 0x1EF4, 0x2465, 0x2465, 0x1EF5, 0x2467, 0x2467, 0x1EF6,
+ 0x246E, 0x246E, 0x1EF7, 0x2521, 0x2521, 0x1EF8, 0x2523, 0x2523, 0x1EF9,
+ 0x2525, 0x2525, 0x1EFA, 0x2527, 0x2527, 0x1EFB, 0x2529, 0x2529, 0x1EFC,
+ 0x2543, 0x2543, 0x1EFD, 0x2563, 0x2563, 0x1EFE, 0x2565, 0x2565, 0x1EFF,
+ 0x2567, 0x2567, 0x1F00, 0x256E, 0x256E, 0x1F01, 0x2575, 0x2576, 0x1F02,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.cpp b/core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.cpp
new file mode 100644
index 0000000000..93c9be6d55
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.cpp
@@ -0,0 +1,66 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h"
+
+#include "core/fpdfapi/fpdf_cmaps/cmap_int.h"
+#include "core/fpdfapi/fpdf_font/font_int.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_resource.h"
+#include "core/include/fxcrt/fx_basic.h" // For FX_ArraySize().
+
+static const FXCMAP_CMap g_FXCMAP_Japan1_cmaps[] = {
+ {"83pv-RKSJ-H", FXCMAP_CMap::Range, g_FXCMAP_83pv_RKSJ_H_1, 222,
+ FXCMAP_CMap::None, NULL, 0, 0},
+ {"90ms-RKSJ-H", FXCMAP_CMap::Range, g_FXCMAP_90ms_RKSJ_H_2, 171,
+ FXCMAP_CMap::None, NULL, 0, 0},
+ {"90ms-RKSJ-V", FXCMAP_CMap::Range, g_FXCMAP_90ms_RKSJ_V_2, 78,
+ FXCMAP_CMap::None, NULL, 0, -1},
+ {"90msp-RKSJ-H", FXCMAP_CMap::Range, g_FXCMAP_90msp_RKSJ_H_2, 170,
+ FXCMAP_CMap::None, NULL, 0, -2},
+ {"90msp-RKSJ-V", FXCMAP_CMap::Range, g_FXCMAP_90msp_RKSJ_V_2, 78,
+ FXCMAP_CMap::None, NULL, 0, -1},
+ {"90pv-RKSJ-H", FXCMAP_CMap::Range, g_FXCMAP_90pv_RKSJ_H_1, 263,
+ FXCMAP_CMap::None, NULL, 0, 0},
+ {"Add-RKSJ-H", FXCMAP_CMap::Range, g_FXCMAP_Add_RKSJ_H_1, 635,
+ FXCMAP_CMap::None, NULL, 0, 0},
+ {"Add-RKSJ-V", FXCMAP_CMap::Range, g_FXCMAP_Add_RKSJ_V_1, 57,
+ FXCMAP_CMap::None, NULL, 0, -1},
+ {"EUC-H", FXCMAP_CMap::Range, g_FXCMAP_EUC_H_1, 120, FXCMAP_CMap::None,
+ NULL, 0, 0},
+ {"EUC-V", FXCMAP_CMap::Range, g_FXCMAP_EUC_V_1, 27, FXCMAP_CMap::None, NULL,
+ 0, -1},
+ {"Ext-RKSJ-H", FXCMAP_CMap::Range, g_FXCMAP_Ext_RKSJ_H_2, 665,
+ FXCMAP_CMap::None, NULL, 0, -4},
+ {"Ext-RKSJ-V", FXCMAP_CMap::Range, g_FXCMAP_Ext_RKSJ_V_2, 39,
+ FXCMAP_CMap::None, NULL, 0, -1},
+ {"H", FXCMAP_CMap::Range, g_FXCMAP_H_1, 118, FXCMAP_CMap::None, NULL, 0, 0},
+ {"V", FXCMAP_CMap::Range, g_FXCMAP_V_1, 27, FXCMAP_CMap::None, NULL, 0, -1},
+ {"UniJIS-UCS2-H", FXCMAP_CMap::Single, g_FXCMAP_UniJIS_UCS2_H_4, 9772,
+ FXCMAP_CMap::None, NULL, 0, 0},
+ {"UniJIS-UCS2-V", FXCMAP_CMap::Single, g_FXCMAP_UniJIS_UCS2_V_4, 251,
+ FXCMAP_CMap::None, NULL, 0, -1},
+ {"UniJIS-UCS2-HW-H", FXCMAP_CMap::Range, g_FXCMAP_UniJIS_UCS2_HW_H_4, 4,
+ FXCMAP_CMap::None, NULL, 0, -2},
+ {"UniJIS-UCS2-HW-V", FXCMAP_CMap::Range, g_FXCMAP_UniJIS_UCS2_HW_V_4, 199,
+ FXCMAP_CMap::None, NULL, 0, -1},
+ {"UniJIS-UTF16-H", FXCMAP_CMap::Single, g_FXCMAP_UniJIS_UCS2_H_4, 9772,
+ FXCMAP_CMap::None, NULL, 0, 0},
+ {"UniJIS-UTF16-V", FXCMAP_CMap::Single, g_FXCMAP_UniJIS_UCS2_V_4, 251,
+ FXCMAP_CMap::None, NULL, 0, -1},
+};
+
+void CPDF_ModuleMgr::LoadEmbeddedJapan1CMaps() {
+ CPDF_FontGlobals* pFontGlobals =
+ CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals();
+ pFontGlobals->m_EmbeddedCharsets[CIDSET_JAPAN1].m_pMapList =
+ g_FXCMAP_Japan1_cmaps;
+ pFontGlobals->m_EmbeddedCharsets[CIDSET_JAPAN1].m_Count =
+ FX_ArraySize(g_FXCMAP_Japan1_cmaps);
+ pFontGlobals->m_EmbeddedToUnicodes[CIDSET_JAPAN1].m_pMap =
+ g_FXCMAP_Japan1CID2Unicode_4;
+ pFontGlobals->m_EmbeddedToUnicodes[CIDSET_JAPAN1].m_Count = 15444;
+}
diff --git a/core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h b/core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h
new file mode 100644
index 0000000000..851dbde44e
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Japan1/cmaps_japan1.h
@@ -0,0 +1,35 @@
+// Copyright 2015 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_FPDFAPI_FPDF_CMAPS_JAPAN1_CMAPS_JAPAN1_H_
+#define CORE_FPDFAPI_FPDF_CMAPS_JAPAN1_CMAPS_JAPAN1_H_
+
+#include "core/include/fxcrt/fx_system.h" // For FX_WORD.
+
+extern const FX_WORD g_FXCMAP_83pv_RKSJ_H_1[];
+extern const FX_WORD g_FXCMAP_90ms_RKSJ_H_2[];
+extern const FX_WORD g_FXCMAP_90ms_RKSJ_V_2[];
+extern const FX_WORD g_FXCMAP_90msp_RKSJ_H_2[];
+extern const FX_WORD g_FXCMAP_90msp_RKSJ_V_2[];
+extern const FX_WORD g_FXCMAP_90pv_RKSJ_H_1[];
+extern const FX_WORD g_FXCMAP_Add_RKSJ_H_1[];
+extern const FX_WORD g_FXCMAP_Add_RKSJ_V_1[];
+extern const FX_WORD g_FXCMAP_EUC_H_1[];
+extern const FX_WORD g_FXCMAP_EUC_V_1[];
+extern const FX_WORD g_FXCMAP_Ext_RKSJ_H_2[];
+extern const FX_WORD g_FXCMAP_Ext_RKSJ_V_2[];
+extern const FX_WORD g_FXCMAP_H_1[];
+extern const FX_WORD g_FXCMAP_V_1[];
+extern const FX_WORD g_FXCMAP_UniJIS_UCS2_H_4[];
+extern const FX_WORD g_FXCMAP_UniJIS_UCS2_V_4[];
+extern const FX_WORD g_FXCMAP_UniJIS_UCS2_HW_H_4[];
+extern const FX_WORD g_FXCMAP_UniJIS_UCS2_HW_V_4[];
+extern const FX_WORD g_FXCMAP_UniJIS_UTF16_H_0[];
+extern const FX_WORD g_FXCMAP_UniJIS_UTF16_H_0_DWord[];
+extern const FX_WORD g_FXCMAP_UniJIS_UTF16_V_0[];
+extern const FX_WORD g_FXCMAP_Japan1CID2Unicode_4[];
+
+#endif // CORE_FPDFAPI_FPDF_CMAPS_JAPAN1_CMAPS_JAPAN1_H_
diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/Adobe-Korea1-UCS2_2.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/Adobe-Korea1-UCS2_2.cpp
new file mode 100644
index 0000000000..71c065375e
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Korea1/Adobe-Korea1-UCS2_2.cpp
@@ -0,0 +1,2050 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h"
+
+const FX_WORD g_FXCMAP_Korea1CID2Unicode_2[18352] = {
+ 0xFFFD, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
+ 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F, 0x0030,
+ 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039,
+ 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041, 0x0042,
+ 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A, 0x004B,
+ 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054,
+ 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D,
+ 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066,
+ 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
+ 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078,
+ 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x20A9, 0x2010, 0x00A9,
+ 0x2122, 0x22EF, 0x3000, 0x3001, 0x3002, 0x00B7, 0x2025, 0x2026, 0x00A8,
+ 0x3003, 0x2013, 0x2014, 0x2016, 0xFF3C, 0x223C, 0x2018, 0x2019, 0x201C,
+ 0x201D, 0x3014, 0x3015, 0x3008, 0x3009, 0x300A, 0x300B, 0x300C, 0x300D,
+ 0x300E, 0x300F, 0x3010, 0x3011, 0x00B1, 0x00D7, 0x00F7, 0x2260, 0x2264,
+ 0x2265, 0x221E, 0x2234, 0x00B0, 0x2032, 0x2033, 0x2103, 0x212B, 0xFFE0,
+ 0xFFE1, 0xFFE5, 0x2642, 0x2640, 0x2220, 0x22A5, 0x2312, 0x2202, 0x2207,
+ 0x2261, 0x2252, 0x00A7, 0x203B, 0x2606, 0x2605, 0x25CB, 0x25CF, 0x25CE,
+ 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25B3, 0x25B2, 0x25BD, 0x25BC, 0x2192,
+ 0x2190, 0x2191, 0x2193, 0x2194, 0x3013, 0x226A, 0x226B, 0x221A, 0x223D,
+ 0x221D, 0x2235, 0x222B, 0x222C, 0x2208, 0x220B, 0x2286, 0x2287, 0x2282,
+ 0x2283, 0x222A, 0x2229, 0x2227, 0x2228, 0xFFE2, 0x21D2, 0x21D4, 0x2200,
+ 0x2203, 0x00B4, 0x02DC, 0x02C7, 0x02D8, 0x02DD, 0x02DA, 0x02D9, 0x00B8,
+ 0x02DB, 0x00A1, 0x00BF, 0x2236, 0x222E, 0x2211, 0x220F, 0x00A4, 0x2109,
+ 0x2030, 0x25C1, 0x25C0, 0x25B7, 0x25B6, 0x2664, 0x2660, 0x2661, 0x2665,
+ 0x2667, 0x2663, 0x2299, 0x25C8, 0x25A3, 0x25D0, 0x25D1, 0x2592, 0x25A4,
+ 0x25A5, 0x25A8, 0x25A7, 0x25A6, 0x25A9, 0x2668, 0x260F, 0x260E, 0x261C,
+ 0x261E, 0x00B6, 0x2020, 0x2021, 0x2195, 0x2197, 0x2199, 0x2196, 0x2198,
+ 0x266D, 0x2669, 0x266A, 0x266C, 0x327F, 0x321C, 0x2116, 0x33C7, 0x2122,
+ 0x33C2, 0x33D8, 0x2121, 0xFF01, 0xFF02, 0xFF03, 0xFF04, 0xFF05, 0xFF06,
+ 0xFF07, 0xFF08, 0xFF09, 0xFF0A, 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F,
+ 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18,
+ 0xFF19, 0xFF1A, 0xFF1B, 0xFF1C, 0xFF1D, 0xFF1E, 0xFF1F, 0xFF20, 0xFF21,
+ 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A,
+ 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33,
+ 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF3B, 0xFFE6,
+ 0xFF3D, 0xFF3E, 0xFF3F, 0xFF40, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45,
+ 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E,
+ 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57,
+ 0xFF58, 0xFF59, 0xFF5A, 0xFF5B, 0xFF5C, 0xFF5D, 0xFFE3, 0x3131, 0x3132,
+ 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138, 0x3139, 0x313A, 0x313B,
+ 0x313C, 0x313D, 0x313E, 0x313F, 0x3140, 0x3141, 0x3142, 0x3143, 0x3144,
+ 0x3145, 0x3146, 0x3147, 0x3148, 0x3149, 0x314A, 0x314B, 0x314C, 0x314D,
+ 0x314E, 0x314F, 0x3150, 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156,
+ 0x3157, 0x3158, 0x3159, 0x315A, 0x315B, 0x315C, 0x315D, 0x315E, 0x315F,
+ 0x3160, 0x3161, 0x3162, 0x3163, 0x3165, 0x3166, 0x3167, 0x3168, 0x3169,
+ 0x316A, 0x316B, 0x316C, 0x316D, 0x316E, 0x316F, 0x3170, 0x3171, 0x3172,
+ 0x3173, 0x3174, 0x3175, 0x3176, 0x3177, 0x3178, 0x3179, 0x317A, 0x317B,
+ 0x317C, 0x317D, 0x317E, 0x317F, 0x3180, 0x3181, 0x3182, 0x3183, 0x3184,
+ 0x3185, 0x3186, 0x3187, 0x3188, 0x3189, 0x318A, 0x318B, 0x318C, 0x318D,
+ 0x318E, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
+ 0x2178, 0x2179, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166,
+ 0x2167, 0x2168, 0x2169, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396,
+ 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
+ 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9,
+ 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9,
+ 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3,
+ 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x2500, 0x2502, 0x250C,
+ 0x2510, 0x2518, 0x2514, 0x251C, 0x252C, 0x2524, 0x2534, 0x253C, 0x2501,
+ 0x2503, 0x250F, 0x2513, 0x251B, 0x2517, 0x2523, 0x2533, 0x252B, 0x253B,
+ 0x254B, 0x2520, 0x252F, 0x2528, 0x2537, 0x253F, 0x251D, 0x2530, 0x2525,
+ 0x2538, 0x2542, 0x2512, 0x2511, 0x251A, 0x2519, 0x2516, 0x2515, 0x250E,
+ 0x250D, 0x251E, 0x251F, 0x2521, 0x2522, 0x2526, 0x2527, 0x2529, 0x252A,
+ 0x252D, 0x252E, 0x2531, 0x2532, 0x2535, 0x2536, 0x2539, 0x253A, 0x253D,
+ 0x253E, 0x2540, 0x2541, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548,
+ 0x2549, 0x254A, 0x3395, 0x3396, 0x3397, 0x2113, 0x3398, 0x33C4, 0x33A3,
+ 0x33A4, 0x33A5, 0x33A6, 0x3399, 0x339A, 0x339B, 0x339C, 0x339D, 0x339E,
+ 0x339F, 0x33A0, 0x33A1, 0x33A2, 0x33CA, 0x338D, 0x338E, 0x338F, 0x33CF,
+ 0x3388, 0x3389, 0x33C8, 0x33A7, 0x33A8, 0x33B0, 0x33B1, 0x33B2, 0x33B3,
+ 0x33B4, 0x33B5, 0x33B6, 0x33B7, 0x33B8, 0x33B9, 0x3380, 0x3381, 0x3382,
+ 0x3383, 0x3384, 0x33BA, 0x33BB, 0x33BC, 0x33BD, 0x33BE, 0x33BF, 0x3390,
+ 0x3391, 0x3392, 0x3393, 0x3394, 0x2126, 0x33C0, 0x33C1, 0x338A, 0x338B,
+ 0x338C, 0x33D6, 0x33C5, 0x33AD, 0x33AE, 0x33AF, 0x33DB, 0x33A9, 0x33AA,
+ 0x33AB, 0x33AC, 0x33DD, 0x33D0, 0x33D3, 0x33C3, 0x33C9, 0x33DC, 0x33C6,
+ 0x00C6, 0x00D0, 0x00AA, 0x0126, 0x0132, 0x013F, 0x0141, 0x00D8, 0x0152,
+ 0x00BA, 0x00DE, 0x0166, 0x014A, 0x3260, 0x3261, 0x3262, 0x3263, 0x3264,
+ 0x3265, 0x3266, 0x3267, 0x3268, 0x3269, 0x326A, 0x326B, 0x326C, 0x326D,
+ 0x326E, 0x326F, 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275, 0x3276,
+ 0x3277, 0x3278, 0x3279, 0x327A, 0x327B, 0x24D0, 0x24D1, 0x24D2, 0x24D3,
+ 0x24D4, 0x24D5, 0x24D6, 0x24D7, 0x24D8, 0x24D9, 0x24DA, 0x24DB, 0x24DC,
+ 0x24DD, 0x24DE, 0x24DF, 0x24E0, 0x24E1, 0x24E2, 0x24E3, 0x24E4, 0x24E5,
+ 0x24E6, 0x24E7, 0x24E8, 0x24E9, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464,
+ 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246A, 0x246B, 0x246C, 0x246D,
+ 0x246E, 0x00BD, 0x2153, 0x2154, 0x00BC, 0x00BE, 0x215B, 0x215C, 0x215D,
+ 0x215E, 0x00E6, 0x0111, 0x00F0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0140,
+ 0x0142, 0x00F8, 0x0153, 0x00DF, 0x00FE, 0x0167, 0x014B, 0x0149, 0x3200,
+ 0x3201, 0x3202, 0x3203, 0x3204, 0x3205, 0x3206, 0x3207, 0x3208, 0x3209,
+ 0x320A, 0x320B, 0x320C, 0x320D, 0x320E, 0x320F, 0x3210, 0x3211, 0x3212,
+ 0x3213, 0x3214, 0x3215, 0x3216, 0x3217, 0x3218, 0x3219, 0x321A, 0x321B,
+ 0x249C, 0x249D, 0x249E, 0x249F, 0x24A0, 0x24A1, 0x24A2, 0x24A3, 0x24A4,
+ 0x24A5, 0x24A6, 0x24A7, 0x24A8, 0x24A9, 0x24AA, 0x24AB, 0x24AC, 0x24AD,
+ 0x24AE, 0x24AF, 0x24B0, 0x24B1, 0x24B2, 0x24B3, 0x24B4, 0x24B5, 0x2474,
+ 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247A, 0x247B, 0x247C, 0x247D,
+ 0x247E, 0x247F, 0x2480, 0x2481, 0x2482, 0x00B9, 0x00B2, 0x00B3, 0x2074,
+ 0x207F, 0x2081, 0x2082, 0x2083, 0x2084, 0x3041, 0x3042, 0x3043, 0x3044,
+ 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D,
+ 0x304E, 0x304F, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056,
+ 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F,
+ 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
+ 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071,
+ 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A,
+ 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 0x3080, 0x3081, 0x3082, 0x3083,
+ 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308A, 0x308B, 0x308C,
+ 0x308D, 0x308E, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A1, 0x30A2,
+ 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA, 0x30AB,
+ 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4,
+ 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD,
+ 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6,
+ 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF,
+ 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8,
+ 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0, 0x30E1,
+ 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, 0x30E9, 0x30EA,
+ 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3,
+ 0x30F4, 0x30F5, 0x30F6, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415,
+ 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D,
+ 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
+ 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, 0x0440,
+ 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449,
+ 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, 0xAC00, 0xAC01, 0xAC04,
+ 0xAC07, 0xAC08, 0xAC09, 0xAC0A, 0xAC10, 0xAC11, 0xAC12, 0xAC13, 0xAC14,
+ 0xAC15, 0xAC16, 0xAC17, 0xAC19, 0xAC1A, 0xAC1B, 0xAC1C, 0xAC1D, 0xAC20,
+ 0xAC24, 0xAC2C, 0xAC2D, 0xAC2F, 0xAC30, 0xAC31, 0xAC38, 0xAC39, 0xAC3C,
+ 0xAC40, 0xAC4B, 0xAC4D, 0xAC54, 0xAC58, 0xAC5C, 0xAC70, 0xAC71, 0xAC74,
+ 0xAC77, 0xAC78, 0xAC7A, 0xAC80, 0xAC81, 0xAC83, 0xAC84, 0xAC85, 0xAC86,
+ 0xAC89, 0xAC8A, 0xAC8B, 0xAC8C, 0xAC90, 0xAC94, 0xAC9C, 0xAC9D, 0xAC9F,
+ 0xACA0, 0xACA1, 0xACA8, 0xACA9, 0xACAA, 0xACAC, 0xACAF, 0xACB0, 0xACB8,
+ 0xACB9, 0xACBB, 0xACBC, 0xACBD, 0xACC1, 0xACC4, 0xACC8, 0xACCC, 0xACD5,
+ 0xACD7, 0xACE0, 0xACE1, 0xACE4, 0xACE7, 0xACE8, 0xACEA, 0xACEC, 0xACEF,
+ 0xACF0, 0xACF1, 0xACF3, 0xACF5, 0xACF6, 0xACFC, 0xACFD, 0xAD00, 0xAD04,
+ 0xAD06, 0xAD0C, 0xAD0D, 0xAD0F, 0xAD11, 0xAD18, 0xAD1C, 0xAD20, 0xAD29,
+ 0xAD2C, 0xAD2D, 0xAD34, 0xAD35, 0xAD38, 0xAD3C, 0xAD44, 0xAD45, 0xAD47,
+ 0xAD49, 0xAD50, 0xAD54, 0xAD58, 0xAD61, 0xAD63, 0xAD6C, 0xAD6D, 0xAD70,
+ 0xAD73, 0xAD74, 0xAD75, 0xAD76, 0xAD7B, 0xAD7C, 0xAD7D, 0xAD7F, 0xAD81,
+ 0xAD82, 0xAD88, 0xAD89, 0xAD8C, 0xAD90, 0xAD9C, 0xAD9D, 0xADA4, 0xADB7,
+ 0xADC0, 0xADC1, 0xADC4, 0xADC8, 0xADD0, 0xADD1, 0xADD3, 0xADDC, 0xADE0,
+ 0xADE4, 0xADF8, 0xADF9, 0xADFC, 0xADFF, 0xAE00, 0xAE01, 0xAE08, 0xAE09,
+ 0xAE0B, 0xAE0D, 0xAE14, 0xAE30, 0xAE31, 0xAE34, 0xAE37, 0xAE38, 0xAE3A,
+ 0xAE40, 0xAE41, 0xAE43, 0xAE45, 0xAE46, 0xAE4A, 0xAE4C, 0xAE4D, 0xAE4E,
+ 0xAE50, 0xAE54, 0xAE56, 0xAE5C, 0xAE5D, 0xAE5F, 0xAE60, 0xAE61, 0xAE65,
+ 0xAE68, 0xAE69, 0xAE6C, 0xAE70, 0xAE78, 0xAE79, 0xAE7B, 0xAE7C, 0xAE7D,
+ 0xAE84, 0xAE85, 0xAE8C, 0xAEBC, 0xAEBD, 0xAEBE, 0xAEC0, 0xAEC4, 0xAECC,
+ 0xAECD, 0xAECF, 0xAED0, 0xAED1, 0xAED8, 0xAED9, 0xAEDC, 0xAEE8, 0xAEEB,
+ 0xAEED, 0xAEF4, 0xAEF8, 0xAEFC, 0xAF07, 0xAF08, 0xAF0D, 0xAF10, 0xAF2C,
+ 0xAF2D, 0xAF30, 0xAF32, 0xAF34, 0xAF3C, 0xAF3D, 0xAF3F, 0xAF41, 0xAF42,
+ 0xAF43, 0xAF48, 0xAF49, 0xAF50, 0xAF5C, 0xAF5D, 0xAF64, 0xAF65, 0xAF79,
+ 0xAF80, 0xAF84, 0xAF88, 0xAF90, 0xAF91, 0xAF95, 0xAF9C, 0xAFB8, 0xAFB9,
+ 0xAFBC, 0xAFC0, 0xAFC7, 0xAFC8, 0xAFC9, 0xAFCB, 0xAFCD, 0xAFCE, 0xAFD4,
+ 0xAFDC, 0xAFE8, 0xAFE9, 0xAFF0, 0xAFF1, 0xAFF4, 0xAFF8, 0xB000, 0xB001,
+ 0xB004, 0xB00C, 0xB010, 0xB014, 0xB01C, 0xB01D, 0xB028, 0xB044, 0xB045,
+ 0xB048, 0xB04A, 0xB04C, 0xB04E, 0xB053, 0xB054, 0xB055, 0xB057, 0xB059,
+ 0xB05D, 0xB07C, 0xB07D, 0xB080, 0xB084, 0xB08C, 0xB08D, 0xB08F, 0xB091,
+ 0xB098, 0xB099, 0xB09A, 0xB09C, 0xB09F, 0xB0A0, 0xB0A1, 0xB0A2, 0xB0A8,
+ 0xB0A9, 0xB0AB, 0xB0AC, 0xB0AD, 0xB0AE, 0xB0AF, 0xB0B1, 0xB0B3, 0xB0B4,
+ 0xB0B5, 0xB0B8, 0xB0BC, 0xB0C4, 0xB0C5, 0xB0C7, 0xB0C8, 0xB0C9, 0xB0D0,
+ 0xB0D1, 0xB0D4, 0xB0D8, 0xB0E0, 0xB0E5, 0xB108, 0xB109, 0xB10B, 0xB10C,
+ 0xB110, 0xB112, 0xB113, 0xB118, 0xB119, 0xB11B, 0xB11C, 0xB11D, 0xB123,
+ 0xB124, 0xB125, 0xB128, 0xB12C, 0xB134, 0xB135, 0xB137, 0xB138, 0xB139,
+ 0xB140, 0xB141, 0xB144, 0xB148, 0xB150, 0xB151, 0xB154, 0xB155, 0xB158,
+ 0xB15C, 0xB160, 0xB178, 0xB179, 0xB17C, 0xB180, 0xB182, 0xB188, 0xB189,
+ 0xB18B, 0xB18D, 0xB192, 0xB193, 0xB194, 0xB198, 0xB19C, 0xB1A8, 0xB1CC,
+ 0xB1D0, 0xB1D4, 0xB1DC, 0xB1DD, 0xB1DF, 0xB1E8, 0xB1E9, 0xB1EC, 0xB1F0,
+ 0xB1F9, 0xB1FB, 0xB1FD, 0xB204, 0xB205, 0xB208, 0xB20B, 0xB20C, 0xB214,
+ 0xB215, 0xB217, 0xB219, 0xB220, 0xB234, 0xB23C, 0xB258, 0xB25C, 0xB260,
+ 0xB268, 0xB269, 0xB274, 0xB275, 0xB27C, 0xB284, 0xB285, 0xB289, 0xB290,
+ 0xB291, 0xB294, 0xB298, 0xB299, 0xB29A, 0xB2A0, 0xB2A1, 0xB2A3, 0xB2A5,
+ 0xB2A6, 0xB2AA, 0xB2AC, 0xB2B0, 0xB2B4, 0xB2C8, 0xB2C9, 0xB2CC, 0xB2D0,
+ 0xB2D2, 0xB2D8, 0xB2D9, 0xB2DB, 0xB2DD, 0xB2E2, 0xB2E4, 0xB2E5, 0xB2E6,
+ 0xB2E8, 0xB2EB, 0xB2EC, 0xB2ED, 0xB2EE, 0xB2EF, 0xB2F3, 0xB2F4, 0xB2F5,
+ 0xB2F7, 0xB2F8, 0xB2F9, 0xB2FA, 0xB2FB, 0xB2FF, 0xB300, 0xB301, 0xB304,
+ 0xB308, 0xB310, 0xB311, 0xB313, 0xB314, 0xB315, 0xB31C, 0xB354, 0xB355,
+ 0xB356, 0xB358, 0xB35B, 0xB35C, 0xB35E, 0xB35F, 0xB364, 0xB365, 0xB367,
+ 0xB369, 0xB36B, 0xB36E, 0xB370, 0xB371, 0xB374, 0xB378, 0xB380, 0xB381,
+ 0xB383, 0xB384, 0xB385, 0xB38C, 0xB390, 0xB394, 0xB3A0, 0xB3A1, 0xB3A8,
+ 0xB3AC, 0xB3C4, 0xB3C5, 0xB3C8, 0xB3CB, 0xB3CC, 0xB3CE, 0xB3D0, 0xB3D4,
+ 0xB3D5, 0xB3D7, 0xB3D9, 0xB3DB, 0xB3DD, 0xB3E0, 0xB3E4, 0xB3E8, 0xB3FC,
+ 0xB410, 0xB418, 0xB41C, 0xB420, 0xB428, 0xB429, 0xB42B, 0xB434, 0xB450,
+ 0xB451, 0xB454, 0xB458, 0xB460, 0xB461, 0xB463, 0xB465, 0xB46C, 0xB480,
+ 0xB488, 0xB49D, 0xB4A4, 0xB4A8, 0xB4AC, 0xB4B5, 0xB4B7, 0xB4B9, 0xB4C0,
+ 0xB4C4, 0xB4C8, 0xB4D0, 0xB4D5, 0xB4DC, 0xB4DD, 0xB4E0, 0xB4E3, 0xB4E4,
+ 0xB4E6, 0xB4EC, 0xB4ED, 0xB4EF, 0xB4F1, 0xB4F8, 0xB514, 0xB515, 0xB518,
+ 0xB51B, 0xB51C, 0xB524, 0xB525, 0xB527, 0xB528, 0xB529, 0xB52A, 0xB530,
+ 0xB531, 0xB534, 0xB538, 0xB540, 0xB541, 0xB543, 0xB544, 0xB545, 0xB54B,
+ 0xB54C, 0xB54D, 0xB550, 0xB554, 0xB55C, 0xB55D, 0xB55F, 0xB560, 0xB561,
+ 0xB5A0, 0xB5A1, 0xB5A4, 0xB5A8, 0xB5AA, 0xB5AB, 0xB5B0, 0xB5B1, 0xB5B3,
+ 0xB5B4, 0xB5B5, 0xB5BB, 0xB5BC, 0xB5BD, 0xB5C0, 0xB5C4, 0xB5CC, 0xB5CD,
+ 0xB5CF, 0xB5D0, 0xB5D1, 0xB5D8, 0xB5EC, 0xB610, 0xB611, 0xB614, 0xB618,
+ 0xB625, 0xB62C, 0xB634, 0xB648, 0xB664, 0xB668, 0xB69C, 0xB69D, 0xB6A0,
+ 0xB6A4, 0xB6AB, 0xB6AC, 0xB6B1, 0xB6D4, 0xB6F0, 0xB6F4, 0xB6F8, 0xB700,
+ 0xB701, 0xB705, 0xB728, 0xB729, 0xB72C, 0xB72F, 0xB730, 0xB738, 0xB739,
+ 0xB73B, 0xB744, 0xB748, 0xB74C, 0xB754, 0xB755, 0xB760, 0xB764, 0xB768,
+ 0xB770, 0xB771, 0xB773, 0xB775, 0xB77C, 0xB77D, 0xB780, 0xB784, 0xB78C,
+ 0xB78D, 0xB78F, 0xB790, 0xB791, 0xB792, 0xB796, 0xB797, 0xB798, 0xB799,
+ 0xB79C, 0xB7A0, 0xB7A8, 0xB7A9, 0xB7AB, 0xB7AC, 0xB7AD, 0xB7B4, 0xB7B5,
+ 0xB7B8, 0xB7C7, 0xB7C9, 0xB7EC, 0xB7ED, 0xB7F0, 0xB7F4, 0xB7FC, 0xB7FD,
+ 0xB7FF, 0xB800, 0xB801, 0xB807, 0xB808, 0xB809, 0xB80C, 0xB810, 0xB818,
+ 0xB819, 0xB81B, 0xB81D, 0xB824, 0xB825, 0xB828, 0xB82C, 0xB834, 0xB835,
+ 0xB837, 0xB838, 0xB839, 0xB840, 0xB844, 0xB851, 0xB853, 0xB85C, 0xB85D,
+ 0xB860, 0xB864, 0xB86C, 0xB86D, 0xB86F, 0xB871, 0xB878, 0xB87C, 0xB88D,
+ 0xB8A8, 0xB8B0, 0xB8B4, 0xB8B8, 0xB8C0, 0xB8C1, 0xB8C3, 0xB8C5, 0xB8CC,
+ 0xB8D0, 0xB8D4, 0xB8DD, 0xB8DF, 0xB8E1, 0xB8E8, 0xB8E9, 0xB8EC, 0xB8F0,
+ 0xB8F8, 0xB8F9, 0xB8FB, 0xB8FD, 0xB904, 0xB918, 0xB920, 0xB93C, 0xB93D,
+ 0xB940, 0xB944, 0xB94C, 0xB94F, 0xB951, 0xB958, 0xB959, 0xB95C, 0xB960,
+ 0xB968, 0xB969, 0xB96B, 0xB96D, 0xB974, 0xB975, 0xB978, 0xB97C, 0xB984,
+ 0xB985, 0xB987, 0xB989, 0xB98A, 0xB98D, 0xB98E, 0xB9AC, 0xB9AD, 0xB9B0,
+ 0xB9B4, 0xB9BC, 0xB9BD, 0xB9BF, 0xB9C1, 0xB9C8, 0xB9C9, 0xB9CC, 0xB9CE,
+ 0xB9CF, 0xB9D0, 0xB9D1, 0xB9D2, 0xB9D8, 0xB9D9, 0xB9DB, 0xB9DD, 0xB9DE,
+ 0xB9E1, 0xB9E3, 0xB9E4, 0xB9E5, 0xB9E8, 0xB9EC, 0xB9F4, 0xB9F5, 0xB9F7,
+ 0xB9F8, 0xB9F9, 0xB9FA, 0xBA00, 0xBA01, 0xBA08, 0xBA15, 0xBA38, 0xBA39,
+ 0xBA3C, 0xBA40, 0xBA42, 0xBA48, 0xBA49, 0xBA4B, 0xBA4D, 0xBA4E, 0xBA53,
+ 0xBA54, 0xBA55, 0xBA58, 0xBA5C, 0xBA64, 0xBA65, 0xBA67, 0xBA68, 0xBA69,
+ 0xBA70, 0xBA71, 0xBA74, 0xBA78, 0xBA83, 0xBA84, 0xBA85, 0xBA87, 0xBA8C,
+ 0xBAA8, 0xBAA9, 0xBAAB, 0xBAAC, 0xBAB0, 0xBAB2, 0xBAB8, 0xBAB9, 0xBABB,
+ 0xBABD, 0xBAC4, 0xBAC8, 0xBAD8, 0xBAD9, 0xBAFC, 0xBB00, 0xBB04, 0xBB0D,
+ 0xBB0F, 0xBB11, 0xBB18, 0xBB1C, 0xBB20, 0xBB29, 0xBB2B, 0xBB34, 0xBB35,
+ 0xBB36, 0xBB38, 0xBB3B, 0xBB3C, 0xBB3D, 0xBB3E, 0xBB44, 0xBB45, 0xBB47,
+ 0xBB49, 0xBB4D, 0xBB4F, 0xBB50, 0xBB54, 0xBB58, 0xBB61, 0xBB63, 0xBB6C,
+ 0xBB88, 0xBB8C, 0xBB90, 0xBBA4, 0xBBA8, 0xBBAC, 0xBBB4, 0xBBB7, 0xBBC0,
+ 0xBBC4, 0xBBC8, 0xBBD0, 0xBBD3, 0xBBF8, 0xBBF9, 0xBBFC, 0xBBFF, 0xBC00,
+ 0xBC02, 0xBC08, 0xBC09, 0xBC0B, 0xBC0C, 0xBC0D, 0xBC0F, 0xBC11, 0xBC14,
+ 0xBC15, 0xBC16, 0xBC17, 0xBC18, 0xBC1B, 0xBC1C, 0xBC1D, 0xBC1E, 0xBC1F,
+ 0xBC24, 0xBC25, 0xBC27, 0xBC29, 0xBC2D, 0xBC30, 0xBC31, 0xBC34, 0xBC38,
+ 0xBC40, 0xBC41, 0xBC43, 0xBC44, 0xBC45, 0xBC49, 0xBC4C, 0xBC4D, 0xBC50,
+ 0xBC5D, 0xBC84, 0xBC85, 0xBC88, 0xBC8B, 0xBC8C, 0xBC8E, 0xBC94, 0xBC95,
+ 0xBC97, 0xBC99, 0xBC9A, 0xBCA0, 0xBCA1, 0xBCA4, 0xBCA7, 0xBCA8, 0xBCB0,
+ 0xBCB1, 0xBCB3, 0xBCB4, 0xBCB5, 0xBCBC, 0xBCBD, 0xBCC0, 0xBCC4, 0xBCCD,
+ 0xBCCF, 0xBCD0, 0xBCD1, 0xBCD5, 0xBCD8, 0xBCDC, 0xBCF4, 0xBCF5, 0xBCF6,
+ 0xBCF8, 0xBCFC, 0xBD04, 0xBD05, 0xBD07, 0xBD09, 0xBD10, 0xBD14, 0xBD24,
+ 0xBD2C, 0xBD40, 0xBD48, 0xBD49, 0xBD4C, 0xBD50, 0xBD58, 0xBD59, 0xBD64,
+ 0xBD68, 0xBD80, 0xBD81, 0xBD84, 0xBD87, 0xBD88, 0xBD89, 0xBD8A, 0xBD90,
+ 0xBD91, 0xBD93, 0xBD95, 0xBD99, 0xBD9A, 0xBD9C, 0xBDA4, 0xBDB0, 0xBDB8,
+ 0xBDD4, 0xBDD5, 0xBDD8, 0xBDDC, 0xBDE9, 0xBDF0, 0xBDF4, 0xBDF8, 0xBE00,
+ 0xBE03, 0xBE05, 0xBE0C, 0xBE0D, 0xBE10, 0xBE14, 0xBE1C, 0xBE1D, 0xBE1F,
+ 0xBE44, 0xBE45, 0xBE48, 0xBE4C, 0xBE4E, 0xBE54, 0xBE55, 0xBE57, 0xBE59,
+ 0xBE5A, 0xBE5B, 0xBE60, 0xBE61, 0xBE64, 0xBE68, 0xBE6A, 0xBE70, 0xBE71,
+ 0xBE73, 0xBE74, 0xBE75, 0xBE7B, 0xBE7C, 0xBE7D, 0xBE80, 0xBE84, 0xBE8C,
+ 0xBE8D, 0xBE8F, 0xBE90, 0xBE91, 0xBE98, 0xBE99, 0xBEA8, 0xBED0, 0xBED1,
+ 0xBED4, 0xBED7, 0xBED8, 0xBEE0, 0xBEE3, 0xBEE4, 0xBEE5, 0xBEEC, 0xBF01,
+ 0xBF08, 0xBF09, 0xBF18, 0xBF19, 0xBF1B, 0xBF1C, 0xBF1D, 0xBF40, 0xBF41,
+ 0xBF44, 0xBF48, 0xBF50, 0xBF51, 0xBF55, 0xBF94, 0xBFB0, 0xBFC5, 0xBFCC,
+ 0xBFCD, 0xBFD0, 0xBFD4, 0xBFDC, 0xBFDF, 0xBFE1, 0xC03C, 0xC051, 0xC058,
+ 0xC05C, 0xC060, 0xC068, 0xC069, 0xC090, 0xC091, 0xC094, 0xC098, 0xC0A0,
+ 0xC0A1, 0xC0A3, 0xC0A5, 0xC0AC, 0xC0AD, 0xC0AF, 0xC0B0, 0xC0B3, 0xC0B4,
+ 0xC0B5, 0xC0B6, 0xC0BC, 0xC0BD, 0xC0BF, 0xC0C0, 0xC0C1, 0xC0C5, 0xC0C8,
+ 0xC0C9, 0xC0CC, 0xC0D0, 0xC0D8, 0xC0D9, 0xC0DB, 0xC0DC, 0xC0DD, 0xC0E4,
+ 0xC0E5, 0xC0E8, 0xC0EC, 0xC0F4, 0xC0F5, 0xC0F7, 0xC0F9, 0xC100, 0xC104,
+ 0xC108, 0xC110, 0xC115, 0xC11C, 0xC11D, 0xC11E, 0xC11F, 0xC120, 0xC123,
+ 0xC124, 0xC126, 0xC127, 0xC12C, 0xC12D, 0xC12F, 0xC130, 0xC131, 0xC136,
+ 0xC138, 0xC139, 0xC13C, 0xC140, 0xC148, 0xC149, 0xC14B, 0xC14C, 0xC14D,
+ 0xC154, 0xC155, 0xC158, 0xC15C, 0xC164, 0xC165, 0xC167, 0xC168, 0xC169,
+ 0xC170, 0xC174, 0xC178, 0xC185, 0xC18C, 0xC18D, 0xC18E, 0xC190, 0xC194,
+ 0xC196, 0xC19C, 0xC19D, 0xC19F, 0xC1A1, 0xC1A5, 0xC1A8, 0xC1A9, 0xC1AC,
+ 0xC1B0, 0xC1BD, 0xC1C4, 0xC1C8, 0xC1CC, 0xC1D4, 0xC1D7, 0xC1D8, 0xC1E0,
+ 0xC1E4, 0xC1E8, 0xC1F0, 0xC1F1, 0xC1F3, 0xC1FC, 0xC1FD, 0xC200, 0xC204,
+ 0xC20C, 0xC20D, 0xC20F, 0xC211, 0xC218, 0xC219, 0xC21C, 0xC21F, 0xC220,
+ 0xC228, 0xC229, 0xC22B, 0xC22D, 0xC22F, 0xC231, 0xC232, 0xC234, 0xC248,
+ 0xC250, 0xC251, 0xC254, 0xC258, 0xC260, 0xC265, 0xC26C, 0xC26D, 0xC270,
+ 0xC274, 0xC27C, 0xC27D, 0xC27F, 0xC281, 0xC288, 0xC289, 0xC290, 0xC298,
+ 0xC29B, 0xC29D, 0xC2A4, 0xC2A5, 0xC2A8, 0xC2AC, 0xC2AD, 0xC2B4, 0xC2B5,
+ 0xC2B7, 0xC2B9, 0xC2DC, 0xC2DD, 0xC2E0, 0xC2E3, 0xC2E4, 0xC2EB, 0xC2EC,
+ 0xC2ED, 0xC2EF, 0xC2F1, 0xC2F6, 0xC2F8, 0xC2F9, 0xC2FB, 0xC2FC, 0xC300,
+ 0xC308, 0xC309, 0xC30C, 0xC30D, 0xC313, 0xC314, 0xC315, 0xC318, 0xC31C,
+ 0xC324, 0xC325, 0xC328, 0xC329, 0xC345, 0xC368, 0xC369, 0xC36C, 0xC370,
+ 0xC372, 0xC378, 0xC379, 0xC37C, 0xC37D, 0xC384, 0xC388, 0xC38C, 0xC3C0,
+ 0xC3D8, 0xC3D9, 0xC3DC, 0xC3DF, 0xC3E0, 0xC3E2, 0xC3E8, 0xC3E9, 0xC3ED,
+ 0xC3F4, 0xC3F5, 0xC3F8, 0xC408, 0xC410, 0xC424, 0xC42C, 0xC430, 0xC434,
+ 0xC43C, 0xC43D, 0xC448, 0xC464, 0xC465, 0xC468, 0xC46C, 0xC474, 0xC475,
+ 0xC479, 0xC480, 0xC494, 0xC49C, 0xC4B8, 0xC4BC, 0xC4E9, 0xC4F0, 0xC4F1,
+ 0xC4F4, 0xC4F8, 0xC4FA, 0xC4FF, 0xC500, 0xC501, 0xC50C, 0xC510, 0xC514,
+ 0xC51C, 0xC528, 0xC529, 0xC52C, 0xC530, 0xC538, 0xC539, 0xC53B, 0xC53D,
+ 0xC544, 0xC545, 0xC548, 0xC549, 0xC54A, 0xC54C, 0xC54D, 0xC54E, 0xC553,
+ 0xC554, 0xC555, 0xC557, 0xC558, 0xC559, 0xC55D, 0xC55E, 0xC560, 0xC561,
+ 0xC564, 0xC568, 0xC570, 0xC571, 0xC573, 0xC574, 0xC575, 0xC57C, 0xC57D,
+ 0xC580, 0xC584, 0xC587, 0xC58C, 0xC58D, 0xC58F, 0xC591, 0xC595, 0xC597,
+ 0xC598, 0xC59C, 0xC5A0, 0xC5A9, 0xC5B4, 0xC5B5, 0xC5B8, 0xC5B9, 0xC5BB,
+ 0xC5BC, 0xC5BD, 0xC5BE, 0xC5C4, 0xC5C5, 0xC5C6, 0xC5C7, 0xC5C8, 0xC5C9,
+ 0xC5CA, 0xC5CC, 0xC5CE, 0xC5D0, 0xC5D1, 0xC5D4, 0xC5D8, 0xC5E0, 0xC5E1,
+ 0xC5E3, 0xC5E5, 0xC5EC, 0xC5ED, 0xC5EE, 0xC5F0, 0xC5F4, 0xC5F6, 0xC5F7,
+ 0xC5FC, 0xC5FD, 0xC5FE, 0xC5FF, 0xC600, 0xC601, 0xC605, 0xC606, 0xC607,
+ 0xC608, 0xC60C, 0xC610, 0xC618, 0xC619, 0xC61B, 0xC61C, 0xC624, 0xC625,
+ 0xC628, 0xC62C, 0xC62D, 0xC62E, 0xC630, 0xC633, 0xC634, 0xC635, 0xC637,
+ 0xC639, 0xC63B, 0xC640, 0xC641, 0xC644, 0xC648, 0xC650, 0xC651, 0xC653,
+ 0xC654, 0xC655, 0xC65C, 0xC65D, 0xC660, 0xC66C, 0xC66F, 0xC671, 0xC678,
+ 0xC679, 0xC67C, 0xC680, 0xC688, 0xC689, 0xC68B, 0xC68D, 0xC694, 0xC695,
+ 0xC698, 0xC69C, 0xC6A4, 0xC6A5, 0xC6A7, 0xC6A9, 0xC6B0, 0xC6B1, 0xC6B4,
+ 0xC6B8, 0xC6B9, 0xC6BA, 0xC6C0, 0xC6C1, 0xC6C3, 0xC6C5, 0xC6CC, 0xC6CD,
+ 0xC6D0, 0xC6D4, 0xC6DC, 0xC6DD, 0xC6E0, 0xC6E1, 0xC6E8, 0xC6E9, 0xC6EC,
+ 0xC6F0, 0xC6F8, 0xC6F9, 0xC6FD, 0xC704, 0xC705, 0xC708, 0xC70C, 0xC714,
+ 0xC715, 0xC717, 0xC719, 0xC720, 0xC721, 0xC724, 0xC728, 0xC730, 0xC731,
+ 0xC733, 0xC735, 0xC737, 0xC73C, 0xC73D, 0xC740, 0xC744, 0xC74A, 0xC74C,
+ 0xC74D, 0xC74F, 0xC751, 0xC752, 0xC753, 0xC754, 0xC755, 0xC756, 0xC757,
+ 0xC758, 0xC75C, 0xC760, 0xC768, 0xC76B, 0xC774, 0xC775, 0xC778, 0xC77C,
+ 0xC77D, 0xC77E, 0xC783, 0xC784, 0xC785, 0xC787, 0xC788, 0xC789, 0xC78A,
+ 0xC78E, 0xC790, 0xC791, 0xC794, 0xC796, 0xC797, 0xC798, 0xC79A, 0xC7A0,
+ 0xC7A1, 0xC7A3, 0xC7A4, 0xC7A5, 0xC7A6, 0xC7AC, 0xC7AD, 0xC7B0, 0xC7B4,
+ 0xC7BC, 0xC7BD, 0xC7BF, 0xC7C0, 0xC7C1, 0xC7C8, 0xC7C9, 0xC7CC, 0xC7CE,
+ 0xC7D0, 0xC7D8, 0xC7DD, 0xC7E4, 0xC7E8, 0xC7EC, 0xC800, 0xC801, 0xC804,
+ 0xC808, 0xC80A, 0xC810, 0xC811, 0xC813, 0xC815, 0xC816, 0xC81C, 0xC81D,
+ 0xC820, 0xC824, 0xC82C, 0xC82D, 0xC82F, 0xC831, 0xC838, 0xC83C, 0xC840,
+ 0xC848, 0xC849, 0xC84C, 0xC84D, 0xC854, 0xC870, 0xC871, 0xC874, 0xC878,
+ 0xC87A, 0xC880, 0xC881, 0xC883, 0xC885, 0xC886, 0xC887, 0xC88B, 0xC88C,
+ 0xC88D, 0xC894, 0xC89D, 0xC89F, 0xC8A1, 0xC8A8, 0xC8BC, 0xC8BD, 0xC8C4,
+ 0xC8C8, 0xC8CC, 0xC8D4, 0xC8D5, 0xC8D7, 0xC8D9, 0xC8E0, 0xC8E1, 0xC8E4,
+ 0xC8F5, 0xC8FC, 0xC8FD, 0xC900, 0xC904, 0xC905, 0xC906, 0xC90C, 0xC90D,
+ 0xC90F, 0xC911, 0xC918, 0xC92C, 0xC934, 0xC950, 0xC951, 0xC954, 0xC958,
+ 0xC960, 0xC961, 0xC963, 0xC96C, 0xC970, 0xC974, 0xC97C, 0xC988, 0xC989,
+ 0xC98C, 0xC990, 0xC998, 0xC999, 0xC99B, 0xC99D, 0xC9C0, 0xC9C1, 0xC9C4,
+ 0xC9C7, 0xC9C8, 0xC9CA, 0xC9D0, 0xC9D1, 0xC9D3, 0xC9D5, 0xC9D6, 0xC9D9,
+ 0xC9DA, 0xC9DC, 0xC9DD, 0xC9E0, 0xC9E2, 0xC9E4, 0xC9E7, 0xC9EC, 0xC9ED,
+ 0xC9EF, 0xC9F0, 0xC9F1, 0xC9F8, 0xC9F9, 0xC9FC, 0xCA00, 0xCA08, 0xCA09,
+ 0xCA0B, 0xCA0C, 0xCA0D, 0xCA14, 0xCA18, 0xCA29, 0xCA4C, 0xCA4D, 0xCA50,
+ 0xCA54, 0xCA5C, 0xCA5D, 0xCA5F, 0xCA60, 0xCA61, 0xCA68, 0xCA7D, 0xCA84,
+ 0xCA98, 0xCABC, 0xCABD, 0xCAC0, 0xCAC4, 0xCACC, 0xCACD, 0xCACF, 0xCAD1,
+ 0xCAD3, 0xCAD8, 0xCAD9, 0xCAE0, 0xCAEC, 0xCAF4, 0xCB08, 0xCB10, 0xCB14,
+ 0xCB18, 0xCB20, 0xCB21, 0xCB41, 0xCB48, 0xCB49, 0xCB4C, 0xCB50, 0xCB58,
+ 0xCB59, 0xCB5D, 0xCB64, 0xCB78, 0xCB79, 0xCB9C, 0xCBB8, 0xCBD4, 0xCBE4,
+ 0xCBE7, 0xCBE9, 0xCC0C, 0xCC0D, 0xCC10, 0xCC14, 0xCC1C, 0xCC1D, 0xCC21,
+ 0xCC22, 0xCC27, 0xCC28, 0xCC29, 0xCC2C, 0xCC2E, 0xCC30, 0xCC38, 0xCC39,
+ 0xCC3B, 0xCC3C, 0xCC3D, 0xCC3E, 0xCC44, 0xCC45, 0xCC48, 0xCC4C, 0xCC54,
+ 0xCC55, 0xCC57, 0xCC58, 0xCC59, 0xCC60, 0xCC64, 0xCC66, 0xCC68, 0xCC70,
+ 0xCC75, 0xCC98, 0xCC99, 0xCC9C, 0xCCA0, 0xCCA8, 0xCCA9, 0xCCAB, 0xCCAC,
+ 0xCCAD, 0xCCB4, 0xCCB5, 0xCCB8, 0xCCBC, 0xCCC4, 0xCCC5, 0xCCC7, 0xCCC9,
+ 0xCCD0, 0xCCD4, 0xCCE4, 0xCCEC, 0xCCF0, 0xCD01, 0xCD08, 0xCD09, 0xCD0C,
+ 0xCD10, 0xCD18, 0xCD19, 0xCD1B, 0xCD1D, 0xCD24, 0xCD28, 0xCD2C, 0xCD39,
+ 0xCD5C, 0xCD60, 0xCD64, 0xCD6C, 0xCD6D, 0xCD6F, 0xCD71, 0xCD78, 0xCD88,
+ 0xCD94, 0xCD95, 0xCD98, 0xCD9C, 0xCDA4, 0xCDA5, 0xCDA7, 0xCDA9, 0xCDB0,
+ 0xCDC4, 0xCDCC, 0xCDD0, 0xCDE8, 0xCDEC, 0xCDF0, 0xCDF8, 0xCDF9, 0xCDFB,
+ 0xCDFD, 0xCE04, 0xCE08, 0xCE0C, 0xCE14, 0xCE19, 0xCE20, 0xCE21, 0xCE24,
+ 0xCE28, 0xCE30, 0xCE31, 0xCE33, 0xCE35, 0xCE58, 0xCE59, 0xCE5C, 0xCE5F,
+ 0xCE60, 0xCE61, 0xCE68, 0xCE69, 0xCE6B, 0xCE6D, 0xCE74, 0xCE75, 0xCE78,
+ 0xCE7C, 0xCE84, 0xCE85, 0xCE87, 0xCE89, 0xCE90, 0xCE91, 0xCE94, 0xCE98,
+ 0xCEA0, 0xCEA1, 0xCEA3, 0xCEA4, 0xCEA5, 0xCEAC, 0xCEAD, 0xCEC1, 0xCEE4,
+ 0xCEE5, 0xCEE8, 0xCEEB, 0xCEEC, 0xCEF4, 0xCEF5, 0xCEF7, 0xCEF8, 0xCEF9,
+ 0xCF00, 0xCF01, 0xCF04, 0xCF08, 0xCF10, 0xCF11, 0xCF13, 0xCF15, 0xCF1C,
+ 0xCF20, 0xCF24, 0xCF2C, 0xCF2D, 0xCF2F, 0xCF30, 0xCF31, 0xCF38, 0xCF54,
+ 0xCF55, 0xCF58, 0xCF5C, 0xCF64, 0xCF65, 0xCF67, 0xCF69, 0xCF70, 0xCF71,
+ 0xCF74, 0xCF78, 0xCF80, 0xCF85, 0xCF8C, 0xCFA1, 0xCFA8, 0xCFB0, 0xCFC4,
+ 0xCFE0, 0xCFE1, 0xCFE4, 0xCFE8, 0xCFF0, 0xCFF1, 0xCFF3, 0xCFF5, 0xCFFC,
+ 0xD000, 0xD004, 0xD011, 0xD018, 0xD02D, 0xD034, 0xD035, 0xD038, 0xD03C,
+ 0xD044, 0xD045, 0xD047, 0xD049, 0xD050, 0xD054, 0xD058, 0xD060, 0xD06C,
+ 0xD06D, 0xD070, 0xD074, 0xD07C, 0xD07D, 0xD081, 0xD0A4, 0xD0A5, 0xD0A8,
+ 0xD0AC, 0xD0B4, 0xD0B5, 0xD0B7, 0xD0B9, 0xD0C0, 0xD0C1, 0xD0C4, 0xD0C8,
+ 0xD0C9, 0xD0D0, 0xD0D1, 0xD0D3, 0xD0D4, 0xD0D5, 0xD0DC, 0xD0DD, 0xD0E0,
+ 0xD0E4, 0xD0EC, 0xD0ED, 0xD0EF, 0xD0F0, 0xD0F1, 0xD0F8, 0xD10D, 0xD130,
+ 0xD131, 0xD134, 0xD138, 0xD13A, 0xD140, 0xD141, 0xD143, 0xD144, 0xD145,
+ 0xD14C, 0xD14D, 0xD150, 0xD154, 0xD15C, 0xD15D, 0xD15F, 0xD161, 0xD168,
+ 0xD16C, 0xD17C, 0xD184, 0xD188, 0xD1A0, 0xD1A1, 0xD1A4, 0xD1A8, 0xD1B0,
+ 0xD1B1, 0xD1B3, 0xD1B5, 0xD1BA, 0xD1BC, 0xD1C0, 0xD1D8, 0xD1F4, 0xD1F8,
+ 0xD207, 0xD209, 0xD210, 0xD22C, 0xD22D, 0xD230, 0xD234, 0xD23C, 0xD23D,
+ 0xD23F, 0xD241, 0xD248, 0xD25C, 0xD264, 0xD280, 0xD281, 0xD284, 0xD288,
+ 0xD290, 0xD291, 0xD295, 0xD29C, 0xD2A0, 0xD2A4, 0xD2AC, 0xD2B1, 0xD2B8,
+ 0xD2B9, 0xD2BC, 0xD2BF, 0xD2C0, 0xD2C2, 0xD2C8, 0xD2C9, 0xD2CB, 0xD2D4,
+ 0xD2D8, 0xD2DC, 0xD2E4, 0xD2E5, 0xD2F0, 0xD2F1, 0xD2F4, 0xD2F8, 0xD300,
+ 0xD301, 0xD303, 0xD305, 0xD30C, 0xD30D, 0xD30E, 0xD310, 0xD314, 0xD316,
+ 0xD31C, 0xD31D, 0xD31F, 0xD320, 0xD321, 0xD325, 0xD328, 0xD329, 0xD32C,
+ 0xD330, 0xD338, 0xD339, 0xD33B, 0xD33C, 0xD33D, 0xD344, 0xD345, 0xD37C,
+ 0xD37D, 0xD380, 0xD384, 0xD38C, 0xD38D, 0xD38F, 0xD390, 0xD391, 0xD398,
+ 0xD399, 0xD39C, 0xD3A0, 0xD3A8, 0xD3A9, 0xD3AB, 0xD3AD, 0xD3B4, 0xD3B8,
+ 0xD3BC, 0xD3C4, 0xD3C5, 0xD3C8, 0xD3C9, 0xD3D0, 0xD3D8, 0xD3E1, 0xD3E3,
+ 0xD3EC, 0xD3ED, 0xD3F0, 0xD3F4, 0xD3FC, 0xD3FD, 0xD3FF, 0xD401, 0xD408,
+ 0xD41D, 0xD440, 0xD444, 0xD45C, 0xD460, 0xD464, 0xD46D, 0xD46F, 0xD478,
+ 0xD479, 0xD47C, 0xD47F, 0xD480, 0xD482, 0xD488, 0xD489, 0xD48B, 0xD48D,
+ 0xD494, 0xD4A9, 0xD4CC, 0xD4D0, 0xD4D4, 0xD4DC, 0xD4DF, 0xD4E8, 0xD4EC,
+ 0xD4F0, 0xD4F8, 0xD4FB, 0xD4FD, 0xD504, 0xD508, 0xD50C, 0xD514, 0xD515,
+ 0xD517, 0xD53C, 0xD53D, 0xD540, 0xD544, 0xD54C, 0xD54D, 0xD54F, 0xD551,
+ 0xD558, 0xD559, 0xD55C, 0xD560, 0xD565, 0xD568, 0xD569, 0xD56B, 0xD56D,
+ 0xD574, 0xD575, 0xD578, 0xD57C, 0xD584, 0xD585, 0xD587, 0xD588, 0xD589,
+ 0xD590, 0xD5A5, 0xD5C8, 0xD5C9, 0xD5CC, 0xD5D0, 0xD5D2, 0xD5D8, 0xD5D9,
+ 0xD5DB, 0xD5DD, 0xD5E4, 0xD5E5, 0xD5E8, 0xD5EC, 0xD5F4, 0xD5F5, 0xD5F7,
+ 0xD5F9, 0xD600, 0xD601, 0xD604, 0xD608, 0xD610, 0xD611, 0xD613, 0xD614,
+ 0xD615, 0xD61C, 0xD620, 0xD624, 0xD62D, 0xD638, 0xD639, 0xD63C, 0xD640,
+ 0xD645, 0xD648, 0xD649, 0xD64B, 0xD64D, 0xD651, 0xD654, 0xD655, 0xD658,
+ 0xD65C, 0xD667, 0xD669, 0xD670, 0xD671, 0xD674, 0xD683, 0xD685, 0xD68C,
+ 0xD68D, 0xD690, 0xD694, 0xD69D, 0xD69F, 0xD6A1, 0xD6A8, 0xD6AC, 0xD6B0,
+ 0xD6B9, 0xD6BB, 0xD6C4, 0xD6C5, 0xD6C8, 0xD6CC, 0xD6D1, 0xD6D4, 0xD6D7,
+ 0xD6D9, 0xD6E0, 0xD6E4, 0xD6E8, 0xD6F0, 0xD6F5, 0xD6FC, 0xD6FD, 0xD700,
+ 0xD704, 0xD711, 0xD718, 0xD719, 0xD71C, 0xD720, 0xD728, 0xD729, 0xD72B,
+ 0xD72D, 0xD734, 0xD735, 0xD738, 0xD73C, 0xD744, 0xD747, 0xD749, 0xD750,
+ 0xD751, 0xD754, 0xD756, 0xD757, 0xD758, 0xD759, 0xD760, 0xD761, 0xD763,
+ 0xD765, 0xD769, 0xD76C, 0xD770, 0xD774, 0xD77C, 0xD77D, 0xD781, 0xD788,
+ 0xD789, 0xD78C, 0xD790, 0xD798, 0xD799, 0xD79B, 0xD79D, 0x4F3D, 0x4F73,
+ 0x5047, 0x50F9, 0x52A0, 0x53EF, 0x5475, 0x54E5, 0x5609, 0x5AC1, 0x5BB6,
+ 0x6687, 0x67B6, 0x67B7, 0x67EF, 0x6B4C, 0x73C2, 0x75C2, 0x7A3C, 0x82DB,
+ 0x8304, 0x8857, 0x8888, 0x8A36, 0x8CC8, 0x8DCF, 0x8EFB, 0x8FE6, 0x99D5,
+ 0x523B, 0x5374, 0x5404, 0x606A, 0x6164, 0x6BBC, 0x73CF, 0x811A, 0x89BA,
+ 0x89D2, 0x95A3, 0x4F83, 0x520A, 0x58BE, 0x5978, 0x59E6, 0x5E72, 0x5E79,
+ 0x61C7, 0x63C0, 0x6746, 0x67EC, 0x687F, 0x6F97, 0x764E, 0x770B, 0x78F5,
+ 0x7A08, 0x7AFF, 0x7C21, 0x809D, 0x826E, 0x8271, 0x8AEB, 0x9593, 0x4E6B,
+ 0x559D, 0x66F7, 0x6E34, 0x78A3, 0x7AED, 0x845B, 0x8910, 0x874E, 0x97A8,
+ 0x52D8, 0x574E, 0x582A, 0x5D4C, 0x611F, 0x61BE, 0x6221, 0x6562, 0x67D1,
+ 0x6A44, 0x6E1B, 0x7518, 0x75B3, 0x76E3, 0x77B0, 0x7D3A, 0x90AF, 0x9451,
+ 0x9452, 0x9F95, 0x5323, 0x5CAC, 0x7532, 0x80DB, 0x9240, 0x9598, 0x525B,
+ 0x5808, 0x59DC, 0x5CA1, 0x5D17, 0x5EB7, 0x5F3A, 0x5F4A, 0x6177, 0x6C5F,
+ 0x757A, 0x7586, 0x7CE0, 0x7D73, 0x7DB1, 0x7F8C, 0x8154, 0x8221, 0x8591,
+ 0x8941, 0x8B1B, 0x92FC, 0x964D, 0x9C47, 0x4ECB, 0x4EF7, 0x500B, 0x51F1,
+ 0x584F, 0x6137, 0x613E, 0x6168, 0x6539, 0x69EA, 0x6F11, 0x75A5, 0x7686,
+ 0x76D6, 0x7B87, 0x82A5, 0x84CB, 0x93A7, 0x958B, 0x5580, 0x5BA2, 0x5751,
+ 0x7CB3, 0x7FB9, 0x91B5, 0x5028, 0x53BB, 0x5C45, 0x5DE8, 0x62D2, 0x636E,
+ 0x64DA, 0x64E7, 0x6E20, 0x70AC, 0x795B, 0x8DDD, 0x8E1E, 0x907D, 0x9245,
+ 0x92F8, 0x4E7E, 0x4EF6, 0x5065, 0x5DFE, 0x5EFA, 0x6106, 0x6957, 0x8171,
+ 0x8654, 0x8E47, 0x9375, 0x9A2B, 0x4E5E, 0x5091, 0x6770, 0x6840, 0x5109,
+ 0x528D, 0x5292, 0x6AA2, 0x77BC, 0x9210, 0x9ED4, 0x52AB, 0x602F, 0x8FF2,
+ 0x5048, 0x61A9, 0x63ED, 0x64CA, 0x683C, 0x6A84, 0x6FC0, 0x8188, 0x89A1,
+ 0x9694, 0x5805, 0x727D, 0x72AC, 0x7504, 0x7D79, 0x7E6D, 0x80A9, 0x898B,
+ 0x8B74, 0x9063, 0x9D51, 0x6289, 0x6C7A, 0x6F54, 0x7D50, 0x7F3A, 0x8A23,
+ 0x517C, 0x614A, 0x7B9D, 0x8B19, 0x9257, 0x938C, 0x4EAC, 0x4FD3, 0x501E,
+ 0x50BE, 0x5106, 0x52C1, 0x52CD, 0x537F, 0x5770, 0x5883, 0x5E9A, 0x5F91,
+ 0x6176, 0x61AC, 0x64CE, 0x656C, 0x666F, 0x66BB, 0x66F4, 0x6897, 0x6D87,
+ 0x7085, 0x70F1, 0x749F, 0x74A5, 0x74CA, 0x75D9, 0x786C, 0x78EC, 0x7ADF,
+ 0x7AF6, 0x7D45, 0x7D93, 0x8015, 0x803F, 0x811B, 0x8396, 0x8B66, 0x8F15,
+ 0x9015, 0x93E1, 0x9803, 0x9838, 0x9A5A, 0x9BE8, 0x4FC2, 0x5553, 0x583A,
+ 0x5951, 0x5B63, 0x5C46, 0x60B8, 0x6212, 0x6842, 0x68B0, 0x68E8, 0x6EAA,
+ 0x754C, 0x7678, 0x78CE, 0x7A3D, 0x7CFB, 0x7E6B, 0x7E7C, 0x8A08, 0x8AA1,
+ 0x8C3F, 0x968E, 0x9DC4, 0x53E4, 0x53E9, 0x544A, 0x5471, 0x56FA, 0x59D1,
+ 0x5B64, 0x5C3B, 0x5EAB, 0x62F7, 0x6537, 0x6545, 0x6572, 0x66A0, 0x67AF,
+ 0x69C1, 0x6CBD, 0x75FC, 0x7690, 0x777E, 0x7A3F, 0x7F94, 0x8003, 0x80A1,
+ 0x818F, 0x82E6, 0x82FD, 0x83F0, 0x85C1, 0x8831, 0x88B4, 0x8AA5, 0x8F9C,
+ 0x932E, 0x96C7, 0x9867, 0x9AD8, 0x9F13, 0x54ED, 0x659B, 0x66F2, 0x688F,
+ 0x7A40, 0x8C37, 0x9D60, 0x56F0, 0x5764, 0x5D11, 0x6606, 0x68B1, 0x68CD,
+ 0x6EFE, 0x7428, 0x889E, 0x9BE4, 0x6C68, 0x9AA8, 0x4F9B, 0x516C, 0x5171,
+ 0x529F, 0x5B54, 0x5DE5, 0x6050, 0x606D, 0x62F1, 0x63A7, 0x653B, 0x73D9,
+ 0x7A7A, 0x86A3, 0x8CA2, 0x978F, 0x4E32, 0x5BE1, 0x6208, 0x679C, 0x74DC,
+ 0x79D1, 0x83D3, 0x8A87, 0x8AB2, 0x8DE8, 0x904E, 0x934B, 0x9846, 0x5ED3,
+ 0x69E8, 0x85FF, 0x90ED, 0x51A0, 0x5B98, 0x5BEC, 0x6163, 0x68FA, 0x6B3E,
+ 0x704C, 0x742F, 0x74D8, 0x7BA1, 0x7F50, 0x83C5, 0x89C0, 0x8CAB, 0x95DC,
+ 0x9928, 0x522E, 0x605D, 0x62EC, 0x9002, 0x4F8A, 0x5149, 0x5321, 0x58D9,
+ 0x5EE3, 0x66E0, 0x6D38, 0x709A, 0x72C2, 0x73D6, 0x7B50, 0x80F1, 0x945B,
+ 0x5366, 0x639B, 0x7F6B, 0x4E56, 0x5080, 0x584A, 0x58DE, 0x602A, 0x6127,
+ 0x62D0, 0x69D0, 0x9B41, 0x5B8F, 0x7D18, 0x80B1, 0x8F5F, 0x4EA4, 0x50D1,
+ 0x54AC, 0x55AC, 0x5B0C, 0x5DA0, 0x5DE7, 0x652A, 0x654E, 0x6821, 0x6A4B,
+ 0x72E1, 0x768E, 0x77EF, 0x7D5E, 0x7FF9, 0x81A0, 0x854E, 0x86DF, 0x8F03,
+ 0x8F4E, 0x90CA, 0x9903, 0x9A55, 0x9BAB, 0x4E18, 0x4E45, 0x4E5D, 0x4EC7,
+ 0x4FF1, 0x5177, 0x52FE, 0x5340, 0x53E3, 0x53E5, 0x548E, 0x5614, 0x5775,
+ 0x57A2, 0x5BC7, 0x5D87, 0x5ED0, 0x61FC, 0x62D8, 0x6551, 0x67B8, 0x67E9,
+ 0x69CB, 0x6B50, 0x6BC6, 0x6BEC, 0x6C42, 0x6E9D, 0x7078, 0x72D7, 0x7396,
+ 0x7403, 0x77BF, 0x77E9, 0x7A76, 0x7D7F, 0x8009, 0x81FC, 0x8205, 0x820A,
+ 0x82DF, 0x8862, 0x8B33, 0x8CFC, 0x8EC0, 0x9011, 0x90B1, 0x9264, 0x92B6,
+ 0x99D2, 0x9A45, 0x9CE9, 0x9DD7, 0x9F9C, 0x570B, 0x5C40, 0x83CA, 0x97A0,
+ 0x97AB, 0x9EB4, 0x541B, 0x7A98, 0x7FA4, 0x88D9, 0x8ECD, 0x90E1, 0x5800,
+ 0x5C48, 0x6398, 0x7A9F, 0x5BAE, 0x5F13, 0x7A79, 0x7AAE, 0x828E, 0x8EAC,
+ 0x5026, 0x5238, 0x52F8, 0x5377, 0x5708, 0x62F3, 0x6372, 0x6B0A, 0x6DC3,
+ 0x7737, 0x53A5, 0x7357, 0x8568, 0x8E76, 0x95D5, 0x673A, 0x6AC3, 0x6F70,
+ 0x8A6D, 0x8ECC, 0x994B, 0x6677, 0x6B78, 0x8CB4, 0x9B3C, 0x53EB, 0x572D,
+ 0x594E, 0x63C6, 0x69FB, 0x73EA, 0x7845, 0x7ABA, 0x7AC5, 0x7CFE, 0x8475,
+ 0x898F, 0x8D73, 0x9035, 0x95A8, 0x52FB, 0x5747, 0x7547, 0x7B60, 0x83CC,
+ 0x921E, 0x6A58, 0x514B, 0x524B, 0x5287, 0x621F, 0x68D8, 0x6975, 0x9699,
+ 0x50C5, 0x52A4, 0x52E4, 0x61C3, 0x65A4, 0x6839, 0x69FF, 0x747E, 0x7B4B,
+ 0x82B9, 0x83EB, 0x89B2, 0x8B39, 0x8FD1, 0x9949, 0x4ECA, 0x5997, 0x64D2,
+ 0x6611, 0x6A8E, 0x7434, 0x7981, 0x79BD, 0x82A9, 0x887E, 0x887F, 0x895F,
+ 0x9326, 0x4F0B, 0x53CA, 0x6025, 0x6271, 0x6C72, 0x7D1A, 0x7D66, 0x4E98,
+ 0x5162, 0x77DC, 0x80AF, 0x4F01, 0x4F0E, 0x5176, 0x5180, 0x55DC, 0x5668,
+ 0x573B, 0x57FA, 0x57FC, 0x5914, 0x5947, 0x5993, 0x5BC4, 0x5C90, 0x5D0E,
+ 0x5DF1, 0x5E7E, 0x5FCC, 0x6280, 0x65D7, 0x65E3, 0x671E, 0x671F, 0x675E,
+ 0x68CB, 0x68C4, 0x6A5F, 0x6B3A, 0x6C23, 0x6C7D, 0x6C82, 0x6DC7, 0x7398,
+ 0x7426, 0x742A, 0x7482, 0x74A3, 0x7578, 0x757F, 0x7881, 0x78EF, 0x7941,
+ 0x7947, 0x7948, 0x797A, 0x7B95, 0x7D00, 0x7DBA, 0x7F88, 0x8006, 0x802D,
+ 0x808C, 0x8A18, 0x8B4F, 0x8C48, 0x8D77, 0x9321, 0x9324, 0x98E2, 0x9951,
+ 0x9A0E, 0x9A0F, 0x9A65, 0x9E92, 0x7DCA, 0x4F76, 0x5409, 0x62EE, 0x6854,
+ 0x91D1, 0x55AB, 0x513A, 0x5A1C, 0x61E6, 0x62CF, 0x62FF, 0x90A3, 0x8AFE,
+ 0x6696, 0x7156, 0x96E3, 0x634F, 0x637A, 0x5357, 0x678F, 0x6960, 0x6E73,
+ 0x7537, 0x7D0D, 0x8872, 0x56CA, 0x5A18, 0x4E43, 0x5167, 0x5948, 0x67F0,
+ 0x8010, 0x5973, 0x5E74, 0x649A, 0x79CA, 0x5FF5, 0x606C, 0x62C8, 0x637B,
+ 0x5BE7, 0x5BD7, 0x52AA, 0x5974, 0x5F29, 0x6012, 0x7459, 0x99D1, 0x6FC3,
+ 0x81BF, 0x8FB2, 0x60F1, 0x8166, 0x5C3F, 0x5AE9, 0x8A25, 0x677B, 0x7D10,
+ 0x80FD, 0x5C3C, 0x6CE5, 0x533F, 0x6EBA, 0x591A, 0x8336, 0x4E39, 0x4EB6,
+ 0x4F46, 0x55AE, 0x5718, 0x58C7, 0x5F56, 0x65B7, 0x65E6, 0x6A80, 0x6BB5,
+ 0x6E4D, 0x77ED, 0x7AEF, 0x7C1E, 0x7DDE, 0x86CB, 0x8892, 0x9132, 0x935B,
+ 0x64BB, 0x6FBE, 0x737A, 0x75B8, 0x9054, 0x5556, 0x574D, 0x61BA, 0x64D4,
+ 0x66C7, 0x6DE1, 0x6E5B, 0x6F6D, 0x6FB9, 0x75F0, 0x8043, 0x81BD, 0x8541,
+ 0x8983, 0x8AC7, 0x8B5A, 0x931F, 0x6C93, 0x7553, 0x7B54, 0x8E0F, 0x905D,
+ 0x5510, 0x5802, 0x5858, 0x5E62, 0x6207, 0x649E, 0x68E0, 0x7576, 0x7CD6,
+ 0x87B3, 0x9EE8, 0x4EE3, 0x5788, 0x576E, 0x5927, 0x5C0D, 0x5CB1, 0x5E36,
+ 0x5F85, 0x6234, 0x64E1, 0x73B3, 0x81FA, 0x888B, 0x8CB8, 0x968A, 0x9EDB,
+ 0x5B85, 0x5FB7, 0x60B3, 0x5012, 0x5200, 0x5230, 0x5716, 0x5835, 0x5857,
+ 0x5C0E, 0x5C60, 0x5CF6, 0x5D8B, 0x5EA6, 0x5F92, 0x60BC, 0x6311, 0x6389,
+ 0x6417, 0x6843, 0x68F9, 0x6AC2, 0x6DD8, 0x6E21, 0x6ED4, 0x6FE4, 0x71FE,
+ 0x76DC, 0x7779, 0x79B1, 0x7A3B, 0x8404, 0x89A9, 0x8CED, 0x8DF3, 0x8E48,
+ 0x9003, 0x9014, 0x9053, 0x90FD, 0x934D, 0x9676, 0x97DC, 0x6BD2, 0x7006,
+ 0x7258, 0x72A2, 0x7368, 0x7763, 0x79BF, 0x7BE4, 0x7E9B, 0x8B80, 0x58A9,
+ 0x60C7, 0x6566, 0x65FD, 0x66BE, 0x6C8C, 0x711E, 0x71C9, 0x8C5A, 0x9813,
+ 0x4E6D, 0x7A81, 0x4EDD, 0x51AC, 0x51CD, 0x52D5, 0x540C, 0x61A7, 0x6771,
+ 0x6850, 0x68DF, 0x6D1E, 0x6F7C, 0x75BC, 0x77B3, 0x7AE5, 0x80F4, 0x8463,
+ 0x9285, 0x515C, 0x6597, 0x675C, 0x6793, 0x75D8, 0x7AC7, 0x8373, 0x8C46,
+ 0x9017, 0x982D, 0x5C6F, 0x81C0, 0x829A, 0x9041, 0x906F, 0x920D, 0x5F97,
+ 0x5D9D, 0x6A59, 0x71C8, 0x767B, 0x7B49, 0x85E4, 0x8B04, 0x9127, 0x9A30,
+ 0x5587, 0x61F6, 0x7669, 0x7F85, 0x863F, 0x87BA, 0x88F8, 0x908F, 0x6D1B,
+ 0x70D9, 0x73DE, 0x7D61, 0x843D, 0x916A, 0x99F1, 0x4E82, 0x5375, 0x6B04,
+ 0x6B12, 0x703E, 0x721B, 0x862D, 0x9E1E, 0x524C, 0x8FA3, 0x5D50, 0x64E5,
+ 0x652C, 0x6B16, 0x6FEB, 0x7C43, 0x7E9C, 0x85CD, 0x8964, 0x89BD, 0x62C9,
+ 0x81D8, 0x881F, 0x5ECA, 0x6717, 0x6D6A, 0x72FC, 0x7405, 0x746F, 0x8782,
+ 0x90DE, 0x4F86, 0x5D0D, 0x5FA0, 0x840A, 0x51B7, 0x63A0, 0x7565, 0x4EAE,
+ 0x5006, 0x5169, 0x51C9, 0x6881, 0x6A11, 0x7CAE, 0x7CB1, 0x7CE7, 0x826F,
+ 0x8AD2, 0x8F1B, 0x91CF, 0x4FB6, 0x5137, 0x52F5, 0x5442, 0x5EEC, 0x616E,
+ 0x623E, 0x65C5, 0x6ADA, 0x6FFE, 0x792A, 0x85DC, 0x8823, 0x95AD, 0x9A62,
+ 0x9A6A, 0x9E97, 0x9ECE, 0x529B, 0x66C6, 0x6B77, 0x701D, 0x792B, 0x8F62,
+ 0x9742, 0x6190, 0x6200, 0x6523, 0x6F23, 0x7149, 0x7489, 0x7DF4, 0x806F,
+ 0x84EE, 0x8F26, 0x9023, 0x934A, 0x51BD, 0x5217, 0x52A3, 0x6D0C, 0x70C8,
+ 0x88C2, 0x5EC9, 0x6582, 0x6BAE, 0x6FC2, 0x7C3E, 0x7375, 0x4EE4, 0x4F36,
+ 0x56F9, 0x5CBA, 0x5DBA, 0x601C, 0x73B2, 0x7B2D, 0x7F9A, 0x7FCE, 0x8046,
+ 0x901E, 0x9234, 0x96F6, 0x9748, 0x9818, 0x9F61, 0x4F8B, 0x6FA7, 0x79AE,
+ 0x91B4, 0x96B7, 0x52DE, 0x6488, 0x64C4, 0x6AD3, 0x6F5E, 0x7018, 0x7210,
+ 0x76E7, 0x8001, 0x8606, 0x865C, 0x8DEF, 0x8F05, 0x9732, 0x9B6F, 0x9DFA,
+ 0x9E75, 0x788C, 0x797F, 0x7DA0, 0x83C9, 0x9304, 0x9E7F, 0x9E93, 0x8AD6,
+ 0x58DF, 0x5F04, 0x6727, 0x7027, 0x74CF, 0x7C60, 0x807E, 0x5121, 0x7028,
+ 0x7262, 0x78CA, 0x8CC2, 0x8CDA, 0x8CF4, 0x96F7, 0x4E86, 0x50DA, 0x5BEE,
+ 0x5ED6, 0x6599, 0x71CE, 0x7642, 0x77AD, 0x804A, 0x84FC, 0x907C, 0x9B27,
+ 0x9F8D, 0x58D8, 0x5A41, 0x5C62, 0x6A13, 0x6DDA, 0x6F0F, 0x763B, 0x7D2F,
+ 0x7E37, 0x851E, 0x8938, 0x93E4, 0x964B, 0x5289, 0x65D2, 0x67F3, 0x69B4,
+ 0x6D41, 0x6E9C, 0x700F, 0x7409, 0x7460, 0x7559, 0x7624, 0x786B, 0x8B2C,
+ 0x985E, 0x516D, 0x622E, 0x9678, 0x4F96, 0x502B, 0x5D19, 0x6DEA, 0x7DB8,
+ 0x8F2A, 0x5F8B, 0x6144, 0x6817, 0x9686, 0x52D2, 0x808B, 0x51DC, 0x51CC,
+ 0x695E, 0x7A1C, 0x7DBE, 0x83F1, 0x9675, 0x4FDA, 0x5229, 0x5398, 0x540F,
+ 0x550E, 0x5C65, 0x60A7, 0x674E, 0x68A8, 0x6D6C, 0x7281, 0x72F8, 0x7406,
+ 0x7483, 0x75E2, 0x7C6C, 0x7F79, 0x7FB8, 0x8389, 0x88CF, 0x88E1, 0x91CC,
+ 0x91D0, 0x96E2, 0x9BC9, 0x541D, 0x6F7E, 0x71D0, 0x7498, 0x85FA, 0x8EAA,
+ 0x96A3, 0x9C57, 0x9E9F, 0x6797, 0x6DCB, 0x7433, 0x81E8, 0x9716, 0x782C,
+ 0x7ACB, 0x7B20, 0x7C92, 0x6469, 0x746A, 0x75F2, 0x78BC, 0x78E8, 0x99AC,
+ 0x9B54, 0x9EBB, 0x5BDE, 0x5E55, 0x6F20, 0x819C, 0x83AB, 0x9088, 0x4E07,
+ 0x534D, 0x5A29, 0x5DD2, 0x5F4E, 0x6162, 0x633D, 0x6669, 0x66FC, 0x6EFF,
+ 0x6F2B, 0x7063, 0x779E, 0x842C, 0x8513, 0x883B, 0x8F13, 0x9945, 0x9C3B,
+ 0x551C, 0x62B9, 0x672B, 0x6CAB, 0x8309, 0x896A, 0x977A, 0x4EA1, 0x5984,
+ 0x5FD8, 0x5FD9, 0x671B, 0x7DB2, 0x7F54, 0x8292, 0x832B, 0x83BD, 0x8F1E,
+ 0x9099, 0x57CB, 0x59B9, 0x5A92, 0x5BD0, 0x6627, 0x679A, 0x6885, 0x6BCF,
+ 0x7164, 0x7F75, 0x8CB7, 0x8CE3, 0x9081, 0x9B45, 0x8108, 0x8C8A, 0x964C,
+ 0x9A40, 0x9EA5, 0x5B5F, 0x6C13, 0x731B, 0x76F2, 0x76DF, 0x840C, 0x51AA,
+ 0x8993, 0x514D, 0x5195, 0x52C9, 0x68C9, 0x6C94, 0x7704, 0x7720, 0x7DBF,
+ 0x7DEC, 0x9762, 0x9EB5, 0x6EC5, 0x8511, 0x51A5, 0x540D, 0x547D, 0x660E,
+ 0x669D, 0x6927, 0x6E9F, 0x76BF, 0x7791, 0x8317, 0x84C2, 0x879F, 0x9169,
+ 0x9298, 0x9CF4, 0x8882, 0x4FAE, 0x5192, 0x52DF, 0x59C6, 0x5E3D, 0x6155,
+ 0x6478, 0x6479, 0x66AE, 0x67D0, 0x6A21, 0x6BCD, 0x6BDB, 0x725F, 0x7261,
+ 0x7441, 0x7738, 0x77DB, 0x8017, 0x82BC, 0x8305, 0x8B00, 0x8B28, 0x8C8C,
+ 0x6728, 0x6C90, 0x7267, 0x76EE, 0x7766, 0x7A46, 0x9DA9, 0x6B7F, 0x6C92,
+ 0x5922, 0x6726, 0x8499, 0x536F, 0x5893, 0x5999, 0x5EDF, 0x63CF, 0x6634,
+ 0x6773, 0x6E3A, 0x732B, 0x7AD7, 0x82D7, 0x9328, 0x52D9, 0x5DEB, 0x61AE,
+ 0x61CB, 0x620A, 0x62C7, 0x64AB, 0x65E0, 0x6959, 0x6B66, 0x6BCB, 0x7121,
+ 0x73F7, 0x755D, 0x7E46, 0x821E, 0x8302, 0x856A, 0x8AA3, 0x8CBF, 0x9727,
+ 0x9D61, 0x58A8, 0x9ED8, 0x5011, 0x520E, 0x543B, 0x554F, 0x6587, 0x6C76,
+ 0x7D0A, 0x7D0B, 0x805E, 0x868A, 0x9580, 0x96EF, 0x52FF, 0x6C95, 0x7269,
+ 0x5473, 0x5A9A, 0x5C3E, 0x5D4B, 0x5F4C, 0x5FAE, 0x672A, 0x68B6, 0x6963,
+ 0x6E3C, 0x6E44, 0x7709, 0x7C73, 0x7F8E, 0x8587, 0x8B0E, 0x8FF7, 0x9761,
+ 0x9EF4, 0x5CB7, 0x60B6, 0x610D, 0x61AB, 0x654F, 0x65FB, 0x65FC, 0x6C11,
+ 0x6CEF, 0x739F, 0x73C9, 0x7DE1, 0x9594, 0x5BC6, 0x871C, 0x8B10, 0x525D,
+ 0x535A, 0x62CD, 0x640F, 0x64B2, 0x6734, 0x6A38, 0x6CCA, 0x73C0, 0x749E,
+ 0x7B94, 0x7C95, 0x7E1B, 0x818A, 0x8236, 0x8584, 0x8FEB, 0x96F9, 0x99C1,
+ 0x4F34, 0x534A, 0x53CD, 0x53DB, 0x62CC, 0x642C, 0x6500, 0x6591, 0x69C3,
+ 0x6CEE, 0x6F58, 0x73ED, 0x7554, 0x7622, 0x76E4, 0x76FC, 0x78D0, 0x78FB,
+ 0x792C, 0x7D46, 0x822C, 0x87E0, 0x8FD4, 0x9812, 0x98EF, 0x52C3, 0x62D4,
+ 0x64A5, 0x6E24, 0x6F51, 0x767C, 0x8DCB, 0x91B1, 0x9262, 0x9AEE, 0x9B43,
+ 0x5023, 0x508D, 0x574A, 0x59A8, 0x5C28, 0x5E47, 0x5F77, 0x623F, 0x653E,
+ 0x65B9, 0x65C1, 0x6609, 0x678B, 0x699C, 0x6EC2, 0x78C5, 0x7D21, 0x80AA,
+ 0x8180, 0x822B, 0x82B3, 0x84A1, 0x868C, 0x8A2A, 0x8B17, 0x90A6, 0x9632,
+ 0x9F90, 0x500D, 0x4FF3, 0x57F9, 0x5F98, 0x62DC, 0x6392, 0x676F, 0x6E43,
+ 0x7119, 0x76C3, 0x80CC, 0x80DA, 0x88F4, 0x88F5, 0x8919, 0x8CE0, 0x8F29,
+ 0x914D, 0x966A, 0x4F2F, 0x4F70, 0x5E1B, 0x67CF, 0x6822, 0x767D, 0x767E,
+ 0x9B44, 0x5E61, 0x6A0A, 0x7169, 0x71D4, 0x756A, 0x7E41, 0x8543, 0x85E9,
+ 0x98DC, 0x4F10, 0x7B4F, 0x7F70, 0x95A5, 0x51E1, 0x5E06, 0x68B5, 0x6C3E,
+ 0x6C4E, 0x6CDB, 0x72AF, 0x7BC4, 0x8303, 0x6CD5, 0x743A, 0x50FB, 0x5288,
+ 0x58C1, 0x64D8, 0x6A97, 0x74A7, 0x7656, 0x78A7, 0x8617, 0x95E2, 0x9739,
+ 0x535E, 0x5F01, 0x8B8A, 0x8FA8, 0x8FAF, 0x908A, 0x5225, 0x77A5, 0x9C49,
+ 0x9F08, 0x4E19, 0x5002, 0x5175, 0x5C5B, 0x5E77, 0x661E, 0x663A, 0x67C4,
+ 0x68C5, 0x70B3, 0x7501, 0x75C5, 0x79C9, 0x7ADD, 0x8F27, 0x9920, 0x9A08,
+ 0x4FDD, 0x5821, 0x5831, 0x5BF6, 0x666E, 0x6B65, 0x6D11, 0x6E7A, 0x6F7D,
+ 0x73E4, 0x752B, 0x83E9, 0x88DC, 0x8913, 0x8B5C, 0x8F14, 0x4F0F, 0x50D5,
+ 0x5310, 0x535C, 0x5B93, 0x5FA9, 0x670D, 0x798F, 0x8179, 0x832F, 0x8514,
+ 0x8907, 0x8986, 0x8F39, 0x8F3B, 0x99A5, 0x9C12, 0x672C, 0x4E76, 0x4FF8,
+ 0x5949, 0x5C01, 0x5CEF, 0x5CF0, 0x6367, 0x68D2, 0x70FD, 0x71A2, 0x742B,
+ 0x7E2B, 0x84EC, 0x8702, 0x9022, 0x92D2, 0x9CF3, 0x4E0D, 0x4ED8, 0x4FEF,
+ 0x5085, 0x5256, 0x526F, 0x5426, 0x5490, 0x57E0, 0x592B, 0x5A66, 0x5B5A,
+ 0x5B75, 0x5BCC, 0x5E9C, 0x6276, 0x6577, 0x65A7, 0x6D6E, 0x6EA5, 0x7236,
+ 0x7B26, 0x7C3F, 0x7F36, 0x8150, 0x8151, 0x819A, 0x8240, 0x8299, 0x83A9,
+ 0x8A03, 0x8CA0, 0x8CE6, 0x8CFB, 0x8D74, 0x8DBA, 0x90E8, 0x91DC, 0x961C,
+ 0x9644, 0x99D9, 0x9CE7, 0x5317, 0x5206, 0x5429, 0x5674, 0x58B3, 0x5954,
+ 0x596E, 0x5FFF, 0x61A4, 0x626E, 0x6610, 0x6C7E, 0x711A, 0x76C6, 0x7C89,
+ 0x7CDE, 0x7D1B, 0x82AC, 0x8CC1, 0x96F0, 0x4F5B, 0x5F17, 0x5F7F, 0x62C2,
+ 0x5D29, 0x670B, 0x68DA, 0x787C, 0x7E43, 0x9D6C, 0x4E15, 0x5099, 0x5315,
+ 0x532A, 0x5351, 0x5983, 0x5A62, 0x5E87, 0x60B2, 0x618A, 0x6249, 0x6279,
+ 0x6590, 0x6787, 0x69A7, 0x6BD4, 0x6BD6, 0x6BD7, 0x6BD8, 0x6CB8, 0x7435,
+ 0x75FA, 0x7812, 0x7891, 0x79D5, 0x79D8, 0x7C83, 0x7DCB, 0x7FE1, 0x80A5,
+ 0x813E, 0x81C2, 0x83F2, 0x871A, 0x88E8, 0x8AB9, 0x8B6C, 0x8CBB, 0x9119,
+ 0x975E, 0x98DB, 0x9F3B, 0x56AC, 0x5B2A, 0x5F6C, 0x658C, 0x6AB3, 0x6BAF,
+ 0x6D5C, 0x6FF1, 0x7015, 0x725D, 0x73AD, 0x8CA7, 0x8CD3, 0x983B, 0x6191,
+ 0x6C37, 0x8058, 0x9A01, 0x4E4D, 0x4E8B, 0x4E9B, 0x4ED5, 0x4F3A, 0x4F3C,
+ 0x4F7F, 0x4FDF, 0x50FF, 0x53F2, 0x53F8, 0x5506, 0x55E3, 0x56DB, 0x58EB,
+ 0x5962, 0x5A11, 0x5BEB, 0x5BFA, 0x5C04, 0x5DF3, 0x5E2B, 0x5F99, 0x601D,
+ 0x6368, 0x659C, 0x65AF, 0x67F6, 0x67FB, 0x68AD, 0x6B7B, 0x6C99, 0x6CD7,
+ 0x6E23, 0x7009, 0x7345, 0x7802, 0x793E, 0x7940, 0x7960, 0x79C1, 0x7BE9,
+ 0x7D17, 0x7D72, 0x8086, 0x820D, 0x838E, 0x84D1, 0x86C7, 0x88DF, 0x8A50,
+ 0x8A5E, 0x8B1D, 0x8CDC, 0x8D66, 0x8FAD, 0x90AA, 0x98FC, 0x99DF, 0x9E9D,
+ 0x524A, 0x6714, 0x5098, 0x522A, 0x5C71, 0x6563, 0x6C55, 0x73CA, 0x7523,
+ 0x759D, 0x7B97, 0x849C, 0x9178, 0x9730, 0x4E77, 0x6492, 0x6BBA, 0x715E,
+ 0x85A9, 0x4E09, 0x6749, 0x68EE, 0x6E17, 0x829F, 0x8518, 0x886B, 0x63F7,
+ 0x6F81, 0x9212, 0x98AF, 0x4E0A, 0x50B7, 0x50CF, 0x511F, 0x5546, 0x55AA,
+ 0x5617, 0x5B40, 0x5C19, 0x5CE0, 0x5E38, 0x5E8A, 0x5EA0, 0x5EC2, 0x60F3,
+ 0x6851, 0x6A61, 0x6E58, 0x723D, 0x7240, 0x72C0, 0x76F8, 0x7965, 0x7BB1,
+ 0x7FD4, 0x88F3, 0x89F4, 0x8A73, 0x8C61, 0x8CDE, 0x971C, 0x585E, 0x74BD,
+ 0x8CFD, 0x55C7, 0x7A61, 0x7D22, 0x8272, 0x7272, 0x751F, 0x7525, 0x7B19,
+ 0x5885, 0x58FB, 0x5DBC, 0x5E8F, 0x5EB6, 0x5F90, 0x6055, 0x6292, 0x637F,
+ 0x654D, 0x6691, 0x66D9, 0x66F8, 0x6816, 0x68F2, 0x7280, 0x745E, 0x7B6E,
+ 0x7D6E, 0x7DD6, 0x7F72, 0x80E5, 0x8212, 0x85AF, 0x897F, 0x8A93, 0x901D,
+ 0x92E4, 0x9ECD, 0x9F20, 0x5915, 0x596D, 0x5E2D, 0x60DC, 0x6614, 0x6673,
+ 0x6790, 0x6C50, 0x6DC5, 0x6F5F, 0x77F3, 0x78A9, 0x84C6, 0x91CB, 0x932B,
+ 0x4ED9, 0x50CA, 0x5148, 0x5584, 0x5B0B, 0x5BA3, 0x6247, 0x657E, 0x65CB,
+ 0x6E32, 0x717D, 0x7401, 0x7444, 0x7487, 0x74BF, 0x766C, 0x79AA, 0x7DDA,
+ 0x7E55, 0x7FA8, 0x817A, 0x81B3, 0x8239, 0x861A, 0x87EC, 0x8A75, 0x8DE3,
+ 0x9078, 0x9291, 0x9425, 0x994D, 0x9BAE, 0x5368, 0x5C51, 0x6954, 0x6CC4,
+ 0x6D29, 0x6E2B, 0x820C, 0x859B, 0x893B, 0x8A2D, 0x8AAA, 0x96EA, 0x9F67,
+ 0x5261, 0x66B9, 0x6BB2, 0x7E96, 0x87FE, 0x8D0D, 0x9583, 0x965D, 0x651D,
+ 0x6D89, 0x71EE, 0x57CE, 0x59D3, 0x5BAC, 0x6027, 0x60FA, 0x6210, 0x661F,
+ 0x665F, 0x7329, 0x73F9, 0x76DB, 0x7701, 0x7B6C, 0x8056, 0x8072, 0x8165,
+ 0x8AA0, 0x9192, 0x4E16, 0x52E2, 0x6B72, 0x6D17, 0x7A05, 0x7B39, 0x7D30,
+ 0x8CB0, 0x53EC, 0x562F, 0x5851, 0x5BB5, 0x5C0F, 0x5C11, 0x5DE2, 0x6240,
+ 0x6383, 0x6414, 0x662D, 0x68B3, 0x6CBC, 0x6D88, 0x6EAF, 0x701F, 0x70A4,
+ 0x71D2, 0x7526, 0x758F, 0x758E, 0x7619, 0x7B11, 0x7BE0, 0x7C2B, 0x7D20,
+ 0x7D39, 0x852C, 0x856D, 0x8607, 0x8A34, 0x900D, 0x9061, 0x90B5, 0x92B7,
+ 0x97F6, 0x9A37, 0x4FD7, 0x5C6C, 0x675F, 0x6D91, 0x7C9F, 0x7E8C, 0x8B16,
+ 0x8D16, 0x901F, 0x5B6B, 0x5DFD, 0x640D, 0x84C0, 0x905C, 0x98E1, 0x7387,
+ 0x5B8B, 0x609A, 0x677E, 0x6DDE, 0x8A1F, 0x8AA6, 0x9001, 0x980C, 0x5237,
+ 0x7051, 0x788E, 0x9396, 0x8870, 0x91D7, 0x4FEE, 0x53D7, 0x55FD, 0x56DA,
+ 0x5782, 0x58FD, 0x5AC2, 0x5B88, 0x5CAB, 0x5CC0, 0x5E25, 0x6101, 0x620D,
+ 0x624B, 0x6388, 0x641C, 0x6536, 0x6578, 0x6A39, 0x6B8A, 0x6C34, 0x6D19,
+ 0x6F31, 0x71E7, 0x72E9, 0x7378, 0x7407, 0x74B2, 0x7626, 0x7761, 0x79C0,
+ 0x7A57, 0x7AEA, 0x7CB9, 0x7D8F, 0x7DAC, 0x7E61, 0x7F9E, 0x8129, 0x8331,
+ 0x8490, 0x84DA, 0x85EA, 0x8896, 0x8AB0, 0x8B90, 0x8F38, 0x9042, 0x9083,
+ 0x916C, 0x9296, 0x92B9, 0x968B, 0x96A7, 0x96A8, 0x96D6, 0x9700, 0x9808,
+ 0x9996, 0x9AD3, 0x9B1A, 0x53D4, 0x587E, 0x5919, 0x5B70, 0x5BBF, 0x6DD1,
+ 0x6F5A, 0x719F, 0x7421, 0x74B9, 0x8085, 0x83FD, 0x5DE1, 0x5F87, 0x5FAA,
+ 0x6042, 0x65EC, 0x6812, 0x696F, 0x6A53, 0x6B89, 0x6D35, 0x6DF3, 0x73E3,
+ 0x76FE, 0x77AC, 0x7B4D, 0x7D14, 0x8123, 0x821C, 0x8340, 0x84F4, 0x8563,
+ 0x8A62, 0x8AC4, 0x9187, 0x931E, 0x9806, 0x99B4, 0x620C, 0x8853, 0x8FF0,
+ 0x9265, 0x5D07, 0x5D27, 0x5D69, 0x745F, 0x819D, 0x8768, 0x6FD5, 0x62FE,
+ 0x7FD2, 0x8936, 0x8972, 0x4E1E, 0x4E58, 0x50E7, 0x52DD, 0x5347, 0x627F,
+ 0x6607, 0x7E69, 0x8805, 0x965E, 0x4F8D, 0x5319, 0x5636, 0x59CB, 0x5AA4,
+ 0x5C38, 0x5C4E, 0x5C4D, 0x5E02, 0x5F11, 0x6043, 0x65BD, 0x662F, 0x6642,
+ 0x67BE, 0x67F4, 0x731C, 0x77E2, 0x793A, 0x7FC5, 0x8494, 0x84CD, 0x8996,
+ 0x8A66, 0x8A69, 0x8AE1, 0x8C55, 0x8C7A, 0x57F4, 0x5BD4, 0x5F0F, 0x606F,
+ 0x62ED, 0x690D, 0x6B96, 0x6E5C, 0x7184, 0x7BD2, 0x8755, 0x8B58, 0x8EFE,
+ 0x98DF, 0x98FE, 0x4F38, 0x4F81, 0x4FE1, 0x547B, 0x5A20, 0x5BB8, 0x613C,
+ 0x65B0, 0x6668, 0x71FC, 0x7533, 0x795E, 0x7D33, 0x814E, 0x81E3, 0x8398,
+ 0x85AA, 0x85CE, 0x8703, 0x8A0A, 0x8EAB, 0x8F9B, 0x8FC5, 0x5931, 0x5BA4,
+ 0x5BE6, 0x6089, 0x5BE9, 0x5C0B, 0x5FC3, 0x6C81, 0x6DF1, 0x700B, 0x751A,
+ 0x82AF, 0x8AF6, 0x4EC0, 0x5341, 0x96D9, 0x6C0F, 0x4E9E, 0x4FC4, 0x5152,
+ 0x555E, 0x5A25, 0x5CE8, 0x6211, 0x7259, 0x82BD, 0x83AA, 0x86FE, 0x8859,
+ 0x8A1D, 0x963F, 0x96C5, 0x9913, 0x9D09, 0x9D5D, 0x580A, 0x5CB3, 0x5DBD,
+ 0x5E44, 0x60E1, 0x6115, 0x63E1, 0x6A02, 0x6E25, 0x9102, 0x9354, 0x984E,
+ 0x9C10, 0x9F77, 0x5B89, 0x5CB8, 0x6309, 0x664F, 0x6848, 0x773C, 0x96C1,
+ 0x978D, 0x9854, 0x9B9F, 0x65A1, 0x8B01, 0x8ECB, 0x95BC, 0x5535, 0x5CA9,
+ 0x5DD6, 0x5EB5, 0x6697, 0x764C, 0x83F4, 0x95C7, 0x58D3, 0x62BC, 0x72CE,
+ 0x9D28, 0x4EF0, 0x592E, 0x600F, 0x663B, 0x6B83, 0x79E7, 0x9D26, 0x5393,
+ 0x54C0, 0x57C3, 0x5D16, 0x611B, 0x66D6, 0x6DAF, 0x788D, 0x827E, 0x9698,
+ 0x9744, 0x5384, 0x627C, 0x6396, 0x6DB2, 0x7E0A, 0x814B, 0x984D, 0x6AFB,
+ 0x7F4C, 0x9DAF, 0x9E1A, 0x4E5F, 0x503B, 0x51B6, 0x591C, 0x60F9, 0x63F6,
+ 0x6930, 0x723A, 0x8036, 0x91CE, 0x5F31, 0x7D04, 0x82E5, 0x846F, 0x84BB,
+ 0x85E5, 0x8E8D, 0x4F6F, 0x58E4, 0x5B43, 0x6059, 0x63DA, 0x6518, 0x656D,
+ 0x6698, 0x694A, 0x6A23, 0x6D0B, 0x7001, 0x716C, 0x75D2, 0x760D, 0x79B3,
+ 0x7A70, 0x7F8A, 0x8944, 0x8B93, 0x91C0, 0x967D, 0x990A, 0x5704, 0x5FA1,
+ 0x65BC, 0x6F01, 0x7600, 0x79A6, 0x8A9E, 0x99AD, 0x9B5A, 0x9F6C, 0x5104,
+ 0x61B6, 0x6291, 0x6A8D, 0x81C6, 0x5043, 0x5830, 0x5F66, 0x7109, 0x8A00,
+ 0x8AFA, 0x5B7C, 0x8616, 0x4FFA, 0x513C, 0x56B4, 0x5944, 0x63A9, 0x6DF9,
+ 0x5DAA, 0x696D, 0x5186, 0x4E88, 0x4F59, 0x5982, 0x6B5F, 0x6C5D, 0x74B5,
+ 0x7916, 0x8207, 0x8245, 0x8339, 0x8F3F, 0x8F5D, 0x9918, 0x4EA6, 0x57DF,
+ 0x5F79, 0x6613, 0x75AB, 0x7E79, 0x8B6F, 0x9006, 0x9A5B, 0x56A5, 0x5827,
+ 0x59F8, 0x5A1F, 0x5BB4, 0x5EF6, 0x6350, 0x633B, 0x693D, 0x6C87, 0x6CBF,
+ 0x6D8E, 0x6D93, 0x6DF5, 0x6F14, 0x70DF, 0x7136, 0x7159, 0x71C3, 0x71D5,
+ 0x784F, 0x786F, 0x7B75, 0x7DE3, 0x7E2F, 0x884D, 0x8EDF, 0x925B, 0x9CF6,
+ 0x6085, 0x6D85, 0x71B1, 0x95B1, 0x53AD, 0x67D3, 0x708E, 0x7130, 0x7430,
+ 0x8276, 0x82D2, 0x95BB, 0x9AE5, 0x9E7D, 0x66C4, 0x71C1, 0x8449, 0x584B,
+ 0x5DB8, 0x5F71, 0x6620, 0x668E, 0x6979, 0x69AE, 0x6C38, 0x6CF3, 0x6E36,
+ 0x6F41, 0x6FDA, 0x701B, 0x702F, 0x7150, 0x71DF, 0x7370, 0x745B, 0x74D4,
+ 0x76C8, 0x7A4E, 0x7E93, 0x82F1, 0x8A60, 0x8FCE, 0x9348, 0x9719, 0x4E42,
+ 0x502A, 0x5208, 0x53E1, 0x66F3, 0x6C6D, 0x6FCA, 0x730A, 0x777F, 0x7A62,
+ 0x82AE, 0x85DD, 0x8602, 0x88D4, 0x8A63, 0x8B7D, 0x8C6B, 0x92B3, 0x9713,
+ 0x9810, 0x4E94, 0x4F0D, 0x4FC9, 0x50B2, 0x5348, 0x543E, 0x5433, 0x55DA,
+ 0x5862, 0x58BA, 0x5967, 0x5A1B, 0x5BE4, 0x609F, 0x61CA, 0x6556, 0x65FF,
+ 0x6664, 0x68A7, 0x6C5A, 0x6FB3, 0x70CF, 0x71AC, 0x7352, 0x7B7D, 0x8708,
+ 0x8AA4, 0x9C32, 0x9F07, 0x5C4B, 0x6C83, 0x7344, 0x7389, 0x923A, 0x6EAB,
+ 0x7465, 0x761F, 0x7A69, 0x7E15, 0x860A, 0x5140, 0x58C5, 0x64C1, 0x74EE,
+ 0x7515, 0x7670, 0x7FC1, 0x9095, 0x96CD, 0x9954, 0x6E26, 0x74E6, 0x7AA9,
+ 0x7AAA, 0x81E5, 0x86D9, 0x8778, 0x8A1B, 0x5A49, 0x5B8C, 0x5B9B, 0x68A1,
+ 0x6900, 0x6D63, 0x73A9, 0x7413, 0x742C, 0x7897, 0x7DE9, 0x7FEB, 0x8118,
+ 0x8155, 0x839E, 0x8C4C, 0x962E, 0x9811, 0x66F0, 0x5F80, 0x65FA, 0x6789,
+ 0x6C6A, 0x738B, 0x502D, 0x5A03, 0x6B6A, 0x77EE, 0x5916, 0x5D6C, 0x5DCD,
+ 0x7325, 0x754F, 0x50E5, 0x51F9, 0x582F, 0x592D, 0x5996, 0x59DA, 0x5BE5,
+ 0x5DA2, 0x62D7, 0x6416, 0x6493, 0x64FE, 0x66DC, 0x6A48, 0x71FF, 0x7464,
+ 0x7A88, 0x7AAF, 0x7E47, 0x7E5E, 0x8000, 0x8170, 0x87EF, 0x8981, 0x8B20,
+ 0x9059, 0x9080, 0x9952, 0x617E, 0x6B32, 0x6D74, 0x7E1F, 0x8925, 0x8FB1,
+ 0x4FD1, 0x50AD, 0x5197, 0x52C7, 0x57C7, 0x5889, 0x5BB9, 0x5EB8, 0x6142,
+ 0x6995, 0x6D8C, 0x6E67, 0x6EB6, 0x7194, 0x7462, 0x7528, 0x752C, 0x8073,
+ 0x8338, 0x84C9, 0x8E0A, 0x9394, 0x93DE, 0x4E8E, 0x4F51, 0x5076, 0x512A,
+ 0x53C8, 0x53CB, 0x53F3, 0x5B87, 0x5BD3, 0x5C24, 0x611A, 0x6182, 0x65F4,
+ 0x725B, 0x7397, 0x7440, 0x76C2, 0x7950, 0x7991, 0x79B9, 0x7D06, 0x7FBD,
+ 0x828B, 0x85D5, 0x865E, 0x8FC2, 0x9047, 0x90F5, 0x91EA, 0x9685, 0x96E8,
+ 0x96E9, 0x52D6, 0x5F67, 0x65ED, 0x6631, 0x682F, 0x715C, 0x7A36, 0x90C1,
+ 0x980A, 0x4E91, 0x6A52, 0x6B9E, 0x6F90, 0x7189, 0x8018, 0x82B8, 0x8553,
+ 0x904B, 0x9695, 0x96F2, 0x97FB, 0x851A, 0x9B31, 0x4E90, 0x718A, 0x96C4,
+ 0x5143, 0x539F, 0x54E1, 0x5713, 0x5712, 0x57A3, 0x5A9B, 0x5AC4, 0x5BC3,
+ 0x6028, 0x613F, 0x63F4, 0x6C85, 0x6D39, 0x6E72, 0x6E90, 0x7230, 0x733F,
+ 0x7457, 0x82D1, 0x8881, 0x8F45, 0x9060, 0x9662, 0x9858, 0x9D1B, 0x6708,
+ 0x8D8A, 0x925E, 0x4F4D, 0x5049, 0x50DE, 0x5371, 0x570D, 0x59D4, 0x5A01,
+ 0x5C09, 0x6170, 0x6690, 0x6E2D, 0x7232, 0x744B, 0x7DEF, 0x80C3, 0x840E,
+ 0x8466, 0x853F, 0x875F, 0x885B, 0x8918, 0x8B02, 0x9055, 0x97CB, 0x9B4F,
+ 0x4E73, 0x4F91, 0x5112, 0x516A, 0x552F, 0x55A9, 0x5B7A, 0x5BA5, 0x5E7C,
+ 0x5E7D, 0x5EBE, 0x60A0, 0x60DF, 0x6108, 0x6109, 0x63C4, 0x6538, 0x6709,
+ 0x67D4, 0x67DA, 0x6961, 0x6962, 0x6CB9, 0x6D27, 0x6E38, 0x6FE1, 0x7336,
+ 0x7337, 0x745C, 0x7531, 0x7652, 0x7DAD, 0x81FE, 0x8438, 0x88D5, 0x8A98,
+ 0x8ADB, 0x8AED, 0x8E30, 0x8E42, 0x904A, 0x903E, 0x907A, 0x9149, 0x91C9,
+ 0x936E, 0x5809, 0x6BD3, 0x8089, 0x80B2, 0x5141, 0x596B, 0x5C39, 0x6F64,
+ 0x73A7, 0x80E4, 0x8D07, 0x9217, 0x958F, 0x807F, 0x620E, 0x701C, 0x7D68,
+ 0x878D, 0x57A0, 0x6069, 0x6147, 0x6BB7, 0x8ABE, 0x9280, 0x96B1, 0x4E59,
+ 0x541F, 0x6DEB, 0x852D, 0x9670, 0x97F3, 0x98EE, 0x63D6, 0x6CE3, 0x9091,
+ 0x51DD, 0x61C9, 0x81BA, 0x9DF9, 0x4F9D, 0x501A, 0x5100, 0x5B9C, 0x610F,
+ 0x61FF, 0x64EC, 0x6905, 0x6BC5, 0x7591, 0x77E3, 0x7FA9, 0x8264, 0x858F,
+ 0x87FB, 0x8863, 0x8ABC, 0x8B70, 0x91AB, 0x4E8C, 0x4EE5, 0x4F0A, 0x5937,
+ 0x59E8, 0x5DF2, 0x5F1B, 0x5F5B, 0x6021, 0x723E, 0x73E5, 0x7570, 0x75CD,
+ 0x79FB, 0x800C, 0x8033, 0x8084, 0x82E1, 0x8351, 0x8CBD, 0x8CB3, 0x9087,
+ 0x98F4, 0x990C, 0x7037, 0x76CA, 0x7FCA, 0x7FCC, 0x7FFC, 0x8B1A, 0x4EBA,
+ 0x4EC1, 0x5203, 0x5370, 0x54BD, 0x56E0, 0x59FB, 0x5BC5, 0x5F15, 0x5FCD,
+ 0x6E6E, 0x7D6A, 0x8335, 0x8693, 0x8A8D, 0x976D, 0x9777, 0x4E00, 0x4F5A,
+ 0x4F7E, 0x58F9, 0x65E5, 0x6EA2, 0x9038, 0x93B0, 0x99B9, 0x4EFB, 0x58EC,
+ 0x598A, 0x59D9, 0x6041, 0x7A14, 0x834F, 0x8CC3, 0x5165, 0x5344, 0x4ECD,
+ 0x5269, 0x5B55, 0x82BF, 0x4ED4, 0x523A, 0x54A8, 0x59C9, 0x59FF, 0x5B50,
+ 0x5B57, 0x5B5C, 0x6063, 0x6148, 0x6ECB, 0x7099, 0x716E, 0x7386, 0x74F7,
+ 0x75B5, 0x78C1, 0x7D2B, 0x8005, 0x81EA, 0x8328, 0x8517, 0x85C9, 0x8AEE,
+ 0x8CC7, 0x96CC, 0x4F5C, 0x52FA, 0x56BC, 0x65AB, 0x6628, 0x707C, 0x70B8,
+ 0x7235, 0x7DBD, 0x828D, 0x914C, 0x96C0, 0x9D72, 0x5B71, 0x68E7, 0x6B98,
+ 0x6F7A, 0x76DE, 0x5C91, 0x66AB, 0x6F5B, 0x7BB4, 0x7C2A, 0x8836, 0x96DC,
+ 0x4E08, 0x4ED7, 0x5320, 0x5834, 0x58BB, 0x58EF, 0x596C, 0x5C07, 0x5E33,
+ 0x5E84, 0x5F35, 0x638C, 0x66B2, 0x6756, 0x6A1F, 0x6AA3, 0x6B0C, 0x6F3F,
+ 0x7246, 0x7350, 0x748B, 0x7AE0, 0x7CA7, 0x8178, 0x81DF, 0x81E7, 0x838A,
+ 0x846C, 0x8523, 0x8594, 0x85CF, 0x88DD, 0x8D13, 0x91AC, 0x9577, 0x969C,
+ 0x518D, 0x54C9, 0x5728, 0x5BB0, 0x624D, 0x6750, 0x683D, 0x6893, 0x6E3D,
+ 0x6ED3, 0x707D, 0x7E21, 0x88C1, 0x8CA1, 0x8F09, 0x9F4B, 0x9F4E, 0x722D,
+ 0x7B8F, 0x8ACD, 0x931A, 0x4F47, 0x4F4E, 0x5132, 0x5480, 0x59D0, 0x5E95,
+ 0x62B5, 0x6775, 0x696E, 0x6A17, 0x6CAE, 0x6E1A, 0x72D9, 0x732A, 0x75BD,
+ 0x7BB8, 0x7D35, 0x82E7, 0x83F9, 0x8457, 0x85F7, 0x8A5B, 0x8CAF, 0x8E87,
+ 0x9019, 0x90B8, 0x96CE, 0x9F5F, 0x52E3, 0x540A, 0x5AE1, 0x5BC2, 0x6458,
+ 0x6575, 0x6EF4, 0x72C4, 0x7684, 0x7A4D, 0x7B1B, 0x7C4D, 0x7E3E, 0x7FDF,
+ 0x837B, 0x8B2B, 0x8CCA, 0x8D64, 0x8DE1, 0x8E5F, 0x8FEA, 0x8FF9, 0x9069,
+ 0x93D1, 0x4F43, 0x4F7A, 0x50B3, 0x5168, 0x5178, 0x524D, 0x526A, 0x5861,
+ 0x587C, 0x5960, 0x5C08, 0x5C55, 0x5EDB, 0x609B, 0x6230, 0x6813, 0x6BBF,
+ 0x6C08, 0x6FB1, 0x714E, 0x7420, 0x7530, 0x7538, 0x7551, 0x7672, 0x7B4C,
+ 0x7B8B, 0x7BAD, 0x7BC6, 0x7E8F, 0x8A6E, 0x8F3E, 0x8F49, 0x923F, 0x9293,
+ 0x9322, 0x942B, 0x96FB, 0x985A, 0x986B, 0x991E, 0x5207, 0x622A, 0x6298,
+ 0x6D59, 0x7664, 0x7ACA, 0x7BC0, 0x7D76, 0x5360, 0x5CBE, 0x5E97, 0x6F38,
+ 0x70B9, 0x7C98, 0x9711, 0x9B8E, 0x9EDE, 0x63A5, 0x647A, 0x8776, 0x4E01,
+ 0x4E95, 0x4EAD, 0x505C, 0x5075, 0x5448, 0x59C3, 0x5B9A, 0x5E40, 0x5EAD,
+ 0x5EF7, 0x5F81, 0x60C5, 0x633A, 0x653F, 0x6574, 0x65CC, 0x6676, 0x6678,
+ 0x67FE, 0x6968, 0x6A89, 0x6B63, 0x6C40, 0x6DC0, 0x6DE8, 0x6E1F, 0x6E5E,
+ 0x701E, 0x70A1, 0x738E, 0x73FD, 0x753A, 0x775B, 0x7887, 0x798E, 0x7A0B,
+ 0x7A7D, 0x7CBE, 0x7D8E, 0x8247, 0x8A02, 0x8AEA, 0x8C9E, 0x912D, 0x914A,
+ 0x91D8, 0x9266, 0x92CC, 0x9320, 0x9706, 0x9756, 0x975C, 0x9802, 0x9F0E,
+ 0x5236, 0x5291, 0x557C, 0x5824, 0x5E1D, 0x5F1F, 0x608C, 0x63D0, 0x68AF,
+ 0x6FDF, 0x796D, 0x7B2C, 0x81CD, 0x85BA, 0x88FD, 0x8AF8, 0x8E44, 0x918D,
+ 0x9664, 0x969B, 0x973D, 0x984C, 0x9F4A, 0x4FCE, 0x5146, 0x51CB, 0x52A9,
+ 0x5632, 0x5F14, 0x5F6B, 0x63AA, 0x64CD, 0x65E9, 0x6641, 0x66FA, 0x66F9,
+ 0x671D, 0x689D, 0x68D7, 0x69FD, 0x6F15, 0x6F6E, 0x7167, 0x71E5, 0x722A,
+ 0x74AA, 0x773A, 0x7956, 0x795A, 0x79DF, 0x7A20, 0x7A95, 0x7C97, 0x7CDF,
+ 0x7D44, 0x7E70, 0x8087, 0x85FB, 0x86A4, 0x8A54, 0x8ABF, 0x8D99, 0x8E81,
+ 0x9020, 0x906D, 0x91E3, 0x963B, 0x96D5, 0x9CE5, 0x65CF, 0x7C07, 0x8DB3,
+ 0x93C3, 0x5B58, 0x5C0A, 0x5352, 0x62D9, 0x731D, 0x5027, 0x5B97, 0x5F9E,
+ 0x60B0, 0x616B, 0x68D5, 0x6DD9, 0x742E, 0x7A2E, 0x7D42, 0x7D9C, 0x7E31,
+ 0x816B, 0x8E2A, 0x8E35, 0x937E, 0x9418, 0x4F50, 0x5750, 0x5DE6, 0x5EA7,
+ 0x632B, 0x7F6A, 0x4E3B, 0x4F4F, 0x4F8F, 0x505A, 0x59DD, 0x80C4, 0x546A,
+ 0x5468, 0x55FE, 0x594F, 0x5B99, 0x5DDE, 0x5EDA, 0x665D, 0x6731, 0x67F1,
+ 0x682A, 0x6CE8, 0x6D32, 0x6E4A, 0x6F8D, 0x70B7, 0x73E0, 0x7587, 0x7C4C,
+ 0x7D02, 0x7D2C, 0x7DA2, 0x821F, 0x86DB, 0x8A3B, 0x8A85, 0x8D70, 0x8E8A,
+ 0x8F33, 0x9031, 0x914E, 0x9152, 0x9444, 0x99D0, 0x7AF9, 0x7CA5, 0x4FCA,
+ 0x5101, 0x51C6, 0x57C8, 0x5BEF, 0x5CFB, 0x6659, 0x6A3D, 0x6D5A, 0x6E96,
+ 0x6FEC, 0x710C, 0x756F, 0x7AE3, 0x8822, 0x9021, 0x9075, 0x96CB, 0x99FF,
+ 0x8301, 0x4E2D, 0x4EF2, 0x8846, 0x91CD, 0x537D, 0x6ADB, 0x696B, 0x6C41,
+ 0x847A, 0x589E, 0x618E, 0x66FE, 0x62EF, 0x70DD, 0x7511, 0x75C7, 0x7E52,
+ 0x84B8, 0x8B49, 0x8D08, 0x4E4B, 0x53EA, 0x54AB, 0x5730, 0x5740, 0x5FD7,
+ 0x6301, 0x6307, 0x646F, 0x652F, 0x65E8, 0x667A, 0x679D, 0x67B3, 0x6B62,
+ 0x6C60, 0x6C9A, 0x6F2C, 0x77E5, 0x7825, 0x7949, 0x7957, 0x7D19, 0x80A2,
+ 0x8102, 0x81F3, 0x829D, 0x82B7, 0x8718, 0x8A8C, 0x8D04, 0x8DBE, 0x9072,
+ 0x76F4, 0x7A19, 0x7A37, 0x7E54, 0x8077, 0x5507, 0x55D4, 0x5875, 0x632F,
+ 0x6422, 0x6649, 0x664B, 0x686D, 0x699B, 0x6B84, 0x6D25, 0x6EB1, 0x73CD,
+ 0x7468, 0x74A1, 0x755B, 0x75B9, 0x76E1, 0x771E, 0x778B, 0x79E6, 0x7E09,
+ 0x7E1D, 0x81FB, 0x852F, 0x8897, 0x8A3A, 0x8CD1, 0x8EEB, 0x8FB0, 0x9032,
+ 0x93AD, 0x9663, 0x9673, 0x9707, 0x4F84, 0x53F1, 0x59EA, 0x5AC9, 0x5E19,
+ 0x684E, 0x74C6, 0x75BE, 0x79E9, 0x7A92, 0x81A3, 0x86ED, 0x8CEA, 0x8DCC,
+ 0x8FED, 0x659F, 0x6715, 0x57F7, 0x6F57, 0x7DDD, 0x8F2F, 0x93F6, 0x96C6,
+ 0x5FB5, 0x61F2, 0x6F84, 0x4E14, 0x4F98, 0x501F, 0x53C9, 0x55DF, 0x5D6F,
+ 0x5DEE, 0x6B21, 0x6B64, 0x78CB, 0x7B9A, 0x8E49, 0x8ECA, 0x906E, 0x6349,
+ 0x643E, 0x7740, 0x7A84, 0x932F, 0x947F, 0x9F6A, 0x64B0, 0x6FAF, 0x71E6,
+ 0x74A8, 0x74DA, 0x7AC4, 0x7C12, 0x7E82, 0x7CB2, 0x7E98, 0x8B9A, 0x8D0A,
+ 0x947D, 0x9910, 0x994C, 0x5239, 0x5BDF, 0x64E6, 0x672D, 0x7D2E, 0x50ED,
+ 0x53C3, 0x5879, 0x6158, 0x6159, 0x61FA, 0x65AC, 0x7AD9, 0x8B92, 0x8B96,
+ 0x5009, 0x5021, 0x5275, 0x5531, 0x5A3C, 0x5EE0, 0x5F70, 0x6134, 0x655E,
+ 0x660C, 0x6636, 0x66A2, 0x69CD, 0x6EC4, 0x6F32, 0x7316, 0x7621, 0x7A93,
+ 0x8139, 0x8259, 0x83D6, 0x84BC, 0x50B5, 0x57F0, 0x5BC0, 0x5BE8, 0x5F69,
+ 0x63A1, 0x7826, 0x7DB5, 0x83DC, 0x8521, 0x91C7, 0x91F5, 0x518A, 0x67F5,
+ 0x7B56, 0x8CAC, 0x51C4, 0x59BB, 0x60BD, 0x8655, 0x501C, 0x5254, 0x5C3A,
+ 0x617D, 0x621A, 0x62D3, 0x64F2, 0x65A5, 0x6ECC, 0x7620, 0x810A, 0x8E60,
+ 0x965F, 0x96BB, 0x4EDF, 0x5343, 0x5598, 0x5929, 0x5DDD, 0x64C5, 0x6CC9,
+ 0x6DFA, 0x7394, 0x7A7F, 0x821B, 0x85A6, 0x8CE4, 0x8E10, 0x9077, 0x91E7,
+ 0x95E1, 0x9621, 0x97C6, 0x51F8, 0x54F2, 0x5586, 0x5FB9, 0x64A4, 0x6F88,
+ 0x7DB4, 0x8F1F, 0x8F4D, 0x9435, 0x50C9, 0x5C16, 0x6CBE, 0x6DFB, 0x751B,
+ 0x77BB, 0x7C3D, 0x7C64, 0x8A79, 0x8AC2, 0x581E, 0x59BE, 0x5E16, 0x6377,
+ 0x7252, 0x758A, 0x776B, 0x8ADC, 0x8CBC, 0x8F12, 0x5EF3, 0x6674, 0x6DF8,
+ 0x807D, 0x83C1, 0x8ACB, 0x9751, 0x9BD6, 0x5243, 0x66FF, 0x6D95, 0x6EEF,
+ 0x7DE0, 0x8AE6, 0x902E, 0x905E, 0x9AD4, 0x521D, 0x527F, 0x54E8, 0x6194,
+ 0x6284, 0x62DB, 0x68A2, 0x6912, 0x695A, 0x6A35, 0x7092, 0x7126, 0x785D,
+ 0x7901, 0x790E, 0x79D2, 0x7A0D, 0x8096, 0x8278, 0x82D5, 0x8349, 0x8549,
+ 0x8C82, 0x8D85, 0x9162, 0x918B, 0x91AE, 0x4FC3, 0x56D1, 0x71ED, 0x77D7,
+ 0x8700, 0x89F8, 0x5BF8, 0x5FD6, 0x6751, 0x90A8, 0x53E2, 0x585A, 0x5BF5,
+ 0x60A4, 0x6181, 0x6460, 0x7E3D, 0x8070, 0x8525, 0x9283, 0x64AE, 0x50AC,
+ 0x5D14, 0x6700, 0x589C, 0x62BD, 0x63A8, 0x690E, 0x6978, 0x6A1E, 0x6E6B,
+ 0x76BA, 0x79CB, 0x82BB, 0x8429, 0x8ACF, 0x8DA8, 0x8FFD, 0x9112, 0x914B,
+ 0x919C, 0x9310, 0x9318, 0x939A, 0x96DB, 0x9A36, 0x9C0D, 0x4E11, 0x755C,
+ 0x795D, 0x7AFA, 0x7B51, 0x7BC9, 0x7E2E, 0x84C4, 0x8E59, 0x8E74, 0x8EF8,
+ 0x9010, 0x6625, 0x693F, 0x7443, 0x51FA, 0x672E, 0x9EDC, 0x5145, 0x5FE0,
+ 0x6C96, 0x87F2, 0x885D, 0x8877, 0x60B4, 0x81B5, 0x8403, 0x8D05, 0x53D6,
+ 0x5439, 0x5634, 0x5A36, 0x5C31, 0x708A, 0x7FE0, 0x805A, 0x8106, 0x81ED,
+ 0x8DA3, 0x9189, 0x9A5F, 0x9DF2, 0x5074, 0x4EC4, 0x53A0, 0x60FB, 0x6E2C,
+ 0x5C64, 0x4F88, 0x5024, 0x55E4, 0x5CD9, 0x5E5F, 0x6065, 0x6894, 0x6CBB,
+ 0x6DC4, 0x71BE, 0x75D4, 0x75F4, 0x7661, 0x7A1A, 0x7A49, 0x7DC7, 0x7DFB,
+ 0x7F6E, 0x81F4, 0x86A9, 0x8F1C, 0x96C9, 0x99B3, 0x9F52, 0x5247, 0x52C5,
+ 0x98ED, 0x89AA, 0x4E03, 0x67D2, 0x6F06, 0x4FB5, 0x5BE2, 0x6795, 0x6C88,
+ 0x6D78, 0x741B, 0x7827, 0x91DD, 0x937C, 0x87C4, 0x79E4, 0x7A31, 0x5FEB,
+ 0x4ED6, 0x54A4, 0x553E, 0x58AE, 0x59A5, 0x60F0, 0x6253, 0x62D6, 0x6736,
+ 0x6955, 0x8235, 0x9640, 0x99B1, 0x99DD, 0x502C, 0x5353, 0x5544, 0x577C,
+ 0x6258, 0x64E2, 0x666B, 0x67DD, 0x6FC1, 0x6FEF, 0x7422, 0x7438, 0x8A17,
+ 0x9438, 0x5451, 0x5606, 0x5766, 0x5F48, 0x619A, 0x6B4E, 0x7058, 0x70AD,
+ 0x7DBB, 0x8A95, 0x596A, 0x812B, 0x63A2, 0x7708, 0x803D, 0x8CAA, 0x5854,
+ 0x642D, 0x69BB, 0x5B95, 0x5E11, 0x6E6F, 0x8569, 0x514C, 0x53F0, 0x592A,
+ 0x6020, 0x614B, 0x6B86, 0x6C70, 0x6CF0, 0x7B1E, 0x80CE, 0x82D4, 0x8DC6,
+ 0x90B0, 0x98B1, 0x64C7, 0x6FA4, 0x6491, 0x6504, 0x514E, 0x5410, 0x571F,
+ 0x8A0E, 0x615F, 0x6876, 0x75DB, 0x7B52, 0x7D71, 0x901A, 0x5806, 0x69CC,
+ 0x817F, 0x892A, 0x9000, 0x9839, 0x5078, 0x5957, 0x59AC, 0x6295, 0x900F,
+ 0x9B2A, 0x615D, 0x7279, 0x95D6, 0x5761, 0x5A46, 0x5DF4, 0x628A, 0x64AD,
+ 0x64FA, 0x6777, 0x6CE2, 0x6D3E, 0x722C, 0x7436, 0x7834, 0x7F77, 0x82AD,
+ 0x8DDB, 0x9817, 0x5224, 0x5742, 0x677F, 0x7248, 0x74E3, 0x8CA9, 0x8FA6,
+ 0x9211, 0x962A, 0x516B, 0x53ED, 0x634C, 0x4F69, 0x5504, 0x6096, 0x6557,
+ 0x6C9B, 0x6D7F, 0x724C, 0x72FD, 0x7A17, 0x8987, 0x8C9D, 0x5F6D, 0x6F8E,
+ 0x70F9, 0x81A8, 0x610E, 0x4FBF, 0x504F, 0x6241, 0x7247, 0x7BC7, 0x7DE8,
+ 0x7FE9, 0x904D, 0x97AD, 0x9A19, 0x8CB6, 0x576A, 0x5E73, 0x67B0, 0x840D,
+ 0x8A55, 0x5420, 0x5B16, 0x5E63, 0x5EE2, 0x5F0A, 0x6583, 0x80BA, 0x853D,
+ 0x9589, 0x965B, 0x4F48, 0x5305, 0x530D, 0x530F, 0x5486, 0x54FA, 0x5703,
+ 0x5E03, 0x6016, 0x629B, 0x62B1, 0x6355, 0x6CE1, 0x6D66, 0x75B1, 0x7832,
+ 0x80DE, 0x812F, 0x82DE, 0x8461, 0x84B2, 0x888D, 0x8912, 0x900B, 0x92EA,
+ 0x98FD, 0x9B91, 0x5E45, 0x66B4, 0x66DD, 0x7011, 0x7206, 0x4FF5, 0x527D,
+ 0x5F6A, 0x6153, 0x6753, 0x6A19, 0x6F02, 0x74E2, 0x7968, 0x8868, 0x8C79,
+ 0x98C7, 0x98C4, 0x9A43, 0x54C1, 0x7A1F, 0x6953, 0x8AF7, 0x8C4A, 0x98A8,
+ 0x99AE, 0x5F7C, 0x62AB, 0x75B2, 0x76AE, 0x88AB, 0x907F, 0x9642, 0x5339,
+ 0x5F3C, 0x5FC5, 0x6CCC, 0x73CC, 0x7562, 0x758B, 0x7B46, 0x82FE, 0x999D,
+ 0x4E4F, 0x903C, 0x4E0B, 0x4F55, 0x53A6, 0x590F, 0x5EC8, 0x6630, 0x6CB3,
+ 0x7455, 0x8377, 0x8766, 0x8CC0, 0x9050, 0x971E, 0x9C15, 0x58D1, 0x5B78,
+ 0x8650, 0x8B14, 0x9DB4, 0x5BD2, 0x6068, 0x608D, 0x65F1, 0x6C57, 0x6F22,
+ 0x6FA3, 0x701A, 0x7F55, 0x7FF0, 0x9591, 0x9592, 0x9650, 0x97D3, 0x5272,
+ 0x8F44, 0x51FD, 0x542B, 0x54B8, 0x5563, 0x558A, 0x6ABB, 0x6DB5, 0x7DD8,
+ 0x8266, 0x929C, 0x9677, 0x9E79, 0x5408, 0x54C8, 0x76D2, 0x86E4, 0x95A4,
+ 0x95D4, 0x965C, 0x4EA2, 0x4F09, 0x59EE, 0x5AE6, 0x5DF7, 0x6052, 0x6297,
+ 0x676D, 0x6841, 0x6C86, 0x6E2F, 0x7F38, 0x809B, 0x822A, 0x9805, 0x4EA5,
+ 0x5055, 0x54B3, 0x5793, 0x595A, 0x5B69, 0x5BB3, 0x61C8, 0x6977, 0x6D77,
+ 0x7023, 0x87F9, 0x89E3, 0x8A72, 0x8AE7, 0x9082, 0x99ED, 0x9AB8, 0x52BE,
+ 0x6838, 0x5016, 0x5E78, 0x674F, 0x8347, 0x884C, 0x4EAB, 0x5411, 0x56AE,
+ 0x73E6, 0x9115, 0x97FF, 0x9909, 0x9957, 0x9999, 0x5653, 0x589F, 0x865B,
+ 0x8A31, 0x61B2, 0x6AF6, 0x737B, 0x8ED2, 0x6B47, 0x96AA, 0x9A57, 0x5955,
+ 0x7200, 0x8D6B, 0x9769, 0x4FD4, 0x5CF4, 0x5F26, 0x61F8, 0x665B, 0x6CEB,
+ 0x70AB, 0x7384, 0x73B9, 0x73FE, 0x7729, 0x774D, 0x7D43, 0x7D62, 0x7E23,
+ 0x8237, 0x8852, 0x8CE2, 0x9249, 0x986F, 0x5B51, 0x7A74, 0x8840, 0x9801,
+ 0x5ACC, 0x4FE0, 0x5354, 0x593E, 0x5CFD, 0x633E, 0x6D79, 0x72F9, 0x8105,
+ 0x8107, 0x83A2, 0x92CF, 0x9830, 0x4EA8, 0x5144, 0x5211, 0x578B, 0x5F62,
+ 0x6CC2, 0x6ECE, 0x7005, 0x7050, 0x70AF, 0x7192, 0x73E9, 0x7469, 0x834A,
+ 0x87A2, 0x8861, 0x9008, 0x90A2, 0x93A3, 0x99A8, 0x516E, 0x5F57, 0x60E0,
+ 0x6167, 0x66B3, 0x8559, 0x8E4A, 0x91AF, 0x978B, 0x4E4E, 0x4E92, 0x547C,
+ 0x58D5, 0x58FA, 0x597D, 0x5CB5, 0x5F27, 0x6236, 0x6248, 0x660A, 0x6667,
+ 0x6BEB, 0x6D69, 0x6DCF, 0x6E56, 0x6EF8, 0x6F94, 0x6FE0, 0x6FE9, 0x705D,
+ 0x72D0, 0x7425, 0x745A, 0x74E0, 0x7693, 0x795C, 0x7CCA, 0x7E1E, 0x80E1,
+ 0x82A6, 0x846B, 0x84BF, 0x864E, 0x865F, 0x8774, 0x8B77, 0x8C6A, 0x93AC,
+ 0x9800, 0x9865, 0x60D1, 0x6216, 0x9177, 0x5A5A, 0x660F, 0x6DF7, 0x6E3E,
+ 0x743F, 0x9B42, 0x5FFD, 0x60DA, 0x7B0F, 0x54C4, 0x5F18, 0x6C5E, 0x6CD3,
+ 0x6D2A, 0x70D8, 0x7D05, 0x8679, 0x8A0C, 0x9D3B, 0x5316, 0x548C, 0x5B05,
+ 0x6A3A, 0x706B, 0x7575, 0x798D, 0x79BE, 0x82B1, 0x83EF, 0x8A71, 0x8B41,
+ 0x8CA8, 0x9774, 0x64F4, 0x652B, 0x78BA, 0x78BB, 0x7A6B, 0x4E38, 0x559A,
+ 0x5950, 0x5BA6, 0x5E7B, 0x60A3, 0x63DB, 0x6B61, 0x6665, 0x6853, 0x6E19,
+ 0x7165, 0x74B0, 0x7D08, 0x9084, 0x9A69, 0x9C25, 0x6D3B, 0x6ED1, 0x733E,
+ 0x8C41, 0x95CA, 0x51F0, 0x5E4C, 0x5FA8, 0x604D, 0x60F6, 0x6130, 0x614C,
+ 0x6643, 0x6644, 0x69A5, 0x6CC1, 0x6E5F, 0x6EC9, 0x6F62, 0x714C, 0x749C,
+ 0x7687, 0x7BC1, 0x7C27, 0x8352, 0x8757, 0x9051, 0x968D, 0x9EC3, 0x532F,
+ 0x56DE, 0x5EFB, 0x5F8A, 0x6062, 0x6094, 0x61F7, 0x6666, 0x6703, 0x6A9C,
+ 0x6DEE, 0x6FAE, 0x7070, 0x736A, 0x7E6A, 0x81BE, 0x8334, 0x86D4, 0x8AA8,
+ 0x8CC4, 0x5283, 0x7372, 0x5B96, 0x6A6B, 0x9404, 0x54EE, 0x5686, 0x5B5D,
+ 0x6548, 0x6585, 0x66C9, 0x689F, 0x6D8D, 0x6DC6, 0x723B, 0x80B4, 0x9175,
+ 0x9A4D, 0x4FAF, 0x5019, 0x539A, 0x540E, 0x543C, 0x5589, 0x55C5, 0x5E3F,
+ 0x5F8C, 0x673D, 0x7166, 0x73DD, 0x9005, 0x52DB, 0x52F3, 0x5864, 0x58CE,
+ 0x7104, 0x718F, 0x71FB, 0x85B0, 0x8A13, 0x6688, 0x85A8, 0x55A7, 0x6684,
+ 0x714A, 0x8431, 0x5349, 0x5599, 0x6BC1, 0x5F59, 0x5FBD, 0x63EE, 0x6689,
+ 0x7147, 0x8AF1, 0x8F1D, 0x9EBE, 0x4F11, 0x643A, 0x70CB, 0x7566, 0x8667,
+ 0x6064, 0x8B4E, 0x9DF8, 0x5147, 0x51F6, 0x5308, 0x6D36, 0x80F8, 0x9ED1,
+ 0x6615, 0x6B23, 0x7098, 0x75D5, 0x5403, 0x5C79, 0x7D07, 0x8A16, 0x6B20,
+ 0x6B3D, 0x6B46, 0x5438, 0x6070, 0x6D3D, 0x7FD5, 0x8208, 0x50D6, 0x51DE,
+ 0x559C, 0x566B, 0x56CD, 0x59EC, 0x5B09, 0x5E0C, 0x6199, 0x6198, 0x6231,
+ 0x665E, 0x66E6, 0x7199, 0x71B9, 0x71BA, 0x72A7, 0x79A7, 0x7A00, 0x7FB2,
+ 0x8A70, 0x3001, 0x3002, 0x2025, 0x00AD, 0x2015, 0x2225, 0xFF5E, 0x3014,
+ 0x3015, 0x3008, 0x3009, 0x300A, 0x300B, 0x300C, 0x300D, 0x300E, 0x300F,
+ 0x3010, 0x3011, 0x3013, 0xFF01, 0xFF08, 0xFF09, 0xFF0C, 0xFF0E, 0xFF1A,
+ 0xFF1B, 0xFF1C, 0xFF1D, 0xFF1E, 0xFF1F, 0xFF3B, 0xFF3D, 0xFF3F, 0xFF5B,
+ 0xFF5C, 0xFF5D, 0xFF5E, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025,
+ 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E,
+ 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040,
+ 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049,
+ 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052,
+ 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B,
+ 0x005C, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064,
+ 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D,
+ 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076,
+ 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x203E, 0x007E,
+ 0x005C, 0x231C, 0x231F, 0x0000, 0x0000, 0x0000, 0x0000, 0x300E, 0x300F,
+ 0x300A, 0x300B, 0x3008, 0x3009, 0x0028, 0x0029, 0x0000, 0x0000, 0x0028,
+ 0x0029, 0x0028, 0x0029, 0x0000, 0x0000, 0x0028, 0x0029, 0x0000, 0x0000,
+ 0x3016, 0x3017, 0x3016, 0x3017, 0x3018, 0x3019, 0x005B, 0x005D, 0x0000,
+ 0x0000, 0x263E, 0x263D, 0x2021, 0x2021, 0x2020, 0x2021, 0x0000, 0x2217,
+ 0x0000, 0x0000, 0x201F, 0x201B, 0x02D6, 0x02D7, 0x00D7, 0x221E, 0x0000,
+ 0x00B1, 0x2213, 0x003E, 0x003C, 0x003D, 0x2260, 0x207D, 0x207E, 0x007B,
+ 0x007D, 0x0000, 0x0000, 0x2229, 0x222A, 0x2282, 0x2208, 0x03A3, 0x0021,
+ 0x0000, 0x3021, 0x3022, 0x3023, 0x0000, 0x0000, 0x0000, 0x4E03, 0x0000,
+ 0x0000, 0x5341, 0x0000, 0x0000, 0x0027, 0x3014, 0x3015, 0x002A, 0x0000,
+ 0x2217, 0x002A, 0xCDCD, 0x3001, 0x3002, 0x0028, 0x0029, 0x0028, 0x0029,
+ 0x0028, 0x0029, 0x3016, 0x3017, 0x3010, 0x3011, 0x0000, 0x0000, 0x20DE,
+ 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x005D,
+ 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,
+ 0x005D, 0x00B6, 0x0000, 0x0000, 0x22EF, 0x2237, 0x20DE, 0x20DE, 0x20DE,
+ 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x005D, 0x005D, 0x005D,
+ 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x278A,
+ 0x278B, 0x278C, 0x278D, 0x278E, 0x278F, 0x2790, 0x2791, 0x2792, 0x2793,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,
+ 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,
+ 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,
+ 0x24B6, 0x24B7, 0x24B8, 0x24B9, 0x24BA, 0x24BB, 0x24BC, 0x24BD, 0x24BE,
+ 0x24BF, 0x24C0, 0x24C1, 0x24C2, 0x24C3, 0x24C4, 0x24C5, 0x24C6, 0x24C7,
+ 0x24C8, 0x24C9, 0x24CA, 0x24CB, 0x24CC, 0x24CD, 0x24CE, 0x24CF, 0x20DE,
+ 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x005D,
+ 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,
+ 0x005D, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE,
+ 0x20DE, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,
+ 0x005D, 0x005D, 0x005D, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x22CF, 0x22CE, 0x22CF,
+ 0x22CE, 0x2280, 0x2281, 0x2270, 0x2271, 0x2272, 0x2273, 0x0000, 0x228A,
+ 0x0000, 0x228B, 0x2276, 0x2277, 0x2279, 0x22DA, 0x22DB, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2221, 0x2245, 0x2243, 0x2248, 0x0000, 0x22A4, 0x22AB,
+ 0x0000, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE,
+ 0x20DE, 0x20DE, 0x0000, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465,
+ 0x2466, 0x2467, 0x2468, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,
+ 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,
+ 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,
+ 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,
+ 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,
+ 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,
+ 0x0029, 0x0021, 0x00B0, 0x0027, 0x0022, 0x2034, 0x0029, 0x0029, 0x0029,
+ 0x0029, 0x0000, 0x0000, 0x2020, 0x2020, 0x2021, 0x2020, 0x00A7, 0x0023,
+ 0x002A, 0x002A, 0x0000, 0x0000, 0x2042, 0x002A, 0x0000, 0x0000, 0x2042,
+ 0x002A, 0x0000, 0x0000, 0x2022, 0x20DF, 0x20DF, 0x0000, 0x20DF, 0x3008,
+ 0x3009, 0x300A, 0x300B, 0x261C, 0x261E, 0x0000, 0x0000, 0x20DE, 0x0000,
+ 0x20DE, 0x20DE, 0x0000, 0x0000, 0x0000, 0x0000, 0x20DD, 0x20DD, 0x271A,
+ 0x2716, 0x0000, 0x25EF, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x25CC,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x20A9, 0x0000, 0x0000, 0x262F, 0x0000, 0x262F,
+ 0x262F, 0x0000, 0x0000, 0x0000, 0x3020, 0x0000, 0x2776, 0x2777, 0x2778,
+ 0x2779, 0x277A, 0x277B, 0x277C, 0x277D, 0x277E, 0x277F, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0029,
+ 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x2642, 0x22A9, 0x3036, 0x25CB,
+ 0x25D3, 0x25A1, 0x2302, 0x0000, 0x25AD, 0x25AD, 0x0000, 0x0000, 0x0000,
+ 0x25C7, 0x0000, 0x0000, 0x2206, 0x22BF, 0x231E, 0x0000, 0x2225, 0x2226,
+ 0x0000, 0x2253, 0x2251, 0x2266, 0x2267, 0x2213, 0x2295, 0x2296, 0x2297,
+ 0x20DD, 0x2314, 0x0000, 0x0000, 0x2262, 0x0000, 0x25B1, 0x0000, 0x2222,
+ 0x2250, 0x00D8, 0x234A, 0x22A3, 0x0338, 0x0000, 0x226E, 0x226F, 0x2285,
+ 0x2284, 0x2209, 0x220C, 0x22BB, 0x0016, 0x225A, 0x2306, 0x0024, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x329E, 0x0000, 0x203C, 0x003F, 0x0000,
+ 0x003F, 0x22C4, 0x25C7, 0x22C4, 0x25C6, 0x25AB, 0x25A1, 0x25AB, 0x25A0,
+ 0x25E6, 0x25CB, 0x25E6, 0x25CF, 0x25BD, 0x25B3, 0x25B7, 0x25C1, 0x2726,
+ 0x25CF, 0x25A0, 0x0000, 0x25CA, 0x3231, 0x3239, 0x33CB, 0x2483, 0x2494,
+ 0x2495, 0x2496, 0x2497, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029,
+ 0x0029, 0x0029, 0x0029, 0x0029, 0x2192, 0x2190, 0x2191, 0x2193, 0x2196,
+ 0x2197, 0x2198, 0x2199, 0x21D0, 0x21CF, 0x21CD, 0x21D4, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2794, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x279C,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x27BA, 0x0000, 0x0000, 0x0000, 0x0000, 0x21D1, 0x21D3,
+ 0x0000, 0x279E, 0x0000, 0x0000, 0x0000, 0x279E, 0x0000, 0x0000, 0x21B5,
+ 0x21B1, 0x0000, 0x21B4, 0x21B0, 0x21B3, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x21E6, 0x21E8, 0x21E7,
+ 0x21E9, 0x21BC, 0x21C0, 0x0000, 0x0000, 0x0000, 0x0000, 0x21C0, 0x21BC,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x21C4, 0x21C5, 0x002E, 0x002E, 0x002E,
+ 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E,
+ 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E,
+ 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E,
+ 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E,
+ 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E, 0x002E,
+ 0x002E, 0x002E, 0x002E, 0x002E, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE,
+ 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE,
+ 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE,
+ 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE,
+ 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE,
+ 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE,
+ 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE,
+ 0x20DE, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD,
+ 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD,
+ 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD,
+ 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x2483, 0x2484, 0x2485,
+ 0x2486, 0x2487, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x0029, 0x20DD,
+ 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD,
+ 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD,
+ 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x3294,
+ 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD,
+ 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x32A5, 0x20DD, 0x20DD,
+ 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD,
+ 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD,
+ 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD,
+ 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD,
+ 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD,
+ 0x20DD, 0x0029, 0x0029, 0x0029, 0x0029, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2794, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x21E0, 0x21E1, 0x21E2, 0x21E3, 0x0000, 0x27A1, 0x0000, 0x0000,
+ 0x21E6, 0x21E8, 0x21E7, 0x21E9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x261D, 0x261F, 0x0000,
+ 0x0000, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DD, 0x20DE,
+ 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x005D,
+ 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,
+ 0x005D, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE,
+ 0x20DE, 0x20DE, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,
+ 0x005D, 0x005D, 0x005D, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE,
+ 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x005D, 0x005D, 0x005D, 0x005D, 0x005D,
+ 0x005D, 0x005D, 0x005D, 0x005D, 0x005D, 0x20DE, 0x20DE, 0x20DE, 0x20DE,
+ 0x20DE, 0x20DE, 0x20DE, 0x3290, 0x328A, 0x328B, 0x328C, 0x328D, 0x328E,
+ 0x328F, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x20DE, 0x300C,
+ 0x300D, 0x300E, 0x300F, 0x21E8, 0x21E6, 0x21E7, 0x21E9, 0x0022, 0x301F,
+ 0x301D, 0x2036, 0x0060, 0x3001, 0x0000, 0x0021, 0x3021, 0x002C, 0x3002,
+ 0xAC02, 0xAC03, 0xAC05, 0xAC06, 0xAC0B, 0xAC0C, 0xAC0D, 0xAC0E, 0xAC0F,
+ 0xAC18, 0xAC1E, 0xAC1F, 0xAC21, 0xAC22, 0xAC23, 0xAC25, 0xAC26, 0xAC27,
+ 0xAC28, 0xAC29, 0xAC2A, 0xAC2B, 0xAC2E, 0xAC32, 0xAC33, 0xAC34, 0xAC35,
+ 0xAC36, 0xAC37, 0xAC3A, 0xAC3B, 0xAC3D, 0xAC3E, 0xAC3F, 0xAC41, 0xAC42,
+ 0xAC43, 0xAC44, 0xAC45, 0xAC46, 0xAC47, 0xAC48, 0xAC49, 0xAC4A, 0xAC4C,
+ 0xAC4E, 0xAC4F, 0xAC50, 0xAC51, 0xAC52, 0xAC53, 0xAC55, 0xAC56, 0xAC57,
+ 0xAC59, 0xAC5A, 0xAC5B, 0xAC5D, 0xAC5E, 0xAC5F, 0xAC60, 0xAC61, 0xAC62,
+ 0xAC63, 0xAC64, 0xAC65, 0xAC66, 0xAC67, 0xAC68, 0xAC69, 0xAC6A, 0xAC6B,
+ 0xAC6C, 0xAC6D, 0xAC6E, 0xAC6F, 0xAC72, 0xAC73, 0xAC75, 0xAC76, 0xAC79,
+ 0xAC7B, 0xAC7C, 0xAC7D, 0xAC7E, 0xAC7F, 0xAC82, 0xAC87, 0xAC88, 0xAC8D,
+ 0xAC8E, 0xAC8F, 0xAC91, 0xAC92, 0xAC93, 0xAC95, 0xAC96, 0xAC97, 0xAC98,
+ 0xAC99, 0xAC9A, 0xAC9B, 0xAC9E, 0xACA2, 0xACA3, 0xACA4, 0xACA5, 0xACA6,
+ 0xACA7, 0xACAB, 0xACAD, 0xACAE, 0xACB1, 0xACB2, 0xACB3, 0xACB4, 0xACB5,
+ 0xACB6, 0xACB7, 0xACBA, 0xACBE, 0xACBF, 0xACC0, 0xACC2, 0xACC3, 0xACC5,
+ 0xACC6, 0xACC7, 0xACC9, 0xACCA, 0xACCB, 0xACCD, 0xACCE, 0xACCF, 0xACD0,
+ 0xACD1, 0xACD2, 0xACD3, 0xACD4, 0xACD6, 0xACD8, 0xACD9, 0xACDA, 0xACDB,
+ 0xACDC, 0xACDD, 0xACDE, 0xACDF, 0xACE2, 0xACE3, 0xACE5, 0xACE6, 0xACE9,
+ 0xACEB, 0xACED, 0xACEE, 0xACF2, 0xACF4, 0xACF7, 0xACF8, 0xACF9, 0xACFA,
+ 0xACFB, 0xACFE, 0xACFF, 0xAD01, 0xAD02, 0xAD03, 0xAD05, 0xAD07, 0xAD08,
+ 0xAD09, 0xAD0A, 0xAD0B, 0xAD0E, 0xAD10, 0xAD12, 0xAD13, 0xAD14, 0xAD15,
+ 0xAD16, 0xAD17, 0xAD19, 0xAD1A, 0xAD1B, 0xAD1D, 0xAD1E, 0xAD1F, 0xAD21,
+ 0xAD22, 0xAD23, 0xAD24, 0xAD25, 0xAD26, 0xAD27, 0xAD28, 0xAD2A, 0xAD2B,
+ 0xAD2E, 0xAD2F, 0xAD30, 0xAD31, 0xAD32, 0xAD33, 0xAD36, 0xAD37, 0xAD39,
+ 0xAD3A, 0xAD3B, 0xAD3D, 0xAD3E, 0xAD3F, 0xAD40, 0xAD41, 0xAD42, 0xAD43,
+ 0xAD46, 0xAD48, 0xAD4A, 0xAD4B, 0xAD4C, 0xAD4D, 0xAD4E, 0xAD4F, 0xAD51,
+ 0xAD52, 0xAD53, 0xAD55, 0xAD56, 0xAD57, 0xAD59, 0xAD5A, 0xAD5B, 0xAD5C,
+ 0xAD5D, 0xAD5E, 0xAD5F, 0xAD60, 0xAD62, 0xAD64, 0xAD65, 0xAD66, 0xAD67,
+ 0xAD68, 0xAD69, 0xAD6A, 0xAD6B, 0xAD6E, 0xAD6F, 0xAD71, 0xAD72, 0xAD77,
+ 0xAD78, 0xAD79, 0xAD7A, 0xAD7E, 0xAD80, 0xAD83, 0xAD84, 0xAD85, 0xAD86,
+ 0xAD87, 0xAD8A, 0xAD8B, 0xAD8D, 0xAD8E, 0xAD8F, 0xAD91, 0xAD92, 0xAD93,
+ 0xAD94, 0xAD95, 0xAD96, 0xAD97, 0xAD98, 0xAD99, 0xAD9A, 0xAD9B, 0xAD9E,
+ 0xAD9F, 0xADA0, 0xADA1, 0xADA2, 0xADA3, 0xADA5, 0xADA6, 0xADA7, 0xADA8,
+ 0xADA9, 0xADAA, 0xADAB, 0xADAC, 0xADAD, 0xADAE, 0xADAF, 0xADB0, 0xADB1,
+ 0xADB2, 0xADB3, 0xADB4, 0xADB5, 0xADB6, 0xADB8, 0xADB9, 0xADBA, 0xADBB,
+ 0xADBC, 0xADBD, 0xADBE, 0xADBF, 0xADC2, 0xADC3, 0xADC5, 0xADC6, 0xADC7,
+ 0xADC9, 0xADCA, 0xADCB, 0xADCC, 0xADCD, 0xADCE, 0xADCF, 0xADD2, 0xADD4,
+ 0xADD5, 0xADD6, 0xADD7, 0xADD8, 0xADD9, 0xADDA, 0xADDB, 0xADDD, 0xADDE,
+ 0xADDF, 0xADE1, 0xADE2, 0xADE3, 0xADE5, 0xADE6, 0xADE7, 0xADE8, 0xADE9,
+ 0xADEA, 0xADEB, 0xADEC, 0xADED, 0xADEE, 0xADEF, 0xADF0, 0xADF1, 0xADF2,
+ 0xADF3, 0xADF4, 0xADF5, 0xADF6, 0xADF7, 0xADFA, 0xADFB, 0xADFD, 0xADFE,
+ 0xAE02, 0xAE03, 0xAE04, 0xAE05, 0xAE06, 0xAE07, 0xAE0A, 0xAE0C, 0xAE0E,
+ 0xAE0F, 0xAE10, 0xAE11, 0xAE12, 0xAE13, 0xAE15, 0xAE16, 0xAE17, 0xAE18,
+ 0xAE19, 0xAE1A, 0xAE1B, 0xAE1C, 0xAE1D, 0xAE1E, 0xAE1F, 0xAE20, 0xAE21,
+ 0xAE22, 0xAE23, 0xAE24, 0xAE25, 0xAE26, 0xAE27, 0xAE28, 0xAE29, 0xAE2A,
+ 0xAE2B, 0xAE2C, 0xAE2D, 0xAE2E, 0xAE2F, 0xAE32, 0xAE33, 0xAE35, 0xAE36,
+ 0xAE39, 0xAE3B, 0xAE3C, 0xAE3D, 0xAE3E, 0xAE3F, 0xAE42, 0xAE44, 0xAE47,
+ 0xAE48, 0xAE49, 0xAE4B, 0xAE4F, 0xAE51, 0xAE52, 0xAE53, 0xAE55, 0xAE57,
+ 0xAE58, 0xAE59, 0xAE5A, 0xAE5B, 0xAE5E, 0xAE62, 0xAE63, 0xAE64, 0xAE66,
+ 0xAE67, 0xAE6A, 0xAE6B, 0xAE6D, 0xAE6E, 0xAE6F, 0xAE71, 0xAE72, 0xAE73,
+ 0xAE74, 0xAE75, 0xAE76, 0xAE77, 0xAE7A, 0xAE7E, 0xAE7F, 0xAE80, 0xAE81,
+ 0xAE82, 0xAE83, 0xAE86, 0xAE87, 0xAE88, 0xAE89, 0xAE8A, 0xAE8B, 0xAE8D,
+ 0xAE8E, 0xAE8F, 0xAE90, 0xAE91, 0xAE92, 0xAE93, 0xAE94, 0xAE95, 0xAE96,
+ 0xAE97, 0xAE98, 0xAE99, 0xAE9A, 0xAE9B, 0xAE9C, 0xAE9D, 0xAE9E, 0xAE9F,
+ 0xAEA0, 0xAEA1, 0xAEA2, 0xAEA3, 0xAEA4, 0xAEA5, 0xAEA6, 0xAEA7, 0xAEA8,
+ 0xAEA9, 0xAEAA, 0xAEAB, 0xAEAC, 0xAEAD, 0xAEAE, 0xAEAF, 0xAEB0, 0xAEB1,
+ 0xAEB2, 0xAEB3, 0xAEB4, 0xAEB5, 0xAEB6, 0xAEB7, 0xAEB8, 0xAEB9, 0xAEBA,
+ 0xAEBB, 0xAEBF, 0xAEC1, 0xAEC2, 0xAEC3, 0xAEC5, 0xAEC6, 0xAEC7, 0xAEC8,
+ 0xAEC9, 0xAECA, 0xAECB, 0xAECE, 0xAED2, 0xAED3, 0xAED4, 0xAED5, 0xAED6,
+ 0xAED7, 0xAEDA, 0xAEDB, 0xAEDD, 0xAEDE, 0xAEDF, 0xAEE0, 0xAEE1, 0xAEE2,
+ 0xAEE3, 0xAEE4, 0xAEE5, 0xAEE6, 0xAEE7, 0xAEE9, 0xAEEA, 0xAEEC, 0xAEEE,
+ 0xAEEF, 0xAEF0, 0xAEF1, 0xAEF2, 0xAEF3, 0xAEF5, 0xAEF6, 0xAEF7, 0xAEF9,
+ 0xAEFA, 0xAEFB, 0xAEFD, 0xAEFE, 0xAEFF, 0xAF00, 0xAF01, 0xAF02, 0xAF03,
+ 0xAF04, 0xAF05, 0xAF06, 0xAF09, 0xAF0A, 0xAF0B, 0xAF0C, 0xAF0E, 0xAF0F,
+ 0xAF11, 0xAF12, 0xAF13, 0xAF14, 0xAF15, 0xAF16, 0xAF17, 0xAF18, 0xAF19,
+ 0xAF1A, 0xAF1B, 0xAF1C, 0xAF1D, 0xAF1E, 0xAF1F, 0xAF20, 0xAF21, 0xAF22,
+ 0xAF23, 0xAF24, 0xAF25, 0xAF26, 0xAF27, 0xAF28, 0xAF29, 0xAF2A, 0xAF2B,
+ 0xAF2E, 0xAF2F, 0xAF31, 0xAF33, 0xAF35, 0xAF36, 0xAF37, 0xAF38, 0xAF39,
+ 0xAF3A, 0xAF3B, 0xAF3E, 0xAF40, 0xAF44, 0xAF45, 0xAF46, 0xAF47, 0xAF4A,
+ 0xAF4B, 0xAF4C, 0xAF4D, 0xAF4E, 0xAF4F, 0xAF51, 0xAF52, 0xAF53, 0xAF54,
+ 0xAF55, 0xAF56, 0xAF57, 0xAF58, 0xAF59, 0xAF5A, 0xAF5B, 0xAF5E, 0xAF5F,
+ 0xAF60, 0xAF61, 0xAF62, 0xAF63, 0xAF66, 0xAF67, 0xAF68, 0xAF69, 0xAF6A,
+ 0xAF6B, 0xAF6C, 0xAF6D, 0xAF6E, 0xAF6F, 0xAF70, 0xAF71, 0xAF72, 0xAF73,
+ 0xAF74, 0xAF75, 0xAF76, 0xAF77, 0xAF78, 0xAF7A, 0xAF7B, 0xAF7C, 0xAF7D,
+ 0xAF7E, 0xAF7F, 0xAF81, 0xAF82, 0xAF83, 0xAF85, 0xAF86, 0xAF87, 0xAF89,
+ 0xAF8A, 0xAF8B, 0xAF8C, 0xAF8D, 0xAF8E, 0xAF8F, 0xAF92, 0xAF93, 0xAF94,
+ 0xAF96, 0xAF97, 0xAF98, 0xAF99, 0xAF9A, 0xAF9B, 0xAF9D, 0xAF9E, 0xAF9F,
+ 0xAFA0, 0xAFA1, 0xAFA2, 0xAFA3, 0xAFA4, 0xAFA5, 0xAFA6, 0xAFA7, 0xAFA8,
+ 0xAFA9, 0xAFAA, 0xAFAB, 0xAFAC, 0xAFAD, 0xAFAE, 0xAFAF, 0xAFB0, 0xAFB1,
+ 0xAFB2, 0xAFB3, 0xAFB4, 0xAFB5, 0xAFB6, 0xAFB7, 0xAFBA, 0xAFBB, 0xAFBD,
+ 0xAFBE, 0xAFBF, 0xAFC1, 0xAFC2, 0xAFC3, 0xAFC4, 0xAFC5, 0xAFC6, 0xAFCA,
+ 0xAFCC, 0xAFCF, 0xAFD0, 0xAFD1, 0xAFD2, 0xAFD3, 0xAFD5, 0xAFD6, 0xAFD7,
+ 0xAFD8, 0xAFD9, 0xAFDA, 0xAFDB, 0xAFDD, 0xAFDE, 0xAFDF, 0xAFE0, 0xAFE1,
+ 0xAFE2, 0xAFE3, 0xAFE4, 0xAFE5, 0xAFE6, 0xAFE7, 0xAFEA, 0xAFEB, 0xAFEC,
+ 0xAFED, 0xAFEE, 0xAFEF, 0xAFF2, 0xAFF3, 0xAFF5, 0xAFF6, 0xAFF7, 0xAFF9,
+ 0xAFFA, 0xAFFB, 0xAFFC, 0xAFFD, 0xAFFE, 0xAFFF, 0xB002, 0xB003, 0xB005,
+ 0xB006, 0xB007, 0xB008, 0xB009, 0xB00A, 0xB00B, 0xB00D, 0xB00E, 0xB00F,
+ 0xB011, 0xB012, 0xB013, 0xB015, 0xB016, 0xB017, 0xB018, 0xB019, 0xB01A,
+ 0xB01B, 0xB01E, 0xB01F, 0xB020, 0xB021, 0xB022, 0xB023, 0xB024, 0xB025,
+ 0xB026, 0xB027, 0xB029, 0xB02A, 0xB02B, 0xB02C, 0xB02D, 0xB02E, 0xB02F,
+ 0xB030, 0xB031, 0xB032, 0xB033, 0xB034, 0xB035, 0xB036, 0xB037, 0xB038,
+ 0xB039, 0xB03A, 0xB03B, 0xB03C, 0xB03D, 0xB03E, 0xB03F, 0xB040, 0xB041,
+ 0xB042, 0xB043, 0xB046, 0xB047, 0xB049, 0xB04B, 0xB04D, 0xB04F, 0xB050,
+ 0xB051, 0xB052, 0xB056, 0xB058, 0xB05A, 0xB05B, 0xB05C, 0xB05E, 0xB05F,
+ 0xB060, 0xB061, 0xB062, 0xB063, 0xB064, 0xB065, 0xB066, 0xB067, 0xB068,
+ 0xB069, 0xB06A, 0xB06B, 0xB06C, 0xB06D, 0xB06E, 0xB06F, 0xB070, 0xB071,
+ 0xB072, 0xB073, 0xB074, 0xB075, 0xB076, 0xB077, 0xB078, 0xB079, 0xB07A,
+ 0xB07B, 0xB07E, 0xB07F, 0xB081, 0xB082, 0xB083, 0xB085, 0xB086, 0xB087,
+ 0xB088, 0xB089, 0xB08A, 0xB08B, 0xB08E, 0xB090, 0xB092, 0xB093, 0xB094,
+ 0xB095, 0xB096, 0xB097, 0xB09B, 0xB09D, 0xB09E, 0xB0A3, 0xB0A4, 0xB0A5,
+ 0xB0A6, 0xB0A7, 0xB0AA, 0xB0B0, 0xB0B2, 0xB0B6, 0xB0B7, 0xB0B9, 0xB0BA,
+ 0xB0BB, 0xB0BD, 0xB0BE, 0xB0BF, 0xB0C0, 0xB0C1, 0xB0C2, 0xB0C3, 0xB0C6,
+ 0xB0CA, 0xB0CB, 0xB0CC, 0xB0CD, 0xB0CE, 0xB0CF, 0xB0D2, 0xB0D3, 0xB0D5,
+ 0xB0D6, 0xB0D7, 0xB0D9, 0xB0DA, 0xB0DB, 0xB0DC, 0xB0DD, 0xB0DE, 0xB0DF,
+ 0xB0E1, 0xB0E2, 0xB0E3, 0xB0E4, 0xB0E6, 0xB0E7, 0xB0E8, 0xB0E9, 0xB0EA,
+ 0xB0EB, 0xB0EC, 0xB0ED, 0xB0EE, 0xB0EF, 0xB0F0, 0xB0F1, 0xB0F2, 0xB0F3,
+ 0xB0F4, 0xB0F5, 0xB0F6, 0xB0F7, 0xB0F8, 0xB0F9, 0xB0FA, 0xB0FB, 0xB0FC,
+ 0xB0FD, 0xB0FE, 0xB0FF, 0xB100, 0xB101, 0xB102, 0xB103, 0xB104, 0xB105,
+ 0xB106, 0xB107, 0xB10A, 0xB10D, 0xB10E, 0xB10F, 0xB111, 0xB114, 0xB115,
+ 0xB116, 0xB117, 0xB11A, 0xB11E, 0xB11F, 0xB120, 0xB121, 0xB122, 0xB126,
+ 0xB127, 0xB129, 0xB12A, 0xB12B, 0xB12D, 0xB12E, 0xB12F, 0xB130, 0xB131,
+ 0xB132, 0xB133, 0xB136, 0xB13A, 0xB13B, 0xB13C, 0xB13D, 0xB13E, 0xB13F,
+ 0xB142, 0xB143, 0xB145, 0xB146, 0xB147, 0xB149, 0xB14A, 0xB14B, 0xB14C,
+ 0xB14D, 0xB14E, 0xB14F, 0xB152, 0xB153, 0xB156, 0xB157, 0xB159, 0xB15A,
+ 0xB15B, 0xB15D, 0xB15E, 0xB15F, 0xB161, 0xB162, 0xB163, 0xB164, 0xB165,
+ 0xB166, 0xB167, 0xB168, 0xB169, 0xB16A, 0xB16B, 0xB16C, 0xB16D, 0xB16E,
+ 0xB16F, 0xB170, 0xB171, 0xB172, 0xB173, 0xB174, 0xB175, 0xB176, 0xB177,
+ 0xB17A, 0xB17B, 0xB17D, 0xB17E, 0xB17F, 0xB181, 0xB183, 0xB184, 0xB185,
+ 0xB186, 0xB187, 0xB18A, 0xB18C, 0xB18E, 0xB18F, 0xB190, 0xB191, 0xB195,
+ 0xB196, 0xB197, 0xB199, 0xB19A, 0xB19B, 0xB19D, 0xB19E, 0xB19F, 0xB1A0,
+ 0xB1A1, 0xB1A2, 0xB1A3, 0xB1A4, 0xB1A5, 0xB1A6, 0xB1A7, 0xB1A9, 0xB1AA,
+ 0xB1AB, 0xB1AC, 0xB1AD, 0xB1AE, 0xB1AF, 0xB1B0, 0xB1B1, 0xB1B2, 0xB1B3,
+ 0xB1B4, 0xB1B5, 0xB1B6, 0xB1B7, 0xB1B8, 0xB1B9, 0xB1BA, 0xB1BB, 0xB1BC,
+ 0xB1BD, 0xB1BE, 0xB1BF, 0xB1C0, 0xB1C1, 0xB1C2, 0xB1C3, 0xB1C4, 0xB1C5,
+ 0xB1C6, 0xB1C7, 0xB1C8, 0xB1C9, 0xB1CA, 0xB1CB, 0xB1CD, 0xB1CE, 0xB1CF,
+ 0xB1D1, 0xB1D2, 0xB1D3, 0xB1D5, 0xB1D6, 0xB1D7, 0xB1D8, 0xB1D9, 0xB1DA,
+ 0xB1DB, 0xB1DE, 0xB1E0, 0xB1E1, 0xB1E2, 0xB1E3, 0xB1E4, 0xB1E5, 0xB1E6,
+ 0xB1E7, 0xB1EA, 0xB1EB, 0xB1ED, 0xB1EE, 0xB1EF, 0xB1F1, 0xB1F2, 0xB1F3,
+ 0xB1F4, 0xB1F5, 0xB1F6, 0xB1F7, 0xB1F8, 0xB1FA, 0xB1FC, 0xB1FE, 0xB1FF,
+ 0xB200, 0xB201, 0xB202, 0xB203, 0xB206, 0xB207, 0xB209, 0xB20A, 0xB20D,
+ 0xB20E, 0xB20F, 0xB210, 0xB211, 0xB212, 0xB213, 0xB216, 0xB218, 0xB21A,
+ 0xB21B, 0xB21C, 0xB21D, 0xB21E, 0xB21F, 0xB221, 0xB222, 0xB223, 0xB224,
+ 0xB225, 0xB226, 0xB227, 0xB228, 0xB229, 0xB22A, 0xB22B, 0xB22C, 0xB22D,
+ 0xB22E, 0xB22F, 0xB230, 0xB231, 0xB232, 0xB233, 0xB235, 0xB236, 0xB237,
+ 0xB238, 0xB239, 0xB23A, 0xB23B, 0xB23D, 0xB23E, 0xB23F, 0xB240, 0xB241,
+ 0xB242, 0xB243, 0xB244, 0xB245, 0xB246, 0xB247, 0xB248, 0xB249, 0xB24A,
+ 0xB24B, 0xB24C, 0xB24D, 0xB24E, 0xB24F, 0xB250, 0xB251, 0xB252, 0xB253,
+ 0xB254, 0xB255, 0xB256, 0xB257, 0xB259, 0xB25A, 0xB25B, 0xB25D, 0xB25E,
+ 0xB25F, 0xB261, 0xB262, 0xB263, 0xB264, 0xB265, 0xB266, 0xB267, 0xB26A,
+ 0xB26B, 0xB26C, 0xB26D, 0xB26E, 0xB26F, 0xB270, 0xB271, 0xB272, 0xB273,
+ 0xB276, 0xB277, 0xB278, 0xB279, 0xB27A, 0xB27B, 0xB27D, 0xB27E, 0xB27F,
+ 0xB280, 0xB281, 0xB282, 0xB283, 0xB286, 0xB287, 0xB288, 0xB28A, 0xB28B,
+ 0xB28C, 0xB28D, 0xB28E, 0xB28F, 0xB292, 0xB293, 0xB295, 0xB296, 0xB297,
+ 0xB29B, 0xB29C, 0xB29D, 0xB29E, 0xB29F, 0xB2A2, 0xB2A4, 0xB2A7, 0xB2A8,
+ 0xB2A9, 0xB2AB, 0xB2AD, 0xB2AE, 0xB2AF, 0xB2B1, 0xB2B2, 0xB2B3, 0xB2B5,
+ 0xB2B6, 0xB2B7, 0xB2B8, 0xB2B9, 0xB2BA, 0xB2BB, 0xB2BC, 0xB2BD, 0xB2BE,
+ 0xB2BF, 0xB2C0, 0xB2C1, 0xB2C2, 0xB2C3, 0xB2C4, 0xB2C5, 0xB2C6, 0xB2C7,
+ 0xB2CA, 0xB2CB, 0xB2CD, 0xB2CE, 0xB2CF, 0xB2D1, 0xB2D3, 0xB2D4, 0xB2D5,
+ 0xB2D6, 0xB2D7, 0xB2DA, 0xB2DC, 0xB2DE, 0xB2DF, 0xB2E0, 0xB2E1, 0xB2E3,
+ 0xB2E7, 0xB2E9, 0xB2EA, 0xB2F0, 0xB2F1, 0xB2F2, 0xB2F6, 0xB2FC, 0xB2FD,
+ 0xB2FE, 0xB302, 0xB303, 0xB305, 0xB306, 0xB307, 0xB309, 0xB30A, 0xB30B,
+ 0xB30C, 0xB30D, 0xB30E, 0xB30F, 0xB312, 0xB316, 0xB317, 0xB318, 0xB319,
+ 0xB31A, 0xB31B, 0xB31D, 0xB31E, 0xB31F, 0xB320, 0xB321, 0xB322, 0xB323,
+ 0xB324, 0xB325, 0xB326, 0xB327, 0xB328, 0xB329, 0xB32A, 0xB32B, 0xB32C,
+ 0xB32D, 0xB32E, 0xB32F, 0xB330, 0xB331, 0xB332, 0xB333, 0xB334, 0xB335,
+ 0xB336, 0xB337, 0xB338, 0xB339, 0xB33A, 0xB33B, 0xB33C, 0xB33D, 0xB33E,
+ 0xB33F, 0xB340, 0xB341, 0xB342, 0xB343, 0xB344, 0xB345, 0xB346, 0xB347,
+ 0xB348, 0xB349, 0xB34A, 0xB34B, 0xB34C, 0xB34D, 0xB34E, 0xB34F, 0xB350,
+ 0xB351, 0xB352, 0xB353, 0xB357, 0xB359, 0xB35A, 0xB35D, 0xB360, 0xB361,
+ 0xB362, 0xB363, 0xB366, 0xB368, 0xB36A, 0xB36C, 0xB36D, 0xB36F, 0xB372,
+ 0xB373, 0xB375, 0xB376, 0xB377, 0xB379, 0xB37A, 0xB37B, 0xB37C, 0xB37D,
+ 0xB37E, 0xB37F, 0xB382, 0xB386, 0xB387, 0xB388, 0xB389, 0xB38A, 0xB38B,
+ 0xB38D, 0xB38E, 0xB38F, 0xB391, 0xB392, 0xB393, 0xB395, 0xB396, 0xB397,
+ 0xB398, 0xB399, 0xB39A, 0xB39B, 0xB39C, 0xB39D, 0xB39E, 0xB39F, 0xB3A2,
+ 0xB3A3, 0xB3A4, 0xB3A5, 0xB3A6, 0xB3A7, 0xB3A9, 0xB3AA, 0xB3AB, 0xB3AD,
+ 0xB3AE, 0xB3AF, 0xB3B0, 0xB3B1, 0xB3B2, 0xB3B3, 0xB3B4, 0xB3B5, 0xB3B6,
+ 0xB3B7, 0xB3B8, 0xB3B9, 0xB3BA, 0xB3BB, 0xB3BC, 0xB3BD, 0xB3BE, 0xB3BF,
+ 0xB3C0, 0xB3C1, 0xB3C2, 0xB3C3, 0xB3C6, 0xB3C7, 0xB3C9, 0xB3CA, 0xB3CD,
+ 0xB3CF, 0xB3D1, 0xB3D2, 0xB3D3, 0xB3D6, 0xB3D8, 0xB3DA, 0xB3DC, 0xB3DE,
+ 0xB3DF, 0xB3E1, 0xB3E2, 0xB3E3, 0xB3E5, 0xB3E6, 0xB3E7, 0xB3E9, 0xB3EA,
+ 0xB3EB, 0xB3EC, 0xB3ED, 0xB3EE, 0xB3EF, 0xB3F0, 0xB3F1, 0xB3F2, 0xB3F3,
+ 0xB3F4, 0xB3F5, 0xB3F6, 0xB3F7, 0xB3F8, 0xB3F9, 0xB3FA, 0xB3FB, 0xB3FD,
+ 0xB3FE, 0xB3FF, 0xB400, 0xB401, 0xB402, 0xB403, 0xB404, 0xB405, 0xB406,
+ 0xB407, 0xB408, 0xB409, 0xB40A, 0xB40B, 0xB40C, 0xB40D, 0xB40E, 0xB40F,
+ 0xB411, 0xB412, 0xB413, 0xB414, 0xB415, 0xB416, 0xB417, 0xB419, 0xB41A,
+ 0xB41B, 0xB41D, 0xB41E, 0xB41F, 0xB421, 0xB422, 0xB423, 0xB424, 0xB425,
+ 0xB426, 0xB427, 0xB42A, 0xB42C, 0xB42D, 0xB42E, 0xB42F, 0xB430, 0xB431,
+ 0xB432, 0xB433, 0xB435, 0xB436, 0xB437, 0xB438, 0xB439, 0xB43A, 0xB43B,
+ 0xB43C, 0xB43D, 0xB43E, 0xB43F, 0xB440, 0xB441, 0xB442, 0xB443, 0xB444,
+ 0xB445, 0xB446, 0xB447, 0xB448, 0xB449, 0xB44A, 0xB44B, 0xB44C, 0xB44D,
+ 0xB44E, 0xB44F, 0xB452, 0xB453, 0xB455, 0xB456, 0xB457, 0xB459, 0xB45A,
+ 0xB45B, 0xB45C, 0xB45D, 0xB45E, 0xB45F, 0xB462, 0xB464, 0xB466, 0xB467,
+ 0xB468, 0xB469, 0xB46A, 0xB46B, 0xB46D, 0xB46E, 0xB46F, 0xB470, 0xB471,
+ 0xB472, 0xB473, 0xB474, 0xB475, 0xB476, 0xB477, 0xB478, 0xB479, 0xB47A,
+ 0xB47B, 0xB47C, 0xB47D, 0xB47E, 0xB47F, 0xB481, 0xB482, 0xB483, 0xB484,
+ 0xB485, 0xB486, 0xB487, 0xB489, 0xB48A, 0xB48B, 0xB48C, 0xB48D, 0xB48E,
+ 0xB48F, 0xB490, 0xB491, 0xB492, 0xB493, 0xB494, 0xB495, 0xB496, 0xB497,
+ 0xB498, 0xB499, 0xB49A, 0xB49B, 0xB49C, 0xB49E, 0xB49F, 0xB4A0, 0xB4A1,
+ 0xB4A2, 0xB4A3, 0xB4A5, 0xB4A6, 0xB4A7, 0xB4A9, 0xB4AA, 0xB4AB, 0xB4AD,
+ 0xB4AE, 0xB4AF, 0xB4B0, 0xB4B1, 0xB4B2, 0xB4B3, 0xB4B4, 0xB4B6, 0xB4B8,
+ 0xB4BA, 0xB4BB, 0xB4BC, 0xB4BD, 0xB4BE, 0xB4BF, 0xB4C1, 0xB4C2, 0xB4C3,
+ 0xB4C5, 0xB4C6, 0xB4C7, 0xB4C9, 0xB4CA, 0xB4CB, 0xB4CC, 0xB4CD, 0xB4CE,
+ 0xB4CF, 0xB4D1, 0xB4D2, 0xB4D3, 0xB4D4, 0xB4D6, 0xB4D7, 0xB4D8, 0xB4D9,
+ 0xB4DA, 0xB4DB, 0xB4DE, 0xB4DF, 0xB4E1, 0xB4E2, 0xB4E5, 0xB4E7, 0xB4E8,
+ 0xB4E9, 0xB4EA, 0xB4EB, 0xB4EE, 0xB4F0, 0xB4F2, 0xB4F3, 0xB4F4, 0xB4F5,
+ 0xB4F6, 0xB4F7, 0xB4F9, 0xB4FA, 0xB4FB, 0xB4FC, 0xB4FD, 0xB4FE, 0xB4FF,
+ 0xB500, 0xB501, 0xB502, 0xB503, 0xB504, 0xB505, 0xB506, 0xB507, 0xB508,
+ 0xB509, 0xB50A, 0xB50B, 0xB50C, 0xB50D, 0xB50E, 0xB50F, 0xB510, 0xB511,
+ 0xB512, 0xB513, 0xB516, 0xB517, 0xB519, 0xB51A, 0xB51D, 0xB51E, 0xB51F,
+ 0xB520, 0xB521, 0xB522, 0xB523, 0xB526, 0xB52B, 0xB52C, 0xB52D, 0xB52E,
+ 0xB52F, 0xB532, 0xB533, 0xB535, 0xB536, 0xB537, 0xB539, 0xB53A, 0xB53B,
+ 0xB53C, 0xB53D, 0xB53E, 0xB53F, 0xB542, 0xB546, 0xB547, 0xB548, 0xB549,
+ 0xB54A, 0xB54E, 0xB54F, 0xB551, 0xB552, 0xB553, 0xB555, 0xB556, 0xB557,
+ 0xB558, 0xB559, 0xB55A, 0xB55B, 0xB55E, 0xB562, 0xB563, 0xB564, 0xB565,
+ 0xB566, 0xB567, 0xB568, 0xB569, 0xB56A, 0xB56B, 0xB56C, 0xB56D, 0xB56E,
+ 0xB56F, 0xB570, 0xB571, 0xB572, 0xB573, 0xB574, 0xB575, 0xB576, 0xB577,
+ 0xB578, 0xB579, 0xB57A, 0xB57B, 0xB57C, 0xB57D, 0xB57E, 0xB57F, 0xB580,
+ 0xB581, 0xB582, 0xB583, 0xB584, 0xB585, 0xB586, 0xB587, 0xB588, 0xB589,
+ 0xB58A, 0xB58B, 0xB58C, 0xB58D, 0xB58E, 0xB58F, 0xB590, 0xB591, 0xB592,
+ 0xB593, 0xB594, 0xB595, 0xB596, 0xB597, 0xB598, 0xB599, 0xB59A, 0xB59B,
+ 0xB59C, 0xB59D, 0xB59E, 0xB59F, 0xB5A2, 0xB5A3, 0xB5A5, 0xB5A6, 0xB5A7,
+ 0xB5A9, 0xB5AC, 0xB5AD, 0xB5AE, 0xB5AF, 0xB5B2, 0xB5B6, 0xB5B7, 0xB5B8,
+ 0xB5B9, 0xB5BA, 0xB5BE, 0xB5BF, 0xB5C1, 0xB5C2, 0xB5C3, 0xB5C5, 0xB5C6,
+ 0xB5C7, 0xB5C8, 0xB5C9, 0xB5CA, 0xB5CB, 0xB5CE, 0xB5D2, 0xB5D3, 0xB5D4,
+ 0xB5D5, 0xB5D6, 0xB5D7, 0xB5D9, 0xB5DA, 0xB5DB, 0xB5DC, 0xB5DD, 0xB5DE,
+ 0xB5DF, 0xB5E0, 0xB5E1, 0xB5E2, 0xB5E3, 0xB5E4, 0xB5E5, 0xB5E6, 0xB5E7,
+ 0xB5E8, 0xB5E9, 0xB5EA, 0xB5EB, 0xB5ED, 0xB5EE, 0xB5EF, 0xB5F0, 0xB5F1,
+ 0xB5F2, 0xB5F3, 0xB5F4, 0xB5F5, 0xB5F6, 0xB5F7, 0xB5F8, 0xB5F9, 0xB5FA,
+ 0xB5FB, 0xB5FC, 0xB5FD, 0xB5FE, 0xB5FF, 0xB600, 0xB601, 0xB602, 0xB603,
+ 0xB604, 0xB605, 0xB606, 0xB607, 0xB608, 0xB609, 0xB60A, 0xB60B, 0xB60C,
+ 0xB60D, 0xB60E, 0xB60F, 0xB612, 0xB613, 0xB615, 0xB616, 0xB617, 0xB619,
+ 0xB61A, 0xB61B, 0xB61C, 0xB61D, 0xB61E, 0xB61F, 0xB620, 0xB621, 0xB622,
+ 0xB623, 0xB624, 0xB626, 0xB627, 0xB628, 0xB629, 0xB62A, 0xB62B, 0xB62D,
+ 0xB62E, 0xB62F, 0xB630, 0xB631, 0xB632, 0xB633, 0xB635, 0xB636, 0xB637,
+ 0xB638, 0xB639, 0xB63A, 0xB63B, 0xB63C, 0xB63D, 0xB63E, 0xB63F, 0xB640,
+ 0xB641, 0xB642, 0xB643, 0xB644, 0xB645, 0xB646, 0xB647, 0xB649, 0xB64A,
+ 0xB64B, 0xB64C, 0xB64D, 0xB64E, 0xB64F, 0xB650, 0xB651, 0xB652, 0xB653,
+ 0xB654, 0xB655, 0xB656, 0xB657, 0xB658, 0xB659, 0xB65A, 0xB65B, 0xB65C,
+ 0xB65D, 0xB65E, 0xB65F, 0xB660, 0xB661, 0xB662, 0xB663, 0xB665, 0xB666,
+ 0xB667, 0xB669, 0xB66A, 0xB66B, 0xB66C, 0xB66D, 0xB66E, 0xB66F, 0xB670,
+ 0xB671, 0xB672, 0xB673, 0xB674, 0xB675, 0xB676, 0xB677, 0xB678, 0xB679,
+ 0xB67A, 0xB67B, 0xB67C, 0xB67D, 0xB67E, 0xB67F, 0xB680, 0xB681, 0xB682,
+ 0xB683, 0xB684, 0xB685, 0xB686, 0xB687, 0xB688, 0xB689, 0xB68A, 0xB68B,
+ 0xB68C, 0xB68D, 0xB68E, 0xB68F, 0xB690, 0xB691, 0xB692, 0xB693, 0xB694,
+ 0xB695, 0xB696, 0xB697, 0xB698, 0xB699, 0xB69A, 0xB69B, 0xB69E, 0xB69F,
+ 0xB6A1, 0xB6A2, 0xB6A3, 0xB6A5, 0xB6A6, 0xB6A7, 0xB6A8, 0xB6A9, 0xB6AA,
+ 0xB6AD, 0xB6AE, 0xB6AF, 0xB6B0, 0xB6B2, 0xB6B3, 0xB6B4, 0xB6B5, 0xB6B6,
+ 0xB6B7, 0xB6B8, 0xB6B9, 0xB6BA, 0xB6BB, 0xB6BC, 0xB6BD, 0xB6BE, 0xB6BF,
+ 0xB6C0, 0xB6C1, 0xB6C2, 0xB6C3, 0xB6C4, 0xB6C5, 0xB6C6, 0xB6C7, 0xB6C8,
+ 0xB6C9, 0xB6CA, 0xB6CB, 0xB6CC, 0xB6CD, 0xB6CE, 0xB6CF, 0xB6D0, 0xB6D1,
+ 0xB6D2, 0xB6D3, 0xB6D5, 0xB6D6, 0xB6D7, 0xB6D8, 0xB6D9, 0xB6DA, 0xB6DB,
+ 0xB6DC, 0xB6DD, 0xB6DE, 0xB6DF, 0xB6E0, 0xB6E1, 0xB6E2, 0xB6E3, 0xB6E4,
+ 0xB6E5, 0xB6E6, 0xB6E7, 0xB6E8, 0xB6E9, 0xB6EA, 0xB6EB, 0xB6EC, 0xB6ED,
+ 0xB6EE, 0xB6EF, 0xB6F1, 0xB6F2, 0xB6F3, 0xB6F5, 0xB6F6, 0xB6F7, 0xB6F9,
+ 0xB6FA, 0xB6FB, 0xB6FC, 0xB6FD, 0xB6FE, 0xB6FF, 0xB702, 0xB703, 0xB704,
+ 0xB706, 0xB707, 0xB708, 0xB709, 0xB70A, 0xB70B, 0xB70C, 0xB70D, 0xB70E,
+ 0xB70F, 0xB710, 0xB711, 0xB712, 0xB713, 0xB714, 0xB715, 0xB716, 0xB717,
+ 0xB718, 0xB719, 0xB71A, 0xB71B, 0xB71C, 0xB71D, 0xB71E, 0xB71F, 0xB720,
+ 0xB721, 0xB722, 0xB723, 0xB724, 0xB725, 0xB726, 0xB727, 0xB72A, 0xB72B,
+ 0xB72D, 0xB72E, 0xB731, 0xB732, 0xB733, 0xB734, 0xB735, 0xB736, 0xB737,
+ 0xB73A, 0xB73C, 0xB73D, 0xB73E, 0xB73F, 0xB740, 0xB741, 0xB742, 0xB743,
+ 0xB745, 0xB746, 0xB747, 0xB749, 0xB74A, 0xB74B, 0xB74D, 0xB74E, 0xB74F,
+ 0xB750, 0xB751, 0xB752, 0xB753, 0xB756, 0xB757, 0xB758, 0xB759, 0xB75A,
+ 0xB75B, 0xB75C, 0xB75D, 0xB75E, 0xB75F, 0xB761, 0xB762, 0xB763, 0xB765,
+ 0xB766, 0xB767, 0xB769, 0xB76A, 0xB76B, 0xB76C, 0xB76D, 0xB76E, 0xB76F,
+ 0xB772, 0xB774, 0xB776, 0xB777, 0xB778, 0xB779, 0xB77A, 0xB77B, 0xB77E,
+ 0xB77F, 0xB781, 0xB782, 0xB783, 0xB785, 0xB786, 0xB787, 0xB788, 0xB789,
+ 0xB78A, 0xB78B, 0xB78E, 0xB793, 0xB794, 0xB795, 0xB79A, 0xB79B, 0xB79D,
+ 0xB79E, 0xB79F, 0xB7A1, 0xB7A2, 0xB7A3, 0xB7A4, 0xB7A5, 0xB7A6, 0xB7A7,
+ 0xB7AA, 0xB7AE, 0xB7AF, 0xB7B0, 0xB7B1, 0xB7B2, 0xB7B3, 0xB7B6, 0xB7B7,
+ 0xB7B9, 0xB7BA, 0xB7BB, 0xB7BC, 0xB7BD, 0xB7BE, 0xB7BF, 0xB7C0, 0xB7C1,
+ 0xB7C2, 0xB7C3, 0xB7C4, 0xB7C5, 0xB7C6, 0xB7C8, 0xB7CA, 0xB7CB, 0xB7CC,
+ 0xB7CD, 0xB7CE, 0xB7CF, 0xB7D0, 0xB7D1, 0xB7D2, 0xB7D3, 0xB7D4, 0xB7D5,
+ 0xB7D6, 0xB7D7, 0xB7D8, 0xB7D9, 0xB7DA, 0xB7DB, 0xB7DC, 0xB7DD, 0xB7DE,
+ 0xB7DF, 0xB7E0, 0xB7E1, 0xB7E2, 0xB7E3, 0xB7E4, 0xB7E5, 0xB7E6, 0xB7E7,
+ 0xB7E8, 0xB7E9, 0xB7EA, 0xB7EB, 0xB7EE, 0xB7EF, 0xB7F1, 0xB7F2, 0xB7F3,
+ 0xB7F5, 0xB7F6, 0xB7F7, 0xB7F8, 0xB7F9, 0xB7FA, 0xB7FB, 0xB7FE, 0xB802,
+ 0xB803, 0xB804, 0xB805, 0xB806, 0xB80A, 0xB80B, 0xB80D, 0xB80E, 0xB80F,
+ 0xB811, 0xB812, 0xB813, 0xB814, 0xB815, 0xB816, 0xB817, 0xB81A, 0xB81C,
+ 0xB81E, 0xB81F, 0xB820, 0xB821, 0xB822, 0xB823, 0xB826, 0xB827, 0xB829,
+ 0xB82A, 0xB82B, 0xB82D, 0xB82E, 0xB82F, 0xB830, 0xB831, 0xB832, 0xB833,
+ 0xB836, 0xB83A, 0xB83B, 0xB83C, 0xB83D, 0xB83E, 0xB83F, 0xB841, 0xB842,
+ 0xB843, 0xB845, 0xB846, 0xB847, 0xB848, 0xB849, 0xB84A, 0xB84B, 0xB84C,
+ 0xB84D, 0xB84E, 0xB84F, 0xB850, 0xB852, 0xB854, 0xB855, 0xB856, 0xB857,
+ 0xB858, 0xB859, 0xB85A, 0xB85B, 0xB85E, 0xB85F, 0xB861, 0xB862, 0xB863,
+ 0xB865, 0xB866, 0xB867, 0xB868, 0xB869, 0xB86A, 0xB86B, 0xB86E, 0xB870,
+ 0xB872, 0xB873, 0xB874, 0xB875, 0xB876, 0xB877, 0xB879, 0xB87A, 0xB87B,
+ 0xB87D, 0xB87E, 0xB87F, 0xB880, 0xB881, 0xB882, 0xB883, 0xB884, 0xB885,
+ 0xB886, 0xB887, 0xB888, 0xB889, 0xB88A, 0xB88B, 0xB88C, 0xB88E, 0xB88F,
+ 0xB890, 0xB891, 0xB892, 0xB893, 0xB894, 0xB895, 0xB896, 0xB897, 0xB898,
+ 0xB899, 0xB89A, 0xB89B, 0xB89C, 0xB89D, 0xB89E, 0xB89F, 0xB8A0, 0xB8A1,
+ 0xB8A2, 0xB8A3, 0xB8A4, 0xB8A5, 0xB8A6, 0xB8A7, 0xB8A9, 0xB8AA, 0xB8AB,
+ 0xB8AC, 0xB8AD, 0xB8AE, 0xB8AF, 0xB8B1, 0xB8B2, 0xB8B3, 0xB8B5, 0xB8B6,
+ 0xB8B7, 0xB8B9, 0xB8BA, 0xB8BB, 0xB8BC, 0xB8BD, 0xB8BE, 0xB8BF, 0xB8C2,
+ 0xB8C4, 0xB8C6, 0xB8C7, 0xB8C8, 0xB8C9, 0xB8CA, 0xB8CB, 0xB8CD, 0xB8CE,
+ 0xB8CF, 0xB8D1, 0xB8D2, 0xB8D3, 0xB8D5, 0xB8D6, 0xB8D7, 0xB8D8, 0xB8D9,
+ 0xB8DA, 0xB8DB, 0xB8DC, 0xB8DE, 0xB8E0, 0xB8E2, 0xB8E3, 0xB8E4, 0xB8E5,
+ 0xB8E6, 0xB8E7, 0xB8EA, 0xB8EB, 0xB8ED, 0xB8EE, 0xB8EF, 0xB8F1, 0xB8F2,
+ 0xB8F3, 0xB8F4, 0xB8F5, 0xB8F6, 0xB8F7, 0xB8FA, 0xB8FC, 0xB8FE, 0xB8FF,
+ 0xB900, 0xB901, 0xB902, 0xB903, 0xB905, 0xB906, 0xB907, 0xB908, 0xB909,
+ 0xB90A, 0xB90B, 0xB90C, 0xB90D, 0xB90E, 0xB90F, 0xB910, 0xB911, 0xB912,
+ 0xB913, 0xB914, 0xB915, 0xB916, 0xB917, 0xB919, 0xB91A, 0xB91B, 0xB91C,
+ 0xB91D, 0xB91E, 0xB91F, 0xB921, 0xB922, 0xB923, 0xB924, 0xB925, 0xB926,
+ 0xB927, 0xB928, 0xB929, 0xB92A, 0xB92B, 0xB92C, 0xB92D, 0xB92E, 0xB92F,
+ 0xB930, 0xB931, 0xB932, 0xB933, 0xB934, 0xB935, 0xB936, 0xB937, 0xB938,
+ 0xB939, 0xB93A, 0xB93B, 0xB93E, 0xB93F, 0xB941, 0xB942, 0xB943, 0xB945,
+ 0xB946, 0xB947, 0xB948, 0xB949, 0xB94A, 0xB94B, 0xB94D, 0xB94E, 0xB950,
+ 0xB952, 0xB953, 0xB954, 0xB955, 0xB956, 0xB957, 0xB95A, 0xB95B, 0xB95D,
+ 0xB95E, 0xB95F, 0xB961, 0xB962, 0xB963, 0xB964, 0xB965, 0xB966, 0xB967,
+ 0xB96A, 0xB96C, 0xB96E, 0xB96F, 0xB970, 0xB971, 0xB972, 0xB973, 0xB976,
+ 0xB977, 0xB979, 0xB97A, 0xB97B, 0xB97D, 0xB97E, 0xB97F, 0xB980, 0xB981,
+ 0xB982, 0xB983, 0xB986, 0xB988, 0xB98B, 0xB98C, 0xB98F, 0xB990, 0xB991,
+ 0xB992, 0xB993, 0xB994, 0xB995, 0xB996, 0xB997, 0xB998, 0xB999, 0xB99A,
+ 0xB99B, 0xB99C, 0xB99D, 0xB99E, 0xB99F, 0xB9A0, 0xB9A1, 0xB9A2, 0xB9A3,
+ 0xB9A4, 0xB9A5, 0xB9A6, 0xB9A7, 0xB9A8, 0xB9A9, 0xB9AA, 0xB9AB, 0xB9AE,
+ 0xB9AF, 0xB9B1, 0xB9B2, 0xB9B3, 0xB9B5, 0xB9B6, 0xB9B7, 0xB9B8, 0xB9B9,
+ 0xB9BA, 0xB9BB, 0xB9BE, 0xB9C0, 0xB9C2, 0xB9C3, 0xB9C4, 0xB9C5, 0xB9C6,
+ 0xB9C7, 0xB9CA, 0xB9CB, 0xB9CD, 0xB9D3, 0xB9D4, 0xB9D5, 0xB9D6, 0xB9D7,
+ 0xB9DA, 0xB9DC, 0xB9DF, 0xB9E0, 0xB9E2, 0xB9E6, 0xB9E7, 0xB9E9, 0xB9EA,
+ 0xB9EB, 0xB9ED, 0xB9EE, 0xB9EF, 0xB9F0, 0xB9F1, 0xB9F2, 0xB9F3, 0xB9F6,
+ 0xB9FB, 0xB9FC, 0xB9FD, 0xB9FE, 0xB9FF, 0xBA02, 0xBA03, 0xBA04, 0xBA05,
+ 0xBA06, 0xBA07, 0xBA09, 0xBA0A, 0xBA0B, 0xBA0C, 0xBA0D, 0xBA0E, 0xBA0F,
+ 0xBA10, 0xBA11, 0xBA12, 0xBA13, 0xBA14, 0xBA16, 0xBA17, 0xBA18, 0xBA19,
+ 0xBA1A, 0xBA1B, 0xBA1C, 0xBA1D, 0xBA1E, 0xBA1F, 0xBA20, 0xBA21, 0xBA22,
+ 0xBA23, 0xBA24, 0xBA25, 0xBA26, 0xBA27, 0xBA28, 0xBA29, 0xBA2A, 0xBA2B,
+ 0xBA2C, 0xBA2D, 0xBA2E, 0xBA2F, 0xBA30, 0xBA31, 0xBA32, 0xBA33, 0xBA34,
+ 0xBA35, 0xBA36, 0xBA37, 0xBA3A, 0xBA3B, 0xBA3D, 0xBA3E, 0xBA3F, 0xBA41,
+ 0xBA43, 0xBA44, 0xBA45, 0xBA46, 0xBA47, 0xBA4A, 0xBA4C, 0xBA4F, 0xBA50,
+ 0xBA51, 0xBA52, 0xBA56, 0xBA57, 0xBA59, 0xBA5A, 0xBA5B, 0xBA5D, 0xBA5E,
+ 0xBA5F, 0xBA60, 0xBA61, 0xBA62, 0xBA63, 0xBA66, 0xBA6A, 0xBA6B, 0xBA6C,
+ 0xBA6D, 0xBA6E, 0xBA6F, 0xBA72, 0xBA73, 0xBA75, 0xBA76, 0xBA77, 0xBA79,
+ 0xBA7A, 0xBA7B, 0xBA7C, 0xBA7D, 0xBA7E, 0xBA7F, 0xBA80, 0xBA81, 0xBA82,
+ 0xBA86, 0xBA88, 0xBA89, 0xBA8A, 0xBA8B, 0xBA8D, 0xBA8E, 0xBA8F, 0xBA90,
+ 0xBA91, 0xBA92, 0xBA93, 0xBA94, 0xBA95, 0xBA96, 0xBA97, 0xBA98, 0xBA99,
+ 0xBA9A, 0xBA9B, 0xBA9C, 0xBA9D, 0xBA9E, 0xBA9F, 0xBAA0, 0xBAA1, 0xBAA2,
+ 0xBAA3, 0xBAA4, 0xBAA5, 0xBAA6, 0xBAA7, 0xBAAA, 0xBAAD, 0xBAAE, 0xBAAF,
+ 0xBAB1, 0xBAB3, 0xBAB4, 0xBAB5, 0xBAB6, 0xBAB7, 0xBABA, 0xBABC, 0xBABE,
+ 0xBABF, 0xBAC0, 0xBAC1, 0xBAC2, 0xBAC3, 0xBAC5, 0xBAC6, 0xBAC7, 0xBAC9,
+ 0xBACA, 0xBACB, 0xBACC, 0xBACD, 0xBACE, 0xBACF, 0xBAD0, 0xBAD1, 0xBAD2,
+ 0xBAD3, 0xBAD4, 0xBAD5, 0xBAD6, 0xBAD7, 0xBADA, 0xBADB, 0xBADC, 0xBADD,
+ 0xBADE, 0xBADF, 0xBAE0, 0xBAE1, 0xBAE2, 0xBAE3, 0xBAE4, 0xBAE5, 0xBAE6,
+ 0xBAE7, 0xBAE8, 0xBAE9, 0xBAEA, 0xBAEB, 0xBAEC, 0xBAED, 0xBAEE, 0xBAEF,
+ 0xBAF0, 0xBAF1, 0xBAF2, 0xBAF3, 0xBAF4, 0xBAF5, 0xBAF6, 0xBAF7, 0xBAF8,
+ 0xBAF9, 0xBAFA, 0xBAFB, 0xBAFD, 0xBAFE, 0xBAFF, 0xBB01, 0xBB02, 0xBB03,
+ 0xBB05, 0xBB06, 0xBB07, 0xBB08, 0xBB09, 0xBB0A, 0xBB0B, 0xBB0C, 0xBB0E,
+ 0xBB10, 0xBB12, 0xBB13, 0xBB14, 0xBB15, 0xBB16, 0xBB17, 0xBB19, 0xBB1A,
+ 0xBB1B, 0xBB1D, 0xBB1E, 0xBB1F, 0xBB21, 0xBB22, 0xBB23, 0xBB24, 0xBB25,
+ 0xBB26, 0xBB27, 0xBB28, 0xBB2A, 0xBB2C, 0xBB2D, 0xBB2E, 0xBB2F, 0xBB30,
+ 0xBB31, 0xBB32, 0xBB33, 0xBB37, 0xBB39, 0xBB3A, 0xBB3F, 0xBB40, 0xBB41,
+ 0xBB42, 0xBB43, 0xBB46, 0xBB48, 0xBB4A, 0xBB4B, 0xBB4C, 0xBB4E, 0xBB51,
+ 0xBB52, 0xBB53, 0xBB55, 0xBB56, 0xBB57, 0xBB59, 0xBB5A, 0xBB5B, 0xBB5C,
+ 0xBB5D, 0xBB5E, 0xBB5F, 0xBB60, 0xBB62, 0xBB64, 0xBB65, 0xBB66, 0xBB67,
+ 0xBB68, 0xBB69, 0xBB6A, 0xBB6B, 0xBB6D, 0xBB6E, 0xBB6F, 0xBB70, 0xBB71,
+ 0xBB72, 0xBB73, 0xBB74, 0xBB75, 0xBB76, 0xBB77, 0xBB78, 0xBB79, 0xBB7A,
+ 0xBB7B, 0xBB7C, 0xBB7D, 0xBB7E, 0xBB7F, 0xBB80, 0xBB81, 0xBB82, 0xBB83,
+ 0xBB84, 0xBB85, 0xBB86, 0xBB87, 0xBB89, 0xBB8A, 0xBB8B, 0xBB8D, 0xBB8E,
+ 0xBB8F, 0xBB91, 0xBB92, 0xBB93, 0xBB94, 0xBB95, 0xBB96, 0xBB97, 0xBB98,
+ 0xBB99, 0xBB9A, 0xBB9B, 0xBB9C, 0xBB9D, 0xBB9E, 0xBB9F, 0xBBA0, 0xBBA1,
+ 0xBBA2, 0xBBA3, 0xBBA5, 0xBBA6, 0xBBA7, 0xBBA9, 0xBBAA, 0xBBAB, 0xBBAD,
+ 0xBBAE, 0xBBAF, 0xBBB0, 0xBBB1, 0xBBB2, 0xBBB3, 0xBBB5, 0xBBB6, 0xBBB8,
+ 0xBBB9, 0xBBBA, 0xBBBB, 0xBBBC, 0xBBBD, 0xBBBE, 0xBBBF, 0xBBC1, 0xBBC2,
+ 0xBBC3, 0xBBC5, 0xBBC6, 0xBBC7, 0xBBC9, 0xBBCA, 0xBBCB, 0xBBCC, 0xBBCD,
+ 0xBBCE, 0xBBCF, 0xBBD1, 0xBBD2, 0xBBD4, 0xBBD5, 0xBBD6, 0xBBD7, 0xBBD8,
+ 0xBBD9, 0xBBDA, 0xBBDB, 0xBBDC, 0xBBDD, 0xBBDE, 0xBBDF, 0xBBE0, 0xBBE1,
+ 0xBBE2, 0xBBE3, 0xBBE4, 0xBBE5, 0xBBE6, 0xBBE7, 0xBBE8, 0xBBE9, 0xBBEA,
+ 0xBBEB, 0xBBEC, 0xBBED, 0xBBEE, 0xBBEF, 0xBBF0, 0xBBF1, 0xBBF2, 0xBBF3,
+ 0xBBF4, 0xBBF5, 0xBBF6, 0xBBF7, 0xBBFA, 0xBBFB, 0xBBFD, 0xBBFE, 0xBC01,
+ 0xBC03, 0xBC04, 0xBC05, 0xBC06, 0xBC07, 0xBC0A, 0xBC0E, 0xBC10, 0xBC12,
+ 0xBC13, 0xBC19, 0xBC1A, 0xBC20, 0xBC21, 0xBC22, 0xBC23, 0xBC26, 0xBC28,
+ 0xBC2A, 0xBC2B, 0xBC2C, 0xBC2E, 0xBC2F, 0xBC32, 0xBC33, 0xBC35, 0xBC36,
+ 0xBC37, 0xBC39, 0xBC3A, 0xBC3B, 0xBC3C, 0xBC3D, 0xBC3E, 0xBC3F, 0xBC42,
+ 0xBC46, 0xBC47, 0xBC48, 0xBC4A, 0xBC4B, 0xBC4E, 0xBC4F, 0xBC51, 0xBC52,
+ 0xBC53, 0xBC54, 0xBC55, 0xBC56, 0xBC57, 0xBC58, 0xBC59, 0xBC5A, 0xBC5B,
+ 0xBC5C, 0xBC5E, 0xBC5F, 0xBC60, 0xBC61, 0xBC62, 0xBC63, 0xBC64, 0xBC65,
+ 0xBC66, 0xBC67, 0xBC68, 0xBC69, 0xBC6A, 0xBC6B, 0xBC6C, 0xBC6D, 0xBC6E,
+ 0xBC6F, 0xBC70, 0xBC71, 0xBC72, 0xBC73, 0xBC74, 0xBC75, 0xBC76, 0xBC77,
+ 0xBC78, 0xBC79, 0xBC7A, 0xBC7B, 0xBC7C, 0xBC7D, 0xBC7E, 0xBC7F, 0xBC80,
+ 0xBC81, 0xBC82, 0xBC83, 0xBC86, 0xBC87, 0xBC89, 0xBC8A, 0xBC8D, 0xBC8F,
+ 0xBC90, 0xBC91, 0xBC92, 0xBC93, 0xBC96, 0xBC98, 0xBC9B, 0xBC9C, 0xBC9D,
+ 0xBC9E, 0xBC9F, 0xBCA2, 0xBCA3, 0xBCA5, 0xBCA6, 0xBCA9, 0xBCAA, 0xBCAB,
+ 0xBCAC, 0xBCAD, 0xBCAE, 0xBCAF, 0xBCB2, 0xBCB6, 0xBCB7, 0xBCB8, 0xBCB9,
+ 0xBCBA, 0xBCBB, 0xBCBE, 0xBCBF, 0xBCC1, 0xBCC2, 0xBCC3, 0xBCC5, 0xBCC6,
+ 0xBCC7, 0xBCC8, 0xBCC9, 0xBCCA, 0xBCCB, 0xBCCC, 0xBCCE, 0xBCD2, 0xBCD3,
+ 0xBCD4, 0xBCD6, 0xBCD7, 0xBCD9, 0xBCDA, 0xBCDB, 0xBCDD, 0xBCDE, 0xBCDF,
+ 0xBCE0, 0xBCE1, 0xBCE2, 0xBCE3, 0xBCE4, 0xBCE5, 0xBCE6, 0xBCE7, 0xBCE8,
+ 0xBCE9, 0xBCEA, 0xBCEB, 0xBCEC, 0xBCED, 0xBCEE, 0xBCEF, 0xBCF0, 0xBCF1,
+ 0xBCF2, 0xBCF3, 0xBCF7, 0xBCF9, 0xBCFA, 0xBCFB, 0xBCFD, 0xBCFE, 0xBCFF,
+ 0xBD00, 0xBD01, 0xBD02, 0xBD03, 0xBD06, 0xBD08, 0xBD0A, 0xBD0B, 0xBD0C,
+ 0xBD0D, 0xBD0E, 0xBD0F, 0xBD11, 0xBD12, 0xBD13, 0xBD15, 0xBD16, 0xBD17,
+ 0xBD18, 0xBD19, 0xBD1A, 0xBD1B, 0xBD1C, 0xBD1D, 0xBD1E, 0xBD1F, 0xBD20,
+ 0xBD21, 0xBD22, 0xBD23, 0xBD25, 0xBD26, 0xBD27, 0xBD28, 0xBD29, 0xBD2A,
+ 0xBD2B, 0xBD2D, 0xBD2E, 0xBD2F, 0xBD30, 0xBD31, 0xBD32, 0xBD33, 0xBD34,
+ 0xBD35, 0xBD36, 0xBD37, 0xBD38, 0xBD39, 0xBD3A, 0xBD3B, 0xBD3C, 0xBD3D,
+ 0xBD3E, 0xBD3F, 0xBD41, 0xBD42, 0xBD43, 0xBD44, 0xBD45, 0xBD46, 0xBD47,
+ 0xBD4A, 0xBD4B, 0xBD4D, 0xBD4E, 0xBD4F, 0xBD51, 0xBD52, 0xBD53, 0xBD54,
+ 0xBD55, 0xBD56, 0xBD57, 0xBD5A, 0xBD5B, 0xBD5C, 0xBD5D, 0xBD5E, 0xBD5F,
+ 0xBD60, 0xBD61, 0xBD62, 0xBD63, 0xBD65, 0xBD66, 0xBD67, 0xBD69, 0xBD6A,
+ 0xBD6B, 0xBD6C, 0xBD6D, 0xBD6E, 0xBD6F, 0xBD70, 0xBD71, 0xBD72, 0xBD73,
+ 0xBD74, 0xBD75, 0xBD76, 0xBD77, 0xBD78, 0xBD79, 0xBD7A, 0xBD7B, 0xBD7C,
+ 0xBD7D, 0xBD7E, 0xBD7F, 0xBD82, 0xBD83, 0xBD85, 0xBD86, 0xBD8B, 0xBD8C,
+ 0xBD8D, 0xBD8E, 0xBD8F, 0xBD92, 0xBD94, 0xBD96, 0xBD97, 0xBD98, 0xBD9B,
+ 0xBD9D, 0xBD9E, 0xBD9F, 0xBDA0, 0xBDA1, 0xBDA2, 0xBDA3, 0xBDA5, 0xBDA6,
+ 0xBDA7, 0xBDA8, 0xBDA9, 0xBDAA, 0xBDAB, 0xBDAC, 0xBDAD, 0xBDAE, 0xBDAF,
+ 0xBDB1, 0xBDB2, 0xBDB3, 0xBDB4, 0xBDB5, 0xBDB6, 0xBDB7, 0xBDB9, 0xBDBA,
+ 0xBDBB, 0xBDBC, 0xBDBD, 0xBDBE, 0xBDBF, 0xBDC0, 0xBDC1, 0xBDC2, 0xBDC3,
+ 0xBDC4, 0xBDC5, 0xBDC6, 0xBDC7, 0xBDC8, 0xBDC9, 0xBDCA, 0xBDCB, 0xBDCC,
+ 0xBDCD, 0xBDCE, 0xBDCF, 0xBDD0, 0xBDD1, 0xBDD2, 0xBDD3, 0xBDD6, 0xBDD7,
+ 0xBDD9, 0xBDDA, 0xBDDB, 0xBDDD, 0xBDDE, 0xBDDF, 0xBDE0, 0xBDE1, 0xBDE2,
+ 0xBDE3, 0xBDE4, 0xBDE5, 0xBDE6, 0xBDE7, 0xBDE8, 0xBDEA, 0xBDEB, 0xBDEC,
+ 0xBDED, 0xBDEE, 0xBDEF, 0xBDF1, 0xBDF2, 0xBDF3, 0xBDF5, 0xBDF6, 0xBDF7,
+ 0xBDF9, 0xBDFA, 0xBDFB, 0xBDFC, 0xBDFD, 0xBDFE, 0xBDFF, 0xBE01, 0xBE02,
+ 0xBE04, 0xBE06, 0xBE07, 0xBE08, 0xBE09, 0xBE0A, 0xBE0B, 0xBE0E, 0xBE0F,
+ 0xBE11, 0xBE12, 0xBE13, 0xBE15, 0xBE16, 0xBE17, 0xBE18, 0xBE19, 0xBE1A,
+ 0xBE1B, 0xBE1E, 0xBE20, 0xBE21, 0xBE22, 0xBE23, 0xBE24, 0xBE25, 0xBE26,
+ 0xBE27, 0xBE28, 0xBE29, 0xBE2A, 0xBE2B, 0xBE2C, 0xBE2D, 0xBE2E, 0xBE2F,
+ 0xBE30, 0xBE31, 0xBE32, 0xBE33, 0xBE34, 0xBE35, 0xBE36, 0xBE37, 0xBE38,
+ 0xBE39, 0xBE3A, 0xBE3B, 0xBE3C, 0xBE3D, 0xBE3E, 0xBE3F, 0xBE40, 0xBE41,
+ 0xBE42, 0xBE43, 0xBE46, 0xBE47, 0xBE49, 0xBE4A, 0xBE4B, 0xBE4D, 0xBE4F,
+ 0xBE50, 0xBE51, 0xBE52, 0xBE53, 0xBE56, 0xBE58, 0xBE5C, 0xBE5D, 0xBE5E,
+ 0xBE5F, 0xBE62, 0xBE63, 0xBE65, 0xBE66, 0xBE67, 0xBE69, 0xBE6B, 0xBE6C,
+ 0xBE6D, 0xBE6E, 0xBE6F, 0xBE72, 0xBE76, 0xBE77, 0xBE78, 0xBE79, 0xBE7A,
+ 0xBE7E, 0xBE7F, 0xBE81, 0xBE82, 0xBE83, 0xBE85, 0xBE86, 0xBE87, 0xBE88,
+ 0xBE89, 0xBE8A, 0xBE8B, 0xBE8E, 0xBE92, 0xBE93, 0xBE94, 0xBE95, 0xBE96,
+ 0xBE97, 0xBE9A, 0xBE9B, 0xBE9C, 0xBE9D, 0xBE9E, 0xBE9F, 0xBEA0, 0xBEA1,
+ 0xBEA2, 0xBEA3, 0xBEA4, 0xBEA5, 0xBEA6, 0xBEA7, 0xBEA9, 0xBEAA, 0xBEAB,
+ 0xBEAC, 0xBEAD, 0xBEAE, 0xBEAF, 0xBEB0, 0xBEB1, 0xBEB2, 0xBEB3, 0xBEB4,
+ 0xBEB5, 0xBEB6, 0xBEB7, 0xBEB8, 0xBEB9, 0xBEBA, 0xBEBB, 0xBEBC, 0xBEBD,
+ 0xBEBE, 0xBEBF, 0xBEC0, 0xBEC1, 0xBEC2, 0xBEC3, 0xBEC4, 0xBEC5, 0xBEC6,
+ 0xBEC7, 0xBEC8, 0xBEC9, 0xBECA, 0xBECB, 0xBECC, 0xBECD, 0xBECE, 0xBECF,
+ 0xBED2, 0xBED3, 0xBED5, 0xBED6, 0xBED9, 0xBEDA, 0xBEDB, 0xBEDC, 0xBEDD,
+ 0xBEDE, 0xBEDF, 0xBEE1, 0xBEE2, 0xBEE6, 0xBEE7, 0xBEE8, 0xBEE9, 0xBEEA,
+ 0xBEEB, 0xBEED, 0xBEEE, 0xBEEF, 0xBEF0, 0xBEF1, 0xBEF2, 0xBEF3, 0xBEF4,
+ 0xBEF5, 0xBEF6, 0xBEF7, 0xBEF8, 0xBEF9, 0xBEFA, 0xBEFB, 0xBEFC, 0xBEFD,
+ 0xBEFE, 0xBEFF, 0xBF00, 0xBF02, 0xBF03, 0xBF04, 0xBF05, 0xBF06, 0xBF07,
+ 0xBF0A, 0xBF0B, 0xBF0C, 0xBF0D, 0xBF0E, 0xBF0F, 0xBF10, 0xBF11, 0xBF12,
+ 0xBF13, 0xBF14, 0xBF15, 0xBF16, 0xBF17, 0xBF1A, 0xBF1E, 0xBF1F, 0xBF20,
+ 0xBF21, 0xBF22, 0xBF23, 0xBF24, 0xBF25, 0xBF26, 0xBF27, 0xBF28, 0xBF29,
+ 0xBF2A, 0xBF2B, 0xBF2C, 0xBF2D, 0xBF2E, 0xBF2F, 0xBF30, 0xBF31, 0xBF32,
+ 0xBF33, 0xBF34, 0xBF35, 0xBF36, 0xBF37, 0xBF38, 0xBF39, 0xBF3A, 0xBF3B,
+ 0xBF3C, 0xBF3D, 0xBF3E, 0xBF3F, 0xBF42, 0xBF43, 0xBF45, 0xBF46, 0xBF47,
+ 0xBF49, 0xBF4A, 0xBF4B, 0xBF4C, 0xBF4D, 0xBF4E, 0xBF4F, 0xBF52, 0xBF53,
+ 0xBF54, 0xBF56, 0xBF57, 0xBF58, 0xBF59, 0xBF5A, 0xBF5B, 0xBF5C, 0xBF5D,
+ 0xBF5E, 0xBF5F, 0xBF60, 0xBF61, 0xBF62, 0xBF63, 0xBF64, 0xBF65, 0xBF66,
+ 0xBF67, 0xBF68, 0xBF69, 0xBF6A, 0xBF6B, 0xBF6C, 0xBF6D, 0xBF6E, 0xBF6F,
+ 0xBF70, 0xBF71, 0xBF72, 0xBF73, 0xBF74, 0xBF75, 0xBF76, 0xBF77, 0xBF78,
+ 0xBF79, 0xBF7A, 0xBF7B, 0xBF7C, 0xBF7D, 0xBF7E, 0xBF7F, 0xBF80, 0xBF81,
+ 0xBF82, 0xBF83, 0xBF84, 0xBF85, 0xBF86, 0xBF87, 0xBF88, 0xBF89, 0xBF8A,
+ 0xBF8B, 0xBF8C, 0xBF8D, 0xBF8E, 0xBF8F, 0xBF90, 0xBF91, 0xBF92, 0xBF93,
+ 0xBF95, 0xBF96, 0xBF97, 0xBF98, 0xBF99, 0xBF9A, 0xBF9B, 0xBF9C, 0xBF9D,
+ 0xBF9E, 0xBF9F, 0xBFA0, 0xBFA1, 0xBFA2, 0xBFA3, 0xBFA4, 0xBFA5, 0xBFA6,
+ 0xBFA7, 0xBFA8, 0xBFA9, 0xBFAA, 0xBFAB, 0xBFAC, 0xBFAD, 0xBFAE, 0xBFAF,
+ 0xBFB1, 0xBFB2, 0xBFB3, 0xBFB4, 0xBFB5, 0xBFB6, 0xBFB7, 0xBFB8, 0xBFB9,
+ 0xBFBA, 0xBFBB, 0xBFBC, 0xBFBD, 0xBFBE, 0xBFBF, 0xBFC0, 0xBFC1, 0xBFC2,
+ 0xBFC3, 0xBFC4, 0xBFC6, 0xBFC7, 0xBFC8, 0xBFC9, 0xBFCA, 0xBFCB, 0xBFCE,
+ 0xBFCF, 0xBFD1, 0xBFD2, 0xBFD3, 0xBFD5, 0xBFD6, 0xBFD7, 0xBFD8, 0xBFD9,
+ 0xBFDA, 0xBFDB, 0xBFDD, 0xBFDE, 0xBFE0, 0xBFE2, 0xBFE3, 0xBFE4, 0xBFE5,
+ 0xBFE6, 0xBFE7, 0xBFE8, 0xBFE9, 0xBFEA, 0xBFEB, 0xBFEC, 0xBFED, 0xBFEE,
+ 0xBFEF, 0xBFF0, 0xBFF1, 0xBFF2, 0xBFF3, 0xBFF4, 0xBFF5, 0xBFF6, 0xBFF7,
+ 0xBFF8, 0xBFF9, 0xBFFA, 0xBFFB, 0xBFFC, 0xBFFD, 0xBFFE, 0xBFFF, 0xC000,
+ 0xC001, 0xC002, 0xC003, 0xC004, 0xC005, 0xC006, 0xC007, 0xC008, 0xC009,
+ 0xC00A, 0xC00B, 0xC00C, 0xC00D, 0xC00E, 0xC00F, 0xC010, 0xC011, 0xC012,
+ 0xC013, 0xC014, 0xC015, 0xC016, 0xC017, 0xC018, 0xC019, 0xC01A, 0xC01B,
+ 0xC01C, 0xC01D, 0xC01E, 0xC01F, 0xC020, 0xC021, 0xC022, 0xC023, 0xC024,
+ 0xC025, 0xC026, 0xC027, 0xC028, 0xC029, 0xC02A, 0xC02B, 0xC02C, 0xC02D,
+ 0xC02E, 0xC02F, 0xC030, 0xC031, 0xC032, 0xC033, 0xC034, 0xC035, 0xC036,
+ 0xC037, 0xC038, 0xC039, 0xC03A, 0xC03B, 0xC03D, 0xC03E, 0xC03F, 0xC040,
+ 0xC041, 0xC042, 0xC043, 0xC044, 0xC045, 0xC046, 0xC047, 0xC048, 0xC049,
+ 0xC04A, 0xC04B, 0xC04C, 0xC04D, 0xC04E, 0xC04F, 0xC050, 0xC052, 0xC053,
+ 0xC054, 0xC055, 0xC056, 0xC057, 0xC059, 0xC05A, 0xC05B, 0xC05D, 0xC05E,
+ 0xC05F, 0xC061, 0xC062, 0xC063, 0xC064, 0xC065, 0xC066, 0xC067, 0xC06A,
+ 0xC06B, 0xC06C, 0xC06D, 0xC06E, 0xC06F, 0xC070, 0xC071, 0xC072, 0xC073,
+ 0xC074, 0xC075, 0xC076, 0xC077, 0xC078, 0xC079, 0xC07A, 0xC07B, 0xC07C,
+ 0xC07D, 0xC07E, 0xC07F, 0xC080, 0xC081, 0xC082, 0xC083, 0xC084, 0xC085,
+ 0xC086, 0xC087, 0xC088, 0xC089, 0xC08A, 0xC08B, 0xC08C, 0xC08D, 0xC08E,
+ 0xC08F, 0xC092, 0xC093, 0xC095, 0xC096, 0xC097, 0xC099, 0xC09A, 0xC09B,
+ 0xC09C, 0xC09D, 0xC09E, 0xC09F, 0xC0A2, 0xC0A4, 0xC0A6, 0xC0A7, 0xC0A8,
+ 0xC0A9, 0xC0AA, 0xC0AB, 0xC0AE, 0xC0B1, 0xC0B2, 0xC0B7, 0xC0B8, 0xC0B9,
+ 0xC0BA, 0xC0BB, 0xC0BE, 0xC0C2, 0xC0C3, 0xC0C4, 0xC0C6, 0xC0C7, 0xC0CA,
+ 0xC0CB, 0xC0CD, 0xC0CE, 0xC0CF, 0xC0D1, 0xC0D2, 0xC0D3, 0xC0D4, 0xC0D5,
+ 0xC0D6, 0xC0D7, 0xC0DA, 0xC0DE, 0xC0DF, 0xC0E0, 0xC0E1, 0xC0E2, 0xC0E3,
+ 0xC0E6, 0xC0E7, 0xC0E9, 0xC0EA, 0xC0EB, 0xC0ED, 0xC0EE, 0xC0EF, 0xC0F0,
+ 0xC0F1, 0xC0F2, 0xC0F3, 0xC0F6, 0xC0F8, 0xC0FA, 0xC0FB, 0xC0FC, 0xC0FD,
+ 0xC0FE, 0xC0FF, 0xC101, 0xC102, 0xC103, 0xC105, 0xC106, 0xC107, 0xC109,
+ 0xC10A, 0xC10B, 0xC10C, 0xC10D, 0xC10E, 0xC10F, 0xC111, 0xC112, 0xC113,
+ 0xC114, 0xC116, 0xC117, 0xC118, 0xC119, 0xC11A, 0xC11B, 0xC121, 0xC122,
+ 0xC125, 0xC128, 0xC129, 0xC12A, 0xC12B, 0xC12E, 0xC132, 0xC133, 0xC134,
+ 0xC135, 0xC137, 0xC13A, 0xC13B, 0xC13D, 0xC13E, 0xC13F, 0xC141, 0xC142,
+ 0xC143, 0xC144, 0xC145, 0xC146, 0xC147, 0xC14A, 0xC14E, 0xC14F, 0xC150,
+ 0xC151, 0xC152, 0xC153, 0xC156, 0xC157, 0xC159, 0xC15A, 0xC15B, 0xC15D,
+ 0xC15E, 0xC15F, 0xC160, 0xC161, 0xC162, 0xC163, 0xC166, 0xC16A, 0xC16B,
+ 0xC16C, 0xC16D, 0xC16E, 0xC16F, 0xC171, 0xC172, 0xC173, 0xC175, 0xC176,
+ 0xC177, 0xC179, 0xC17A, 0xC17B, 0xC17C, 0xC17D, 0xC17E, 0xC17F, 0xC180,
+ 0xC181, 0xC182, 0xC183, 0xC184, 0xC186, 0xC187, 0xC188, 0xC189, 0xC18A,
+ 0xC18B, 0xC18F, 0xC191, 0xC192, 0xC193, 0xC195, 0xC197, 0xC198, 0xC199,
+ 0xC19A, 0xC19B, 0xC19E, 0xC1A0, 0xC1A2, 0xC1A3, 0xC1A4, 0xC1A6, 0xC1A7,
+ 0xC1AA, 0xC1AB, 0xC1AD, 0xC1AE, 0xC1AF, 0xC1B1, 0xC1B2, 0xC1B3, 0xC1B4,
+ 0xC1B5, 0xC1B6, 0xC1B7, 0xC1B8, 0xC1B9, 0xC1BA, 0xC1BB, 0xC1BC, 0xC1BE,
+ 0xC1BF, 0xC1C0, 0xC1C1, 0xC1C2, 0xC1C3, 0xC1C5, 0xC1C6, 0xC1C7, 0xC1C9,
+ 0xC1CA, 0xC1CB, 0xC1CD, 0xC1CE, 0xC1CF, 0xC1D0, 0xC1D1, 0xC1D2, 0xC1D3,
+ 0xC1D5, 0xC1D6, 0xC1D9, 0xC1DA, 0xC1DB, 0xC1DC, 0xC1DD, 0xC1DE, 0xC1DF,
+ 0xC1E1, 0xC1E2, 0xC1E3, 0xC1E5, 0xC1E6, 0xC1E7, 0xC1E9, 0xC1EA, 0xC1EB,
+ 0xC1EC, 0xC1ED, 0xC1EE, 0xC1EF, 0xC1F2, 0xC1F4, 0xC1F5, 0xC1F6, 0xC1F7,
+ 0xC1F8, 0xC1F9, 0xC1FA, 0xC1FB, 0xC1FE, 0xC1FF, 0xC201, 0xC202, 0xC203,
+ 0xC205, 0xC206, 0xC207, 0xC208, 0xC209, 0xC20A, 0xC20B, 0xC20E, 0xC210,
+ 0xC212, 0xC213, 0xC214, 0xC215, 0xC216, 0xC217, 0xC21A, 0xC21B, 0xC21D,
+ 0xC21E, 0xC221, 0xC222, 0xC223, 0xC224, 0xC225, 0xC226, 0xC227, 0xC22A,
+ 0xC22C, 0xC22E, 0xC230, 0xC233, 0xC235, 0xC236, 0xC237, 0xC238, 0xC239,
+ 0xC23A, 0xC23B, 0xC23C, 0xC23D, 0xC23E, 0xC23F, 0xC240, 0xC241, 0xC242,
+ 0xC243, 0xC244, 0xC245, 0xC246, 0xC247, 0xC249, 0xC24A, 0xC24B, 0xC24C,
+ 0xC24D, 0xC24E, 0xC24F, 0xC252, 0xC253, 0xC255, 0xC256, 0xC257, 0xC259,
+ 0xC25A, 0xC25B, 0xC25C, 0xC25D, 0xC25E, 0xC25F, 0xC261, 0xC262, 0xC263,
+ 0xC264, 0xC266, 0xC267, 0xC268, 0xC269, 0xC26A, 0xC26B, 0xC26E, 0xC26F,
+ 0xC271, 0xC272, 0xC273, 0xC275, 0xC276, 0xC277, 0xC278, 0xC279, 0xC27A,
+ 0xC27B, 0xC27E, 0xC280, 0xC282, 0xC283, 0xC284, 0xC285, 0xC286, 0xC287,
+ 0xC28A, 0xC28B, 0xC28C, 0xC28D, 0xC28E, 0xC28F, 0xC291, 0xC292, 0xC293,
+ 0xC294, 0xC295, 0xC296, 0xC297, 0xC299, 0xC29A, 0xC29C, 0xC29E, 0xC29F,
+ 0xC2A0, 0xC2A1, 0xC2A2, 0xC2A3, 0xC2A6, 0xC2A7, 0xC2A9, 0xC2AA, 0xC2AB,
+ 0xC2AE, 0xC2AF, 0xC2B0, 0xC2B1, 0xC2B2, 0xC2B3, 0xC2B6, 0xC2B8, 0xC2BA,
+ 0xC2BB, 0xC2BC, 0xC2BD, 0xC2BE, 0xC2BF, 0xC2C0, 0xC2C1, 0xC2C2, 0xC2C3,
+ 0xC2C4, 0xC2C5, 0xC2C6, 0xC2C7, 0xC2C8, 0xC2C9, 0xC2CA, 0xC2CB, 0xC2CC,
+ 0xC2CD, 0xC2CE, 0xC2CF, 0xC2D0, 0xC2D1, 0xC2D2, 0xC2D3, 0xC2D4, 0xC2D5,
+ 0xC2D6, 0xC2D7, 0xC2D8, 0xC2D9, 0xC2DA, 0xC2DB, 0xC2DE, 0xC2DF, 0xC2E1,
+ 0xC2E2, 0xC2E5, 0xC2E6, 0xC2E7, 0xC2E8, 0xC2E9, 0xC2EA, 0xC2EE, 0xC2F0,
+ 0xC2F2, 0xC2F3, 0xC2F4, 0xC2F5, 0xC2F7, 0xC2FA, 0xC2FD, 0xC2FE, 0xC2FF,
+ 0xC301, 0xC302, 0xC303, 0xC304, 0xC305, 0xC306, 0xC307, 0xC30A, 0xC30B,
+ 0xC30E, 0xC30F, 0xC310, 0xC311, 0xC312, 0xC316, 0xC317, 0xC319, 0xC31A,
+ 0xC31B, 0xC31D, 0xC31E, 0xC31F, 0xC320, 0xC321, 0xC322, 0xC323, 0xC326,
+ 0xC327, 0xC32A, 0xC32B, 0xC32C, 0xC32D, 0xC32E, 0xC32F, 0xC330, 0xC331,
+ 0xC332, 0xC333, 0xC334, 0xC335, 0xC336, 0xC337, 0xC338, 0xC339, 0xC33A,
+ 0xC33B, 0xC33C, 0xC33D, 0xC33E, 0xC33F, 0xC340, 0xC341, 0xC342, 0xC343,
+ 0xC344, 0xC346, 0xC347, 0xC348, 0xC349, 0xC34A, 0xC34B, 0xC34C, 0xC34D,
+ 0xC34E, 0xC34F, 0xC350, 0xC351, 0xC352, 0xC353, 0xC354, 0xC355, 0xC356,
+ 0xC357, 0xC358, 0xC359, 0xC35A, 0xC35B, 0xC35C, 0xC35D, 0xC35E, 0xC35F,
+ 0xC360, 0xC361, 0xC362, 0xC363, 0xC364, 0xC365, 0xC366, 0xC367, 0xC36A,
+ 0xC36B, 0xC36D, 0xC36E, 0xC36F, 0xC371, 0xC373, 0xC374, 0xC375, 0xC376,
+ 0xC377, 0xC37A, 0xC37B, 0xC37E, 0xC37F, 0xC380, 0xC381, 0xC382, 0xC383,
+ 0xC385, 0xC386, 0xC387, 0xC389, 0xC38A, 0xC38B, 0xC38D, 0xC38E, 0xC38F,
+ 0xC390, 0xC391, 0xC392, 0xC393, 0xC394, 0xC395, 0xC396, 0xC397, 0xC398,
+ 0xC399, 0xC39A, 0xC39B, 0xC39C, 0xC39D, 0xC39E, 0xC39F, 0xC3A0, 0xC3A1,
+ 0xC3A2, 0xC3A3, 0xC3A4, 0xC3A5, 0xC3A6, 0xC3A7, 0xC3A8, 0xC3A9, 0xC3AA,
+ 0xC3AB, 0xC3AC, 0xC3AD, 0xC3AE, 0xC3AF, 0xC3B0, 0xC3B1, 0xC3B2, 0xC3B3,
+ 0xC3B4, 0xC3B5, 0xC3B6, 0xC3B7, 0xC3B8, 0xC3B9, 0xC3BA, 0xC3BB, 0xC3BC,
+ 0xC3BD, 0xC3BE, 0xC3BF, 0xC3C1, 0xC3C2, 0xC3C3, 0xC3C4, 0xC3C5, 0xC3C6,
+ 0xC3C7, 0xC3C8, 0xC3C9, 0xC3CA, 0xC3CB, 0xC3CC, 0xC3CD, 0xC3CE, 0xC3CF,
+ 0xC3D0, 0xC3D1, 0xC3D2, 0xC3D3, 0xC3D4, 0xC3D5, 0xC3D6, 0xC3D7, 0xC3DA,
+ 0xC3DB, 0xC3DD, 0xC3DE, 0xC3E1, 0xC3E3, 0xC3E4, 0xC3E5, 0xC3E6, 0xC3E7,
+ 0xC3EA, 0xC3EB, 0xC3EC, 0xC3EE, 0xC3EF, 0xC3F0, 0xC3F1, 0xC3F2, 0xC3F3,
+ 0xC3F6, 0xC3F7, 0xC3F9, 0xC3FA, 0xC3FB, 0xC3FC, 0xC3FD, 0xC3FE, 0xC3FF,
+ 0xC400, 0xC401, 0xC402, 0xC403, 0xC404, 0xC405, 0xC406, 0xC407, 0xC409,
+ 0xC40A, 0xC40B, 0xC40C, 0xC40D, 0xC40E, 0xC40F, 0xC411, 0xC412, 0xC413,
+ 0xC414, 0xC415, 0xC416, 0xC417, 0xC418, 0xC419, 0xC41A, 0xC41B, 0xC41C,
+ 0xC41D, 0xC41E, 0xC41F, 0xC420, 0xC421, 0xC422, 0xC423, 0xC425, 0xC426,
+ 0xC427, 0xC428, 0xC429, 0xC42A, 0xC42B, 0xC42D, 0xC42E, 0xC42F, 0xC431,
+ 0xC432, 0xC433, 0xC435, 0xC436, 0xC437, 0xC438, 0xC439, 0xC43A, 0xC43B,
+ 0xC43E, 0xC43F, 0xC440, 0xC441, 0xC442, 0xC443, 0xC444, 0xC445, 0xC446,
+ 0xC447, 0xC449, 0xC44A, 0xC44B, 0xC44C, 0xC44D, 0xC44E, 0xC44F, 0xC450,
+ 0xC451, 0xC452, 0xC453, 0xC454, 0xC455, 0xC456, 0xC457, 0xC458, 0xC459,
+ 0xC45A, 0xC45B, 0xC45C, 0xC45D, 0xC45E, 0xC45F, 0xC460, 0xC461, 0xC462,
+ 0xC463, 0xC466, 0xC467, 0xC469, 0xC46A, 0xC46B, 0xC46D, 0xC46E, 0xC46F,
+ 0xC470, 0xC471, 0xC472, 0xC473, 0xC476, 0xC477, 0xC478, 0xC47A, 0xC47B,
+ 0xC47C, 0xC47D, 0xC47E, 0xC47F, 0xC481, 0xC482, 0xC483, 0xC484, 0xC485,
+ 0xC486, 0xC487, 0xC488, 0xC489, 0xC48A, 0xC48B, 0xC48C, 0xC48D, 0xC48E,
+ 0xC48F, 0xC490, 0xC491, 0xC492, 0xC493, 0xC495, 0xC496, 0xC497, 0xC498,
+ 0xC499, 0xC49A, 0xC49B, 0xC49D, 0xC49E, 0xC49F, 0xC4A0, 0xC4A1, 0xC4A2,
+ 0xC4A3, 0xC4A4, 0xC4A5, 0xC4A6, 0xC4A7, 0xC4A8, 0xC4A9, 0xC4AA, 0xC4AB,
+ 0xC4AC, 0xC4AD, 0xC4AE, 0xC4AF, 0xC4B0, 0xC4B1, 0xC4B2, 0xC4B3, 0xC4B4,
+ 0xC4B5, 0xC4B6, 0xC4B7, 0xC4B9, 0xC4BA, 0xC4BB, 0xC4BD, 0xC4BE, 0xC4BF,
+ 0xC4C0, 0xC4C1, 0xC4C2, 0xC4C3, 0xC4C4, 0xC4C5, 0xC4C6, 0xC4C7, 0xC4C8,
+ 0xC4C9, 0xC4CA, 0xC4CB, 0xC4CC, 0xC4CD, 0xC4CE, 0xC4CF, 0xC4D0, 0xC4D1,
+ 0xC4D2, 0xC4D3, 0xC4D4, 0xC4D5, 0xC4D6, 0xC4D7, 0xC4D8, 0xC4D9, 0xC4DA,
+ 0xC4DB, 0xC4DC, 0xC4DD, 0xC4DE, 0xC4DF, 0xC4E0, 0xC4E1, 0xC4E2, 0xC4E3,
+ 0xC4E4, 0xC4E5, 0xC4E6, 0xC4E7, 0xC4E8, 0xC4EA, 0xC4EB, 0xC4EC, 0xC4ED,
+ 0xC4EE, 0xC4EF, 0xC4F2, 0xC4F3, 0xC4F5, 0xC4F6, 0xC4F7, 0xC4F9, 0xC4FB,
+ 0xC4FC, 0xC4FD, 0xC4FE, 0xC502, 0xC503, 0xC504, 0xC505, 0xC506, 0xC507,
+ 0xC508, 0xC509, 0xC50A, 0xC50B, 0xC50D, 0xC50E, 0xC50F, 0xC511, 0xC512,
+ 0xC513, 0xC515, 0xC516, 0xC517, 0xC518, 0xC519, 0xC51A, 0xC51B, 0xC51D,
+ 0xC51E, 0xC51F, 0xC520, 0xC521, 0xC522, 0xC523, 0xC524, 0xC525, 0xC526,
+ 0xC527, 0xC52A, 0xC52B, 0xC52D, 0xC52E, 0xC52F, 0xC531, 0xC532, 0xC533,
+ 0xC534, 0xC535, 0xC536, 0xC537, 0xC53A, 0xC53C, 0xC53E, 0xC53F, 0xC540,
+ 0xC541, 0xC542, 0xC543, 0xC546, 0xC547, 0xC54B, 0xC54F, 0xC550, 0xC551,
+ 0xC552, 0xC556, 0xC55A, 0xC55B, 0xC55C, 0xC55F, 0xC562, 0xC563, 0xC565,
+ 0xC566, 0xC567, 0xC569, 0xC56A, 0xC56B, 0xC56C, 0xC56D, 0xC56E, 0xC56F,
+ 0xC572, 0xC576, 0xC577, 0xC578, 0xC579, 0xC57A, 0xC57B, 0xC57E, 0xC57F,
+ 0xC581, 0xC582, 0xC583, 0xC585, 0xC586, 0xC588, 0xC589, 0xC58A, 0xC58B,
+ 0xC58E, 0xC590, 0xC592, 0xC593, 0xC594, 0xC596, 0xC599, 0xC59A, 0xC59B,
+ 0xC59D, 0xC59E, 0xC59F, 0xC5A1, 0xC5A2, 0xC5A3, 0xC5A4, 0xC5A5, 0xC5A6,
+ 0xC5A7, 0xC5A8, 0xC5AA, 0xC5AB, 0xC5AC, 0xC5AD, 0xC5AE, 0xC5AF, 0xC5B0,
+ 0xC5B1, 0xC5B2, 0xC5B3, 0xC5B6, 0xC5B7, 0xC5BA, 0xC5BF, 0xC5C0, 0xC5C1,
+ 0xC5C2, 0xC5C3, 0xC5CB, 0xC5CD, 0xC5CF, 0xC5D2, 0xC5D3, 0xC5D5, 0xC5D6,
+ 0xC5D7, 0xC5D9, 0xC5DA, 0xC5DB, 0xC5DC, 0xC5DD, 0xC5DE, 0xC5DF, 0xC5E2,
+ 0xC5E4, 0xC5E6, 0xC5E7, 0xC5E8, 0xC5E9, 0xC5EA, 0xC5EB, 0xC5EF, 0xC5F1,
+ 0xC5F2, 0xC5F3, 0xC5F5, 0xC5F8, 0xC5F9, 0xC5FA, 0xC5FB, 0xC602, 0xC603,
+ 0xC604, 0xC609, 0xC60A, 0xC60B, 0xC60D, 0xC60E, 0xC60F, 0xC611, 0xC612,
+ 0xC613, 0xC614, 0xC615, 0xC616, 0xC617, 0xC61A, 0xC61D, 0xC61E, 0xC61F,
+ 0xC620, 0xC621, 0xC622, 0xC623, 0xC626, 0xC627, 0xC629, 0xC62A, 0xC62B,
+ 0xC62F, 0xC631, 0xC632, 0xC636, 0xC638, 0xC63A, 0xC63C, 0xC63D, 0xC63E,
+ 0xC63F, 0xC642, 0xC643, 0xC645, 0xC646, 0xC647, 0xC649, 0xC64A, 0xC64B,
+ 0xC64C, 0xC64D, 0xC64E, 0xC64F, 0xC652, 0xC656, 0xC657, 0xC658, 0xC659,
+ 0xC65A, 0xC65B, 0xC65E, 0xC65F, 0xC661, 0xC662, 0xC663, 0xC664, 0xC665,
+ 0xC666, 0xC667, 0xC668, 0xC669, 0xC66A, 0xC66B, 0xC66D, 0xC66E, 0xC670,
+ 0xC672, 0xC673, 0xC674, 0xC675, 0xC676, 0xC677, 0xC67A, 0xC67B, 0xC67D,
+ 0xC67E, 0xC67F, 0xC681, 0xC682, 0xC683, 0xC684, 0xC685, 0xC686, 0xC687,
+ 0xC68A, 0xC68C, 0xC68E, 0xC68F, 0xC690, 0xC691, 0xC692, 0xC693, 0xC696,
+ 0xC697, 0xC699, 0xC69A, 0xC69B, 0xC69D, 0xC69E, 0xC69F, 0xC6A0, 0xC6A1,
+ 0xC6A2, 0xC6A3, 0xC6A6, 0xC6A8, 0xC6AA, 0xC6AB, 0xC6AC, 0xC6AD, 0xC6AE,
+ 0xC6AF, 0xC6B2, 0xC6B3, 0xC6B5, 0xC6B6, 0xC6B7, 0xC6BB, 0xC6BC, 0xC6BD,
+ 0xC6BE, 0xC6BF, 0xC6C2, 0xC6C4, 0xC6C6, 0xC6C7, 0xC6C8, 0xC6C9, 0xC6CA,
+ 0xC6CB, 0xC6CE, 0xC6CF, 0xC6D1, 0xC6D2, 0xC6D3, 0xC6D5, 0xC6D6, 0xC6D7,
+ 0xC6D8, 0xC6D9, 0xC6DA, 0xC6DB, 0xC6DE, 0xC6DF, 0xC6E2, 0xC6E3, 0xC6E4,
+ 0xC6E5, 0xC6E6, 0xC6E7, 0xC6EA, 0xC6EB, 0xC6ED, 0xC6EE, 0xC6EF, 0xC6F1,
+ 0xC6F2, 0xC6F3, 0xC6F4, 0xC6F5, 0xC6F6, 0xC6F7, 0xC6FA, 0xC6FB, 0xC6FC,
+ 0xC6FE, 0xC6FF, 0xC700, 0xC701, 0xC702, 0xC703, 0xC706, 0xC707, 0xC709,
+ 0xC70A, 0xC70B, 0xC70D, 0xC70E, 0xC70F, 0xC710, 0xC711, 0xC712, 0xC713,
+ 0xC716, 0xC718, 0xC71A, 0xC71B, 0xC71C, 0xC71D, 0xC71E, 0xC71F, 0xC722,
+ 0xC723, 0xC725, 0xC726, 0xC727, 0xC729, 0xC72A, 0xC72B, 0xC72C, 0xC72D,
+ 0xC72E, 0xC72F, 0xC732, 0xC734, 0xC736, 0xC738, 0xC739, 0xC73A, 0xC73B,
+ 0xC73E, 0xC73F, 0xC741, 0xC742, 0xC743, 0xC745, 0xC746, 0xC747, 0xC748,
+ 0xC749, 0xC74B, 0xC74E, 0xC750, 0xC759, 0xC75A, 0xC75B, 0xC75D, 0xC75E,
+ 0xC75F, 0xC761, 0xC762, 0xC763, 0xC764, 0xC765, 0xC766, 0xC767, 0xC769,
+ 0xC76A, 0xC76C, 0xC76D, 0xC76E, 0xC76F, 0xC770, 0xC771, 0xC772, 0xC773,
+ 0xC776, 0xC777, 0xC779, 0xC77A, 0xC77B, 0xC77F, 0xC780, 0xC781, 0xC782,
+ 0xC786, 0xC78B, 0xC78C, 0xC78D, 0xC78F, 0xC792, 0xC793, 0xC795, 0xC799,
+ 0xC79B, 0xC79C, 0xC79D, 0xC79E, 0xC79F, 0xC7A2, 0xC7A7, 0xC7A8, 0xC7A9,
+ 0xC7AA, 0xC7AB, 0xC7AE, 0xC7AF, 0xC7B1, 0xC7B2, 0xC7B3, 0xC7B5, 0xC7B6,
+ 0xC7B7, 0xC7B8, 0xC7B9, 0xC7BA, 0xC7BB, 0xC7BE, 0xC7C2, 0xC7C3, 0xC7C4,
+ 0xC7C5, 0xC7C6, 0xC7C7, 0xC7CA, 0xC7CB, 0xC7CD, 0xC7CF, 0xC7D1, 0xC7D2,
+ 0xC7D3, 0xC7D4, 0xC7D5, 0xC7D6, 0xC7D7, 0xC7D9, 0xC7DA, 0xC7DB, 0xC7DC,
+ 0xC7DE, 0xC7DF, 0xC7E0, 0xC7E1, 0xC7E2, 0xC7E3, 0xC7E5, 0xC7E6, 0xC7E7,
+ 0xC7E9, 0xC7EA, 0xC7EB, 0xC7ED, 0xC7EE, 0xC7EF, 0xC7F0, 0xC7F1, 0xC7F2,
+ 0xC7F3, 0xC7F4, 0xC7F5, 0xC7F6, 0xC7F7, 0xC7F8, 0xC7F9, 0xC7FA, 0xC7FB,
+ 0xC7FC, 0xC7FD, 0xC7FE, 0xC7FF, 0xC802, 0xC803, 0xC805, 0xC806, 0xC807,
+ 0xC809, 0xC80B, 0xC80C, 0xC80D, 0xC80E, 0xC80F, 0xC812, 0xC814, 0xC817,
+ 0xC818, 0xC819, 0xC81A, 0xC81B, 0xC81E, 0xC81F, 0xC821, 0xC822, 0xC823,
+ 0xC825, 0xC826, 0xC827, 0xC828, 0xC829, 0xC82A, 0xC82B, 0xC82E, 0xC830,
+ 0xC832, 0xC833, 0xC834, 0xC835, 0xC836, 0xC837, 0xC839, 0xC83A, 0xC83B,
+ 0xC83D, 0xC83E, 0xC83F, 0xC841, 0xC842, 0xC843, 0xC844, 0xC845, 0xC846,
+ 0xC847, 0xC84A, 0xC84B, 0xC84E, 0xC84F, 0xC850, 0xC851, 0xC852, 0xC853,
+ 0xC855, 0xC856, 0xC857, 0xC858, 0xC859, 0xC85A, 0xC85B, 0xC85C, 0xC85D,
+ 0xC85E, 0xC85F, 0xC860, 0xC861, 0xC862, 0xC863, 0xC864, 0xC865, 0xC866,
+ 0xC867, 0xC868, 0xC869, 0xC86A, 0xC86B, 0xC86C, 0xC86D, 0xC86E, 0xC86F,
+ 0xC872, 0xC873, 0xC875, 0xC876, 0xC877, 0xC879, 0xC87B, 0xC87C, 0xC87D,
+ 0xC87E, 0xC87F, 0xC882, 0xC884, 0xC888, 0xC889, 0xC88A, 0xC88E, 0xC88F,
+ 0xC890, 0xC891, 0xC892, 0xC893, 0xC895, 0xC896, 0xC897, 0xC898, 0xC899,
+ 0xC89A, 0xC89B, 0xC89C, 0xC89E, 0xC8A0, 0xC8A2, 0xC8A3, 0xC8A4, 0xC8A5,
+ 0xC8A6, 0xC8A7, 0xC8A9, 0xC8AA, 0xC8AB, 0xC8AC, 0xC8AD, 0xC8AE, 0xC8AF,
+ 0xC8B0, 0xC8B1, 0xC8B2, 0xC8B3, 0xC8B4, 0xC8B5, 0xC8B6, 0xC8B7, 0xC8B8,
+ 0xC8B9, 0xC8BA, 0xC8BB, 0xC8BE, 0xC8BF, 0xC8C0, 0xC8C1, 0xC8C2, 0xC8C3,
+ 0xC8C5, 0xC8C6, 0xC8C7, 0xC8C9, 0xC8CA, 0xC8CB, 0xC8CD, 0xC8CE, 0xC8CF,
+ 0xC8D0, 0xC8D1, 0xC8D2, 0xC8D3, 0xC8D6, 0xC8D8, 0xC8DA, 0xC8DB, 0xC8DC,
+ 0xC8DD, 0xC8DE, 0xC8DF, 0xC8E2, 0xC8E3, 0xC8E5, 0xC8E6, 0xC8E7, 0xC8E8,
+ 0xC8E9, 0xC8EA, 0xC8EB, 0xC8EC, 0xC8ED, 0xC8EE, 0xC8EF, 0xC8F0, 0xC8F1,
+ 0xC8F2, 0xC8F3, 0xC8F4, 0xC8F6, 0xC8F7, 0xC8F8, 0xC8F9, 0xC8FA, 0xC8FB,
+ 0xC8FE, 0xC8FF, 0xC901, 0xC902, 0xC903, 0xC907, 0xC908, 0xC909, 0xC90A,
+ 0xC90B, 0xC90E, 0xC910, 0xC912, 0xC913, 0xC914, 0xC915, 0xC916, 0xC917,
+ 0xC919, 0xC91A, 0xC91B, 0xC91C, 0xC91D, 0xC91E, 0xC91F, 0xC920, 0xC921,
+ 0xC922, 0xC923, 0xC924, 0xC925, 0xC926, 0xC927, 0xC928, 0xC929, 0xC92A,
+ 0xC92B, 0xC92D, 0xC92E, 0xC92F, 0xC930, 0xC931, 0xC932, 0xC933, 0xC935,
+ 0xC936, 0xC937, 0xC938, 0xC939, 0xC93A, 0xC93B, 0xC93C, 0xC93D, 0xC93E,
+ 0xC93F, 0xC940, 0xC941, 0xC942, 0xC943, 0xC944, 0xC945, 0xC946, 0xC947,
+ 0xC948, 0xC949, 0xC94A, 0xC94B, 0xC94C, 0xC94D, 0xC94E, 0xC94F, 0xC952,
+ 0xC953, 0xC955, 0xC956, 0xC957, 0xC959, 0xC95A, 0xC95B, 0xC95C, 0xC95D,
+ 0xC95E, 0xC95F, 0xC962, 0xC964, 0xC965, 0xC966, 0xC967, 0xC968, 0xC969,
+ 0xC96A, 0xC96B, 0xC96D, 0xC96E, 0xC96F, 0xC971, 0xC972, 0xC973, 0xC975,
+ 0xC976, 0xC977, 0xC978, 0xC979, 0xC97A, 0xC97B, 0xC97D, 0xC97E, 0xC97F,
+ 0xC980, 0xC981, 0xC982, 0xC983, 0xC984, 0xC985, 0xC986, 0xC987, 0xC98A,
+ 0xC98B, 0xC98D, 0xC98E, 0xC98F, 0xC991, 0xC992, 0xC993, 0xC994, 0xC995,
+ 0xC996, 0xC997, 0xC99A, 0xC99C, 0xC99E, 0xC99F, 0xC9A0, 0xC9A1, 0xC9A2,
+ 0xC9A3, 0xC9A4, 0xC9A5, 0xC9A6, 0xC9A7, 0xC9A8, 0xC9A9, 0xC9AA, 0xC9AB,
+ 0xC9AC, 0xC9AD, 0xC9AE, 0xC9AF, 0xC9B0, 0xC9B1, 0xC9B2, 0xC9B3, 0xC9B4,
+ 0xC9B5, 0xC9B6, 0xC9B7, 0xC9B8, 0xC9B9, 0xC9BA, 0xC9BB, 0xC9BC, 0xC9BD,
+ 0xC9BE, 0xC9BF, 0xC9C2, 0xC9C3, 0xC9C5, 0xC9C6, 0xC9C9, 0xC9CB, 0xC9CC,
+ 0xC9CD, 0xC9CE, 0xC9CF, 0xC9D2, 0xC9D4, 0xC9D7, 0xC9D8, 0xC9DB, 0xC9DE,
+ 0xC9DF, 0xC9E1, 0xC9E3, 0xC9E5, 0xC9E6, 0xC9E8, 0xC9E9, 0xC9EA, 0xC9EB,
+ 0xC9EE, 0xC9F2, 0xC9F3, 0xC9F4, 0xC9F5, 0xC9F6, 0xC9F7, 0xC9FA, 0xC9FB,
+ 0xC9FD, 0xC9FE, 0xC9FF, 0xCA01, 0xCA02, 0xCA03, 0xCA04, 0xCA05, 0xCA06,
+ 0xCA07, 0xCA0A, 0xCA0E, 0xCA0F, 0xCA10, 0xCA11, 0xCA12, 0xCA13, 0xCA15,
+ 0xCA16, 0xCA17, 0xCA19, 0xCA1A, 0xCA1B, 0xCA1C, 0xCA1D, 0xCA1E, 0xCA1F,
+ 0xCA20, 0xCA21, 0xCA22, 0xCA23, 0xCA24, 0xCA25, 0xCA26, 0xCA27, 0xCA28,
+ 0xCA2A, 0xCA2B, 0xCA2C, 0xCA2D, 0xCA2E, 0xCA2F, 0xCA30, 0xCA31, 0xCA32,
+ 0xCA33, 0xCA34, 0xCA35, 0xCA36, 0xCA37, 0xCA38, 0xCA39, 0xCA3A, 0xCA3B,
+ 0xCA3C, 0xCA3D, 0xCA3E, 0xCA3F, 0xCA40, 0xCA41, 0xCA42, 0xCA43, 0xCA44,
+ 0xCA45, 0xCA46, 0xCA47, 0xCA48, 0xCA49, 0xCA4A, 0xCA4B, 0xCA4E, 0xCA4F,
+ 0xCA51, 0xCA52, 0xCA53, 0xCA55, 0xCA56, 0xCA57, 0xCA58, 0xCA59, 0xCA5A,
+ 0xCA5B, 0xCA5E, 0xCA62, 0xCA63, 0xCA64, 0xCA65, 0xCA66, 0xCA67, 0xCA69,
+ 0xCA6A, 0xCA6B, 0xCA6C, 0xCA6D, 0xCA6E, 0xCA6F, 0xCA70, 0xCA71, 0xCA72,
+ 0xCA73, 0xCA74, 0xCA75, 0xCA76, 0xCA77, 0xCA78, 0xCA79, 0xCA7A, 0xCA7B,
+ 0xCA7C, 0xCA7E, 0xCA7F, 0xCA80, 0xCA81, 0xCA82, 0xCA83, 0xCA85, 0xCA86,
+ 0xCA87, 0xCA88, 0xCA89, 0xCA8A, 0xCA8B, 0xCA8C, 0xCA8D, 0xCA8E, 0xCA8F,
+ 0xCA90, 0xCA91, 0xCA92, 0xCA93, 0xCA94, 0xCA95, 0xCA96, 0xCA97, 0xCA99,
+ 0xCA9A, 0xCA9B, 0xCA9C, 0xCA9D, 0xCA9E, 0xCA9F, 0xCAA0, 0xCAA1, 0xCAA2,
+ 0xCAA3, 0xCAA4, 0xCAA5, 0xCAA6, 0xCAA7, 0xCAA8, 0xCAA9, 0xCAAA, 0xCAAB,
+ 0xCAAC, 0xCAAD, 0xCAAE, 0xCAAF, 0xCAB0, 0xCAB1, 0xCAB2, 0xCAB3, 0xCAB4,
+ 0xCAB5, 0xCAB6, 0xCAB7, 0xCAB8, 0xCAB9, 0xCABA, 0xCABB, 0xCABE, 0xCABF,
+ 0xCAC1, 0xCAC2, 0xCAC3, 0xCAC5, 0xCAC6, 0xCAC7, 0xCAC8, 0xCAC9, 0xCACA,
+ 0xCACB, 0xCACE, 0xCAD0, 0xCAD2, 0xCAD4, 0xCAD5, 0xCAD6, 0xCAD7, 0xCADA,
+ 0xCADB, 0xCADC, 0xCADD, 0xCADE, 0xCADF, 0xCAE1, 0xCAE2, 0xCAE3, 0xCAE4,
+ 0xCAE5, 0xCAE6, 0xCAE7, 0xCAE8, 0xCAE9, 0xCAEA, 0xCAEB, 0xCAED, 0xCAEE,
+ 0xCAEF, 0xCAF0, 0xCAF1, 0xCAF2, 0xCAF3, 0xCAF5, 0xCAF6, 0xCAF7, 0xCAF8,
+ 0xCAF9, 0xCAFA, 0xCAFB, 0xCAFC, 0xCAFD, 0xCAFE, 0xCAFF, 0xCB00, 0xCB01,
+ 0xCB02, 0xCB03, 0xCB04, 0xCB05, 0xCB06, 0xCB07, 0xCB09, 0xCB0A, 0xCB0B,
+ 0xCB0C, 0xCB0D, 0xCB0E, 0xCB0F, 0xCB11, 0xCB12, 0xCB13, 0xCB15, 0xCB16,
+ 0xCB17, 0xCB19, 0xCB1A, 0xCB1B, 0xCB1C, 0xCB1D, 0xCB1E, 0xCB1F, 0xCB22,
+ 0xCB23, 0xCB24, 0xCB25, 0xCB26, 0xCB27, 0xCB28, 0xCB29, 0xCB2A, 0xCB2B,
+ 0xCB2C, 0xCB2D, 0xCB2E, 0xCB2F, 0xCB30, 0xCB31, 0xCB32, 0xCB33, 0xCB34,
+ 0xCB35, 0xCB36, 0xCB37, 0xCB38, 0xCB39, 0xCB3A, 0xCB3B, 0xCB3C, 0xCB3D,
+ 0xCB3E, 0xCB3F, 0xCB40, 0xCB42, 0xCB43, 0xCB44, 0xCB45, 0xCB46, 0xCB47,
+ 0xCB4A, 0xCB4B, 0xCB4D, 0xCB4E, 0xCB4F, 0xCB51, 0xCB52, 0xCB53, 0xCB54,
+ 0xCB55, 0xCB56, 0xCB57, 0xCB5A, 0xCB5B, 0xCB5C, 0xCB5E, 0xCB5F, 0xCB60,
+ 0xCB61, 0xCB62, 0xCB63, 0xCB65, 0xCB66, 0xCB67, 0xCB68, 0xCB69, 0xCB6A,
+ 0xCB6B, 0xCB6C, 0xCB6D, 0xCB6E, 0xCB6F, 0xCB70, 0xCB71, 0xCB72, 0xCB73,
+ 0xCB74, 0xCB75, 0xCB76, 0xCB77, 0xCB7A, 0xCB7B, 0xCB7C, 0xCB7D, 0xCB7E,
+ 0xCB7F, 0xCB80, 0xCB81, 0xCB82, 0xCB83, 0xCB84, 0xCB85, 0xCB86, 0xCB87,
+ 0xCB88, 0xCB89, 0xCB8A, 0xCB8B, 0xCB8C, 0xCB8D, 0xCB8E, 0xCB8F, 0xCB90,
+ 0xCB91, 0xCB92, 0xCB93, 0xCB94, 0xCB95, 0xCB96, 0xCB97, 0xCB98, 0xCB99,
+ 0xCB9A, 0xCB9B, 0xCB9D, 0xCB9E, 0xCB9F, 0xCBA0, 0xCBA1, 0xCBA2, 0xCBA3,
+ 0xCBA4, 0xCBA5, 0xCBA6, 0xCBA7, 0xCBA8, 0xCBA9, 0xCBAA, 0xCBAB, 0xCBAC,
+ 0xCBAD, 0xCBAE, 0xCBAF, 0xCBB0, 0xCBB1, 0xCBB2, 0xCBB3, 0xCBB4, 0xCBB5,
+ 0xCBB6, 0xCBB7, 0xCBB9, 0xCBBA, 0xCBBB, 0xCBBC, 0xCBBD, 0xCBBE, 0xCBBF,
+ 0xCBC0, 0xCBC1, 0xCBC2, 0xCBC3, 0xCBC4, 0xCBC5, 0xCBC6, 0xCBC7, 0xCBC8,
+ 0xCBC9, 0xCBCA, 0xCBCB, 0xCBCC, 0xCBCD, 0xCBCE, 0xCBCF, 0xCBD0, 0xCBD1,
+ 0xCBD2, 0xCBD3, 0xCBD5, 0xCBD6, 0xCBD7, 0xCBD8, 0xCBD9, 0xCBDA, 0xCBDB,
+ 0xCBDC, 0xCBDD, 0xCBDE, 0xCBDF, 0xCBE0, 0xCBE1, 0xCBE2, 0xCBE3, 0xCBE5,
+ 0xCBE6, 0xCBE8, 0xCBEA, 0xCBEB, 0xCBEC, 0xCBED, 0xCBEE, 0xCBEF, 0xCBF0,
+ 0xCBF1, 0xCBF2, 0xCBF3, 0xCBF4, 0xCBF5, 0xCBF6, 0xCBF7, 0xCBF8, 0xCBF9,
+ 0xCBFA, 0xCBFB, 0xCBFC, 0xCBFD, 0xCBFE, 0xCBFF, 0xCC00, 0xCC01, 0xCC02,
+ 0xCC03, 0xCC04, 0xCC05, 0xCC06, 0xCC07, 0xCC08, 0xCC09, 0xCC0A, 0xCC0B,
+ 0xCC0E, 0xCC0F, 0xCC11, 0xCC12, 0xCC13, 0xCC15, 0xCC16, 0xCC17, 0xCC18,
+ 0xCC19, 0xCC1A, 0xCC1B, 0xCC1E, 0xCC1F, 0xCC20, 0xCC23, 0xCC24, 0xCC25,
+ 0xCC26, 0xCC2A, 0xCC2B, 0xCC2D, 0xCC2F, 0xCC31, 0xCC32, 0xCC33, 0xCC34,
+ 0xCC35, 0xCC36, 0xCC37, 0xCC3A, 0xCC3F, 0xCC40, 0xCC41, 0xCC42, 0xCC43,
+ 0xCC46, 0xCC47, 0xCC49, 0xCC4A, 0xCC4B, 0xCC4D, 0xCC4E, 0xCC4F, 0xCC50,
+ 0xCC51, 0xCC52, 0xCC53, 0xCC56, 0xCC5A, 0xCC5B, 0xCC5C, 0xCC5D, 0xCC5E,
+ 0xCC5F, 0xCC61, 0xCC62, 0xCC63, 0xCC65, 0xCC67, 0xCC69, 0xCC6A, 0xCC6B,
+ 0xCC6C, 0xCC6D, 0xCC6E, 0xCC6F, 0xCC71, 0xCC72, 0xCC73, 0xCC74, 0xCC76,
+ 0xCC77, 0xCC78, 0xCC79, 0xCC7A, 0xCC7B, 0xCC7C, 0xCC7D, 0xCC7E, 0xCC7F,
+ 0xCC80, 0xCC81, 0xCC82, 0xCC83, 0xCC84, 0xCC85, 0xCC86, 0xCC87, 0xCC88,
+ 0xCC89, 0xCC8A, 0xCC8B, 0xCC8C, 0xCC8D, 0xCC8E, 0xCC8F, 0xCC90, 0xCC91,
+ 0xCC92, 0xCC93, 0xCC94, 0xCC95, 0xCC96, 0xCC97, 0xCC9A, 0xCC9B, 0xCC9D,
+ 0xCC9E, 0xCC9F, 0xCCA1, 0xCCA2, 0xCCA3, 0xCCA4, 0xCCA5, 0xCCA6, 0xCCA7,
+ 0xCCAA, 0xCCAE, 0xCCAF, 0xCCB0, 0xCCB1, 0xCCB2, 0xCCB3, 0xCCB6, 0xCCB7,
+ 0xCCB9, 0xCCBA, 0xCCBB, 0xCCBD, 0xCCBE, 0xCCBF, 0xCCC0, 0xCCC1, 0xCCC2,
+ 0xCCC3, 0xCCC6, 0xCCC8, 0xCCCA, 0xCCCB, 0xCCCC, 0xCCCD, 0xCCCE, 0xCCCF,
+ 0xCCD1, 0xCCD2, 0xCCD3, 0xCCD5, 0xCCD6, 0xCCD7, 0xCCD8, 0xCCD9, 0xCCDA,
+ 0xCCDB, 0xCCDC, 0xCCDD, 0xCCDE, 0xCCDF, 0xCCE0, 0xCCE1, 0xCCE2, 0xCCE3,
+ 0xCCE5, 0xCCE6, 0xCCE7, 0xCCE8, 0xCCE9, 0xCCEA, 0xCCEB, 0xCCED, 0xCCEE,
+ 0xCCEF, 0xCCF1, 0xCCF2, 0xCCF3, 0xCCF4, 0xCCF5, 0xCCF6, 0xCCF7, 0xCCF8,
+ 0xCCF9, 0xCCFA, 0xCCFB, 0xCCFC, 0xCCFD, 0xCCFE, 0xCCFF, 0xCD00, 0xCD02,
+ 0xCD03, 0xCD04, 0xCD05, 0xCD06, 0xCD07, 0xCD0A, 0xCD0B, 0xCD0D, 0xCD0E,
+ 0xCD0F, 0xCD11, 0xCD12, 0xCD13, 0xCD14, 0xCD15, 0xCD16, 0xCD17, 0xCD1A,
+ 0xCD1C, 0xCD1E, 0xCD1F, 0xCD20, 0xCD21, 0xCD22, 0xCD23, 0xCD25, 0xCD26,
+ 0xCD27, 0xCD29, 0xCD2A, 0xCD2B, 0xCD2D, 0xCD2E, 0xCD2F, 0xCD30, 0xCD31,
+ 0xCD32, 0xCD33, 0xCD34, 0xCD35, 0xCD36, 0xCD37, 0xCD38, 0xCD3A, 0xCD3B,
+ 0xCD3C, 0xCD3D, 0xCD3E, 0xCD3F, 0xCD40, 0xCD41, 0xCD42, 0xCD43, 0xCD44,
+ 0xCD45, 0xCD46, 0xCD47, 0xCD48, 0xCD49, 0xCD4A, 0xCD4B, 0xCD4C, 0xCD4D,
+ 0xCD4E, 0xCD4F, 0xCD50, 0xCD51, 0xCD52, 0xCD53, 0xCD54, 0xCD55, 0xCD56,
+ 0xCD57, 0xCD58, 0xCD59, 0xCD5A, 0xCD5B, 0xCD5D, 0xCD5E, 0xCD5F, 0xCD61,
+ 0xCD62, 0xCD63, 0xCD65, 0xCD66, 0xCD67, 0xCD68, 0xCD69, 0xCD6A, 0xCD6B,
+ 0xCD6E, 0xCD70, 0xCD72, 0xCD73, 0xCD74, 0xCD75, 0xCD76, 0xCD77, 0xCD79,
+ 0xCD7A, 0xCD7B, 0xCD7C, 0xCD7D, 0xCD7E, 0xCD7F, 0xCD80, 0xCD81, 0xCD82,
+ 0xCD83, 0xCD84, 0xCD85, 0xCD86, 0xCD87, 0xCD89, 0xCD8A, 0xCD8B, 0xCD8C,
+ 0xCD8D, 0xCD8E, 0xCD8F, 0xCD90, 0xCD91, 0xCD92, 0xCD93, 0xCD96, 0xCD97,
+ 0xCD99, 0xCD9A, 0xCD9B, 0xCD9D, 0xCD9E, 0xCD9F, 0xCDA0, 0xCDA1, 0xCDA2,
+ 0xCDA3, 0xCDA6, 0xCDA8, 0xCDAA, 0xCDAB, 0xCDAC, 0xCDAD, 0xCDAE, 0xCDAF,
+ 0xCDB1, 0xCDB2, 0xCDB3, 0xCDB4, 0xCDB5, 0xCDB6, 0xCDB7, 0xCDB8, 0xCDB9,
+ 0xCDBA, 0xCDBB, 0xCDBC, 0xCDBD, 0xCDBE, 0xCDBF, 0xCDC0, 0xCDC1, 0xCDC2,
+ 0xCDC3, 0xCDC5, 0xCDC6, 0xCDC7, 0xCDC8, 0xCDC9, 0xCDCA, 0xCDCB, 0xCDCD,
+ 0xCDCE, 0xCDCF, 0xCDD1, 0xCDD2, 0xCDD3, 0xCDD4, 0xCDD5, 0xCDD6, 0xCDD7,
+ 0xCDD8, 0xCDD9, 0xCDDA, 0xCDDB, 0xCDDC, 0xCDDD, 0xCDDE, 0xCDDF, 0xCDE0,
+ 0xCDE1, 0xCDE2, 0xCDE3, 0xCDE4, 0xCDE5, 0xCDE6, 0xCDE7, 0xCDE9, 0xCDEA,
+ 0xCDEB, 0xCDED, 0xCDEE, 0xCDEF, 0xCDF1, 0xCDF2, 0xCDF3, 0xCDF4, 0xCDF5,
+ 0xCDF6, 0xCDF7, 0xCDFA, 0xCDFC, 0xCDFE, 0xCDFF, 0xCE00, 0xCE01, 0xCE02,
+ 0xCE03, 0xCE05, 0xCE06, 0xCE07, 0xCE09, 0xCE0A, 0xCE0B, 0xCE0D, 0xCE0E,
+ 0xCE0F, 0xCE10, 0xCE11, 0xCE12, 0xCE13, 0xCE15, 0xCE16, 0xCE17, 0xCE18,
+ 0xCE1A, 0xCE1B, 0xCE1C, 0xCE1D, 0xCE1E, 0xCE1F, 0xCE22, 0xCE23, 0xCE25,
+ 0xCE26, 0xCE27, 0xCE29, 0xCE2A, 0xCE2B, 0xCE2C, 0xCE2D, 0xCE2E, 0xCE2F,
+ 0xCE32, 0xCE34, 0xCE36, 0xCE37, 0xCE38, 0xCE39, 0xCE3A, 0xCE3B, 0xCE3C,
+ 0xCE3D, 0xCE3E, 0xCE3F, 0xCE40, 0xCE41, 0xCE42, 0xCE43, 0xCE44, 0xCE45,
+ 0xCE46, 0xCE47, 0xCE48, 0xCE49, 0xCE4A, 0xCE4B, 0xCE4C, 0xCE4D, 0xCE4E,
+ 0xCE4F, 0xCE50, 0xCE51, 0xCE52, 0xCE53, 0xCE54, 0xCE55, 0xCE56, 0xCE57,
+ 0xCE5A, 0xCE5B, 0xCE5D, 0xCE5E, 0xCE62, 0xCE63, 0xCE64, 0xCE65, 0xCE66,
+ 0xCE67, 0xCE6A, 0xCE6C, 0xCE6E, 0xCE6F, 0xCE70, 0xCE71, 0xCE72, 0xCE73,
+ 0xCE76, 0xCE77, 0xCE79, 0xCE7A, 0xCE7B, 0xCE7D, 0xCE7E, 0xCE7F, 0xCE80,
+ 0xCE81, 0xCE82, 0xCE83, 0xCE86, 0xCE88, 0xCE8A, 0xCE8B, 0xCE8C, 0xCE8D,
+ 0xCE8E, 0xCE8F, 0xCE92, 0xCE93, 0xCE95, 0xCE96, 0xCE97, 0xCE99, 0xCE9A,
+ 0xCE9B, 0xCE9C, 0xCE9D, 0xCE9E, 0xCE9F, 0xCEA2, 0xCEA6, 0xCEA7, 0xCEA8,
+ 0xCEA9, 0xCEAA, 0xCEAB, 0xCEAE, 0xCEAF, 0xCEB0, 0xCEB1, 0xCEB2, 0xCEB3,
+ 0xCEB4, 0xCEB5, 0xCEB6, 0xCEB7, 0xCEB8, 0xCEB9, 0xCEBA, 0xCEBB, 0xCEBC,
+ 0xCEBD, 0xCEBE, 0xCEBF, 0xCEC0, 0xCEC2, 0xCEC3, 0xCEC4, 0xCEC5, 0xCEC6,
+ 0xCEC7, 0xCEC8, 0xCEC9, 0xCECA, 0xCECB, 0xCECC, 0xCECD, 0xCECE, 0xCECF,
+ 0xCED0, 0xCED1, 0xCED2, 0xCED3, 0xCED4, 0xCED5, 0xCED6, 0xCED7, 0xCED8,
+ 0xCED9, 0xCEDA, 0xCEDB, 0xCEDC, 0xCEDD, 0xCEDE, 0xCEDF, 0xCEE0, 0xCEE1,
+ 0xCEE2, 0xCEE3, 0xCEE6, 0xCEE7, 0xCEE9, 0xCEEA, 0xCEED, 0xCEEE, 0xCEEF,
+ 0xCEF0, 0xCEF1, 0xCEF2, 0xCEF3, 0xCEF6, 0xCEFA, 0xCEFB, 0xCEFC, 0xCEFD,
+ 0xCEFE, 0xCEFF, 0xCF02, 0xCF03, 0xCF05, 0xCF06, 0xCF07, 0xCF09, 0xCF0A,
+ 0xCF0B, 0xCF0C, 0xCF0D, 0xCF0E, 0xCF0F, 0xCF12, 0xCF14, 0xCF16, 0xCF17,
+ 0xCF18, 0xCF19, 0xCF1A, 0xCF1B, 0xCF1D, 0xCF1E, 0xCF1F, 0xCF21, 0xCF22,
+ 0xCF23, 0xCF25, 0xCF26, 0xCF27, 0xCF28, 0xCF29, 0xCF2A, 0xCF2B, 0xCF2E,
+ 0xCF32, 0xCF33, 0xCF34, 0xCF35, 0xCF36, 0xCF37, 0xCF39, 0xCF3A, 0xCF3B,
+ 0xCF3C, 0xCF3D, 0xCF3E, 0xCF3F, 0xCF40, 0xCF41, 0xCF42, 0xCF43, 0xCF44,
+ 0xCF45, 0xCF46, 0xCF47, 0xCF48, 0xCF49, 0xCF4A, 0xCF4B, 0xCF4C, 0xCF4D,
+ 0xCF4E, 0xCF4F, 0xCF50, 0xCF51, 0xCF52, 0xCF53, 0xCF56, 0xCF57, 0xCF59,
+ 0xCF5A, 0xCF5B, 0xCF5D, 0xCF5E, 0xCF5F, 0xCF60, 0xCF61, 0xCF62, 0xCF63,
+ 0xCF66, 0xCF68, 0xCF6A, 0xCF6B, 0xCF6C, 0xCF6D, 0xCF6E, 0xCF6F, 0xCF72,
+ 0xCF73, 0xCF75, 0xCF76, 0xCF77, 0xCF79, 0xCF7A, 0xCF7B, 0xCF7C, 0xCF7D,
+ 0xCF7E, 0xCF7F, 0xCF81, 0xCF82, 0xCF83, 0xCF84, 0xCF86, 0xCF87, 0xCF88,
+ 0xCF89, 0xCF8A, 0xCF8B, 0xCF8D, 0xCF8E, 0xCF8F, 0xCF90, 0xCF91, 0xCF92,
+ 0xCF93, 0xCF94, 0xCF95, 0xCF96, 0xCF97, 0xCF98, 0xCF99, 0xCF9A, 0xCF9B,
+ 0xCF9C, 0xCF9D, 0xCF9E, 0xCF9F, 0xCFA0, 0xCFA2, 0xCFA3, 0xCFA4, 0xCFA5,
+ 0xCFA6, 0xCFA7, 0xCFA9, 0xCFAA, 0xCFAB, 0xCFAC, 0xCFAD, 0xCFAE, 0xCFAF,
+ 0xCFB1, 0xCFB2, 0xCFB3, 0xCFB4, 0xCFB5, 0xCFB6, 0xCFB7, 0xCFB8, 0xCFB9,
+ 0xCFBA, 0xCFBB, 0xCFBC, 0xCFBD, 0xCFBE, 0xCFBF, 0xCFC0, 0xCFC1, 0xCFC2,
+ 0xCFC3, 0xCFC5, 0xCFC6, 0xCFC7, 0xCFC8, 0xCFC9, 0xCFCA, 0xCFCB, 0xCFCC,
+ 0xCFCD, 0xCFCE, 0xCFCF, 0xCFD0, 0xCFD1, 0xCFD2, 0xCFD3, 0xCFD4, 0xCFD5,
+ 0xCFD6, 0xCFD7, 0xCFD8, 0xCFD9, 0xCFDA, 0xCFDB, 0xCFDC, 0xCFDD, 0xCFDE,
+ 0xCFDF, 0xCFE2, 0xCFE3, 0xCFE5, 0xCFE6, 0xCFE7, 0xCFE9, 0xCFEA, 0xCFEB,
+ 0xCFEC, 0xCFED, 0xCFEE, 0xCFEF, 0xCFF2, 0xCFF4, 0xCFF6, 0xCFF7, 0xCFF8,
+ 0xCFF9, 0xCFFA, 0xCFFB, 0xCFFD, 0xCFFE, 0xCFFF, 0xD001, 0xD002, 0xD003,
+ 0xD005, 0xD006, 0xD007, 0xD008, 0xD009, 0xD00A, 0xD00B, 0xD00C, 0xD00D,
+ 0xD00E, 0xD00F, 0xD010, 0xD012, 0xD013, 0xD014, 0xD015, 0xD016, 0xD017,
+ 0xD019, 0xD01A, 0xD01B, 0xD01C, 0xD01D, 0xD01E, 0xD01F, 0xD020, 0xD021,
+ 0xD022, 0xD023, 0xD024, 0xD025, 0xD026, 0xD027, 0xD028, 0xD029, 0xD02A,
+ 0xD02B, 0xD02C, 0xD02E, 0xD02F, 0xD030, 0xD031, 0xD032, 0xD033, 0xD036,
+ 0xD037, 0xD039, 0xD03A, 0xD03B, 0xD03D, 0xD03E, 0xD03F, 0xD040, 0xD041,
+ 0xD042, 0xD043, 0xD046, 0xD048, 0xD04A, 0xD04B, 0xD04C, 0xD04D, 0xD04E,
+ 0xD04F, 0xD051, 0xD052, 0xD053, 0xD055, 0xD056, 0xD057, 0xD059, 0xD05A,
+ 0xD05B, 0xD05C, 0xD05D, 0xD05E, 0xD05F, 0xD061, 0xD062, 0xD063, 0xD064,
+ 0xD065, 0xD066, 0xD067, 0xD068, 0xD069, 0xD06A, 0xD06B, 0xD06E, 0xD06F,
+ 0xD071, 0xD072, 0xD073, 0xD075, 0xD076, 0xD077, 0xD078, 0xD079, 0xD07A,
+ 0xD07B, 0xD07E, 0xD07F, 0xD080, 0xD082, 0xD083, 0xD084, 0xD085, 0xD086,
+ 0xD087, 0xD088, 0xD089, 0xD08A, 0xD08B, 0xD08C, 0xD08D, 0xD08E, 0xD08F,
+ 0xD090, 0xD091, 0xD092, 0xD093, 0xD094, 0xD095, 0xD096, 0xD097, 0xD098,
+ 0xD099, 0xD09A, 0xD09B, 0xD09C, 0xD09D, 0xD09E, 0xD09F, 0xD0A0, 0xD0A1,
+ 0xD0A2, 0xD0A3, 0xD0A6, 0xD0A7, 0xD0A9, 0xD0AA, 0xD0AB, 0xD0AD, 0xD0AE,
+ 0xD0AF, 0xD0B0, 0xD0B1, 0xD0B2, 0xD0B3, 0xD0B6, 0xD0B8, 0xD0BA, 0xD0BB,
+ 0xD0BC, 0xD0BD, 0xD0BE, 0xD0BF, 0xD0C2, 0xD0C3, 0xD0C5, 0xD0C6, 0xD0C7,
+ 0xD0CA, 0xD0CB, 0xD0CC, 0xD0CD, 0xD0CE, 0xD0CF, 0xD0D2, 0xD0D6, 0xD0D7,
+ 0xD0D8, 0xD0D9, 0xD0DA, 0xD0DB, 0xD0DE, 0xD0DF, 0xD0E1, 0xD0E2, 0xD0E3,
+ 0xD0E5, 0xD0E6, 0xD0E7, 0xD0E8, 0xD0E9, 0xD0EA, 0xD0EB, 0xD0EE, 0xD0F2,
+ 0xD0F3, 0xD0F4, 0xD0F5, 0xD0F6, 0xD0F7, 0xD0F9, 0xD0FA, 0xD0FB, 0xD0FC,
+ 0xD0FD, 0xD0FE, 0xD0FF, 0xD100, 0xD101, 0xD102, 0xD103, 0xD104, 0xD105,
+ 0xD106, 0xD107, 0xD108, 0xD109, 0xD10A, 0xD10B, 0xD10C, 0xD10E, 0xD10F,
+ 0xD110, 0xD111, 0xD112, 0xD113, 0xD114, 0xD115, 0xD116, 0xD117, 0xD118,
+ 0xD119, 0xD11A, 0xD11B, 0xD11C, 0xD11D, 0xD11E, 0xD11F, 0xD120, 0xD121,
+ 0xD122, 0xD123, 0xD124, 0xD125, 0xD126, 0xD127, 0xD128, 0xD129, 0xD12A,
+ 0xD12B, 0xD12C, 0xD12D, 0xD12E, 0xD12F, 0xD132, 0xD133, 0xD135, 0xD136,
+ 0xD137, 0xD139, 0xD13B, 0xD13C, 0xD13D, 0xD13E, 0xD13F, 0xD142, 0xD146,
+ 0xD147, 0xD148, 0xD149, 0xD14A, 0xD14B, 0xD14E, 0xD14F, 0xD151, 0xD152,
+ 0xD153, 0xD155, 0xD156, 0xD157, 0xD158, 0xD159, 0xD15A, 0xD15B, 0xD15E,
+ 0xD160, 0xD162, 0xD163, 0xD164, 0xD165, 0xD166, 0xD167, 0xD169, 0xD16A,
+ 0xD16B, 0xD16D, 0xD16E, 0xD16F, 0xD170, 0xD171, 0xD172, 0xD173, 0xD174,
+ 0xD175, 0xD176, 0xD177, 0xD178, 0xD179, 0xD17A, 0xD17B, 0xD17D, 0xD17E,
+ 0xD17F, 0xD180, 0xD181, 0xD182, 0xD183, 0xD185, 0xD186, 0xD187, 0xD189,
+ 0xD18A, 0xD18B, 0xD18C, 0xD18D, 0xD18E, 0xD18F, 0xD190, 0xD191, 0xD192,
+ 0xD193, 0xD194, 0xD195, 0xD196, 0xD197, 0xD198, 0xD199, 0xD19A, 0xD19B,
+ 0xD19C, 0xD19D, 0xD19E, 0xD19F, 0xD1A2, 0xD1A3, 0xD1A5, 0xD1A6, 0xD1A7,
+ 0xD1A9, 0xD1AA, 0xD1AB, 0xD1AC, 0xD1AD, 0xD1AE, 0xD1AF, 0xD1B2, 0xD1B4,
+ 0xD1B6, 0xD1B7, 0xD1B8, 0xD1B9, 0xD1BB, 0xD1BD, 0xD1BE, 0xD1BF, 0xD1C1,
+ 0xD1C2, 0xD1C3, 0xD1C4, 0xD1C5, 0xD1C6, 0xD1C7, 0xD1C8, 0xD1C9, 0xD1CA,
+ 0xD1CB, 0xD1CC, 0xD1CD, 0xD1CE, 0xD1CF, 0xD1D0, 0xD1D1, 0xD1D2, 0xD1D3,
+ 0xD1D4, 0xD1D5, 0xD1D6, 0xD1D7, 0xD1D9, 0xD1DA, 0xD1DB, 0xD1DC, 0xD1DD,
+ 0xD1DE, 0xD1DF, 0xD1E0, 0xD1E1, 0xD1E2, 0xD1E3, 0xD1E4, 0xD1E5, 0xD1E6,
+ 0xD1E7, 0xD1E8, 0xD1E9, 0xD1EA, 0xD1EB, 0xD1EC, 0xD1ED, 0xD1EE, 0xD1EF,
+ 0xD1F0, 0xD1F1, 0xD1F2, 0xD1F3, 0xD1F5, 0xD1F6, 0xD1F7, 0xD1F9, 0xD1FA,
+ 0xD1FB, 0xD1FC, 0xD1FD, 0xD1FE, 0xD1FF, 0xD200, 0xD201, 0xD202, 0xD203,
+ 0xD204, 0xD205, 0xD206, 0xD208, 0xD20A, 0xD20B, 0xD20C, 0xD20D, 0xD20E,
+ 0xD20F, 0xD211, 0xD212, 0xD213, 0xD214, 0xD215, 0xD216, 0xD217, 0xD218,
+ 0xD219, 0xD21A, 0xD21B, 0xD21C, 0xD21D, 0xD21E, 0xD21F, 0xD220, 0xD221,
+ 0xD222, 0xD223, 0xD224, 0xD225, 0xD226, 0xD227, 0xD228, 0xD229, 0xD22A,
+ 0xD22B, 0xD22E, 0xD22F, 0xD231, 0xD232, 0xD233, 0xD235, 0xD236, 0xD237,
+ 0xD238, 0xD239, 0xD23A, 0xD23B, 0xD23E, 0xD240, 0xD242, 0xD243, 0xD244,
+ 0xD245, 0xD246, 0xD247, 0xD249, 0xD24A, 0xD24B, 0xD24C, 0xD24D, 0xD24E,
+ 0xD24F, 0xD250, 0xD251, 0xD252, 0xD253, 0xD254, 0xD255, 0xD256, 0xD257,
+ 0xD258, 0xD259, 0xD25A, 0xD25B, 0xD25D, 0xD25E, 0xD25F, 0xD260, 0xD261,
+ 0xD262, 0xD263, 0xD265, 0xD266, 0xD267, 0xD268, 0xD269, 0xD26A, 0xD26B,
+ 0xD26C, 0xD26D, 0xD26E, 0xD26F, 0xD270, 0xD271, 0xD272, 0xD273, 0xD274,
+ 0xD275, 0xD276, 0xD277, 0xD278, 0xD279, 0xD27A, 0xD27B, 0xD27C, 0xD27D,
+ 0xD27E, 0xD27F, 0xD282, 0xD283, 0xD285, 0xD286, 0xD287, 0xD289, 0xD28A,
+ 0xD28B, 0xD28C, 0xD28D, 0xD28E, 0xD28F, 0xD292, 0xD293, 0xD294, 0xD296,
+ 0xD297, 0xD298, 0xD299, 0xD29A, 0xD29B, 0xD29D, 0xD29E, 0xD29F, 0xD2A1,
+ 0xD2A2, 0xD2A3, 0xD2A5, 0xD2A6, 0xD2A7, 0xD2A8, 0xD2A9, 0xD2AA, 0xD2AB,
+ 0xD2AD, 0xD2AE, 0xD2AF, 0xD2B0, 0xD2B2, 0xD2B3, 0xD2B4, 0xD2B5, 0xD2B6,
+ 0xD2B7, 0xD2BA, 0xD2BB, 0xD2BD, 0xD2BE, 0xD2C1, 0xD2C3, 0xD2C4, 0xD2C5,
+ 0xD2C6, 0xD2C7, 0xD2CA, 0xD2CC, 0xD2CD, 0xD2CE, 0xD2CF, 0xD2D0, 0xD2D1,
+ 0xD2D2, 0xD2D3, 0xD2D5, 0xD2D6, 0xD2D7, 0xD2D9, 0xD2DA, 0xD2DB, 0xD2DD,
+ 0xD2DE, 0xD2DF, 0xD2E0, 0xD2E1, 0xD2E2, 0xD2E3, 0xD2E6, 0xD2E7, 0xD2E8,
+ 0xD2E9, 0xD2EA, 0xD2EB, 0xD2EC, 0xD2ED, 0xD2EE, 0xD2EF, 0xD2F2, 0xD2F3,
+ 0xD2F5, 0xD2F6, 0xD2F7, 0xD2F9, 0xD2FA, 0xD2FB, 0xD2FC, 0xD2FD, 0xD2FE,
+ 0xD2FF, 0xD302, 0xD304, 0xD306, 0xD307, 0xD308, 0xD309, 0xD30A, 0xD30B,
+ 0xD30F, 0xD311, 0xD312, 0xD313, 0xD315, 0xD317, 0xD318, 0xD319, 0xD31A,
+ 0xD31B, 0xD31E, 0xD322, 0xD323, 0xD324, 0xD326, 0xD327, 0xD32A, 0xD32B,
+ 0xD32D, 0xD32E, 0xD32F, 0xD331, 0xD332, 0xD333, 0xD334, 0xD335, 0xD336,
+ 0xD337, 0xD33A, 0xD33E, 0xD33F, 0xD340, 0xD341, 0xD342, 0xD343, 0xD346,
+ 0xD347, 0xD348, 0xD349, 0xD34A, 0xD34B, 0xD34C, 0xD34D, 0xD34E, 0xD34F,
+ 0xD350, 0xD351, 0xD352, 0xD353, 0xD354, 0xD355, 0xD356, 0xD357, 0xD358,
+ 0xD359, 0xD35A, 0xD35B, 0xD35C, 0xD35D, 0xD35E, 0xD35F, 0xD360, 0xD361,
+ 0xD362, 0xD363, 0xD364, 0xD365, 0xD366, 0xD367, 0xD368, 0xD369, 0xD36A,
+ 0xD36B, 0xD36C, 0xD36D, 0xD36E, 0xD36F, 0xD370, 0xD371, 0xD372, 0xD373,
+ 0xD374, 0xD375, 0xD376, 0xD377, 0xD378, 0xD379, 0xD37A, 0xD37B, 0xD37E,
+ 0xD37F, 0xD381, 0xD382, 0xD383, 0xD385, 0xD386, 0xD387, 0xD388, 0xD389,
+ 0xD38A, 0xD38B, 0xD38E, 0xD392, 0xD393, 0xD394, 0xD395, 0xD396, 0xD397,
+ 0xD39A, 0xD39B, 0xD39D, 0xD39E, 0xD39F, 0xD3A1, 0xD3A2, 0xD3A3, 0xD3A4,
+ 0xD3A5, 0xD3A6, 0xD3A7, 0xD3AA, 0xD3AC, 0xD3AE, 0xD3AF, 0xD3B0, 0xD3B1,
+ 0xD3B2, 0xD3B3, 0xD3B5, 0xD3B6, 0xD3B7, 0xD3B9, 0xD3BA, 0xD3BB, 0xD3BD,
+ 0xD3BE, 0xD3BF, 0xD3C0, 0xD3C1, 0xD3C2, 0xD3C3, 0xD3C6, 0xD3C7, 0xD3CA,
+ 0xD3CB, 0xD3CC, 0xD3CD, 0xD3CE, 0xD3CF, 0xD3D1, 0xD3D2, 0xD3D3, 0xD3D4,
+ 0xD3D5, 0xD3D6, 0xD3D7, 0xD3D9, 0xD3DA, 0xD3DB, 0xD3DC, 0xD3DD, 0xD3DE,
+ 0xD3DF, 0xD3E0, 0xD3E2, 0xD3E4, 0xD3E5, 0xD3E6, 0xD3E7, 0xD3E8, 0xD3E9,
+ 0xD3EA, 0xD3EB, 0xD3EE, 0xD3EF, 0xD3F1, 0xD3F2, 0xD3F3, 0xD3F5, 0xD3F6,
+ 0xD3F7, 0xD3F8, 0xD3F9, 0xD3FA, 0xD3FB, 0xD3FE, 0xD400, 0xD402, 0xD403,
+ 0xD404, 0xD405, 0xD406, 0xD407, 0xD409, 0xD40A, 0xD40B, 0xD40C, 0xD40D,
+ 0xD40E, 0xD40F, 0xD410, 0xD411, 0xD412, 0xD413, 0xD414, 0xD415, 0xD416,
+ 0xD417, 0xD418, 0xD419, 0xD41A, 0xD41B, 0xD41C, 0xD41E, 0xD41F, 0xD420,
+ 0xD421, 0xD422, 0xD423, 0xD424, 0xD425, 0xD426, 0xD427, 0xD428, 0xD429,
+ 0xD42A, 0xD42B, 0xD42C, 0xD42D, 0xD42E, 0xD42F, 0xD430, 0xD431, 0xD432,
+ 0xD433, 0xD434, 0xD435, 0xD436, 0xD437, 0xD438, 0xD439, 0xD43A, 0xD43B,
+ 0xD43C, 0xD43D, 0xD43E, 0xD43F, 0xD441, 0xD442, 0xD443, 0xD445, 0xD446,
+ 0xD447, 0xD448, 0xD449, 0xD44A, 0xD44B, 0xD44C, 0xD44D, 0xD44E, 0xD44F,
+ 0xD450, 0xD451, 0xD452, 0xD453, 0xD454, 0xD455, 0xD456, 0xD457, 0xD458,
+ 0xD459, 0xD45A, 0xD45B, 0xD45D, 0xD45E, 0xD45F, 0xD461, 0xD462, 0xD463,
+ 0xD465, 0xD466, 0xD467, 0xD468, 0xD469, 0xD46A, 0xD46B, 0xD46C, 0xD46E,
+ 0xD470, 0xD471, 0xD472, 0xD473, 0xD474, 0xD475, 0xD476, 0xD477, 0xD47A,
+ 0xD47B, 0xD47D, 0xD47E, 0xD481, 0xD483, 0xD484, 0xD485, 0xD486, 0xD487,
+ 0xD48A, 0xD48C, 0xD48E, 0xD48F, 0xD490, 0xD491, 0xD492, 0xD493, 0xD495,
+ 0xD496, 0xD497, 0xD498, 0xD499, 0xD49A, 0xD49B, 0xD49C, 0xD49D, 0xD49E,
+ 0xD49F, 0xD4A0, 0xD4A1, 0xD4A2, 0xD4A3, 0xD4A4, 0xD4A5, 0xD4A6, 0xD4A7,
+ 0xD4A8, 0xD4AA, 0xD4AB, 0xD4AC, 0xD4AD, 0xD4AE, 0xD4AF, 0xD4B0, 0xD4B1,
+ 0xD4B2, 0xD4B3, 0xD4B4, 0xD4B5, 0xD4B6, 0xD4B7, 0xD4B8, 0xD4B9, 0xD4BA,
+ 0xD4BB, 0xD4BC, 0xD4BD, 0xD4BE, 0xD4BF, 0xD4C0, 0xD4C1, 0xD4C2, 0xD4C3,
+ 0xD4C4, 0xD4C5, 0xD4C6, 0xD4C7, 0xD4C8, 0xD4C9, 0xD4CA, 0xD4CB, 0xD4CD,
+ 0xD4CE, 0xD4CF, 0xD4D1, 0xD4D2, 0xD4D3, 0xD4D5, 0xD4D6, 0xD4D7, 0xD4D8,
+ 0xD4D9, 0xD4DA, 0xD4DB, 0xD4DD, 0xD4DE, 0xD4E0, 0xD4E1, 0xD4E2, 0xD4E3,
+ 0xD4E4, 0xD4E5, 0xD4E6, 0xD4E7, 0xD4E9, 0xD4EA, 0xD4EB, 0xD4ED, 0xD4EE,
+ 0xD4EF, 0xD4F1, 0xD4F2, 0xD4F3, 0xD4F4, 0xD4F5, 0xD4F6, 0xD4F7, 0xD4F9,
+ 0xD4FA, 0xD4FC, 0xD4FE, 0xD4FF, 0xD500, 0xD501, 0xD502, 0xD503, 0xD505,
+ 0xD506, 0xD507, 0xD509, 0xD50A, 0xD50B, 0xD50D, 0xD50E, 0xD50F, 0xD510,
+ 0xD511, 0xD512, 0xD513, 0xD516, 0xD518, 0xD519, 0xD51A, 0xD51B, 0xD51C,
+ 0xD51D, 0xD51E, 0xD51F, 0xD520, 0xD521, 0xD522, 0xD523, 0xD524, 0xD525,
+ 0xD526, 0xD527, 0xD528, 0xD529, 0xD52A, 0xD52B, 0xD52C, 0xD52D, 0xD52E,
+ 0xD52F, 0xD530, 0xD531, 0xD532, 0xD533, 0xD534, 0xD535, 0xD536, 0xD537,
+ 0xD538, 0xD539, 0xD53A, 0xD53B, 0xD53E, 0xD53F, 0xD541, 0xD542, 0xD543,
+ 0xD545, 0xD546, 0xD547, 0xD548, 0xD549, 0xD54A, 0xD54B, 0xD54E, 0xD550,
+ 0xD552, 0xD553, 0xD554, 0xD555, 0xD556, 0xD557, 0xD55A, 0xD55B, 0xD55D,
+ 0xD55E, 0xD55F, 0xD561, 0xD562, 0xD563, 0xD564, 0xD566, 0xD567, 0xD56A,
+ 0xD56C, 0xD56E, 0xD56F, 0xD570, 0xD571, 0xD572, 0xD573, 0xD576, 0xD577,
+ 0xD579, 0xD57A, 0xD57B, 0xD57D, 0xD57E, 0xD57F, 0xD580, 0xD581, 0xD582,
+ 0xD583, 0xD586, 0xD58A, 0xD58B, 0xD58C, 0xD58D, 0xD58E, 0xD58F, 0xD591,
+ 0xD592, 0xD593, 0xD594, 0xD595, 0xD596, 0xD597, 0xD598, 0xD599, 0xD59A,
+ 0xD59B, 0xD59C, 0xD59D, 0xD59E, 0xD59F, 0xD5A0, 0xD5A1, 0xD5A2, 0xD5A3,
+ 0xD5A4, 0xD5A6, 0xD5A7, 0xD5A8, 0xD5A9, 0xD5AA, 0xD5AB, 0xD5AC, 0xD5AD,
+ 0xD5AE, 0xD5AF, 0xD5B0, 0xD5B1, 0xD5B2, 0xD5B3, 0xD5B4, 0xD5B5, 0xD5B6,
+ 0xD5B7, 0xD5B8, 0xD5B9, 0xD5BA, 0xD5BB, 0xD5BC, 0xD5BD, 0xD5BE, 0xD5BF,
+ 0xD5C0, 0xD5C1, 0xD5C2, 0xD5C3, 0xD5C4, 0xD5C5, 0xD5C6, 0xD5C7, 0xD5CA,
+ 0xD5CB, 0xD5CD, 0xD5CE, 0xD5CF, 0xD5D1, 0xD5D3, 0xD5D4, 0xD5D5, 0xD5D6,
+ 0xD5D7, 0xD5DA, 0xD5DC, 0xD5DE, 0xD5DF, 0xD5E0, 0xD5E1, 0xD5E2, 0xD5E3,
+ 0xD5E6, 0xD5E7, 0xD5E9, 0xD5EA, 0xD5EB, 0xD5ED, 0xD5EE, 0xD5EF, 0xD5F0,
+ 0xD5F1, 0xD5F2, 0xD5F3, 0xD5F6, 0xD5F8, 0xD5FA, 0xD5FB, 0xD5FC, 0xD5FD,
+ 0xD5FE, 0xD5FF, 0xD602, 0xD603, 0xD605, 0xD606, 0xD607, 0xD609, 0xD60A,
+ 0xD60B, 0xD60C, 0xD60D, 0xD60E, 0xD60F, 0xD612, 0xD616, 0xD617, 0xD618,
+ 0xD619, 0xD61A, 0xD61B, 0xD61D, 0xD61E, 0xD61F, 0xD621, 0xD622, 0xD623,
+ 0xD625, 0xD626, 0xD627, 0xD628, 0xD629, 0xD62A, 0xD62B, 0xD62C, 0xD62E,
+ 0xD62F, 0xD630, 0xD631, 0xD632, 0xD633, 0xD634, 0xD635, 0xD636, 0xD637,
+ 0xD63A, 0xD63B, 0xD63D, 0xD63E, 0xD63F, 0xD641, 0xD642, 0xD643, 0xD644,
+ 0xD646, 0xD647, 0xD64A, 0xD64C, 0xD64E, 0xD64F, 0xD650, 0xD652, 0xD653,
+ 0xD656, 0xD657, 0xD659, 0xD65A, 0xD65B, 0xD65D, 0xD65E, 0xD65F, 0xD660,
+ 0xD661, 0xD662, 0xD663, 0xD664, 0xD665, 0xD666, 0xD668, 0xD66A, 0xD66B,
+ 0xD66C, 0xD66D, 0xD66E, 0xD66F, 0xD672, 0xD673, 0xD675, 0xD676, 0xD677,
+ 0xD678, 0xD679, 0xD67A, 0xD67B, 0xD67C, 0xD67D, 0xD67E, 0xD67F, 0xD680,
+ 0xD681, 0xD682, 0xD684, 0xD686, 0xD687, 0xD688, 0xD689, 0xD68A, 0xD68B,
+ 0xD68E, 0xD68F, 0xD691, 0xD692, 0xD693, 0xD695, 0xD696, 0xD697, 0xD698,
+ 0xD699, 0xD69A, 0xD69B, 0xD69C, 0xD69E, 0xD6A0, 0xD6A2, 0xD6A3, 0xD6A4,
+ 0xD6A5, 0xD6A6, 0xD6A7, 0xD6A9, 0xD6AA, 0xD6AB, 0xD6AD, 0xD6AE, 0xD6AF,
+ 0xD6B1, 0xD6B2, 0xD6B3, 0xD6B4, 0xD6B5, 0xD6B6, 0xD6B7, 0xD6B8, 0xD6BA,
+ 0xD6BC, 0xD6BD, 0xD6BE, 0xD6BF, 0xD6C0, 0xD6C1, 0xD6C2, 0xD6C3, 0xD6C6,
+ 0xD6C7, 0xD6C9, 0xD6CA, 0xD6CB, 0xD6CD, 0xD6CE, 0xD6CF, 0xD6D0, 0xD6D2,
+ 0xD6D3, 0xD6D5, 0xD6D6, 0xD6D8, 0xD6DA, 0xD6DB, 0xD6DC, 0xD6DD, 0xD6DE,
+ 0xD6DF, 0xD6E1, 0xD6E2, 0xD6E3, 0xD6E5, 0xD6E6, 0xD6E7, 0xD6E9, 0xD6EA,
+ 0xD6EB, 0xD6EC, 0xD6ED, 0xD6EE, 0xD6EF, 0xD6F1, 0xD6F2, 0xD6F3, 0xD6F4,
+ 0xD6F6, 0xD6F7, 0xD6F8, 0xD6F9, 0xD6FA, 0xD6FB, 0xD6FE, 0xD6FF, 0xD701,
+ 0xD702, 0xD703, 0xD705, 0xD706, 0xD707, 0xD708, 0xD709, 0xD70A, 0xD70B,
+ 0xD70C, 0xD70D, 0xD70E, 0xD70F, 0xD710, 0xD712, 0xD713, 0xD714, 0xD715,
+ 0xD716, 0xD717, 0xD71A, 0xD71B, 0xD71D, 0xD71E, 0xD71F, 0xD721, 0xD722,
+ 0xD723, 0xD724, 0xD725, 0xD726, 0xD727, 0xD72A, 0xD72C, 0xD72E, 0xD72F,
+ 0xD730, 0xD731, 0xD732, 0xD733, 0xD736, 0xD737, 0xD739, 0xD73A, 0xD73B,
+ 0xD73D, 0xD73E, 0xD73F, 0xD740, 0xD741, 0xD742, 0xD743, 0xD745, 0xD746,
+ 0xD748, 0xD74A, 0xD74B, 0xD74C, 0xD74D, 0xD74E, 0xD74F, 0xD752, 0xD753,
+ 0xD755, 0xD75A, 0xD75B, 0xD75C, 0xD75D, 0xD75E, 0xD75F, 0xD762, 0xD764,
+ 0xD766, 0xD767, 0xD768, 0xD76A, 0xD76B, 0xD76D, 0xD76E, 0xD76F, 0xD771,
+ 0xD772, 0xD773, 0xD775, 0xD776, 0xD777, 0xD778, 0xD779, 0xD77A, 0xD77B,
+ 0xD77E, 0xD77F, 0xD780, 0xD782, 0xD783, 0xD784, 0xD785, 0xD786, 0xD787,
+ 0xD78A, 0xD78B, 0xD78D, 0xD78E, 0xD78F, 0xD791, 0xD792, 0xD793, 0xD794,
+ 0xD795, 0xD796, 0xD797, 0xD79A, 0xD79C, 0xD79E, 0xD79F, 0xD7A0, 0xD7A1,
+ 0xD7A2, 0xD7A3, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026,
+ 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
+ 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038,
+ 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040, 0x0041,
+ 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004A,
+ 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x0053,
+ 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C,
+ 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065,
+ 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E,
+ 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
+ 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x20A9, 0x2010,
+ 0x00A9, 0x2122, 0x22EF, 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025,
+ 0x0026, 0x0027, 0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E,
+ 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
+ 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x0040,
+ 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049,
+ 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052,
+ 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x005B,
+ 0x005C, 0x005D, 0x005E, 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064,
+ 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D,
+ 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076,
+ 0x0077, 0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x203E, 0x007E,
+ 0x005C,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-H_0.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-H_0.cpp
new file mode 100644
index 0000000000..93349291d7
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-H_0.cpp
@@ -0,0 +1,166 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h"
+
+const FX_WORD g_FXCMAP_KSC_EUC_H_0[467 * 3] = {
+ 0x0020, 0x007E, 0x1F9E, 0xA1A1, 0xA1FE, 0x0065, 0xA2A1, 0xA2E5, 0x00C3,
+ 0xA3A1, 0xA3FE, 0x0108, 0xA4A1, 0xA4D3, 0x0166, 0xA4D5, 0xA4FE, 0x0199,
+ 0xA5A1, 0xA5AA, 0x01C3, 0xA5B0, 0xA5B9, 0x01CD, 0xA5C1, 0xA5D8, 0x01D7,
+ 0xA5E1, 0xA5F8, 0x01EF, 0xA6A1, 0xA6E4, 0x0207, 0xA7A1, 0xA7EF, 0x024B,
+ 0xA8A1, 0xA8A4, 0x029A, 0xA8A6, 0xA8A6, 0x029E, 0xA8A8, 0xA8AF, 0x029F,
+ 0xA8B1, 0xA8FE, 0x02A7, 0xA9A1, 0xA9FE, 0x02F5, 0xAAA1, 0xAAF3, 0x0353,
+ 0xABA1, 0xABF6, 0x03A6, 0xACA1, 0xACC1, 0x03FC, 0xACD1, 0xACF1, 0x041D,
+ 0xB0A1, 0xB0FE, 0x043E, 0xB1A1, 0xB1FE, 0x049C, 0xB2A1, 0xB2FE, 0x04FA,
+ 0xB3A1, 0xB3FE, 0x0558, 0xB4A1, 0xB4FE, 0x05B6, 0xB5A1, 0xB5FE, 0x0614,
+ 0xB6A1, 0xB6FE, 0x0672, 0xB7A1, 0xB7FE, 0x06D0, 0xB8A1, 0xB8FE, 0x072E,
+ 0xB9A1, 0xB9FE, 0x078C, 0xBAA1, 0xBAFE, 0x07EA, 0xBBA1, 0xBBFE, 0x0848,
+ 0xBCA1, 0xBCFE, 0x08A6, 0xBDA1, 0xBDFE, 0x0904, 0xBEA1, 0xBEFE, 0x0962,
+ 0xBFA1, 0xBFFE, 0x09C0, 0xC0A1, 0xC0FE, 0x0A1E, 0xC1A1, 0xC1FE, 0x0A7C,
+ 0xC2A1, 0xC2FE, 0x0ADA, 0xC3A1, 0xC3FE, 0x0B38, 0xC4A1, 0xC4FE, 0x0B96,
+ 0xC5A1, 0xC5FE, 0x0BF4, 0xC6A1, 0xC6FE, 0x0C52, 0xC7A1, 0xC7FE, 0x0CB0,
+ 0xC8A1, 0xC8FE, 0x0D0E, 0xCAA1, 0xCAFE, 0x0D6C, 0xCBA1, 0xCBCF, 0x0DCA,
+ 0xCBD0, 0xCBD0, 0x1014, 0xCBD1, 0xCBD5, 0x0DF9, 0xCBD6, 0xCBD6, 0x0E5E,
+ 0xCBD7, 0xCBE6, 0x0DFE, 0xCBE7, 0xCBE7, 0x1B8D, 0xCBE8, 0xCBFE, 0x0E0E,
+ 0xCCA1, 0xCCFE, 0x0E25, 0xCDA1, 0xCDCE, 0x0E83, 0xCDCF, 0xCDCF, 0x0D84,
+ 0xCDD0, 0xCDE7, 0x0EB1, 0xCDE8, 0xCDE8, 0x1EDC, 0xCDE9, 0xCDFE, 0x0EC9,
+ 0xCEA1, 0xCEAC, 0x0EDF, 0xCEAD, 0xCEAD, 0x0EDA, 0xCEAE, 0xCEFE, 0x0EEB,
+ 0xCFA1, 0xCFFA, 0x0F3C, 0xCFFB, 0xCFFB, 0x0F3E, 0xCFFC, 0xCFFE, 0x0F96,
+ 0xD0A1, 0xD0A1, 0x0F99, 0xD0A2, 0xD0A2, 0x0F6A, 0xD0A3, 0xD0B7, 0x0F9A,
+ 0xD0B8, 0xD0B8, 0x0F6A, 0xD0B9, 0xD0CF, 0x0FAF, 0xD0D0, 0xD0D0, 0x0E7C,
+ 0xD0D1, 0xD0DC, 0x0FC6, 0xD0DD, 0xD0DD, 0x1023, 0xD0DE, 0xD0FE, 0x0FD2,
+ 0xD1A1, 0xD1D3, 0x0FF3, 0xD1D4, 0xD1D4, 0x1116, 0xD1D5, 0xD1D5, 0x103C,
+ 0xD1D6, 0xD1D7, 0x1026, 0xD1D8, 0xD1D8, 0x1117, 0xD1D9, 0xD1DA, 0x1028,
+ 0xD1DB, 0xD1E0, 0x1118, 0xD1E1, 0xD1E1, 0x102A, 0xD1E2, 0xD1E2, 0x16A8,
+ 0xD1E3, 0xD1E5, 0x111E, 0xD1E6, 0xD1E6, 0x1122, 0xD1E7, 0xD1E7, 0x102B,
+ 0xD1E8, 0xD1EB, 0x1123, 0xD1EC, 0xD1EC, 0x102C, 0xD1ED, 0xD1ED, 0x1127,
+ 0xD1EE, 0xD1EE, 0x102D, 0xD1EF, 0xD1F0, 0x112A, 0xD1F1, 0xD1F1, 0x102E,
+ 0xD1F2, 0xD1F2, 0x112C, 0xD1F3, 0xD1F5, 0x102F, 0xD1F6, 0xD1F6, 0x112F,
+ 0xD1F7, 0xD1F9, 0x1032, 0xD1FA, 0xD1FA, 0x1133, 0xD1FB, 0xD1FB, 0x1035,
+ 0xD1FC, 0xD1FD, 0x1136, 0xD1FE, 0xD1FE, 0x1139, 0xD2A1, 0xD2A1, 0x1036,
+ 0xD2A2, 0xD2A3, 0x113A, 0xD2A4, 0xD2A6, 0x1037, 0xD2A7, 0xD2AA, 0x113C,
+ 0xD2AB, 0xD2AB, 0x1143, 0xD2AC, 0xD2AC, 0x103A, 0xD2AD, 0xD2AD, 0x1144,
+ 0xD2AE, 0xD2B1, 0x103B, 0xD2B2, 0xD2B2, 0x1148, 0xD2B3, 0xD2BD, 0x103F,
+ 0xD2BE, 0xD2BE, 0x119F, 0xD2BF, 0xD2C1, 0x104A, 0xD2C2, 0xD2C3, 0x11A1,
+ 0xD2C4, 0xD2C4, 0x11A5, 0xD2C5, 0xD2C5, 0x104D, 0xD2C6, 0xD2CA, 0x11A6,
+ 0xD2CB, 0xD2CB, 0x11AC, 0xD2CC, 0xD2CC, 0x104E, 0xD2CD, 0xD2CE, 0x11AD,
+ 0xD2CF, 0xD2D4, 0x11B0, 0xD2D5, 0xD2D7, 0x11B7, 0xD2D8, 0xD2D8, 0x104F,
+ 0xD2D9, 0xD2DA, 0x11BD, 0xD2DB, 0xD2DD, 0x1050, 0xD2DE, 0xD2DF, 0x11C1,
+ 0xD2E0, 0xD2E0, 0x1053, 0xD2E1, 0xD2E1, 0x11C3, 0xD2E2, 0xD2E2, 0x11C6,
+ 0xD2E3, 0xD2E3, 0x1054, 0xD2E4, 0xD2E4, 0x11D4, 0xD2E5, 0xD2E8, 0x11D6,
+ 0xD2E9, 0xD2EA, 0x11DB, 0xD2EB, 0xD2EB, 0x11E0, 0xD2EC, 0xD2EF, 0x1055,
+ 0xD2F0, 0xD2F3, 0x11FC, 0xD2F4, 0xD2F5, 0x1201, 0xD2F6, 0xD2F6, 0x1059,
+ 0xD2F7, 0xD2F8, 0x1203, 0xD2F9, 0xD2FE, 0x105A, 0xD3A1, 0xD3FE, 0x1060,
+ 0xD4A1, 0xD4E5, 0x10BE, 0xD4E6, 0xD4E6, 0x10DE, 0xD4E7, 0xD4FB, 0x1103,
+ 0xD4FC, 0xD4FC, 0x1028, 0xD4FD, 0xD4FE, 0x1118, 0xD5A1, 0xD5A4, 0x111A,
+ 0xD5A5, 0xD5A5, 0x16A8, 0xD5A6, 0xD5AA, 0x111E, 0xD5AB, 0xD5AB, 0x102B,
+ 0xD5AC, 0xD5AD, 0x1123, 0xD5AE, 0xD5AE, 0x1060, 0xD5AF, 0xD5FE, 0x1125,
+ 0xD6A1, 0xD6B7, 0x1175, 0xD6B8, 0xD6B8, 0x1047, 0xD6B9, 0xD6CC, 0x118C,
+ 0xD6CD, 0xD6CD, 0x104C, 0xD6CE, 0xD6FE, 0x11A0, 0xD7A1, 0xD7CA, 0x11D1,
+ 0xD7CB, 0xD7CB, 0x15B0, 0xD7CC, 0xD7E3, 0x11FB, 0xD7E4, 0xD7E4, 0x1918,
+ 0xD7E5, 0xD7FE, 0x1213, 0xD8A1, 0xD8FE, 0x122D, 0xD9A1, 0xD9FE, 0x128B,
+ 0xDAA1, 0xDAFE, 0x12E9, 0xDBA1, 0xDBC4, 0x1347, 0xDBC5, 0xDBC5, 0x141F,
+ 0xDBC6, 0xDBE3, 0x136B, 0xDBE4, 0xDBE4, 0x133A, 0xDBE5, 0xDBFE, 0x1389,
+ 0xDCA1, 0xDCA4, 0x13A3, 0xDCA5, 0xDCA5, 0x1D5E, 0xDCA6, 0xDCFE, 0x13A7,
+ 0xDDA1, 0xDDA4, 0x1400, 0xDDA5, 0xDDA5, 0x13D7, 0xDDA6, 0xDDD4, 0x1404,
+ 0xDDD5, 0xDDD5, 0x13F5, 0xDDD6, 0xDDF3, 0x1433, 0xDDF4, 0xDDF4, 0x1DB7,
+ 0xDDF5, 0xDDFE, 0x1451, 0xDEA1, 0xDEFB, 0x145B, 0xDEFC, 0xDEFC, 0x15D0,
+ 0xDEFD, 0xDEFD, 0x14B6, 0xDEFE, 0xDEFE, 0x14F7, 0xDFA1, 0xDFB2, 0x14B7,
+ 0xDFB3, 0xDFB3, 0x1BAB, 0xDFB4, 0xDFE0, 0x14C9, 0xDFE1, 0xDFE1, 0x14F2,
+ 0xDFE2, 0xDFE7, 0x14F6, 0xDFE8, 0xDFE8, 0x156D, 0xDFE9, 0xDFFE, 0x14FC,
+ 0xE0A1, 0xE0F0, 0x1512, 0xE0F1, 0xE0F1, 0x1771, 0xE0F2, 0xE0FE, 0x1562,
+ 0xE1A1, 0xE1AC, 0x156F, 0xE1AD, 0xE1AD, 0x1554, 0xE1AE, 0xE1EC, 0x157B,
+ 0xE1ED, 0xE1ED, 0x14C5, 0xE1EE, 0xE1FE, 0x15BA, 0xE2A1, 0xE2FE, 0x15CB,
+ 0xE3A1, 0xE3F4, 0x1629, 0xE3F5, 0xE3F5, 0x1B61, 0xE3F6, 0xE3FE, 0x167D,
+ 0xE4A1, 0xE4A1, 0x1CCA, 0xE4A2, 0xE4A8, 0x1686, 0xE4A9, 0xE4A9, 0x162E,
+ 0xE4AA, 0xE4FE, 0x168D, 0xE5A1, 0xE5AD, 0x16E2, 0xE5AE, 0xE5AE, 0x16F2,
+ 0xE5AF, 0xE5B0, 0x16EF, 0xE5B1, 0xE5B2, 0x1149, 0xE5B3, 0xE5B8, 0x16F1,
+ 0xE5B9, 0xE5B9, 0x114B, 0xE5BA, 0xE5BA, 0x16F7, 0xE5BB, 0xE5BC, 0x114D,
+ 0xE5BD, 0xE5C3, 0x16F8, 0xE5C4, 0xE5C4, 0x114F, 0xE5C5, 0xE5CD, 0x16FF,
+ 0xE5CE, 0xE5CE, 0x1153, 0xE5CF, 0xE5CF, 0x1708, 0xE5D0, 0xE5D0, 0x1154,
+ 0xE5D1, 0xE5D1, 0x1709, 0xE5D2, 0xE5D2, 0x1155, 0xE5D3, 0xE5D5, 0x170A,
+ 0xE5D6, 0xE5D6, 0x1157, 0xE5D7, 0xE5F9, 0x170D, 0xE5FA, 0xE5FB, 0x115A,
+ 0xE5FC, 0xE5FC, 0x103F, 0xE5FD, 0xE5FD, 0x1730, 0xE5FE, 0xE5FE, 0x115C,
+ 0xE6A1, 0xE6A1, 0x115F, 0xE6A2, 0xE6A3, 0x1731, 0xE6A4, 0xE6A4, 0x1161,
+ 0xE6A5, 0xE6A6, 0x1733, 0xE6A7, 0xE6A7, 0x1162, 0xE6A8, 0xE6AC, 0x1735,
+ 0xE6AD, 0xE6AD, 0x1165, 0xE6AE, 0xE6AE, 0x173A, 0xE6AF, 0xE6B1, 0x1167,
+ 0xE6B2, 0xE6B2, 0x173B, 0xE6B3, 0xE6B3, 0x116A, 0xE6B4, 0xE6B6, 0x173C,
+ 0xE6B7, 0xE6B8, 0x116B, 0xE6B9, 0xE6BB, 0x173F, 0xE6BC, 0xE6BC, 0x116F,
+ 0xE6BD, 0xE6C3, 0x1742, 0xE6C4, 0xE6C4, 0x1040, 0xE6C5, 0xE6C5, 0x1749,
+ 0xE6C6, 0xE6C7, 0x1171, 0xE6C8, 0xE6C9, 0x174A, 0xE6CA, 0xE6CA, 0x1041,
+ 0xE6CB, 0xE6D1, 0x174C, 0xE6D2, 0xE6D2, 0x1174, 0xE6D3, 0xE6D5, 0x1753,
+ 0xE6D6, 0xE6D6, 0x1175, 0xE6D7, 0xE6D8, 0x1756, 0xE6D9, 0xE6D9, 0x1176,
+ 0xE6DA, 0xE6DB, 0x1758, 0xE6DC, 0xE6DC, 0x1042, 0xE6DD, 0xE6DE, 0x175A,
+ 0xE6DF, 0xE6DF, 0x1177, 0xE6E0, 0xE6E0, 0x175C, 0xE6E1, 0xE6E1, 0x1178,
+ 0xE6E2, 0xE6E3, 0x175D, 0xE6E4, 0xE6E4, 0x117A, 0xE6E5, 0xE6E5, 0x1179,
+ 0xE6E6, 0xE6E6, 0x117B, 0xE6E7, 0xE6E7, 0x175F, 0xE6E8, 0xE6E8, 0x117C,
+ 0xE6E9, 0xE6E9, 0x1760, 0xE6EA, 0xE6EB, 0x117E, 0xE6EC, 0xE6EC, 0x192F,
+ 0xE6ED, 0xE6EE, 0x1761, 0xE6EF, 0xE6EF, 0x1181, 0xE6F0, 0xE6F0, 0x1763,
+ 0xE6F1, 0xE6F1, 0x1182, 0xE6F2, 0xE6F2, 0x1554, 0xE6F3, 0xE6F4, 0x1764,
+ 0xE6F5, 0xE6F5, 0x1183, 0xE6F6, 0xE6F6, 0x1043, 0xE6F7, 0xE6F7, 0x1046,
+ 0xE6F8, 0xE6F8, 0x1766, 0xE6F9, 0xE6F9, 0x1185, 0xE6FA, 0xE6FE, 0x1767,
+ 0xE7A1, 0xE7A1, 0x1187, 0xE7A2, 0xE7A5, 0x176C, 0xE7A6, 0xE7A6, 0x1188,
+ 0xE7A7, 0xE7A8, 0x1770, 0xE7A9, 0xE7A9, 0x1189, 0xE7AA, 0xE7AA, 0x118B,
+ 0xE7AB, 0xE7AB, 0x1772, 0xE7AC, 0xE7AC, 0x1047, 0xE7AD, 0xE7AD, 0x118D,
+ 0xE7AE, 0xE7AF, 0x1773, 0xE7B0, 0xE7B0, 0x118E, 0xE7B1, 0xE7BE, 0x1775,
+ 0xE7BF, 0xE7BF, 0x118F, 0xE7C0, 0xE7C0, 0x1783, 0xE7C1, 0xE7C1, 0x1E67,
+ 0xE7C2, 0xE7C5, 0x1784, 0xE7C6, 0xE7C6, 0x1191, 0xE7C7, 0xE7C7, 0x1193,
+ 0xE7C8, 0xE7CA, 0x1788, 0xE7CB, 0xE7CB, 0x1195, 0xE7CC, 0xE7CC, 0x178B,
+ 0xE7CD, 0xE7CD, 0x1196, 0xE7CE, 0xE7CE, 0x178C, 0xE7CF, 0xE7D0, 0x1197,
+ 0xE7D1, 0xE7D2, 0x178D, 0xE7D3, 0xE7D3, 0x119A, 0xE7D4, 0xE7DE, 0x178F,
+ 0xE7DF, 0xE7DF, 0x119C, 0xE7E0, 0xE7E3, 0x179A, 0xE7E4, 0xE7E4, 0x119D,
+ 0xE7E5, 0xE7E5, 0x179E, 0xE7E6, 0xE7E6, 0x119E, 0xE7E7, 0xE7F6, 0x179F,
+ 0xE7F7, 0xE7F7, 0x16A5, 0xE7F8, 0xE7FE, 0x17AF, 0xE8A1, 0xE8E6, 0x17B6,
+ 0xE8E7, 0xE8E8, 0x11C7, 0xE8E9, 0xE8EF, 0x17FC, 0xE8F0, 0xE8F0, 0x11C9,
+ 0xE8F1, 0xE8F1, 0x1054, 0xE8F2, 0xE8F6, 0x1803, 0xE8F7, 0xE8F7, 0x11CB,
+ 0xE8F8, 0xE8F8, 0x1808, 0xE8F9, 0xE8F9, 0x16A8, 0xE8FA, 0xE8FA, 0x1809,
+ 0xE8FB, 0xE8FB, 0x11CC, 0xE8FC, 0xE8FD, 0x180A, 0xE8FE, 0xE8FE, 0x11CD,
+ 0xE9A1, 0xE9A6, 0x180C, 0xE9A7, 0xE9A7, 0x11D0, 0xE9A8, 0xE9AB, 0x1812,
+ 0xE9AC, 0xE9AC, 0x11D1, 0xE9AD, 0xE9CB, 0x1816, 0xE9CC, 0xE9CC, 0x11D3,
+ 0xE9CD, 0xE9F6, 0x1835, 0xE9F7, 0xE9F7, 0x1F34, 0xE9F8, 0xE9FE, 0x185F,
+ 0xEAA1, 0xEAC0, 0x1866, 0xEAC1, 0xEAC1, 0x17EB, 0xEAC2, 0xEAE4, 0x1886,
+ 0xEAE5, 0xEAE5, 0x11E1, 0xEAE6, 0xEAF3, 0x18A9, 0xEAF4, 0xEAF4, 0x1057,
+ 0xEAF5, 0xEAF6, 0x18B7, 0xEAF7, 0xEAF7, 0x11E3, 0xEAF8, 0xEAFB, 0x18B9,
+ 0xEAFC, 0xEAFC, 0x11E5, 0xEAFD, 0xEAFD, 0x18BD, 0xEAFE, 0xEAFE, 0x11E6,
+ 0xEBA1, 0xEBA3, 0x18BE, 0xEBA4, 0xEBA4, 0x11E8, 0xEBA5, 0xEBA6, 0x18C1,
+ 0xEBA7, 0xEBA7, 0x11EA, 0xEBA8, 0xEBA8, 0x18C3, 0xEBA9, 0xEBA9, 0x11EC,
+ 0xEBAA, 0xEBAA, 0x1058, 0xEBAB, 0xEBB9, 0x18C4, 0xEBBA, 0xEBBB, 0x11EE,
+ 0xEBBC, 0xEBBC, 0x18D3, 0xEBBD, 0xEBBD, 0x11F0, 0xEBBE, 0xEBC0, 0x18D4,
+ 0xEBC1, 0xEBC1, 0x11F1, 0xEBC2, 0xEBC2, 0x11F3, 0xEBC3, 0xEBC5, 0x18D7,
+ 0xEBC6, 0xEBC7, 0x11F4, 0xEBC8, 0xEBCB, 0x18DA, 0xEBCC, 0xEBCC, 0x11F7,
+ 0xEBCD, 0xEBCE, 0x18DE, 0xEBCF, 0xEBD1, 0x11F8, 0xEBD2, 0xEBD2, 0x15B0,
+ 0xEBD3, 0xEBD7, 0x18E0, 0xEBD8, 0xEBD8, 0x11FB, 0xEBD9, 0xEBFE, 0x18E5,
+ 0xECA1, 0xECA5, 0x190B, 0xECA6, 0xECA6, 0x1206, 0xECA7, 0xECA7, 0x1208,
+ 0xECA8, 0xECA9, 0x1910, 0xECAA, 0xECAA, 0x120A, 0xECAB, 0xECAE, 0x1912,
+ 0xECAF, 0xECAF, 0x173E, 0xECB0, 0xECB1, 0x120C, 0xECB2, 0xECB2, 0x105B,
+ 0xECB3, 0xECB4, 0x1916, 0xECB5, 0xECB5, 0x1211, 0xECB6, 0xECB7, 0x1918,
+ 0xECB8, 0xECB8, 0x1213, 0xECB9, 0xECB9, 0x191A, 0xECBA, 0xECBA, 0x1215,
+ 0xECBB, 0xECBF, 0x191B, 0xECC0, 0xECC1, 0x1218, 0xECC2, 0xECC4, 0x1920,
+ 0xECC5, 0xECC5, 0x121A, 0xECC6, 0xECC6, 0x121C, 0xECC7, 0xECC8, 0x1923,
+ 0xECC9, 0xECCA, 0x105C, 0xECCB, 0xECD4, 0x1925, 0xECD5, 0xECD5, 0x121E,
+ 0xECD6, 0xECDC, 0x192F, 0xECDD, 0xECDE, 0x1220, 0xECDF, 0xECE0, 0x1936,
+ 0xECE1, 0xECE1, 0x1222, 0xECE2, 0xECE3, 0x1938, 0xECE4, 0xECE4, 0x1224,
+ 0xECE5, 0xECE6, 0x193A, 0xECE7, 0xECE8, 0x1225, 0xECE9, 0xECF6, 0x193C,
+ 0xECF7, 0xECF8, 0x1227, 0xECF9, 0xECF9, 0x194A, 0xECFA, 0xECFA, 0x122A,
+ 0xECFB, 0xECFE, 0x194B, 0xEDA1, 0xEDA3, 0x122D, 0xEDA4, 0xEDED, 0x194F,
+ 0xEDEE, 0xEDEE, 0x14E7, 0xEDEF, 0xEDFE, 0x1999, 0xEEA1, 0xEEDA, 0x19A9,
+ 0xEEDB, 0xEEDB, 0x195E, 0xEEDC, 0xEEFE, 0x19E3, 0xEFA1, 0xEFFE, 0x1A06,
+ 0xF0A1, 0xF0FE, 0x1A64, 0xF1A1, 0xF1FE, 0x1AC2, 0xF2A1, 0xF2BC, 0x1B20,
+ 0xF2BD, 0xF2BD, 0x1663, 0xF2BE, 0xF2F9, 0x1B3C, 0xF2FA, 0xF2FA, 0x168B,
+ 0xF2FB, 0xF2FE, 0x1B78, 0xF3A1, 0xF3B0, 0x1B7C, 0xF3B1, 0xF3B1, 0x105F,
+ 0xF3B2, 0xF3FE, 0x1B8C, 0xF4A1, 0xF4A6, 0x1BD9, 0xF4A7, 0xF4A7, 0x1954,
+ 0xF4A8, 0xF4ED, 0x1BDF, 0xF4EE, 0xF4EE, 0x1A1C, 0xF4EF, 0xF4FE, 0x1C25,
+ 0xF5A1, 0xF5FE, 0x1C35, 0xF6A1, 0xF6F3, 0x1C93, 0xF6F4, 0xF6F4, 0x10B7,
+ 0xF6F5, 0xF6F5, 0x1CE6, 0xF6F6, 0xF6F6, 0x1BE3, 0xF6F7, 0xF6FE, 0x1CE7,
+ 0xF7A1, 0xF7B7, 0x1CEF, 0xF7B8, 0xF7B8, 0x1097, 0xF7B9, 0xF7C7, 0x1D06,
+ 0xF7C8, 0xF7C8, 0x10AA, 0xF7C9, 0xF7D2, 0x1D15, 0xF7D3, 0xF7D3, 0x10F4,
+ 0xF7D4, 0xF7FE, 0x1D1F, 0xF8A1, 0xF8DA, 0x1D4A, 0xF8DB, 0xF8DB, 0x1D94,
+ 0xF8DC, 0xF8EF, 0x1D84, 0xF8F0, 0xF8F0, 0x13E0, 0xF8F1, 0xF8FE, 0x1D98,
+ 0xF9A1, 0xF9FE, 0x1DA6, 0xFAA1, 0xFAA1, 0x1E1D, 0xFAA2, 0xFAA2, 0x0DE6,
+ 0xFAA3, 0xFAE5, 0x1E04, 0xFAE6, 0xFAE6, 0x0E3C, 0xFAE7, 0xFAFE, 0x1E47,
+ 0xFBA1, 0xFBFE, 0x1E5F, 0xFCA1, 0xFCA8, 0x1EBD, 0xFCA9, 0xFCA9, 0x0EE7,
+ 0xFCAA, 0xFCFE, 0x1EC5, 0xFDA1, 0xFDFE, 0x1F1A,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-V_0.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-V_0.cpp
new file mode 100644
index 0000000000..843ab7c0d1
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Korea1/KSC-EUC-V_0.cpp
@@ -0,0 +1,16 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h"
+
+const FX_WORD g_FXCMAP_KSC_EUC_V_0[16 * 3] = {
+ 0xA1A2, 0xA1A3, 0x1F78, 0xA1A5, 0xA1A5, 0x1F7A, 0xA1A6, 0xA1A6,
+ 0x2080, 0xA1A9, 0xA1AB, 0x1F7B, 0xA1AD, 0xA1AD, 0x1F7E, 0xA1B2,
+ 0xA1BD, 0x1F7F, 0xA1EB, 0xA1EB, 0x1F8B, 0xA3A1, 0xA3A1, 0x1F8C,
+ 0xA3A8, 0xA3A9, 0x1F8D, 0xA3AC, 0xA3AC, 0x1F8F, 0xA3AE, 0xA3AE,
+ 0x1F90, 0xA3BA, 0xA3BF, 0x1F91, 0xA3DB, 0xA3DB, 0x1F97, 0xA3DD,
+ 0xA3DD, 0x1F98, 0xA3DF, 0xA3DF, 0x1F99, 0xA3FB, 0xA3FE, 0x1F9A,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-H_1.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-H_1.cpp
new file mode 100644
index 0000000000..4476c3c169
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-H_1.cpp
@@ -0,0 +1,235 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h"
+
+const FX_WORD g_FXCMAP_KSCms_UHC_HW_H_1[675 * 3] = {
+ 0x0020, 0x007E, 0x1F9E, 0x8141, 0x815A, 0x2475, 0x8161, 0x817A, 0x248F,
+ 0x8181, 0x81FE, 0x24A9, 0x8241, 0x825A, 0x2527, 0x8261, 0x827A, 0x2541,
+ 0x8281, 0x82FE, 0x255B, 0x8341, 0x835A, 0x25D9, 0x8361, 0x837A, 0x25F3,
+ 0x8381, 0x83FE, 0x260D, 0x8441, 0x845A, 0x268B, 0x8461, 0x847A, 0x26A5,
+ 0x8481, 0x84FE, 0x26BF, 0x8541, 0x855A, 0x273D, 0x8561, 0x857A, 0x2757,
+ 0x8581, 0x85FE, 0x2771, 0x8641, 0x865A, 0x27EF, 0x8661, 0x867A, 0x2809,
+ 0x8681, 0x86FE, 0x2823, 0x8741, 0x875A, 0x28A1, 0x8761, 0x877A, 0x28BB,
+ 0x8781, 0x87FE, 0x28D5, 0x8841, 0x885A, 0x2953, 0x8861, 0x887A, 0x296D,
+ 0x8881, 0x88FE, 0x2987, 0x8941, 0x895A, 0x2A05, 0x8961, 0x897A, 0x2A1F,
+ 0x8981, 0x89FE, 0x2A39, 0x8A41, 0x8A5A, 0x2AB7, 0x8A61, 0x8A7A, 0x2AD1,
+ 0x8A81, 0x8AFE, 0x2AEB, 0x8B41, 0x8B5A, 0x2B69, 0x8B61, 0x8B7A, 0x2B83,
+ 0x8B81, 0x8BFE, 0x2B9D, 0x8C41, 0x8C5A, 0x2C1B, 0x8C61, 0x8C7A, 0x2C35,
+ 0x8C81, 0x8CFE, 0x2C4F, 0x8D41, 0x8D5A, 0x2CCD, 0x8D61, 0x8D7A, 0x2CE7,
+ 0x8D81, 0x8DFE, 0x2D01, 0x8E41, 0x8E5A, 0x2D7F, 0x8E61, 0x8E7A, 0x2D99,
+ 0x8E81, 0x8EFE, 0x2DB3, 0x8F41, 0x8F5A, 0x2E31, 0x8F61, 0x8F7A, 0x2E4B,
+ 0x8F81, 0x8FFE, 0x2E65, 0x9041, 0x905A, 0x2EE3, 0x9061, 0x907A, 0x2EFD,
+ 0x9081, 0x90FE, 0x2F17, 0x9141, 0x915A, 0x2F95, 0x9161, 0x917A, 0x2FAF,
+ 0x9181, 0x91FE, 0x2FC9, 0x9241, 0x925A, 0x3047, 0x9261, 0x927A, 0x3061,
+ 0x9281, 0x92FE, 0x307B, 0x9341, 0x935A, 0x30F9, 0x9361, 0x937A, 0x3113,
+ 0x9381, 0x93FE, 0x312D, 0x9441, 0x945A, 0x31AB, 0x9461, 0x947A, 0x31C5,
+ 0x9481, 0x94FE, 0x31DF, 0x9541, 0x955A, 0x325D, 0x9561, 0x957A, 0x3277,
+ 0x9581, 0x95FE, 0x3291, 0x9641, 0x965A, 0x330F, 0x9661, 0x967A, 0x3329,
+ 0x9681, 0x96FE, 0x3343, 0x9741, 0x975A, 0x33C1, 0x9761, 0x977A, 0x33DB,
+ 0x9781, 0x97FE, 0x33F5, 0x9841, 0x985A, 0x3473, 0x9861, 0x987A, 0x348D,
+ 0x9881, 0x98FE, 0x34A7, 0x9941, 0x995A, 0x3525, 0x9961, 0x997A, 0x353F,
+ 0x9981, 0x99FE, 0x3559, 0x9A41, 0x9A5A, 0x35D7, 0x9A61, 0x9A7A, 0x35F1,
+ 0x9A81, 0x9AFE, 0x360B, 0x9B41, 0x9B5A, 0x3689, 0x9B61, 0x9B7A, 0x36A3,
+ 0x9B81, 0x9BFE, 0x36BD, 0x9C41, 0x9C5A, 0x373B, 0x9C61, 0x9C7A, 0x3755,
+ 0x9C81, 0x9CFE, 0x376F, 0x9D41, 0x9D5A, 0x37ED, 0x9D61, 0x9D7A, 0x3807,
+ 0x9D81, 0x9DFE, 0x3821, 0x9E41, 0x9E5A, 0x389F, 0x9E61, 0x9E7A, 0x38B9,
+ 0x9E81, 0x9EFE, 0x38D3, 0x9F41, 0x9F5A, 0x3951, 0x9F61, 0x9F7A, 0x396B,
+ 0x9F81, 0x9FFE, 0x3985, 0xA041, 0xA05A, 0x3A03, 0xA061, 0xA07A, 0x3A1D,
+ 0xA081, 0xA0FE, 0x3A37, 0xA141, 0xA15A, 0x3AB5, 0xA161, 0xA17A, 0x3ACF,
+ 0xA181, 0xA1A0, 0x3AE9, 0xA1A1, 0xA1FE, 0x0065, 0xA241, 0xA25A, 0x3B09,
+ 0xA261, 0xA27A, 0x3B23, 0xA281, 0xA2A0, 0x3B3D, 0xA2A1, 0xA2E5, 0x00C3,
+ 0xA341, 0xA35A, 0x3B5D, 0xA361, 0xA37A, 0x3B77, 0xA381, 0xA3A0, 0x3B91,
+ 0xA3A1, 0xA3FE, 0x0108, 0xA441, 0xA45A, 0x3BB1, 0xA461, 0xA47A, 0x3BCB,
+ 0xA481, 0xA4A0, 0x3BE5, 0xA4A1, 0xA4D3, 0x0166, 0xA4D5, 0xA4FE, 0x0199,
+ 0xA541, 0xA55A, 0x3C05, 0xA561, 0xA57A, 0x3C1F, 0xA581, 0xA5A0, 0x3C39,
+ 0xA5A1, 0xA5AA, 0x01C3, 0xA5B0, 0xA5B9, 0x01CD, 0xA5C1, 0xA5D8, 0x01D7,
+ 0xA5E1, 0xA5F8, 0x01EF, 0xA641, 0xA65A, 0x3C59, 0xA661, 0xA67A, 0x3C73,
+ 0xA681, 0xA6A0, 0x3C8D, 0xA6A1, 0xA6E4, 0x0207, 0xA741, 0xA75A, 0x3CAD,
+ 0xA761, 0xA77A, 0x3CC7, 0xA781, 0xA7A0, 0x3CE1, 0xA7A1, 0xA7EF, 0x024B,
+ 0xA841, 0xA85A, 0x3D01, 0xA861, 0xA87A, 0x3D1B, 0xA881, 0xA8A0, 0x3D35,
+ 0xA8A1, 0xA8A4, 0x029A, 0xA8A6, 0xA8A6, 0x029E, 0xA8A8, 0xA8AF, 0x029F,
+ 0xA8B1, 0xA8FE, 0x02A7, 0xA941, 0xA95A, 0x3D55, 0xA961, 0xA97A, 0x3D6F,
+ 0xA981, 0xA9A0, 0x3D89, 0xA9A1, 0xA9FE, 0x02F5, 0xAA41, 0xAA5A, 0x3DA9,
+ 0xAA61, 0xAA7A, 0x3DC3, 0xAA81, 0xAAA0, 0x3DDD, 0xAAA1, 0xAAF3, 0x0353,
+ 0xAB41, 0xAB5A, 0x3DFD, 0xAB61, 0xAB7A, 0x3E17, 0xAB81, 0xABA0, 0x3E31,
+ 0xABA1, 0xABF6, 0x03A6, 0xAC41, 0xAC5A, 0x3E51, 0xAC61, 0xAC7A, 0x3E6B,
+ 0xAC81, 0xACA0, 0x3E85, 0xACA1, 0xACC1, 0x03FC, 0xACD1, 0xACF1, 0x041D,
+ 0xAD41, 0xAD5A, 0x3EA5, 0xAD61, 0xAD7A, 0x3EBF, 0xAD81, 0xADA0, 0x3ED9,
+ 0xAE41, 0xAE5A, 0x3EF9, 0xAE61, 0xAE7A, 0x3F13, 0xAE81, 0xAEA0, 0x3F2D,
+ 0xAF41, 0xAF5A, 0x3F4D, 0xAF61, 0xAF7A, 0x3F67, 0xAF81, 0xAFA0, 0x3F81,
+ 0xB041, 0xB05A, 0x3FA1, 0xB061, 0xB07A, 0x3FBB, 0xB081, 0xB0A0, 0x3FD5,
+ 0xB0A1, 0xB0FE, 0x043E, 0xB141, 0xB15A, 0x3FF5, 0xB161, 0xB17A, 0x400F,
+ 0xB181, 0xB1A0, 0x4029, 0xB1A1, 0xB1FE, 0x049C, 0xB241, 0xB25A, 0x4049,
+ 0xB261, 0xB27A, 0x4063, 0xB281, 0xB2A0, 0x407D, 0xB2A1, 0xB2FE, 0x04FA,
+ 0xB341, 0xB35A, 0x409D, 0xB361, 0xB37A, 0x40B7, 0xB381, 0xB3A0, 0x40D1,
+ 0xB3A1, 0xB3FE, 0x0558, 0xB441, 0xB45A, 0x40F1, 0xB461, 0xB47A, 0x410B,
+ 0xB481, 0xB4A0, 0x4125, 0xB4A1, 0xB4FE, 0x05B6, 0xB541, 0xB55A, 0x4145,
+ 0xB561, 0xB57A, 0x415F, 0xB581, 0xB5A0, 0x4179, 0xB5A1, 0xB5FE, 0x0614,
+ 0xB641, 0xB65A, 0x4199, 0xB661, 0xB67A, 0x41B3, 0xB681, 0xB6A0, 0x41CD,
+ 0xB6A1, 0xB6FE, 0x0672, 0xB741, 0xB75A, 0x41ED, 0xB761, 0xB77A, 0x4207,
+ 0xB781, 0xB7A0, 0x4221, 0xB7A1, 0xB7FE, 0x06D0, 0xB841, 0xB85A, 0x4241,
+ 0xB861, 0xB87A, 0x425B, 0xB881, 0xB8A0, 0x4275, 0xB8A1, 0xB8FE, 0x072E,
+ 0xB941, 0xB95A, 0x4295, 0xB961, 0xB97A, 0x42AF, 0xB981, 0xB9A0, 0x42C9,
+ 0xB9A1, 0xB9FE, 0x078C, 0xBA41, 0xBA5A, 0x42E9, 0xBA61, 0xBA7A, 0x4303,
+ 0xBA81, 0xBAA0, 0x431D, 0xBAA1, 0xBAFE, 0x07EA, 0xBB41, 0xBB5A, 0x433D,
+ 0xBB61, 0xBB7A, 0x4357, 0xBB81, 0xBBA0, 0x4371, 0xBBA1, 0xBBFE, 0x0848,
+ 0xBC41, 0xBC5A, 0x4391, 0xBC61, 0xBC7A, 0x43AB, 0xBC81, 0xBCA0, 0x43C5,
+ 0xBCA1, 0xBCFE, 0x08A6, 0xBD41, 0xBD5A, 0x43E5, 0xBD61, 0xBD7A, 0x43FF,
+ 0xBD81, 0xBDA0, 0x4419, 0xBDA1, 0xBDFE, 0x0904, 0xBE41, 0xBE5A, 0x4439,
+ 0xBE61, 0xBE7A, 0x4453, 0xBE81, 0xBEA0, 0x446D, 0xBEA1, 0xBEFE, 0x0962,
+ 0xBF41, 0xBF5A, 0x448D, 0xBF61, 0xBF7A, 0x44A7, 0xBF81, 0xBFA0, 0x44C1,
+ 0xBFA1, 0xBFFE, 0x09C0, 0xC041, 0xC05A, 0x44E1, 0xC061, 0xC07A, 0x44FB,
+ 0xC081, 0xC0A0, 0x4515, 0xC0A1, 0xC0FE, 0x0A1E, 0xC141, 0xC15A, 0x4535,
+ 0xC161, 0xC17A, 0x454F, 0xC181, 0xC1A0, 0x4569, 0xC1A1, 0xC1FE, 0x0A7C,
+ 0xC241, 0xC25A, 0x4589, 0xC261, 0xC27A, 0x45A3, 0xC281, 0xC2A0, 0x45BD,
+ 0xC2A1, 0xC2FE, 0x0ADA, 0xC341, 0xC35A, 0x45DD, 0xC361, 0xC37A, 0x45F7,
+ 0xC381, 0xC3A0, 0x4611, 0xC3A1, 0xC3FE, 0x0B38, 0xC441, 0xC45A, 0x4631,
+ 0xC461, 0xC47A, 0x464B, 0xC481, 0xC4A0, 0x4665, 0xC4A1, 0xC4FE, 0x0B96,
+ 0xC541, 0xC55A, 0x4685, 0xC561, 0xC57A, 0x469F, 0xC581, 0xC5A0, 0x46B9,
+ 0xC5A1, 0xC5FE, 0x0BF4, 0xC641, 0xC652, 0x46D9, 0xC6A1, 0xC6FE, 0x0C52,
+ 0xC7A1, 0xC7FE, 0x0CB0, 0xC8A1, 0xC8FE, 0x0D0E, 0xCAA1, 0xCAFE, 0x0D6C,
+ 0xCBA1, 0xCBCF, 0x0DCA, 0xCBD0, 0xCBD0, 0x1014, 0xCBD1, 0xCBD5, 0x0DF9,
+ 0xCBD6, 0xCBD6, 0x0E5E, 0xCBD7, 0xCBE6, 0x0DFE, 0xCBE7, 0xCBE7, 0x1B8D,
+ 0xCBE8, 0xCBFE, 0x0E0E, 0xCCA1, 0xCCFE, 0x0E25, 0xCDA1, 0xCDCE, 0x0E83,
+ 0xCDCF, 0xCDCF, 0x0D84, 0xCDD0, 0xCDE7, 0x0EB1, 0xCDE8, 0xCDE8, 0x1EDC,
+ 0xCDE9, 0xCDFE, 0x0EC9, 0xCEA1, 0xCEAC, 0x0EDF, 0xCEAD, 0xCEAD, 0x0EDA,
+ 0xCEAE, 0xCEFE, 0x0EEB, 0xCFA1, 0xCFFA, 0x0F3C, 0xCFFB, 0xCFFB, 0x0F3E,
+ 0xCFFC, 0xCFFE, 0x0F96, 0xD0A1, 0xD0A1, 0x0F99, 0xD0A2, 0xD0A2, 0x0F6A,
+ 0xD0A3, 0xD0B7, 0x0F9A, 0xD0B8, 0xD0B8, 0x0F6A, 0xD0B9, 0xD0CF, 0x0FAF,
+ 0xD0D0, 0xD0D0, 0x0E7C, 0xD0D1, 0xD0DC, 0x0FC6, 0xD0DD, 0xD0DD, 0x1023,
+ 0xD0DE, 0xD0FE, 0x0FD2, 0xD1A1, 0xD1D3, 0x0FF3, 0xD1D4, 0xD1D4, 0x1116,
+ 0xD1D5, 0xD1D5, 0x103C, 0xD1D6, 0xD1D7, 0x1026, 0xD1D8, 0xD1D8, 0x1117,
+ 0xD1D9, 0xD1DA, 0x1028, 0xD1DB, 0xD1E0, 0x1118, 0xD1E1, 0xD1E1, 0x102A,
+ 0xD1E2, 0xD1E2, 0x16A8, 0xD1E3, 0xD1E5, 0x111E, 0xD1E6, 0xD1E6, 0x1122,
+ 0xD1E7, 0xD1E7, 0x102B, 0xD1E8, 0xD1EB, 0x1123, 0xD1EC, 0xD1EC, 0x102C,
+ 0xD1ED, 0xD1ED, 0x1127, 0xD1EE, 0xD1EE, 0x102D, 0xD1EF, 0xD1F0, 0x112A,
+ 0xD1F1, 0xD1F1, 0x102E, 0xD1F2, 0xD1F2, 0x112C, 0xD1F3, 0xD1F5, 0x102F,
+ 0xD1F6, 0xD1F6, 0x112F, 0xD1F7, 0xD1F9, 0x1032, 0xD1FA, 0xD1FA, 0x1133,
+ 0xD1FB, 0xD1FB, 0x1035, 0xD1FC, 0xD1FD, 0x1136, 0xD1FE, 0xD1FE, 0x1139,
+ 0xD2A1, 0xD2A1, 0x1036, 0xD2A2, 0xD2A3, 0x113A, 0xD2A4, 0xD2A6, 0x1037,
+ 0xD2A7, 0xD2AA, 0x113C, 0xD2AB, 0xD2AB, 0x1143, 0xD2AC, 0xD2AC, 0x103A,
+ 0xD2AD, 0xD2AD, 0x1144, 0xD2AE, 0xD2B1, 0x103B, 0xD2B2, 0xD2B2, 0x1148,
+ 0xD2B3, 0xD2BD, 0x103F, 0xD2BE, 0xD2BE, 0x119F, 0xD2BF, 0xD2C1, 0x104A,
+ 0xD2C2, 0xD2C3, 0x11A1, 0xD2C4, 0xD2C4, 0x11A5, 0xD2C5, 0xD2C5, 0x104D,
+ 0xD2C6, 0xD2CA, 0x11A6, 0xD2CB, 0xD2CB, 0x11AC, 0xD2CC, 0xD2CC, 0x104E,
+ 0xD2CD, 0xD2CE, 0x11AD, 0xD2CF, 0xD2D4, 0x11B0, 0xD2D5, 0xD2D7, 0x11B7,
+ 0xD2D8, 0xD2D8, 0x104F, 0xD2D9, 0xD2DA, 0x11BD, 0xD2DB, 0xD2DD, 0x1050,
+ 0xD2DE, 0xD2DF, 0x11C1, 0xD2E0, 0xD2E0, 0x1053, 0xD2E1, 0xD2E1, 0x11C3,
+ 0xD2E2, 0xD2E2, 0x11C6, 0xD2E3, 0xD2E3, 0x1054, 0xD2E4, 0xD2E4, 0x11D4,
+ 0xD2E5, 0xD2E8, 0x11D6, 0xD2E9, 0xD2EA, 0x11DB, 0xD2EB, 0xD2EB, 0x11E0,
+ 0xD2EC, 0xD2EF, 0x1055, 0xD2F0, 0xD2F3, 0x11FC, 0xD2F4, 0xD2F5, 0x1201,
+ 0xD2F6, 0xD2F6, 0x1059, 0xD2F7, 0xD2F8, 0x1203, 0xD2F9, 0xD2FE, 0x105A,
+ 0xD3A1, 0xD3FE, 0x1060, 0xD4A1, 0xD4E5, 0x10BE, 0xD4E6, 0xD4E6, 0x10DE,
+ 0xD4E7, 0xD4FB, 0x1103, 0xD4FC, 0xD4FC, 0x1028, 0xD4FD, 0xD4FE, 0x1118,
+ 0xD5A1, 0xD5A4, 0x111A, 0xD5A5, 0xD5A5, 0x16A8, 0xD5A6, 0xD5AA, 0x111E,
+ 0xD5AB, 0xD5AB, 0x102B, 0xD5AC, 0xD5AD, 0x1123, 0xD5AE, 0xD5AE, 0x1060,
+ 0xD5AF, 0xD5FE, 0x1125, 0xD6A1, 0xD6B7, 0x1175, 0xD6B8, 0xD6B8, 0x1047,
+ 0xD6B9, 0xD6CC, 0x118C, 0xD6CD, 0xD6CD, 0x104C, 0xD6CE, 0xD6FE, 0x11A0,
+ 0xD7A1, 0xD7CA, 0x11D1, 0xD7CB, 0xD7CB, 0x15B0, 0xD7CC, 0xD7E3, 0x11FB,
+ 0xD7E4, 0xD7E4, 0x1918, 0xD7E5, 0xD7FE, 0x1213, 0xD8A1, 0xD8FE, 0x122D,
+ 0xD9A1, 0xD9FE, 0x128B, 0xDAA1, 0xDAFE, 0x12E9, 0xDBA1, 0xDBC4, 0x1347,
+ 0xDBC5, 0xDBC5, 0x141F, 0xDBC6, 0xDBE3, 0x136B, 0xDBE4, 0xDBE4, 0x133A,
+ 0xDBE5, 0xDBFE, 0x1389, 0xDCA1, 0xDCA4, 0x13A3, 0xDCA5, 0xDCA5, 0x1D5E,
+ 0xDCA6, 0xDCFE, 0x13A7, 0xDDA1, 0xDDA4, 0x1400, 0xDDA5, 0xDDA5, 0x13D7,
+ 0xDDA6, 0xDDD4, 0x1404, 0xDDD5, 0xDDD5, 0x13F5, 0xDDD6, 0xDDF3, 0x1433,
+ 0xDDF4, 0xDDF4, 0x1DB7, 0xDDF5, 0xDDFE, 0x1451, 0xDEA1, 0xDEFB, 0x145B,
+ 0xDEFC, 0xDEFC, 0x15D0, 0xDEFD, 0xDEFD, 0x14B6, 0xDEFE, 0xDEFE, 0x14F7,
+ 0xDFA1, 0xDFB2, 0x14B7, 0xDFB3, 0xDFB3, 0x1BAB, 0xDFB4, 0xDFE0, 0x14C9,
+ 0xDFE1, 0xDFE1, 0x14F2, 0xDFE2, 0xDFE7, 0x14F6, 0xDFE8, 0xDFE8, 0x156D,
+ 0xDFE9, 0xDFFE, 0x14FC, 0xE0A1, 0xE0F0, 0x1512, 0xE0F1, 0xE0F1, 0x1771,
+ 0xE0F2, 0xE0FE, 0x1562, 0xE1A1, 0xE1AC, 0x156F, 0xE1AD, 0xE1AD, 0x1554,
+ 0xE1AE, 0xE1EC, 0x157B, 0xE1ED, 0xE1ED, 0x14C5, 0xE1EE, 0xE1FE, 0x15BA,
+ 0xE2A1, 0xE2FE, 0x15CB, 0xE3A1, 0xE3F4, 0x1629, 0xE3F5, 0xE3F5, 0x1B61,
+ 0xE3F6, 0xE3FE, 0x167D, 0xE4A1, 0xE4A1, 0x1CCA, 0xE4A2, 0xE4A8, 0x1686,
+ 0xE4A9, 0xE4A9, 0x162E, 0xE4AA, 0xE4FE, 0x168D, 0xE5A1, 0xE5AD, 0x16E2,
+ 0xE5AE, 0xE5AE, 0x16F2, 0xE5AF, 0xE5B0, 0x16EF, 0xE5B1, 0xE5B2, 0x1149,
+ 0xE5B3, 0xE5B8, 0x16F1, 0xE5B9, 0xE5B9, 0x114B, 0xE5BA, 0xE5BA, 0x16F7,
+ 0xE5BB, 0xE5BC, 0x114D, 0xE5BD, 0xE5C3, 0x16F8, 0xE5C4, 0xE5C4, 0x114F,
+ 0xE5C5, 0xE5CD, 0x16FF, 0xE5CE, 0xE5CE, 0x1153, 0xE5CF, 0xE5CF, 0x1708,
+ 0xE5D0, 0xE5D0, 0x1154, 0xE5D1, 0xE5D1, 0x1709, 0xE5D2, 0xE5D2, 0x1155,
+ 0xE5D3, 0xE5D5, 0x170A, 0xE5D6, 0xE5D6, 0x1157, 0xE5D7, 0xE5F9, 0x170D,
+ 0xE5FA, 0xE5FB, 0x115A, 0xE5FC, 0xE5FC, 0x103F, 0xE5FD, 0xE5FD, 0x1730,
+ 0xE5FE, 0xE5FE, 0x115C, 0xE6A1, 0xE6A1, 0x115F, 0xE6A2, 0xE6A3, 0x1731,
+ 0xE6A4, 0xE6A4, 0x1161, 0xE6A5, 0xE6A6, 0x1733, 0xE6A7, 0xE6A7, 0x1162,
+ 0xE6A8, 0xE6AC, 0x1735, 0xE6AD, 0xE6AD, 0x1165, 0xE6AE, 0xE6AE, 0x173A,
+ 0xE6AF, 0xE6B1, 0x1167, 0xE6B2, 0xE6B2, 0x173B, 0xE6B3, 0xE6B3, 0x116A,
+ 0xE6B4, 0xE6B6, 0x173C, 0xE6B7, 0xE6B8, 0x116B, 0xE6B9, 0xE6BB, 0x173F,
+ 0xE6BC, 0xE6BC, 0x116F, 0xE6BD, 0xE6C3, 0x1742, 0xE6C4, 0xE6C4, 0x1040,
+ 0xE6C5, 0xE6C5, 0x1749, 0xE6C6, 0xE6C7, 0x1171, 0xE6C8, 0xE6C9, 0x174A,
+ 0xE6CA, 0xE6CA, 0x1041, 0xE6CB, 0xE6D1, 0x174C, 0xE6D2, 0xE6D2, 0x1174,
+ 0xE6D3, 0xE6D5, 0x1753, 0xE6D6, 0xE6D6, 0x1175, 0xE6D7, 0xE6D8, 0x1756,
+ 0xE6D9, 0xE6D9, 0x1176, 0xE6DA, 0xE6DB, 0x1758, 0xE6DC, 0xE6DC, 0x1042,
+ 0xE6DD, 0xE6DE, 0x175A, 0xE6DF, 0xE6DF, 0x1177, 0xE6E0, 0xE6E0, 0x175C,
+ 0xE6E1, 0xE6E1, 0x1178, 0xE6E2, 0xE6E3, 0x175D, 0xE6E4, 0xE6E4, 0x117A,
+ 0xE6E5, 0xE6E5, 0x1179, 0xE6E6, 0xE6E6, 0x117B, 0xE6E7, 0xE6E7, 0x175F,
+ 0xE6E8, 0xE6E8, 0x117C, 0xE6E9, 0xE6E9, 0x1760, 0xE6EA, 0xE6EB, 0x117E,
+ 0xE6EC, 0xE6EC, 0x192F, 0xE6ED, 0xE6EE, 0x1761, 0xE6EF, 0xE6EF, 0x1181,
+ 0xE6F0, 0xE6F0, 0x1763, 0xE6F1, 0xE6F1, 0x1182, 0xE6F2, 0xE6F2, 0x1554,
+ 0xE6F3, 0xE6F4, 0x1764, 0xE6F5, 0xE6F5, 0x1183, 0xE6F6, 0xE6F6, 0x1043,
+ 0xE6F7, 0xE6F7, 0x1046, 0xE6F8, 0xE6F8, 0x1766, 0xE6F9, 0xE6F9, 0x1185,
+ 0xE6FA, 0xE6FE, 0x1767, 0xE7A1, 0xE7A1, 0x1187, 0xE7A2, 0xE7A5, 0x176C,
+ 0xE7A6, 0xE7A6, 0x1188, 0xE7A7, 0xE7A8, 0x1770, 0xE7A9, 0xE7A9, 0x1189,
+ 0xE7AA, 0xE7AA, 0x118B, 0xE7AB, 0xE7AB, 0x1772, 0xE7AC, 0xE7AC, 0x1047,
+ 0xE7AD, 0xE7AD, 0x118D, 0xE7AE, 0xE7AF, 0x1773, 0xE7B0, 0xE7B0, 0x118E,
+ 0xE7B1, 0xE7BE, 0x1775, 0xE7BF, 0xE7BF, 0x118F, 0xE7C0, 0xE7C0, 0x1783,
+ 0xE7C1, 0xE7C1, 0x1E67, 0xE7C2, 0xE7C5, 0x1784, 0xE7C6, 0xE7C6, 0x1191,
+ 0xE7C7, 0xE7C7, 0x1193, 0xE7C8, 0xE7CA, 0x1788, 0xE7CB, 0xE7CB, 0x1195,
+ 0xE7CC, 0xE7CC, 0x178B, 0xE7CD, 0xE7CD, 0x1196, 0xE7CE, 0xE7CE, 0x178C,
+ 0xE7CF, 0xE7D0, 0x1197, 0xE7D1, 0xE7D2, 0x178D, 0xE7D3, 0xE7D3, 0x119A,
+ 0xE7D4, 0xE7DE, 0x178F, 0xE7DF, 0xE7DF, 0x119C, 0xE7E0, 0xE7E3, 0x179A,
+ 0xE7E4, 0xE7E4, 0x119D, 0xE7E5, 0xE7E5, 0x179E, 0xE7E6, 0xE7E6, 0x119E,
+ 0xE7E7, 0xE7F6, 0x179F, 0xE7F7, 0xE7F7, 0x16A5, 0xE7F8, 0xE7FE, 0x17AF,
+ 0xE8A1, 0xE8E6, 0x17B6, 0xE8E7, 0xE8E8, 0x11C7, 0xE8E9, 0xE8EF, 0x17FC,
+ 0xE8F0, 0xE8F0, 0x11C9, 0xE8F1, 0xE8F1, 0x1054, 0xE8F2, 0xE8F6, 0x1803,
+ 0xE8F7, 0xE8F7, 0x11CB, 0xE8F8, 0xE8F8, 0x1808, 0xE8F9, 0xE8F9, 0x16A8,
+ 0xE8FA, 0xE8FA, 0x1809, 0xE8FB, 0xE8FB, 0x11CC, 0xE8FC, 0xE8FD, 0x180A,
+ 0xE8FE, 0xE8FE, 0x11CD, 0xE9A1, 0xE9A6, 0x180C, 0xE9A7, 0xE9A7, 0x11D0,
+ 0xE9A8, 0xE9AB, 0x1812, 0xE9AC, 0xE9AC, 0x11D1, 0xE9AD, 0xE9CB, 0x1816,
+ 0xE9CC, 0xE9CC, 0x11D3, 0xE9CD, 0xE9F6, 0x1835, 0xE9F7, 0xE9F7, 0x1F34,
+ 0xE9F8, 0xE9FE, 0x185F, 0xEAA1, 0xEAC0, 0x1866, 0xEAC1, 0xEAC1, 0x17EB,
+ 0xEAC2, 0xEAE4, 0x1886, 0xEAE5, 0xEAE5, 0x11E1, 0xEAE6, 0xEAF3, 0x18A9,
+ 0xEAF4, 0xEAF4, 0x1057, 0xEAF5, 0xEAF6, 0x18B7, 0xEAF7, 0xEAF7, 0x11E3,
+ 0xEAF8, 0xEAFB, 0x18B9, 0xEAFC, 0xEAFC, 0x11E5, 0xEAFD, 0xEAFD, 0x18BD,
+ 0xEAFE, 0xEAFE, 0x11E6, 0xEBA1, 0xEBA3, 0x18BE, 0xEBA4, 0xEBA4, 0x11E8,
+ 0xEBA5, 0xEBA6, 0x18C1, 0xEBA7, 0xEBA7, 0x11EA, 0xEBA8, 0xEBA8, 0x18C3,
+ 0xEBA9, 0xEBA9, 0x11EC, 0xEBAA, 0xEBAA, 0x1058, 0xEBAB, 0xEBB9, 0x18C4,
+ 0xEBBA, 0xEBBB, 0x11EE, 0xEBBC, 0xEBBC, 0x18D3, 0xEBBD, 0xEBBD, 0x11F0,
+ 0xEBBE, 0xEBC0, 0x18D4, 0xEBC1, 0xEBC1, 0x11F1, 0xEBC2, 0xEBC2, 0x11F3,
+ 0xEBC3, 0xEBC5, 0x18D7, 0xEBC6, 0xEBC7, 0x11F4, 0xEBC8, 0xEBCB, 0x18DA,
+ 0xEBCC, 0xEBCC, 0x11F7, 0xEBCD, 0xEBCE, 0x18DE, 0xEBCF, 0xEBD1, 0x11F8,
+ 0xEBD2, 0xEBD2, 0x15B0, 0xEBD3, 0xEBD7, 0x18E0, 0xEBD8, 0xEBD8, 0x11FB,
+ 0xEBD9, 0xEBFE, 0x18E5, 0xECA1, 0xECA5, 0x190B, 0xECA6, 0xECA6, 0x1206,
+ 0xECA7, 0xECA7, 0x1208, 0xECA8, 0xECA9, 0x1910, 0xECAA, 0xECAA, 0x120A,
+ 0xECAB, 0xECAE, 0x1912, 0xECAF, 0xECAF, 0x173E, 0xECB0, 0xECB1, 0x120C,
+ 0xECB2, 0xECB2, 0x105B, 0xECB3, 0xECB4, 0x1916, 0xECB5, 0xECB5, 0x1211,
+ 0xECB6, 0xECB7, 0x1918, 0xECB8, 0xECB8, 0x1213, 0xECB9, 0xECB9, 0x191A,
+ 0xECBA, 0xECBA, 0x1215, 0xECBB, 0xECBF, 0x191B, 0xECC0, 0xECC1, 0x1218,
+ 0xECC2, 0xECC4, 0x1920, 0xECC5, 0xECC5, 0x121A, 0xECC6, 0xECC6, 0x121C,
+ 0xECC7, 0xECC8, 0x1923, 0xECC9, 0xECCA, 0x105C, 0xECCB, 0xECD4, 0x1925,
+ 0xECD5, 0xECD5, 0x121E, 0xECD6, 0xECDC, 0x192F, 0xECDD, 0xECDE, 0x1220,
+ 0xECDF, 0xECE0, 0x1936, 0xECE1, 0xECE1, 0x1222, 0xECE2, 0xECE3, 0x1938,
+ 0xECE4, 0xECE4, 0x1224, 0xECE5, 0xECE6, 0x193A, 0xECE7, 0xECE8, 0x1225,
+ 0xECE9, 0xECF6, 0x193C, 0xECF7, 0xECF8, 0x1227, 0xECF9, 0xECF9, 0x194A,
+ 0xECFA, 0xECFA, 0x122A, 0xECFB, 0xECFE, 0x194B, 0xEDA1, 0xEDA3, 0x122D,
+ 0xEDA4, 0xEDED, 0x194F, 0xEDEE, 0xEDEE, 0x14E7, 0xEDEF, 0xEDFE, 0x1999,
+ 0xEEA1, 0xEEDA, 0x19A9, 0xEEDB, 0xEEDB, 0x195E, 0xEEDC, 0xEEFE, 0x19E3,
+ 0xEFA1, 0xEFFE, 0x1A06, 0xF0A1, 0xF0FE, 0x1A64, 0xF1A1, 0xF1FE, 0x1AC2,
+ 0xF2A1, 0xF2BC, 0x1B20, 0xF2BD, 0xF2BD, 0x1663, 0xF2BE, 0xF2F9, 0x1B3C,
+ 0xF2FA, 0xF2FA, 0x168B, 0xF2FB, 0xF2FE, 0x1B78, 0xF3A1, 0xF3B0, 0x1B7C,
+ 0xF3B1, 0xF3B1, 0x105F, 0xF3B2, 0xF3FE, 0x1B8C, 0xF4A1, 0xF4A6, 0x1BD9,
+ 0xF4A7, 0xF4A7, 0x1954, 0xF4A8, 0xF4ED, 0x1BDF, 0xF4EE, 0xF4EE, 0x1A1C,
+ 0xF4EF, 0xF4FE, 0x1C25, 0xF5A1, 0xF5FE, 0x1C35, 0xF6A1, 0xF6F3, 0x1C93,
+ 0xF6F4, 0xF6F4, 0x10B7, 0xF6F5, 0xF6F5, 0x1CE6, 0xF6F6, 0xF6F6, 0x1BE3,
+ 0xF6F7, 0xF6FE, 0x1CE7, 0xF7A1, 0xF7B7, 0x1CEF, 0xF7B8, 0xF7B8, 0x1097,
+ 0xF7B9, 0xF7C7, 0x1D06, 0xF7C8, 0xF7C8, 0x10AA, 0xF7C9, 0xF7D2, 0x1D15,
+ 0xF7D3, 0xF7D3, 0x10F4, 0xF7D4, 0xF7FE, 0x1D1F, 0xF8A1, 0xF8DA, 0x1D4A,
+ 0xF8DB, 0xF8DB, 0x1D94, 0xF8DC, 0xF8EF, 0x1D84, 0xF8F0, 0xF8F0, 0x13E0,
+ 0xF8F1, 0xF8FE, 0x1D98, 0xF9A1, 0xF9FE, 0x1DA6, 0xFAA1, 0xFAA1, 0x1E1D,
+ 0xFAA2, 0xFAA2, 0x0DE6, 0xFAA3, 0xFAE5, 0x1E04, 0xFAE6, 0xFAE6, 0x0E3C,
+ 0xFAE7, 0xFAFE, 0x1E47, 0xFBA1, 0xFBFE, 0x1E5F, 0xFCA1, 0xFCA8, 0x1EBD,
+ 0xFCA9, 0xFCA9, 0x0EE7, 0xFCAA, 0xFCFE, 0x1EC5, 0xFDA1, 0xFDFE, 0x1F1A,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-V_1.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-V_1.cpp
new file mode 100644
index 0000000000..1ebcdd34be
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-HW-V_1.cpp
@@ -0,0 +1,16 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h"
+
+const FX_WORD g_FXCMAP_KSCms_UHC_HW_V_1[16 * 3] = {
+ 0xA1A2, 0xA1A3, 0x1F78, 0xA1A5, 0xA1A5, 0x1F7A, 0xA1A6, 0xA1A6,
+ 0x2080, 0xA1A9, 0xA1AB, 0x1F7B, 0xA1AD, 0xA1AD, 0x1F7E, 0xA1B2,
+ 0xA1BD, 0x1F7F, 0xA1EB, 0xA1EB, 0x1F8B, 0xA3A1, 0xA3A1, 0x1F8C,
+ 0xA3A8, 0xA3A9, 0x1F8D, 0xA3AC, 0xA3AC, 0x1F8F, 0xA3AE, 0xA3AE,
+ 0x1F90, 0xA3BA, 0xA3BF, 0x1F91, 0xA3DB, 0xA3DB, 0x1F97, 0xA3DD,
+ 0xA3DD, 0x1F98, 0xA3DF, 0xA3DF, 0x1F99, 0xA3FB, 0xA3FE, 0x1F9A,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-H_1.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-H_1.cpp
new file mode 100644
index 0000000000..865b7c6c79
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-H_1.cpp
@@ -0,0 +1,235 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h"
+
+const FX_WORD g_FXCMAP_KSCms_UHC_H_1[675 * 3] = {
+ 0x0020, 0x007E, 0x0001, 0x8141, 0x815A, 0x2475, 0x8161, 0x817A, 0x248F,
+ 0x8181, 0x81FE, 0x24A9, 0x8241, 0x825A, 0x2527, 0x8261, 0x827A, 0x2541,
+ 0x8281, 0x82FE, 0x255B, 0x8341, 0x835A, 0x25D9, 0x8361, 0x837A, 0x25F3,
+ 0x8381, 0x83FE, 0x260D, 0x8441, 0x845A, 0x268B, 0x8461, 0x847A, 0x26A5,
+ 0x8481, 0x84FE, 0x26BF, 0x8541, 0x855A, 0x273D, 0x8561, 0x857A, 0x2757,
+ 0x8581, 0x85FE, 0x2771, 0x8641, 0x865A, 0x27EF, 0x8661, 0x867A, 0x2809,
+ 0x8681, 0x86FE, 0x2823, 0x8741, 0x875A, 0x28A1, 0x8761, 0x877A, 0x28BB,
+ 0x8781, 0x87FE, 0x28D5, 0x8841, 0x885A, 0x2953, 0x8861, 0x887A, 0x296D,
+ 0x8881, 0x88FE, 0x2987, 0x8941, 0x895A, 0x2A05, 0x8961, 0x897A, 0x2A1F,
+ 0x8981, 0x89FE, 0x2A39, 0x8A41, 0x8A5A, 0x2AB7, 0x8A61, 0x8A7A, 0x2AD1,
+ 0x8A81, 0x8AFE, 0x2AEB, 0x8B41, 0x8B5A, 0x2B69, 0x8B61, 0x8B7A, 0x2B83,
+ 0x8B81, 0x8BFE, 0x2B9D, 0x8C41, 0x8C5A, 0x2C1B, 0x8C61, 0x8C7A, 0x2C35,
+ 0x8C81, 0x8CFE, 0x2C4F, 0x8D41, 0x8D5A, 0x2CCD, 0x8D61, 0x8D7A, 0x2CE7,
+ 0x8D81, 0x8DFE, 0x2D01, 0x8E41, 0x8E5A, 0x2D7F, 0x8E61, 0x8E7A, 0x2D99,
+ 0x8E81, 0x8EFE, 0x2DB3, 0x8F41, 0x8F5A, 0x2E31, 0x8F61, 0x8F7A, 0x2E4B,
+ 0x8F81, 0x8FFE, 0x2E65, 0x9041, 0x905A, 0x2EE3, 0x9061, 0x907A, 0x2EFD,
+ 0x9081, 0x90FE, 0x2F17, 0x9141, 0x915A, 0x2F95, 0x9161, 0x917A, 0x2FAF,
+ 0x9181, 0x91FE, 0x2FC9, 0x9241, 0x925A, 0x3047, 0x9261, 0x927A, 0x3061,
+ 0x9281, 0x92FE, 0x307B, 0x9341, 0x935A, 0x30F9, 0x9361, 0x937A, 0x3113,
+ 0x9381, 0x93FE, 0x312D, 0x9441, 0x945A, 0x31AB, 0x9461, 0x947A, 0x31C5,
+ 0x9481, 0x94FE, 0x31DF, 0x9541, 0x955A, 0x325D, 0x9561, 0x957A, 0x3277,
+ 0x9581, 0x95FE, 0x3291, 0x9641, 0x965A, 0x330F, 0x9661, 0x967A, 0x3329,
+ 0x9681, 0x96FE, 0x3343, 0x9741, 0x975A, 0x33C1, 0x9761, 0x977A, 0x33DB,
+ 0x9781, 0x97FE, 0x33F5, 0x9841, 0x985A, 0x3473, 0x9861, 0x987A, 0x348D,
+ 0x9881, 0x98FE, 0x34A7, 0x9941, 0x995A, 0x3525, 0x9961, 0x997A, 0x353F,
+ 0x9981, 0x99FE, 0x3559, 0x9A41, 0x9A5A, 0x35D7, 0x9A61, 0x9A7A, 0x35F1,
+ 0x9A81, 0x9AFE, 0x360B, 0x9B41, 0x9B5A, 0x3689, 0x9B61, 0x9B7A, 0x36A3,
+ 0x9B81, 0x9BFE, 0x36BD, 0x9C41, 0x9C5A, 0x373B, 0x9C61, 0x9C7A, 0x3755,
+ 0x9C81, 0x9CFE, 0x376F, 0x9D41, 0x9D5A, 0x37ED, 0x9D61, 0x9D7A, 0x3807,
+ 0x9D81, 0x9DFE, 0x3821, 0x9E41, 0x9E5A, 0x389F, 0x9E61, 0x9E7A, 0x38B9,
+ 0x9E81, 0x9EFE, 0x38D3, 0x9F41, 0x9F5A, 0x3951, 0x9F61, 0x9F7A, 0x396B,
+ 0x9F81, 0x9FFE, 0x3985, 0xA041, 0xA05A, 0x3A03, 0xA061, 0xA07A, 0x3A1D,
+ 0xA081, 0xA0FE, 0x3A37, 0xA141, 0xA15A, 0x3AB5, 0xA161, 0xA17A, 0x3ACF,
+ 0xA181, 0xA1A0, 0x3AE9, 0xA1A1, 0xA1FE, 0x0065, 0xA241, 0xA25A, 0x3B09,
+ 0xA261, 0xA27A, 0x3B23, 0xA281, 0xA2A0, 0x3B3D, 0xA2A1, 0xA2E5, 0x00C3,
+ 0xA341, 0xA35A, 0x3B5D, 0xA361, 0xA37A, 0x3B77, 0xA381, 0xA3A0, 0x3B91,
+ 0xA3A1, 0xA3FE, 0x0108, 0xA441, 0xA45A, 0x3BB1, 0xA461, 0xA47A, 0x3BCB,
+ 0xA481, 0xA4A0, 0x3BE5, 0xA4A1, 0xA4D3, 0x0166, 0xA4D5, 0xA4FE, 0x0199,
+ 0xA541, 0xA55A, 0x3C05, 0xA561, 0xA57A, 0x3C1F, 0xA581, 0xA5A0, 0x3C39,
+ 0xA5A1, 0xA5AA, 0x01C3, 0xA5B0, 0xA5B9, 0x01CD, 0xA5C1, 0xA5D8, 0x01D7,
+ 0xA5E1, 0xA5F8, 0x01EF, 0xA641, 0xA65A, 0x3C59, 0xA661, 0xA67A, 0x3C73,
+ 0xA681, 0xA6A0, 0x3C8D, 0xA6A1, 0xA6E4, 0x0207, 0xA741, 0xA75A, 0x3CAD,
+ 0xA761, 0xA77A, 0x3CC7, 0xA781, 0xA7A0, 0x3CE1, 0xA7A1, 0xA7EF, 0x024B,
+ 0xA841, 0xA85A, 0x3D01, 0xA861, 0xA87A, 0x3D1B, 0xA881, 0xA8A0, 0x3D35,
+ 0xA8A1, 0xA8A4, 0x029A, 0xA8A6, 0xA8A6, 0x029E, 0xA8A8, 0xA8AF, 0x029F,
+ 0xA8B1, 0xA8FE, 0x02A7, 0xA941, 0xA95A, 0x3D55, 0xA961, 0xA97A, 0x3D6F,
+ 0xA981, 0xA9A0, 0x3D89, 0xA9A1, 0xA9FE, 0x02F5, 0xAA41, 0xAA5A, 0x3DA9,
+ 0xAA61, 0xAA7A, 0x3DC3, 0xAA81, 0xAAA0, 0x3DDD, 0xAAA1, 0xAAF3, 0x0353,
+ 0xAB41, 0xAB5A, 0x3DFD, 0xAB61, 0xAB7A, 0x3E17, 0xAB81, 0xABA0, 0x3E31,
+ 0xABA1, 0xABF6, 0x03A6, 0xAC41, 0xAC5A, 0x3E51, 0xAC61, 0xAC7A, 0x3E6B,
+ 0xAC81, 0xACA0, 0x3E85, 0xACA1, 0xACC1, 0x03FC, 0xACD1, 0xACF1, 0x041D,
+ 0xAD41, 0xAD5A, 0x3EA5, 0xAD61, 0xAD7A, 0x3EBF, 0xAD81, 0xADA0, 0x3ED9,
+ 0xAE41, 0xAE5A, 0x3EF9, 0xAE61, 0xAE7A, 0x3F13, 0xAE81, 0xAEA0, 0x3F2D,
+ 0xAF41, 0xAF5A, 0x3F4D, 0xAF61, 0xAF7A, 0x3F67, 0xAF81, 0xAFA0, 0x3F81,
+ 0xB041, 0xB05A, 0x3FA1, 0xB061, 0xB07A, 0x3FBB, 0xB081, 0xB0A0, 0x3FD5,
+ 0xB0A1, 0xB0FE, 0x043E, 0xB141, 0xB15A, 0x3FF5, 0xB161, 0xB17A, 0x400F,
+ 0xB181, 0xB1A0, 0x4029, 0xB1A1, 0xB1FE, 0x049C, 0xB241, 0xB25A, 0x4049,
+ 0xB261, 0xB27A, 0x4063, 0xB281, 0xB2A0, 0x407D, 0xB2A1, 0xB2FE, 0x04FA,
+ 0xB341, 0xB35A, 0x409D, 0xB361, 0xB37A, 0x40B7, 0xB381, 0xB3A0, 0x40D1,
+ 0xB3A1, 0xB3FE, 0x0558, 0xB441, 0xB45A, 0x40F1, 0xB461, 0xB47A, 0x410B,
+ 0xB481, 0xB4A0, 0x4125, 0xB4A1, 0xB4FE, 0x05B6, 0xB541, 0xB55A, 0x4145,
+ 0xB561, 0xB57A, 0x415F, 0xB581, 0xB5A0, 0x4179, 0xB5A1, 0xB5FE, 0x0614,
+ 0xB641, 0xB65A, 0x4199, 0xB661, 0xB67A, 0x41B3, 0xB681, 0xB6A0, 0x41CD,
+ 0xB6A1, 0xB6FE, 0x0672, 0xB741, 0xB75A, 0x41ED, 0xB761, 0xB77A, 0x4207,
+ 0xB781, 0xB7A0, 0x4221, 0xB7A1, 0xB7FE, 0x06D0, 0xB841, 0xB85A, 0x4241,
+ 0xB861, 0xB87A, 0x425B, 0xB881, 0xB8A0, 0x4275, 0xB8A1, 0xB8FE, 0x072E,
+ 0xB941, 0xB95A, 0x4295, 0xB961, 0xB97A, 0x42AF, 0xB981, 0xB9A0, 0x42C9,
+ 0xB9A1, 0xB9FE, 0x078C, 0xBA41, 0xBA5A, 0x42E9, 0xBA61, 0xBA7A, 0x4303,
+ 0xBA81, 0xBAA0, 0x431D, 0xBAA1, 0xBAFE, 0x07EA, 0xBB41, 0xBB5A, 0x433D,
+ 0xBB61, 0xBB7A, 0x4357, 0xBB81, 0xBBA0, 0x4371, 0xBBA1, 0xBBFE, 0x0848,
+ 0xBC41, 0xBC5A, 0x4391, 0xBC61, 0xBC7A, 0x43AB, 0xBC81, 0xBCA0, 0x43C5,
+ 0xBCA1, 0xBCFE, 0x08A6, 0xBD41, 0xBD5A, 0x43E5, 0xBD61, 0xBD7A, 0x43FF,
+ 0xBD81, 0xBDA0, 0x4419, 0xBDA1, 0xBDFE, 0x0904, 0xBE41, 0xBE5A, 0x4439,
+ 0xBE61, 0xBE7A, 0x4453, 0xBE81, 0xBEA0, 0x446D, 0xBEA1, 0xBEFE, 0x0962,
+ 0xBF41, 0xBF5A, 0x448D, 0xBF61, 0xBF7A, 0x44A7, 0xBF81, 0xBFA0, 0x44C1,
+ 0xBFA1, 0xBFFE, 0x09C0, 0xC041, 0xC05A, 0x44E1, 0xC061, 0xC07A, 0x44FB,
+ 0xC081, 0xC0A0, 0x4515, 0xC0A1, 0xC0FE, 0x0A1E, 0xC141, 0xC15A, 0x4535,
+ 0xC161, 0xC17A, 0x454F, 0xC181, 0xC1A0, 0x4569, 0xC1A1, 0xC1FE, 0x0A7C,
+ 0xC241, 0xC25A, 0x4589, 0xC261, 0xC27A, 0x45A3, 0xC281, 0xC2A0, 0x45BD,
+ 0xC2A1, 0xC2FE, 0x0ADA, 0xC341, 0xC35A, 0x45DD, 0xC361, 0xC37A, 0x45F7,
+ 0xC381, 0xC3A0, 0x4611, 0xC3A1, 0xC3FE, 0x0B38, 0xC441, 0xC45A, 0x4631,
+ 0xC461, 0xC47A, 0x464B, 0xC481, 0xC4A0, 0x4665, 0xC4A1, 0xC4FE, 0x0B96,
+ 0xC541, 0xC55A, 0x4685, 0xC561, 0xC57A, 0x469F, 0xC581, 0xC5A0, 0x46B9,
+ 0xC5A1, 0xC5FE, 0x0BF4, 0xC641, 0xC652, 0x46D9, 0xC6A1, 0xC6FE, 0x0C52,
+ 0xC7A1, 0xC7FE, 0x0CB0, 0xC8A1, 0xC8FE, 0x0D0E, 0xCAA1, 0xCAFE, 0x0D6C,
+ 0xCBA1, 0xCBCF, 0x0DCA, 0xCBD0, 0xCBD0, 0x1014, 0xCBD1, 0xCBD5, 0x0DF9,
+ 0xCBD6, 0xCBD6, 0x0E5E, 0xCBD7, 0xCBE6, 0x0DFE, 0xCBE7, 0xCBE7, 0x1B8D,
+ 0xCBE8, 0xCBFE, 0x0E0E, 0xCCA1, 0xCCFE, 0x0E25, 0xCDA1, 0xCDCE, 0x0E83,
+ 0xCDCF, 0xCDCF, 0x0D84, 0xCDD0, 0xCDE7, 0x0EB1, 0xCDE8, 0xCDE8, 0x1EDC,
+ 0xCDE9, 0xCDFE, 0x0EC9, 0xCEA1, 0xCEAC, 0x0EDF, 0xCEAD, 0xCEAD, 0x0EDA,
+ 0xCEAE, 0xCEFE, 0x0EEB, 0xCFA1, 0xCFFA, 0x0F3C, 0xCFFB, 0xCFFB, 0x0F3E,
+ 0xCFFC, 0xCFFE, 0x0F96, 0xD0A1, 0xD0A1, 0x0F99, 0xD0A2, 0xD0A2, 0x0F6A,
+ 0xD0A3, 0xD0B7, 0x0F9A, 0xD0B8, 0xD0B8, 0x0F6A, 0xD0B9, 0xD0CF, 0x0FAF,
+ 0xD0D0, 0xD0D0, 0x0E7C, 0xD0D1, 0xD0DC, 0x0FC6, 0xD0DD, 0xD0DD, 0x1023,
+ 0xD0DE, 0xD0FE, 0x0FD2, 0xD1A1, 0xD1D3, 0x0FF3, 0xD1D4, 0xD1D4, 0x1116,
+ 0xD1D5, 0xD1D5, 0x103C, 0xD1D6, 0xD1D7, 0x1026, 0xD1D8, 0xD1D8, 0x1117,
+ 0xD1D9, 0xD1DA, 0x1028, 0xD1DB, 0xD1E0, 0x1118, 0xD1E1, 0xD1E1, 0x102A,
+ 0xD1E2, 0xD1E2, 0x16A8, 0xD1E3, 0xD1E5, 0x111E, 0xD1E6, 0xD1E6, 0x1122,
+ 0xD1E7, 0xD1E7, 0x102B, 0xD1E8, 0xD1EB, 0x1123, 0xD1EC, 0xD1EC, 0x102C,
+ 0xD1ED, 0xD1ED, 0x1127, 0xD1EE, 0xD1EE, 0x102D, 0xD1EF, 0xD1F0, 0x112A,
+ 0xD1F1, 0xD1F1, 0x102E, 0xD1F2, 0xD1F2, 0x112C, 0xD1F3, 0xD1F5, 0x102F,
+ 0xD1F6, 0xD1F6, 0x112F, 0xD1F7, 0xD1F9, 0x1032, 0xD1FA, 0xD1FA, 0x1133,
+ 0xD1FB, 0xD1FB, 0x1035, 0xD1FC, 0xD1FD, 0x1136, 0xD1FE, 0xD1FE, 0x1139,
+ 0xD2A1, 0xD2A1, 0x1036, 0xD2A2, 0xD2A3, 0x113A, 0xD2A4, 0xD2A6, 0x1037,
+ 0xD2A7, 0xD2AA, 0x113C, 0xD2AB, 0xD2AB, 0x1143, 0xD2AC, 0xD2AC, 0x103A,
+ 0xD2AD, 0xD2AD, 0x1144, 0xD2AE, 0xD2B1, 0x103B, 0xD2B2, 0xD2B2, 0x1148,
+ 0xD2B3, 0xD2BD, 0x103F, 0xD2BE, 0xD2BE, 0x119F, 0xD2BF, 0xD2C1, 0x104A,
+ 0xD2C2, 0xD2C3, 0x11A1, 0xD2C4, 0xD2C4, 0x11A5, 0xD2C5, 0xD2C5, 0x104D,
+ 0xD2C6, 0xD2CA, 0x11A6, 0xD2CB, 0xD2CB, 0x11AC, 0xD2CC, 0xD2CC, 0x104E,
+ 0xD2CD, 0xD2CE, 0x11AD, 0xD2CF, 0xD2D4, 0x11B0, 0xD2D5, 0xD2D7, 0x11B7,
+ 0xD2D8, 0xD2D8, 0x104F, 0xD2D9, 0xD2DA, 0x11BD, 0xD2DB, 0xD2DD, 0x1050,
+ 0xD2DE, 0xD2DF, 0x11C1, 0xD2E0, 0xD2E0, 0x1053, 0xD2E1, 0xD2E1, 0x11C3,
+ 0xD2E2, 0xD2E2, 0x11C6, 0xD2E3, 0xD2E3, 0x1054, 0xD2E4, 0xD2E4, 0x11D4,
+ 0xD2E5, 0xD2E8, 0x11D6, 0xD2E9, 0xD2EA, 0x11DB, 0xD2EB, 0xD2EB, 0x11E0,
+ 0xD2EC, 0xD2EF, 0x1055, 0xD2F0, 0xD2F3, 0x11FC, 0xD2F4, 0xD2F5, 0x1201,
+ 0xD2F6, 0xD2F6, 0x1059, 0xD2F7, 0xD2F8, 0x1203, 0xD2F9, 0xD2FE, 0x105A,
+ 0xD3A1, 0xD3FE, 0x1060, 0xD4A1, 0xD4E5, 0x10BE, 0xD4E6, 0xD4E6, 0x10DE,
+ 0xD4E7, 0xD4FB, 0x1103, 0xD4FC, 0xD4FC, 0x1028, 0xD4FD, 0xD4FE, 0x1118,
+ 0xD5A1, 0xD5A4, 0x111A, 0xD5A5, 0xD5A5, 0x16A8, 0xD5A6, 0xD5AA, 0x111E,
+ 0xD5AB, 0xD5AB, 0x102B, 0xD5AC, 0xD5AD, 0x1123, 0xD5AE, 0xD5AE, 0x1060,
+ 0xD5AF, 0xD5FE, 0x1125, 0xD6A1, 0xD6B7, 0x1175, 0xD6B8, 0xD6B8, 0x1047,
+ 0xD6B9, 0xD6CC, 0x118C, 0xD6CD, 0xD6CD, 0x104C, 0xD6CE, 0xD6FE, 0x11A0,
+ 0xD7A1, 0xD7CA, 0x11D1, 0xD7CB, 0xD7CB, 0x15B0, 0xD7CC, 0xD7E3, 0x11FB,
+ 0xD7E4, 0xD7E4, 0x1918, 0xD7E5, 0xD7FE, 0x1213, 0xD8A1, 0xD8FE, 0x122D,
+ 0xD9A1, 0xD9FE, 0x128B, 0xDAA1, 0xDAFE, 0x12E9, 0xDBA1, 0xDBC4, 0x1347,
+ 0xDBC5, 0xDBC5, 0x141F, 0xDBC6, 0xDBE3, 0x136B, 0xDBE4, 0xDBE4, 0x133A,
+ 0xDBE5, 0xDBFE, 0x1389, 0xDCA1, 0xDCA4, 0x13A3, 0xDCA5, 0xDCA5, 0x1D5E,
+ 0xDCA6, 0xDCFE, 0x13A7, 0xDDA1, 0xDDA4, 0x1400, 0xDDA5, 0xDDA5, 0x13D7,
+ 0xDDA6, 0xDDD4, 0x1404, 0xDDD5, 0xDDD5, 0x13F5, 0xDDD6, 0xDDF3, 0x1433,
+ 0xDDF4, 0xDDF4, 0x1DB7, 0xDDF5, 0xDDFE, 0x1451, 0xDEA1, 0xDEFB, 0x145B,
+ 0xDEFC, 0xDEFC, 0x15D0, 0xDEFD, 0xDEFD, 0x14B6, 0xDEFE, 0xDEFE, 0x14F7,
+ 0xDFA1, 0xDFB2, 0x14B7, 0xDFB3, 0xDFB3, 0x1BAB, 0xDFB4, 0xDFE0, 0x14C9,
+ 0xDFE1, 0xDFE1, 0x14F2, 0xDFE2, 0xDFE7, 0x14F6, 0xDFE8, 0xDFE8, 0x156D,
+ 0xDFE9, 0xDFFE, 0x14FC, 0xE0A1, 0xE0F0, 0x1512, 0xE0F1, 0xE0F1, 0x1771,
+ 0xE0F2, 0xE0FE, 0x1562, 0xE1A1, 0xE1AC, 0x156F, 0xE1AD, 0xE1AD, 0x1554,
+ 0xE1AE, 0xE1EC, 0x157B, 0xE1ED, 0xE1ED, 0x14C5, 0xE1EE, 0xE1FE, 0x15BA,
+ 0xE2A1, 0xE2FE, 0x15CB, 0xE3A1, 0xE3F4, 0x1629, 0xE3F5, 0xE3F5, 0x1B61,
+ 0xE3F6, 0xE3FE, 0x167D, 0xE4A1, 0xE4A1, 0x1CCA, 0xE4A2, 0xE4A8, 0x1686,
+ 0xE4A9, 0xE4A9, 0x162E, 0xE4AA, 0xE4FE, 0x168D, 0xE5A1, 0xE5AD, 0x16E2,
+ 0xE5AE, 0xE5AE, 0x16F2, 0xE5AF, 0xE5B0, 0x16EF, 0xE5B1, 0xE5B2, 0x1149,
+ 0xE5B3, 0xE5B8, 0x16F1, 0xE5B9, 0xE5B9, 0x114B, 0xE5BA, 0xE5BA, 0x16F7,
+ 0xE5BB, 0xE5BC, 0x114D, 0xE5BD, 0xE5C3, 0x16F8, 0xE5C4, 0xE5C4, 0x114F,
+ 0xE5C5, 0xE5CD, 0x16FF, 0xE5CE, 0xE5CE, 0x1153, 0xE5CF, 0xE5CF, 0x1708,
+ 0xE5D0, 0xE5D0, 0x1154, 0xE5D1, 0xE5D1, 0x1709, 0xE5D2, 0xE5D2, 0x1155,
+ 0xE5D3, 0xE5D5, 0x170A, 0xE5D6, 0xE5D6, 0x1157, 0xE5D7, 0xE5F9, 0x170D,
+ 0xE5FA, 0xE5FB, 0x115A, 0xE5FC, 0xE5FC, 0x103F, 0xE5FD, 0xE5FD, 0x1730,
+ 0xE5FE, 0xE5FE, 0x115C, 0xE6A1, 0xE6A1, 0x115F, 0xE6A2, 0xE6A3, 0x1731,
+ 0xE6A4, 0xE6A4, 0x1161, 0xE6A5, 0xE6A6, 0x1733, 0xE6A7, 0xE6A7, 0x1162,
+ 0xE6A8, 0xE6AC, 0x1735, 0xE6AD, 0xE6AD, 0x1165, 0xE6AE, 0xE6AE, 0x173A,
+ 0xE6AF, 0xE6B1, 0x1167, 0xE6B2, 0xE6B2, 0x173B, 0xE6B3, 0xE6B3, 0x116A,
+ 0xE6B4, 0xE6B6, 0x173C, 0xE6B7, 0xE6B8, 0x116B, 0xE6B9, 0xE6BB, 0x173F,
+ 0xE6BC, 0xE6BC, 0x116F, 0xE6BD, 0xE6C3, 0x1742, 0xE6C4, 0xE6C4, 0x1040,
+ 0xE6C5, 0xE6C5, 0x1749, 0xE6C6, 0xE6C7, 0x1171, 0xE6C8, 0xE6C9, 0x174A,
+ 0xE6CA, 0xE6CA, 0x1041, 0xE6CB, 0xE6D1, 0x174C, 0xE6D2, 0xE6D2, 0x1174,
+ 0xE6D3, 0xE6D5, 0x1753, 0xE6D6, 0xE6D6, 0x1175, 0xE6D7, 0xE6D8, 0x1756,
+ 0xE6D9, 0xE6D9, 0x1176, 0xE6DA, 0xE6DB, 0x1758, 0xE6DC, 0xE6DC, 0x1042,
+ 0xE6DD, 0xE6DE, 0x175A, 0xE6DF, 0xE6DF, 0x1177, 0xE6E0, 0xE6E0, 0x175C,
+ 0xE6E1, 0xE6E1, 0x1178, 0xE6E2, 0xE6E3, 0x175D, 0xE6E4, 0xE6E4, 0x117A,
+ 0xE6E5, 0xE6E5, 0x1179, 0xE6E6, 0xE6E6, 0x117B, 0xE6E7, 0xE6E7, 0x175F,
+ 0xE6E8, 0xE6E8, 0x117C, 0xE6E9, 0xE6E9, 0x1760, 0xE6EA, 0xE6EB, 0x117E,
+ 0xE6EC, 0xE6EC, 0x192F, 0xE6ED, 0xE6EE, 0x1761, 0xE6EF, 0xE6EF, 0x1181,
+ 0xE6F0, 0xE6F0, 0x1763, 0xE6F1, 0xE6F1, 0x1182, 0xE6F2, 0xE6F2, 0x1554,
+ 0xE6F3, 0xE6F4, 0x1764, 0xE6F5, 0xE6F5, 0x1183, 0xE6F6, 0xE6F6, 0x1043,
+ 0xE6F7, 0xE6F7, 0x1046, 0xE6F8, 0xE6F8, 0x1766, 0xE6F9, 0xE6F9, 0x1185,
+ 0xE6FA, 0xE6FE, 0x1767, 0xE7A1, 0xE7A1, 0x1187, 0xE7A2, 0xE7A5, 0x176C,
+ 0xE7A6, 0xE7A6, 0x1188, 0xE7A7, 0xE7A8, 0x1770, 0xE7A9, 0xE7A9, 0x1189,
+ 0xE7AA, 0xE7AA, 0x118B, 0xE7AB, 0xE7AB, 0x1772, 0xE7AC, 0xE7AC, 0x1047,
+ 0xE7AD, 0xE7AD, 0x118D, 0xE7AE, 0xE7AF, 0x1773, 0xE7B0, 0xE7B0, 0x118E,
+ 0xE7B1, 0xE7BE, 0x1775, 0xE7BF, 0xE7BF, 0x118F, 0xE7C0, 0xE7C0, 0x1783,
+ 0xE7C1, 0xE7C1, 0x1E67, 0xE7C2, 0xE7C5, 0x1784, 0xE7C6, 0xE7C6, 0x1191,
+ 0xE7C7, 0xE7C7, 0x1193, 0xE7C8, 0xE7CA, 0x1788, 0xE7CB, 0xE7CB, 0x1195,
+ 0xE7CC, 0xE7CC, 0x178B, 0xE7CD, 0xE7CD, 0x1196, 0xE7CE, 0xE7CE, 0x178C,
+ 0xE7CF, 0xE7D0, 0x1197, 0xE7D1, 0xE7D2, 0x178D, 0xE7D3, 0xE7D3, 0x119A,
+ 0xE7D4, 0xE7DE, 0x178F, 0xE7DF, 0xE7DF, 0x119C, 0xE7E0, 0xE7E3, 0x179A,
+ 0xE7E4, 0xE7E4, 0x119D, 0xE7E5, 0xE7E5, 0x179E, 0xE7E6, 0xE7E6, 0x119E,
+ 0xE7E7, 0xE7F6, 0x179F, 0xE7F7, 0xE7F7, 0x16A5, 0xE7F8, 0xE7FE, 0x17AF,
+ 0xE8A1, 0xE8E6, 0x17B6, 0xE8E7, 0xE8E8, 0x11C7, 0xE8E9, 0xE8EF, 0x17FC,
+ 0xE8F0, 0xE8F0, 0x11C9, 0xE8F1, 0xE8F1, 0x1054, 0xE8F2, 0xE8F6, 0x1803,
+ 0xE8F7, 0xE8F7, 0x11CB, 0xE8F8, 0xE8F8, 0x1808, 0xE8F9, 0xE8F9, 0x16A8,
+ 0xE8FA, 0xE8FA, 0x1809, 0xE8FB, 0xE8FB, 0x11CC, 0xE8FC, 0xE8FD, 0x180A,
+ 0xE8FE, 0xE8FE, 0x11CD, 0xE9A1, 0xE9A6, 0x180C, 0xE9A7, 0xE9A7, 0x11D0,
+ 0xE9A8, 0xE9AB, 0x1812, 0xE9AC, 0xE9AC, 0x11D1, 0xE9AD, 0xE9CB, 0x1816,
+ 0xE9CC, 0xE9CC, 0x11D3, 0xE9CD, 0xE9F6, 0x1835, 0xE9F7, 0xE9F7, 0x1F34,
+ 0xE9F8, 0xE9FE, 0x185F, 0xEAA1, 0xEAC0, 0x1866, 0xEAC1, 0xEAC1, 0x17EB,
+ 0xEAC2, 0xEAE4, 0x1886, 0xEAE5, 0xEAE5, 0x11E1, 0xEAE6, 0xEAF3, 0x18A9,
+ 0xEAF4, 0xEAF4, 0x1057, 0xEAF5, 0xEAF6, 0x18B7, 0xEAF7, 0xEAF7, 0x11E3,
+ 0xEAF8, 0xEAFB, 0x18B9, 0xEAFC, 0xEAFC, 0x11E5, 0xEAFD, 0xEAFD, 0x18BD,
+ 0xEAFE, 0xEAFE, 0x11E6, 0xEBA1, 0xEBA3, 0x18BE, 0xEBA4, 0xEBA4, 0x11E8,
+ 0xEBA5, 0xEBA6, 0x18C1, 0xEBA7, 0xEBA7, 0x11EA, 0xEBA8, 0xEBA8, 0x18C3,
+ 0xEBA9, 0xEBA9, 0x11EC, 0xEBAA, 0xEBAA, 0x1058, 0xEBAB, 0xEBB9, 0x18C4,
+ 0xEBBA, 0xEBBB, 0x11EE, 0xEBBC, 0xEBBC, 0x18D3, 0xEBBD, 0xEBBD, 0x11F0,
+ 0xEBBE, 0xEBC0, 0x18D4, 0xEBC1, 0xEBC1, 0x11F1, 0xEBC2, 0xEBC2, 0x11F3,
+ 0xEBC3, 0xEBC5, 0x18D7, 0xEBC6, 0xEBC7, 0x11F4, 0xEBC8, 0xEBCB, 0x18DA,
+ 0xEBCC, 0xEBCC, 0x11F7, 0xEBCD, 0xEBCE, 0x18DE, 0xEBCF, 0xEBD1, 0x11F8,
+ 0xEBD2, 0xEBD2, 0x15B0, 0xEBD3, 0xEBD7, 0x18E0, 0xEBD8, 0xEBD8, 0x11FB,
+ 0xEBD9, 0xEBFE, 0x18E5, 0xECA1, 0xECA5, 0x190B, 0xECA6, 0xECA6, 0x1206,
+ 0xECA7, 0xECA7, 0x1208, 0xECA8, 0xECA9, 0x1910, 0xECAA, 0xECAA, 0x120A,
+ 0xECAB, 0xECAE, 0x1912, 0xECAF, 0xECAF, 0x173E, 0xECB0, 0xECB1, 0x120C,
+ 0xECB2, 0xECB2, 0x105B, 0xECB3, 0xECB4, 0x1916, 0xECB5, 0xECB5, 0x1211,
+ 0xECB6, 0xECB7, 0x1918, 0xECB8, 0xECB8, 0x1213, 0xECB9, 0xECB9, 0x191A,
+ 0xECBA, 0xECBA, 0x1215, 0xECBB, 0xECBF, 0x191B, 0xECC0, 0xECC1, 0x1218,
+ 0xECC2, 0xECC4, 0x1920, 0xECC5, 0xECC5, 0x121A, 0xECC6, 0xECC6, 0x121C,
+ 0xECC7, 0xECC8, 0x1923, 0xECC9, 0xECCA, 0x105C, 0xECCB, 0xECD4, 0x1925,
+ 0xECD5, 0xECD5, 0x121E, 0xECD6, 0xECDC, 0x192F, 0xECDD, 0xECDE, 0x1220,
+ 0xECDF, 0xECE0, 0x1936, 0xECE1, 0xECE1, 0x1222, 0xECE2, 0xECE3, 0x1938,
+ 0xECE4, 0xECE4, 0x1224, 0xECE5, 0xECE6, 0x193A, 0xECE7, 0xECE8, 0x1225,
+ 0xECE9, 0xECF6, 0x193C, 0xECF7, 0xECF8, 0x1227, 0xECF9, 0xECF9, 0x194A,
+ 0xECFA, 0xECFA, 0x122A, 0xECFB, 0xECFE, 0x194B, 0xEDA1, 0xEDA3, 0x122D,
+ 0xEDA4, 0xEDED, 0x194F, 0xEDEE, 0xEDEE, 0x14E7, 0xEDEF, 0xEDFE, 0x1999,
+ 0xEEA1, 0xEEDA, 0x19A9, 0xEEDB, 0xEEDB, 0x195E, 0xEEDC, 0xEEFE, 0x19E3,
+ 0xEFA1, 0xEFFE, 0x1A06, 0xF0A1, 0xF0FE, 0x1A64, 0xF1A1, 0xF1FE, 0x1AC2,
+ 0xF2A1, 0xF2BC, 0x1B20, 0xF2BD, 0xF2BD, 0x1663, 0xF2BE, 0xF2F9, 0x1B3C,
+ 0xF2FA, 0xF2FA, 0x168B, 0xF2FB, 0xF2FE, 0x1B78, 0xF3A1, 0xF3B0, 0x1B7C,
+ 0xF3B1, 0xF3B1, 0x105F, 0xF3B2, 0xF3FE, 0x1B8C, 0xF4A1, 0xF4A6, 0x1BD9,
+ 0xF4A7, 0xF4A7, 0x1954, 0xF4A8, 0xF4ED, 0x1BDF, 0xF4EE, 0xF4EE, 0x1A1C,
+ 0xF4EF, 0xF4FE, 0x1C25, 0xF5A1, 0xF5FE, 0x1C35, 0xF6A1, 0xF6F3, 0x1C93,
+ 0xF6F4, 0xF6F4, 0x10B7, 0xF6F5, 0xF6F5, 0x1CE6, 0xF6F6, 0xF6F6, 0x1BE3,
+ 0xF6F7, 0xF6FE, 0x1CE7, 0xF7A1, 0xF7B7, 0x1CEF, 0xF7B8, 0xF7B8, 0x1097,
+ 0xF7B9, 0xF7C7, 0x1D06, 0xF7C8, 0xF7C8, 0x10AA, 0xF7C9, 0xF7D2, 0x1D15,
+ 0xF7D3, 0xF7D3, 0x10F4, 0xF7D4, 0xF7FE, 0x1D1F, 0xF8A1, 0xF8DA, 0x1D4A,
+ 0xF8DB, 0xF8DB, 0x1D94, 0xF8DC, 0xF8EF, 0x1D84, 0xF8F0, 0xF8F0, 0x13E0,
+ 0xF8F1, 0xF8FE, 0x1D98, 0xF9A1, 0xF9FE, 0x1DA6, 0xFAA1, 0xFAA1, 0x1E1D,
+ 0xFAA2, 0xFAA2, 0x0DE6, 0xFAA3, 0xFAE5, 0x1E04, 0xFAE6, 0xFAE6, 0x0E3C,
+ 0xFAE7, 0xFAFE, 0x1E47, 0xFBA1, 0xFBFE, 0x1E5F, 0xFCA1, 0xFCA8, 0x1EBD,
+ 0xFCA9, 0xFCA9, 0x0EE7, 0xFCAA, 0xFCFE, 0x1EC5, 0xFDA1, 0xFDFE, 0x1F1A,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-V_1.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-V_1.cpp
new file mode 100644
index 0000000000..ed55f14c12
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Korea1/KSCms-UHC-V_1.cpp
@@ -0,0 +1,16 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h"
+
+const FX_WORD g_FXCMAP_KSCms_UHC_V_1[16 * 3] = {
+ 0xA1A2, 0xA1A3, 0x1F78, 0xA1A5, 0xA1A5, 0x1F7A, 0xA1A6, 0xA1A6,
+ 0x2080, 0xA1A9, 0xA1AB, 0x1F7B, 0xA1AD, 0xA1AD, 0x1F7E, 0xA1B2,
+ 0xA1BD, 0x1F7F, 0xA1EB, 0xA1EB, 0x1F8B, 0xA3A1, 0xA3A1, 0x1F8C,
+ 0xA3A8, 0xA3A9, 0x1F8D, 0xA3AC, 0xA3AC, 0x1F8F, 0xA3AE, 0xA3AE,
+ 0x1F90, 0xA3BA, 0xA3BF, 0x1F91, 0xA3DB, 0xA3DB, 0x1F97, 0xA3DD,
+ 0xA3DD, 0x1F98, 0xA3DF, 0xA3DF, 0x1F99, 0xA3FB, 0xA3FE, 0x1F9A,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/KSCpc-EUC-H_0.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/KSCpc-EUC-H_0.cpp
new file mode 100644
index 0000000000..2fcebc1fb1
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Korea1/KSCpc-EUC-H_0.cpp
@@ -0,0 +1,180 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h"
+
+const FX_WORD g_FXCMAP_KSCpc_EUC_H_0[509 * 3] = {
+ 0x0020, 0x007E, 0x0001, 0x0081, 0x0083, 0x0060, 0x00FE, 0x00FF, 0x0063,
+ 0xA141, 0xA17D, 0x1FFF, 0xA181, 0xA19A, 0x203C, 0xA19C, 0xA1A0, 0x2056,
+ 0xA1A1, 0xA1A1, 0x0065, 0xA1A2, 0xA1A3, 0x205B, 0xA1A4, 0xA1FE, 0x0068,
+ 0xA241, 0xA24C, 0x205D, 0xA2A1, 0xA2E5, 0x00C3, 0xA2E6, 0xA2FE, 0x2069,
+ 0xA341, 0xA37D, 0x2082, 0xA381, 0xA39F, 0x20BF, 0xA3A1, 0xA3FE, 0x0108,
+ 0xA441, 0xA47D, 0x20DE, 0xA481, 0xA49F, 0x211B, 0xA4A1, 0xA4D3, 0x0166,
+ 0xA4D5, 0xA4FE, 0x0199, 0xA541, 0xA57D, 0x213A, 0xA581, 0xA58B, 0x2177,
+ 0xA5A1, 0xA5AA, 0x01C3, 0xA5B0, 0xA5B9, 0x01CD, 0xA5C1, 0xA5D8, 0x01D7,
+ 0xA5DA, 0xA5DE, 0x2182, 0xA5E1, 0xA5F8, 0x01EF, 0xA5F9, 0xA5FC, 0x2187,
+ 0xA641, 0xA67D, 0x218B, 0xA681, 0xA68A, 0x21C8, 0xA68D, 0xA693, 0x21D2,
+ 0xA696, 0xA69B, 0x21D9, 0xA69E, 0xA69F, 0x21DF, 0xA6A1, 0xA6E4, 0x0207,
+ 0xA6E5, 0xA6FE, 0x21E1, 0xA741, 0xA77D, 0x21FB, 0xA781, 0xA79F, 0x2238,
+ 0xA7A1, 0xA7EF, 0x024B, 0xA7F0, 0xA7FE, 0x2257, 0xA841, 0xA87D, 0x2266,
+ 0xA881, 0xA89F, 0x22A3, 0xA8A1, 0xA8A4, 0x029A, 0xA8A6, 0xA8A6, 0x029E,
+ 0xA8A8, 0xA8AF, 0x029F, 0xA8B1, 0xA8FE, 0x02A7, 0xA941, 0xA974, 0x22C2,
+ 0xA9A1, 0xA9FE, 0x02F5, 0xAA41, 0xAA7D, 0x22F6, 0xAA81, 0xAA9F, 0x2333,
+ 0xAAA1, 0xAAF3, 0x0353, 0xAAF4, 0xAAFE, 0x2352, 0xAB41, 0xAB7D, 0x235D,
+ 0xAB81, 0xAB9F, 0x239A, 0xABA1, 0xABF6, 0x03A6, 0xABF7, 0xABFA, 0x23B9,
+ 0xABFB, 0xABFD, 0x2472, 0xAC41, 0xAC7D, 0x23BD, 0xAC81, 0xAC97, 0x23FA,
+ 0xACA1, 0xACC1, 0x03FC, 0xACC2, 0xACD0, 0x2411, 0xACD1, 0xACF1, 0x041D,
+ 0xACF2, 0xACF6, 0x2420, 0xAD41, 0xAD7D, 0x2425, 0xADA1, 0xADB0, 0x2462,
+ 0xB0A1, 0xB0FE, 0x043E, 0xB1A1, 0xB1FE, 0x049C, 0xB2A1, 0xB2FE, 0x04FA,
+ 0xB3A1, 0xB3FE, 0x0558, 0xB4A1, 0xB4FE, 0x05B6, 0xB5A1, 0xB5FE, 0x0614,
+ 0xB6A1, 0xB6FE, 0x0672, 0xB7A1, 0xB7FE, 0x06D0, 0xB8A1, 0xB8FE, 0x072E,
+ 0xB9A1, 0xB9FE, 0x078C, 0xBAA1, 0xBAFE, 0x07EA, 0xBBA1, 0xBBFE, 0x0848,
+ 0xBCA1, 0xBCFE, 0x08A6, 0xBDA1, 0xBDFE, 0x0904, 0xBEA1, 0xBEFE, 0x0962,
+ 0xBFA1, 0xBFFE, 0x09C0, 0xC0A1, 0xC0FE, 0x0A1E, 0xC1A1, 0xC1FE, 0x0A7C,
+ 0xC2A1, 0xC2FE, 0x0ADA, 0xC3A1, 0xC3FE, 0x0B38, 0xC4A1, 0xC4FE, 0x0B96,
+ 0xC5A1, 0xC5FE, 0x0BF4, 0xC6A1, 0xC6FE, 0x0C52, 0xC7A1, 0xC7FE, 0x0CB0,
+ 0xC8A1, 0xC8FE, 0x0D0E, 0xCAA1, 0xCAFE, 0x0D6C, 0xCBA1, 0xCBCF, 0x0DCA,
+ 0xCBD0, 0xCBD0, 0x1014, 0xCBD1, 0xCBD5, 0x0DF9, 0xCBD6, 0xCBD6, 0x0E5E,
+ 0xCBD7, 0xCBE6, 0x0DFE, 0xCBE7, 0xCBE7, 0x1B8D, 0xCBE8, 0xCBFE, 0x0E0E,
+ 0xCCA1, 0xCCFE, 0x0E25, 0xCDA1, 0xCDCE, 0x0E83, 0xCDCF, 0xCDCF, 0x0D84,
+ 0xCDD0, 0xCDE7, 0x0EB1, 0xCDE8, 0xCDE8, 0x1EDC, 0xCDE9, 0xCDFE, 0x0EC9,
+ 0xCEA1, 0xCEAC, 0x0EDF, 0xCEAD, 0xCEAD, 0x0EDA, 0xCEAE, 0xCEFE, 0x0EEB,
+ 0xCFA1, 0xCFFA, 0x0F3C, 0xCFFB, 0xCFFB, 0x0F3E, 0xCFFC, 0xCFFE, 0x0F96,
+ 0xD0A1, 0xD0A1, 0x0F99, 0xD0A2, 0xD0A2, 0x0F6A, 0xD0A3, 0xD0B7, 0x0F9A,
+ 0xD0B8, 0xD0B8, 0x0F6A, 0xD0B9, 0xD0CF, 0x0FAF, 0xD0D0, 0xD0D0, 0x0E7C,
+ 0xD0D1, 0xD0DC, 0x0FC6, 0xD0DD, 0xD0DD, 0x1023, 0xD0DE, 0xD0FE, 0x0FD2,
+ 0xD1A1, 0xD1D3, 0x0FF3, 0xD1D4, 0xD1D4, 0x1116, 0xD1D5, 0xD1D5, 0x103C,
+ 0xD1D6, 0xD1D7, 0x1026, 0xD1D8, 0xD1D8, 0x1117, 0xD1D9, 0xD1DA, 0x1028,
+ 0xD1DB, 0xD1E0, 0x1118, 0xD1E1, 0xD1E1, 0x102A, 0xD1E2, 0xD1E2, 0x16A8,
+ 0xD1E3, 0xD1E5, 0x111E, 0xD1E6, 0xD1E6, 0x1122, 0xD1E7, 0xD1E7, 0x102B,
+ 0xD1E8, 0xD1EB, 0x1123, 0xD1EC, 0xD1EC, 0x102C, 0xD1ED, 0xD1ED, 0x1127,
+ 0xD1EE, 0xD1EE, 0x102D, 0xD1EF, 0xD1F0, 0x112A, 0xD1F1, 0xD1F1, 0x102E,
+ 0xD1F2, 0xD1F2, 0x112C, 0xD1F3, 0xD1F5, 0x102F, 0xD1F6, 0xD1F6, 0x112F,
+ 0xD1F7, 0xD1F9, 0x1032, 0xD1FA, 0xD1FA, 0x1133, 0xD1FB, 0xD1FB, 0x1035,
+ 0xD1FC, 0xD1FD, 0x1136, 0xD1FE, 0xD1FE, 0x1139, 0xD2A1, 0xD2A1, 0x1036,
+ 0xD2A2, 0xD2A3, 0x113A, 0xD2A4, 0xD2A6, 0x1037, 0xD2A7, 0xD2AA, 0x113C,
+ 0xD2AB, 0xD2AB, 0x1143, 0xD2AC, 0xD2AC, 0x103A, 0xD2AD, 0xD2AD, 0x1144,
+ 0xD2AE, 0xD2B1, 0x103B, 0xD2B2, 0xD2B2, 0x1148, 0xD2B3, 0xD2BD, 0x103F,
+ 0xD2BE, 0xD2BE, 0x119F, 0xD2BF, 0xD2C1, 0x104A, 0xD2C2, 0xD2C3, 0x11A1,
+ 0xD2C4, 0xD2C4, 0x11A5, 0xD2C5, 0xD2C5, 0x104D, 0xD2C6, 0xD2CA, 0x11A6,
+ 0xD2CB, 0xD2CB, 0x11AC, 0xD2CC, 0xD2CC, 0x104E, 0xD2CD, 0xD2CE, 0x11AD,
+ 0xD2CF, 0xD2D4, 0x11B0, 0xD2D5, 0xD2D7, 0x11B7, 0xD2D8, 0xD2D8, 0x104F,
+ 0xD2D9, 0xD2DA, 0x11BD, 0xD2DB, 0xD2DD, 0x1050, 0xD2DE, 0xD2DF, 0x11C1,
+ 0xD2E0, 0xD2E0, 0x1053, 0xD2E1, 0xD2E1, 0x11C3, 0xD2E2, 0xD2E2, 0x11C6,
+ 0xD2E3, 0xD2E3, 0x1054, 0xD2E4, 0xD2E4, 0x11D4, 0xD2E5, 0xD2E8, 0x11D6,
+ 0xD2E9, 0xD2EA, 0x11DB, 0xD2EB, 0xD2EB, 0x11E0, 0xD2EC, 0xD2EF, 0x1055,
+ 0xD2F0, 0xD2F3, 0x11FC, 0xD2F4, 0xD2F5, 0x1201, 0xD2F6, 0xD2F6, 0x1059,
+ 0xD2F7, 0xD2F8, 0x1203, 0xD2F9, 0xD2FE, 0x105A, 0xD3A1, 0xD3FE, 0x1060,
+ 0xD4A1, 0xD4E5, 0x10BE, 0xD4E6, 0xD4E6, 0x10DE, 0xD4E7, 0xD4FB, 0x1103,
+ 0xD4FC, 0xD4FC, 0x1028, 0xD4FD, 0xD4FE, 0x1118, 0xD5A1, 0xD5A4, 0x111A,
+ 0xD5A5, 0xD5A5, 0x16A8, 0xD5A6, 0xD5AA, 0x111E, 0xD5AB, 0xD5AB, 0x102B,
+ 0xD5AC, 0xD5AD, 0x1123, 0xD5AE, 0xD5AE, 0x1060, 0xD5AF, 0xD5FE, 0x1125,
+ 0xD6A1, 0xD6B7, 0x1175, 0xD6B8, 0xD6B8, 0x1047, 0xD6B9, 0xD6CC, 0x118C,
+ 0xD6CD, 0xD6CD, 0x104C, 0xD6CE, 0xD6FE, 0x11A0, 0xD7A1, 0xD7CA, 0x11D1,
+ 0xD7CB, 0xD7CB, 0x15B0, 0xD7CC, 0xD7E3, 0x11FB, 0xD7E4, 0xD7E4, 0x1918,
+ 0xD7E5, 0xD7FE, 0x1213, 0xD8A1, 0xD8FE, 0x122D, 0xD9A1, 0xD9FE, 0x128B,
+ 0xDAA1, 0xDAFE, 0x12E9, 0xDBA1, 0xDBC4, 0x1347, 0xDBC5, 0xDBC5, 0x141F,
+ 0xDBC6, 0xDBE3, 0x136B, 0xDBE4, 0xDBE4, 0x133A, 0xDBE5, 0xDBFE, 0x1389,
+ 0xDCA1, 0xDCA4, 0x13A3, 0xDCA5, 0xDCA5, 0x1D5E, 0xDCA6, 0xDCFE, 0x13A7,
+ 0xDDA1, 0xDDA4, 0x1400, 0xDDA5, 0xDDA5, 0x13D7, 0xDDA6, 0xDDD4, 0x1404,
+ 0xDDD5, 0xDDD5, 0x13F5, 0xDDD6, 0xDDF3, 0x1433, 0xDDF4, 0xDDF4, 0x1DB7,
+ 0xDDF5, 0xDDFE, 0x1451, 0xDEA1, 0xDEFB, 0x145B, 0xDEFC, 0xDEFC, 0x15D0,
+ 0xDEFD, 0xDEFD, 0x14B6, 0xDEFE, 0xDEFE, 0x14F7, 0xDFA1, 0xDFB2, 0x14B7,
+ 0xDFB3, 0xDFB3, 0x1BAB, 0xDFB4, 0xDFE0, 0x14C9, 0xDFE1, 0xDFE1, 0x14F2,
+ 0xDFE2, 0xDFE7, 0x14F6, 0xDFE8, 0xDFE8, 0x156D, 0xDFE9, 0xDFFE, 0x14FC,
+ 0xE0A1, 0xE0F0, 0x1512, 0xE0F1, 0xE0F1, 0x1771, 0xE0F2, 0xE0FE, 0x1562,
+ 0xE1A1, 0xE1AC, 0x156F, 0xE1AD, 0xE1AD, 0x1554, 0xE1AE, 0xE1EC, 0x157B,
+ 0xE1ED, 0xE1ED, 0x14C5, 0xE1EE, 0xE1FE, 0x15BA, 0xE2A1, 0xE2FE, 0x15CB,
+ 0xE3A1, 0xE3F4, 0x1629, 0xE3F5, 0xE3F5, 0x1B61, 0xE3F6, 0xE3FE, 0x167D,
+ 0xE4A1, 0xE4A1, 0x1CCA, 0xE4A2, 0xE4A8, 0x1686, 0xE4A9, 0xE4A9, 0x162E,
+ 0xE4AA, 0xE4FE, 0x168D, 0xE5A1, 0xE5AD, 0x16E2, 0xE5AE, 0xE5AE, 0x16F2,
+ 0xE5AF, 0xE5B0, 0x16EF, 0xE5B1, 0xE5B2, 0x1149, 0xE5B3, 0xE5B8, 0x16F1,
+ 0xE5B9, 0xE5B9, 0x114B, 0xE5BA, 0xE5BA, 0x16F7, 0xE5BB, 0xE5BC, 0x114D,
+ 0xE5BD, 0xE5C3, 0x16F8, 0xE5C4, 0xE5C4, 0x114F, 0xE5C5, 0xE5CD, 0x16FF,
+ 0xE5CE, 0xE5CE, 0x1153, 0xE5CF, 0xE5CF, 0x1708, 0xE5D0, 0xE5D0, 0x1154,
+ 0xE5D1, 0xE5D1, 0x1709, 0xE5D2, 0xE5D2, 0x1155, 0xE5D3, 0xE5D5, 0x170A,
+ 0xE5D6, 0xE5D6, 0x1157, 0xE5D7, 0xE5F9, 0x170D, 0xE5FA, 0xE5FB, 0x115A,
+ 0xE5FC, 0xE5FC, 0x103F, 0xE5FD, 0xE5FD, 0x1730, 0xE5FE, 0xE5FE, 0x115C,
+ 0xE6A1, 0xE6A1, 0x115F, 0xE6A2, 0xE6A3, 0x1731, 0xE6A4, 0xE6A4, 0x1161,
+ 0xE6A5, 0xE6A6, 0x1733, 0xE6A7, 0xE6A7, 0x1162, 0xE6A8, 0xE6AC, 0x1735,
+ 0xE6AD, 0xE6AD, 0x1165, 0xE6AE, 0xE6AE, 0x173A, 0xE6AF, 0xE6B1, 0x1167,
+ 0xE6B2, 0xE6B2, 0x173B, 0xE6B3, 0xE6B3, 0x116A, 0xE6B4, 0xE6B6, 0x173C,
+ 0xE6B7, 0xE6B8, 0x116B, 0xE6B9, 0xE6BB, 0x173F, 0xE6BC, 0xE6BC, 0x116F,
+ 0xE6BD, 0xE6C3, 0x1742, 0xE6C4, 0xE6C4, 0x1040, 0xE6C5, 0xE6C5, 0x1749,
+ 0xE6C6, 0xE6C7, 0x1171, 0xE6C8, 0xE6C9, 0x174A, 0xE6CA, 0xE6CA, 0x1041,
+ 0xE6CB, 0xE6D1, 0x174C, 0xE6D2, 0xE6D2, 0x1174, 0xE6D3, 0xE6D5, 0x1753,
+ 0xE6D6, 0xE6D6, 0x1175, 0xE6D7, 0xE6D8, 0x1756, 0xE6D9, 0xE6D9, 0x1176,
+ 0xE6DA, 0xE6DB, 0x1758, 0xE6DC, 0xE6DC, 0x1042, 0xE6DD, 0xE6DE, 0x175A,
+ 0xE6DF, 0xE6DF, 0x1177, 0xE6E0, 0xE6E0, 0x175C, 0xE6E1, 0xE6E1, 0x1178,
+ 0xE6E2, 0xE6E3, 0x175D, 0xE6E4, 0xE6E4, 0x117A, 0xE6E5, 0xE6E5, 0x1179,
+ 0xE6E6, 0xE6E6, 0x117B, 0xE6E7, 0xE6E7, 0x175F, 0xE6E8, 0xE6E8, 0x117C,
+ 0xE6E9, 0xE6E9, 0x1760, 0xE6EA, 0xE6EB, 0x117E, 0xE6EC, 0xE6EC, 0x192F,
+ 0xE6ED, 0xE6EE, 0x1761, 0xE6EF, 0xE6EF, 0x1181, 0xE6F0, 0xE6F0, 0x1763,
+ 0xE6F1, 0xE6F1, 0x1182, 0xE6F2, 0xE6F2, 0x1554, 0xE6F3, 0xE6F4, 0x1764,
+ 0xE6F5, 0xE6F5, 0x1183, 0xE6F6, 0xE6F6, 0x1043, 0xE6F7, 0xE6F7, 0x1046,
+ 0xE6F8, 0xE6F8, 0x1766, 0xE6F9, 0xE6F9, 0x1185, 0xE6FA, 0xE6FE, 0x1767,
+ 0xE7A1, 0xE7A1, 0x1187, 0xE7A2, 0xE7A5, 0x176C, 0xE7A6, 0xE7A6, 0x1188,
+ 0xE7A7, 0xE7A8, 0x1770, 0xE7A9, 0xE7A9, 0x1189, 0xE7AA, 0xE7AA, 0x118B,
+ 0xE7AB, 0xE7AB, 0x1772, 0xE7AC, 0xE7AC, 0x1047, 0xE7AD, 0xE7AD, 0x118D,
+ 0xE7AE, 0xE7AF, 0x1773, 0xE7B0, 0xE7B0, 0x118E, 0xE7B1, 0xE7BE, 0x1775,
+ 0xE7BF, 0xE7BF, 0x118F, 0xE7C0, 0xE7C0, 0x1783, 0xE7C1, 0xE7C1, 0x1E67,
+ 0xE7C2, 0xE7C5, 0x1784, 0xE7C6, 0xE7C6, 0x1191, 0xE7C7, 0xE7C7, 0x1193,
+ 0xE7C8, 0xE7CA, 0x1788, 0xE7CB, 0xE7CB, 0x1195, 0xE7CC, 0xE7CC, 0x178B,
+ 0xE7CD, 0xE7CD, 0x1196, 0xE7CE, 0xE7CE, 0x178C, 0xE7CF, 0xE7D0, 0x1197,
+ 0xE7D1, 0xE7D2, 0x178D, 0xE7D3, 0xE7D3, 0x119A, 0xE7D4, 0xE7DE, 0x178F,
+ 0xE7DF, 0xE7DF, 0x119C, 0xE7E0, 0xE7E3, 0x179A, 0xE7E4, 0xE7E4, 0x119D,
+ 0xE7E5, 0xE7E5, 0x179E, 0xE7E6, 0xE7E6, 0x119E, 0xE7E7, 0xE7F6, 0x179F,
+ 0xE7F7, 0xE7F7, 0x16A5, 0xE7F8, 0xE7FE, 0x17AF, 0xE8A1, 0xE8E6, 0x17B6,
+ 0xE8E7, 0xE8E8, 0x11C7, 0xE8E9, 0xE8EF, 0x17FC, 0xE8F0, 0xE8F0, 0x11C9,
+ 0xE8F1, 0xE8F1, 0x1054, 0xE8F2, 0xE8F6, 0x1803, 0xE8F7, 0xE8F7, 0x11CB,
+ 0xE8F8, 0xE8F8, 0x1808, 0xE8F9, 0xE8F9, 0x16A8, 0xE8FA, 0xE8FA, 0x1809,
+ 0xE8FB, 0xE8FB, 0x11CC, 0xE8FC, 0xE8FD, 0x180A, 0xE8FE, 0xE8FE, 0x11CD,
+ 0xE9A1, 0xE9A6, 0x180C, 0xE9A7, 0xE9A7, 0x11D0, 0xE9A8, 0xE9AB, 0x1812,
+ 0xE9AC, 0xE9AC, 0x11D1, 0xE9AD, 0xE9CB, 0x1816, 0xE9CC, 0xE9CC, 0x11D3,
+ 0xE9CD, 0xE9F6, 0x1835, 0xE9F7, 0xE9F7, 0x1F34, 0xE9F8, 0xE9FE, 0x185F,
+ 0xEAA1, 0xEAC0, 0x1866, 0xEAC1, 0xEAC1, 0x17EB, 0xEAC2, 0xEAE4, 0x1886,
+ 0xEAE5, 0xEAE5, 0x11E1, 0xEAE6, 0xEAF3, 0x18A9, 0xEAF4, 0xEAF4, 0x1057,
+ 0xEAF5, 0xEAF6, 0x18B7, 0xEAF7, 0xEAF7, 0x11E3, 0xEAF8, 0xEAFB, 0x18B9,
+ 0xEAFC, 0xEAFC, 0x11E5, 0xEAFD, 0xEAFD, 0x18BD, 0xEAFE, 0xEAFE, 0x11E6,
+ 0xEBA1, 0xEBA3, 0x18BE, 0xEBA4, 0xEBA4, 0x11E8, 0xEBA5, 0xEBA6, 0x18C1,
+ 0xEBA7, 0xEBA7, 0x11EA, 0xEBA8, 0xEBA8, 0x18C3, 0xEBA9, 0xEBA9, 0x11EC,
+ 0xEBAA, 0xEBAA, 0x1058, 0xEBAB, 0xEBB9, 0x18C4, 0xEBBA, 0xEBBB, 0x11EE,
+ 0xEBBC, 0xEBBC, 0x18D3, 0xEBBD, 0xEBBD, 0x11F0, 0xEBBE, 0xEBC0, 0x18D4,
+ 0xEBC1, 0xEBC1, 0x11F1, 0xEBC2, 0xEBC2, 0x11F3, 0xEBC3, 0xEBC5, 0x18D7,
+ 0xEBC6, 0xEBC7, 0x11F4, 0xEBC8, 0xEBCB, 0x18DA, 0xEBCC, 0xEBCC, 0x11F7,
+ 0xEBCD, 0xEBCE, 0x18DE, 0xEBCF, 0xEBD1, 0x11F8, 0xEBD2, 0xEBD2, 0x15B0,
+ 0xEBD3, 0xEBD7, 0x18E0, 0xEBD8, 0xEBD8, 0x11FB, 0xEBD9, 0xEBFE, 0x18E5,
+ 0xECA1, 0xECA5, 0x190B, 0xECA6, 0xECA6, 0x1206, 0xECA7, 0xECA7, 0x1208,
+ 0xECA8, 0xECA9, 0x1910, 0xECAA, 0xECAA, 0x120A, 0xECAB, 0xECAE, 0x1912,
+ 0xECAF, 0xECAF, 0x173E, 0xECB0, 0xECB1, 0x120C, 0xECB2, 0xECB2, 0x105B,
+ 0xECB3, 0xECB4, 0x1916, 0xECB5, 0xECB5, 0x1211, 0xECB6, 0xECB7, 0x1918,
+ 0xECB8, 0xECB8, 0x1213, 0xECB9, 0xECB9, 0x191A, 0xECBA, 0xECBA, 0x1215,
+ 0xECBB, 0xECBF, 0x191B, 0xECC0, 0xECC1, 0x1218, 0xECC2, 0xECC4, 0x1920,
+ 0xECC5, 0xECC5, 0x121A, 0xECC6, 0xECC6, 0x121C, 0xECC7, 0xECC8, 0x1923,
+ 0xECC9, 0xECCA, 0x105C, 0xECCB, 0xECD4, 0x1925, 0xECD5, 0xECD5, 0x121E,
+ 0xECD6, 0xECDC, 0x192F, 0xECDD, 0xECDE, 0x1220, 0xECDF, 0xECE0, 0x1936,
+ 0xECE1, 0xECE1, 0x1222, 0xECE2, 0xECE3, 0x1938, 0xECE4, 0xECE4, 0x1224,
+ 0xECE5, 0xECE6, 0x193A, 0xECE7, 0xECE8, 0x1225, 0xECE9, 0xECF6, 0x193C,
+ 0xECF7, 0xECF8, 0x1227, 0xECF9, 0xECF9, 0x194A, 0xECFA, 0xECFA, 0x122A,
+ 0xECFB, 0xECFE, 0x194B, 0xEDA1, 0xEDA3, 0x122D, 0xEDA4, 0xEDED, 0x194F,
+ 0xEDEE, 0xEDEE, 0x14E7, 0xEDEF, 0xEDFE, 0x1999, 0xEEA1, 0xEEDA, 0x19A9,
+ 0xEEDB, 0xEEDB, 0x195E, 0xEEDC, 0xEEFE, 0x19E3, 0xEFA1, 0xEFFE, 0x1A06,
+ 0xF0A1, 0xF0FE, 0x1A64, 0xF1A1, 0xF1FE, 0x1AC2, 0xF2A1, 0xF2BC, 0x1B20,
+ 0xF2BD, 0xF2BD, 0x1663, 0xF2BE, 0xF2F9, 0x1B3C, 0xF2FA, 0xF2FA, 0x168B,
+ 0xF2FB, 0xF2FE, 0x1B78, 0xF3A1, 0xF3B0, 0x1B7C, 0xF3B1, 0xF3B1, 0x105F,
+ 0xF3B2, 0xF3FE, 0x1B8C, 0xF4A1, 0xF4A6, 0x1BD9, 0xF4A7, 0xF4A7, 0x1954,
+ 0xF4A8, 0xF4ED, 0x1BDF, 0xF4EE, 0xF4EE, 0x1A1C, 0xF4EF, 0xF4FE, 0x1C25,
+ 0xF5A1, 0xF5FE, 0x1C35, 0xF6A1, 0xF6F3, 0x1C93, 0xF6F4, 0xF6F4, 0x10B7,
+ 0xF6F5, 0xF6F5, 0x1CE6, 0xF6F6, 0xF6F6, 0x1BE3, 0xF6F7, 0xF6FE, 0x1CE7,
+ 0xF7A1, 0xF7B7, 0x1CEF, 0xF7B8, 0xF7B8, 0x1097, 0xF7B9, 0xF7C7, 0x1D06,
+ 0xF7C8, 0xF7C8, 0x10AA, 0xF7C9, 0xF7D2, 0x1D15, 0xF7D3, 0xF7D3, 0x10F4,
+ 0xF7D4, 0xF7FE, 0x1D1F, 0xF8A1, 0xF8DA, 0x1D4A, 0xF8DB, 0xF8DB, 0x1D94,
+ 0xF8DC, 0xF8EF, 0x1D84, 0xF8F0, 0xF8F0, 0x13E0, 0xF8F1, 0xF8FE, 0x1D98,
+ 0xF9A1, 0xF9FE, 0x1DA6, 0xFAA1, 0xFAA1, 0x1E1D, 0xFAA2, 0xFAA2, 0x0DE6,
+ 0xFAA3, 0xFAE5, 0x1E04, 0xFAE6, 0xFAE6, 0x0E3C, 0xFAE7, 0xFAFE, 0x1E47,
+ 0xFBA1, 0xFBFE, 0x1E5F, 0xFCA1, 0xFCA8, 0x1EBD, 0xFCA9, 0xFCA9, 0x0EE7,
+ 0xFCAA, 0xFCFE, 0x1EC5, 0xFDA1, 0xFDFE, 0x1F1A,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-H_1.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-H_1.cpp
new file mode 100644
index 0000000000..8bab432fcd
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-H_1.cpp
@@ -0,0 +1,2808 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h"
+
+const FX_WORD g_FXCMAP_UniKS_UCS2_H_1[8394 * 3] = {
+ 0x0020, 0x007E, 0x0001, 0x00A1, 0x00A1, 0x00D0, 0x00A4, 0x00A4, 0x00D6,
+ 0x00A7, 0x00A7, 0x009B, 0x00A8, 0x00A8, 0x006B, 0x00AA, 0x00AA, 0x029C,
+ 0x00AB, 0x00AB, 0x00B0, 0x00B0, 0x00B0, 0x008A, 0x00B1, 0x00B1, 0x0082,
+ 0x00B2, 0x00B3, 0x034B, 0x00B4, 0x00B4, 0x00C7, 0x00B6, 0x00B6, 0x00F4,
+ 0x00B8, 0x00B8, 0x00CE, 0x00B9, 0x00B9, 0x034A, 0x00BA, 0x00BA, 0x02A3,
+ 0x00BB, 0x00BB, 0x00B1, 0x00BC, 0x00BC, 0x02EF, 0x00BD, 0x00BD, 0x02EC,
+ 0x00BE, 0x00BE, 0x02F0, 0x00BF, 0x00BF, 0x00D1, 0x00C6, 0x00C6, 0x029A,
+ 0x00D0, 0x00D0, 0x029B, 0x00D7, 0x00D7, 0x0083, 0x00D8, 0x00D8, 0x02A1,
+ 0x00DE, 0x00DE, 0x02A4, 0x00DF, 0x00DF, 0x0300, 0x00E6, 0x00E6, 0x02F5,
+ 0x00F0, 0x00F0, 0x02F7, 0x00F7, 0x00F7, 0x0084, 0x00F8, 0x00F8, 0x02FE,
+ 0x00FE, 0x00FE, 0x0301, 0x0111, 0x0111, 0x02F6, 0x0126, 0x0126, 0x029D,
+ 0x0127, 0x0127, 0x02F8, 0x0131, 0x0131, 0x02F9, 0x0132, 0x0132, 0x029E,
+ 0x0133, 0x0133, 0x02FA, 0x0138, 0x0138, 0x02FB, 0x013F, 0x013F, 0x029F,
+ 0x0140, 0x0140, 0x02FC, 0x0141, 0x0141, 0x02A0, 0x0142, 0x0142, 0x02FD,
+ 0x0149, 0x0149, 0x0304, 0x014A, 0x014A, 0x02A6, 0x014B, 0x014B, 0x0303,
+ 0x0152, 0x0152, 0x02A2, 0x0153, 0x0153, 0x02FF, 0x0166, 0x0166, 0x02A5,
+ 0x0167, 0x0167, 0x0302, 0x02BC, 0x02BC, 0x2053, 0x02C7, 0x02C7, 0x00C9,
+ 0x02D8, 0x02D8, 0x00CA, 0x02D9, 0x02D9, 0x00CD, 0x02DA, 0x02DA, 0x00CC,
+ 0x02DB, 0x02DB, 0x00CF, 0x02DC, 0x02DC, 0x00C8, 0x02DD, 0x02DD, 0x00CB,
+ 0x0391, 0x03A1, 0x01D7, 0x03A3, 0x03A9, 0x01E8, 0x03B1, 0x03C1, 0x01EF,
+ 0x03C3, 0x03C9, 0x0200, 0x0401, 0x0401, 0x0402, 0x0410, 0x0415, 0x03FC,
+ 0x0416, 0x0435, 0x0403, 0x0436, 0x044F, 0x0424, 0x0451, 0x0451, 0x0423,
+ 0x2013, 0x2014, 0x006D, 0x2016, 0x2016, 0x006F, 0x2018, 0x2019, 0x0072,
+ 0x201B, 0x201B, 0x202E, 0x201C, 0x201D, 0x0074, 0x201F, 0x201F, 0x202D,
+ 0x2020, 0x2021, 0x00F5, 0x2022, 0x2022, 0x219F, 0x2025, 0x2026, 0x0069,
+ 0x2030, 0x2030, 0x00D8, 0x2032, 0x2033, 0x008B, 0x2034, 0x2034, 0x2186,
+ 0x2035, 0x2035, 0x246E, 0x2036, 0x2036, 0x246C, 0x2039, 0x203A, 0x21A4,
+ 0x203B, 0x203B, 0x009C, 0x203C, 0x203C, 0x223B, 0x2042, 0x2042, 0x2197,
+ 0x2074, 0x2074, 0x034D, 0x207A, 0x207B, 0x202F, 0x207C, 0x207C, 0x2038,
+ 0x207D, 0x207E, 0x203A, 0x207F, 0x207F, 0x034E, 0x2081, 0x2084, 0x034F,
+ 0x2103, 0x2103, 0x008D, 0x2109, 0x2109, 0x00D7, 0x2113, 0x2113, 0x024E,
+ 0x2116, 0x2116, 0x0102, 0x2121, 0x2121, 0x0107, 0x2122, 0x2122, 0x0104,
+ 0x2126, 0x2126, 0x0283, 0x212B, 0x212B, 0x008E, 0x2153, 0x2154, 0x02ED,
+ 0x215B, 0x215E, 0x02F1, 0x2160, 0x2169, 0x01CD, 0x2170, 0x2179, 0x01C3,
+ 0x2190, 0x2191, 0x00AB, 0x2192, 0x2192, 0x00AA, 0x2193, 0x2194, 0x00AD,
+ 0x2195, 0x2195, 0x00F7, 0x2196, 0x2196, 0x00FA, 0x2197, 0x2197, 0x00F8,
+ 0x2198, 0x2198, 0x00FB, 0x2199, 0x2199, 0x00F9, 0x21B0, 0x21B0, 0x22A4,
+ 0x21B1, 0x21B1, 0x22A1, 0x21B2, 0x21B2, 0x22A0, 0x21B3, 0x21B3, 0x22A5,
+ 0x21B4, 0x21B4, 0x22A3, 0x21BC, 0x21BC, 0x22B4, 0x21C0, 0x21C0, 0x22B5,
+ 0x21C4, 0x21C5, 0x22C0, 0x21CD, 0x21CD, 0x2270, 0x21CF, 0x21CF, 0x226F,
+ 0x21D0, 0x21D0, 0x226E, 0x21D1, 0x21D1, 0x2296, 0x21D2, 0x21D2, 0x00C3,
+ 0x21D3, 0x21D3, 0x2297, 0x21D4, 0x21D4, 0x00C4, 0x21E0, 0x21E0, 0x23E6,
+ 0x21E1, 0x21E1, 0x23E8, 0x21E2, 0x21E2, 0x23E7, 0x21E3, 0x21E3, 0x23E9,
+ 0x21E6, 0x21E6, 0x23EE, 0x21E7, 0x21E7, 0x23F0, 0x21E8, 0x21E8, 0x23EF,
+ 0x21E9, 0x21E9, 0x23F1, 0x2200, 0x2200, 0x00C5, 0x2202, 0x2202, 0x0097,
+ 0x2203, 0x2203, 0x00C6, 0x2206, 0x2206, 0x220B, 0x2207, 0x2207, 0x0098,
+ 0x2208, 0x2208, 0x00B8, 0x2209, 0x2209, 0x222D, 0x220B, 0x220B, 0x00B9,
+ 0x220C, 0x220C, 0x222E, 0x220F, 0x220F, 0x00D5, 0x2211, 0x2211, 0x00D4,
+ 0x2213, 0x2213, 0x2216, 0x221A, 0x221A, 0x00B2, 0x221D, 0x221D, 0x00B4,
+ 0x221E, 0x221E, 0x0088, 0x221F, 0x221F, 0x220D, 0x2220, 0x2220, 0x0094,
+ 0x2222, 0x2222, 0x2222, 0x2225, 0x2226, 0x220F, 0x2227, 0x2228, 0x00C0,
+ 0x2229, 0x2229, 0x00BF, 0x222A, 0x222A, 0x00BE, 0x222B, 0x222C, 0x00B6,
+ 0x222E, 0x222E, 0x00D3, 0x2234, 0x2234, 0x0089, 0x2235, 0x2235, 0x00B5,
+ 0x2236, 0x2236, 0x00D2, 0x2237, 0x2237, 0x2081, 0x223D, 0x223D, 0x00B3,
+ 0x2243, 0x2243, 0x2134, 0x2245, 0x2245, 0x2133, 0x2248, 0x2248, 0x2135,
+ 0x2250, 0x2250, 0x2223, 0x2251, 0x2251, 0x2213, 0x2252, 0x2252, 0x009A,
+ 0x2253, 0x2253, 0x2212, 0x225A, 0x225A, 0x2231, 0x2260, 0x2260, 0x0085,
+ 0x2261, 0x2261, 0x0099, 0x2262, 0x2262, 0x221E, 0x2264, 0x2265, 0x0086,
+ 0x2266, 0x2267, 0x2214, 0x226E, 0x226F, 0x2229, 0x2270, 0x2273, 0x2121,
+ 0x2276, 0x2277, 0x2129, 0x2279, 0x2279, 0x212B, 0x227A, 0x227B, 0x211B,
+ 0x2280, 0x2281, 0x211F, 0x2282, 0x2283, 0x00BC, 0x2284, 0x2284, 0x222C,
+ 0x2285, 0x2285, 0x222B, 0x2286, 0x2287, 0x00BA, 0x228A, 0x228A, 0x2126,
+ 0x228B, 0x228B, 0x2128, 0x2295, 0x2297, 0x2217, 0x22A3, 0x22A3, 0x2226,
+ 0x22A4, 0x22A4, 0x2137, 0x22A5, 0x22A5, 0x0095, 0x22BB, 0x22BC, 0x222F,
+ 0x22CE, 0x22CF, 0x211D, 0x22DA, 0x22DB, 0x212C, 0x22EE, 0x22EE, 0x2080,
+ 0x22EF, 0x22EF, 0x006A, 0x2306, 0x2306, 0x2232, 0x2312, 0x2312, 0x0096,
+ 0x2314, 0x2314, 0x221B, 0x2460, 0x246E, 0x02DD, 0x246F, 0x2473, 0x2257,
+ 0x2474, 0x2482, 0x033B, 0x2483, 0x2487, 0x2352, 0x249C, 0x24B5, 0x0321,
+ 0x24B6, 0x24CF, 0x20C4, 0x24D0, 0x24E9, 0x02C3, 0x2500, 0x2500, 0x0207,
+ 0x2501, 0x2501, 0x0212, 0x2502, 0x2502, 0x0208, 0x2503, 0x2503, 0x0213,
+ 0x250C, 0x250C, 0x0209, 0x250D, 0x250D, 0x022E, 0x250E, 0x250E, 0x022D,
+ 0x250F, 0x250F, 0x0214, 0x2510, 0x2510, 0x020A, 0x2511, 0x2511, 0x0228,
+ 0x2512, 0x2512, 0x0227, 0x2513, 0x2513, 0x0215, 0x2514, 0x2514, 0x020C,
+ 0x2515, 0x2515, 0x022C, 0x2516, 0x2516, 0x022B, 0x2517, 0x2517, 0x0217,
+ 0x2518, 0x2518, 0x020B, 0x2519, 0x2519, 0x022A, 0x251A, 0x251A, 0x0229,
+ 0x251B, 0x251B, 0x0216, 0x251C, 0x251C, 0x020D, 0x251D, 0x251D, 0x0222,
+ 0x251E, 0x251F, 0x022F, 0x2520, 0x2520, 0x021D, 0x2521, 0x2522, 0x0231,
+ 0x2523, 0x2523, 0x0218, 0x2524, 0x2524, 0x020F, 0x2525, 0x2525, 0x0224,
+ 0x2526, 0x2527, 0x0233, 0x2528, 0x2528, 0x021F, 0x2529, 0x252A, 0x0235,
+ 0x252B, 0x252B, 0x021A, 0x252C, 0x252C, 0x020E, 0x252D, 0x252E, 0x0237,
+ 0x252F, 0x252F, 0x021E, 0x2530, 0x2530, 0x0223, 0x2531, 0x2532, 0x0239,
+ 0x2533, 0x2533, 0x0219, 0x2534, 0x2534, 0x0210, 0x2535, 0x2536, 0x023B,
+ 0x2537, 0x2537, 0x0220, 0x2538, 0x2538, 0x0225, 0x2539, 0x253A, 0x023D,
+ 0x253B, 0x253B, 0x021B, 0x253C, 0x253C, 0x0211, 0x253D, 0x253E, 0x023F,
+ 0x253F, 0x253F, 0x0221, 0x2540, 0x2541, 0x0241, 0x2542, 0x2542, 0x0226,
+ 0x2543, 0x254A, 0x0243, 0x254B, 0x254B, 0x021C, 0x2592, 0x2592, 0x00E8,
+ 0x25A0, 0x25A0, 0x00A5, 0x25A1, 0x25A1, 0x00A4, 0x25A3, 0x25A3, 0x00E5,
+ 0x25A4, 0x25A5, 0x00E9, 0x25A6, 0x25A6, 0x00ED, 0x25A7, 0x25A7, 0x00EC,
+ 0x25A8, 0x25A8, 0x00EB, 0x25A9, 0x25A9, 0x00EE, 0x25B1, 0x25B1, 0x2220,
+ 0x25B2, 0x25B2, 0x00A7, 0x25B3, 0x25B3, 0x00A6, 0x25B5, 0x25B5, 0x224C,
+ 0x25B6, 0x25B6, 0x00DC, 0x25B7, 0x25B7, 0x00DB, 0x25B9, 0x25B9, 0x224D,
+ 0x25BC, 0x25BC, 0x00A9, 0x25BD, 0x25BD, 0x00A8, 0x25BF, 0x25BF, 0x224B,
+ 0x25C0, 0x25C0, 0x00DA, 0x25C1, 0x25C1, 0x00D9, 0x25C3, 0x25C3, 0x224E,
+ 0x25C6, 0x25C6, 0x00A3, 0x25C7, 0x25C7, 0x00A2, 0x25C8, 0x25C8, 0x00E4,
+ 0x25C9, 0x25C9, 0x00E3, 0x25CA, 0x25CA, 0x2253, 0x25CB, 0x25CB, 0x009F,
+ 0x25CC, 0x25CC, 0x21BF, 0x25CE, 0x25CE, 0x00A1, 0x25CF, 0x25CF, 0x00A0,
+ 0x25D0, 0x25D1, 0x00E6, 0x25E6, 0x25E6, 0x2247, 0x25EF, 0x25EF, 0x21B9,
+ 0x2605, 0x2605, 0x009E, 0x2606, 0x2606, 0x009D, 0x260E, 0x260E, 0x00F1,
+ 0x260F, 0x260F, 0x00F0, 0x261C, 0x261C, 0x00F2, 0x261D, 0x261D, 0x2406,
+ 0x261E, 0x261E, 0x00F3, 0x261F, 0x261F, 0x2407, 0x262F, 0x262F, 0x21D8,
+ 0x2640, 0x2640, 0x0093, 0x2642, 0x2642, 0x0092, 0x2660, 0x2661, 0x00DE,
+ 0x2663, 0x2663, 0x00E2, 0x2664, 0x2664, 0x00DD, 0x2665, 0x2665, 0x00E0,
+ 0x2667, 0x2667, 0x00E1, 0x2668, 0x2668, 0x00EF, 0x2669, 0x266A, 0x00FD,
+ 0x266C, 0x266C, 0x00FF, 0x266D, 0x266D, 0x00FC, 0x266F, 0x266F, 0x2192,
+ 0x2716, 0x2716, 0x21B7, 0x271A, 0x271A, 0x21B6, 0x273D, 0x273D, 0x219C,
+ 0x2756, 0x2756, 0x21BD, 0x2776, 0x277F, 0x21E1, 0x278A, 0x2793, 0x2096,
+ 0x3000, 0x3002, 0x0065, 0x3003, 0x3003, 0x006C, 0x3008, 0x3011, 0x0078,
+ 0x3012, 0x3012, 0x21FC, 0x3013, 0x3013, 0x00AF, 0x3014, 0x3015, 0x0076,
+ 0x3016, 0x3019, 0x201B, 0x301E, 0x301F, 0x246A, 0x3020, 0x3020, 0x21DF,
+ 0x3036, 0x3036, 0x21FD, 0x3041, 0x3093, 0x0353, 0x30A1, 0x30F6, 0x03A6,
+ 0x30FB, 0x30FB, 0x0068, 0x30FC, 0x30FC, 0x2472, 0x3131, 0x3163, 0x0166,
+ 0x3164, 0x3164, 0x0065, 0x3165, 0x318E, 0x0199, 0x3200, 0x321B, 0x0305,
+ 0x321C, 0x321C, 0x0101, 0x3231, 0x3231, 0x2254, 0x3239, 0x3239, 0x2255,
+ 0x3260, 0x327B, 0x02A7, 0x327F, 0x327F, 0x0100, 0x328A, 0x328F, 0x2455,
+ 0x3290, 0x3290, 0x2454, 0x3294, 0x3294, 0x2378, 0x329E, 0x329E, 0x2239,
+ 0x32A5, 0x32A5, 0x2388, 0x3380, 0x3384, 0x0273, 0x3388, 0x3389, 0x0264,
+ 0x338A, 0x338C, 0x0286, 0x338D, 0x338F, 0x0260, 0x3390, 0x3394, 0x027E,
+ 0x3395, 0x3397, 0x024B, 0x3398, 0x3398, 0x024F, 0x3399, 0x33A2, 0x0255,
+ 0x33A3, 0x33A6, 0x0251, 0x33A7, 0x33A8, 0x0267, 0x33A9, 0x33AC, 0x028F,
+ 0x33AD, 0x33AF, 0x028B, 0x33B0, 0x33B9, 0x0269, 0x33BA, 0x33BF, 0x0278,
+ 0x33C0, 0x33C1, 0x0284, 0x33C2, 0x33C2, 0x0105, 0x33C3, 0x33C3, 0x0296,
+ 0x33C4, 0x33C4, 0x0250, 0x33C5, 0x33C5, 0x028A, 0x33C6, 0x33C6, 0x0299,
+ 0x33C7, 0x33C7, 0x0103, 0x33C8, 0x33C8, 0x0266, 0x33C9, 0x33C9, 0x0297,
+ 0x33CA, 0x33CA, 0x025F, 0x33CB, 0x33CB, 0x2256, 0x33CF, 0x33CF, 0x0263,
+ 0x33D0, 0x33D0, 0x0294, 0x33D3, 0x33D3, 0x0295, 0x33D6, 0x33D6, 0x0289,
+ 0x33D8, 0x33D8, 0x0106, 0x33DB, 0x33DB, 0x028E, 0x33DC, 0x33DC, 0x0298,
+ 0x33DD, 0x33DD, 0x0293, 0x4E00, 0x4E00, 0x193C, 0x4E01, 0x4E01, 0x1A30,
+ 0x4E03, 0x4E03, 0x1CC4, 0x4E07, 0x4E07, 0x123E, 0x4E08, 0x4E08, 0x1986,
+ 0x4E09, 0x4E09, 0x14C8, 0x4E0A, 0x4E0A, 0x14D3, 0x4E0B, 0x4E0B, 0x1DC0,
+ 0x4E0D, 0x4E0D, 0x13F5, 0x4E11, 0x4E11, 0x1C78, 0x4E14, 0x4E14, 0x1B81,
+ 0x4E15, 0x4E15, 0x143D, 0x4E16, 0x4E16, 0x1574, 0x4E18, 0x4E18, 0x0F35,
+ 0x4E19, 0x4E19, 0x13B1, 0x4E1E, 0x4E1E, 0x1632, 0x4E2D, 0x4E2D, 0x1B0A,
+ 0x4E32, 0x4E32, 0x0EDA, 0x4E38, 0x4E38, 0x1ECA, 0x4E39, 0x4E39, 0x1060,
+ 0x4E3B, 0x4E3B, 0x1ACC, 0x4E42, 0x4E42, 0x178D, 0x4E43, 0x4E43, 0x103A,
+ 0x4E45, 0x4E45, 0x0F36, 0x4E4B, 0x4E4B, 0x1B1E, 0x4E4D, 0x4E4D, 0x1479,
+ 0x4E4E, 0x4E4E, 0x1E78, 0x4E4F, 0x4E4F, 0x1DBE, 0x4E56, 0x4E56, 0x0F0F,
+ 0x4E58, 0x4E58, 0x1633, 0x4E59, 0x4E59, 0x18EC, 0x4E5D, 0x4E5D, 0x0F37,
+ 0x4E5E, 0x4E5E, 0x0E1D, 0x4E5F, 0x4E5F, 0x16E6, 0x4E6B, 0x4E6B, 0x0DAC,
+ 0x4E6D, 0x4E6D, 0x10E9, 0x4E73, 0x4E73, 0x18A5, 0x4E76, 0x4E76, 0x13E4,
+ 0x4E77, 0x4E77, 0x14C3, 0x4E7E, 0x4E7E, 0x0E11, 0x4E82, 0x4E82, 0x1125,
+ 0x4E86, 0x4E86, 0x11C7, 0x4E88, 0x4E88, 0x172E, 0x4E8B, 0x4E8B, 0x147A,
+ 0x4E8C, 0x4E8C, 0x190D, 0x4E8E, 0x4E8E, 0x1835, 0x4E90, 0x4E90, 0x186C,
+ 0x4E91, 0x4E91, 0x185E, 0x4E92, 0x4E92, 0x1E79, 0x4E94, 0x4E94, 0x17A1,
+ 0x4E95, 0x4E95, 0x1A31, 0x4E98, 0x4E98, 0x0FDA, 0x4E9B, 0x4E9B, 0x147B,
+ 0x4E9E, 0x4E9E, 0x168F, 0x4EA1, 0x4EA1, 0x1258, 0x4EA2, 0x4EA2, 0x1DF6,
+ 0x4EA4, 0x4EA4, 0x0F1C, 0x4EA5, 0x4EA5, 0x1E05, 0x4EA6, 0x4EA6, 0x173B,
+ 0x4EA8, 0x4EA8, 0x1E5B, 0x4EAB, 0x4EAB, 0x1E1E, 0x4EAC, 0x4EAC, 0x0E4C,
+ 0x4EAD, 0x4EAD, 0x1A32, 0x4EAE, 0x4EAE, 0x114B, 0x4EB6, 0x4EB6, 0x1061,
+ 0x4EBA, 0x4EBA, 0x192B, 0x4EC0, 0x4EC0, 0x168B, 0x4EC1, 0x4EC1, 0x192C,
+ 0x4EC4, 0x4EC4, 0x1CA3, 0x4EC7, 0x4EC7, 0x0F38, 0x4ECA, 0x4ECA, 0x0FC6,
+ 0x4ECB, 0x4ECB, 0x0DE8, 0x4ECD, 0x4ECD, 0x194F, 0x4ED4, 0x4ED4, 0x1953,
+ 0x4ED5, 0x4ED5, 0x147C, 0x4ED6, 0x4ED6, 0x1CD4, 0x4ED7, 0x4ED7, 0x1987,
+ 0x4ED8, 0x4ED8, 0x13F6, 0x4ED9, 0x4ED9, 0x152A, 0x4EDD, 0x4EDD, 0x10EB,
+ 0x4EDF, 0x4EDF, 0x1BEC, 0x4EE3, 0x4EE3, 0x109A, 0x4EE4, 0x4EE4, 0x1189,
+ 0x4EE5, 0x4EE5, 0x190E, 0x4EF0, 0x4EF0, 0x16C9, 0x4EF2, 0x4EF2, 0x1B0B,
+ 0x4EF6, 0x4EF6, 0x0E12, 0x4EF7, 0x4EF7, 0x0DE9, 0x4EFB, 0x4EFB, 0x1945,
+ 0x4F01, 0x4F01, 0x0FDE, 0x4F09, 0x4F09, 0x1DF7, 0x4F0A, 0x4F0A, 0x190F,
+ 0x4F0B, 0x4F0B, 0x0FD3, 0x4F0D, 0x4F0D, 0x17A2, 0x4F0E, 0x4F0E, 0x0FDF,
+ 0x4F0F, 0x4F0F, 0x13D2, 0x4F10, 0x4F10, 0x138D, 0x4F11, 0x4F11, 0x1F45,
+ 0x4F2F, 0x4F2F, 0x137C, 0x4F34, 0x4F34, 0x1329, 0x4F36, 0x4F36, 0x118A,
+ 0x4F38, 0x4F38, 0x1667, 0x4F3A, 0x4F3A, 0x147D, 0x4F3C, 0x4F3C, 0x147E,
+ 0x4F3D, 0x4F3D, 0x0D6C, 0x4F43, 0x4F43, 0x19F3, 0x4F46, 0x4F46, 0x1062,
+ 0x4F47, 0x4F47, 0x19BF, 0x4F48, 0x4F48, 0x1D78, 0x4F4D, 0x4F4D, 0x188C,
+ 0x4F4E, 0x4F4E, 0x19C0, 0x4F4F, 0x4F4F, 0x1ACD, 0x4F50, 0x4F50, 0x1AC6,
+ 0x4F51, 0x4F51, 0x1836, 0x4F55, 0x4F55, 0x1DC1, 0x4F59, 0x4F59, 0x172F,
+ 0x4F5A, 0x4F5A, 0x193D, 0x4F5B, 0x4F5B, 0x1433, 0x4F5C, 0x4F5C, 0x196D,
+ 0x4F69, 0x4F69, 0x1D4E, 0x4F6F, 0x4F6F, 0x16F7, 0x4F70, 0x4F70, 0x137D,
+ 0x4F73, 0x4F73, 0x0D6D, 0x4F76, 0x4F76, 0x101F, 0x4F7A, 0x4F7A, 0x19F4,
+ 0x4F7E, 0x4F7E, 0x193E, 0x4F7F, 0x4F7F, 0x147F, 0x4F81, 0x4F81, 0x1668,
+ 0x4F83, 0x4F83, 0x0D94, 0x4F84, 0x4F84, 0x1B67, 0x4F86, 0x4F86, 0x1144,
+ 0x4F88, 0x4F88, 0x1CA8, 0x4F8A, 0x4F8A, 0x0EFF, 0x4F8B, 0x4F8B, 0x119A,
+ 0x4F8D, 0x4F8D, 0x163C, 0x4F8F, 0x4F8F, 0x1ACE, 0x4F91, 0x4F91, 0x18A6,
+ 0x4F96, 0x4F96, 0x11F2, 0x4F98, 0x4F98, 0x1B82, 0x4F9B, 0x4F9B, 0x0ECA,
+ 0x4F9D, 0x4F9D, 0x18FA, 0x4FAE, 0x4FAE, 0x129C, 0x4FAF, 0x4FAF, 0x1F1E,
+ 0x4FB5, 0x4FB5, 0x1CC7, 0x4FB6, 0x4FB6, 0x1158, 0x4FBF, 0x4FBF, 0x1D5E,
+ 0x4FC2, 0x4FC2, 0x0E79, 0x4FC3, 0x4FC3, 0x1C49, 0x4FC4, 0x4FC4, 0x1690,
+ 0x4FC9, 0x4FC9, 0x17A3, 0x4FCA, 0x4FCA, 0x1AF6, 0x4FCE, 0x4FCE, 0x1A7E,
+ 0x4FD1, 0x4FD1, 0x181E, 0x4FD3, 0x4FD3, 0x0E4D, 0x4FD4, 0x4FD4, 0x1E36,
+ 0x4FD7, 0x4FD7, 0x15A1, 0x4FDA, 0x4FDA, 0x1205, 0x4FDD, 0x4FDD, 0x13C2,
+ 0x4FDF, 0x4FDF, 0x1480, 0x4FE0, 0x4FE0, 0x1E4F, 0x4FE1, 0x4FE1, 0x1669,
+ 0x4FEE, 0x4FEE, 0x15BF, 0x4FEF, 0x4FEF, 0x13F7, 0x4FF1, 0x4FF1, 0x0F39,
+ 0x4FF3, 0x4FF3, 0x136A, 0x4FF5, 0x4FF5, 0x1D98, 0x4FF8, 0x4FF8, 0x13E5,
+ 0x4FFA, 0x4FFA, 0x1725, 0x5002, 0x5002, 0x13B2, 0x5006, 0x5006, 0x114C,
+ 0x5009, 0x5009, 0x1BB4, 0x500B, 0x500B, 0x0DEA, 0x500D, 0x500D, 0x1369,
+ 0x5011, 0x5011, 0x12E4, 0x5012, 0x5012, 0x10AD, 0x5016, 0x5016, 0x1E19,
+ 0x5019, 0x5019, 0x1F1F, 0x501A, 0x501A, 0x18FB, 0x501C, 0x501C, 0x1BDE,
+ 0x501E, 0x501E, 0x0E4E, 0x501F, 0x501F, 0x1B83, 0x5021, 0x5021, 0x1BB5,
+ 0x5023, 0x5023, 0x134D, 0x5024, 0x5024, 0x1CA9, 0x5026, 0x5026, 0x0F81,
+ 0x5027, 0x5027, 0x1AB5, 0x5028, 0x5028, 0x0E01, 0x502A, 0x502A, 0x178E,
+ 0x502B, 0x502B, 0x11F3, 0x502C, 0x502C, 0x1CE2, 0x502D, 0x502D, 0x17F3,
+ 0x503B, 0x503B, 0x16E7, 0x5043, 0x5043, 0x171D, 0x5047, 0x5047, 0x0D6E,
+ 0x5048, 0x5048, 0x0E2B, 0x5049, 0x5049, 0x188D, 0x504F, 0x504F, 0x1D5F,
+ 0x5055, 0x5055, 0x1E06, 0x505A, 0x505A, 0x1ACF, 0x505C, 0x505C, 0x1A33,
+ 0x5065, 0x5065, 0x0E13, 0x5074, 0x5074, 0x1CA2, 0x5075, 0x5075, 0x1A34,
+ 0x5076, 0x5076, 0x1837, 0x5078, 0x5078, 0x1D29, 0x5080, 0x5080, 0x0F10,
+ 0x5085, 0x5085, 0x13F8, 0x508D, 0x508D, 0x134E, 0x5091, 0x5091, 0x0E1E,
+ 0x5098, 0x5098, 0x14B7, 0x5099, 0x5099, 0x143E, 0x50AC, 0x50AC, 0x1C5E,
+ 0x50AD, 0x50AD, 0x181F, 0x50B2, 0x50B2, 0x17A4, 0x50B3, 0x50B3, 0x19F5,
+ 0x50B5, 0x50B5, 0x1BCA, 0x50B7, 0x50B7, 0x14D4, 0x50BE, 0x50BE, 0x0E4F,
+ 0x50C5, 0x50C5, 0x0FB7, 0x50C9, 0x50C9, 0x1C09, 0x50CA, 0x50CA, 0x152B,
+ 0x50CF, 0x50CF, 0x14D5, 0x50D1, 0x50D1, 0x0F1D, 0x50D5, 0x50D5, 0x13D3,
+ 0x50D6, 0x50D6, 0x1F63, 0x50DA, 0x50DA, 0x11C8, 0x50DE, 0x50DE, 0x188E,
+ 0x50E5, 0x50E5, 0x17FC, 0x50E7, 0x50E7, 0x1634, 0x50ED, 0x50ED, 0x1BAA,
+ 0x50F9, 0x50F9, 0x0D6F, 0x50FB, 0x50FB, 0x139C, 0x50FF, 0x50FF, 0x1481,
+ 0x5100, 0x5100, 0x18FC, 0x5101, 0x5101, 0x1AF7, 0x5104, 0x5104, 0x1718,
+ 0x5106, 0x5106, 0x0E50, 0x5109, 0x5109, 0x0E21, 0x5112, 0x5112, 0x18A7,
+ 0x511F, 0x511F, 0x14D6, 0x5121, 0x5121, 0x11BF, 0x512A, 0x512A, 0x1838,
+ 0x5132, 0x5132, 0x19C1, 0x5137, 0x5137, 0x1159, 0x513A, 0x513A, 0x1025,
+ 0x513C, 0x513C, 0x1726, 0x5140, 0x5140, 0x17C9, 0x5141, 0x5141, 0x18D7,
+ 0x5143, 0x5143, 0x186F, 0x5144, 0x5144, 0x1E5C, 0x5145, 0x5145, 0x1C8A,
+ 0x5146, 0x5146, 0x1A7F, 0x5147, 0x5147, 0x1F4D, 0x5148, 0x5148, 0x152C,
+ 0x5149, 0x5149, 0x0F00, 0x514B, 0x514B, 0x0FB0, 0x514C, 0x514C, 0x1D07,
+ 0x514D, 0x514D, 0x127F, 0x514E, 0x514E, 0x1D19, 0x5152, 0x5152, 0x1691,
+ 0x515C, 0x515C, 0x10FC, 0x5162, 0x5162, 0x0FDB, 0x5165, 0x5165, 0x194D,
+ 0x5167, 0x5167, 0x103B, 0x5168, 0x5168, 0x19F6, 0x5169, 0x5169, 0x114D,
+ 0x516A, 0x516A, 0x18A8, 0x516B, 0x516B, 0x1D4B, 0x516C, 0x516C, 0x0ECB,
+ 0x516D, 0x516D, 0x11EF, 0x516E, 0x516E, 0x1E6F, 0x5171, 0x5171, 0x0ECC,
+ 0x5175, 0x5175, 0x13B3, 0x5176, 0x5176, 0x0FE0, 0x5177, 0x5177, 0x0F3A,
+ 0x5178, 0x5178, 0x19F7, 0x517C, 0x517C, 0x0E46, 0x5180, 0x5180, 0x0FE1,
+ 0x5186, 0x5186, 0x172D, 0x518A, 0x518A, 0x1BD6, 0x518D, 0x518D, 0x19AA,
+ 0x5192, 0x5192, 0x129D, 0x5195, 0x5195, 0x1280, 0x5197, 0x5197, 0x1820,
+ 0x51A0, 0x51A0, 0x0EEB, 0x51A5, 0x51A5, 0x128C, 0x51AA, 0x51AA, 0x127D,
+ 0x51AC, 0x51AC, 0x10EC, 0x51B6, 0x51B6, 0x16E8, 0x51B7, 0x51B7, 0x1148,
+ 0x51BD, 0x51BD, 0x117D, 0x51C4, 0x51C4, 0x1BDA, 0x51C6, 0x51C6, 0x1AF8,
+ 0x51C9, 0x51C9, 0x114E, 0x51CB, 0x51CB, 0x1A80, 0x51CC, 0x51CC, 0x11FF,
+ 0x51CD, 0x51CD, 0x10ED, 0x51DC, 0x51DC, 0x11FE, 0x51DD, 0x51DD, 0x18F6,
+ 0x51DE, 0x51DE, 0x1F64, 0x51E1, 0x51E1, 0x1391, 0x51F0, 0x51F0, 0x1EE0,
+ 0x51F1, 0x51F1, 0x0DEB, 0x51F6, 0x51F6, 0x1F4E, 0x51F8, 0x51F8, 0x1BFF,
+ 0x51F9, 0x51F9, 0x17FD, 0x51FA, 0x51FA, 0x1C87, 0x51FD, 0x51FD, 0x1DE3,
+ 0x5200, 0x5200, 0x10AE, 0x5203, 0x5203, 0x192D, 0x5206, 0x5206, 0x1420,
+ 0x5207, 0x5207, 0x1A1C, 0x5208, 0x5208, 0x178F, 0x520A, 0x520A, 0x0D95,
+ 0x520E, 0x520E, 0x12E5, 0x5211, 0x5211, 0x1E5D, 0x5217, 0x5217, 0x117E,
+ 0x521D, 0x521D, 0x1C2E, 0x5224, 0x5224, 0x1D42, 0x5225, 0x5225, 0x13AD,
+ 0x5229, 0x5229, 0x1206, 0x522A, 0x522A, 0x14B8, 0x522E, 0x522E, 0x0EFB,
+ 0x5230, 0x5230, 0x10AF, 0x5236, 0x5236, 0x1A67, 0x5237, 0x5237, 0x15B9,
+ 0x5238, 0x5238, 0x0F82, 0x5239, 0x5239, 0x1BA5, 0x523A, 0x523A, 0x1954,
+ 0x523B, 0x523B, 0x0D89, 0x5243, 0x5243, 0x1C25, 0x5247, 0x5247, 0x1CC0,
+ 0x524A, 0x524A, 0x14B5, 0x524B, 0x524B, 0x0FB1, 0x524C, 0x524C, 0x112D,
+ 0x524D, 0x524D, 0x19F8, 0x5254, 0x5254, 0x1BDF, 0x5256, 0x5256, 0x13F9,
+ 0x525B, 0x525B, 0x0DD0, 0x525D, 0x525D, 0x1316, 0x5261, 0x5261, 0x1557,
+ 0x5269, 0x5269, 0x1950, 0x526A, 0x526A, 0x19F9, 0x526F, 0x526F, 0x13FA,
+ 0x5272, 0x5272, 0x1DE1, 0x5275, 0x5275, 0x1BB6, 0x527D, 0x527D, 0x1D99,
+ 0x527F, 0x527F, 0x1C2F, 0x5283, 0x5283, 0x1F0C, 0x5287, 0x5287, 0x0FB2,
+ 0x5288, 0x5288, 0x139D, 0x5289, 0x5289, 0x11E1, 0x528D, 0x528D, 0x0E22,
+ 0x5291, 0x5291, 0x1A68, 0x5292, 0x5292, 0x0E23, 0x529B, 0x529B, 0x116A,
+ 0x529F, 0x529F, 0x0ECD, 0x52A0, 0x52A0, 0x0D70, 0x52A3, 0x52A3, 0x117F,
+ 0x52A4, 0x52A4, 0x0FB8, 0x52A9, 0x52A9, 0x1A81, 0x52AA, 0x52AA, 0x1049,
+ 0x52AB, 0x52AB, 0x0E28, 0x52BE, 0x52BE, 0x1E17, 0x52C1, 0x52C1, 0x0E51,
+ 0x52C3, 0x52C3, 0x1342, 0x52C5, 0x52C5, 0x1CC1, 0x52C7, 0x52C7, 0x1821,
+ 0x52C9, 0x52C9, 0x1281, 0x52CD, 0x52CD, 0x0E52, 0x52D2, 0x52D2, 0x11FC,
+ 0x52D5, 0x52D5, 0x10EE, 0x52D6, 0x52D6, 0x1855, 0x52D8, 0x52D8, 0x0DB6,
+ 0x52D9, 0x52D9, 0x12CC, 0x52DB, 0x52DB, 0x1F2B, 0x52DD, 0x52DD, 0x1635,
+ 0x52DE, 0x52DE, 0x119F, 0x52DF, 0x52DF, 0x129E, 0x52E2, 0x52E2, 0x1575,
+ 0x52E3, 0x52E3, 0x19DB, 0x52E4, 0x52E4, 0x0FB9, 0x52F3, 0x52F3, 0x1F2C,
+ 0x52F5, 0x52F5, 0x115A, 0x52F8, 0x52F8, 0x0F83, 0x52FA, 0x52FA, 0x196E,
+ 0x52FB, 0x52FB, 0x0FA9, 0x52FE, 0x52FE, 0x0F3B, 0x52FF, 0x52FF, 0x12F0,
+ 0x5305, 0x5305, 0x1D79, 0x5308, 0x5308, 0x1F4F, 0x530D, 0x530D, 0x1D7A,
+ 0x530F, 0x530F, 0x1D7B, 0x5310, 0x5310, 0x13D4, 0x5315, 0x5315, 0x143F,
+ 0x5316, 0x5316, 0x1EB7, 0x5317, 0x5317, 0x141F, 0x5319, 0x5319, 0x163D,
+ 0x5320, 0x5320, 0x1988, 0x5321, 0x5321, 0x0F01, 0x5323, 0x5323, 0x0DCA,
+ 0x532A, 0x532A, 0x1440, 0x532F, 0x532F, 0x1EF8, 0x5339, 0x5339, 0x1DB4,
+ 0x533F, 0x533F, 0x105C, 0x5340, 0x5340, 0x0F3C, 0x5341, 0x5341, 0x168C,
+ 0x5343, 0x5343, 0x1BED, 0x5344, 0x5344, 0x194E, 0x5347, 0x5347, 0x1636,
+ 0x5348, 0x5348, 0x17A5, 0x5349, 0x5349, 0x1F3A, 0x534A, 0x534A, 0x132A,
+ 0x534D, 0x534D, 0x123F, 0x5351, 0x5351, 0x1441, 0x5352, 0x5352, 0x1AB2,
+ 0x5353, 0x5353, 0x1CE3, 0x5354, 0x5354, 0x1E50, 0x5357, 0x5357, 0x1031,
+ 0x535A, 0x535A, 0x1317, 0x535C, 0x535C, 0x13D5, 0x535E, 0x535E, 0x13A7,
+ 0x5360, 0x5360, 0x1A24, 0x5366, 0x5366, 0x0F0C, 0x5368, 0x5368, 0x154A,
+ 0x536F, 0x536F, 0x12C0, 0x5370, 0x5370, 0x192E, 0x5371, 0x5371, 0x188F,
+ 0x5374, 0x5374, 0x0D8A, 0x5375, 0x5375, 0x1126, 0x5377, 0x5377, 0x0F84,
+ 0x537D, 0x537D, 0x1B0E, 0x537F, 0x537F, 0x0E53, 0x5384, 0x5384, 0x16DB,
+ 0x5393, 0x5393, 0x16D0, 0x5398, 0x5398, 0x1207, 0x539A, 0x539A, 0x1F20,
+ 0x539F, 0x539F, 0x1870, 0x53A0, 0x53A0, 0x1CA4, 0x53A5, 0x53A5, 0x0F8B,
+ 0x53A6, 0x53A6, 0x1DC2, 0x53AD, 0x53AD, 0x1765, 0x53BB, 0x53BB, 0x0E02,
+ 0x53C3, 0x53C3, 0x1BAB, 0x53C8, 0x53C8, 0x1839, 0x53C9, 0x53C9, 0x1B84,
+ 0x53CA, 0x53CA, 0x0FD4, 0x53CB, 0x53CB, 0x183A, 0x53CD, 0x53CD, 0x132B,
+ 0x53D4, 0x53D4, 0x15FC, 0x53D6, 0x53D6, 0x1C94, 0x53D7, 0x53D7, 0x15C0,
+ 0x53DB, 0x53DB, 0x132C, 0x53E1, 0x53E1, 0x1790, 0x53E2, 0x53E2, 0x1C53,
+ 0x53E3, 0x53E3, 0x0F3D, 0x53E4, 0x53E4, 0x0E91, 0x53E5, 0x53E5, 0x0F3E,
+ 0x53E9, 0x53E9, 0x0E92, 0x53EA, 0x53EA, 0x1B1F, 0x53EB, 0x53EB, 0x0F9A,
+ 0x53EC, 0x53EC, 0x157C, 0x53ED, 0x53ED, 0x1D4C, 0x53EF, 0x53EF, 0x0D71,
+ 0x53F0, 0x53F0, 0x1D08, 0x53F1, 0x53F1, 0x1B68, 0x53F2, 0x53F2, 0x1482,
+ 0x53F3, 0x53F3, 0x183B, 0x53F8, 0x53F8, 0x1483, 0x5403, 0x5403, 0x1F57,
+ 0x5404, 0x5404, 0x0D8B, 0x5408, 0x5408, 0x1DEF, 0x5409, 0x5409, 0x1020,
+ 0x540A, 0x540A, 0x19DC, 0x540C, 0x540C, 0x10EF, 0x540D, 0x540D, 0x128D,
+ 0x540E, 0x540E, 0x1F21, 0x540F, 0x540F, 0x1208, 0x5410, 0x5410, 0x1D1A,
+ 0x5411, 0x5411, 0x1E1F, 0x541B, 0x541B, 0x0F71, 0x541D, 0x541D, 0x121E,
+ 0x541F, 0x541F, 0x18ED, 0x5420, 0x5420, 0x1D6E, 0x5426, 0x5426, 0x13FB,
+ 0x5429, 0x5429, 0x1421, 0x542B, 0x542B, 0x1DE4, 0x5433, 0x5433, 0x17A7,
+ 0x5438, 0x5438, 0x1F5E, 0x5439, 0x5439, 0x1C95, 0x543B, 0x543B, 0x12E6,
+ 0x543C, 0x543C, 0x1F22, 0x543E, 0x543E, 0x17A6, 0x5442, 0x5442, 0x115B,
+ 0x5448, 0x5448, 0x1A35, 0x544A, 0x544A, 0x0E93, 0x5451, 0x5451, 0x1CF0,
+ 0x5468, 0x5468, 0x1AD3, 0x546A, 0x546A, 0x1AD2, 0x5471, 0x5471, 0x0E94,
+ 0x5473, 0x5473, 0x12F3, 0x5475, 0x5475, 0x0D72, 0x547B, 0x547B, 0x166A,
+ 0x547C, 0x547C, 0x1E7A, 0x547D, 0x547D, 0x128E, 0x5480, 0x5480, 0x19C2,
+ 0x5486, 0x5486, 0x1D7C, 0x548C, 0x548C, 0x1EB8, 0x548E, 0x548E, 0x0F3F,
+ 0x5490, 0x5490, 0x13FC, 0x54A4, 0x54A4, 0x1CD5, 0x54A8, 0x54A8, 0x1955,
+ 0x54AB, 0x54AB, 0x1B20, 0x54AC, 0x54AC, 0x0F1E, 0x54B3, 0x54B3, 0x1E07,
+ 0x54B8, 0x54B8, 0x1DE5, 0x54BD, 0x54BD, 0x192F, 0x54C0, 0x54C0, 0x16D1,
+ 0x54C1, 0x54C1, 0x1DA6, 0x54C4, 0x54C4, 0x1EAD, 0x54C8, 0x54C8, 0x1DF0,
+ 0x54C9, 0x54C9, 0x19AB, 0x54E1, 0x54E1, 0x1871, 0x54E5, 0x54E5, 0x0D73,
+ 0x54E8, 0x54E8, 0x1C30, 0x54ED, 0x54ED, 0x0EB7, 0x54EE, 0x54EE, 0x1F11,
+ 0x54F2, 0x54F2, 0x1C00, 0x54FA, 0x54FA, 0x1D7D, 0x5504, 0x5504, 0x1D4F,
+ 0x5506, 0x5506, 0x1484, 0x5507, 0x5507, 0x1B44, 0x550E, 0x550E, 0x1209,
+ 0x5510, 0x5510, 0x108F, 0x551C, 0x551C, 0x1251, 0x552F, 0x552F, 0x18A9,
+ 0x5531, 0x5531, 0x1BB7, 0x5535, 0x5535, 0x16BD, 0x553E, 0x553E, 0x1CD6,
+ 0x5544, 0x5544, 0x1CE4, 0x5546, 0x5546, 0x14D7, 0x554F, 0x554F, 0x12E7,
+ 0x5553, 0x5553, 0x0E7A, 0x5556, 0x5556, 0x1079, 0x555E, 0x555E, 0x1692,
+ 0x5563, 0x5563, 0x1DE6, 0x557C, 0x557C, 0x1A69, 0x5580, 0x5580, 0x0DFB,
+ 0x5584, 0x5584, 0x152D, 0x5586, 0x5586, 0x1C01, 0x5587, 0x5587, 0x1116,
+ 0x5589, 0x5589, 0x1F23, 0x558A, 0x558A, 0x1DE7, 0x5598, 0x5598, 0x1BEE,
+ 0x5599, 0x5599, 0x1F3B, 0x559A, 0x559A, 0x1ECB, 0x559C, 0x559C, 0x1F65,
+ 0x559D, 0x559D, 0x0DAD, 0x55A7, 0x55A7, 0x1F36, 0x55A9, 0x55A9, 0x18AA,
+ 0x55AA, 0x55AA, 0x14D8, 0x55AB, 0x55AB, 0x1024, 0x55AC, 0x55AC, 0x0F1F,
+ 0x55AE, 0x55AE, 0x1063, 0x55C5, 0x55C5, 0x1F24, 0x55C7, 0x55C7, 0x14F5,
+ 0x55D4, 0x55D4, 0x1B45, 0x55DA, 0x55DA, 0x17A8, 0x55DC, 0x55DC, 0x0FE2,
+ 0x55DF, 0x55DF, 0x1B85, 0x55E3, 0x55E3, 0x1485, 0x55E4, 0x55E4, 0x1CAA,
+ 0x55FD, 0x55FD, 0x15C1, 0x55FE, 0x55FE, 0x1AD4, 0x5606, 0x5606, 0x1CF1,
+ 0x5609, 0x5609, 0x0D74, 0x5614, 0x5614, 0x0F40, 0x5617, 0x5617, 0x14D9,
+ 0x562F, 0x562F, 0x157D, 0x5632, 0x5632, 0x1A82, 0x5634, 0x5634, 0x1C96,
+ 0x5636, 0x5636, 0x163E, 0x5653, 0x5653, 0x1E27, 0x5668, 0x5668, 0x0FE3,
+ 0x566B, 0x566B, 0x1F66, 0x5674, 0x5674, 0x1422, 0x5686, 0x5686, 0x1F12,
+ 0x56A5, 0x56A5, 0x1744, 0x56AC, 0x56AC, 0x1467, 0x56AE, 0x56AE, 0x1E20,
+ 0x56B4, 0x56B4, 0x1727, 0x56BC, 0x56BC, 0x196F, 0x56CA, 0x56CA, 0x1038,
+ 0x56CD, 0x56CD, 0x1F67, 0x56D1, 0x56D1, 0x1C4A, 0x56DA, 0x56DA, 0x15C2,
+ 0x56DB, 0x56DB, 0x1486, 0x56DE, 0x56DE, 0x1EF9, 0x56E0, 0x56E0, 0x1930,
+ 0x56F0, 0x56F0, 0x0EBE, 0x56F9, 0x56F9, 0x118B, 0x56FA, 0x56FA, 0x0E95,
+ 0x5703, 0x5703, 0x1D7E, 0x5704, 0x5704, 0x170E, 0x5708, 0x5708, 0x0F85,
+ 0x570B, 0x570B, 0x0F6B, 0x570D, 0x570D, 0x1890, 0x5712, 0x5712, 0x1873,
+ 0x5713, 0x5713, 0x1872, 0x5716, 0x5716, 0x10B0, 0x5718, 0x5718, 0x1064,
+ 0x571F, 0x571F, 0x1D1B, 0x5728, 0x5728, 0x19AC, 0x572D, 0x572D, 0x0F9B,
+ 0x5730, 0x5730, 0x1B21, 0x573B, 0x573B, 0x0FE4, 0x5740, 0x5740, 0x1B22,
+ 0x5742, 0x5742, 0x1D43, 0x5747, 0x5747, 0x0FAA, 0x574A, 0x574A, 0x134F,
+ 0x574D, 0x574D, 0x107A, 0x574E, 0x574E, 0x0DB7, 0x5750, 0x5750, 0x1AC7,
+ 0x5751, 0x5751, 0x0DFD, 0x5761, 0x5761, 0x1D32, 0x5764, 0x5764, 0x0EBF,
+ 0x5766, 0x5766, 0x1CF2, 0x576A, 0x576A, 0x1D69, 0x576E, 0x576E, 0x109C,
+ 0x5770, 0x5770, 0x0E54, 0x5775, 0x5775, 0x0F41, 0x577C, 0x577C, 0x1CE5,
+ 0x5782, 0x5782, 0x15C3, 0x5788, 0x5788, 0x109B, 0x578B, 0x578B, 0x1E5E,
+ 0x5793, 0x5793, 0x1E08, 0x57A0, 0x57A0, 0x18E5, 0x57A2, 0x57A2, 0x0F42,
+ 0x57A3, 0x57A3, 0x1874, 0x57C3, 0x57C3, 0x16D2, 0x57C7, 0x57C7, 0x1822,
+ 0x57C8, 0x57C8, 0x1AF9, 0x57CB, 0x57CB, 0x1264, 0x57CE, 0x57CE, 0x1562,
+ 0x57DF, 0x57DF, 0x173C, 0x57E0, 0x57E0, 0x13FD, 0x57F0, 0x57F0, 0x1BCB,
+ 0x57F4, 0x57F4, 0x1658, 0x57F7, 0x57F7, 0x1B78, 0x57F9, 0x57F9, 0x136B,
+ 0x57FA, 0x57FA, 0x0FE5, 0x57FC, 0x57FC, 0x0FE6, 0x5800, 0x5800, 0x0F77,
+ 0x5802, 0x5802, 0x1090, 0x5805, 0x5805, 0x0E35, 0x5806, 0x5806, 0x1D23,
+ 0x5808, 0x5808, 0x0DD1, 0x5809, 0x5809, 0x18D3, 0x580A, 0x580A, 0x16A1,
+ 0x581E, 0x581E, 0x1C13, 0x5821, 0x5821, 0x13C3, 0x5824, 0x5824, 0x1A6A,
+ 0x5827, 0x5827, 0x1745, 0x582A, 0x582A, 0x0DB8, 0x582F, 0x582F, 0x17FE,
+ 0x5830, 0x5830, 0x171E, 0x5831, 0x5831, 0x13C4, 0x5834, 0x5834, 0x1989,
+ 0x5835, 0x5835, 0x10B1, 0x583A, 0x583A, 0x0E7B, 0x584A, 0x584A, 0x0F11,
+ 0x584B, 0x584B, 0x1772, 0x584F, 0x584F, 0x0DEC, 0x5851, 0x5851, 0x157E,
+ 0x5854, 0x5854, 0x1D00, 0x5857, 0x5857, 0x10B2, 0x5858, 0x5858, 0x1091,
+ 0x585A, 0x585A, 0x1C54, 0x585E, 0x585E, 0x14F2, 0x5861, 0x5861, 0x19FA,
+ 0x5862, 0x5862, 0x17A9, 0x5864, 0x5864, 0x1F2D, 0x5875, 0x5875, 0x1B46,
+ 0x5879, 0x5879, 0x1BAC, 0x587C, 0x587C, 0x19FB, 0x587E, 0x587E, 0x15FD,
+ 0x5883, 0x5883, 0x0E55, 0x5885, 0x5885, 0x14FD, 0x5889, 0x5889, 0x1823,
+ 0x5893, 0x5893, 0x12C1, 0x589C, 0x589C, 0x1C61, 0x589E, 0x589E, 0x1B13,
+ 0x589F, 0x589F, 0x1E28, 0x58A8, 0x58A8, 0x12E2, 0x58A9, 0x58A9, 0x10DF,
+ 0x58AE, 0x58AE, 0x1CD7, 0x58B3, 0x58B3, 0x1423, 0x58BA, 0x58BA, 0x17AA,
+ 0x58BB, 0x58BB, 0x198A, 0x58BE, 0x58BE, 0x0D96, 0x58C1, 0x58C1, 0x139E,
+ 0x58C5, 0x58C5, 0x17CA, 0x58C7, 0x58C7, 0x1065, 0x58CE, 0x58CE, 0x1F2E,
+ 0x58D1, 0x58D1, 0x1DCE, 0x58D3, 0x58D3, 0x16C5, 0x58D5, 0x58D5, 0x1E7B,
+ 0x58D8, 0x58D8, 0x11D4, 0x58D9, 0x58D9, 0x0F02, 0x58DE, 0x58DE, 0x0F12,
+ 0x58DF, 0x58DF, 0x11B8, 0x58E4, 0x58E4, 0x16F8, 0x58EB, 0x58EB, 0x1487,
+ 0x58EC, 0x58EC, 0x1946, 0x58EF, 0x58EF, 0x198B, 0x58F9, 0x58F9, 0x193F,
+ 0x58FA, 0x58FA, 0x1E7C, 0x58FB, 0x58FB, 0x14FE, 0x58FD, 0x58FD, 0x15C4,
+ 0x590F, 0x590F, 0x1DC3, 0x5914, 0x5914, 0x0FE7, 0x5915, 0x5915, 0x151B,
+ 0x5916, 0x5916, 0x17F7, 0x5919, 0x5919, 0x15FE, 0x591A, 0x591A, 0x105E,
+ 0x591C, 0x591C, 0x16E9, 0x5922, 0x5922, 0x12BD, 0x5927, 0x5927, 0x109D,
+ 0x5929, 0x5929, 0x1BEF, 0x592A, 0x592A, 0x1D09, 0x592B, 0x592B, 0x13FE,
+ 0x592D, 0x592D, 0x17FF, 0x592E, 0x592E, 0x16CA, 0x5931, 0x5931, 0x167E,
+ 0x5937, 0x5937, 0x1910, 0x593E, 0x593E, 0x1E51, 0x5944, 0x5944, 0x1728,
+ 0x5947, 0x5947, 0x0FE8, 0x5948, 0x5948, 0x103C, 0x5949, 0x5949, 0x13E6,
+ 0x594E, 0x594E, 0x0F9C, 0x594F, 0x594F, 0x1AD5, 0x5950, 0x5950, 0x1ECC,
+ 0x5951, 0x5951, 0x0E7C, 0x5954, 0x5954, 0x1424, 0x5955, 0x5955, 0x1E32,
+ 0x5957, 0x5957, 0x1D2A, 0x595A, 0x595A, 0x1E09, 0x5960, 0x5960, 0x19FC,
+ 0x5962, 0x5962, 0x1488, 0x5967, 0x5967, 0x17AB, 0x596A, 0x596A, 0x1CFA,
+ 0x596B, 0x596B, 0x18D8, 0x596C, 0x596C, 0x198C, 0x596D, 0x596D, 0x151C,
+ 0x596E, 0x596E, 0x1425, 0x5973, 0x5973, 0x103F, 0x5974, 0x5974, 0x104A,
+ 0x5978, 0x5978, 0x0D97, 0x597D, 0x597D, 0x1E7D, 0x5982, 0x5982, 0x1730,
+ 0x5983, 0x5983, 0x1442, 0x5984, 0x5984, 0x1259, 0x598A, 0x598A, 0x1947,
+ 0x5993, 0x5993, 0x0FE9, 0x5996, 0x5996, 0x1800, 0x5997, 0x5997, 0x0FC7,
+ 0x5999, 0x5999, 0x12C2, 0x59A5, 0x59A5, 0x1CD8, 0x59A8, 0x59A8, 0x1350,
+ 0x59AC, 0x59AC, 0x1D2B, 0x59B9, 0x59B9, 0x1265, 0x59BB, 0x59BB, 0x1BDB,
+ 0x59BE, 0x59BE, 0x1C14, 0x59C3, 0x59C3, 0x1A36, 0x59C6, 0x59C6, 0x129F,
+ 0x59C9, 0x59C9, 0x1956, 0x59CB, 0x59CB, 0x163F, 0x59D0, 0x59D0, 0x19C3,
+ 0x59D1, 0x59D1, 0x0E96, 0x59D3, 0x59D3, 0x1563, 0x59D4, 0x59D4, 0x1891,
+ 0x59D9, 0x59D9, 0x1948, 0x59DA, 0x59DA, 0x1801, 0x59DC, 0x59DC, 0x0DD2,
+ 0x59DD, 0x59DD, 0x1AD0, 0x59E6, 0x59E6, 0x0D98, 0x59E8, 0x59E8, 0x1911,
+ 0x59EA, 0x59EA, 0x1B69, 0x59EC, 0x59EC, 0x1F68, 0x59EE, 0x59EE, 0x1DF8,
+ 0x59F8, 0x59F8, 0x1746, 0x59FB, 0x59FB, 0x1931, 0x59FF, 0x59FF, 0x1957,
+ 0x5A01, 0x5A01, 0x1892, 0x5A03, 0x5A03, 0x17F4, 0x5A11, 0x5A11, 0x1489,
+ 0x5A18, 0x5A18, 0x1039, 0x5A1B, 0x5A1B, 0x17AC, 0x5A1C, 0x5A1C, 0x1026,
+ 0x5A1F, 0x5A1F, 0x1747, 0x5A20, 0x5A20, 0x166B, 0x5A25, 0x5A25, 0x1693,
+ 0x5A29, 0x5A29, 0x1240, 0x5A36, 0x5A36, 0x1C97, 0x5A3C, 0x5A3C, 0x1BB8,
+ 0x5A41, 0x5A41, 0x11D5, 0x5A46, 0x5A46, 0x1D33, 0x5A49, 0x5A49, 0x17DB,
+ 0x5A5A, 0x5A5A, 0x1EA4, 0x5A62, 0x5A62, 0x1443, 0x5A66, 0x5A66, 0x13FF,
+ 0x5A92, 0x5A92, 0x1266, 0x5A9A, 0x5A9A, 0x12F4, 0x5A9B, 0x5A9B, 0x1875,
+ 0x5AA4, 0x5AA4, 0x1640, 0x5AC1, 0x5AC1, 0x0D75, 0x5AC2, 0x5AC2, 0x15C5,
+ 0x5AC4, 0x5AC4, 0x1876, 0x5AC9, 0x5AC9, 0x1B6A, 0x5ACC, 0x5ACC, 0x1E4E,
+ 0x5AE1, 0x5AE1, 0x19DD, 0x5AE6, 0x5AE6, 0x1DF9, 0x5AE9, 0x5AE9, 0x1055,
+ 0x5B05, 0x5B05, 0x1EB9, 0x5B09, 0x5B09, 0x1F69, 0x5B0B, 0x5B0B, 0x152E,
+ 0x5B0C, 0x5B0C, 0x0F20, 0x5B16, 0x5B16, 0x1D6F, 0x5B2A, 0x5B2A, 0x1468,
+ 0x5B40, 0x5B40, 0x14DA, 0x5B43, 0x5B43, 0x16F9, 0x5B50, 0x5B50, 0x1958,
+ 0x5B51, 0x5B51, 0x1E4A, 0x5B54, 0x5B54, 0x0ECE, 0x5B55, 0x5B55, 0x1951,
+ 0x5B57, 0x5B57, 0x1959, 0x5B58, 0x5B58, 0x1AB0, 0x5B5A, 0x5B5A, 0x1400,
+ 0x5B5C, 0x5B5C, 0x195A, 0x5B5D, 0x5B5D, 0x1F13, 0x5B5F, 0x5B5F, 0x1277,
+ 0x5B63, 0x5B63, 0x0E7D, 0x5B64, 0x5B64, 0x0E97, 0x5B69, 0x5B69, 0x1E0A,
+ 0x5B6B, 0x5B6B, 0x15AA, 0x5B70, 0x5B70, 0x15FF, 0x5B71, 0x5B71, 0x197A,
+ 0x5B75, 0x5B75, 0x1401, 0x5B78, 0x5B78, 0x1DCF, 0x5B7A, 0x5B7A, 0x18AB,
+ 0x5B7C, 0x5B7C, 0x1723, 0x5B85, 0x5B85, 0x10AA, 0x5B87, 0x5B87, 0x183C,
+ 0x5B88, 0x5B88, 0x15C6, 0x5B89, 0x5B89, 0x16AF, 0x5B8B, 0x5B8B, 0x15B1,
+ 0x5B8C, 0x5B8C, 0x17DC, 0x5B8F, 0x5B8F, 0x0F18, 0x5B93, 0x5B93, 0x13D6,
+ 0x5B95, 0x5B95, 0x1D03, 0x5B96, 0x5B96, 0x1F0E, 0x5B97, 0x5B97, 0x1AB6,
+ 0x5B98, 0x5B98, 0x0EEC, 0x5B99, 0x5B99, 0x1AD6, 0x5B9A, 0x5B9A, 0x1A37,
+ 0x5B9B, 0x5B9B, 0x17DD, 0x5B9C, 0x5B9C, 0x18FD, 0x5BA2, 0x5BA2, 0x0DFC,
+ 0x5BA3, 0x5BA3, 0x152F, 0x5BA4, 0x5BA4, 0x167F, 0x5BA5, 0x5BA5, 0x18AC,
+ 0x5BA6, 0x5BA6, 0x1ECD, 0x5BAC, 0x5BAC, 0x1564, 0x5BAE, 0x5BAE, 0x0F7B,
+ 0x5BB0, 0x5BB0, 0x19AD, 0x5BB3, 0x5BB3, 0x1E0B, 0x5BB4, 0x5BB4, 0x1748,
+ 0x5BB5, 0x5BB5, 0x157F, 0x5BB6, 0x5BB6, 0x0D76, 0x5BB8, 0x5BB8, 0x166C,
+ 0x5BB9, 0x5BB9, 0x1824, 0x5BBF, 0x5BBF, 0x1600, 0x5BC0, 0x5BC0, 0x1BCC,
+ 0x5BC2, 0x5BC2, 0x19DE, 0x5BC3, 0x5BC3, 0x1877, 0x5BC4, 0x5BC4, 0x0FEA,
+ 0x5BC5, 0x5BC5, 0x1932, 0x5BC6, 0x5BC6, 0x1313, 0x5BC7, 0x5BC7, 0x0F43,
+ 0x5BCC, 0x5BCC, 0x1402, 0x5BD0, 0x5BD0, 0x1267, 0x5BD2, 0x5BD2, 0x1DD3,
+ 0x5BD3, 0x5BD3, 0x183D, 0x5BD4, 0x5BD4, 0x1659, 0x5BD7, 0x5BD7, 0x1048,
+ 0x5BDE, 0x5BDE, 0x1238, 0x5BDF, 0x5BDF, 0x1BA6, 0x5BE1, 0x5BE1, 0x0EDB,
+ 0x5BE2, 0x5BE2, 0x1CC8, 0x5BE4, 0x5BE4, 0x17AD, 0x5BE5, 0x5BE5, 0x1802,
+ 0x5BE6, 0x5BE6, 0x1680, 0x5BE7, 0x5BE7, 0x1047, 0x5BE8, 0x5BE8, 0x1BCD,
+ 0x5BE9, 0x5BE9, 0x1682, 0x5BEB, 0x5BEB, 0x148A, 0x5BEC, 0x5BEC, 0x0EED,
+ 0x5BEE, 0x5BEE, 0x11C9, 0x5BEF, 0x5BEF, 0x1AFA, 0x5BF5, 0x5BF5, 0x1C55,
+ 0x5BF6, 0x5BF6, 0x13C5, 0x5BF8, 0x5BF8, 0x1C4F, 0x5BFA, 0x5BFA, 0x148B,
+ 0x5C01, 0x5C01, 0x13E7, 0x5C04, 0x5C04, 0x148C, 0x5C07, 0x5C07, 0x198D,
+ 0x5C08, 0x5C08, 0x19FD, 0x5C09, 0x5C09, 0x1893, 0x5C0A, 0x5C0A, 0x1AB1,
+ 0x5C0B, 0x5C0B, 0x1683, 0x5C0D, 0x5C0D, 0x109E, 0x5C0E, 0x5C0E, 0x10B3,
+ 0x5C0F, 0x5C0F, 0x1580, 0x5C11, 0x5C11, 0x1581, 0x5C16, 0x5C16, 0x1C0A,
+ 0x5C19, 0x5C19, 0x14DB, 0x5C24, 0x5C24, 0x183E, 0x5C28, 0x5C28, 0x1351,
+ 0x5C31, 0x5C31, 0x1C98, 0x5C38, 0x5C38, 0x1641, 0x5C39, 0x5C39, 0x18D9,
+ 0x5C3A, 0x5C3A, 0x1BE0, 0x5C3B, 0x5C3B, 0x0E98, 0x5C3C, 0x5C3C, 0x105A,
+ 0x5C3E, 0x5C3E, 0x12F5, 0x5C3F, 0x5C3F, 0x1054, 0x5C40, 0x5C40, 0x0F6C,
+ 0x5C45, 0x5C45, 0x0E03, 0x5C46, 0x5C46, 0x0E7E, 0x5C48, 0x5C48, 0x0F78,
+ 0x5C4B, 0x5C4B, 0x17BE, 0x5C4D, 0x5C4D, 0x1643, 0x5C4E, 0x5C4E, 0x1642,
+ 0x5C51, 0x5C51, 0x154B, 0x5C55, 0x5C55, 0x19FE, 0x5C5B, 0x5C5B, 0x13B4,
+ 0x5C60, 0x5C60, 0x10B4, 0x5C62, 0x5C62, 0x11D6, 0x5C64, 0x5C64, 0x1CA7,
+ 0x5C65, 0x5C65, 0x120A, 0x5C6C, 0x5C6C, 0x15A2, 0x5C6F, 0x5C6F, 0x1106,
+ 0x5C71, 0x5C71, 0x14B9, 0x5C79, 0x5C79, 0x1F58, 0x5C90, 0x5C90, 0x0FEB,
+ 0x5C91, 0x5C91, 0x197F, 0x5CA1, 0x5CA1, 0x0DD3, 0x5CA9, 0x5CA9, 0x16BE,
+ 0x5CAB, 0x5CAB, 0x15C7, 0x5CAC, 0x5CAC, 0x0DCB, 0x5CB1, 0x5CB1, 0x109F,
+ 0x5CB3, 0x5CB3, 0x16A2, 0x5CB5, 0x5CB5, 0x1E7E, 0x5CB7, 0x5CB7, 0x1306,
+ 0x5CB8, 0x5CB8, 0x16B0, 0x5CBA, 0x5CBA, 0x118C, 0x5CBE, 0x5CBE, 0x1A25,
+ 0x5CC0, 0x5CC0, 0x15C8, 0x5CD9, 0x5CD9, 0x1CAB, 0x5CE0, 0x5CE0, 0x14DC,
+ 0x5CE8, 0x5CE8, 0x1694, 0x5CEF, 0x5CF0, 0x13E8, 0x5CF4, 0x5CF4, 0x1E37,
+ 0x5CF6, 0x5CF6, 0x10B5, 0x5CFB, 0x5CFB, 0x1AFB, 0x5CFD, 0x5CFD, 0x1E52,
+ 0x5D07, 0x5D07, 0x1627, 0x5D0D, 0x5D0D, 0x1145, 0x5D0E, 0x5D0E, 0x0FEC,
+ 0x5D11, 0x5D11, 0x0EC0, 0x5D14, 0x5D14, 0x1C5F, 0x5D16, 0x5D16, 0x16D3,
+ 0x5D17, 0x5D17, 0x0DD4, 0x5D19, 0x5D19, 0x11F4, 0x5D27, 0x5D27, 0x1628,
+ 0x5D29, 0x5D29, 0x1437, 0x5D4B, 0x5D4B, 0x12F6, 0x5D4C, 0x5D4C, 0x0DB9,
+ 0x5D50, 0x5D50, 0x112F, 0x5D69, 0x5D69, 0x1629, 0x5D6C, 0x5D6C, 0x17F8,
+ 0x5D6F, 0x5D6F, 0x1B86, 0x5D87, 0x5D87, 0x0F44, 0x5D8B, 0x5D8B, 0x10B6,
+ 0x5D9D, 0x5D9D, 0x110D, 0x5DA0, 0x5DA0, 0x0F21, 0x5DA2, 0x5DA2, 0x1803,
+ 0x5DAA, 0x5DAA, 0x172B, 0x5DB8, 0x5DB8, 0x1773, 0x5DBA, 0x5DBA, 0x118D,
+ 0x5DBC, 0x5DBC, 0x14FF, 0x5DBD, 0x5DBD, 0x16A3, 0x5DCD, 0x5DCD, 0x17F9,
+ 0x5DD2, 0x5DD2, 0x1241, 0x5DD6, 0x5DD6, 0x16BF, 0x5DDD, 0x5DDD, 0x1BF0,
+ 0x5DDE, 0x5DDE, 0x1AD7, 0x5DE1, 0x5DE1, 0x1608, 0x5DE2, 0x5DE2, 0x1582,
+ 0x5DE5, 0x5DE5, 0x0ECF, 0x5DE6, 0x5DE6, 0x1AC8, 0x5DE7, 0x5DE7, 0x0F22,
+ 0x5DE8, 0x5DE8, 0x0E04, 0x5DEB, 0x5DEB, 0x12CD, 0x5DEE, 0x5DEE, 0x1B87,
+ 0x5DF1, 0x5DF1, 0x0FED, 0x5DF2, 0x5DF2, 0x1912, 0x5DF3, 0x5DF3, 0x148D,
+ 0x5DF4, 0x5DF4, 0x1D34, 0x5DF7, 0x5DF7, 0x1DFA, 0x5DFD, 0x5DFD, 0x15AB,
+ 0x5DFE, 0x5DFE, 0x0E14, 0x5E02, 0x5E02, 0x1644, 0x5E03, 0x5E03, 0x1D7F,
+ 0x5E06, 0x5E06, 0x1392, 0x5E0C, 0x5E0C, 0x1F6A, 0x5E11, 0x5E11, 0x1D04,
+ 0x5E16, 0x5E16, 0x1C15, 0x5E19, 0x5E19, 0x1B6B, 0x5E1B, 0x5E1B, 0x137E,
+ 0x5E1D, 0x5E1D, 0x1A6B, 0x5E25, 0x5E25, 0x15C9, 0x5E2B, 0x5E2B, 0x148E,
+ 0x5E2D, 0x5E2D, 0x151D, 0x5E33, 0x5E33, 0x198E, 0x5E36, 0x5E36, 0x10A0,
+ 0x5E38, 0x5E38, 0x14DD, 0x5E3D, 0x5E3D, 0x12A0, 0x5E3F, 0x5E3F, 0x1F25,
+ 0x5E40, 0x5E40, 0x1A38, 0x5E44, 0x5E44, 0x16A4, 0x5E45, 0x5E45, 0x1D93,
+ 0x5E47, 0x5E47, 0x1352, 0x5E4C, 0x5E4C, 0x1EE1, 0x5E55, 0x5E55, 0x1239,
+ 0x5E5F, 0x5E5F, 0x1CAC, 0x5E61, 0x5E61, 0x1384, 0x5E62, 0x5E62, 0x1092,
+ 0x5E63, 0x5E63, 0x1D70, 0x5E72, 0x5E72, 0x0D99, 0x5E73, 0x5E73, 0x1D6A,
+ 0x5E74, 0x5E74, 0x1040, 0x5E77, 0x5E77, 0x13B5, 0x5E78, 0x5E78, 0x1E1A,
+ 0x5E79, 0x5E79, 0x0D9A, 0x5E7B, 0x5E7B, 0x1ECE, 0x5E7C, 0x5E7D, 0x18AD,
+ 0x5E7E, 0x5E7E, 0x0FEE, 0x5E84, 0x5E84, 0x198F, 0x5E87, 0x5E87, 0x1444,
+ 0x5E8A, 0x5E8A, 0x14DE, 0x5E8F, 0x5E8F, 0x1500, 0x5E95, 0x5E95, 0x19C4,
+ 0x5E97, 0x5E97, 0x1A26, 0x5E9A, 0x5E9A, 0x0E56, 0x5E9C, 0x5E9C, 0x1403,
+ 0x5EA0, 0x5EA0, 0x14DF, 0x5EA6, 0x5EA6, 0x10B7, 0x5EA7, 0x5EA7, 0x1AC9,
+ 0x5EAB, 0x5EAB, 0x0E99, 0x5EAD, 0x5EAD, 0x1A39, 0x5EB5, 0x5EB5, 0x16C0,
+ 0x5EB6, 0x5EB6, 0x1501, 0x5EB7, 0x5EB7, 0x0DD5, 0x5EB8, 0x5EB8, 0x1825,
+ 0x5EBE, 0x5EBE, 0x18AF, 0x5EC2, 0x5EC2, 0x14E0, 0x5EC8, 0x5EC8, 0x1DC4,
+ 0x5EC9, 0x5EC9, 0x1183, 0x5ECA, 0x5ECA, 0x113C, 0x5ED0, 0x5ED0, 0x0F45,
+ 0x5ED3, 0x5ED3, 0x0EE7, 0x5ED6, 0x5ED6, 0x11CA, 0x5EDA, 0x5EDA, 0x1AD8,
+ 0x5EDB, 0x5EDB, 0x19FF, 0x5EDF, 0x5EDF, 0x12C3, 0x5EE0, 0x5EE0, 0x1BB9,
+ 0x5EE2, 0x5EE2, 0x1D71, 0x5EE3, 0x5EE3, 0x0F03, 0x5EEC, 0x5EEC, 0x115C,
+ 0x5EF3, 0x5EF3, 0x1C1D, 0x5EF6, 0x5EF6, 0x1749, 0x5EF7, 0x5EF7, 0x1A3A,
+ 0x5EFA, 0x5EFA, 0x0E15, 0x5EFB, 0x5EFB, 0x1EFA, 0x5F01, 0x5F01, 0x13A8,
+ 0x5F04, 0x5F04, 0x11B9, 0x5F0A, 0x5F0A, 0x1D72, 0x5F0F, 0x5F0F, 0x165A,
+ 0x5F11, 0x5F11, 0x1645, 0x5F13, 0x5F13, 0x0F7C, 0x5F14, 0x5F14, 0x1A83,
+ 0x5F15, 0x5F15, 0x1933, 0x5F17, 0x5F17, 0x1434, 0x5F18, 0x5F18, 0x1EAE,
+ 0x5F1B, 0x5F1B, 0x1913, 0x5F1F, 0x5F1F, 0x1A6C, 0x5F26, 0x5F26, 0x1E38,
+ 0x5F27, 0x5F27, 0x1E7F, 0x5F29, 0x5F29, 0x104B, 0x5F31, 0x5F31, 0x16F0,
+ 0x5F35, 0x5F35, 0x1990, 0x5F3A, 0x5F3A, 0x0DD6, 0x5F3C, 0x5F3C, 0x1DB5,
+ 0x5F48, 0x5F48, 0x1CF3, 0x5F4A, 0x5F4A, 0x0DD7, 0x5F4C, 0x5F4C, 0x12F7,
+ 0x5F4E, 0x5F4E, 0x1242, 0x5F56, 0x5F56, 0x1066, 0x5F57, 0x5F57, 0x1E70,
+ 0x5F59, 0x5F59, 0x1F3D, 0x5F5B, 0x5F5B, 0x1914, 0x5F62, 0x5F62, 0x1E5F,
+ 0x5F66, 0x5F66, 0x171F, 0x5F67, 0x5F67, 0x1856, 0x5F69, 0x5F69, 0x1BCE,
+ 0x5F6A, 0x5F6A, 0x1D9A, 0x5F6B, 0x5F6B, 0x1A84, 0x5F6C, 0x5F6C, 0x1469,
+ 0x5F6D, 0x5F6D, 0x1D59, 0x5F70, 0x5F70, 0x1BBA, 0x5F71, 0x5F71, 0x1774,
+ 0x5F77, 0x5F77, 0x1353, 0x5F79, 0x5F79, 0x173D, 0x5F7C, 0x5F7C, 0x1DAD,
+ 0x5F7F, 0x5F7F, 0x1435, 0x5F80, 0x5F80, 0x17EE, 0x5F81, 0x5F81, 0x1A3B,
+ 0x5F85, 0x5F85, 0x10A1, 0x5F87, 0x5F87, 0x1609, 0x5F8A, 0x5F8A, 0x1EFB,
+ 0x5F8B, 0x5F8B, 0x11F8, 0x5F8C, 0x5F8C, 0x1F26, 0x5F90, 0x5F90, 0x1502,
+ 0x5F91, 0x5F91, 0x0E57, 0x5F92, 0x5F92, 0x10B8, 0x5F97, 0x5F97, 0x110C,
+ 0x5F98, 0x5F98, 0x136C, 0x5F99, 0x5F99, 0x148F, 0x5F9E, 0x5F9E, 0x1AB7,
+ 0x5FA0, 0x5FA0, 0x1146, 0x5FA1, 0x5FA1, 0x170F, 0x5FA8, 0x5FA8, 0x1EE2,
+ 0x5FA9, 0x5FA9, 0x13D7, 0x5FAA, 0x5FAA, 0x160A, 0x5FAE, 0x5FAE, 0x12F8,
+ 0x5FB5, 0x5FB5, 0x1B7E, 0x5FB7, 0x5FB7, 0x10AB, 0x5FB9, 0x5FB9, 0x1C02,
+ 0x5FBD, 0x5FBD, 0x1F3E, 0x5FC3, 0x5FC3, 0x1684, 0x5FC5, 0x5FC5, 0x1DB6,
+ 0x5FCC, 0x5FCC, 0x0FEF, 0x5FCD, 0x5FCD, 0x1934, 0x5FD6, 0x5FD6, 0x1C50,
+ 0x5FD7, 0x5FD7, 0x1B23, 0x5FD8, 0x5FD9, 0x125A, 0x5FE0, 0x5FE0, 0x1C8B,
+ 0x5FEB, 0x5FEB, 0x1CD3, 0x5FF5, 0x5FF5, 0x1043, 0x5FFD, 0x5FFD, 0x1EAA,
+ 0x5FFF, 0x5FFF, 0x1426, 0x600F, 0x600F, 0x16CB, 0x6012, 0x6012, 0x104C,
+ 0x6016, 0x6016, 0x1D80, 0x601C, 0x601C, 0x118E, 0x601D, 0x601D, 0x1490,
+ 0x6020, 0x6020, 0x1D0A, 0x6021, 0x6021, 0x1915, 0x6025, 0x6025, 0x0FD5,
+ 0x6027, 0x6027, 0x1565, 0x6028, 0x6028, 0x1878, 0x602A, 0x602A, 0x0F13,
+ 0x602F, 0x602F, 0x0E29, 0x6041, 0x6041, 0x1949, 0x6042, 0x6042, 0x160B,
+ 0x6043, 0x6043, 0x1646, 0x604D, 0x604D, 0x1EE3, 0x6050, 0x6050, 0x0ED0,
+ 0x6052, 0x6052, 0x1DFB, 0x6055, 0x6055, 0x1503, 0x6059, 0x6059, 0x16FA,
+ 0x605D, 0x605D, 0x0EFC, 0x6062, 0x6062, 0x1EFC, 0x6063, 0x6063, 0x195B,
+ 0x6064, 0x6064, 0x1F4A, 0x6065, 0x6065, 0x1CAD, 0x6068, 0x6068, 0x1DD4,
+ 0x6069, 0x6069, 0x18E6, 0x606A, 0x606A, 0x0D8C, 0x606C, 0x606C, 0x1044,
+ 0x606D, 0x606D, 0x0ED1, 0x606F, 0x606F, 0x165B, 0x6070, 0x6070, 0x1F5F,
+ 0x6085, 0x6085, 0x1761, 0x6089, 0x6089, 0x1681, 0x608C, 0x608C, 0x1A6D,
+ 0x608D, 0x608D, 0x1DD5, 0x6094, 0x6094, 0x1EFD, 0x6096, 0x6096, 0x1D50,
+ 0x609A, 0x609A, 0x15B2, 0x609B, 0x609B, 0x1A00, 0x609F, 0x609F, 0x17AE,
+ 0x60A0, 0x60A0, 0x18B0, 0x60A3, 0x60A3, 0x1ECF, 0x60A4, 0x60A4, 0x1C56,
+ 0x60A7, 0x60A7, 0x120B, 0x60B0, 0x60B0, 0x1AB8, 0x60B2, 0x60B2, 0x1445,
+ 0x60B3, 0x60B3, 0x10AC, 0x60B4, 0x60B4, 0x1C90, 0x60B6, 0x60B6, 0x1307,
+ 0x60B8, 0x60B8, 0x0E7F, 0x60BC, 0x60BC, 0x10B9, 0x60BD, 0x60BD, 0x1BDC,
+ 0x60C5, 0x60C5, 0x1A3C, 0x60C7, 0x60C7, 0x10E0, 0x60D1, 0x60D1, 0x1EA1,
+ 0x60DA, 0x60DA, 0x1EAB, 0x60DC, 0x60DC, 0x151E, 0x60DF, 0x60DF, 0x18B1,
+ 0x60E0, 0x60E0, 0x1E71, 0x60E1, 0x60E1, 0x16A5, 0x60F0, 0x60F0, 0x1CD9,
+ 0x60F1, 0x60F1, 0x1052, 0x60F3, 0x60F3, 0x14E1, 0x60F6, 0x60F6, 0x1EE4,
+ 0x60F9, 0x60F9, 0x16EA, 0x60FA, 0x60FA, 0x1566, 0x60FB, 0x60FB, 0x1CA5,
+ 0x6101, 0x6101, 0x15CA, 0x6106, 0x6106, 0x0E16, 0x6108, 0x6109, 0x18B2,
+ 0x610D, 0x610D, 0x1308, 0x610E, 0x610E, 0x1D5D, 0x610F, 0x610F, 0x18FE,
+ 0x6115, 0x6115, 0x16A6, 0x611A, 0x611A, 0x183F, 0x611B, 0x611B, 0x16D4,
+ 0x611F, 0x611F, 0x0DBA, 0x6127, 0x6127, 0x0F14, 0x6130, 0x6130, 0x1EE5,
+ 0x6134, 0x6134, 0x1BBB, 0x6137, 0x6137, 0x0DED, 0x613C, 0x613C, 0x166D,
+ 0x613E, 0x613E, 0x0DEE, 0x613F, 0x613F, 0x1879, 0x6142, 0x6142, 0x1826,
+ 0x6144, 0x6144, 0x11F9, 0x6147, 0x6147, 0x18E7, 0x6148, 0x6148, 0x195C,
+ 0x614A, 0x614A, 0x0E47, 0x614B, 0x614B, 0x1D0B, 0x614C, 0x614C, 0x1EE6,
+ 0x6153, 0x6153, 0x1D9B, 0x6155, 0x6155, 0x12A1, 0x6158, 0x6159, 0x1BAD,
+ 0x615D, 0x615D, 0x1D2F, 0x615F, 0x615F, 0x1D1D, 0x6162, 0x6162, 0x1243,
+ 0x6163, 0x6163, 0x0EEE, 0x6164, 0x6164, 0x0D8D, 0x6167, 0x6167, 0x1E72,
+ 0x6168, 0x6168, 0x0DEF, 0x616B, 0x616B, 0x1AB9, 0x616E, 0x616E, 0x115D,
+ 0x6170, 0x6170, 0x1894, 0x6176, 0x6176, 0x0E58, 0x6177, 0x6177, 0x0DD8,
+ 0x617D, 0x617D, 0x1BE1, 0x617E, 0x617E, 0x1818, 0x6181, 0x6181, 0x1C57,
+ 0x6182, 0x6182, 0x1840, 0x618A, 0x618A, 0x1446, 0x618E, 0x618E, 0x1B14,
+ 0x6190, 0x6190, 0x1171, 0x6191, 0x6191, 0x1475, 0x6194, 0x6194, 0x1C31,
+ 0x6198, 0x6198, 0x1F6C, 0x6199, 0x6199, 0x1F6B, 0x619A, 0x619A, 0x1CF4,
+ 0x61A4, 0x61A4, 0x1427, 0x61A7, 0x61A7, 0x10F0, 0x61A9, 0x61A9, 0x0E2C,
+ 0x61AB, 0x61AB, 0x1309, 0x61AC, 0x61AC, 0x0E59, 0x61AE, 0x61AE, 0x12CE,
+ 0x61B2, 0x61B2, 0x1E2B, 0x61B6, 0x61B6, 0x1719, 0x61BA, 0x61BA, 0x107B,
+ 0x61BE, 0x61BE, 0x0DBB, 0x61C3, 0x61C3, 0x0FBA, 0x61C7, 0x61C7, 0x0D9B,
+ 0x61C8, 0x61C8, 0x1E0C, 0x61C9, 0x61C9, 0x18F7, 0x61CA, 0x61CA, 0x17AF,
+ 0x61CB, 0x61CB, 0x12CF, 0x61E6, 0x61E6, 0x1027, 0x61F2, 0x61F2, 0x1B7F,
+ 0x61F6, 0x61F6, 0x1117, 0x61F7, 0x61F7, 0x1EFE, 0x61F8, 0x61F8, 0x1E39,
+ 0x61FA, 0x61FA, 0x1BAF, 0x61FC, 0x61FC, 0x0F46, 0x61FF, 0x61FF, 0x18FF,
+ 0x6200, 0x6200, 0x1172, 0x6207, 0x6207, 0x1093, 0x6208, 0x6208, 0x0EDC,
+ 0x620A, 0x620A, 0x12D0, 0x620C, 0x620C, 0x1623, 0x620D, 0x620D, 0x15CB,
+ 0x620E, 0x620E, 0x18E1, 0x6210, 0x6210, 0x1567, 0x6211, 0x6211, 0x1695,
+ 0x6212, 0x6212, 0x0E80, 0x6216, 0x6216, 0x1EA2, 0x621A, 0x621A, 0x1BE2,
+ 0x621F, 0x621F, 0x0FB3, 0x6221, 0x6221, 0x0DBC, 0x622A, 0x622A, 0x1A1D,
+ 0x622E, 0x622E, 0x11F0, 0x6230, 0x6230, 0x1A01, 0x6231, 0x6231, 0x1F6D,
+ 0x6234, 0x6234, 0x10A2, 0x6236, 0x6236, 0x1E80, 0x623E, 0x623E, 0x115E,
+ 0x623F, 0x623F, 0x1354, 0x6240, 0x6240, 0x1583, 0x6241, 0x6241, 0x1D60,
+ 0x6247, 0x6247, 0x1530, 0x6248, 0x6248, 0x1E81, 0x6249, 0x6249, 0x1447,
+ 0x624B, 0x624B, 0x15CC, 0x624D, 0x624D, 0x19AE, 0x6253, 0x6253, 0x1CDA,
+ 0x6258, 0x6258, 0x1CE6, 0x626E, 0x626E, 0x1428, 0x6271, 0x6271, 0x0FD6,
+ 0x6276, 0x6276, 0x1404, 0x6279, 0x6279, 0x1448, 0x627C, 0x627C, 0x16DC,
+ 0x627F, 0x627F, 0x1637, 0x6280, 0x6280, 0x0FF0, 0x6284, 0x6284, 0x1C32,
+ 0x6289, 0x6289, 0x0E40, 0x628A, 0x628A, 0x1D35, 0x6291, 0x6291, 0x171A,
+ 0x6292, 0x6292, 0x1504, 0x6295, 0x6295, 0x1D2C, 0x6297, 0x6297, 0x1DFC,
+ 0x6298, 0x6298, 0x1A1E, 0x629B, 0x629B, 0x1D81, 0x62AB, 0x62AB, 0x1DAE,
+ 0x62B1, 0x62B1, 0x1D82, 0x62B5, 0x62B5, 0x19C5, 0x62B9, 0x62B9, 0x1252,
+ 0x62BC, 0x62BC, 0x16C6, 0x62BD, 0x62BD, 0x1C62, 0x62C2, 0x62C2, 0x1436,
+ 0x62C7, 0x62C7, 0x12D1, 0x62C8, 0x62C8, 0x1045, 0x62C9, 0x62C9, 0x1139,
+ 0x62CC, 0x62CC, 0x132D, 0x62CD, 0x62CD, 0x1318, 0x62CF, 0x62CF, 0x1028,
+ 0x62D0, 0x62D0, 0x0F15, 0x62D2, 0x62D2, 0x0E05, 0x62D3, 0x62D3, 0x1BE3,
+ 0x62D4, 0x62D4, 0x1343, 0x62D6, 0x62D6, 0x1CDB, 0x62D7, 0x62D7, 0x1804,
+ 0x62D8, 0x62D8, 0x0F47, 0x62D9, 0x62D9, 0x1AB3, 0x62DB, 0x62DB, 0x1C33,
+ 0x62DC, 0x62DC, 0x136D, 0x62EC, 0x62EC, 0x0EFD, 0x62ED, 0x62ED, 0x165C,
+ 0x62EE, 0x62EE, 0x1021, 0x62EF, 0x62EF, 0x1B16, 0x62F1, 0x62F1, 0x0ED2,
+ 0x62F3, 0x62F3, 0x0F86, 0x62F7, 0x62F7, 0x0E9A, 0x62FE, 0x62FE, 0x162E,
+ 0x62FF, 0x62FF, 0x1029, 0x6301, 0x6301, 0x1B24, 0x6307, 0x6307, 0x1B25,
+ 0x6309, 0x6309, 0x16B1, 0x6311, 0x6311, 0x10BA, 0x632B, 0x632B, 0x1ACA,
+ 0x632F, 0x632F, 0x1B47, 0x633A, 0x633A, 0x1A3D, 0x633B, 0x633B, 0x174B,
+ 0x633D, 0x633D, 0x1244, 0x633E, 0x633E, 0x1E53, 0x6349, 0x6349, 0x1B8F,
+ 0x634C, 0x634C, 0x1D4D, 0x634F, 0x634F, 0x102F, 0x6350, 0x6350, 0x174A,
+ 0x6355, 0x6355, 0x1D83, 0x6367, 0x6367, 0x13EA, 0x6368, 0x6368, 0x1491,
+ 0x636E, 0x636E, 0x0E06, 0x6372, 0x6372, 0x0F87, 0x6377, 0x6377, 0x1C16,
+ 0x637A, 0x637A, 0x1030, 0x637B, 0x637B, 0x1046, 0x637F, 0x637F, 0x1505,
+ 0x6383, 0x6383, 0x1584, 0x6388, 0x6388, 0x15CD, 0x6389, 0x6389, 0x10BB,
+ 0x638C, 0x638C, 0x1991, 0x6392, 0x6392, 0x136E, 0x6396, 0x6396, 0x16DD,
+ 0x6398, 0x6398, 0x0F79, 0x639B, 0x639B, 0x0F0D, 0x63A0, 0x63A0, 0x1149,
+ 0x63A1, 0x63A1, 0x1BCF, 0x63A2, 0x63A2, 0x1CFC, 0x63A5, 0x63A5, 0x1A2D,
+ 0x63A7, 0x63A7, 0x0ED3, 0x63A8, 0x63A8, 0x1C63, 0x63A9, 0x63A9, 0x1729,
+ 0x63AA, 0x63AA, 0x1A85, 0x63C0, 0x63C0, 0x0D9C, 0x63C4, 0x63C4, 0x18B4,
+ 0x63C6, 0x63C6, 0x0F9D, 0x63CF, 0x63CF, 0x12C4, 0x63D0, 0x63D0, 0x1A6E,
+ 0x63D6, 0x63D6, 0x18F3, 0x63DA, 0x63DA, 0x16FB, 0x63DB, 0x63DB, 0x1ED0,
+ 0x63E1, 0x63E1, 0x16A7, 0x63ED, 0x63ED, 0x0E2D, 0x63EE, 0x63EE, 0x1F3F,
+ 0x63F4, 0x63F4, 0x187A, 0x63F6, 0x63F6, 0x16EB, 0x63F7, 0x63F7, 0x14CF,
+ 0x640D, 0x640D, 0x15AC, 0x640F, 0x640F, 0x1319, 0x6414, 0x6414, 0x1585,
+ 0x6416, 0x6416, 0x1805, 0x6417, 0x6417, 0x10BC, 0x641C, 0x641C, 0x15CE,
+ 0x6422, 0x6422, 0x1B48, 0x642C, 0x642C, 0x132E, 0x642D, 0x642D, 0x1D01,
+ 0x643A, 0x643A, 0x1F46, 0x643E, 0x643E, 0x1B90, 0x6458, 0x6458, 0x19DF,
+ 0x6460, 0x6460, 0x1C58, 0x6469, 0x6469, 0x1230, 0x646F, 0x646F, 0x1B26,
+ 0x6478, 0x6479, 0x12A2, 0x647A, 0x647A, 0x1A2E, 0x6488, 0x6488, 0x11A0,
+ 0x6491, 0x6491, 0x1D17, 0x6492, 0x6492, 0x14C4, 0x6493, 0x6493, 0x1806,
+ 0x649A, 0x649A, 0x1041, 0x649E, 0x649E, 0x1094, 0x64A4, 0x64A4, 0x1C03,
+ 0x64A5, 0x64A5, 0x1344, 0x64AB, 0x64AB, 0x12D2, 0x64AD, 0x64AD, 0x1D36,
+ 0x64AE, 0x64AE, 0x1C5D, 0x64B0, 0x64B0, 0x1B96, 0x64B2, 0x64B2, 0x131A,
+ 0x64BB, 0x64BB, 0x1074, 0x64C1, 0x64C1, 0x17CB, 0x64C4, 0x64C4, 0x11A1,
+ 0x64C5, 0x64C5, 0x1BF1, 0x64C7, 0x64C7, 0x1D15, 0x64CA, 0x64CA, 0x0E2E,
+ 0x64CD, 0x64CD, 0x1A86, 0x64CE, 0x64CE, 0x0E5A, 0x64D2, 0x64D2, 0x0FC8,
+ 0x64D4, 0x64D4, 0x107C, 0x64D8, 0x64D8, 0x139F, 0x64DA, 0x64DA, 0x0E07,
+ 0x64E1, 0x64E1, 0x10A3, 0x64E2, 0x64E2, 0x1CE7, 0x64E5, 0x64E5, 0x1130,
+ 0x64E6, 0x64E6, 0x1BA7, 0x64E7, 0x64E7, 0x0E08, 0x64EC, 0x64EC, 0x1900,
+ 0x64F2, 0x64F2, 0x1BE4, 0x64F4, 0x64F4, 0x1EC5, 0x64FA, 0x64FA, 0x1D37,
+ 0x64FE, 0x64FE, 0x1807, 0x6500, 0x6500, 0x132F, 0x6504, 0x6504, 0x1D18,
+ 0x6518, 0x6518, 0x16FC, 0x651D, 0x651D, 0x155F, 0x6523, 0x6523, 0x1173,
+ 0x652A, 0x652A, 0x0F23, 0x652B, 0x652B, 0x1EC6, 0x652C, 0x652C, 0x1131,
+ 0x652F, 0x652F, 0x1B27, 0x6536, 0x6536, 0x15CF, 0x6537, 0x6537, 0x0E9B,
+ 0x6538, 0x6538, 0x18B5, 0x6539, 0x6539, 0x0DF0, 0x653B, 0x653B, 0x0ED4,
+ 0x653E, 0x653E, 0x1355, 0x653F, 0x653F, 0x1A3E, 0x6545, 0x6545, 0x0E9C,
+ 0x6548, 0x6548, 0x1F14, 0x654D, 0x654D, 0x1506, 0x654E, 0x654E, 0x0F24,
+ 0x654F, 0x654F, 0x130A, 0x6551, 0x6551, 0x0F48, 0x6556, 0x6556, 0x17B0,
+ 0x6557, 0x6557, 0x1D51, 0x655E, 0x655E, 0x1BBC, 0x6562, 0x6562, 0x0DBD,
+ 0x6563, 0x6563, 0x14BA, 0x6566, 0x6566, 0x10E1, 0x656C, 0x656C, 0x0E5B,
+ 0x656D, 0x656D, 0x16FD, 0x6572, 0x6572, 0x0E9D, 0x6574, 0x6574, 0x1A3F,
+ 0x6575, 0x6575, 0x19E0, 0x6577, 0x6577, 0x1405, 0x6578, 0x6578, 0x15D0,
+ 0x657E, 0x657E, 0x1531, 0x6582, 0x6582, 0x1184, 0x6583, 0x6583, 0x1D73,
+ 0x6585, 0x6585, 0x1F15, 0x6587, 0x6587, 0x12E8, 0x658C, 0x658C, 0x146A,
+ 0x6590, 0x6590, 0x1449, 0x6591, 0x6591, 0x1330, 0x6597, 0x6597, 0x10FD,
+ 0x6599, 0x6599, 0x11CB, 0x659B, 0x659B, 0x0EB8, 0x659C, 0x659C, 0x1492,
+ 0x659F, 0x659F, 0x1B76, 0x65A1, 0x65A1, 0x16B9, 0x65A4, 0x65A4, 0x0FBB,
+ 0x65A5, 0x65A5, 0x1BE5, 0x65A7, 0x65A7, 0x1406, 0x65AB, 0x65AB, 0x1970,
+ 0x65AC, 0x65AC, 0x1BB0, 0x65AF, 0x65AF, 0x1493, 0x65B0, 0x65B0, 0x166E,
+ 0x65B7, 0x65B7, 0x1067, 0x65B9, 0x65B9, 0x1356, 0x65BC, 0x65BC, 0x1710,
+ 0x65BD, 0x65BD, 0x1647, 0x65C1, 0x65C1, 0x1357, 0x65C5, 0x65C5, 0x115F,
+ 0x65CB, 0x65CB, 0x1532, 0x65CC, 0x65CC, 0x1A40, 0x65CF, 0x65CF, 0x1AAC,
+ 0x65D2, 0x65D2, 0x11E2, 0x65D7, 0x65D7, 0x0FF1, 0x65E0, 0x65E0, 0x12D3,
+ 0x65E3, 0x65E3, 0x0FF2, 0x65E5, 0x65E5, 0x1940, 0x65E6, 0x65E6, 0x1068,
+ 0x65E8, 0x65E8, 0x1B28, 0x65E9, 0x65E9, 0x1A87, 0x65EC, 0x65EC, 0x160C,
+ 0x65ED, 0x65ED, 0x1857, 0x65F1, 0x65F1, 0x1DD6, 0x65F4, 0x65F4, 0x1841,
+ 0x65FA, 0x65FA, 0x17EF, 0x65FB, 0x65FC, 0x130B, 0x65FD, 0x65FD, 0x10E2,
+ 0x65FF, 0x65FF, 0x17B1, 0x6606, 0x6606, 0x0EC1, 0x6607, 0x6607, 0x1638,
+ 0x6609, 0x6609, 0x1358, 0x660A, 0x660A, 0x1E82, 0x660C, 0x660C, 0x1BBD,
+ 0x660E, 0x660E, 0x128F, 0x660F, 0x660F, 0x1EA5, 0x6610, 0x6610, 0x1429,
+ 0x6611, 0x6611, 0x0FC9, 0x6613, 0x6613, 0x173E, 0x6614, 0x6614, 0x151F,
+ 0x6615, 0x6615, 0x1F53, 0x661E, 0x661E, 0x13B6, 0x661F, 0x661F, 0x1568,
+ 0x6620, 0x6620, 0x1775, 0x6625, 0x6625, 0x1C84, 0x6627, 0x6627, 0x1268,
+ 0x6628, 0x6628, 0x1971, 0x662D, 0x662D, 0x1586, 0x662F, 0x662F, 0x1648,
+ 0x6630, 0x6630, 0x1DC5, 0x6631, 0x6631, 0x1858, 0x6634, 0x6634, 0x12C5,
+ 0x6636, 0x6636, 0x1BBE, 0x663A, 0x663A, 0x13B7, 0x663B, 0x663B, 0x16CC,
+ 0x6641, 0x6641, 0x1A88, 0x6642, 0x6642, 0x1649, 0x6643, 0x6644, 0x1EE7,
+ 0x6649, 0x6649, 0x1B49, 0x664B, 0x664B, 0x1B4A, 0x664F, 0x664F, 0x16B2,
+ 0x6659, 0x6659, 0x1AFC, 0x665B, 0x665B, 0x1E3A, 0x665D, 0x665D, 0x1AD9,
+ 0x665E, 0x665E, 0x1F6E, 0x665F, 0x665F, 0x1569, 0x6664, 0x6664, 0x17B2,
+ 0x6665, 0x6665, 0x1ED2, 0x6666, 0x6666, 0x1EFF, 0x6667, 0x6667, 0x1E83,
+ 0x6668, 0x6668, 0x166F, 0x6669, 0x6669, 0x1245, 0x666B, 0x666B, 0x1CE8,
+ 0x666E, 0x666E, 0x13C6, 0x666F, 0x666F, 0x0E5C, 0x6673, 0x6673, 0x1520,
+ 0x6674, 0x6674, 0x1C1E, 0x6676, 0x6676, 0x1A41, 0x6677, 0x6677, 0x0F96,
+ 0x6678, 0x6678, 0x1A42, 0x667A, 0x667A, 0x1B29, 0x6684, 0x6684, 0x1F37,
+ 0x6687, 0x6687, 0x0D77, 0x6688, 0x6688, 0x1F34, 0x6689, 0x6689, 0x1F40,
+ 0x668E, 0x668E, 0x1776, 0x6690, 0x6690, 0x1895, 0x6691, 0x6691, 0x1507,
+ 0x6696, 0x6696, 0x102C, 0x6697, 0x6697, 0x16C1, 0x6698, 0x6698, 0x16FE,
+ 0x669D, 0x669D, 0x1290, 0x66A0, 0x66A0, 0x0E9E, 0x66A2, 0x66A2, 0x1BBF,
+ 0x66AB, 0x66AB, 0x1980, 0x66AE, 0x66AE, 0x12A4, 0x66B2, 0x66B2, 0x1992,
+ 0x66B3, 0x66B3, 0x1E73, 0x66B4, 0x66B4, 0x1D94, 0x66B9, 0x66B9, 0x1558,
+ 0x66BB, 0x66BB, 0x0E5D, 0x66BE, 0x66BE, 0x10E3, 0x66C4, 0x66C4, 0x176F,
+ 0x66C6, 0x66C6, 0x116B, 0x66C7, 0x66C7, 0x107D, 0x66C9, 0x66C9, 0x1F16,
+ 0x66D6, 0x66D6, 0x16D5, 0x66D9, 0x66D9, 0x1508, 0x66DC, 0x66DC, 0x1808,
+ 0x66DD, 0x66DD, 0x1D95, 0x66E0, 0x66E0, 0x0F04, 0x66E6, 0x66E6, 0x1F6F,
+ 0x66F0, 0x66F0, 0x17ED, 0x66F2, 0x66F2, 0x0EB9, 0x66F3, 0x66F3, 0x1791,
+ 0x66F4, 0x66F4, 0x0E5E, 0x66F7, 0x66F7, 0x0DAE, 0x66F8, 0x66F8, 0x1509,
+ 0x66F9, 0x66F9, 0x1A8A, 0x66FA, 0x66FA, 0x1A89, 0x66FC, 0x66FC, 0x1246,
+ 0x66FE, 0x66FE, 0x1B15, 0x66FF, 0x66FF, 0x1C26, 0x6700, 0x6700, 0x1C60,
+ 0x6703, 0x6703, 0x1F00, 0x6708, 0x6708, 0x1889, 0x6709, 0x6709, 0x18B6,
+ 0x670B, 0x670B, 0x1438, 0x670D, 0x670D, 0x13D8, 0x6714, 0x6714, 0x14B6,
+ 0x6715, 0x6715, 0x1B77, 0x6717, 0x6717, 0x113D, 0x671B, 0x671B, 0x125C,
+ 0x671D, 0x671D, 0x1A8B, 0x671E, 0x671F, 0x0FF3, 0x6726, 0x6726, 0x12BE,
+ 0x6727, 0x6727, 0x11BA, 0x6728, 0x6728, 0x12B4, 0x672A, 0x672A, 0x12F9,
+ 0x672B, 0x672B, 0x1253, 0x672C, 0x672C, 0x13E3, 0x672D, 0x672D, 0x1BA8,
+ 0x672E, 0x672E, 0x1C88, 0x6731, 0x6731, 0x1ADA, 0x6734, 0x6734, 0x131B,
+ 0x6736, 0x6736, 0x1CDC, 0x673A, 0x673A, 0x0F90, 0x673D, 0x673D, 0x1F27,
+ 0x6746, 0x6746, 0x0D9D, 0x6749, 0x6749, 0x14C9, 0x674E, 0x674E, 0x120C,
+ 0x674F, 0x674F, 0x1E1B, 0x6750, 0x6750, 0x19AF, 0x6751, 0x6751, 0x1C51,
+ 0x6753, 0x6753, 0x1D9C, 0x6756, 0x6756, 0x1993, 0x675C, 0x675C, 0x10FE,
+ 0x675E, 0x675E, 0x0FF5, 0x675F, 0x675F, 0x15A3, 0x676D, 0x676D, 0x1DFD,
+ 0x676F, 0x676F, 0x136F, 0x6770, 0x6770, 0x0E1F, 0x6771, 0x6771, 0x10F1,
+ 0x6773, 0x6773, 0x12C6, 0x6775, 0x6775, 0x19C6, 0x6777, 0x6777, 0x1D38,
+ 0x677B, 0x677B, 0x1057, 0x677E, 0x677E, 0x15B3, 0x677F, 0x677F, 0x1D44,
+ 0x6787, 0x6787, 0x144A, 0x6789, 0x6789, 0x17F0, 0x678B, 0x678B, 0x1359,
+ 0x678F, 0x678F, 0x1032, 0x6790, 0x6790, 0x1521, 0x6793, 0x6793, 0x10FF,
+ 0x6795, 0x6795, 0x1CC9, 0x6797, 0x6797, 0x1227, 0x679A, 0x679A, 0x1269,
+ 0x679C, 0x679C, 0x0EDD, 0x679D, 0x679D, 0x1B2A, 0x67AF, 0x67AF, 0x0E9F,
+ 0x67B0, 0x67B0, 0x1D6B, 0x67B3, 0x67B3, 0x1B2B, 0x67B6, 0x67B7, 0x0D78,
+ 0x67B8, 0x67B8, 0x0F49, 0x67BE, 0x67BE, 0x164A, 0x67C4, 0x67C4, 0x13B8,
+ 0x67CF, 0x67CF, 0x137F, 0x67D0, 0x67D0, 0x12A5, 0x67D1, 0x67D1, 0x0DBE,
+ 0x67D2, 0x67D2, 0x1CC5, 0x67D3, 0x67D3, 0x1766, 0x67D4, 0x67D4, 0x18B7,
+ 0x67DA, 0x67DA, 0x18B8, 0x67DD, 0x67DD, 0x1CE9, 0x67E9, 0x67E9, 0x0F4A,
+ 0x67EC, 0x67EC, 0x0D9E, 0x67EF, 0x67EF, 0x0D7A, 0x67F0, 0x67F0, 0x103D,
+ 0x67F1, 0x67F1, 0x1ADB, 0x67F3, 0x67F3, 0x11E3, 0x67F4, 0x67F4, 0x164B,
+ 0x67F5, 0x67F5, 0x1BD7, 0x67F6, 0x67F6, 0x1494, 0x67FB, 0x67FB, 0x1495,
+ 0x67FE, 0x67FE, 0x1A43, 0x6812, 0x6812, 0x160D, 0x6813, 0x6813, 0x1A02,
+ 0x6816, 0x6816, 0x150A, 0x6817, 0x6817, 0x11FA, 0x6821, 0x6821, 0x0F25,
+ 0x6822, 0x6822, 0x1380, 0x682A, 0x682A, 0x1ADC, 0x682F, 0x682F, 0x1859,
+ 0x6838, 0x6838, 0x1E18, 0x6839, 0x6839, 0x0FBC, 0x683C, 0x683C, 0x0E2F,
+ 0x683D, 0x683D, 0x19B0, 0x6840, 0x6840, 0x0E20, 0x6841, 0x6841, 0x1DFE,
+ 0x6842, 0x6842, 0x0E81, 0x6843, 0x6843, 0x10BD, 0x6848, 0x6848, 0x16B3,
+ 0x684E, 0x684E, 0x1B6C, 0x6850, 0x6850, 0x10F2, 0x6851, 0x6851, 0x14E2,
+ 0x6853, 0x6853, 0x1ED3, 0x6854, 0x6854, 0x1022, 0x686D, 0x686D, 0x1B4B,
+ 0x6876, 0x6876, 0x1D1E, 0x687F, 0x687F, 0x0D9F, 0x6881, 0x6881, 0x114F,
+ 0x6885, 0x6885, 0x126A, 0x688F, 0x688F, 0x0EBA, 0x6893, 0x6893, 0x19B1,
+ 0x6894, 0x6894, 0x1CAE, 0x6897, 0x6897, 0x0E5F, 0x689D, 0x689D, 0x1A8C,
+ 0x689F, 0x689F, 0x1F17, 0x68A1, 0x68A1, 0x17DE, 0x68A2, 0x68A2, 0x1C34,
+ 0x68A7, 0x68A7, 0x17B3, 0x68A8, 0x68A8, 0x120D, 0x68AD, 0x68AD, 0x1496,
+ 0x68AF, 0x68AF, 0x1A6F, 0x68B0, 0x68B0, 0x0E82, 0x68B1, 0x68B1, 0x0EC2,
+ 0x68B3, 0x68B3, 0x1587, 0x68B5, 0x68B5, 0x1393, 0x68B6, 0x68B6, 0x12FA,
+ 0x68C4, 0x68C4, 0x0FF7, 0x68C5, 0x68C5, 0x13B9, 0x68C9, 0x68C9, 0x1282,
+ 0x68CB, 0x68CB, 0x0FF6, 0x68CD, 0x68CD, 0x0EC3, 0x68D2, 0x68D2, 0x13EB,
+ 0x68D5, 0x68D5, 0x1ABA, 0x68D7, 0x68D7, 0x1A8D, 0x68D8, 0x68D8, 0x0FB4,
+ 0x68DA, 0x68DA, 0x1439, 0x68DF, 0x68DF, 0x10F3, 0x68E0, 0x68E0, 0x1095,
+ 0x68E7, 0x68E7, 0x197B, 0x68E8, 0x68E8, 0x0E83, 0x68EE, 0x68EE, 0x14CA,
+ 0x68F2, 0x68F2, 0x150B, 0x68F9, 0x68F9, 0x10BE, 0x68FA, 0x68FA, 0x0EEF,
+ 0x6900, 0x6900, 0x17DF, 0x6905, 0x6905, 0x1901, 0x690D, 0x690D, 0x165D,
+ 0x690E, 0x690E, 0x1C64, 0x6912, 0x6912, 0x1C35, 0x6927, 0x6927, 0x1291,
+ 0x6930, 0x6930, 0x16EC, 0x693D, 0x693D, 0x174C, 0x693F, 0x693F, 0x1C85,
+ 0x694A, 0x694A, 0x16FF, 0x6953, 0x6953, 0x1DA8, 0x6954, 0x6954, 0x154C,
+ 0x6955, 0x6955, 0x1CDD, 0x6957, 0x6957, 0x0E17, 0x6959, 0x6959, 0x12D4,
+ 0x695A, 0x695A, 0x1C36, 0x695E, 0x695E, 0x1200, 0x6960, 0x6960, 0x1033,
+ 0x6961, 0x6962, 0x18B9, 0x6963, 0x6963, 0x12FB, 0x6968, 0x6968, 0x1A44,
+ 0x696B, 0x696B, 0x1B10, 0x696D, 0x696D, 0x172C, 0x696E, 0x696E, 0x19C7,
+ 0x696F, 0x696F, 0x160E, 0x6975, 0x6975, 0x0FB5, 0x6977, 0x6977, 0x1E0D,
+ 0x6978, 0x6978, 0x1C65, 0x6979, 0x6979, 0x1777, 0x6995, 0x6995, 0x1827,
+ 0x699B, 0x699B, 0x1B4C, 0x699C, 0x699C, 0x135A, 0x69A5, 0x69A5, 0x1EE9,
+ 0x69A7, 0x69A7, 0x144B, 0x69AE, 0x69AE, 0x1778, 0x69B4, 0x69B4, 0x11E4,
+ 0x69BB, 0x69BB, 0x1D02, 0x69C1, 0x69C1, 0x0EA0, 0x69C3, 0x69C3, 0x1331,
+ 0x69CB, 0x69CB, 0x0F4B, 0x69CC, 0x69CC, 0x1D24, 0x69CD, 0x69CD, 0x1BC0,
+ 0x69D0, 0x69D0, 0x0F16, 0x69E8, 0x69E8, 0x0EE8, 0x69EA, 0x69EA, 0x0DF1,
+ 0x69FB, 0x69FB, 0x0F9E, 0x69FD, 0x69FD, 0x1A8E, 0x69FF, 0x69FF, 0x0FBD,
+ 0x6A02, 0x6A02, 0x16A8, 0x6A0A, 0x6A0A, 0x1385, 0x6A11, 0x6A11, 0x1150,
+ 0x6A13, 0x6A13, 0x11D7, 0x6A17, 0x6A17, 0x19C8, 0x6A19, 0x6A19, 0x1D9D,
+ 0x6A1E, 0x6A1E, 0x1C66, 0x6A1F, 0x6A1F, 0x1994, 0x6A21, 0x6A21, 0x12A6,
+ 0x6A23, 0x6A23, 0x1700, 0x6A35, 0x6A35, 0x1C37, 0x6A38, 0x6A38, 0x131C,
+ 0x6A39, 0x6A39, 0x15D1, 0x6A3A, 0x6A3A, 0x1EBA, 0x6A3D, 0x6A3D, 0x1AFD,
+ 0x6A44, 0x6A44, 0x0DBF, 0x6A48, 0x6A48, 0x1809, 0x6A4B, 0x6A4B, 0x0F26,
+ 0x6A52, 0x6A52, 0x185F, 0x6A53, 0x6A53, 0x160F, 0x6A58, 0x6A58, 0x0FAF,
+ 0x6A59, 0x6A59, 0x110E, 0x6A5F, 0x6A5F, 0x0FF8, 0x6A61, 0x6A61, 0x14E3,
+ 0x6A6B, 0x6A6B, 0x1F0F, 0x6A80, 0x6A80, 0x1069, 0x6A84, 0x6A84, 0x0E30,
+ 0x6A89, 0x6A89, 0x1A45, 0x6A8D, 0x6A8D, 0x171B, 0x6A8E, 0x6A8E, 0x0FCA,
+ 0x6A97, 0x6A97, 0x13A0, 0x6A9C, 0x6A9C, 0x1F01, 0x6AA2, 0x6AA2, 0x0E24,
+ 0x6AA3, 0x6AA3, 0x1995, 0x6AB3, 0x6AB3, 0x146B, 0x6ABB, 0x6ABB, 0x1DE8,
+ 0x6AC2, 0x6AC2, 0x10BF, 0x6AC3, 0x6AC3, 0x0F91, 0x6AD3, 0x6AD3, 0x11A2,
+ 0x6ADA, 0x6ADA, 0x1160, 0x6ADB, 0x6ADB, 0x1B0F, 0x6AF6, 0x6AF6, 0x1E2C,
+ 0x6AFB, 0x6AFB, 0x16E2, 0x6B04, 0x6B04, 0x1127, 0x6B0A, 0x6B0A, 0x0F88,
+ 0x6B0C, 0x6B0C, 0x1996, 0x6B12, 0x6B12, 0x1128, 0x6B16, 0x6B16, 0x1132,
+ 0x6B20, 0x6B20, 0x1F5B, 0x6B21, 0x6B21, 0x1B88, 0x6B23, 0x6B23, 0x1F54,
+ 0x6B32, 0x6B32, 0x1819, 0x6B3A, 0x6B3A, 0x0FF9, 0x6B3D, 0x6B3D, 0x1F5C,
+ 0x6B3E, 0x6B3E, 0x0EF0, 0x6B46, 0x6B46, 0x1F5D, 0x6B47, 0x6B47, 0x1E2F,
+ 0x6B4C, 0x6B4C, 0x0D7B, 0x6B4E, 0x6B4E, 0x1CF5, 0x6B50, 0x6B50, 0x0F4C,
+ 0x6B5F, 0x6B5F, 0x1731, 0x6B61, 0x6B61, 0x1ED1, 0x6B62, 0x6B62, 0x1B2C,
+ 0x6B63, 0x6B63, 0x1A46, 0x6B64, 0x6B64, 0x1B89, 0x6B65, 0x6B65, 0x13C7,
+ 0x6B66, 0x6B66, 0x12D5, 0x6B6A, 0x6B6A, 0x17F5, 0x6B72, 0x6B72, 0x1576,
+ 0x6B77, 0x6B77, 0x116C, 0x6B78, 0x6B78, 0x0F97, 0x6B7B, 0x6B7B, 0x1497,
+ 0x6B7F, 0x6B7F, 0x12BB, 0x6B83, 0x6B83, 0x16CD, 0x6B84, 0x6B84, 0x1B4D,
+ 0x6B86, 0x6B86, 0x1D0C, 0x6B89, 0x6B89, 0x1610, 0x6B8A, 0x6B8A, 0x15D2,
+ 0x6B96, 0x6B96, 0x165E, 0x6B98, 0x6B98, 0x197C, 0x6B9E, 0x6B9E, 0x1860,
+ 0x6BAE, 0x6BAE, 0x1185, 0x6BAF, 0x6BAF, 0x146C, 0x6BB2, 0x6BB2, 0x1559,
+ 0x6BB5, 0x6BB5, 0x106A, 0x6BB7, 0x6BB7, 0x18E8, 0x6BBA, 0x6BBA, 0x14C5,
+ 0x6BBC, 0x6BBC, 0x0D8E, 0x6BBF, 0x6BBF, 0x1A03, 0x6BC1, 0x6BC1, 0x1F3C,
+ 0x6BC5, 0x6BC5, 0x1902, 0x6BC6, 0x6BC6, 0x0F4D, 0x6BCB, 0x6BCB, 0x12D6,
+ 0x6BCD, 0x6BCD, 0x12A7, 0x6BCF, 0x6BCF, 0x126B, 0x6BD2, 0x6BD2, 0x10D5,
+ 0x6BD3, 0x6BD3, 0x18D4, 0x6BD4, 0x6BD4, 0x144C, 0x6BD6, 0x6BD8, 0x144D,
+ 0x6BDB, 0x6BDB, 0x12A8, 0x6BEB, 0x6BEB, 0x1E84, 0x6BEC, 0x6BEC, 0x0F4E,
+ 0x6C08, 0x6C08, 0x1A04, 0x6C0F, 0x6C0F, 0x168E, 0x6C11, 0x6C11, 0x130D,
+ 0x6C13, 0x6C13, 0x1278, 0x6C23, 0x6C23, 0x0FFA, 0x6C34, 0x6C34, 0x15D3,
+ 0x6C37, 0x6C37, 0x1476, 0x6C38, 0x6C38, 0x1779, 0x6C3E, 0x6C3E, 0x1394,
+ 0x6C40, 0x6C40, 0x1A47, 0x6C41, 0x6C41, 0x1B11, 0x6C42, 0x6C42, 0x0F4F,
+ 0x6C4E, 0x6C4E, 0x1395, 0x6C50, 0x6C50, 0x1522, 0x6C55, 0x6C55, 0x14BB,
+ 0x6C57, 0x6C57, 0x1DD7, 0x6C5A, 0x6C5A, 0x17B4, 0x6C5D, 0x6C5D, 0x1732,
+ 0x6C5E, 0x6C5E, 0x1EAF, 0x6C5F, 0x6C5F, 0x0DD9, 0x6C60, 0x6C60, 0x1B2D,
+ 0x6C68, 0x6C68, 0x0EC8, 0x6C6A, 0x6C6A, 0x17F1, 0x6C6D, 0x6C6D, 0x1792,
+ 0x6C70, 0x6C70, 0x1D0D, 0x6C72, 0x6C72, 0x0FD7, 0x6C76, 0x6C76, 0x12E9,
+ 0x6C7A, 0x6C7A, 0x0E41, 0x6C7D, 0x6C7D, 0x0FFB, 0x6C7E, 0x6C7E, 0x142A,
+ 0x6C81, 0x6C81, 0x1685, 0x6C82, 0x6C82, 0x0FFC, 0x6C83, 0x6C83, 0x17BF,
+ 0x6C85, 0x6C85, 0x187B, 0x6C86, 0x6C86, 0x1DFF, 0x6C87, 0x6C87, 0x174D,
+ 0x6C88, 0x6C88, 0x1CCA, 0x6C8C, 0x6C8C, 0x10E4, 0x6C90, 0x6C90, 0x12B5,
+ 0x6C92, 0x6C92, 0x12BC, 0x6C93, 0x6C93, 0x108A, 0x6C94, 0x6C94, 0x1283,
+ 0x6C95, 0x6C95, 0x12F1, 0x6C96, 0x6C96, 0x1C8C, 0x6C99, 0x6C99, 0x1498,
+ 0x6C9A, 0x6C9A, 0x1B2E, 0x6C9B, 0x6C9B, 0x1D52, 0x6CAB, 0x6CAB, 0x1254,
+ 0x6CAE, 0x6CAE, 0x19C9, 0x6CB3, 0x6CB3, 0x1DC6, 0x6CB8, 0x6CB8, 0x1450,
+ 0x6CB9, 0x6CB9, 0x18BB, 0x6CBB, 0x6CBB, 0x1CAF, 0x6CBC, 0x6CBC, 0x1588,
+ 0x6CBD, 0x6CBD, 0x0EA1, 0x6CBE, 0x6CBE, 0x1C0B, 0x6CBF, 0x6CBF, 0x174E,
+ 0x6CC1, 0x6CC1, 0x1EEA, 0x6CC2, 0x6CC2, 0x1E60, 0x6CC4, 0x6CC4, 0x154D,
+ 0x6CC9, 0x6CC9, 0x1BF2, 0x6CCA, 0x6CCA, 0x131D, 0x6CCC, 0x6CCC, 0x1DB7,
+ 0x6CD3, 0x6CD3, 0x1EB0, 0x6CD5, 0x6CD5, 0x139A, 0x6CD7, 0x6CD7, 0x1499,
+ 0x6CDB, 0x6CDB, 0x1396, 0x6CE1, 0x6CE1, 0x1D84, 0x6CE2, 0x6CE2, 0x1D39,
+ 0x6CE3, 0x6CE3, 0x18F4, 0x6CE5, 0x6CE5, 0x105B, 0x6CE8, 0x6CE8, 0x1ADD,
+ 0x6CEB, 0x6CEB, 0x1E3B, 0x6CEE, 0x6CEE, 0x1332, 0x6CEF, 0x6CEF, 0x130E,
+ 0x6CF0, 0x6CF0, 0x1D0E, 0x6CF3, 0x6CF3, 0x177A, 0x6D0B, 0x6D0B, 0x1701,
+ 0x6D0C, 0x6D0C, 0x1180, 0x6D11, 0x6D11, 0x13C8, 0x6D17, 0x6D17, 0x1577,
+ 0x6D19, 0x6D19, 0x15D4, 0x6D1B, 0x6D1B, 0x111E, 0x6D1E, 0x6D1E, 0x10F4,
+ 0x6D25, 0x6D25, 0x1B4E, 0x6D27, 0x6D27, 0x18BC, 0x6D29, 0x6D29, 0x154E,
+ 0x6D2A, 0x6D2A, 0x1EB1, 0x6D32, 0x6D32, 0x1ADE, 0x6D35, 0x6D35, 0x1611,
+ 0x6D36, 0x6D36, 0x1F50, 0x6D38, 0x6D38, 0x0F05, 0x6D39, 0x6D39, 0x187C,
+ 0x6D3B, 0x6D3B, 0x1EDB, 0x6D3D, 0x6D3D, 0x1F60, 0x6D3E, 0x6D3E, 0x1D3A,
+ 0x6D41, 0x6D41, 0x11E5, 0x6D59, 0x6D59, 0x1A1F, 0x6D5A, 0x6D5A, 0x1AFE,
+ 0x6D5C, 0x6D5C, 0x146D, 0x6D63, 0x6D63, 0x17E0, 0x6D66, 0x6D66, 0x1D85,
+ 0x6D69, 0x6D69, 0x1E85, 0x6D6A, 0x6D6A, 0x113E, 0x6D6C, 0x6D6C, 0x120E,
+ 0x6D6E, 0x6D6E, 0x1407, 0x6D74, 0x6D74, 0x181A, 0x6D77, 0x6D77, 0x1E0E,
+ 0x6D78, 0x6D78, 0x1CCB, 0x6D79, 0x6D79, 0x1E54, 0x6D7F, 0x6D7F, 0x1D53,
+ 0x6D85, 0x6D85, 0x1762, 0x6D87, 0x6D87, 0x0E60, 0x6D88, 0x6D88, 0x1589,
+ 0x6D89, 0x6D89, 0x1560, 0x6D8C, 0x6D8C, 0x1828, 0x6D8D, 0x6D8D, 0x1F18,
+ 0x6D8E, 0x6D8E, 0x174F, 0x6D91, 0x6D91, 0x15A4, 0x6D93, 0x6D93, 0x1750,
+ 0x6D95, 0x6D95, 0x1C27, 0x6DAF, 0x6DAF, 0x16D6, 0x6DB2, 0x6DB2, 0x16DE,
+ 0x6DB5, 0x6DB5, 0x1DE9, 0x6DC0, 0x6DC0, 0x1A48, 0x6DC3, 0x6DC3, 0x0F89,
+ 0x6DC4, 0x6DC4, 0x1CB0, 0x6DC5, 0x6DC5, 0x1523, 0x6DC6, 0x6DC6, 0x1F19,
+ 0x6DC7, 0x6DC7, 0x0FFD, 0x6DCB, 0x6DCB, 0x1228, 0x6DCF, 0x6DCF, 0x1E86,
+ 0x6DD1, 0x6DD1, 0x1601, 0x6DD8, 0x6DD8, 0x10C0, 0x6DD9, 0x6DD9, 0x1ABB,
+ 0x6DDA, 0x6DDA, 0x11D8, 0x6DDE, 0x6DDE, 0x15B4, 0x6DE1, 0x6DE1, 0x107E,
+ 0x6DE8, 0x6DE8, 0x1A49, 0x6DEA, 0x6DEA, 0x11F5, 0x6DEB, 0x6DEB, 0x18EE,
+ 0x6DEE, 0x6DEE, 0x1F02, 0x6DF1, 0x6DF1, 0x1686, 0x6DF3, 0x6DF3, 0x1612,
+ 0x6DF5, 0x6DF5, 0x1751, 0x6DF7, 0x6DF7, 0x1EA6, 0x6DF8, 0x6DF8, 0x1C1F,
+ 0x6DF9, 0x6DF9, 0x172A, 0x6DFA, 0x6DFA, 0x1BF3, 0x6DFB, 0x6DFB, 0x1C0C,
+ 0x6E17, 0x6E17, 0x14CB, 0x6E19, 0x6E19, 0x1ED4, 0x6E1A, 0x6E1A, 0x19CA,
+ 0x6E1B, 0x6E1B, 0x0DC0, 0x6E1F, 0x6E1F, 0x1A4A, 0x6E20, 0x6E20, 0x0E09,
+ 0x6E21, 0x6E21, 0x10C1, 0x6E23, 0x6E23, 0x149A, 0x6E24, 0x6E24, 0x1345,
+ 0x6E25, 0x6E25, 0x16A9, 0x6E26, 0x6E26, 0x17D3, 0x6E2B, 0x6E2B, 0x154F,
+ 0x6E2C, 0x6E2C, 0x1CA6, 0x6E2D, 0x6E2D, 0x1896, 0x6E2F, 0x6E2F, 0x1E00,
+ 0x6E32, 0x6E32, 0x1533, 0x6E34, 0x6E34, 0x0DAF, 0x6E36, 0x6E36, 0x177B,
+ 0x6E38, 0x6E38, 0x18BD, 0x6E3A, 0x6E3A, 0x12C7, 0x6E3C, 0x6E3C, 0x12FC,
+ 0x6E3D, 0x6E3D, 0x19B2, 0x6E3E, 0x6E3E, 0x1EA7, 0x6E43, 0x6E43, 0x1370,
+ 0x6E44, 0x6E44, 0x12FD, 0x6E4A, 0x6E4A, 0x1ADF, 0x6E4D, 0x6E4D, 0x106B,
+ 0x6E56, 0x6E56, 0x1E87, 0x6E58, 0x6E58, 0x14E4, 0x6E5B, 0x6E5B, 0x107F,
+ 0x6E5C, 0x6E5C, 0x165F, 0x6E5E, 0x6E5E, 0x1A4B, 0x6E5F, 0x6E5F, 0x1EEB,
+ 0x6E67, 0x6E67, 0x1829, 0x6E6B, 0x6E6B, 0x1C67, 0x6E6E, 0x6E6E, 0x1935,
+ 0x6E6F, 0x6E6F, 0x1D05, 0x6E72, 0x6E72, 0x187D, 0x6E73, 0x6E73, 0x1034,
+ 0x6E7A, 0x6E7A, 0x13C9, 0x6E90, 0x6E90, 0x187E, 0x6E96, 0x6E96, 0x1AFF,
+ 0x6E9C, 0x6E9C, 0x11E6, 0x6E9D, 0x6E9D, 0x0F50, 0x6E9F, 0x6E9F, 0x1292,
+ 0x6EA2, 0x6EA2, 0x1941, 0x6EA5, 0x6EA5, 0x1408, 0x6EAA, 0x6EAA, 0x0E84,
+ 0x6EAB, 0x6EAB, 0x17C3, 0x6EAF, 0x6EAF, 0x158A, 0x6EB1, 0x6EB1, 0x1B4F,
+ 0x6EB6, 0x6EB6, 0x182A, 0x6EBA, 0x6EBA, 0x105D, 0x6EC2, 0x6EC2, 0x135B,
+ 0x6EC4, 0x6EC4, 0x1BC1, 0x6EC5, 0x6EC5, 0x128A, 0x6EC9, 0x6EC9, 0x1EEC,
+ 0x6ECB, 0x6ECB, 0x195D, 0x6ECC, 0x6ECC, 0x1BE6, 0x6ECE, 0x6ECE, 0x1E61,
+ 0x6ED1, 0x6ED1, 0x1EDC, 0x6ED3, 0x6ED3, 0x19B3, 0x6ED4, 0x6ED4, 0x10C2,
+ 0x6EEF, 0x6EEF, 0x1C28, 0x6EF4, 0x6EF4, 0x19E1, 0x6EF8, 0x6EF8, 0x1E88,
+ 0x6EFE, 0x6EFE, 0x0EC4, 0x6EFF, 0x6EFF, 0x1247, 0x6F01, 0x6F01, 0x1711,
+ 0x6F02, 0x6F02, 0x1D9E, 0x6F06, 0x6F06, 0x1CC6, 0x6F0F, 0x6F0F, 0x11D9,
+ 0x6F11, 0x6F11, 0x0DF2, 0x6F14, 0x6F14, 0x1752, 0x6F15, 0x6F15, 0x1A8F,
+ 0x6F20, 0x6F20, 0x123A, 0x6F22, 0x6F22, 0x1DD8, 0x6F23, 0x6F23, 0x1174,
+ 0x6F2B, 0x6F2B, 0x1248, 0x6F2C, 0x6F2C, 0x1B2F, 0x6F31, 0x6F31, 0x15D5,
+ 0x6F32, 0x6F32, 0x1BC2, 0x6F38, 0x6F38, 0x1A27, 0x6F3F, 0x6F3F, 0x1997,
+ 0x6F41, 0x6F41, 0x177C, 0x6F51, 0x6F51, 0x1346, 0x6F54, 0x6F54, 0x0E42,
+ 0x6F57, 0x6F57, 0x1B79, 0x6F58, 0x6F58, 0x1333, 0x6F5A, 0x6F5A, 0x1602,
+ 0x6F5B, 0x6F5B, 0x1981, 0x6F5E, 0x6F5E, 0x11A3, 0x6F5F, 0x6F5F, 0x1524,
+ 0x6F62, 0x6F62, 0x1EED, 0x6F64, 0x6F64, 0x18DA, 0x6F6D, 0x6F6D, 0x1080,
+ 0x6F6E, 0x6F6E, 0x1A90, 0x6F70, 0x6F70, 0x0F92, 0x6F7A, 0x6F7A, 0x197D,
+ 0x6F7C, 0x6F7C, 0x10F5, 0x6F7D, 0x6F7D, 0x13CA, 0x6F7E, 0x6F7E, 0x121F,
+ 0x6F81, 0x6F81, 0x14D0, 0x6F84, 0x6F84, 0x1B80, 0x6F88, 0x6F88, 0x1C04,
+ 0x6F8D, 0x6F8D, 0x1AE0, 0x6F8E, 0x6F8E, 0x1D5A, 0x6F90, 0x6F90, 0x1861,
+ 0x6F94, 0x6F94, 0x1E89, 0x6F97, 0x6F97, 0x0DA0, 0x6FA3, 0x6FA3, 0x1DD9,
+ 0x6FA4, 0x6FA4, 0x1D16, 0x6FA7, 0x6FA7, 0x119B, 0x6FAE, 0x6FAE, 0x1F03,
+ 0x6FAF, 0x6FAF, 0x1B97, 0x6FB1, 0x6FB1, 0x1A05, 0x6FB3, 0x6FB3, 0x17B5,
+ 0x6FB9, 0x6FB9, 0x1081, 0x6FBE, 0x6FBE, 0x1075, 0x6FC0, 0x6FC0, 0x0E31,
+ 0x6FC1, 0x6FC1, 0x1CEA, 0x6FC2, 0x6FC2, 0x1186, 0x6FC3, 0x6FC3, 0x104F,
+ 0x6FCA, 0x6FCA, 0x1793, 0x6FD5, 0x6FD5, 0x162D, 0x6FDA, 0x6FDA, 0x177D,
+ 0x6FDF, 0x6FDF, 0x1A70, 0x6FE0, 0x6FE0, 0x1E8A, 0x6FE1, 0x6FE1, 0x18BE,
+ 0x6FE4, 0x6FE4, 0x10C3, 0x6FE9, 0x6FE9, 0x1E8B, 0x6FEB, 0x6FEB, 0x1133,
+ 0x6FEC, 0x6FEC, 0x1B00, 0x6FEF, 0x6FEF, 0x1CEB, 0x6FF1, 0x6FF1, 0x146E,
+ 0x6FFE, 0x6FFE, 0x1161, 0x7001, 0x7001, 0x1702, 0x7005, 0x7005, 0x1E62,
+ 0x7006, 0x7006, 0x10D6, 0x7009, 0x7009, 0x149B, 0x700B, 0x700B, 0x1687,
+ 0x700F, 0x700F, 0x11E7, 0x7011, 0x7011, 0x1D96, 0x7015, 0x7015, 0x146F,
+ 0x7018, 0x7018, 0x11A4, 0x701A, 0x701A, 0x1DDA, 0x701B, 0x701B, 0x177E,
+ 0x701C, 0x701C, 0x18E2, 0x701D, 0x701D, 0x116D, 0x701E, 0x701E, 0x1A4C,
+ 0x701F, 0x701F, 0x158B, 0x7023, 0x7023, 0x1E0F, 0x7027, 0x7027, 0x11BB,
+ 0x7028, 0x7028, 0x11C0, 0x702F, 0x702F, 0x177F, 0x7037, 0x7037, 0x1925,
+ 0x703E, 0x703E, 0x1129, 0x704C, 0x704C, 0x0EF1, 0x7050, 0x7050, 0x1E63,
+ 0x7051, 0x7051, 0x15BA, 0x7058, 0x7058, 0x1CF6, 0x705D, 0x705D, 0x1E8C,
+ 0x7063, 0x7063, 0x1249, 0x706B, 0x706B, 0x1EBB, 0x7070, 0x7070, 0x1F04,
+ 0x7078, 0x7078, 0x0F51, 0x707C, 0x707C, 0x1972, 0x707D, 0x707D, 0x19B4,
+ 0x7085, 0x7085, 0x0E61, 0x708A, 0x708A, 0x1C99, 0x708E, 0x708E, 0x1767,
+ 0x7092, 0x7092, 0x1C38, 0x7098, 0x7098, 0x1F55, 0x7099, 0x7099, 0x195E,
+ 0x709A, 0x709A, 0x0F06, 0x70A1, 0x70A1, 0x1A4D, 0x70A4, 0x70A4, 0x158C,
+ 0x70AB, 0x70AB, 0x1E3C, 0x70AC, 0x70AC, 0x0E0A, 0x70AD, 0x70AD, 0x1CF7,
+ 0x70AF, 0x70AF, 0x1E64, 0x70B3, 0x70B3, 0x13BA, 0x70B7, 0x70B7, 0x1AE1,
+ 0x70B8, 0x70B8, 0x1973, 0x70B9, 0x70B9, 0x1A28, 0x70C8, 0x70C8, 0x1181,
+ 0x70CB, 0x70CB, 0x1F47, 0x70CF, 0x70CF, 0x17B6, 0x70D8, 0x70D8, 0x1EB2,
+ 0x70D9, 0x70D9, 0x111F, 0x70DD, 0x70DD, 0x1B17, 0x70DF, 0x70DF, 0x1753,
+ 0x70F1, 0x70F1, 0x0E62, 0x70F9, 0x70F9, 0x1D5B, 0x70FD, 0x70FD, 0x13EC,
+ 0x7104, 0x7104, 0x1F2F, 0x7109, 0x7109, 0x1720, 0x710C, 0x710C, 0x1B01,
+ 0x7119, 0x7119, 0x1371, 0x711A, 0x711A, 0x142B, 0x711E, 0x711E, 0x10E5,
+ 0x7121, 0x7121, 0x12D7, 0x7126, 0x7126, 0x1C39, 0x7130, 0x7130, 0x1768,
+ 0x7136, 0x7136, 0x1754, 0x7147, 0x7147, 0x1F41, 0x7149, 0x7149, 0x1175,
+ 0x714A, 0x714A, 0x1F38, 0x714C, 0x714C, 0x1EEE, 0x714E, 0x714E, 0x1A06,
+ 0x7150, 0x7150, 0x1780, 0x7156, 0x7156, 0x102D, 0x7159, 0x7159, 0x1755,
+ 0x715C, 0x715C, 0x185A, 0x715E, 0x715E, 0x14C6, 0x7164, 0x7164, 0x126C,
+ 0x7165, 0x7165, 0x1ED5, 0x7166, 0x7166, 0x1F28, 0x7167, 0x7167, 0x1A91,
+ 0x7169, 0x7169, 0x1386, 0x716C, 0x716C, 0x1703, 0x716E, 0x716E, 0x195F,
+ 0x717D, 0x717D, 0x1534, 0x7184, 0x7184, 0x1660, 0x7189, 0x7189, 0x1862,
+ 0x718A, 0x718A, 0x186D, 0x718F, 0x718F, 0x1F30, 0x7192, 0x7192, 0x1E65,
+ 0x7194, 0x7194, 0x182B, 0x7199, 0x7199, 0x1F70, 0x719F, 0x719F, 0x1603,
+ 0x71A2, 0x71A2, 0x13ED, 0x71AC, 0x71AC, 0x17B7, 0x71B1, 0x71B1, 0x1763,
+ 0x71B9, 0x71BA, 0x1F71, 0x71BE, 0x71BE, 0x1CB1, 0x71C1, 0x71C1, 0x1770,
+ 0x71C3, 0x71C3, 0x1756, 0x71C8, 0x71C8, 0x110F, 0x71C9, 0x71C9, 0x10E6,
+ 0x71CE, 0x71CE, 0x11CC, 0x71D0, 0x71D0, 0x1220, 0x71D2, 0x71D2, 0x158D,
+ 0x71D4, 0x71D4, 0x1387, 0x71D5, 0x71D5, 0x1757, 0x71DF, 0x71DF, 0x1781,
+ 0x71E5, 0x71E5, 0x1A92, 0x71E6, 0x71E6, 0x1B98, 0x71E7, 0x71E7, 0x15D6,
+ 0x71ED, 0x71ED, 0x1C4B, 0x71EE, 0x71EE, 0x1561, 0x71FB, 0x71FB, 0x1F31,
+ 0x71FC, 0x71FC, 0x1670, 0x71FE, 0x71FE, 0x10C4, 0x71FF, 0x71FF, 0x180A,
+ 0x7200, 0x7200, 0x1E33, 0x7206, 0x7206, 0x1D97, 0x7210, 0x7210, 0x11A5,
+ 0x721B, 0x721B, 0x112A, 0x722A, 0x722A, 0x1A93, 0x722C, 0x722C, 0x1D3B,
+ 0x722D, 0x722D, 0x19BB, 0x7230, 0x7230, 0x187F, 0x7232, 0x7232, 0x1897,
+ 0x7235, 0x7235, 0x1974, 0x7236, 0x7236, 0x1409, 0x723A, 0x723A, 0x16ED,
+ 0x723B, 0x723B, 0x1F1A, 0x723D, 0x723D, 0x14E5, 0x723E, 0x723E, 0x1916,
+ 0x7240, 0x7240, 0x14E6, 0x7246, 0x7246, 0x1998, 0x7247, 0x7247, 0x1D61,
+ 0x7248, 0x7248, 0x1D45, 0x724C, 0x724C, 0x1D54, 0x7252, 0x7252, 0x1C17,
+ 0x7258, 0x7258, 0x10D7, 0x7259, 0x7259, 0x1696, 0x725B, 0x725B, 0x1842,
+ 0x725D, 0x725D, 0x1470, 0x725F, 0x725F, 0x12A9, 0x7261, 0x7261, 0x12AA,
+ 0x7262, 0x7262, 0x11C1, 0x7267, 0x7267, 0x12B6, 0x7269, 0x7269, 0x12F2,
+ 0x7272, 0x7272, 0x14F9, 0x7279, 0x7279, 0x1D30, 0x727D, 0x727D, 0x0E36,
+ 0x7280, 0x7280, 0x150C, 0x7281, 0x7281, 0x120F, 0x72A2, 0x72A2, 0x10D8,
+ 0x72A7, 0x72A7, 0x1F73, 0x72AC, 0x72AC, 0x0E37, 0x72AF, 0x72AF, 0x1397,
+ 0x72C0, 0x72C0, 0x14E7, 0x72C2, 0x72C2, 0x0F07, 0x72C4, 0x72C4, 0x19E2,
+ 0x72CE, 0x72CE, 0x16C7, 0x72D0, 0x72D0, 0x1E8D, 0x72D7, 0x72D7, 0x0F52,
+ 0x72D9, 0x72D9, 0x19CB, 0x72E1, 0x72E1, 0x0F27, 0x72E9, 0x72E9, 0x15D7,
+ 0x72F8, 0x72F8, 0x1210, 0x72F9, 0x72F9, 0x1E55, 0x72FC, 0x72FC, 0x113F,
+ 0x72FD, 0x72FD, 0x1D55, 0x730A, 0x730A, 0x1794, 0x7316, 0x7316, 0x1BC3,
+ 0x731B, 0x731B, 0x1279, 0x731C, 0x731C, 0x164C, 0x731D, 0x731D, 0x1AB4,
+ 0x7325, 0x7325, 0x17FA, 0x7329, 0x7329, 0x156A, 0x732A, 0x732A, 0x19CC,
+ 0x732B, 0x732B, 0x12C8, 0x7336, 0x7337, 0x18BF, 0x733E, 0x733E, 0x1EDD,
+ 0x733F, 0x733F, 0x1880, 0x7344, 0x7344, 0x17C0, 0x7345, 0x7345, 0x149C,
+ 0x7350, 0x7350, 0x1999, 0x7352, 0x7352, 0x17B8, 0x7357, 0x7357, 0x0F8C,
+ 0x7368, 0x7368, 0x10D9, 0x736A, 0x736A, 0x1F05, 0x7370, 0x7370, 0x1782,
+ 0x7372, 0x7372, 0x1F0D, 0x7375, 0x7375, 0x1188, 0x7378, 0x7378, 0x15D8,
+ 0x737A, 0x737A, 0x1076, 0x737B, 0x737B, 0x1E2D, 0x7384, 0x7384, 0x1E3D,
+ 0x7386, 0x7386, 0x1960, 0x7387, 0x7387, 0x15B0, 0x7389, 0x7389, 0x17C1,
+ 0x738B, 0x738B, 0x17F2, 0x738E, 0x738E, 0x1A4E, 0x7394, 0x7394, 0x1BF4,
+ 0x7396, 0x7396, 0x0F53, 0x7397, 0x7397, 0x1843, 0x7398, 0x7398, 0x0FFE,
+ 0x739F, 0x739F, 0x130F, 0x73A7, 0x73A7, 0x18DB, 0x73A9, 0x73A9, 0x17E1,
+ 0x73AD, 0x73AD, 0x1471, 0x73B2, 0x73B2, 0x118F, 0x73B3, 0x73B3, 0x10A4,
+ 0x73B9, 0x73B9, 0x1E3E, 0x73C0, 0x73C0, 0x131E, 0x73C2, 0x73C2, 0x0D7C,
+ 0x73C9, 0x73C9, 0x1310, 0x73CA, 0x73CA, 0x14BC, 0x73CC, 0x73CC, 0x1DB8,
+ 0x73CD, 0x73CD, 0x1B50, 0x73CF, 0x73CF, 0x0D8F, 0x73D6, 0x73D6, 0x0F08,
+ 0x73D9, 0x73D9, 0x0ED5, 0x73DD, 0x73DD, 0x1F29, 0x73DE, 0x73DE, 0x1120,
+ 0x73E0, 0x73E0, 0x1AE2, 0x73E3, 0x73E3, 0x1613, 0x73E4, 0x73E4, 0x13CB,
+ 0x73E5, 0x73E5, 0x1917, 0x73E6, 0x73E6, 0x1E21, 0x73E9, 0x73E9, 0x1E66,
+ 0x73EA, 0x73EA, 0x0F9F, 0x73ED, 0x73ED, 0x1334, 0x73F7, 0x73F7, 0x12D8,
+ 0x73F9, 0x73F9, 0x156B, 0x73FD, 0x73FD, 0x1A4F, 0x73FE, 0x73FE, 0x1E3F,
+ 0x7401, 0x7401, 0x1535, 0x7403, 0x7403, 0x0F54, 0x7405, 0x7405, 0x1140,
+ 0x7406, 0x7406, 0x1211, 0x7407, 0x7407, 0x15D9, 0x7409, 0x7409, 0x11E8,
+ 0x7413, 0x7413, 0x17E2, 0x741B, 0x741B, 0x1CCC, 0x7420, 0x7420, 0x1A07,
+ 0x7421, 0x7421, 0x1604, 0x7422, 0x7422, 0x1CEC, 0x7425, 0x7425, 0x1E8E,
+ 0x7426, 0x7426, 0x0FFF, 0x7428, 0x7428, 0x0EC5, 0x742A, 0x742A, 0x1000,
+ 0x742B, 0x742B, 0x13EE, 0x742C, 0x742C, 0x17E3, 0x742E, 0x742E, 0x1ABC,
+ 0x742F, 0x742F, 0x0EF2, 0x7430, 0x7430, 0x1769, 0x7433, 0x7433, 0x1229,
+ 0x7434, 0x7434, 0x0FCB, 0x7435, 0x7435, 0x1451, 0x7436, 0x7436, 0x1D3C,
+ 0x7438, 0x7438, 0x1CED, 0x743A, 0x743A, 0x139B, 0x743F, 0x743F, 0x1EA8,
+ 0x7440, 0x7440, 0x1844, 0x7441, 0x7441, 0x12AB, 0x7443, 0x7443, 0x1C86,
+ 0x7444, 0x7444, 0x1536, 0x744B, 0x744B, 0x1898, 0x7455, 0x7455, 0x1DC7,
+ 0x7457, 0x7457, 0x1881, 0x7459, 0x7459, 0x104D, 0x745A, 0x745A, 0x1E8F,
+ 0x745B, 0x745B, 0x1783, 0x745C, 0x745C, 0x18C1, 0x745E, 0x745E, 0x150D,
+ 0x745F, 0x745F, 0x162A, 0x7460, 0x7460, 0x11E9, 0x7462, 0x7462, 0x182C,
+ 0x7464, 0x7464, 0x180B, 0x7465, 0x7465, 0x17C4, 0x7468, 0x7468, 0x1B51,
+ 0x7469, 0x7469, 0x1E67, 0x746A, 0x746A, 0x1231, 0x746F, 0x746F, 0x1141,
+ 0x747E, 0x747E, 0x0FBE, 0x7482, 0x7482, 0x1001, 0x7483, 0x7483, 0x1212,
+ 0x7487, 0x7487, 0x1537, 0x7489, 0x7489, 0x1176, 0x748B, 0x748B, 0x199A,
+ 0x7498, 0x7498, 0x1221, 0x749C, 0x749C, 0x1EEF, 0x749E, 0x749E, 0x131F,
+ 0x749F, 0x749F, 0x0E63, 0x74A1, 0x74A1, 0x1B52, 0x74A3, 0x74A3, 0x1002,
+ 0x74A5, 0x74A5, 0x0E64, 0x74A7, 0x74A7, 0x13A1, 0x74A8, 0x74A8, 0x1B99,
+ 0x74AA, 0x74AA, 0x1A94, 0x74B0, 0x74B0, 0x1ED6, 0x74B2, 0x74B2, 0x15DA,
+ 0x74B5, 0x74B5, 0x1733, 0x74B9, 0x74B9, 0x1605, 0x74BD, 0x74BD, 0x14F3,
+ 0x74BF, 0x74BF, 0x1538, 0x74C6, 0x74C6, 0x1B6D, 0x74CA, 0x74CA, 0x0E65,
+ 0x74CF, 0x74CF, 0x11BC, 0x74D4, 0x74D4, 0x1784, 0x74D8, 0x74D8, 0x0EF3,
+ 0x74DA, 0x74DA, 0x1B9A, 0x74DC, 0x74DC, 0x0EDE, 0x74E0, 0x74E0, 0x1E90,
+ 0x74E2, 0x74E2, 0x1D9F, 0x74E3, 0x74E3, 0x1D46, 0x74E6, 0x74E6, 0x17D4,
+ 0x74EE, 0x74EE, 0x17CC, 0x74F7, 0x74F7, 0x1961, 0x7501, 0x7501, 0x13BB,
+ 0x7504, 0x7504, 0x0E38, 0x7511, 0x7511, 0x1B18, 0x7515, 0x7515, 0x17CD,
+ 0x7518, 0x7518, 0x0DC1, 0x751A, 0x751A, 0x1688, 0x751B, 0x751B, 0x1C0D,
+ 0x751F, 0x751F, 0x14FA, 0x7523, 0x7523, 0x14BD, 0x7525, 0x7525, 0x14FB,
+ 0x7526, 0x7526, 0x158E, 0x7528, 0x7528, 0x182D, 0x752B, 0x752B, 0x13CC,
+ 0x752C, 0x752C, 0x182E, 0x7530, 0x7530, 0x1A08, 0x7531, 0x7531, 0x18C2,
+ 0x7532, 0x7532, 0x0DCC, 0x7533, 0x7533, 0x1671, 0x7537, 0x7537, 0x1035,
+ 0x7538, 0x7538, 0x1A09, 0x753A, 0x753A, 0x1A50, 0x7547, 0x7547, 0x0FAB,
+ 0x754C, 0x754C, 0x0E85, 0x754F, 0x754F, 0x17FB, 0x7551, 0x7551, 0x1A0A,
+ 0x7553, 0x7553, 0x108B, 0x7554, 0x7554, 0x1335, 0x7559, 0x7559, 0x11EA,
+ 0x755B, 0x755B, 0x1B53, 0x755C, 0x755C, 0x1C79, 0x755D, 0x755D, 0x12D9,
+ 0x7562, 0x7562, 0x1DB9, 0x7565, 0x7565, 0x114A, 0x7566, 0x7566, 0x1F48,
+ 0x756A, 0x756A, 0x1388, 0x756F, 0x756F, 0x1B02, 0x7570, 0x7570, 0x1918,
+ 0x7575, 0x7575, 0x1EBC, 0x7576, 0x7576, 0x1096, 0x7578, 0x7578, 0x1003,
+ 0x757A, 0x757A, 0x0DDA, 0x757F, 0x757F, 0x1004, 0x7586, 0x7586, 0x0DDB,
+ 0x7587, 0x7587, 0x1AE3, 0x758A, 0x758A, 0x1C18, 0x758B, 0x758B, 0x1DBA,
+ 0x758E, 0x758E, 0x1590, 0x758F, 0x758F, 0x158F, 0x7591, 0x7591, 0x1903,
+ 0x759D, 0x759D, 0x14BE, 0x75A5, 0x75A5, 0x0DF3, 0x75AB, 0x75AB, 0x173F,
+ 0x75B1, 0x75B1, 0x1D86, 0x75B2, 0x75B2, 0x1DAF, 0x75B3, 0x75B3, 0x0DC2,
+ 0x75B5, 0x75B5, 0x1962, 0x75B8, 0x75B8, 0x1077, 0x75B9, 0x75B9, 0x1B54,
+ 0x75BC, 0x75BC, 0x10F6, 0x75BD, 0x75BD, 0x19CD, 0x75BE, 0x75BE, 0x1B6E,
+ 0x75C2, 0x75C2, 0x0D7D, 0x75C5, 0x75C5, 0x13BC, 0x75C7, 0x75C7, 0x1B19,
+ 0x75CD, 0x75CD, 0x1919, 0x75D2, 0x75D2, 0x1704, 0x75D4, 0x75D4, 0x1CB2,
+ 0x75D5, 0x75D5, 0x1F56, 0x75D8, 0x75D8, 0x1100, 0x75D9, 0x75D9, 0x0E66,
+ 0x75DB, 0x75DB, 0x1D1F, 0x75E2, 0x75E2, 0x1213, 0x75F0, 0x75F0, 0x1082,
+ 0x75F2, 0x75F2, 0x1232, 0x75F4, 0x75F4, 0x1CB3, 0x75FA, 0x75FA, 0x1452,
+ 0x75FC, 0x75FC, 0x0EA2, 0x7600, 0x7600, 0x1712, 0x760D, 0x760D, 0x1705,
+ 0x7619, 0x7619, 0x1591, 0x761F, 0x761F, 0x17C5, 0x7620, 0x7620, 0x1BE7,
+ 0x7621, 0x7621, 0x1BC4, 0x7622, 0x7622, 0x1336, 0x7624, 0x7624, 0x11EB,
+ 0x7626, 0x7626, 0x15DB, 0x763B, 0x763B, 0x11DA, 0x7642, 0x7642, 0x11CD,
+ 0x764C, 0x764C, 0x16C2, 0x764E, 0x764E, 0x0DA1, 0x7652, 0x7652, 0x18C3,
+ 0x7656, 0x7656, 0x13A2, 0x7661, 0x7661, 0x1CB4, 0x7664, 0x7664, 0x1A20,
+ 0x7669, 0x7669, 0x1118, 0x766C, 0x766C, 0x1539, 0x7670, 0x7670, 0x17CE,
+ 0x7672, 0x7672, 0x1A0B, 0x7678, 0x7678, 0x0E86, 0x767B, 0x767B, 0x1110,
+ 0x767C, 0x767C, 0x1347, 0x767D, 0x767E, 0x1381, 0x7684, 0x7684, 0x19E3,
+ 0x7686, 0x7686, 0x0DF4, 0x7687, 0x7687, 0x1EF0, 0x768E, 0x768E, 0x0F28,
+ 0x7690, 0x7690, 0x0EA3, 0x7693, 0x7693, 0x1E91, 0x76AE, 0x76AE, 0x1DB0,
+ 0x76BA, 0x76BA, 0x1C68, 0x76BF, 0x76BF, 0x1293, 0x76C2, 0x76C2, 0x1845,
+ 0x76C3, 0x76C3, 0x1372, 0x76C6, 0x76C6, 0x142C, 0x76C8, 0x76C8, 0x1785,
+ 0x76CA, 0x76CA, 0x1926, 0x76D2, 0x76D2, 0x1DF1, 0x76D6, 0x76D6, 0x0DF5,
+ 0x76DB, 0x76DB, 0x156C, 0x76DC, 0x76DC, 0x10C5, 0x76DE, 0x76DE, 0x197E,
+ 0x76DF, 0x76DF, 0x127B, 0x76E1, 0x76E1, 0x1B55, 0x76E3, 0x76E3, 0x0DC3,
+ 0x76E4, 0x76E4, 0x1337, 0x76E7, 0x76E7, 0x11A6, 0x76EE, 0x76EE, 0x12B7,
+ 0x76F2, 0x76F2, 0x127A, 0x76F4, 0x76F4, 0x1B3F, 0x76F8, 0x76F8, 0x14E8,
+ 0x76FC, 0x76FC, 0x1338, 0x76FE, 0x76FE, 0x1614, 0x7701, 0x7701, 0x156D,
+ 0x7704, 0x7704, 0x1284, 0x7708, 0x7708, 0x1CFD, 0x7709, 0x7709, 0x12FE,
+ 0x770B, 0x770B, 0x0DA2, 0x771E, 0x771E, 0x1B56, 0x7720, 0x7720, 0x1285,
+ 0x7729, 0x7729, 0x1E40, 0x7737, 0x7737, 0x0F8A, 0x7738, 0x7738, 0x12AC,
+ 0x773A, 0x773A, 0x1A95, 0x773C, 0x773C, 0x16B4, 0x7740, 0x7740, 0x1B91,
+ 0x774D, 0x774D, 0x1E41, 0x775B, 0x775B, 0x1A51, 0x7761, 0x7761, 0x15DC,
+ 0x7763, 0x7763, 0x10DA, 0x7766, 0x7766, 0x12B8, 0x776B, 0x776B, 0x1C19,
+ 0x7779, 0x7779, 0x10C6, 0x777E, 0x777E, 0x0EA4, 0x777F, 0x777F, 0x1795,
+ 0x778B, 0x778B, 0x1B57, 0x7791, 0x7791, 0x1294, 0x779E, 0x779E, 0x124A,
+ 0x77A5, 0x77A5, 0x13AE, 0x77AC, 0x77AC, 0x1615, 0x77AD, 0x77AD, 0x11CE,
+ 0x77B0, 0x77B0, 0x0DC4, 0x77B3, 0x77B3, 0x10F7, 0x77BB, 0x77BB, 0x1C0E,
+ 0x77BC, 0x77BC, 0x0E25, 0x77BF, 0x77BF, 0x0F55, 0x77D7, 0x77D7, 0x1C4C,
+ 0x77DB, 0x77DB, 0x12AD, 0x77DC, 0x77DC, 0x0FDC, 0x77E2, 0x77E2, 0x164D,
+ 0x77E3, 0x77E3, 0x1904, 0x77E5, 0x77E5, 0x1B30, 0x77E9, 0x77E9, 0x0F56,
+ 0x77ED, 0x77ED, 0x106C, 0x77EE, 0x77EE, 0x17F6, 0x77EF, 0x77EF, 0x0F29,
+ 0x77F3, 0x77F3, 0x1525, 0x7802, 0x7802, 0x149D, 0x7812, 0x7812, 0x1453,
+ 0x7825, 0x7825, 0x1B31, 0x7826, 0x7826, 0x1BD0, 0x7827, 0x7827, 0x1CCD,
+ 0x782C, 0x782C, 0x122C, 0x7832, 0x7832, 0x1D87, 0x7834, 0x7834, 0x1D3D,
+ 0x7845, 0x7845, 0x0FA0, 0x784F, 0x784F, 0x1758, 0x785D, 0x785D, 0x1C3A,
+ 0x786B, 0x786B, 0x11EC, 0x786C, 0x786C, 0x0E67, 0x786F, 0x786F, 0x1759,
+ 0x787C, 0x787C, 0x143A, 0x7881, 0x7881, 0x1005, 0x7887, 0x7887, 0x1A52,
+ 0x788C, 0x788C, 0x11B0, 0x788D, 0x788D, 0x16D7, 0x788E, 0x788E, 0x15BB,
+ 0x7891, 0x7891, 0x1454, 0x7897, 0x7897, 0x17E4, 0x78A3, 0x78A3, 0x0DB0,
+ 0x78A7, 0x78A7, 0x13A3, 0x78A9, 0x78A9, 0x1526, 0x78BA, 0x78BB, 0x1EC7,
+ 0x78BC, 0x78BC, 0x1233, 0x78C1, 0x78C1, 0x1963, 0x78C5, 0x78C5, 0x135C,
+ 0x78CA, 0x78CA, 0x11C2, 0x78CB, 0x78CB, 0x1B8A, 0x78CE, 0x78CE, 0x0E87,
+ 0x78D0, 0x78D0, 0x1339, 0x78E8, 0x78E8, 0x1234, 0x78EC, 0x78EC, 0x0E68,
+ 0x78EF, 0x78EF, 0x1006, 0x78F5, 0x78F5, 0x0DA3, 0x78FB, 0x78FB, 0x133A,
+ 0x7901, 0x7901, 0x1C3B, 0x790E, 0x790E, 0x1C3C, 0x7916, 0x7916, 0x1734,
+ 0x792A, 0x792A, 0x1162, 0x792B, 0x792B, 0x116E, 0x792C, 0x792C, 0x133B,
+ 0x793A, 0x793A, 0x164E, 0x793E, 0x793E, 0x149E, 0x7940, 0x7940, 0x149F,
+ 0x7941, 0x7941, 0x1007, 0x7947, 0x7948, 0x1008, 0x7949, 0x7949, 0x1B32,
+ 0x7950, 0x7950, 0x1846, 0x7956, 0x7956, 0x1A96, 0x7957, 0x7957, 0x1B33,
+ 0x795A, 0x795A, 0x1A97, 0x795B, 0x795B, 0x0E0B, 0x795C, 0x795C, 0x1E92,
+ 0x795D, 0x795D, 0x1C7A, 0x795E, 0x795E, 0x1672, 0x7960, 0x7960, 0x14A0,
+ 0x7965, 0x7965, 0x14E9, 0x7968, 0x7968, 0x1DA0, 0x796D, 0x796D, 0x1A71,
+ 0x797A, 0x797A, 0x100A, 0x797F, 0x797F, 0x11B1, 0x7981, 0x7981, 0x0FCC,
+ 0x798D, 0x798D, 0x1EBD, 0x798E, 0x798E, 0x1A53, 0x798F, 0x798F, 0x13D9,
+ 0x7991, 0x7991, 0x1847, 0x79A6, 0x79A6, 0x1713, 0x79A7, 0x79A7, 0x1F74,
+ 0x79AA, 0x79AA, 0x153A, 0x79AE, 0x79AE, 0x119C, 0x79B1, 0x79B1, 0x10C7,
+ 0x79B3, 0x79B3, 0x1706, 0x79B9, 0x79B9, 0x1848, 0x79BD, 0x79BD, 0x0FCD,
+ 0x79BE, 0x79BE, 0x1EBE, 0x79BF, 0x79BF, 0x10DB, 0x79C0, 0x79C0, 0x15DD,
+ 0x79C1, 0x79C1, 0x14A1, 0x79C9, 0x79C9, 0x13BD, 0x79CA, 0x79CA, 0x1042,
+ 0x79CB, 0x79CB, 0x1C69, 0x79D1, 0x79D1, 0x0EDF, 0x79D2, 0x79D2, 0x1C3D,
+ 0x79D5, 0x79D5, 0x1455, 0x79D8, 0x79D8, 0x1456, 0x79DF, 0x79DF, 0x1A98,
+ 0x79E4, 0x79E4, 0x1CD1, 0x79E6, 0x79E6, 0x1B58, 0x79E7, 0x79E7, 0x16CE,
+ 0x79E9, 0x79E9, 0x1B6F, 0x79FB, 0x79FB, 0x191A, 0x7A00, 0x7A00, 0x1F75,
+ 0x7A05, 0x7A05, 0x1578, 0x7A08, 0x7A08, 0x0DA4, 0x7A0B, 0x7A0B, 0x1A54,
+ 0x7A0D, 0x7A0D, 0x1C3E, 0x7A14, 0x7A14, 0x194A, 0x7A17, 0x7A17, 0x1D56,
+ 0x7A19, 0x7A19, 0x1B40, 0x7A1A, 0x7A1A, 0x1CB5, 0x7A1C, 0x7A1C, 0x1201,
+ 0x7A1F, 0x7A1F, 0x1DA7, 0x7A20, 0x7A20, 0x1A99, 0x7A2E, 0x7A2E, 0x1ABD,
+ 0x7A31, 0x7A31, 0x1CD2, 0x7A36, 0x7A36, 0x185B, 0x7A37, 0x7A37, 0x1B41,
+ 0x7A3B, 0x7A3B, 0x10C8, 0x7A3C, 0x7A3C, 0x0D7E, 0x7A3D, 0x7A3D, 0x0E88,
+ 0x7A3F, 0x7A3F, 0x0EA5, 0x7A40, 0x7A40, 0x0EBB, 0x7A46, 0x7A46, 0x12B9,
+ 0x7A49, 0x7A49, 0x1CB6, 0x7A4D, 0x7A4D, 0x19E4, 0x7A4E, 0x7A4E, 0x1786,
+ 0x7A57, 0x7A57, 0x15DE, 0x7A61, 0x7A61, 0x14F6, 0x7A62, 0x7A62, 0x1796,
+ 0x7A69, 0x7A69, 0x17C6, 0x7A6B, 0x7A6B, 0x1EC9, 0x7A70, 0x7A70, 0x1707,
+ 0x7A74, 0x7A74, 0x1E4B, 0x7A76, 0x7A76, 0x0F57, 0x7A79, 0x7A79, 0x0F7D,
+ 0x7A7A, 0x7A7A, 0x0ED6, 0x7A7D, 0x7A7D, 0x1A55, 0x7A7F, 0x7A7F, 0x1BF5,
+ 0x7A81, 0x7A81, 0x10EA, 0x7A84, 0x7A84, 0x1B92, 0x7A88, 0x7A88, 0x180C,
+ 0x7A92, 0x7A92, 0x1B70, 0x7A93, 0x7A93, 0x1BC5, 0x7A95, 0x7A95, 0x1A9A,
+ 0x7A98, 0x7A98, 0x0F72, 0x7A9F, 0x7A9F, 0x0F7A, 0x7AA9, 0x7AAA, 0x17D5,
+ 0x7AAE, 0x7AAE, 0x0F7E, 0x7AAF, 0x7AAF, 0x180D, 0x7ABA, 0x7ABA, 0x0FA1,
+ 0x7AC4, 0x7AC4, 0x1B9B, 0x7AC5, 0x7AC5, 0x0FA2, 0x7AC7, 0x7AC7, 0x1101,
+ 0x7ACA, 0x7ACA, 0x1A21, 0x7ACB, 0x7ACB, 0x122D, 0x7AD7, 0x7AD7, 0x12C9,
+ 0x7AD9, 0x7AD9, 0x1BB1, 0x7ADD, 0x7ADD, 0x13BE, 0x7ADF, 0x7ADF, 0x0E69,
+ 0x7AE0, 0x7AE0, 0x199B, 0x7AE3, 0x7AE3, 0x1B03, 0x7AE5, 0x7AE5, 0x10F8,
+ 0x7AEA, 0x7AEA, 0x15DF, 0x7AED, 0x7AED, 0x0DB1, 0x7AEF, 0x7AEF, 0x106D,
+ 0x7AF6, 0x7AF6, 0x0E6A, 0x7AF9, 0x7AF9, 0x1AF4, 0x7AFA, 0x7AFA, 0x1C7B,
+ 0x7AFF, 0x7AFF, 0x0DA5, 0x7B0F, 0x7B0F, 0x1EAC, 0x7B11, 0x7B11, 0x1592,
+ 0x7B19, 0x7B19, 0x14FC, 0x7B1B, 0x7B1B, 0x19E5, 0x7B1E, 0x7B1E, 0x1D0F,
+ 0x7B20, 0x7B20, 0x122E, 0x7B26, 0x7B26, 0x140A, 0x7B2C, 0x7B2C, 0x1A72,
+ 0x7B2D, 0x7B2D, 0x1190, 0x7B39, 0x7B39, 0x1579, 0x7B46, 0x7B46, 0x1DBB,
+ 0x7B49, 0x7B49, 0x1111, 0x7B4B, 0x7B4B, 0x0FBF, 0x7B4C, 0x7B4C, 0x1A0C,
+ 0x7B4D, 0x7B4D, 0x1616, 0x7B4F, 0x7B4F, 0x138E, 0x7B50, 0x7B50, 0x0F09,
+ 0x7B51, 0x7B51, 0x1C7C, 0x7B52, 0x7B52, 0x1D20, 0x7B54, 0x7B54, 0x108C,
+ 0x7B56, 0x7B56, 0x1BD8, 0x7B60, 0x7B60, 0x0FAC, 0x7B6C, 0x7B6C, 0x156E,
+ 0x7B6E, 0x7B6E, 0x150E, 0x7B75, 0x7B75, 0x175A, 0x7B7D, 0x7B7D, 0x17B9,
+ 0x7B87, 0x7B87, 0x0DF6, 0x7B8B, 0x7B8B, 0x1A0D, 0x7B8F, 0x7B8F, 0x19BC,
+ 0x7B94, 0x7B94, 0x1320, 0x7B95, 0x7B95, 0x100B, 0x7B97, 0x7B97, 0x14BF,
+ 0x7B9A, 0x7B9A, 0x1B8B, 0x7B9D, 0x7B9D, 0x0E48, 0x7BA1, 0x7BA1, 0x0EF4,
+ 0x7BAD, 0x7BAD, 0x1A0E, 0x7BB1, 0x7BB1, 0x14EA, 0x7BB4, 0x7BB4, 0x1982,
+ 0x7BB8, 0x7BB8, 0x19CE, 0x7BC0, 0x7BC0, 0x1A22, 0x7BC1, 0x7BC1, 0x1EF1,
+ 0x7BC4, 0x7BC4, 0x1398, 0x7BC6, 0x7BC6, 0x1A0F, 0x7BC7, 0x7BC7, 0x1D62,
+ 0x7BC9, 0x7BC9, 0x1C7D, 0x7BD2, 0x7BD2, 0x1661, 0x7BE0, 0x7BE0, 0x1593,
+ 0x7BE4, 0x7BE4, 0x10DC, 0x7BE9, 0x7BE9, 0x14A2, 0x7C07, 0x7C07, 0x1AAD,
+ 0x7C12, 0x7C12, 0x1B9C, 0x7C1E, 0x7C1E, 0x106E, 0x7C21, 0x7C21, 0x0DA6,
+ 0x7C27, 0x7C27, 0x1EF2, 0x7C2A, 0x7C2A, 0x1983, 0x7C2B, 0x7C2B, 0x1594,
+ 0x7C3D, 0x7C3D, 0x1C0F, 0x7C3E, 0x7C3E, 0x1187, 0x7C3F, 0x7C3F, 0x140B,
+ 0x7C43, 0x7C43, 0x1134, 0x7C4C, 0x7C4C, 0x1AE4, 0x7C4D, 0x7C4D, 0x19E6,
+ 0x7C60, 0x7C60, 0x11BD, 0x7C64, 0x7C64, 0x1C10, 0x7C6C, 0x7C6C, 0x1214,
+ 0x7C73, 0x7C73, 0x12FF, 0x7C83, 0x7C83, 0x1457, 0x7C89, 0x7C89, 0x142D,
+ 0x7C92, 0x7C92, 0x122F, 0x7C95, 0x7C95, 0x1321, 0x7C97, 0x7C97, 0x1A9B,
+ 0x7C98, 0x7C98, 0x1A29, 0x7C9F, 0x7C9F, 0x15A5, 0x7CA5, 0x7CA5, 0x1AF5,
+ 0x7CA7, 0x7CA7, 0x199C, 0x7CAE, 0x7CAE, 0x1151, 0x7CB1, 0x7CB1, 0x1152,
+ 0x7CB2, 0x7CB2, 0x1B9E, 0x7CB3, 0x7CB3, 0x0DFE, 0x7CB9, 0x7CB9, 0x15E0,
+ 0x7CBE, 0x7CBE, 0x1A56, 0x7CCA, 0x7CCA, 0x1E93, 0x7CD6, 0x7CD6, 0x1097,
+ 0x7CDE, 0x7CDE, 0x142E, 0x7CDF, 0x7CDF, 0x1A9C, 0x7CE0, 0x7CE0, 0x0DDC,
+ 0x7CE7, 0x7CE7, 0x1153, 0x7CFB, 0x7CFB, 0x0E89, 0x7CFE, 0x7CFE, 0x0FA3,
+ 0x7D00, 0x7D00, 0x100C, 0x7D02, 0x7D02, 0x1AE5, 0x7D04, 0x7D04, 0x16F1,
+ 0x7D05, 0x7D05, 0x1EB3, 0x7D06, 0x7D06, 0x1849, 0x7D07, 0x7D07, 0x1F59,
+ 0x7D08, 0x7D08, 0x1ED7, 0x7D0A, 0x7D0B, 0x12EA, 0x7D0D, 0x7D0D, 0x1036,
+ 0x7D10, 0x7D10, 0x1058, 0x7D14, 0x7D14, 0x1617, 0x7D17, 0x7D17, 0x14A3,
+ 0x7D18, 0x7D18, 0x0F19, 0x7D19, 0x7D19, 0x1B34, 0x7D1A, 0x7D1A, 0x0FD8,
+ 0x7D1B, 0x7D1B, 0x142F, 0x7D20, 0x7D20, 0x1595, 0x7D21, 0x7D21, 0x135D,
+ 0x7D22, 0x7D22, 0x14F7, 0x7D2B, 0x7D2B, 0x1964, 0x7D2C, 0x7D2C, 0x1AE6,
+ 0x7D2E, 0x7D2E, 0x1BA9, 0x7D2F, 0x7D2F, 0x11DB, 0x7D30, 0x7D30, 0x157A,
+ 0x7D33, 0x7D33, 0x1673, 0x7D35, 0x7D35, 0x19CF, 0x7D39, 0x7D39, 0x1596,
+ 0x7D3A, 0x7D3A, 0x0DC5, 0x7D42, 0x7D42, 0x1ABE, 0x7D43, 0x7D43, 0x1E42,
+ 0x7D44, 0x7D44, 0x1A9D, 0x7D45, 0x7D45, 0x0E6B, 0x7D46, 0x7D46, 0x133C,
+ 0x7D50, 0x7D50, 0x0E43, 0x7D5E, 0x7D5E, 0x0F2A, 0x7D61, 0x7D61, 0x1121,
+ 0x7D62, 0x7D62, 0x1E43, 0x7D66, 0x7D66, 0x0FD9, 0x7D68, 0x7D68, 0x18E3,
+ 0x7D6A, 0x7D6A, 0x1936, 0x7D6E, 0x7D6E, 0x150F, 0x7D71, 0x7D71, 0x1D21,
+ 0x7D72, 0x7D72, 0x14A4, 0x7D73, 0x7D73, 0x0DDD, 0x7D76, 0x7D76, 0x1A23,
+ 0x7D79, 0x7D79, 0x0E39, 0x7D7F, 0x7D7F, 0x0F58, 0x7D8E, 0x7D8E, 0x1A57,
+ 0x7D8F, 0x7D8F, 0x15E1, 0x7D93, 0x7D93, 0x0E6C, 0x7D9C, 0x7D9C, 0x1ABF,
+ 0x7DA0, 0x7DA0, 0x11B2, 0x7DA2, 0x7DA2, 0x1AE7, 0x7DAC, 0x7DAC, 0x15E2,
+ 0x7DAD, 0x7DAD, 0x18C4, 0x7DB1, 0x7DB1, 0x0DDE, 0x7DB2, 0x7DB2, 0x125D,
+ 0x7DB4, 0x7DB4, 0x1C05, 0x7DB5, 0x7DB5, 0x1BD1, 0x7DB8, 0x7DB8, 0x11F6,
+ 0x7DBA, 0x7DBA, 0x100D, 0x7DBB, 0x7DBB, 0x1CF8, 0x7DBD, 0x7DBD, 0x1975,
+ 0x7DBE, 0x7DBE, 0x1202, 0x7DBF, 0x7DBF, 0x1286, 0x7DC7, 0x7DC7, 0x1CB7,
+ 0x7DCA, 0x7DCA, 0x101E, 0x7DCB, 0x7DCB, 0x1458, 0x7DD6, 0x7DD6, 0x1510,
+ 0x7DD8, 0x7DD8, 0x1DEA, 0x7DDA, 0x7DDA, 0x153B, 0x7DDD, 0x7DDD, 0x1B7A,
+ 0x7DDE, 0x7DDE, 0x106F, 0x7DE0, 0x7DE0, 0x1C29, 0x7DE1, 0x7DE1, 0x1311,
+ 0x7DE3, 0x7DE3, 0x175B, 0x7DE8, 0x7DE8, 0x1D63, 0x7DE9, 0x7DE9, 0x17E5,
+ 0x7DEC, 0x7DEC, 0x1287, 0x7DEF, 0x7DEF, 0x1899, 0x7DF4, 0x7DF4, 0x1177,
+ 0x7DFB, 0x7DFB, 0x1CB8, 0x7E09, 0x7E09, 0x1B59, 0x7E0A, 0x7E0A, 0x16DF,
+ 0x7E15, 0x7E15, 0x17C7, 0x7E1B, 0x7E1B, 0x1322, 0x7E1D, 0x7E1D, 0x1B5A,
+ 0x7E1E, 0x7E1E, 0x1E94, 0x7E1F, 0x7E1F, 0x181B, 0x7E21, 0x7E21, 0x19B5,
+ 0x7E23, 0x7E23, 0x1E44, 0x7E2B, 0x7E2B, 0x13EF, 0x7E2E, 0x7E2E, 0x1C7E,
+ 0x7E2F, 0x7E2F, 0x175C, 0x7E31, 0x7E31, 0x1AC0, 0x7E37, 0x7E37, 0x11DC,
+ 0x7E3D, 0x7E3D, 0x1C59, 0x7E3E, 0x7E3E, 0x19E7, 0x7E41, 0x7E41, 0x1389,
+ 0x7E43, 0x7E43, 0x143B, 0x7E46, 0x7E46, 0x12DA, 0x7E47, 0x7E47, 0x180E,
+ 0x7E52, 0x7E52, 0x1B1A, 0x7E54, 0x7E54, 0x1B42, 0x7E55, 0x7E55, 0x153C,
+ 0x7E5E, 0x7E5E, 0x180F, 0x7E61, 0x7E61, 0x15E3, 0x7E69, 0x7E69, 0x1639,
+ 0x7E6A, 0x7E6A, 0x1F06, 0x7E6B, 0x7E6B, 0x0E8A, 0x7E6D, 0x7E6D, 0x0E3A,
+ 0x7E70, 0x7E70, 0x1A9E, 0x7E79, 0x7E79, 0x1740, 0x7E7C, 0x7E7C, 0x0E8B,
+ 0x7E82, 0x7E82, 0x1B9D, 0x7E8C, 0x7E8C, 0x15A6, 0x7E8F, 0x7E8F, 0x1A10,
+ 0x7E93, 0x7E93, 0x1787, 0x7E96, 0x7E96, 0x155A, 0x7E98, 0x7E98, 0x1B9F,
+ 0x7E9B, 0x7E9B, 0x10DD, 0x7E9C, 0x7E9C, 0x1135, 0x7F36, 0x7F36, 0x140C,
+ 0x7F38, 0x7F38, 0x1E01, 0x7F3A, 0x7F3A, 0x0E44, 0x7F4C, 0x7F4C, 0x16E3,
+ 0x7F50, 0x7F50, 0x0EF5, 0x7F54, 0x7F54, 0x125E, 0x7F55, 0x7F55, 0x1DDB,
+ 0x7F6A, 0x7F6A, 0x1ACB, 0x7F6B, 0x7F6B, 0x0F0E, 0x7F6E, 0x7F6E, 0x1CB9,
+ 0x7F70, 0x7F70, 0x138F, 0x7F72, 0x7F72, 0x1511, 0x7F75, 0x7F75, 0x126D,
+ 0x7F77, 0x7F77, 0x1D3E, 0x7F79, 0x7F79, 0x1215, 0x7F85, 0x7F85, 0x1119,
+ 0x7F88, 0x7F88, 0x100E, 0x7F8A, 0x7F8A, 0x1708, 0x7F8C, 0x7F8C, 0x0DDF,
+ 0x7F8E, 0x7F8E, 0x1300, 0x7F94, 0x7F94, 0x0EA6, 0x7F9A, 0x7F9A, 0x1191,
+ 0x7F9E, 0x7F9E, 0x15E4, 0x7FA4, 0x7FA4, 0x0F73, 0x7FA8, 0x7FA8, 0x153D,
+ 0x7FA9, 0x7FA9, 0x1905, 0x7FB2, 0x7FB2, 0x1F76, 0x7FB8, 0x7FB8, 0x1216,
+ 0x7FB9, 0x7FB9, 0x0DFF, 0x7FBD, 0x7FBD, 0x184A, 0x7FC1, 0x7FC1, 0x17CF,
+ 0x7FC5, 0x7FC5, 0x164F, 0x7FCA, 0x7FCA, 0x1927, 0x7FCC, 0x7FCC, 0x1928,
+ 0x7FCE, 0x7FCE, 0x1192, 0x7FD2, 0x7FD2, 0x162F, 0x7FD4, 0x7FD4, 0x14EB,
+ 0x7FD5, 0x7FD5, 0x1F61, 0x7FDF, 0x7FDF, 0x19E8, 0x7FE0, 0x7FE0, 0x1C9A,
+ 0x7FE1, 0x7FE1, 0x1459, 0x7FE9, 0x7FE9, 0x1D64, 0x7FEB, 0x7FEB, 0x17E6,
+ 0x7FF0, 0x7FF0, 0x1DDC, 0x7FF9, 0x7FF9, 0x0F2B, 0x7FFC, 0x7FFC, 0x1929,
+ 0x8000, 0x8000, 0x1810, 0x8001, 0x8001, 0x11A7, 0x8003, 0x8003, 0x0EA7,
+ 0x8005, 0x8005, 0x1965, 0x8006, 0x8006, 0x100F, 0x8009, 0x8009, 0x0F59,
+ 0x800C, 0x800C, 0x191B, 0x8010, 0x8010, 0x103E, 0x8015, 0x8015, 0x0E6D,
+ 0x8017, 0x8017, 0x12AE, 0x8018, 0x8018, 0x1863, 0x802D, 0x802D, 0x1010,
+ 0x8033, 0x8033, 0x191C, 0x8036, 0x8036, 0x16EE, 0x803D, 0x803D, 0x1CFE,
+ 0x803F, 0x803F, 0x0E6E, 0x8043, 0x8043, 0x1083, 0x8046, 0x8046, 0x1193,
+ 0x804A, 0x804A, 0x11CF, 0x8056, 0x8056, 0x156F, 0x8058, 0x8058, 0x1477,
+ 0x805A, 0x805A, 0x1C9B, 0x805E, 0x805E, 0x12EC, 0x806F, 0x806F, 0x1178,
+ 0x8070, 0x8070, 0x1C5A, 0x8072, 0x8072, 0x1570, 0x8073, 0x8073, 0x182F,
+ 0x8077, 0x8077, 0x1B43, 0x807D, 0x807D, 0x1C20, 0x807E, 0x807E, 0x11BE,
+ 0x807F, 0x807F, 0x18E0, 0x8084, 0x8084, 0x191D, 0x8085, 0x8085, 0x1606,
+ 0x8086, 0x8086, 0x14A5, 0x8087, 0x8087, 0x1A9F, 0x8089, 0x8089, 0x18D5,
+ 0x808B, 0x808B, 0x11FD, 0x808C, 0x808C, 0x1011, 0x8096, 0x8096, 0x1C3F,
+ 0x809B, 0x809B, 0x1E02, 0x809D, 0x809D, 0x0DA7, 0x80A1, 0x80A1, 0x0EA8,
+ 0x80A2, 0x80A2, 0x1B35, 0x80A5, 0x80A5, 0x145A, 0x80A9, 0x80A9, 0x0E3B,
+ 0x80AA, 0x80AA, 0x135E, 0x80AF, 0x80AF, 0x0FDD, 0x80B1, 0x80B1, 0x0F1A,
+ 0x80B2, 0x80B2, 0x18D6, 0x80B4, 0x80B4, 0x1F1B, 0x80BA, 0x80BA, 0x1D74,
+ 0x80C3, 0x80C3, 0x189A, 0x80C4, 0x80C4, 0x1AD1, 0x80CC, 0x80CC, 0x1373,
+ 0x80CE, 0x80CE, 0x1D10, 0x80DA, 0x80DA, 0x1374, 0x80DB, 0x80DB, 0x0DCD,
+ 0x80DE, 0x80DE, 0x1D88, 0x80E1, 0x80E1, 0x1E95, 0x80E4, 0x80E4, 0x18DC,
+ 0x80E5, 0x80E5, 0x1512, 0x80F1, 0x80F1, 0x0F0A, 0x80F4, 0x80F4, 0x10F9,
+ 0x80F8, 0x80F8, 0x1F51, 0x80FD, 0x80FD, 0x1059, 0x8102, 0x8102, 0x1B36,
+ 0x8105, 0x8105, 0x1E56, 0x8106, 0x8106, 0x1C9C, 0x8107, 0x8107, 0x1E57,
+ 0x8108, 0x8108, 0x1272, 0x810A, 0x810A, 0x1BE8, 0x8118, 0x8118, 0x17E7,
+ 0x811A, 0x811A, 0x0D90, 0x811B, 0x811B, 0x0E6F, 0x8123, 0x8123, 0x1618,
+ 0x8129, 0x8129, 0x15E5, 0x812B, 0x812B, 0x1CFB, 0x812F, 0x812F, 0x1D89,
+ 0x8139, 0x8139, 0x1BC6, 0x813E, 0x813E, 0x145B, 0x814B, 0x814B, 0x16E0,
+ 0x814E, 0x814E, 0x1674, 0x8150, 0x8151, 0x140D, 0x8154, 0x8154, 0x0DE0,
+ 0x8155, 0x8155, 0x17E8, 0x8165, 0x8165, 0x1571, 0x8166, 0x8166, 0x1053,
+ 0x816B, 0x816B, 0x1AC1, 0x8170, 0x8170, 0x1811, 0x8171, 0x8171, 0x0E18,
+ 0x8178, 0x8178, 0x199D, 0x8179, 0x8179, 0x13DA, 0x817A, 0x817A, 0x153E,
+ 0x817F, 0x817F, 0x1D25, 0x8180, 0x8180, 0x135F, 0x8188, 0x8188, 0x0E32,
+ 0x818A, 0x818A, 0x1323, 0x818F, 0x818F, 0x0EA9, 0x819A, 0x819A, 0x140F,
+ 0x819C, 0x819C, 0x123B, 0x819D, 0x819D, 0x162B, 0x81A0, 0x81A0, 0x0F2C,
+ 0x81A3, 0x81A3, 0x1B71, 0x81A8, 0x81A8, 0x1D5C, 0x81B3, 0x81B3, 0x153F,
+ 0x81B5, 0x81B5, 0x1C91, 0x81BA, 0x81BA, 0x18F8, 0x81BD, 0x81BD, 0x1084,
+ 0x81BE, 0x81BE, 0x1F07, 0x81BF, 0x81BF, 0x1050, 0x81C0, 0x81C0, 0x1107,
+ 0x81C2, 0x81C2, 0x145C, 0x81C6, 0x81C6, 0x171C, 0x81CD, 0x81CD, 0x1A73,
+ 0x81D8, 0x81D8, 0x113A, 0x81DF, 0x81DF, 0x199E, 0x81E3, 0x81E3, 0x1675,
+ 0x81E5, 0x81E5, 0x17D7, 0x81E7, 0x81E7, 0x199F, 0x81E8, 0x81E8, 0x122A,
+ 0x81EA, 0x81EA, 0x1966, 0x81ED, 0x81ED, 0x1C9D, 0x81F3, 0x81F3, 0x1B37,
+ 0x81F4, 0x81F4, 0x1CBA, 0x81FA, 0x81FA, 0x10A5, 0x81FB, 0x81FB, 0x1B5B,
+ 0x81FC, 0x81FC, 0x0F5A, 0x81FE, 0x81FE, 0x18C5, 0x8205, 0x8205, 0x0F5B,
+ 0x8207, 0x8207, 0x1735, 0x8208, 0x8208, 0x1F62, 0x820A, 0x820A, 0x0F5C,
+ 0x820C, 0x820C, 0x1550, 0x820D, 0x820D, 0x14A6, 0x8212, 0x8212, 0x1513,
+ 0x821B, 0x821B, 0x1BF6, 0x821C, 0x821C, 0x1619, 0x821E, 0x821E, 0x12DB,
+ 0x821F, 0x821F, 0x1AE8, 0x8221, 0x8221, 0x0DE1, 0x822A, 0x822A, 0x1E03,
+ 0x822B, 0x822B, 0x1360, 0x822C, 0x822C, 0x133D, 0x8235, 0x8235, 0x1CDE,
+ 0x8236, 0x8236, 0x1324, 0x8237, 0x8237, 0x1E45, 0x8239, 0x8239, 0x1540,
+ 0x8240, 0x8240, 0x1410, 0x8245, 0x8245, 0x1736, 0x8247, 0x8247, 0x1A58,
+ 0x8259, 0x8259, 0x1BC7, 0x8264, 0x8264, 0x1906, 0x8266, 0x8266, 0x1DEB,
+ 0x826E, 0x826E, 0x0DA8, 0x826F, 0x826F, 0x1154, 0x8271, 0x8271, 0x0DA9,
+ 0x8272, 0x8272, 0x14F8, 0x8276, 0x8276, 0x176A, 0x8278, 0x8278, 0x1C40,
+ 0x827E, 0x827E, 0x16D8, 0x828B, 0x828B, 0x184B, 0x828D, 0x828D, 0x1976,
+ 0x828E, 0x828E, 0x0F7F, 0x8292, 0x8292, 0x125F, 0x8299, 0x8299, 0x1411,
+ 0x829A, 0x829A, 0x1108, 0x829D, 0x829D, 0x1B38, 0x829F, 0x829F, 0x14CC,
+ 0x82A5, 0x82A5, 0x0DF7, 0x82A6, 0x82A6, 0x1E96, 0x82A9, 0x82A9, 0x0FCE,
+ 0x82AC, 0x82AC, 0x1430, 0x82AD, 0x82AD, 0x1D3F, 0x82AE, 0x82AE, 0x1797,
+ 0x82AF, 0x82AF, 0x1689, 0x82B1, 0x82B1, 0x1EBF, 0x82B3, 0x82B3, 0x1361,
+ 0x82B7, 0x82B7, 0x1B39, 0x82B8, 0x82B8, 0x1864, 0x82B9, 0x82B9, 0x0FC0,
+ 0x82BB, 0x82BB, 0x1C6A, 0x82BC, 0x82BC, 0x12AF, 0x82BD, 0x82BD, 0x1697,
+ 0x82BF, 0x82BF, 0x1952, 0x82D1, 0x82D1, 0x1882, 0x82D2, 0x82D2, 0x176B,
+ 0x82D4, 0x82D4, 0x1D11, 0x82D5, 0x82D5, 0x1C41, 0x82D7, 0x82D7, 0x12CA,
+ 0x82DB, 0x82DB, 0x0D7F, 0x82DE, 0x82DE, 0x1D8A, 0x82DF, 0x82DF, 0x0F5D,
+ 0x82E1, 0x82E1, 0x191E, 0x82E5, 0x82E5, 0x16F2, 0x82E6, 0x82E6, 0x0EAA,
+ 0x82E7, 0x82E7, 0x19D0, 0x82F1, 0x82F1, 0x1788, 0x82FD, 0x82FD, 0x0EAB,
+ 0x82FE, 0x82FE, 0x1DBC, 0x8301, 0x8301, 0x1B09, 0x8302, 0x8302, 0x12DC,
+ 0x8303, 0x8303, 0x1399, 0x8304, 0x8304, 0x0D80, 0x8305, 0x8305, 0x12B0,
+ 0x8309, 0x8309, 0x1255, 0x8317, 0x8317, 0x1295, 0x8328, 0x8328, 0x1967,
+ 0x832B, 0x832B, 0x1260, 0x832F, 0x832F, 0x13DB, 0x8331, 0x8331, 0x15E6,
+ 0x8334, 0x8334, 0x1F08, 0x8335, 0x8335, 0x1937, 0x8336, 0x8336, 0x105F,
+ 0x8338, 0x8338, 0x1830, 0x8339, 0x8339, 0x1737, 0x8340, 0x8340, 0x161A,
+ 0x8347, 0x8347, 0x1E1C, 0x8349, 0x8349, 0x1C42, 0x834A, 0x834A, 0x1E68,
+ 0x834F, 0x834F, 0x194B, 0x8351, 0x8351, 0x191F, 0x8352, 0x8352, 0x1EF3,
+ 0x8373, 0x8373, 0x1102, 0x8377, 0x8377, 0x1DC8, 0x837B, 0x837B, 0x19E9,
+ 0x8389, 0x8389, 0x1217, 0x838A, 0x838A, 0x19A0, 0x838E, 0x838E, 0x14A7,
+ 0x8396, 0x8396, 0x0E70, 0x8398, 0x8398, 0x1676, 0x839E, 0x839E, 0x17E9,
+ 0x83A2, 0x83A2, 0x1E58, 0x83A9, 0x83A9, 0x1412, 0x83AA, 0x83AA, 0x1698,
+ 0x83AB, 0x83AB, 0x123C, 0x83BD, 0x83BD, 0x1261, 0x83C1, 0x83C1, 0x1C21,
+ 0x83C5, 0x83C5, 0x0EF6, 0x83C9, 0x83C9, 0x11B3, 0x83CA, 0x83CA, 0x0F6D,
+ 0x83CC, 0x83CC, 0x0FAD, 0x83D3, 0x83D3, 0x0EE0, 0x83D6, 0x83D6, 0x1BC8,
+ 0x83DC, 0x83DC, 0x1BD2, 0x83E9, 0x83E9, 0x13CD, 0x83EB, 0x83EB, 0x0FC1,
+ 0x83EF, 0x83EF, 0x1EC0, 0x83F0, 0x83F0, 0x0EAC, 0x83F1, 0x83F1, 0x1203,
+ 0x83F2, 0x83F2, 0x145D, 0x83F4, 0x83F4, 0x16C3, 0x83F9, 0x83F9, 0x19D1,
+ 0x83FD, 0x83FD, 0x1607, 0x8403, 0x8403, 0x1C92, 0x8404, 0x8404, 0x10C9,
+ 0x840A, 0x840A, 0x1147, 0x840C, 0x840C, 0x127C, 0x840D, 0x840D, 0x1D6C,
+ 0x840E, 0x840E, 0x189B, 0x8429, 0x8429, 0x1C6B, 0x842C, 0x842C, 0x124B,
+ 0x8431, 0x8431, 0x1F39, 0x8438, 0x8438, 0x18C6, 0x843D, 0x843D, 0x1122,
+ 0x8449, 0x8449, 0x1771, 0x8457, 0x8457, 0x19D2, 0x845B, 0x845B, 0x0DB2,
+ 0x8461, 0x8461, 0x1D8B, 0x8463, 0x8463, 0x10FA, 0x8466, 0x8466, 0x189C,
+ 0x846B, 0x846B, 0x1E97, 0x846C, 0x846C, 0x19A1, 0x846F, 0x846F, 0x16F3,
+ 0x8475, 0x8475, 0x0FA4, 0x847A, 0x847A, 0x1B12, 0x8490, 0x8490, 0x15E7,
+ 0x8494, 0x8494, 0x1650, 0x8499, 0x8499, 0x12BF, 0x849C, 0x849C, 0x14C0,
+ 0x84A1, 0x84A1, 0x1362, 0x84B2, 0x84B2, 0x1D8C, 0x84B8, 0x84B8, 0x1B1B,
+ 0x84BB, 0x84BB, 0x16F4, 0x84BC, 0x84BC, 0x1BC9, 0x84BF, 0x84BF, 0x1E98,
+ 0x84C0, 0x84C0, 0x15AD, 0x84C2, 0x84C2, 0x1296, 0x84C4, 0x84C4, 0x1C7F,
+ 0x84C6, 0x84C6, 0x1527, 0x84C9, 0x84C9, 0x1831, 0x84CB, 0x84CB, 0x0DF8,
+ 0x84CD, 0x84CD, 0x1651, 0x84D1, 0x84D1, 0x14A8, 0x84DA, 0x84DA, 0x15E8,
+ 0x84EC, 0x84EC, 0x13F0, 0x84EE, 0x84EE, 0x1179, 0x84F4, 0x84F4, 0x161B,
+ 0x84FC, 0x84FC, 0x11D0, 0x8511, 0x8511, 0x128B, 0x8513, 0x8513, 0x124C,
+ 0x8514, 0x8514, 0x13DC, 0x8517, 0x8517, 0x1968, 0x8518, 0x8518, 0x14CD,
+ 0x851A, 0x851A, 0x186A, 0x851E, 0x851E, 0x11DD, 0x8521, 0x8521, 0x1BD3,
+ 0x8523, 0x8523, 0x19A2, 0x8525, 0x8525, 0x1C5B, 0x852C, 0x852C, 0x1597,
+ 0x852D, 0x852D, 0x18EF, 0x852F, 0x852F, 0x1B5C, 0x853D, 0x853D, 0x1D75,
+ 0x853F, 0x853F, 0x189D, 0x8541, 0x8541, 0x1085, 0x8543, 0x8543, 0x138A,
+ 0x8549, 0x8549, 0x1C43, 0x854E, 0x854E, 0x0F2D, 0x8553, 0x8553, 0x1865,
+ 0x8559, 0x8559, 0x1E74, 0x8563, 0x8563, 0x161C, 0x8568, 0x8568, 0x0F8D,
+ 0x8569, 0x8569, 0x1D06, 0x856A, 0x856A, 0x12DD, 0x856D, 0x856D, 0x1598,
+ 0x8584, 0x8584, 0x1325, 0x8587, 0x8587, 0x1301, 0x858F, 0x858F, 0x1907,
+ 0x8591, 0x8591, 0x0DE2, 0x8594, 0x8594, 0x19A3, 0x859B, 0x859B, 0x1551,
+ 0x85A6, 0x85A6, 0x1BF7, 0x85A8, 0x85A8, 0x1F35, 0x85A9, 0x85A9, 0x14C7,
+ 0x85AA, 0x85AA, 0x1677, 0x85AF, 0x85AF, 0x1514, 0x85B0, 0x85B0, 0x1F32,
+ 0x85BA, 0x85BA, 0x1A74, 0x85C1, 0x85C1, 0x0EAD, 0x85C9, 0x85C9, 0x1969,
+ 0x85CD, 0x85CD, 0x1136, 0x85CE, 0x85CE, 0x1678, 0x85CF, 0x85CF, 0x19A4,
+ 0x85D5, 0x85D5, 0x184C, 0x85DC, 0x85DC, 0x1163, 0x85DD, 0x85DD, 0x1798,
+ 0x85E4, 0x85E4, 0x1112, 0x85E5, 0x85E5, 0x16F5, 0x85E9, 0x85E9, 0x138B,
+ 0x85EA, 0x85EA, 0x15E9, 0x85F7, 0x85F7, 0x19D3, 0x85FA, 0x85FA, 0x1222,
+ 0x85FB, 0x85FB, 0x1AA0, 0x85FF, 0x85FF, 0x0EE9, 0x8602, 0x8602, 0x1799,
+ 0x8606, 0x8606, 0x11A8, 0x8607, 0x8607, 0x1599, 0x860A, 0x860A, 0x17C8,
+ 0x8616, 0x8616, 0x1724, 0x8617, 0x8617, 0x13A4, 0x861A, 0x861A, 0x1541,
+ 0x862D, 0x862D, 0x112B, 0x863F, 0x863F, 0x111A, 0x864E, 0x864E, 0x1E99,
+ 0x8650, 0x8650, 0x1DD0, 0x8654, 0x8654, 0x0E19, 0x8655, 0x8655, 0x1BDD,
+ 0x865B, 0x865B, 0x1E29, 0x865C, 0x865C, 0x11A9, 0x865E, 0x865E, 0x184D,
+ 0x865F, 0x865F, 0x1E9A, 0x8667, 0x8667, 0x1F49, 0x8679, 0x8679, 0x1EB4,
+ 0x868A, 0x868A, 0x12ED, 0x868C, 0x868C, 0x1363, 0x8693, 0x8693, 0x1938,
+ 0x86A3, 0x86A3, 0x0ED7, 0x86A4, 0x86A4, 0x1AA1, 0x86A9, 0x86A9, 0x1CBB,
+ 0x86C7, 0x86C7, 0x14A9, 0x86CB, 0x86CB, 0x1070, 0x86D4, 0x86D4, 0x1F09,
+ 0x86D9, 0x86D9, 0x17D8, 0x86DB, 0x86DB, 0x1AE9, 0x86DF, 0x86DF, 0x0F2E,
+ 0x86E4, 0x86E4, 0x1DF2, 0x86ED, 0x86ED, 0x1B72, 0x86FE, 0x86FE, 0x1699,
+ 0x8700, 0x8700, 0x1C4D, 0x8702, 0x8702, 0x13F1, 0x8703, 0x8703, 0x1679,
+ 0x8708, 0x8708, 0x17BA, 0x8718, 0x8718, 0x1B3A, 0x871A, 0x871A, 0x145E,
+ 0x871C, 0x871C, 0x1314, 0x874E, 0x874E, 0x0DB4, 0x8755, 0x8755, 0x1662,
+ 0x8757, 0x8757, 0x1EF4, 0x875F, 0x875F, 0x189E, 0x8766, 0x8766, 0x1DC9,
+ 0x8768, 0x8768, 0x162C, 0x8774, 0x8774, 0x1E9B, 0x8776, 0x8776, 0x1A2F,
+ 0x8778, 0x8778, 0x17D9, 0x8782, 0x8782, 0x1142, 0x878D, 0x878D, 0x18E4,
+ 0x879F, 0x879F, 0x1297, 0x87A2, 0x87A2, 0x1E69, 0x87B3, 0x87B3, 0x1098,
+ 0x87BA, 0x87BA, 0x111B, 0x87C4, 0x87C4, 0x1CD0, 0x87E0, 0x87E0, 0x133E,
+ 0x87EC, 0x87EC, 0x1542, 0x87EF, 0x87EF, 0x1812, 0x87F2, 0x87F2, 0x1C8D,
+ 0x87F9, 0x87F9, 0x1E10, 0x87FB, 0x87FB, 0x1908, 0x87FE, 0x87FE, 0x155B,
+ 0x8805, 0x8805, 0x163A, 0x881F, 0x881F, 0x113B, 0x8822, 0x8822, 0x1B04,
+ 0x8823, 0x8823, 0x1164, 0x8831, 0x8831, 0x0EAE, 0x8836, 0x8836, 0x1984,
+ 0x883B, 0x883B, 0x124D, 0x8840, 0x8840, 0x1E4C, 0x8846, 0x8846, 0x1B0C,
+ 0x884C, 0x884C, 0x1E1D, 0x884D, 0x884D, 0x175D, 0x8852, 0x8852, 0x1E46,
+ 0x8853, 0x8853, 0x1624, 0x8857, 0x8857, 0x0D81, 0x8859, 0x8859, 0x169A,
+ 0x885B, 0x885B, 0x189F, 0x885D, 0x885D, 0x1C8E, 0x8861, 0x8861, 0x1E6A,
+ 0x8862, 0x8862, 0x0F5E, 0x8863, 0x8863, 0x1909, 0x8868, 0x8868, 0x1DA1,
+ 0x886B, 0x886B, 0x14CE, 0x8870, 0x8870, 0x15BD, 0x8872, 0x8872, 0x1037,
+ 0x8877, 0x8877, 0x1C8F, 0x887E, 0x887F, 0x0FCF, 0x8881, 0x8881, 0x1883,
+ 0x8882, 0x8882, 0x129B, 0x8888, 0x8888, 0x0D82, 0x888B, 0x888B, 0x10A6,
+ 0x888D, 0x888D, 0x1D8D, 0x8892, 0x8892, 0x1071, 0x8896, 0x8896, 0x15EA,
+ 0x8897, 0x8897, 0x1B5D, 0x889E, 0x889E, 0x0EC6, 0x88AB, 0x88AB, 0x1DB1,
+ 0x88B4, 0x88B4, 0x0EAF, 0x88C1, 0x88C1, 0x19B6, 0x88C2, 0x88C2, 0x1182,
+ 0x88CF, 0x88CF, 0x1218, 0x88D4, 0x88D4, 0x179A, 0x88D5, 0x88D5, 0x18C7,
+ 0x88D9, 0x88D9, 0x0F74, 0x88DC, 0x88DC, 0x13CE, 0x88DD, 0x88DD, 0x19A5,
+ 0x88DF, 0x88DF, 0x14AA, 0x88E1, 0x88E1, 0x1219, 0x88E8, 0x88E8, 0x145F,
+ 0x88F3, 0x88F3, 0x14EC, 0x88F4, 0x88F5, 0x1375, 0x88F8, 0x88F8, 0x111C,
+ 0x88FD, 0x88FD, 0x1A75, 0x8907, 0x8907, 0x13DD, 0x8910, 0x8910, 0x0DB3,
+ 0x8912, 0x8912, 0x1D8E, 0x8913, 0x8913, 0x13CF, 0x8918, 0x8918, 0x18A0,
+ 0x8919, 0x8919, 0x1377, 0x8925, 0x8925, 0x181C, 0x892A, 0x892A, 0x1D26,
+ 0x8936, 0x8936, 0x1630, 0x8938, 0x8938, 0x11DE, 0x893B, 0x893B, 0x1552,
+ 0x8941, 0x8941, 0x0DE3, 0x8944, 0x8944, 0x1709, 0x895F, 0x895F, 0x0FD1,
+ 0x8964, 0x8964, 0x1137, 0x896A, 0x896A, 0x1256, 0x8972, 0x8972, 0x1631,
+ 0x897F, 0x897F, 0x1515, 0x8981, 0x8981, 0x1813, 0x8983, 0x8983, 0x1086,
+ 0x8986, 0x8986, 0x13DE, 0x8987, 0x8987, 0x1D57, 0x898B, 0x898B, 0x0E3C,
+ 0x898F, 0x898F, 0x0FA5, 0x8993, 0x8993, 0x127E, 0x8996, 0x8996, 0x1652,
+ 0x89A1, 0x89A1, 0x0E33, 0x89A9, 0x89A9, 0x10CA, 0x89AA, 0x89AA, 0x1CC3,
+ 0x89B2, 0x89B2, 0x0FC2, 0x89BA, 0x89BA, 0x0D91, 0x89BD, 0x89BD, 0x1138,
+ 0x89C0, 0x89C0, 0x0EF7, 0x89D2, 0x89D2, 0x0D92, 0x89E3, 0x89E3, 0x1E11,
+ 0x89F4, 0x89F4, 0x14ED, 0x89F8, 0x89F8, 0x1C4E, 0x8A00, 0x8A00, 0x1721,
+ 0x8A02, 0x8A02, 0x1A59, 0x8A03, 0x8A03, 0x1413, 0x8A08, 0x8A08, 0x0E8C,
+ 0x8A0A, 0x8A0A, 0x167A, 0x8A0C, 0x8A0C, 0x1EB5, 0x8A0E, 0x8A0E, 0x1D1C,
+ 0x8A13, 0x8A13, 0x1F33, 0x8A16, 0x8A16, 0x1F5A, 0x8A17, 0x8A17, 0x1CEE,
+ 0x8A18, 0x8A18, 0x1012, 0x8A1B, 0x8A1B, 0x17DA, 0x8A1D, 0x8A1D, 0x169B,
+ 0x8A1F, 0x8A1F, 0x15B5, 0x8A23, 0x8A23, 0x0E45, 0x8A25, 0x8A25, 0x1056,
+ 0x8A2A, 0x8A2A, 0x1364, 0x8A2D, 0x8A2D, 0x1553, 0x8A31, 0x8A31, 0x1E2A,
+ 0x8A34, 0x8A34, 0x159A, 0x8A36, 0x8A36, 0x0D83, 0x8A3A, 0x8A3A, 0x1B5E,
+ 0x8A3B, 0x8A3B, 0x1AEA, 0x8A50, 0x8A50, 0x14AB, 0x8A54, 0x8A54, 0x1AA2,
+ 0x8A55, 0x8A55, 0x1D6D, 0x8A5B, 0x8A5B, 0x19D4, 0x8A5E, 0x8A5E, 0x14AC,
+ 0x8A60, 0x8A60, 0x1789, 0x8A62, 0x8A62, 0x161D, 0x8A63, 0x8A63, 0x179B,
+ 0x8A66, 0x8A66, 0x1653, 0x8A69, 0x8A69, 0x1654, 0x8A6D, 0x8A6D, 0x0F93,
+ 0x8A6E, 0x8A6E, 0x1A11, 0x8A70, 0x8A70, 0x1F77, 0x8A71, 0x8A71, 0x1EC1,
+ 0x8A72, 0x8A72, 0x1E12, 0x8A73, 0x8A73, 0x14EE, 0x8A75, 0x8A75, 0x1543,
+ 0x8A79, 0x8A79, 0x1C11, 0x8A85, 0x8A85, 0x1AEB, 0x8A87, 0x8A87, 0x0EE1,
+ 0x8A8C, 0x8A8C, 0x1B3B, 0x8A8D, 0x8A8D, 0x1939, 0x8A93, 0x8A93, 0x1516,
+ 0x8A95, 0x8A95, 0x1CF9, 0x8A98, 0x8A98, 0x18C8, 0x8A9E, 0x8A9E, 0x1714,
+ 0x8AA0, 0x8AA0, 0x1572, 0x8AA1, 0x8AA1, 0x0E8D, 0x8AA3, 0x8AA3, 0x12DE,
+ 0x8AA4, 0x8AA4, 0x17BB, 0x8AA5, 0x8AA5, 0x0EB0, 0x8AA6, 0x8AA6, 0x15B6,
+ 0x8AA8, 0x8AA8, 0x1F0A, 0x8AAA, 0x8AAA, 0x1554, 0x8AB0, 0x8AB0, 0x15EB,
+ 0x8AB2, 0x8AB2, 0x0EE2, 0x8AB9, 0x8AB9, 0x1460, 0x8ABC, 0x8ABC, 0x190A,
+ 0x8ABE, 0x8ABE, 0x18E9, 0x8ABF, 0x8ABF, 0x1AA3, 0x8AC2, 0x8AC2, 0x1C12,
+ 0x8AC4, 0x8AC4, 0x161E, 0x8AC7, 0x8AC7, 0x1087, 0x8ACB, 0x8ACB, 0x1C22,
+ 0x8ACD, 0x8ACD, 0x19BD, 0x8ACF, 0x8ACF, 0x1C6C, 0x8AD2, 0x8AD2, 0x1155,
+ 0x8AD6, 0x8AD6, 0x11B7, 0x8ADB, 0x8ADB, 0x18C9, 0x8ADC, 0x8ADC, 0x1C1A,
+ 0x8AE1, 0x8AE1, 0x1655, 0x8AE6, 0x8AE6, 0x1C2A, 0x8AE7, 0x8AE7, 0x1E13,
+ 0x8AEA, 0x8AEA, 0x1A5A, 0x8AEB, 0x8AEB, 0x0DAA, 0x8AED, 0x8AED, 0x18CA,
+ 0x8AEE, 0x8AEE, 0x196A, 0x8AF1, 0x8AF1, 0x1F42, 0x8AF6, 0x8AF6, 0x168A,
+ 0x8AF7, 0x8AF7, 0x1DA9, 0x8AF8, 0x8AF8, 0x1A76, 0x8AFA, 0x8AFA, 0x1722,
+ 0x8AFE, 0x8AFE, 0x102B, 0x8B00, 0x8B00, 0x12B1, 0x8B01, 0x8B01, 0x16BA,
+ 0x8B02, 0x8B02, 0x18A1, 0x8B04, 0x8B04, 0x1113, 0x8B0E, 0x8B0E, 0x1302,
+ 0x8B10, 0x8B10, 0x1315, 0x8B14, 0x8B14, 0x1DD1, 0x8B16, 0x8B16, 0x15A7,
+ 0x8B17, 0x8B17, 0x1365, 0x8B19, 0x8B19, 0x0E49, 0x8B1A, 0x8B1A, 0x192A,
+ 0x8B1B, 0x8B1B, 0x0DE4, 0x8B1D, 0x8B1D, 0x14AD, 0x8B20, 0x8B20, 0x1814,
+ 0x8B28, 0x8B28, 0x12B2, 0x8B2B, 0x8B2B, 0x19EA, 0x8B2C, 0x8B2C, 0x11ED,
+ 0x8B33, 0x8B33, 0x0F5F, 0x8B39, 0x8B39, 0x0FC3, 0x8B41, 0x8B41, 0x1EC2,
+ 0x8B49, 0x8B49, 0x1B1C, 0x8B4E, 0x8B4E, 0x1F4B, 0x8B4F, 0x8B4F, 0x1013,
+ 0x8B58, 0x8B58, 0x1663, 0x8B5A, 0x8B5A, 0x1088, 0x8B5C, 0x8B5C, 0x13D0,
+ 0x8B66, 0x8B66, 0x0E71, 0x8B6C, 0x8B6C, 0x1461, 0x8B6F, 0x8B6F, 0x1741,
+ 0x8B70, 0x8B70, 0x190B, 0x8B74, 0x8B74, 0x0E3D, 0x8B77, 0x8B77, 0x1E9C,
+ 0x8B7D, 0x8B7D, 0x179C, 0x8B80, 0x8B80, 0x10DE, 0x8B8A, 0x8B8A, 0x13A9,
+ 0x8B90, 0x8B90, 0x15EC, 0x8B92, 0x8B92, 0x1BB2, 0x8B93, 0x8B93, 0x170A,
+ 0x8B96, 0x8B96, 0x1BB3, 0x8B9A, 0x8B9A, 0x1BA0, 0x8C37, 0x8C37, 0x0EBC,
+ 0x8C3F, 0x8C3F, 0x0E8E, 0x8C41, 0x8C41, 0x1EDE, 0x8C46, 0x8C46, 0x1103,
+ 0x8C48, 0x8C48, 0x1014, 0x8C4A, 0x8C4A, 0x1DAA, 0x8C4C, 0x8C4C, 0x17EA,
+ 0x8C55, 0x8C55, 0x1656, 0x8C5A, 0x8C5A, 0x10E7, 0x8C61, 0x8C61, 0x14EF,
+ 0x8C6A, 0x8C6A, 0x1E9D, 0x8C6B, 0x8C6B, 0x179D, 0x8C79, 0x8C79, 0x1DA2,
+ 0x8C7A, 0x8C7A, 0x1657, 0x8C82, 0x8C82, 0x1C44, 0x8C8A, 0x8C8A, 0x1273,
+ 0x8C8C, 0x8C8C, 0x12B3, 0x8C9D, 0x8C9D, 0x1D58, 0x8C9E, 0x8C9E, 0x1A5B,
+ 0x8CA0, 0x8CA0, 0x1414, 0x8CA1, 0x8CA1, 0x19B7, 0x8CA2, 0x8CA2, 0x0ED8,
+ 0x8CA7, 0x8CA7, 0x1472, 0x8CA8, 0x8CA8, 0x1EC3, 0x8CA9, 0x8CA9, 0x1D47,
+ 0x8CAA, 0x8CAA, 0x1CFF, 0x8CAB, 0x8CAB, 0x0EF8, 0x8CAC, 0x8CAC, 0x1BD9,
+ 0x8CAF, 0x8CAF, 0x19D5, 0x8CB0, 0x8CB0, 0x157B, 0x8CB3, 0x8CB3, 0x1921,
+ 0x8CB4, 0x8CB4, 0x0F98, 0x8CB6, 0x8CB6, 0x1D68, 0x8CB7, 0x8CB7, 0x126E,
+ 0x8CB8, 0x8CB8, 0x10A7, 0x8CBB, 0x8CBB, 0x1462, 0x8CBC, 0x8CBC, 0x1C1B,
+ 0x8CBD, 0x8CBD, 0x1920, 0x8CBF, 0x8CBF, 0x12DF, 0x8CC0, 0x8CC0, 0x1DCA,
+ 0x8CC1, 0x8CC1, 0x1431, 0x8CC2, 0x8CC2, 0x11C3, 0x8CC3, 0x8CC3, 0x194C,
+ 0x8CC4, 0x8CC4, 0x1F0B, 0x8CC7, 0x8CC7, 0x196B, 0x8CC8, 0x8CC8, 0x0D84,
+ 0x8CCA, 0x8CCA, 0x19EB, 0x8CD1, 0x8CD1, 0x1B5F, 0x8CD3, 0x8CD3, 0x1473,
+ 0x8CDA, 0x8CDA, 0x11C4, 0x8CDC, 0x8CDC, 0x14AE, 0x8CDE, 0x8CDE, 0x14F0,
+ 0x8CE0, 0x8CE0, 0x1378, 0x8CE2, 0x8CE2, 0x1E47, 0x8CE3, 0x8CE3, 0x126F,
+ 0x8CE4, 0x8CE4, 0x1BF8, 0x8CE6, 0x8CE6, 0x1415, 0x8CEA, 0x8CEA, 0x1B73,
+ 0x8CED, 0x8CED, 0x10CB, 0x8CF4, 0x8CF4, 0x11C5, 0x8CFB, 0x8CFB, 0x1416,
+ 0x8CFC, 0x8CFC, 0x0F60, 0x8CFD, 0x8CFD, 0x14F4, 0x8D04, 0x8D04, 0x1B3C,
+ 0x8D05, 0x8D05, 0x1C93, 0x8D07, 0x8D07, 0x18DD, 0x8D08, 0x8D08, 0x1B1D,
+ 0x8D0A, 0x8D0A, 0x1BA1, 0x8D0D, 0x8D0D, 0x155C, 0x8D13, 0x8D13, 0x19A6,
+ 0x8D16, 0x8D16, 0x15A8, 0x8D64, 0x8D64, 0x19EC, 0x8D66, 0x8D66, 0x14AF,
+ 0x8D6B, 0x8D6B, 0x1E34, 0x8D70, 0x8D70, 0x1AEC, 0x8D73, 0x8D73, 0x0FA6,
+ 0x8D74, 0x8D74, 0x1417, 0x8D77, 0x8D77, 0x1015, 0x8D85, 0x8D85, 0x1C45,
+ 0x8D8A, 0x8D8A, 0x188A, 0x8D99, 0x8D99, 0x1AA4, 0x8DA3, 0x8DA3, 0x1C9E,
+ 0x8DA8, 0x8DA8, 0x1C6D, 0x8DB3, 0x8DB3, 0x1AAE, 0x8DBA, 0x8DBA, 0x1418,
+ 0x8DBE, 0x8DBE, 0x1B3D, 0x8DC6, 0x8DC6, 0x1D12, 0x8DCB, 0x8DCB, 0x1348,
+ 0x8DCC, 0x8DCC, 0x1B74, 0x8DCF, 0x8DCF, 0x0D85, 0x8DDB, 0x8DDB, 0x1D40,
+ 0x8DDD, 0x8DDD, 0x0E0C, 0x8DE1, 0x8DE1, 0x19ED, 0x8DE3, 0x8DE3, 0x1544,
+ 0x8DE8, 0x8DE8, 0x0EE3, 0x8DEF, 0x8DEF, 0x11AA, 0x8DF3, 0x8DF3, 0x10CC,
+ 0x8E0A, 0x8E0A, 0x1832, 0x8E0F, 0x8E0F, 0x108D, 0x8E10, 0x8E10, 0x1BF9,
+ 0x8E1E, 0x8E1E, 0x0E0D, 0x8E2A, 0x8E2A, 0x1AC2, 0x8E30, 0x8E30, 0x18CB,
+ 0x8E35, 0x8E35, 0x1AC3, 0x8E42, 0x8E42, 0x18CC, 0x8E44, 0x8E44, 0x1A77,
+ 0x8E47, 0x8E47, 0x0E1A, 0x8E48, 0x8E48, 0x10CD, 0x8E49, 0x8E49, 0x1B8C,
+ 0x8E4A, 0x8E4A, 0x1E75, 0x8E59, 0x8E59, 0x1C80, 0x8E5F, 0x8E5F, 0x19EE,
+ 0x8E60, 0x8E60, 0x1BE9, 0x8E74, 0x8E74, 0x1C81, 0x8E76, 0x8E76, 0x0F8E,
+ 0x8E81, 0x8E81, 0x1AA5, 0x8E87, 0x8E87, 0x19D6, 0x8E8A, 0x8E8A, 0x1AED,
+ 0x8E8D, 0x8E8D, 0x16F6, 0x8EAA, 0x8EAA, 0x1223, 0x8EAB, 0x8EAB, 0x167B,
+ 0x8EAC, 0x8EAC, 0x0F80, 0x8EC0, 0x8EC0, 0x0F61, 0x8ECA, 0x8ECA, 0x1B8D,
+ 0x8ECB, 0x8ECB, 0x16BB, 0x8ECC, 0x8ECC, 0x0F94, 0x8ECD, 0x8ECD, 0x0F75,
+ 0x8ED2, 0x8ED2, 0x1E2E, 0x8EDF, 0x8EDF, 0x175E, 0x8EEB, 0x8EEB, 0x1B60,
+ 0x8EF8, 0x8EF8, 0x1C82, 0x8EFB, 0x8EFB, 0x0D86, 0x8EFE, 0x8EFE, 0x1664,
+ 0x8F03, 0x8F03, 0x0F2F, 0x8F05, 0x8F05, 0x11AB, 0x8F09, 0x8F09, 0x19B8,
+ 0x8F12, 0x8F12, 0x1C1C, 0x8F13, 0x8F13, 0x124E, 0x8F14, 0x8F14, 0x13D1,
+ 0x8F15, 0x8F15, 0x0E72, 0x8F1B, 0x8F1B, 0x1156, 0x8F1C, 0x8F1C, 0x1CBC,
+ 0x8F1D, 0x8F1D, 0x1F43, 0x8F1E, 0x8F1E, 0x1262, 0x8F1F, 0x8F1F, 0x1C06,
+ 0x8F26, 0x8F26, 0x117A, 0x8F27, 0x8F27, 0x13BF, 0x8F29, 0x8F29, 0x1379,
+ 0x8F2A, 0x8F2A, 0x11F7, 0x8F2F, 0x8F2F, 0x1B7B, 0x8F33, 0x8F33, 0x1AEE,
+ 0x8F38, 0x8F38, 0x15ED, 0x8F39, 0x8F39, 0x13DF, 0x8F3B, 0x8F3B, 0x13E0,
+ 0x8F3E, 0x8F3E, 0x1A12, 0x8F3F, 0x8F3F, 0x1738, 0x8F44, 0x8F44, 0x1DE2,
+ 0x8F45, 0x8F45, 0x1884, 0x8F49, 0x8F49, 0x1A13, 0x8F4D, 0x8F4D, 0x1C07,
+ 0x8F4E, 0x8F4E, 0x0F30, 0x8F5D, 0x8F5D, 0x1739, 0x8F5F, 0x8F5F, 0x0F1B,
+ 0x8F62, 0x8F62, 0x116F, 0x8F9B, 0x8F9B, 0x167C, 0x8F9C, 0x8F9C, 0x0EB1,
+ 0x8FA3, 0x8FA3, 0x112E, 0x8FA6, 0x8FA6, 0x1D48, 0x8FA8, 0x8FA8, 0x13AA,
+ 0x8FAD, 0x8FAD, 0x14B0, 0x8FAF, 0x8FAF, 0x13AB, 0x8FB0, 0x8FB0, 0x1B61,
+ 0x8FB1, 0x8FB1, 0x181D, 0x8FB2, 0x8FB2, 0x1051, 0x8FC2, 0x8FC2, 0x184E,
+ 0x8FC5, 0x8FC5, 0x167D, 0x8FCE, 0x8FCE, 0x178A, 0x8FD1, 0x8FD1, 0x0FC4,
+ 0x8FD4, 0x8FD4, 0x133F, 0x8FE6, 0x8FE6, 0x0D87, 0x8FEA, 0x8FEA, 0x19EF,
+ 0x8FEB, 0x8FEB, 0x1326, 0x8FED, 0x8FED, 0x1B75, 0x8FF0, 0x8FF0, 0x1625,
+ 0x8FF2, 0x8FF2, 0x0E2A, 0x8FF7, 0x8FF7, 0x1303, 0x8FF9, 0x8FF9, 0x19F0,
+ 0x8FFD, 0x8FFD, 0x1C6E, 0x9000, 0x9000, 0x1D27, 0x9001, 0x9001, 0x15B7,
+ 0x9002, 0x9002, 0x0EFE, 0x9003, 0x9003, 0x10CE, 0x9005, 0x9005, 0x1F2A,
+ 0x9006, 0x9006, 0x1742, 0x9008, 0x9008, 0x1E6B, 0x900B, 0x900B, 0x1D8F,
+ 0x900D, 0x900D, 0x159B, 0x900F, 0x900F, 0x1D2D, 0x9010, 0x9010, 0x1C83,
+ 0x9011, 0x9011, 0x0F62, 0x9014, 0x9014, 0x10CF, 0x9015, 0x9015, 0x0E73,
+ 0x9017, 0x9017, 0x1104, 0x9019, 0x9019, 0x19D7, 0x901A, 0x901A, 0x1D22,
+ 0x901D, 0x901D, 0x1517, 0x901E, 0x901E, 0x1194, 0x901F, 0x901F, 0x15A9,
+ 0x9020, 0x9020, 0x1AA6, 0x9021, 0x9021, 0x1B05, 0x9022, 0x9022, 0x13F2,
+ 0x9023, 0x9023, 0x117B, 0x902E, 0x902E, 0x1C2B, 0x9031, 0x9031, 0x1AEF,
+ 0x9032, 0x9032, 0x1B62, 0x9035, 0x9035, 0x0FA7, 0x9038, 0x9038, 0x1942,
+ 0x903C, 0x903C, 0x1DBF, 0x903E, 0x903E, 0x18CE, 0x9041, 0x9041, 0x1109,
+ 0x9042, 0x9042, 0x15EE, 0x9047, 0x9047, 0x184F, 0x904A, 0x904A, 0x18CD,
+ 0x904B, 0x904B, 0x1866, 0x904D, 0x904D, 0x1D65, 0x904E, 0x904E, 0x0EE4,
+ 0x9050, 0x9050, 0x1DCB, 0x9051, 0x9051, 0x1EF5, 0x9053, 0x9053, 0x10D0,
+ 0x9054, 0x9054, 0x1078, 0x9055, 0x9055, 0x18A2, 0x9059, 0x9059, 0x1815,
+ 0x905C, 0x905C, 0x15AE, 0x905D, 0x905D, 0x108E, 0x905E, 0x905E, 0x1C2C,
+ 0x9060, 0x9060, 0x1885, 0x9061, 0x9061, 0x159C, 0x9063, 0x9063, 0x0E3E,
+ 0x9069, 0x9069, 0x19F1, 0x906D, 0x906D, 0x1AA7, 0x906E, 0x906E, 0x1B8E,
+ 0x906F, 0x906F, 0x110A, 0x9072, 0x9072, 0x1B3E, 0x9075, 0x9075, 0x1B06,
+ 0x9077, 0x9077, 0x1BFA, 0x9078, 0x9078, 0x1545, 0x907A, 0x907A, 0x18CF,
+ 0x907C, 0x907C, 0x11D1, 0x907D, 0x907D, 0x0E0E, 0x907F, 0x907F, 0x1DB2,
+ 0x9080, 0x9080, 0x1816, 0x9081, 0x9081, 0x1270, 0x9082, 0x9082, 0x1E14,
+ 0x9083, 0x9083, 0x15EF, 0x9084, 0x9084, 0x1ED8, 0x9087, 0x9087, 0x1922,
+ 0x9088, 0x9088, 0x123D, 0x908A, 0x908A, 0x13AC, 0x908F, 0x908F, 0x111D,
+ 0x9091, 0x9091, 0x18F5, 0x9095, 0x9095, 0x17D0, 0x9099, 0x9099, 0x1263,
+ 0x90A2, 0x90A2, 0x1E6C, 0x90A3, 0x90A3, 0x102A, 0x90A6, 0x90A6, 0x1366,
+ 0x90A8, 0x90A8, 0x1C52, 0x90AA, 0x90AA, 0x14B1, 0x90AF, 0x90AF, 0x0DC6,
+ 0x90B0, 0x90B0, 0x1D13, 0x90B1, 0x90B1, 0x0F63, 0x90B5, 0x90B5, 0x159D,
+ 0x90B8, 0x90B8, 0x19D8, 0x90C1, 0x90C1, 0x185C, 0x90CA, 0x90CA, 0x0F31,
+ 0x90DE, 0x90DE, 0x1143, 0x90E1, 0x90E1, 0x0F76, 0x90E8, 0x90E8, 0x1419,
+ 0x90ED, 0x90ED, 0x0EEA, 0x90F5, 0x90F5, 0x1850, 0x90FD, 0x90FD, 0x10D1,
+ 0x9102, 0x9102, 0x16AA, 0x9112, 0x9112, 0x1C6F, 0x9115, 0x9115, 0x1E22,
+ 0x9119, 0x9119, 0x1463, 0x9127, 0x9127, 0x1114, 0x912D, 0x912D, 0x1A5C,
+ 0x9132, 0x9132, 0x1072, 0x9149, 0x9149, 0x18D0, 0x914A, 0x914A, 0x1A5D,
+ 0x914B, 0x914B, 0x1C70, 0x914C, 0x914C, 0x1977, 0x914D, 0x914D, 0x137A,
+ 0x914E, 0x914E, 0x1AF0, 0x9152, 0x9152, 0x1AF1, 0x9162, 0x9162, 0x1C46,
+ 0x9169, 0x9169, 0x1298, 0x916A, 0x916A, 0x1123, 0x916C, 0x916C, 0x15F0,
+ 0x9175, 0x9175, 0x1F1C, 0x9177, 0x9177, 0x1EA3, 0x9178, 0x9178, 0x14C1,
+ 0x9187, 0x9187, 0x161F, 0x9189, 0x9189, 0x1C9F, 0x918B, 0x918B, 0x1C47,
+ 0x918D, 0x918D, 0x1A78, 0x9192, 0x9192, 0x1573, 0x919C, 0x919C, 0x1C71,
+ 0x91AB, 0x91AB, 0x190C, 0x91AC, 0x91AC, 0x19A7, 0x91AE, 0x91AE, 0x1C48,
+ 0x91AF, 0x91AF, 0x1E76, 0x91B1, 0x91B1, 0x1349, 0x91B4, 0x91B4, 0x119D,
+ 0x91B5, 0x91B5, 0x0E00, 0x91C0, 0x91C0, 0x170B, 0x91C7, 0x91C7, 0x1BD4,
+ 0x91C9, 0x91C9, 0x18D1, 0x91CB, 0x91CB, 0x1528, 0x91CC, 0x91CC, 0x121A,
+ 0x91CD, 0x91CD, 0x1B0D, 0x91CE, 0x91CE, 0x16EF, 0x91CF, 0x91CF, 0x1157,
+ 0x91D0, 0x91D0, 0x121B, 0x91D1, 0x91D1, 0x1023, 0x91D7, 0x91D7, 0x15BE,
+ 0x91D8, 0x91D8, 0x1A5E, 0x91DC, 0x91DC, 0x141A, 0x91DD, 0x91DD, 0x1CCE,
+ 0x91E3, 0x91E3, 0x1AA8, 0x91E7, 0x91E7, 0x1BFB, 0x91EA, 0x91EA, 0x1851,
+ 0x91F5, 0x91F5, 0x1BD5, 0x920D, 0x920D, 0x110B, 0x9210, 0x9210, 0x0E26,
+ 0x9211, 0x9211, 0x1D49, 0x9212, 0x9212, 0x14D1, 0x9217, 0x9217, 0x18DE,
+ 0x921E, 0x921E, 0x0FAE, 0x9234, 0x9234, 0x1195, 0x923A, 0x923A, 0x17C2,
+ 0x923F, 0x923F, 0x1A14, 0x9240, 0x9240, 0x0DCE, 0x9245, 0x9245, 0x0E0F,
+ 0x9249, 0x9249, 0x1E48, 0x9257, 0x9257, 0x0E4A, 0x925B, 0x925B, 0x175F,
+ 0x925E, 0x925E, 0x188B, 0x9262, 0x9262, 0x134A, 0x9264, 0x9264, 0x0F64,
+ 0x9265, 0x9265, 0x1626, 0x9266, 0x9266, 0x1A5F, 0x9280, 0x9280, 0x18EA,
+ 0x9283, 0x9283, 0x1C5C, 0x9285, 0x9285, 0x10FB, 0x9291, 0x9291, 0x1546,
+ 0x9293, 0x9293, 0x1A15, 0x9296, 0x9296, 0x15F1, 0x9298, 0x9298, 0x1299,
+ 0x929C, 0x929C, 0x1DEC, 0x92B3, 0x92B3, 0x179E, 0x92B6, 0x92B6, 0x0F65,
+ 0x92B7, 0x92B7, 0x159E, 0x92B9, 0x92B9, 0x15F2, 0x92CC, 0x92CC, 0x1A60,
+ 0x92CF, 0x92CF, 0x1E59, 0x92D2, 0x92D2, 0x13F3, 0x92E4, 0x92E4, 0x1518,
+ 0x92EA, 0x92EA, 0x1D90, 0x92F8, 0x92F8, 0x0E10, 0x92FC, 0x92FC, 0x0DE5,
+ 0x9304, 0x9304, 0x11B4, 0x9310, 0x9310, 0x1C72, 0x9318, 0x9318, 0x1C73,
+ 0x931A, 0x931A, 0x19BE, 0x931E, 0x931E, 0x1620, 0x931F, 0x931F, 0x1089,
+ 0x9320, 0x9320, 0x1A61, 0x9321, 0x9321, 0x1016, 0x9322, 0x9322, 0x1A16,
+ 0x9324, 0x9324, 0x1017, 0x9326, 0x9326, 0x0FD2, 0x9328, 0x9328, 0x12CB,
+ 0x932B, 0x932B, 0x1529, 0x932E, 0x932E, 0x0EB2, 0x932F, 0x932F, 0x1B93,
+ 0x9348, 0x9348, 0x178B, 0x934A, 0x934A, 0x117C, 0x934B, 0x934B, 0x0EE5,
+ 0x934D, 0x934D, 0x10D2, 0x9354, 0x9354, 0x16AB, 0x935B, 0x935B, 0x1073,
+ 0x936E, 0x936E, 0x18D2, 0x9375, 0x9375, 0x0E1B, 0x937C, 0x937C, 0x1CCF,
+ 0x937E, 0x937E, 0x1AC4, 0x938C, 0x938C, 0x0E4B, 0x9394, 0x9394, 0x1833,
+ 0x9396, 0x9396, 0x15BC, 0x939A, 0x939A, 0x1C74, 0x93A3, 0x93A3, 0x1E6D,
+ 0x93A7, 0x93A7, 0x0DF9, 0x93AC, 0x93AC, 0x1E9E, 0x93AD, 0x93AD, 0x1B63,
+ 0x93B0, 0x93B0, 0x1943, 0x93C3, 0x93C3, 0x1AAF, 0x93D1, 0x93D1, 0x19F2,
+ 0x93DE, 0x93DE, 0x1834, 0x93E1, 0x93E1, 0x0E74, 0x93E4, 0x93E4, 0x11DF,
+ 0x93F6, 0x93F6, 0x1B7C, 0x9404, 0x9404, 0x1F10, 0x9418, 0x9418, 0x1AC5,
+ 0x9425, 0x9425, 0x1547, 0x942B, 0x942B, 0x1A17, 0x9435, 0x9435, 0x1C08,
+ 0x9438, 0x9438, 0x1CEF, 0x9444, 0x9444, 0x1AF2, 0x9451, 0x9452, 0x0DC7,
+ 0x945B, 0x945B, 0x0F0B, 0x947D, 0x947D, 0x1BA2, 0x947F, 0x947F, 0x1B94,
+ 0x9577, 0x9577, 0x19A8, 0x9580, 0x9580, 0x12EE, 0x9583, 0x9583, 0x155D,
+ 0x9589, 0x9589, 0x1D76, 0x958B, 0x958B, 0x0DFA, 0x958F, 0x958F, 0x18DF,
+ 0x9591, 0x9592, 0x1DDD, 0x9593, 0x9593, 0x0DAB, 0x9594, 0x9594, 0x1312,
+ 0x9598, 0x9598, 0x0DCF, 0x95A3, 0x95A3, 0x0D93, 0x95A4, 0x95A4, 0x1DF3,
+ 0x95A5, 0x95A5, 0x1390, 0x95A8, 0x95A8, 0x0FA8, 0x95AD, 0x95AD, 0x1165,
+ 0x95B1, 0x95B1, 0x1764, 0x95BB, 0x95BB, 0x176C, 0x95BC, 0x95BC, 0x16BC,
+ 0x95C7, 0x95C7, 0x16C4, 0x95CA, 0x95CA, 0x1EDF, 0x95D4, 0x95D4, 0x1DF4,
+ 0x95D5, 0x95D5, 0x0F8F, 0x95D6, 0x95D6, 0x1D31, 0x95DC, 0x95DC, 0x0EF9,
+ 0x95E1, 0x95E1, 0x1BFC, 0x95E2, 0x95E2, 0x13A5, 0x961C, 0x961C, 0x141B,
+ 0x9621, 0x9621, 0x1BFD, 0x962A, 0x962A, 0x1D4A, 0x962E, 0x962E, 0x17EB,
+ 0x9632, 0x9632, 0x1367, 0x963B, 0x963B, 0x1AA9, 0x963F, 0x963F, 0x169C,
+ 0x9640, 0x9640, 0x1CDF, 0x9642, 0x9642, 0x1DB3, 0x9644, 0x9644, 0x141C,
+ 0x964B, 0x964B, 0x11E0, 0x964C, 0x964C, 0x1274, 0x964D, 0x964D, 0x0DE6,
+ 0x9650, 0x9650, 0x1DDF, 0x965B, 0x965B, 0x1D77, 0x965C, 0x965C, 0x1DF5,
+ 0x965D, 0x965D, 0x155E, 0x965E, 0x965E, 0x163B, 0x965F, 0x965F, 0x1BEA,
+ 0x9662, 0x9662, 0x1886, 0x9663, 0x9663, 0x1B64, 0x9664, 0x9664, 0x1A79,
+ 0x966A, 0x966A, 0x137B, 0x9670, 0x9670, 0x18F0, 0x9673, 0x9673, 0x1B65,
+ 0x9675, 0x9675, 0x1204, 0x9676, 0x9676, 0x10D3, 0x9677, 0x9677, 0x1DED,
+ 0x9678, 0x9678, 0x11F1, 0x967D, 0x967D, 0x170C, 0x9685, 0x9685, 0x1852,
+ 0x9686, 0x9686, 0x11FB, 0x968A, 0x968A, 0x10A8, 0x968B, 0x968B, 0x15F3,
+ 0x968D, 0x968D, 0x1EF6, 0x968E, 0x968E, 0x0E8F, 0x9694, 0x9694, 0x0E34,
+ 0x9695, 0x9695, 0x1867, 0x9698, 0x9698, 0x16D9, 0x9699, 0x9699, 0x0FB6,
+ 0x969B, 0x969B, 0x1A7A, 0x969C, 0x969C, 0x19A9, 0x96A3, 0x96A3, 0x1224,
+ 0x96A7, 0x96A8, 0x15F4, 0x96AA, 0x96AA, 0x1E30, 0x96B1, 0x96B1, 0x18EB,
+ 0x96B7, 0x96B7, 0x119E, 0x96BB, 0x96BB, 0x1BEB, 0x96C0, 0x96C0, 0x1978,
+ 0x96C1, 0x96C1, 0x16B5, 0x96C4, 0x96C4, 0x186E, 0x96C5, 0x96C5, 0x169D,
+ 0x96C6, 0x96C6, 0x1B7D, 0x96C7, 0x96C7, 0x0EB3, 0x96C9, 0x96C9, 0x1CBD,
+ 0x96CB, 0x96CB, 0x1B07, 0x96CC, 0x96CC, 0x196C, 0x96CD, 0x96CD, 0x17D1,
+ 0x96CE, 0x96CE, 0x19D9, 0x96D5, 0x96D5, 0x1AAA, 0x96D6, 0x96D6, 0x15F6,
+ 0x96D9, 0x96D9, 0x168D, 0x96DB, 0x96DB, 0x1C75, 0x96DC, 0x96DC, 0x1985,
+ 0x96E2, 0x96E2, 0x121C, 0x96E3, 0x96E3, 0x102E, 0x96E8, 0x96E9, 0x1853,
+ 0x96EA, 0x96EA, 0x1555, 0x96EF, 0x96EF, 0x12EF, 0x96F0, 0x96F0, 0x1432,
+ 0x96F2, 0x96F2, 0x1868, 0x96F6, 0x96F6, 0x1196, 0x96F7, 0x96F7, 0x11C6,
+ 0x96F9, 0x96F9, 0x1327, 0x96FB, 0x96FB, 0x1A18, 0x9700, 0x9700, 0x15F7,
+ 0x9706, 0x9706, 0x1A62, 0x9707, 0x9707, 0x1B66, 0x9711, 0x9711, 0x1A2A,
+ 0x9713, 0x9713, 0x179F, 0x9716, 0x9716, 0x122B, 0x9719, 0x9719, 0x178C,
+ 0x971C, 0x971C, 0x14F1, 0x971E, 0x971E, 0x1DCC, 0x9727, 0x9727, 0x12E0,
+ 0x9730, 0x9730, 0x14C2, 0x9732, 0x9732, 0x11AC, 0x9739, 0x9739, 0x13A6,
+ 0x973D, 0x973D, 0x1A7B, 0x9742, 0x9742, 0x1170, 0x9744, 0x9744, 0x16DA,
+ 0x9748, 0x9748, 0x1197, 0x9751, 0x9751, 0x1C23, 0x9756, 0x9756, 0x1A63,
+ 0x975C, 0x975C, 0x1A64, 0x975E, 0x975E, 0x1464, 0x9761, 0x9761, 0x1304,
+ 0x9762, 0x9762, 0x1288, 0x9769, 0x9769, 0x1E35, 0x976D, 0x976D, 0x193A,
+ 0x9774, 0x9774, 0x1EC4, 0x9777, 0x9777, 0x193B, 0x977A, 0x977A, 0x1257,
+ 0x978B, 0x978B, 0x1E77, 0x978D, 0x978D, 0x16B6, 0x978F, 0x978F, 0x0ED9,
+ 0x97A0, 0x97A0, 0x0F6E, 0x97A8, 0x97A8, 0x0DB5, 0x97AB, 0x97AB, 0x0F6F,
+ 0x97AD, 0x97AD, 0x1D66, 0x97C6, 0x97C6, 0x1BFE, 0x97CB, 0x97CB, 0x18A3,
+ 0x97D3, 0x97D3, 0x1DE0, 0x97DC, 0x97DC, 0x10D4, 0x97F3, 0x97F3, 0x18F1,
+ 0x97F6, 0x97F6, 0x159F, 0x97FB, 0x97FB, 0x1869, 0x97FF, 0x97FF, 0x1E23,
+ 0x9800, 0x9800, 0x1E9F, 0x9801, 0x9801, 0x1E4D, 0x9802, 0x9802, 0x1A65,
+ 0x9803, 0x9803, 0x0E75, 0x9805, 0x9805, 0x1E04, 0x9806, 0x9806, 0x1621,
+ 0x9808, 0x9808, 0x15F8, 0x980A, 0x980A, 0x185D, 0x980C, 0x980C, 0x15B8,
+ 0x9810, 0x9810, 0x17A0, 0x9811, 0x9811, 0x17EC, 0x9812, 0x9812, 0x1340,
+ 0x9813, 0x9813, 0x10E8, 0x9817, 0x9817, 0x1D41, 0x9818, 0x9818, 0x1198,
+ 0x982D, 0x982D, 0x1105, 0x9830, 0x9830, 0x1E5A, 0x9838, 0x9838, 0x0E76,
+ 0x9839, 0x9839, 0x1D28, 0x983B, 0x983B, 0x1474, 0x9846, 0x9846, 0x0EE6,
+ 0x984C, 0x984C, 0x1A7C, 0x984D, 0x984D, 0x16E1, 0x984E, 0x984E, 0x16AC,
+ 0x9854, 0x9854, 0x16B7, 0x9858, 0x9858, 0x1887, 0x985A, 0x985A, 0x1A19,
+ 0x985E, 0x985E, 0x11EE, 0x9865, 0x9865, 0x1EA0, 0x9867, 0x9867, 0x0EB4,
+ 0x986B, 0x986B, 0x1A1A, 0x986F, 0x986F, 0x1E49, 0x98A8, 0x98A8, 0x1DAB,
+ 0x98AF, 0x98AF, 0x14D2, 0x98B1, 0x98B1, 0x1D14, 0x98C4, 0x98C4, 0x1DA4,
+ 0x98C7, 0x98C7, 0x1DA3, 0x98DB, 0x98DB, 0x1465, 0x98DC, 0x98DC, 0x138C,
+ 0x98DF, 0x98DF, 0x1665, 0x98E1, 0x98E1, 0x15AF, 0x98E2, 0x98E2, 0x1018,
+ 0x98ED, 0x98ED, 0x1CC2, 0x98EE, 0x98EE, 0x18F2, 0x98EF, 0x98EF, 0x1341,
+ 0x98F4, 0x98F4, 0x1923, 0x98FC, 0x98FC, 0x14B2, 0x98FD, 0x98FD, 0x1D91,
+ 0x98FE, 0x98FE, 0x1666, 0x9903, 0x9903, 0x0F32, 0x9909, 0x9909, 0x1E24,
+ 0x990A, 0x990A, 0x170D, 0x990C, 0x990C, 0x1924, 0x9910, 0x9910, 0x1BA3,
+ 0x9913, 0x9913, 0x169E, 0x9918, 0x9918, 0x173A, 0x991E, 0x991E, 0x1A1B,
+ 0x9920, 0x9920, 0x13C0, 0x9928, 0x9928, 0x0EFA, 0x9945, 0x9945, 0x124F,
+ 0x9949, 0x9949, 0x0FC5, 0x994B, 0x994B, 0x0F95, 0x994C, 0x994C, 0x1BA4,
+ 0x994D, 0x994D, 0x1548, 0x9951, 0x9951, 0x1019, 0x9952, 0x9952, 0x1817,
+ 0x9954, 0x9954, 0x17D2, 0x9957, 0x9957, 0x1E25, 0x9996, 0x9996, 0x15F9,
+ 0x9999, 0x9999, 0x1E26, 0x999D, 0x999D, 0x1DBD, 0x99A5, 0x99A5, 0x13E1,
+ 0x99A8, 0x99A8, 0x1E6E, 0x99AC, 0x99AC, 0x1235, 0x99AD, 0x99AD, 0x1715,
+ 0x99AE, 0x99AE, 0x1DAC, 0x99B1, 0x99B1, 0x1CE0, 0x99B3, 0x99B3, 0x1CBE,
+ 0x99B4, 0x99B4, 0x1622, 0x99B9, 0x99B9, 0x1944, 0x99C1, 0x99C1, 0x1328,
+ 0x99D0, 0x99D0, 0x1AF3, 0x99D1, 0x99D1, 0x104E, 0x99D2, 0x99D2, 0x0F66,
+ 0x99D5, 0x99D5, 0x0D88, 0x99D9, 0x99D9, 0x141D, 0x99DD, 0x99DD, 0x1CE1,
+ 0x99DF, 0x99DF, 0x14B3, 0x99ED, 0x99ED, 0x1E15, 0x99F1, 0x99F1, 0x1124,
+ 0x99FF, 0x99FF, 0x1B08, 0x9A01, 0x9A01, 0x1478, 0x9A08, 0x9A08, 0x13C1,
+ 0x9A0E, 0x9A0F, 0x101A, 0x9A19, 0x9A19, 0x1D67, 0x9A2B, 0x9A2B, 0x0E1C,
+ 0x9A30, 0x9A30, 0x1115, 0x9A36, 0x9A36, 0x1C76, 0x9A37, 0x9A37, 0x15A0,
+ 0x9A40, 0x9A40, 0x1275, 0x9A43, 0x9A43, 0x1DA5, 0x9A45, 0x9A45, 0x0F67,
+ 0x9A4D, 0x9A4D, 0x1F1D, 0x9A55, 0x9A55, 0x0F33, 0x9A57, 0x9A57, 0x1E31,
+ 0x9A5A, 0x9A5A, 0x0E77, 0x9A5B, 0x9A5B, 0x1743, 0x9A5F, 0x9A5F, 0x1CA0,
+ 0x9A62, 0x9A62, 0x1166, 0x9A65, 0x9A65, 0x101C, 0x9A69, 0x9A69, 0x1ED9,
+ 0x9A6A, 0x9A6A, 0x1167, 0x9AA8, 0x9AA8, 0x0EC9, 0x9AB8, 0x9AB8, 0x1E16,
+ 0x9AD3, 0x9AD3, 0x15FA, 0x9AD4, 0x9AD4, 0x1C2D, 0x9AD8, 0x9AD8, 0x0EB5,
+ 0x9AE5, 0x9AE5, 0x176D, 0x9AEE, 0x9AEE, 0x134B, 0x9B1A, 0x9B1A, 0x15FB,
+ 0x9B27, 0x9B27, 0x11D2, 0x9B2A, 0x9B2A, 0x1D2E, 0x9B31, 0x9B31, 0x186B,
+ 0x9B3C, 0x9B3C, 0x0F99, 0x9B41, 0x9B41, 0x0F17, 0x9B42, 0x9B42, 0x1EA9,
+ 0x9B43, 0x9B43, 0x134C, 0x9B44, 0x9B44, 0x1383, 0x9B45, 0x9B45, 0x1271,
+ 0x9B4F, 0x9B4F, 0x18A4, 0x9B54, 0x9B54, 0x1236, 0x9B5A, 0x9B5A, 0x1716,
+ 0x9B6F, 0x9B6F, 0x11AD, 0x9B8E, 0x9B8E, 0x1A2B, 0x9B91, 0x9B91, 0x1D92,
+ 0x9B9F, 0x9B9F, 0x16B8, 0x9BAB, 0x9BAB, 0x0F34, 0x9BAE, 0x9BAE, 0x1549,
+ 0x9BC9, 0x9BC9, 0x121D, 0x9BD6, 0x9BD6, 0x1C24, 0x9BE4, 0x9BE4, 0x0EC7,
+ 0x9BE8, 0x9BE8, 0x0E78, 0x9C0D, 0x9C0D, 0x1C77, 0x9C10, 0x9C10, 0x16AD,
+ 0x9C12, 0x9C12, 0x13E2, 0x9C15, 0x9C15, 0x1DCD, 0x9C25, 0x9C25, 0x1EDA,
+ 0x9C32, 0x9C32, 0x17BC, 0x9C3B, 0x9C3B, 0x1250, 0x9C47, 0x9C47, 0x0DE7,
+ 0x9C49, 0x9C49, 0x13AF, 0x9C57, 0x9C57, 0x1225, 0x9CE5, 0x9CE5, 0x1AAB,
+ 0x9CE7, 0x9CE7, 0x141E, 0x9CE9, 0x9CE9, 0x0F68, 0x9CF3, 0x9CF3, 0x13F4,
+ 0x9CF4, 0x9CF4, 0x129A, 0x9CF6, 0x9CF6, 0x1760, 0x9D09, 0x9D09, 0x169F,
+ 0x9D1B, 0x9D1B, 0x1888, 0x9D26, 0x9D26, 0x16CF, 0x9D28, 0x9D28, 0x16C8,
+ 0x9D3B, 0x9D3B, 0x1EB6, 0x9D51, 0x9D51, 0x0E3F, 0x9D5D, 0x9D5D, 0x16A0,
+ 0x9D60, 0x9D60, 0x0EBD, 0x9D61, 0x9D61, 0x12E1, 0x9D6C, 0x9D6C, 0x143C,
+ 0x9D72, 0x9D72, 0x1979, 0x9DA9, 0x9DA9, 0x12BA, 0x9DAF, 0x9DAF, 0x16E4,
+ 0x9DB4, 0x9DB4, 0x1DD2, 0x9DC4, 0x9DC4, 0x0E90, 0x9DD7, 0x9DD7, 0x0F69,
+ 0x9DF2, 0x9DF2, 0x1CA1, 0x9DF8, 0x9DF8, 0x1F4C, 0x9DF9, 0x9DF9, 0x18F9,
+ 0x9DFA, 0x9DFA, 0x11AE, 0x9E1A, 0x9E1A, 0x16E5, 0x9E1E, 0x9E1E, 0x112C,
+ 0x9E75, 0x9E75, 0x11AF, 0x9E79, 0x9E79, 0x1DEE, 0x9E7D, 0x9E7D, 0x176E,
+ 0x9E7F, 0x9E7F, 0x11B5, 0x9E92, 0x9E92, 0x101D, 0x9E93, 0x9E93, 0x11B6,
+ 0x9E97, 0x9E97, 0x1168, 0x9E9D, 0x9E9D, 0x14B4, 0x9E9F, 0x9E9F, 0x1226,
+ 0x9EA5, 0x9EA5, 0x1276, 0x9EB4, 0x9EB4, 0x0F70, 0x9EB5, 0x9EB5, 0x1289,
+ 0x9EBB, 0x9EBB, 0x1237, 0x9EBE, 0x9EBE, 0x1F44, 0x9EC3, 0x9EC3, 0x1EF7,
+ 0x9ECD, 0x9ECD, 0x1519, 0x9ECE, 0x9ECE, 0x1169, 0x9ED1, 0x9ED1, 0x1F52,
+ 0x9ED4, 0x9ED4, 0x0E27, 0x9ED8, 0x9ED8, 0x12E3, 0x9EDB, 0x9EDB, 0x10A9,
+ 0x9EDC, 0x9EDC, 0x1C89, 0x9EDE, 0x9EDE, 0x1A2C, 0x9EE8, 0x9EE8, 0x1099,
+ 0x9EF4, 0x9EF4, 0x1305, 0x9F07, 0x9F07, 0x17BD, 0x9F08, 0x9F08, 0x13B0,
+ 0x9F0E, 0x9F0E, 0x1A66, 0x9F13, 0x9F13, 0x0EB6, 0x9F20, 0x9F20, 0x151A,
+ 0x9F3B, 0x9F3B, 0x1466, 0x9F4A, 0x9F4A, 0x1A7D, 0x9F4B, 0x9F4B, 0x19B9,
+ 0x9F4E, 0x9F4E, 0x19BA, 0x9F52, 0x9F52, 0x1CBF, 0x9F5F, 0x9F5F, 0x19DA,
+ 0x9F61, 0x9F61, 0x1199, 0x9F67, 0x9F67, 0x1556, 0x9F6A, 0x9F6A, 0x1B95,
+ 0x9F6C, 0x9F6C, 0x1717, 0x9F77, 0x9F77, 0x16AE, 0x9F8D, 0x9F8D, 0x11D3,
+ 0x9F90, 0x9F90, 0x1368, 0x9F95, 0x9F95, 0x0DC9, 0x9F9C, 0x9F9C, 0x0F6A,
+ 0xAC00, 0xAC01, 0x043E, 0xAC02, 0xAC03, 0x2475, 0xAC04, 0xAC04, 0x0440,
+ 0xAC05, 0xAC06, 0x2477, 0xAC07, 0xAC0A, 0x0441, 0xAC0B, 0xAC0F, 0x2479,
+ 0xAC10, 0xAC17, 0x0445, 0xAC18, 0xAC18, 0x247E, 0xAC19, 0xAC1D, 0x044D,
+ 0xAC1E, 0xAC1F, 0x247F, 0xAC20, 0xAC20, 0x0452, 0xAC21, 0xAC23, 0x2481,
+ 0xAC24, 0xAC24, 0x0453, 0xAC25, 0xAC2B, 0x2484, 0xAC2C, 0xAC2D, 0x0454,
+ 0xAC2E, 0xAC2E, 0x248B, 0xAC2F, 0xAC31, 0x0456, 0xAC32, 0xAC37, 0x248C,
+ 0xAC38, 0xAC39, 0x0459, 0xAC3A, 0xAC3B, 0x2492, 0xAC3C, 0xAC3C, 0x045B,
+ 0xAC3D, 0xAC3F, 0x2494, 0xAC40, 0xAC40, 0x045C, 0xAC41, 0xAC4A, 0x2497,
+ 0xAC4B, 0xAC4B, 0x045D, 0xAC4C, 0xAC4C, 0x24A1, 0xAC4D, 0xAC4D, 0x045E,
+ 0xAC4E, 0xAC53, 0x24A2, 0xAC54, 0xAC54, 0x045F, 0xAC55, 0xAC57, 0x24A8,
+ 0xAC58, 0xAC58, 0x0460, 0xAC59, 0xAC5B, 0x24AB, 0xAC5C, 0xAC5C, 0x0461,
+ 0xAC5D, 0xAC6F, 0x24AE, 0xAC70, 0xAC71, 0x0462, 0xAC72, 0xAC73, 0x24C1,
+ 0xAC74, 0xAC74, 0x0464, 0xAC75, 0xAC76, 0x24C3, 0xAC77, 0xAC78, 0x0465,
+ 0xAC79, 0xAC79, 0x24C5, 0xAC7A, 0xAC7A, 0x0467, 0xAC7B, 0xAC7F, 0x24C6,
+ 0xAC80, 0xAC81, 0x0468, 0xAC82, 0xAC82, 0x24CB, 0xAC83, 0xAC86, 0x046A,
+ 0xAC87, 0xAC88, 0x24CC, 0xAC89, 0xAC8C, 0x046E, 0xAC8D, 0xAC8F, 0x24CE,
+ 0xAC90, 0xAC90, 0x0472, 0xAC91, 0xAC93, 0x24D1, 0xAC94, 0xAC94, 0x0473,
+ 0xAC95, 0xAC9B, 0x24D4, 0xAC9C, 0xAC9D, 0x0474, 0xAC9E, 0xAC9E, 0x24DB,
+ 0xAC9F, 0xACA1, 0x0476, 0xACA2, 0xACA7, 0x24DC, 0xACA8, 0xACAA, 0x0479,
+ 0xACAB, 0xACAB, 0x24E2, 0xACAC, 0xACAC, 0x047C, 0xACAD, 0xACAE, 0x24E3,
+ 0xACAF, 0xACB0, 0x047D, 0xACB1, 0xACB7, 0x24E5, 0xACB8, 0xACB9, 0x047F,
+ 0xACBA, 0xACBA, 0x24EC, 0xACBB, 0xACBD, 0x0481, 0xACBE, 0xACC0, 0x24ED,
+ 0xACC1, 0xACC1, 0x0484, 0xACC2, 0xACC3, 0x24F0, 0xACC4, 0xACC4, 0x0485,
+ 0xACC5, 0xACC7, 0x24F2, 0xACC8, 0xACC8, 0x0486, 0xACC9, 0xACCB, 0x24F5,
+ 0xACCC, 0xACCC, 0x0487, 0xACCD, 0xACD4, 0x24F8, 0xACD5, 0xACD5, 0x0488,
+ 0xACD6, 0xACD6, 0x2500, 0xACD7, 0xACD7, 0x0489, 0xACD8, 0xACDF, 0x2501,
+ 0xACE0, 0xACE1, 0x048A, 0xACE2, 0xACE3, 0x2509, 0xACE4, 0xACE4, 0x048C,
+ 0xACE5, 0xACE6, 0x250B, 0xACE7, 0xACE8, 0x048D, 0xACE9, 0xACE9, 0x250D,
+ 0xACEA, 0xACEA, 0x048F, 0xACEB, 0xACEB, 0x250E, 0xACEC, 0xACEC, 0x0490,
+ 0xACED, 0xACEE, 0x250F, 0xACEF, 0xACF1, 0x0491, 0xACF2, 0xACF2, 0x2511,
+ 0xACF3, 0xACF3, 0x0494, 0xACF4, 0xACF4, 0x2512, 0xACF5, 0xACF6, 0x0495,
+ 0xACF7, 0xACFB, 0x2513, 0xACFC, 0xACFD, 0x0497, 0xACFE, 0xACFF, 0x2518,
+ 0xAD00, 0xAD00, 0x0499, 0xAD01, 0xAD03, 0x251A, 0xAD04, 0xAD04, 0x049A,
+ 0xAD05, 0xAD05, 0x251D, 0xAD06, 0xAD06, 0x049B, 0xAD07, 0xAD0B, 0x251E,
+ 0xAD0C, 0xAD0D, 0x049C, 0xAD0E, 0xAD0E, 0x2523, 0xAD0F, 0xAD0F, 0x049E,
+ 0xAD10, 0xAD10, 0x2524, 0xAD11, 0xAD11, 0x049F, 0xAD12, 0xAD17, 0x2525,
+ 0xAD18, 0xAD18, 0x04A0, 0xAD19, 0xAD1B, 0x252B, 0xAD1C, 0xAD1C, 0x04A1,
+ 0xAD1D, 0xAD1F, 0x252E, 0xAD20, 0xAD20, 0x04A2, 0xAD21, 0xAD28, 0x2531,
+ 0xAD29, 0xAD29, 0x04A3, 0xAD2A, 0xAD2B, 0x2539, 0xAD2C, 0xAD2D, 0x04A4,
+ 0xAD2E, 0xAD33, 0x253B, 0xAD34, 0xAD35, 0x04A6, 0xAD36, 0xAD37, 0x2541,
+ 0xAD38, 0xAD38, 0x04A8, 0xAD39, 0xAD3B, 0x2543, 0xAD3C, 0xAD3C, 0x04A9,
+ 0xAD3D, 0xAD43, 0x2546, 0xAD44, 0xAD45, 0x04AA, 0xAD46, 0xAD46, 0x254D,
+ 0xAD47, 0xAD47, 0x04AC, 0xAD48, 0xAD48, 0x254E, 0xAD49, 0xAD49, 0x04AD,
+ 0xAD4A, 0xAD4F, 0x254F, 0xAD50, 0xAD50, 0x04AE, 0xAD51, 0xAD53, 0x2555,
+ 0xAD54, 0xAD54, 0x04AF, 0xAD55, 0xAD57, 0x2558, 0xAD58, 0xAD58, 0x04B0,
+ 0xAD59, 0xAD60, 0x255B, 0xAD61, 0xAD61, 0x04B1, 0xAD62, 0xAD62, 0x2563,
+ 0xAD63, 0xAD63, 0x04B2, 0xAD64, 0xAD6B, 0x2564, 0xAD6C, 0xAD6D, 0x04B3,
+ 0xAD6E, 0xAD6F, 0x256C, 0xAD70, 0xAD70, 0x04B5, 0xAD71, 0xAD72, 0x256E,
+ 0xAD73, 0xAD76, 0x04B6, 0xAD77, 0xAD7A, 0x2570, 0xAD7B, 0xAD7D, 0x04BA,
+ 0xAD7E, 0xAD7E, 0x2574, 0xAD7F, 0xAD7F, 0x04BD, 0xAD80, 0xAD80, 0x2575,
+ 0xAD81, 0xAD82, 0x04BE, 0xAD83, 0xAD87, 0x2576, 0xAD88, 0xAD89, 0x04C0,
+ 0xAD8A, 0xAD8B, 0x257B, 0xAD8C, 0xAD8C, 0x04C2, 0xAD8D, 0xAD8F, 0x257D,
+ 0xAD90, 0xAD90, 0x04C3, 0xAD91, 0xAD9B, 0x2580, 0xAD9C, 0xAD9D, 0x04C4,
+ 0xAD9E, 0xADA3, 0x258B, 0xADA4, 0xADA4, 0x04C6, 0xADA5, 0xADB6, 0x2591,
+ 0xADB7, 0xADB7, 0x04C7, 0xADB8, 0xADBF, 0x25A3, 0xADC0, 0xADC1, 0x04C8,
+ 0xADC2, 0xADC3, 0x25AB, 0xADC4, 0xADC4, 0x04CA, 0xADC5, 0xADC7, 0x25AD,
+ 0xADC8, 0xADC8, 0x04CB, 0xADC9, 0xADCF, 0x25B0, 0xADD0, 0xADD1, 0x04CC,
+ 0xADD2, 0xADD2, 0x25B7, 0xADD3, 0xADD3, 0x04CE, 0xADD4, 0xADDB, 0x25B8,
+ 0xADDC, 0xADDC, 0x04CF, 0xADDD, 0xADDF, 0x25C0, 0xADE0, 0xADE0, 0x04D0,
+ 0xADE1, 0xADE3, 0x25C3, 0xADE4, 0xADE4, 0x04D1, 0xADE5, 0xADF7, 0x25C6,
+ 0xADF8, 0xADF9, 0x04D2, 0xADFA, 0xADFB, 0x25D9, 0xADFC, 0xADFC, 0x04D4,
+ 0xADFD, 0xADFE, 0x25DB, 0xADFF, 0xADFF, 0x04D5, 0xAE00, 0xAE01, 0x04D6,
+ 0xAE02, 0xAE07, 0x25DD, 0xAE08, 0xAE09, 0x04D8, 0xAE0A, 0xAE0A, 0x25E3,
+ 0xAE0B, 0xAE0B, 0x04DA, 0xAE0C, 0xAE0C, 0x25E4, 0xAE0D, 0xAE0D, 0x04DB,
+ 0xAE0E, 0xAE13, 0x25E5, 0xAE14, 0xAE14, 0x04DC, 0xAE15, 0xAE2F, 0x25EB,
+ 0xAE30, 0xAE31, 0x04DD, 0xAE32, 0xAE33, 0x2606, 0xAE34, 0xAE34, 0x04DF,
+ 0xAE35, 0xAE36, 0x2608, 0xAE37, 0xAE38, 0x04E0, 0xAE39, 0xAE39, 0x260A,
+ 0xAE3A, 0xAE3A, 0x04E2, 0xAE3B, 0xAE3F, 0x260B, 0xAE40, 0xAE41, 0x04E3,
+ 0xAE42, 0xAE42, 0x2610, 0xAE43, 0xAE43, 0x04E5, 0xAE44, 0xAE44, 0x2611,
+ 0xAE45, 0xAE46, 0x04E6, 0xAE47, 0xAE49, 0x2612, 0xAE4A, 0xAE4A, 0x04E8,
+ 0xAE4B, 0xAE4B, 0x2615, 0xAE4C, 0xAE4E, 0x04E9, 0xAE4F, 0xAE4F, 0x2616,
+ 0xAE50, 0xAE50, 0x04EC, 0xAE51, 0xAE53, 0x2617, 0xAE54, 0xAE54, 0x04ED,
+ 0xAE55, 0xAE55, 0x261A, 0xAE56, 0xAE56, 0x04EE, 0xAE57, 0xAE5B, 0x261B,
+ 0xAE5C, 0xAE5D, 0x04EF, 0xAE5E, 0xAE5E, 0x2620, 0xAE5F, 0xAE61, 0x04F1,
+ 0xAE62, 0xAE64, 0x2621, 0xAE65, 0xAE65, 0x04F4, 0xAE66, 0xAE67, 0x2624,
+ 0xAE68, 0xAE69, 0x04F5, 0xAE6A, 0xAE6B, 0x2626, 0xAE6C, 0xAE6C, 0x04F7,
+ 0xAE6D, 0xAE6F, 0x2628, 0xAE70, 0xAE70, 0x04F8, 0xAE71, 0xAE77, 0x262B,
+ 0xAE78, 0xAE79, 0x04F9, 0xAE7A, 0xAE7A, 0x2632, 0xAE7B, 0xAE7D, 0x04FB,
+ 0xAE7E, 0xAE83, 0x2633, 0xAE84, 0xAE85, 0x04FE, 0xAE86, 0xAE8B, 0x2639,
+ 0xAE8C, 0xAE8C, 0x0500, 0xAE8D, 0xAEBB, 0x263F, 0xAEBC, 0xAEBE, 0x0501,
+ 0xAEBF, 0xAEBF, 0x266E, 0xAEC0, 0xAEC0, 0x0504, 0xAEC1, 0xAEC3, 0x266F,
+ 0xAEC4, 0xAEC4, 0x0505, 0xAEC5, 0xAECB, 0x2672, 0xAECC, 0xAECD, 0x0506,
+ 0xAECE, 0xAECE, 0x2679, 0xAECF, 0xAED1, 0x0508, 0xAED2, 0xAED7, 0x267A,
+ 0xAED8, 0xAED9, 0x050B, 0xAEDA, 0xAEDB, 0x2680, 0xAEDC, 0xAEDC, 0x050D,
+ 0xAEDD, 0xAEE7, 0x2682, 0xAEE8, 0xAEE8, 0x050E, 0xAEE9, 0xAEEA, 0x268D,
+ 0xAEEB, 0xAEEB, 0x050F, 0xAEEC, 0xAEEC, 0x268F, 0xAEED, 0xAEED, 0x0510,
+ 0xAEEE, 0xAEF3, 0x2690, 0xAEF4, 0xAEF4, 0x0511, 0xAEF5, 0xAEF7, 0x2696,
+ 0xAEF8, 0xAEF8, 0x0512, 0xAEF9, 0xAEFB, 0x2699, 0xAEFC, 0xAEFC, 0x0513,
+ 0xAEFD, 0xAEFF, 0x269C, 0xAF00, 0xAF06, 0x269F, 0xAF07, 0xAF08, 0x0514,
+ 0xAF09, 0xAF0C, 0x26A6, 0xAF0D, 0xAF0D, 0x0516, 0xAF0E, 0xAF0F, 0x26AA,
+ 0xAF10, 0xAF10, 0x0517, 0xAF11, 0xAF2B, 0x26AC, 0xAF2C, 0xAF2D, 0x0518,
+ 0xAF2E, 0xAF2F, 0x26C7, 0xAF30, 0xAF30, 0x051A, 0xAF31, 0xAF31, 0x26C9,
+ 0xAF32, 0xAF32, 0x051B, 0xAF33, 0xAF33, 0x26CA, 0xAF34, 0xAF34, 0x051C,
+ 0xAF35, 0xAF3B, 0x26CB, 0xAF3C, 0xAF3D, 0x051D, 0xAF3E, 0xAF3E, 0x26D2,
+ 0xAF3F, 0xAF3F, 0x051F, 0xAF40, 0xAF40, 0x26D3, 0xAF41, 0xAF43, 0x0520,
+ 0xAF44, 0xAF47, 0x26D4, 0xAF48, 0xAF49, 0x0523, 0xAF4A, 0xAF4F, 0x26D8,
+ 0xAF50, 0xAF50, 0x0525, 0xAF51, 0xAF5B, 0x26DE, 0xAF5C, 0xAF5D, 0x0526,
+ 0xAF5E, 0xAF63, 0x26E9, 0xAF64, 0xAF65, 0x0528, 0xAF66, 0xAF78, 0x26EF,
+ 0xAF79, 0xAF79, 0x052A, 0xAF7A, 0xAF7F, 0x2702, 0xAF80, 0xAF80, 0x052B,
+ 0xAF81, 0xAF83, 0x2708, 0xAF84, 0xAF84, 0x052C, 0xAF85, 0xAF87, 0x270B,
+ 0xAF88, 0xAF88, 0x052D, 0xAF89, 0xAF8F, 0x270E, 0xAF90, 0xAF91, 0x052E,
+ 0xAF92, 0xAF94, 0x2715, 0xAF95, 0xAF95, 0x0530, 0xAF96, 0xAF9B, 0x2718,
+ 0xAF9C, 0xAF9C, 0x0531, 0xAF9D, 0xAFB7, 0x271E, 0xAFB8, 0xAFB9, 0x0532,
+ 0xAFBA, 0xAFBB, 0x2739, 0xAFBC, 0xAFBC, 0x0534, 0xAFBD, 0xAFBF, 0x273B,
+ 0xAFC0, 0xAFC0, 0x0535, 0xAFC1, 0xAFC6, 0x273E, 0xAFC7, 0xAFC9, 0x0536,
+ 0xAFCA, 0xAFCA, 0x2744, 0xAFCB, 0xAFCB, 0x0539, 0xAFCC, 0xAFCC, 0x2745,
+ 0xAFCD, 0xAFCE, 0x053A, 0xAFCF, 0xAFD3, 0x2746, 0xAFD4, 0xAFD4, 0x053C,
+ 0xAFD5, 0xAFDB, 0x274B, 0xAFDC, 0xAFDC, 0x053D, 0xAFDD, 0xAFE7, 0x2752,
+ 0xAFE8, 0xAFE9, 0x053E, 0xAFEA, 0xAFEF, 0x275D, 0xAFF0, 0xAFF1, 0x0540,
+ 0xAFF2, 0xAFF3, 0x2763, 0xAFF4, 0xAFF4, 0x0542, 0xAFF5, 0xAFF7, 0x2765,
+ 0xAFF8, 0xAFF8, 0x0543, 0xAFF9, 0xAFFF, 0x2768, 0xB000, 0xB001, 0x0544,
+ 0xB002, 0xB003, 0x276F, 0xB004, 0xB004, 0x0546, 0xB005, 0xB00B, 0x2771,
+ 0xB00C, 0xB00C, 0x0547, 0xB00D, 0xB00F, 0x2778, 0xB010, 0xB010, 0x0548,
+ 0xB011, 0xB013, 0x277B, 0xB014, 0xB014, 0x0549, 0xB015, 0xB01B, 0x277E,
+ 0xB01C, 0xB01D, 0x054A, 0xB01E, 0xB027, 0x2785, 0xB028, 0xB028, 0x054C,
+ 0xB029, 0xB043, 0x278F, 0xB044, 0xB045, 0x054D, 0xB046, 0xB047, 0x27AA,
+ 0xB048, 0xB048, 0x054F, 0xB049, 0xB049, 0x27AC, 0xB04A, 0xB04A, 0x0550,
+ 0xB04B, 0xB04B, 0x27AD, 0xB04C, 0xB04C, 0x0551, 0xB04D, 0xB04D, 0x27AE,
+ 0xB04E, 0xB04E, 0x0552, 0xB04F, 0xB052, 0x27AF, 0xB053, 0xB055, 0x0553,
+ 0xB056, 0xB056, 0x27B3, 0xB057, 0xB057, 0x0556, 0xB058, 0xB058, 0x27B4,
+ 0xB059, 0xB059, 0x0557, 0xB05A, 0xB05C, 0x27B5, 0xB05D, 0xB05D, 0x0558,
+ 0xB05E, 0xB07B, 0x27B8, 0xB07C, 0xB07D, 0x0559, 0xB07E, 0xB07F, 0x27D6,
+ 0xB080, 0xB080, 0x055B, 0xB081, 0xB083, 0x27D8, 0xB084, 0xB084, 0x055C,
+ 0xB085, 0xB08B, 0x27DB, 0xB08C, 0xB08D, 0x055D, 0xB08E, 0xB08E, 0x27E2,
+ 0xB08F, 0xB08F, 0x055F, 0xB090, 0xB090, 0x27E3, 0xB091, 0xB091, 0x0560,
+ 0xB092, 0xB097, 0x27E4, 0xB098, 0xB09A, 0x0561, 0xB09B, 0xB09B, 0x27EA,
+ 0xB09C, 0xB09C, 0x0564, 0xB09D, 0xB09E, 0x27EB, 0xB09F, 0xB0A2, 0x0565,
+ 0xB0A3, 0xB0A7, 0x27ED, 0xB0A8, 0xB0A9, 0x0569, 0xB0AA, 0xB0AA, 0x27F2,
+ 0xB0AB, 0xB0AF, 0x056B, 0xB0B0, 0xB0B0, 0x27F3, 0xB0B1, 0xB0B1, 0x0570,
+ 0xB0B2, 0xB0B2, 0x27F4, 0xB0B3, 0xB0B5, 0x0571, 0xB0B6, 0xB0B7, 0x27F5,
+ 0xB0B8, 0xB0B8, 0x0574, 0xB0B9, 0xB0BB, 0x27F7, 0xB0BC, 0xB0BC, 0x0575,
+ 0xB0BD, 0xB0C3, 0x27FA, 0xB0C4, 0xB0C5, 0x0576, 0xB0C6, 0xB0C6, 0x2801,
+ 0xB0C7, 0xB0C9, 0x0578, 0xB0CA, 0xB0CF, 0x2802, 0xB0D0, 0xB0D1, 0x057B,
+ 0xB0D2, 0xB0D3, 0x2808, 0xB0D4, 0xB0D4, 0x057D, 0xB0D5, 0xB0D7, 0x280A,
+ 0xB0D8, 0xB0D8, 0x057E, 0xB0D9, 0xB0DF, 0x280D, 0xB0E0, 0xB0E0, 0x057F,
+ 0xB0E1, 0xB0E4, 0x2814, 0xB0E5, 0xB0E5, 0x0580, 0xB0E6, 0xB0FF, 0x2818,
+ 0xB100, 0xB107, 0x2832, 0xB108, 0xB109, 0x0581, 0xB10A, 0xB10A, 0x283A,
+ 0xB10B, 0xB10C, 0x0583, 0xB10D, 0xB10F, 0x283B, 0xB110, 0xB110, 0x0585,
+ 0xB111, 0xB111, 0x283E, 0xB112, 0xB113, 0x0586, 0xB114, 0xB117, 0x283F,
+ 0xB118, 0xB119, 0x0588, 0xB11A, 0xB11A, 0x2843, 0xB11B, 0xB11D, 0x058A,
+ 0xB11E, 0xB122, 0x2844, 0xB123, 0xB125, 0x058D, 0xB126, 0xB127, 0x2849,
+ 0xB128, 0xB128, 0x0590, 0xB129, 0xB12B, 0x284B, 0xB12C, 0xB12C, 0x0591,
+ 0xB12D, 0xB133, 0x284E, 0xB134, 0xB135, 0x0592, 0xB136, 0xB136, 0x2855,
+ 0xB137, 0xB139, 0x0594, 0xB13A, 0xB13F, 0x2856, 0xB140, 0xB141, 0x0597,
+ 0xB142, 0xB143, 0x285C, 0xB144, 0xB144, 0x0599, 0xB145, 0xB147, 0x285E,
+ 0xB148, 0xB148, 0x059A, 0xB149, 0xB14F, 0x2861, 0xB150, 0xB151, 0x059B,
+ 0xB152, 0xB153, 0x2868, 0xB154, 0xB155, 0x059D, 0xB156, 0xB157, 0x286A,
+ 0xB158, 0xB158, 0x059F, 0xB159, 0xB15B, 0x286C, 0xB15C, 0xB15C, 0x05A0,
+ 0xB15D, 0xB15F, 0x286F, 0xB160, 0xB160, 0x05A1, 0xB161, 0xB177, 0x2872,
+ 0xB178, 0xB179, 0x05A2, 0xB17A, 0xB17B, 0x2889, 0xB17C, 0xB17C, 0x05A4,
+ 0xB17D, 0xB17F, 0x288B, 0xB180, 0xB180, 0x05A5, 0xB181, 0xB181, 0x288E,
+ 0xB182, 0xB182, 0x05A6, 0xB183, 0xB187, 0x288F, 0xB188, 0xB189, 0x05A7,
+ 0xB18A, 0xB18A, 0x2894, 0xB18B, 0xB18B, 0x05A9, 0xB18C, 0xB18C, 0x2895,
+ 0xB18D, 0xB18D, 0x05AA, 0xB18E, 0xB191, 0x2896, 0xB192, 0xB194, 0x05AB,
+ 0xB195, 0xB197, 0x289A, 0xB198, 0xB198, 0x05AE, 0xB199, 0xB19B, 0x289D,
+ 0xB19C, 0xB19C, 0x05AF, 0xB19D, 0xB1A7, 0x28A0, 0xB1A8, 0xB1A8, 0x05B0,
+ 0xB1A9, 0xB1CB, 0x28AB, 0xB1CC, 0xB1CC, 0x05B1, 0xB1CD, 0xB1CF, 0x28CE,
+ 0xB1D0, 0xB1D0, 0x05B2, 0xB1D1, 0xB1D3, 0x28D1, 0xB1D4, 0xB1D4, 0x05B3,
+ 0xB1D5, 0xB1DB, 0x28D4, 0xB1DC, 0xB1DD, 0x05B4, 0xB1DE, 0xB1DE, 0x28DB,
+ 0xB1DF, 0xB1DF, 0x05B6, 0xB1E0, 0xB1E7, 0x28DC, 0xB1E8, 0xB1E9, 0x05B7,
+ 0xB1EA, 0xB1EB, 0x28E4, 0xB1EC, 0xB1EC, 0x05B9, 0xB1ED, 0xB1EF, 0x28E6,
+ 0xB1F0, 0xB1F0, 0x05BA, 0xB1F1, 0xB1F8, 0x28E9, 0xB1F9, 0xB1F9, 0x05BB,
+ 0xB1FA, 0xB1FA, 0x28F1, 0xB1FB, 0xB1FB, 0x05BC, 0xB1FC, 0xB1FC, 0x28F2,
+ 0xB1FD, 0xB1FD, 0x05BD, 0xB1FE, 0xB1FF, 0x28F3, 0xB200, 0xB203, 0x28F5,
+ 0xB204, 0xB205, 0x05BE, 0xB206, 0xB207, 0x28F9, 0xB208, 0xB208, 0x05C0,
+ 0xB209, 0xB20A, 0x28FB, 0xB20B, 0xB20C, 0x05C1, 0xB20D, 0xB213, 0x28FD,
+ 0xB214, 0xB215, 0x05C3, 0xB216, 0xB216, 0x2904, 0xB217, 0xB217, 0x05C5,
+ 0xB218, 0xB218, 0x2905, 0xB219, 0xB219, 0x05C6, 0xB21A, 0xB21F, 0x2906,
+ 0xB220, 0xB220, 0x05C7, 0xB221, 0xB233, 0x290C, 0xB234, 0xB234, 0x05C8,
+ 0xB235, 0xB23B, 0x291F, 0xB23C, 0xB23C, 0x05C9, 0xB23D, 0xB257, 0x2926,
+ 0xB258, 0xB258, 0x05CA, 0xB259, 0xB25B, 0x2941, 0xB25C, 0xB25C, 0x05CB,
+ 0xB25D, 0xB25F, 0x2944, 0xB260, 0xB260, 0x05CC, 0xB261, 0xB267, 0x2947,
+ 0xB268, 0xB269, 0x05CD, 0xB26A, 0xB273, 0x294E, 0xB274, 0xB275, 0x05CF,
+ 0xB276, 0xB27B, 0x2958, 0xB27C, 0xB27C, 0x05D1, 0xB27D, 0xB283, 0x295E,
+ 0xB284, 0xB285, 0x05D2, 0xB286, 0xB288, 0x2965, 0xB289, 0xB289, 0x05D4,
+ 0xB28A, 0xB28F, 0x2968, 0xB290, 0xB291, 0x05D5, 0xB292, 0xB293, 0x296E,
+ 0xB294, 0xB294, 0x05D7, 0xB295, 0xB297, 0x2970, 0xB298, 0xB29A, 0x05D8,
+ 0xB29B, 0xB29F, 0x2973, 0xB2A0, 0xB2A1, 0x05DB, 0xB2A2, 0xB2A2, 0x2978,
+ 0xB2A3, 0xB2A3, 0x05DD, 0xB2A4, 0xB2A4, 0x2979, 0xB2A5, 0xB2A6, 0x05DE,
+ 0xB2A7, 0xB2A9, 0x297A, 0xB2AA, 0xB2AA, 0x05E0, 0xB2AB, 0xB2AB, 0x297D,
+ 0xB2AC, 0xB2AC, 0x05E1, 0xB2AD, 0xB2AF, 0x297E, 0xB2B0, 0xB2B0, 0x05E2,
+ 0xB2B1, 0xB2B3, 0x2981, 0xB2B4, 0xB2B4, 0x05E3, 0xB2B5, 0xB2C7, 0x2984,
+ 0xB2C8, 0xB2C9, 0x05E4, 0xB2CA, 0xB2CB, 0x2997, 0xB2CC, 0xB2CC, 0x05E6,
+ 0xB2CD, 0xB2CF, 0x2999, 0xB2D0, 0xB2D0, 0x05E7, 0xB2D1, 0xB2D1, 0x299C,
+ 0xB2D2, 0xB2D2, 0x05E8, 0xB2D3, 0xB2D7, 0x299D, 0xB2D8, 0xB2D9, 0x05E9,
+ 0xB2DA, 0xB2DA, 0x29A2, 0xB2DB, 0xB2DB, 0x05EB, 0xB2DC, 0xB2DC, 0x29A3,
+ 0xB2DD, 0xB2DD, 0x05EC, 0xB2DE, 0xB2E1, 0x29A4, 0xB2E2, 0xB2E2, 0x05ED,
+ 0xB2E3, 0xB2E3, 0x29A8, 0xB2E4, 0xB2E6, 0x05EE, 0xB2E7, 0xB2E7, 0x29A9,
+ 0xB2E8, 0xB2E8, 0x05F1, 0xB2E9, 0xB2EA, 0x29AA, 0xB2EB, 0xB2EF, 0x05F2,
+ 0xB2F0, 0xB2F2, 0x29AC, 0xB2F3, 0xB2F5, 0x05F7, 0xB2F6, 0xB2F6, 0x29AF,
+ 0xB2F7, 0xB2FB, 0x05FA, 0xB2FC, 0xB2FE, 0x29B0, 0xB2FF, 0xB2FF, 0x05FF,
+ 0xB300, 0xB301, 0x0600, 0xB302, 0xB303, 0x29B3, 0xB304, 0xB304, 0x0602,
+ 0xB305, 0xB307, 0x29B5, 0xB308, 0xB308, 0x0603, 0xB309, 0xB30F, 0x29B8,
+ 0xB310, 0xB311, 0x0604, 0xB312, 0xB312, 0x29BF, 0xB313, 0xB315, 0x0606,
+ 0xB316, 0xB31B, 0x29C0, 0xB31C, 0xB31C, 0x0609, 0xB31D, 0xB353, 0x29C6,
+ 0xB354, 0xB356, 0x060A, 0xB357, 0xB357, 0x29FD, 0xB358, 0xB358, 0x060D,
+ 0xB359, 0xB35A, 0x29FE, 0xB35B, 0xB35C, 0x060E, 0xB35D, 0xB35D, 0x2A00,
+ 0xB35E, 0xB35F, 0x0610, 0xB360, 0xB363, 0x2A01, 0xB364, 0xB365, 0x0612,
+ 0xB366, 0xB366, 0x2A05, 0xB367, 0xB367, 0x0614, 0xB368, 0xB368, 0x2A06,
+ 0xB369, 0xB369, 0x0615, 0xB36A, 0xB36A, 0x2A07, 0xB36B, 0xB36B, 0x0616,
+ 0xB36C, 0xB36D, 0x2A08, 0xB36E, 0xB36E, 0x0617, 0xB36F, 0xB36F, 0x2A0A,
+ 0xB370, 0xB371, 0x0618, 0xB372, 0xB373, 0x2A0B, 0xB374, 0xB374, 0x061A,
+ 0xB375, 0xB377, 0x2A0D, 0xB378, 0xB378, 0x061B, 0xB379, 0xB37F, 0x2A10,
+ 0xB380, 0xB381, 0x061C, 0xB382, 0xB382, 0x2A17, 0xB383, 0xB385, 0x061E,
+ 0xB386, 0xB38B, 0x2A18, 0xB38C, 0xB38C, 0x0621, 0xB38D, 0xB38F, 0x2A1E,
+ 0xB390, 0xB390, 0x0622, 0xB391, 0xB393, 0x2A21, 0xB394, 0xB394, 0x0623,
+ 0xB395, 0xB39F, 0x2A24, 0xB3A0, 0xB3A1, 0x0624, 0xB3A2, 0xB3A7, 0x2A2F,
+ 0xB3A8, 0xB3A8, 0x0626, 0xB3A9, 0xB3AB, 0x2A35, 0xB3AC, 0xB3AC, 0x0627,
+ 0xB3AD, 0xB3C3, 0x2A38, 0xB3C4, 0xB3C5, 0x0628, 0xB3C6, 0xB3C7, 0x2A4F,
+ 0xB3C8, 0xB3C8, 0x062A, 0xB3C9, 0xB3CA, 0x2A51, 0xB3CB, 0xB3CC, 0x062B,
+ 0xB3CD, 0xB3CD, 0x2A53, 0xB3CE, 0xB3CE, 0x062D, 0xB3CF, 0xB3CF, 0x2A54,
+ 0xB3D0, 0xB3D0, 0x062E, 0xB3D1, 0xB3D3, 0x2A55, 0xB3D4, 0xB3D5, 0x062F,
+ 0xB3D6, 0xB3D6, 0x2A58, 0xB3D7, 0xB3D7, 0x0631, 0xB3D8, 0xB3D8, 0x2A59,
+ 0xB3D9, 0xB3D9, 0x0632, 0xB3DA, 0xB3DA, 0x2A5A, 0xB3DB, 0xB3DB, 0x0633,
+ 0xB3DC, 0xB3DC, 0x2A5B, 0xB3DD, 0xB3DD, 0x0634, 0xB3DE, 0xB3DF, 0x2A5C,
+ 0xB3E0, 0xB3E0, 0x0635, 0xB3E1, 0xB3E3, 0x2A5E, 0xB3E4, 0xB3E4, 0x0636,
+ 0xB3E5, 0xB3E7, 0x2A61, 0xB3E8, 0xB3E8, 0x0637, 0xB3E9, 0xB3FB, 0x2A64,
+ 0xB3FC, 0xB3FC, 0x0638, 0xB3FD, 0xB3FF, 0x2A77, 0xB400, 0xB40F, 0x2A7A,
+ 0xB410, 0xB410, 0x0639, 0xB411, 0xB417, 0x2A8A, 0xB418, 0xB418, 0x063A,
+ 0xB419, 0xB41B, 0x2A91, 0xB41C, 0xB41C, 0x063B, 0xB41D, 0xB41F, 0x2A94,
+ 0xB420, 0xB420, 0x063C, 0xB421, 0xB427, 0x2A97, 0xB428, 0xB429, 0x063D,
+ 0xB42A, 0xB42A, 0x2A9E, 0xB42B, 0xB42B, 0x063F, 0xB42C, 0xB433, 0x2A9F,
+ 0xB434, 0xB434, 0x0640, 0xB435, 0xB44F, 0x2AA7, 0xB450, 0xB451, 0x0641,
+ 0xB452, 0xB453, 0x2AC2, 0xB454, 0xB454, 0x0643, 0xB455, 0xB457, 0x2AC4,
+ 0xB458, 0xB458, 0x0644, 0xB459, 0xB45F, 0x2AC7, 0xB460, 0xB461, 0x0645,
+ 0xB462, 0xB462, 0x2ACE, 0xB463, 0xB463, 0x0647, 0xB464, 0xB464, 0x2ACF,
+ 0xB465, 0xB465, 0x0648, 0xB466, 0xB46B, 0x2AD0, 0xB46C, 0xB46C, 0x0649,
+ 0xB46D, 0xB47F, 0x2AD6, 0xB480, 0xB480, 0x064A, 0xB481, 0xB487, 0x2AE9,
+ 0xB488, 0xB488, 0x064B, 0xB489, 0xB49C, 0x2AF0, 0xB49D, 0xB49D, 0x064C,
+ 0xB49E, 0xB4A3, 0x2B04, 0xB4A4, 0xB4A4, 0x064D, 0xB4A5, 0xB4A7, 0x2B0A,
+ 0xB4A8, 0xB4A8, 0x064E, 0xB4A9, 0xB4AB, 0x2B0D, 0xB4AC, 0xB4AC, 0x064F,
+ 0xB4AD, 0xB4B4, 0x2B10, 0xB4B5, 0xB4B5, 0x0650, 0xB4B6, 0xB4B6, 0x2B18,
+ 0xB4B7, 0xB4B7, 0x0651, 0xB4B8, 0xB4B8, 0x2B19, 0xB4B9, 0xB4B9, 0x0652,
+ 0xB4BA, 0xB4BF, 0x2B1A, 0xB4C0, 0xB4C0, 0x0653, 0xB4C1, 0xB4C3, 0x2B20,
+ 0xB4C4, 0xB4C4, 0x0654, 0xB4C5, 0xB4C7, 0x2B23, 0xB4C8, 0xB4C8, 0x0655,
+ 0xB4C9, 0xB4CF, 0x2B26, 0xB4D0, 0xB4D0, 0x0656, 0xB4D1, 0xB4D4, 0x2B2D,
+ 0xB4D5, 0xB4D5, 0x0657, 0xB4D6, 0xB4DB, 0x2B31, 0xB4DC, 0xB4DD, 0x0658,
+ 0xB4DE, 0xB4DF, 0x2B37, 0xB4E0, 0xB4E0, 0x065A, 0xB4E1, 0xB4E2, 0x2B39,
+ 0xB4E3, 0xB4E4, 0x065B, 0xB4E5, 0xB4E5, 0x2B3B, 0xB4E6, 0xB4E6, 0x065D,
+ 0xB4E7, 0xB4EB, 0x2B3C, 0xB4EC, 0xB4ED, 0x065E, 0xB4EE, 0xB4EE, 0x2B41,
+ 0xB4EF, 0xB4EF, 0x0660, 0xB4F0, 0xB4F0, 0x2B42, 0xB4F1, 0xB4F1, 0x0661,
+ 0xB4F2, 0xB4F7, 0x2B43, 0xB4F8, 0xB4F8, 0x0662, 0xB4F9, 0xB4FF, 0x2B49,
+ 0xB500, 0xB513, 0x2B50, 0xB514, 0xB515, 0x0663, 0xB516, 0xB517, 0x2B64,
+ 0xB518, 0xB518, 0x0665, 0xB519, 0xB51A, 0x2B66, 0xB51B, 0xB51C, 0x0666,
+ 0xB51D, 0xB523, 0x2B68, 0xB524, 0xB525, 0x0668, 0xB526, 0xB526, 0x2B6F,
+ 0xB527, 0xB52A, 0x066A, 0xB52B, 0xB52F, 0x2B70, 0xB530, 0xB531, 0x066E,
+ 0xB532, 0xB533, 0x2B75, 0xB534, 0xB534, 0x0670, 0xB535, 0xB537, 0x2B77,
+ 0xB538, 0xB538, 0x0671, 0xB539, 0xB53F, 0x2B7A, 0xB540, 0xB541, 0x0672,
+ 0xB542, 0xB542, 0x2B81, 0xB543, 0xB545, 0x0674, 0xB546, 0xB54A, 0x2B82,
+ 0xB54B, 0xB54D, 0x0677, 0xB54E, 0xB54F, 0x2B87, 0xB550, 0xB550, 0x067A,
+ 0xB551, 0xB553, 0x2B89, 0xB554, 0xB554, 0x067B, 0xB555, 0xB55B, 0x2B8C,
+ 0xB55C, 0xB55D, 0x067C, 0xB55E, 0xB55E, 0x2B93, 0xB55F, 0xB561, 0x067E,
+ 0xB562, 0xB59F, 0x2B94, 0xB5A0, 0xB5A1, 0x0681, 0xB5A2, 0xB5A3, 0x2BD2,
+ 0xB5A4, 0xB5A4, 0x0683, 0xB5A5, 0xB5A7, 0x2BD4, 0xB5A8, 0xB5A8, 0x0684,
+ 0xB5A9, 0xB5A9, 0x2BD7, 0xB5AA, 0xB5AB, 0x0685, 0xB5AC, 0xB5AF, 0x2BD8,
+ 0xB5B0, 0xB5B1, 0x0687, 0xB5B2, 0xB5B2, 0x2BDC, 0xB5B3, 0xB5B5, 0x0689,
+ 0xB5B6, 0xB5BA, 0x2BDD, 0xB5BB, 0xB5BD, 0x068C, 0xB5BE, 0xB5BF, 0x2BE2,
+ 0xB5C0, 0xB5C0, 0x068F, 0xB5C1, 0xB5C3, 0x2BE4, 0xB5C4, 0xB5C4, 0x0690,
+ 0xB5C5, 0xB5CB, 0x2BE7, 0xB5CC, 0xB5CD, 0x0691, 0xB5CE, 0xB5CE, 0x2BEE,
+ 0xB5CF, 0xB5D1, 0x0693, 0xB5D2, 0xB5D7, 0x2BEF, 0xB5D8, 0xB5D8, 0x0696,
+ 0xB5D9, 0xB5EB, 0x2BF5, 0xB5EC, 0xB5EC, 0x0697, 0xB5ED, 0xB5FF, 0x2C08,
+ 0xB600, 0xB60F, 0x2C1B, 0xB610, 0xB611, 0x0698, 0xB612, 0xB613, 0x2C2B,
+ 0xB614, 0xB614, 0x069A, 0xB615, 0xB617, 0x2C2D, 0xB618, 0xB618, 0x069B,
+ 0xB619, 0xB624, 0x2C30, 0xB625, 0xB625, 0x069C, 0xB626, 0xB62B, 0x2C3C,
+ 0xB62C, 0xB62C, 0x069D, 0xB62D, 0xB633, 0x2C42, 0xB634, 0xB634, 0x069E,
+ 0xB635, 0xB647, 0x2C49, 0xB648, 0xB648, 0x069F, 0xB649, 0xB663, 0x2C5C,
+ 0xB664, 0xB664, 0x06A0, 0xB665, 0xB667, 0x2C77, 0xB668, 0xB668, 0x06A1,
+ 0xB669, 0xB69B, 0x2C7A, 0xB69C, 0xB69D, 0x06A2, 0xB69E, 0xB69F, 0x2CAD,
+ 0xB6A0, 0xB6A0, 0x06A4, 0xB6A1, 0xB6A3, 0x2CAF, 0xB6A4, 0xB6A4, 0x06A5,
+ 0xB6A5, 0xB6AA, 0x2CB2, 0xB6AB, 0xB6AC, 0x06A6, 0xB6AD, 0xB6B0, 0x2CB8,
+ 0xB6B1, 0xB6B1, 0x06A8, 0xB6B2, 0xB6D3, 0x2CBC, 0xB6D4, 0xB6D4, 0x06A9,
+ 0xB6D5, 0xB6EF, 0x2CDE, 0xB6F0, 0xB6F0, 0x06AA, 0xB6F1, 0xB6F3, 0x2CF9,
+ 0xB6F4, 0xB6F4, 0x06AB, 0xB6F5, 0xB6F7, 0x2CFC, 0xB6F8, 0xB6F8, 0x06AC,
+ 0xB6F9, 0xB6FF, 0x2CFF, 0xB700, 0xB701, 0x06AD, 0xB702, 0xB704, 0x2D06,
+ 0xB705, 0xB705, 0x06AF, 0xB706, 0xB727, 0x2D09, 0xB728, 0xB729, 0x06B0,
+ 0xB72A, 0xB72B, 0x2D2B, 0xB72C, 0xB72C, 0x06B2, 0xB72D, 0xB72E, 0x2D2D,
+ 0xB72F, 0xB730, 0x06B3, 0xB731, 0xB737, 0x2D2F, 0xB738, 0xB739, 0x06B5,
+ 0xB73A, 0xB73A, 0x2D36, 0xB73B, 0xB73B, 0x06B7, 0xB73C, 0xB743, 0x2D37,
+ 0xB744, 0xB744, 0x06B8, 0xB745, 0xB747, 0x2D3F, 0xB748, 0xB748, 0x06B9,
+ 0xB749, 0xB74B, 0x2D42, 0xB74C, 0xB74C, 0x06BA, 0xB74D, 0xB753, 0x2D45,
+ 0xB754, 0xB755, 0x06BB, 0xB756, 0xB75F, 0x2D4C, 0xB760, 0xB760, 0x06BD,
+ 0xB761, 0xB763, 0x2D56, 0xB764, 0xB764, 0x06BE, 0xB765, 0xB767, 0x2D59,
+ 0xB768, 0xB768, 0x06BF, 0xB769, 0xB76F, 0x2D5C, 0xB770, 0xB771, 0x06C0,
+ 0xB772, 0xB772, 0x2D63, 0xB773, 0xB773, 0x06C2, 0xB774, 0xB774, 0x2D64,
+ 0xB775, 0xB775, 0x06C3, 0xB776, 0xB77B, 0x2D65, 0xB77C, 0xB77D, 0x06C4,
+ 0xB77E, 0xB77F, 0x2D6B, 0xB780, 0xB780, 0x06C6, 0xB781, 0xB783, 0x2D6D,
+ 0xB784, 0xB784, 0x06C7, 0xB785, 0xB78B, 0x2D70, 0xB78C, 0xB78D, 0x06C8,
+ 0xB78E, 0xB78E, 0x2D77, 0xB78F, 0xB792, 0x06CA, 0xB793, 0xB795, 0x2D78,
+ 0xB796, 0xB799, 0x06CE, 0xB79A, 0xB79B, 0x2D7B, 0xB79C, 0xB79C, 0x06D2,
+ 0xB79D, 0xB79F, 0x2D7D, 0xB7A0, 0xB7A0, 0x06D3, 0xB7A1, 0xB7A7, 0x2D80,
+ 0xB7A8, 0xB7A9, 0x06D4, 0xB7AA, 0xB7AA, 0x2D87, 0xB7AB, 0xB7AD, 0x06D6,
+ 0xB7AE, 0xB7B3, 0x2D88, 0xB7B4, 0xB7B5, 0x06D9, 0xB7B6, 0xB7B7, 0x2D8E,
+ 0xB7B8, 0xB7B8, 0x06DB, 0xB7B9, 0xB7C6, 0x2D90, 0xB7C7, 0xB7C7, 0x06DC,
+ 0xB7C8, 0xB7C8, 0x2D9E, 0xB7C9, 0xB7C9, 0x06DD, 0xB7CA, 0xB7EB, 0x2D9F,
+ 0xB7EC, 0xB7ED, 0x06DE, 0xB7EE, 0xB7EF, 0x2DC1, 0xB7F0, 0xB7F0, 0x06E0,
+ 0xB7F1, 0xB7F3, 0x2DC3, 0xB7F4, 0xB7F4, 0x06E1, 0xB7F5, 0xB7FB, 0x2DC6,
+ 0xB7FC, 0xB7FD, 0x06E2, 0xB7FE, 0xB7FE, 0x2DCD, 0xB7FF, 0xB7FF, 0x06E4,
+ 0xB800, 0xB801, 0x06E5, 0xB802, 0xB806, 0x2DCE, 0xB807, 0xB809, 0x06E7,
+ 0xB80A, 0xB80B, 0x2DD3, 0xB80C, 0xB80C, 0x06EA, 0xB80D, 0xB80F, 0x2DD5,
+ 0xB810, 0xB810, 0x06EB, 0xB811, 0xB817, 0x2DD8, 0xB818, 0xB819, 0x06EC,
+ 0xB81A, 0xB81A, 0x2DDF, 0xB81B, 0xB81B, 0x06EE, 0xB81C, 0xB81C, 0x2DE0,
+ 0xB81D, 0xB81D, 0x06EF, 0xB81E, 0xB823, 0x2DE1, 0xB824, 0xB825, 0x06F0,
+ 0xB826, 0xB827, 0x2DE7, 0xB828, 0xB828, 0x06F2, 0xB829, 0xB82B, 0x2DE9,
+ 0xB82C, 0xB82C, 0x06F3, 0xB82D, 0xB833, 0x2DEC, 0xB834, 0xB835, 0x06F4,
+ 0xB836, 0xB836, 0x2DF3, 0xB837, 0xB839, 0x06F6, 0xB83A, 0xB83F, 0x2DF4,
+ 0xB840, 0xB840, 0x06F9, 0xB841, 0xB843, 0x2DFA, 0xB844, 0xB844, 0x06FA,
+ 0xB845, 0xB850, 0x2DFD, 0xB851, 0xB851, 0x06FB, 0xB852, 0xB852, 0x2E09,
+ 0xB853, 0xB853, 0x06FC, 0xB854, 0xB85B, 0x2E0A, 0xB85C, 0xB85D, 0x06FD,
+ 0xB85E, 0xB85F, 0x2E12, 0xB860, 0xB860, 0x06FF, 0xB861, 0xB863, 0x2E14,
+ 0xB864, 0xB864, 0x0700, 0xB865, 0xB86B, 0x2E17, 0xB86C, 0xB86D, 0x0701,
+ 0xB86E, 0xB86E, 0x2E1E, 0xB86F, 0xB86F, 0x0703, 0xB870, 0xB870, 0x2E1F,
+ 0xB871, 0xB871, 0x0704, 0xB872, 0xB877, 0x2E20, 0xB878, 0xB878, 0x0705,
+ 0xB879, 0xB87B, 0x2E26, 0xB87C, 0xB87C, 0x0706, 0xB87D, 0xB88C, 0x2E29,
+ 0xB88D, 0xB88D, 0x0707, 0xB88E, 0xB8A7, 0x2E39, 0xB8A8, 0xB8A8, 0x0708,
+ 0xB8A9, 0xB8AF, 0x2E53, 0xB8B0, 0xB8B0, 0x0709, 0xB8B1, 0xB8B3, 0x2E5A,
+ 0xB8B4, 0xB8B4, 0x070A, 0xB8B5, 0xB8B7, 0x2E5D, 0xB8B8, 0xB8B8, 0x070B,
+ 0xB8B9, 0xB8BF, 0x2E60, 0xB8C0, 0xB8C1, 0x070C, 0xB8C2, 0xB8C2, 0x2E67,
+ 0xB8C3, 0xB8C3, 0x070E, 0xB8C4, 0xB8C4, 0x2E68, 0xB8C5, 0xB8C5, 0x070F,
+ 0xB8C6, 0xB8CB, 0x2E69, 0xB8CC, 0xB8CC, 0x0710, 0xB8CD, 0xB8CF, 0x2E6F,
+ 0xB8D0, 0xB8D0, 0x0711, 0xB8D1, 0xB8D3, 0x2E72, 0xB8D4, 0xB8D4, 0x0712,
+ 0xB8D5, 0xB8DC, 0x2E75, 0xB8DD, 0xB8DD, 0x0713, 0xB8DE, 0xB8DE, 0x2E7D,
+ 0xB8DF, 0xB8DF, 0x0714, 0xB8E0, 0xB8E0, 0x2E7E, 0xB8E1, 0xB8E1, 0x0715,
+ 0xB8E2, 0xB8E7, 0x2E7F, 0xB8E8, 0xB8E9, 0x0716, 0xB8EA, 0xB8EB, 0x2E85,
+ 0xB8EC, 0xB8EC, 0x0718, 0xB8ED, 0xB8EF, 0x2E87, 0xB8F0, 0xB8F0, 0x0719,
+ 0xB8F1, 0xB8F7, 0x2E8A, 0xB8F8, 0xB8F9, 0x071A, 0xB8FA, 0xB8FA, 0x2E91,
+ 0xB8FB, 0xB8FB, 0x071C, 0xB8FC, 0xB8FC, 0x2E92, 0xB8FD, 0xB8FD, 0x071D,
+ 0xB8FE, 0xB8FF, 0x2E93, 0xB900, 0xB903, 0x2E95, 0xB904, 0xB904, 0x071E,
+ 0xB905, 0xB917, 0x2E99, 0xB918, 0xB918, 0x071F, 0xB919, 0xB91F, 0x2EAC,
+ 0xB920, 0xB920, 0x0720, 0xB921, 0xB93B, 0x2EB3, 0xB93C, 0xB93D, 0x0721,
+ 0xB93E, 0xB93F, 0x2ECE, 0xB940, 0xB940, 0x0723, 0xB941, 0xB943, 0x2ED0,
+ 0xB944, 0xB944, 0x0724, 0xB945, 0xB94B, 0x2ED3, 0xB94C, 0xB94C, 0x0725,
+ 0xB94D, 0xB94E, 0x2EDA, 0xB94F, 0xB94F, 0x0726, 0xB950, 0xB950, 0x2EDC,
+ 0xB951, 0xB951, 0x0727, 0xB952, 0xB957, 0x2EDD, 0xB958, 0xB959, 0x0728,
+ 0xB95A, 0xB95B, 0x2EE3, 0xB95C, 0xB95C, 0x072A, 0xB95D, 0xB95F, 0x2EE5,
+ 0xB960, 0xB960, 0x072B, 0xB961, 0xB967, 0x2EE8, 0xB968, 0xB969, 0x072C,
+ 0xB96A, 0xB96A, 0x2EEF, 0xB96B, 0xB96B, 0x072E, 0xB96C, 0xB96C, 0x2EF0,
+ 0xB96D, 0xB96D, 0x072F, 0xB96E, 0xB973, 0x2EF1, 0xB974, 0xB975, 0x0730,
+ 0xB976, 0xB977, 0x2EF7, 0xB978, 0xB978, 0x0732, 0xB979, 0xB97B, 0x2EF9,
+ 0xB97C, 0xB97C, 0x0733, 0xB97D, 0xB983, 0x2EFC, 0xB984, 0xB985, 0x0734,
+ 0xB986, 0xB986, 0x2F03, 0xB987, 0xB987, 0x0736, 0xB988, 0xB988, 0x2F04,
+ 0xB989, 0xB98A, 0x0737, 0xB98B, 0xB98C, 0x2F05, 0xB98D, 0xB98E, 0x0739,
+ 0xB98F, 0xB9AB, 0x2F07, 0xB9AC, 0xB9AD, 0x073B, 0xB9AE, 0xB9AF, 0x2F24,
+ 0xB9B0, 0xB9B0, 0x073D, 0xB9B1, 0xB9B3, 0x2F26, 0xB9B4, 0xB9B4, 0x073E,
+ 0xB9B5, 0xB9BB, 0x2F29, 0xB9BC, 0xB9BD, 0x073F, 0xB9BE, 0xB9BE, 0x2F30,
+ 0xB9BF, 0xB9BF, 0x0741, 0xB9C0, 0xB9C0, 0x2F31, 0xB9C1, 0xB9C1, 0x0742,
+ 0xB9C2, 0xB9C7, 0x2F32, 0xB9C8, 0xB9C9, 0x0743, 0xB9CA, 0xB9CB, 0x2F38,
+ 0xB9CC, 0xB9CC, 0x0745, 0xB9CD, 0xB9CD, 0x2F3A, 0xB9CE, 0xB9D2, 0x0746,
+ 0xB9D3, 0xB9D7, 0x2F3B, 0xB9D8, 0xB9D9, 0x074B, 0xB9DA, 0xB9DA, 0x2F40,
+ 0xB9DB, 0xB9DB, 0x074D, 0xB9DC, 0xB9DC, 0x2F41, 0xB9DD, 0xB9DE, 0x074E,
+ 0xB9DF, 0xB9E0, 0x2F42, 0xB9E1, 0xB9E1, 0x0750, 0xB9E2, 0xB9E2, 0x2F44,
+ 0xB9E3, 0xB9E5, 0x0751, 0xB9E6, 0xB9E7, 0x2F45, 0xB9E8, 0xB9E8, 0x0754,
+ 0xB9E9, 0xB9EB, 0x2F47, 0xB9EC, 0xB9EC, 0x0755, 0xB9ED, 0xB9F3, 0x2F4A,
+ 0xB9F4, 0xB9F5, 0x0756, 0xB9F6, 0xB9F6, 0x2F51, 0xB9F7, 0xB9FA, 0x0758,
+ 0xB9FB, 0xB9FF, 0x2F52, 0xBA00, 0xBA01, 0x075C, 0xBA02, 0xBA07, 0x2F57,
+ 0xBA08, 0xBA08, 0x075E, 0xBA09, 0xBA14, 0x2F5D, 0xBA15, 0xBA15, 0x075F,
+ 0xBA16, 0xBA37, 0x2F69, 0xBA38, 0xBA39, 0x0760, 0xBA3A, 0xBA3B, 0x2F8B,
+ 0xBA3C, 0xBA3C, 0x0762, 0xBA3D, 0xBA3F, 0x2F8D, 0xBA40, 0xBA40, 0x0763,
+ 0xBA41, 0xBA41, 0x2F90, 0xBA42, 0xBA42, 0x0764, 0xBA43, 0xBA47, 0x2F91,
+ 0xBA48, 0xBA49, 0x0765, 0xBA4A, 0xBA4A, 0x2F96, 0xBA4B, 0xBA4B, 0x0767,
+ 0xBA4C, 0xBA4C, 0x2F97, 0xBA4D, 0xBA4E, 0x0768, 0xBA4F, 0xBA52, 0x2F98,
+ 0xBA53, 0xBA55, 0x076A, 0xBA56, 0xBA57, 0x2F9C, 0xBA58, 0xBA58, 0x076D,
+ 0xBA59, 0xBA5B, 0x2F9E, 0xBA5C, 0xBA5C, 0x076E, 0xBA5D, 0xBA63, 0x2FA1,
+ 0xBA64, 0xBA65, 0x076F, 0xBA66, 0xBA66, 0x2FA8, 0xBA67, 0xBA69, 0x0771,
+ 0xBA6A, 0xBA6F, 0x2FA9, 0xBA70, 0xBA71, 0x0774, 0xBA72, 0xBA73, 0x2FAF,
+ 0xBA74, 0xBA74, 0x0776, 0xBA75, 0xBA77, 0x2FB1, 0xBA78, 0xBA78, 0x0777,
+ 0xBA79, 0xBA82, 0x2FB4, 0xBA83, 0xBA85, 0x0778, 0xBA86, 0xBA86, 0x2FBE,
+ 0xBA87, 0xBA87, 0x077B, 0xBA88, 0xBA8B, 0x2FBF, 0xBA8C, 0xBA8C, 0x077C,
+ 0xBA8D, 0xBAA7, 0x2FC3, 0xBAA8, 0xBAA9, 0x077D, 0xBAAA, 0xBAAA, 0x2FDE,
+ 0xBAAB, 0xBAAC, 0x077F, 0xBAAD, 0xBAAF, 0x2FDF, 0xBAB0, 0xBAB0, 0x0781,
+ 0xBAB1, 0xBAB1, 0x2FE2, 0xBAB2, 0xBAB2, 0x0782, 0xBAB3, 0xBAB7, 0x2FE3,
+ 0xBAB8, 0xBAB9, 0x0783, 0xBABA, 0xBABA, 0x2FE8, 0xBABB, 0xBABB, 0x0785,
+ 0xBABC, 0xBABC, 0x2FE9, 0xBABD, 0xBABD, 0x0786, 0xBABE, 0xBAC3, 0x2FEA,
+ 0xBAC4, 0xBAC4, 0x0787, 0xBAC5, 0xBAC7, 0x2FF0, 0xBAC8, 0xBAC8, 0x0788,
+ 0xBAC9, 0xBAD7, 0x2FF3, 0xBAD8, 0xBAD9, 0x0789, 0xBADA, 0xBAFB, 0x3002,
+ 0xBAFC, 0xBAFC, 0x078B, 0xBAFD, 0xBAFF, 0x3024, 0xBB00, 0xBB00, 0x078C,
+ 0xBB01, 0xBB03, 0x3027, 0xBB04, 0xBB04, 0x078D, 0xBB05, 0xBB0C, 0x302A,
+ 0xBB0D, 0xBB0D, 0x078E, 0xBB0E, 0xBB0E, 0x3032, 0xBB0F, 0xBB0F, 0x078F,
+ 0xBB10, 0xBB10, 0x3033, 0xBB11, 0xBB11, 0x0790, 0xBB12, 0xBB17, 0x3034,
+ 0xBB18, 0xBB18, 0x0791, 0xBB19, 0xBB1B, 0x303A, 0xBB1C, 0xBB1C, 0x0792,
+ 0xBB1D, 0xBB1F, 0x303D, 0xBB20, 0xBB20, 0x0793, 0xBB21, 0xBB28, 0x3040,
+ 0xBB29, 0xBB29, 0x0794, 0xBB2A, 0xBB2A, 0x3048, 0xBB2B, 0xBB2B, 0x0795,
+ 0xBB2C, 0xBB33, 0x3049, 0xBB34, 0xBB36, 0x0796, 0xBB37, 0xBB37, 0x3051,
+ 0xBB38, 0xBB38, 0x0799, 0xBB39, 0xBB3A, 0x3052, 0xBB3B, 0xBB3E, 0x079A,
+ 0xBB3F, 0xBB43, 0x3054, 0xBB44, 0xBB45, 0x079E, 0xBB46, 0xBB46, 0x3059,
+ 0xBB47, 0xBB47, 0x07A0, 0xBB48, 0xBB48, 0x305A, 0xBB49, 0xBB49, 0x07A1,
+ 0xBB4A, 0xBB4C, 0x305B, 0xBB4D, 0xBB4D, 0x07A2, 0xBB4E, 0xBB4E, 0x305E,
+ 0xBB4F, 0xBB50, 0x07A3, 0xBB51, 0xBB53, 0x305F, 0xBB54, 0xBB54, 0x07A5,
+ 0xBB55, 0xBB57, 0x3062, 0xBB58, 0xBB58, 0x07A6, 0xBB59, 0xBB60, 0x3065,
+ 0xBB61, 0xBB61, 0x07A7, 0xBB62, 0xBB62, 0x306D, 0xBB63, 0xBB63, 0x07A8,
+ 0xBB64, 0xBB6B, 0x306E, 0xBB6C, 0xBB6C, 0x07A9, 0xBB6D, 0xBB87, 0x3076,
+ 0xBB88, 0xBB88, 0x07AA, 0xBB89, 0xBB8B, 0x3091, 0xBB8C, 0xBB8C, 0x07AB,
+ 0xBB8D, 0xBB8F, 0x3094, 0xBB90, 0xBB90, 0x07AC, 0xBB91, 0xBBA3, 0x3097,
+ 0xBBA4, 0xBBA4, 0x07AD, 0xBBA5, 0xBBA7, 0x30AA, 0xBBA8, 0xBBA8, 0x07AE,
+ 0xBBA9, 0xBBAB, 0x30AD, 0xBBAC, 0xBBAC, 0x07AF, 0xBBAD, 0xBBB3, 0x30B0,
+ 0xBBB4, 0xBBB4, 0x07B0, 0xBBB5, 0xBBB6, 0x30B7, 0xBBB7, 0xBBB7, 0x07B1,
+ 0xBBB8, 0xBBBF, 0x30B9, 0xBBC0, 0xBBC0, 0x07B2, 0xBBC1, 0xBBC3, 0x30C1,
+ 0xBBC4, 0xBBC4, 0x07B3, 0xBBC5, 0xBBC7, 0x30C4, 0xBBC8, 0xBBC8, 0x07B4,
+ 0xBBC9, 0xBBCF, 0x30C7, 0xBBD0, 0xBBD0, 0x07B5, 0xBBD1, 0xBBD2, 0x30CE,
+ 0xBBD3, 0xBBD3, 0x07B6, 0xBBD4, 0xBBF7, 0x30D0, 0xBBF8, 0xBBF9, 0x07B7,
+ 0xBBFA, 0xBBFB, 0x30F4, 0xBBFC, 0xBBFC, 0x07B9, 0xBBFD, 0xBBFE, 0x30F6,
+ 0xBBFF, 0xBBFF, 0x07BA, 0xBC00, 0xBC00, 0x07BB, 0xBC01, 0xBC01, 0x30F8,
+ 0xBC02, 0xBC02, 0x07BC, 0xBC03, 0xBC07, 0x30F9, 0xBC08, 0xBC09, 0x07BD,
+ 0xBC0A, 0xBC0A, 0x30FE, 0xBC0B, 0xBC0D, 0x07BF, 0xBC0E, 0xBC0E, 0x30FF,
+ 0xBC0F, 0xBC0F, 0x07C2, 0xBC10, 0xBC10, 0x3100, 0xBC11, 0xBC11, 0x07C3,
+ 0xBC12, 0xBC13, 0x3101, 0xBC14, 0xBC18, 0x07C4, 0xBC19, 0xBC1A, 0x3103,
+ 0xBC1B, 0xBC1F, 0x07C9, 0xBC20, 0xBC23, 0x3105, 0xBC24, 0xBC25, 0x07CE,
+ 0xBC26, 0xBC26, 0x3109, 0xBC27, 0xBC27, 0x07D0, 0xBC28, 0xBC28, 0x310A,
+ 0xBC29, 0xBC29, 0x07D1, 0xBC2A, 0xBC2C, 0x310B, 0xBC2D, 0xBC2D, 0x07D2,
+ 0xBC2E, 0xBC2F, 0x310E, 0xBC30, 0xBC31, 0x07D3, 0xBC32, 0xBC33, 0x3110,
+ 0xBC34, 0xBC34, 0x07D5, 0xBC35, 0xBC37, 0x3112, 0xBC38, 0xBC38, 0x07D6,
+ 0xBC39, 0xBC3F, 0x3115, 0xBC40, 0xBC41, 0x07D7, 0xBC42, 0xBC42, 0x311C,
+ 0xBC43, 0xBC45, 0x07D9, 0xBC46, 0xBC48, 0x311D, 0xBC49, 0xBC49, 0x07DC,
+ 0xBC4A, 0xBC4B, 0x3120, 0xBC4C, 0xBC4D, 0x07DD, 0xBC4E, 0xBC4F, 0x3122,
+ 0xBC50, 0xBC50, 0x07DF, 0xBC51, 0xBC5C, 0x3124, 0xBC5D, 0xBC5D, 0x07E0,
+ 0xBC5E, 0xBC83, 0x3130, 0xBC84, 0xBC85, 0x07E1, 0xBC86, 0xBC87, 0x3156,
+ 0xBC88, 0xBC88, 0x07E3, 0xBC89, 0xBC8A, 0x3158, 0xBC8B, 0xBC8C, 0x07E4,
+ 0xBC8D, 0xBC8D, 0x315A, 0xBC8E, 0xBC8E, 0x07E6, 0xBC8F, 0xBC93, 0x315B,
+ 0xBC94, 0xBC95, 0x07E7, 0xBC96, 0xBC96, 0x3160, 0xBC97, 0xBC97, 0x07E9,
+ 0xBC98, 0xBC98, 0x3161, 0xBC99, 0xBC9A, 0x07EA, 0xBC9B, 0xBC9F, 0x3162,
+ 0xBCA0, 0xBCA1, 0x07EC, 0xBCA2, 0xBCA3, 0x3167, 0xBCA4, 0xBCA4, 0x07EE,
+ 0xBCA5, 0xBCA6, 0x3169, 0xBCA7, 0xBCA8, 0x07EF, 0xBCA9, 0xBCAF, 0x316B,
+ 0xBCB0, 0xBCB1, 0x07F1, 0xBCB2, 0xBCB2, 0x3172, 0xBCB3, 0xBCB5, 0x07F3,
+ 0xBCB6, 0xBCBB, 0x3173, 0xBCBC, 0xBCBD, 0x07F6, 0xBCBE, 0xBCBF, 0x3179,
+ 0xBCC0, 0xBCC0, 0x07F8, 0xBCC1, 0xBCC3, 0x317B, 0xBCC4, 0xBCC4, 0x07F9,
+ 0xBCC5, 0xBCCC, 0x317E, 0xBCCD, 0xBCCD, 0x07FA, 0xBCCE, 0xBCCE, 0x3186,
+ 0xBCCF, 0xBCD1, 0x07FB, 0xBCD2, 0xBCD4, 0x3187, 0xBCD5, 0xBCD5, 0x07FE,
+ 0xBCD6, 0xBCD7, 0x318A, 0xBCD8, 0xBCD8, 0x07FF, 0xBCD9, 0xBCDB, 0x318C,
+ 0xBCDC, 0xBCDC, 0x0800, 0xBCDD, 0xBCF3, 0x318F, 0xBCF4, 0xBCF6, 0x0801,
+ 0xBCF7, 0xBCF7, 0x31A6, 0xBCF8, 0xBCF8, 0x0804, 0xBCF9, 0xBCFB, 0x31A7,
+ 0xBCFC, 0xBCFC, 0x0805, 0xBCFD, 0xBCFF, 0x31AA, 0xBD00, 0xBD03, 0x31AD,
+ 0xBD04, 0xBD05, 0x0806, 0xBD06, 0xBD06, 0x31B1, 0xBD07, 0xBD07, 0x0808,
+ 0xBD08, 0xBD08, 0x31B2, 0xBD09, 0xBD09, 0x0809, 0xBD0A, 0xBD0F, 0x31B3,
+ 0xBD10, 0xBD10, 0x080A, 0xBD11, 0xBD13, 0x31B9, 0xBD14, 0xBD14, 0x080B,
+ 0xBD15, 0xBD23, 0x31BC, 0xBD24, 0xBD24, 0x080C, 0xBD25, 0xBD2B, 0x31CB,
+ 0xBD2C, 0xBD2C, 0x080D, 0xBD2D, 0xBD3F, 0x31D2, 0xBD40, 0xBD40, 0x080E,
+ 0xBD41, 0xBD47, 0x31E5, 0xBD48, 0xBD49, 0x080F, 0xBD4A, 0xBD4B, 0x31EC,
+ 0xBD4C, 0xBD4C, 0x0811, 0xBD4D, 0xBD4F, 0x31EE, 0xBD50, 0xBD50, 0x0812,
+ 0xBD51, 0xBD57, 0x31F1, 0xBD58, 0xBD59, 0x0813, 0xBD5A, 0xBD63, 0x31F8,
+ 0xBD64, 0xBD64, 0x0815, 0xBD65, 0xBD67, 0x3202, 0xBD68, 0xBD68, 0x0816,
+ 0xBD69, 0xBD7F, 0x3205, 0xBD80, 0xBD81, 0x0817, 0xBD82, 0xBD83, 0x321C,
+ 0xBD84, 0xBD84, 0x0819, 0xBD85, 0xBD86, 0x321E, 0xBD87, 0xBD8A, 0x081A,
+ 0xBD8B, 0xBD8F, 0x3220, 0xBD90, 0xBD91, 0x081E, 0xBD92, 0xBD92, 0x3225,
+ 0xBD93, 0xBD93, 0x0820, 0xBD94, 0xBD94, 0x3226, 0xBD95, 0xBD95, 0x0821,
+ 0xBD96, 0xBD98, 0x3227, 0xBD99, 0xBD9A, 0x0822, 0xBD9B, 0xBD9B, 0x322A,
+ 0xBD9C, 0xBD9C, 0x0824, 0xBD9D, 0xBDA3, 0x322B, 0xBDA4, 0xBDA4, 0x0825,
+ 0xBDA5, 0xBDAF, 0x3232, 0xBDB0, 0xBDB0, 0x0826, 0xBDB1, 0xBDB7, 0x323D,
+ 0xBDB8, 0xBDB8, 0x0827, 0xBDB9, 0xBDD3, 0x3244, 0xBDD4, 0xBDD5, 0x0828,
+ 0xBDD6, 0xBDD7, 0x325F, 0xBDD8, 0xBDD8, 0x082A, 0xBDD9, 0xBDDB, 0x3261,
+ 0xBDDC, 0xBDDC, 0x082B, 0xBDDD, 0xBDE8, 0x3264, 0xBDE9, 0xBDE9, 0x082C,
+ 0xBDEA, 0xBDEF, 0x3270, 0xBDF0, 0xBDF0, 0x082D, 0xBDF1, 0xBDF3, 0x3276,
+ 0xBDF4, 0xBDF4, 0x082E, 0xBDF5, 0xBDF7, 0x3279, 0xBDF8, 0xBDF8, 0x082F,
+ 0xBDF9, 0xBDFF, 0x327C, 0xBE00, 0xBE00, 0x0830, 0xBE01, 0xBE02, 0x3283,
+ 0xBE03, 0xBE03, 0x0831, 0xBE04, 0xBE04, 0x3285, 0xBE05, 0xBE05, 0x0832,
+ 0xBE06, 0xBE0B, 0x3286, 0xBE0C, 0xBE0D, 0x0833, 0xBE0E, 0xBE0F, 0x328C,
+ 0xBE10, 0xBE10, 0x0835, 0xBE11, 0xBE13, 0x328E, 0xBE14, 0xBE14, 0x0836,
+ 0xBE15, 0xBE1B, 0x3291, 0xBE1C, 0xBE1D, 0x0837, 0xBE1E, 0xBE1E, 0x3298,
+ 0xBE1F, 0xBE1F, 0x0839, 0xBE20, 0xBE43, 0x3299, 0xBE44, 0xBE45, 0x083A,
+ 0xBE46, 0xBE47, 0x32BD, 0xBE48, 0xBE48, 0x083C, 0xBE49, 0xBE4B, 0x32BF,
+ 0xBE4C, 0xBE4C, 0x083D, 0xBE4D, 0xBE4D, 0x32C2, 0xBE4E, 0xBE4E, 0x083E,
+ 0xBE4F, 0xBE53, 0x32C3, 0xBE54, 0xBE55, 0x083F, 0xBE56, 0xBE56, 0x32C8,
+ 0xBE57, 0xBE57, 0x0841, 0xBE58, 0xBE58, 0x32C9, 0xBE59, 0xBE5B, 0x0842,
+ 0xBE5C, 0xBE5F, 0x32CA, 0xBE60, 0xBE61, 0x0845, 0xBE62, 0xBE63, 0x32CE,
+ 0xBE64, 0xBE64, 0x0847, 0xBE65, 0xBE67, 0x32D0, 0xBE68, 0xBE68, 0x0848,
+ 0xBE69, 0xBE69, 0x32D3, 0xBE6A, 0xBE6A, 0x0849, 0xBE6B, 0xBE6F, 0x32D4,
+ 0xBE70, 0xBE71, 0x084A, 0xBE72, 0xBE72, 0x32D9, 0xBE73, 0xBE75, 0x084C,
+ 0xBE76, 0xBE7A, 0x32DA, 0xBE7B, 0xBE7D, 0x084F, 0xBE7E, 0xBE7F, 0x32DF,
+ 0xBE80, 0xBE80, 0x0852, 0xBE81, 0xBE83, 0x32E1, 0xBE84, 0xBE84, 0x0853,
+ 0xBE85, 0xBE8B, 0x32E4, 0xBE8C, 0xBE8D, 0x0854, 0xBE8E, 0xBE8E, 0x32EB,
+ 0xBE8F, 0xBE91, 0x0856, 0xBE92, 0xBE97, 0x32EC, 0xBE98, 0xBE99, 0x0859,
+ 0xBE9A, 0xBEA7, 0x32F2, 0xBEA8, 0xBEA8, 0x085B, 0xBEA9, 0xBECF, 0x3300,
+ 0xBED0, 0xBED1, 0x085C, 0xBED2, 0xBED3, 0x3327, 0xBED4, 0xBED4, 0x085E,
+ 0xBED5, 0xBED6, 0x3329, 0xBED7, 0xBED8, 0x085F, 0xBED9, 0xBEDF, 0x332B,
+ 0xBEE0, 0xBEE0, 0x0861, 0xBEE1, 0xBEE2, 0x3332, 0xBEE3, 0xBEE5, 0x0862,
+ 0xBEE6, 0xBEEB, 0x3334, 0xBEEC, 0xBEEC, 0x0865, 0xBEED, 0xBEFF, 0x333A,
+ 0xBF00, 0xBF00, 0x334D, 0xBF01, 0xBF01, 0x0866, 0xBF02, 0xBF07, 0x334E,
+ 0xBF08, 0xBF09, 0x0867, 0xBF0A, 0xBF17, 0x3354, 0xBF18, 0xBF19, 0x0869,
+ 0xBF1A, 0xBF1A, 0x3362, 0xBF1B, 0xBF1D, 0x086B, 0xBF1E, 0xBF3F, 0x3363,
+ 0xBF40, 0xBF41, 0x086E, 0xBF42, 0xBF43, 0x3385, 0xBF44, 0xBF44, 0x0870,
+ 0xBF45, 0xBF47, 0x3387, 0xBF48, 0xBF48, 0x0871, 0xBF49, 0xBF4F, 0x338A,
+ 0xBF50, 0xBF51, 0x0872, 0xBF52, 0xBF54, 0x3391, 0xBF55, 0xBF55, 0x0874,
+ 0xBF56, 0xBF93, 0x3394, 0xBF94, 0xBF94, 0x0875, 0xBF95, 0xBFAF, 0x33D2,
+ 0xBFB0, 0xBFB0, 0x0876, 0xBFB1, 0xBFC4, 0x33ED, 0xBFC5, 0xBFC5, 0x0877,
+ 0xBFC6, 0xBFCB, 0x3401, 0xBFCC, 0xBFCD, 0x0878, 0xBFCE, 0xBFCF, 0x3407,
+ 0xBFD0, 0xBFD0, 0x087A, 0xBFD1, 0xBFD3, 0x3409, 0xBFD4, 0xBFD4, 0x087B,
+ 0xBFD5, 0xBFDB, 0x340C, 0xBFDC, 0xBFDC, 0x087C, 0xBFDD, 0xBFDE, 0x3413,
+ 0xBFDF, 0xBFDF, 0x087D, 0xBFE0, 0xBFE0, 0x3415, 0xBFE1, 0xBFE1, 0x087E,
+ 0xBFE2, 0xBFFF, 0x3416, 0xC000, 0xC03B, 0x3434, 0xC03C, 0xC03C, 0x087F,
+ 0xC03D, 0xC050, 0x3470, 0xC051, 0xC051, 0x0880, 0xC052, 0xC057, 0x3484,
+ 0xC058, 0xC058, 0x0881, 0xC059, 0xC05B, 0x348A, 0xC05C, 0xC05C, 0x0882,
+ 0xC05D, 0xC05F, 0x348D, 0xC060, 0xC060, 0x0883, 0xC061, 0xC067, 0x3490,
+ 0xC068, 0xC069, 0x0884, 0xC06A, 0xC08F, 0x3497, 0xC090, 0xC091, 0x0886,
+ 0xC092, 0xC093, 0x34BD, 0xC094, 0xC094, 0x0888, 0xC095, 0xC097, 0x34BF,
+ 0xC098, 0xC098, 0x0889, 0xC099, 0xC09F, 0x34C2, 0xC0A0, 0xC0A1, 0x088A,
+ 0xC0A2, 0xC0A2, 0x34C9, 0xC0A3, 0xC0A3, 0x088C, 0xC0A4, 0xC0A4, 0x34CA,
+ 0xC0A5, 0xC0A5, 0x088D, 0xC0A6, 0xC0AB, 0x34CB, 0xC0AC, 0xC0AD, 0x088E,
+ 0xC0AE, 0xC0AE, 0x34D1, 0xC0AF, 0xC0B0, 0x0890, 0xC0B1, 0xC0B2, 0x34D2,
+ 0xC0B3, 0xC0B6, 0x0892, 0xC0B7, 0xC0BB, 0x34D4, 0xC0BC, 0xC0BD, 0x0896,
+ 0xC0BE, 0xC0BE, 0x34D9, 0xC0BF, 0xC0C1, 0x0898, 0xC0C2, 0xC0C4, 0x34DA,
+ 0xC0C5, 0xC0C5, 0x089B, 0xC0C6, 0xC0C7, 0x34DD, 0xC0C8, 0xC0C9, 0x089C,
+ 0xC0CA, 0xC0CB, 0x34DF, 0xC0CC, 0xC0CC, 0x089E, 0xC0CD, 0xC0CF, 0x34E1,
+ 0xC0D0, 0xC0D0, 0x089F, 0xC0D1, 0xC0D7, 0x34E4, 0xC0D8, 0xC0D9, 0x08A0,
+ 0xC0DA, 0xC0DA, 0x34EB, 0xC0DB, 0xC0DD, 0x08A2, 0xC0DE, 0xC0E3, 0x34EC,
+ 0xC0E4, 0xC0E5, 0x08A5, 0xC0E6, 0xC0E7, 0x34F2, 0xC0E8, 0xC0E8, 0x08A7,
+ 0xC0E9, 0xC0EB, 0x34F4, 0xC0EC, 0xC0EC, 0x08A8, 0xC0ED, 0xC0F3, 0x34F7,
+ 0xC0F4, 0xC0F5, 0x08A9, 0xC0F6, 0xC0F6, 0x34FE, 0xC0F7, 0xC0F7, 0x08AB,
+ 0xC0F8, 0xC0F8, 0x34FF, 0xC0F9, 0xC0F9, 0x08AC, 0xC0FA, 0xC0FF, 0x3500,
+ 0xC100, 0xC100, 0x08AD, 0xC101, 0xC103, 0x3506, 0xC104, 0xC104, 0x08AE,
+ 0xC105, 0xC107, 0x3509, 0xC108, 0xC108, 0x08AF, 0xC109, 0xC10F, 0x350C,
+ 0xC110, 0xC110, 0x08B0, 0xC111, 0xC114, 0x3513, 0xC115, 0xC115, 0x08B1,
+ 0xC116, 0xC11B, 0x3517, 0xC11C, 0xC120, 0x08B2, 0xC121, 0xC122, 0x351D,
+ 0xC123, 0xC124, 0x08B7, 0xC125, 0xC125, 0x351F, 0xC126, 0xC127, 0x08B9,
+ 0xC128, 0xC12B, 0x3520, 0xC12C, 0xC12D, 0x08BB, 0xC12E, 0xC12E, 0x3524,
+ 0xC12F, 0xC131, 0x08BD, 0xC132, 0xC135, 0x3525, 0xC136, 0xC136, 0x08C0,
+ 0xC137, 0xC137, 0x3529, 0xC138, 0xC139, 0x08C1, 0xC13A, 0xC13B, 0x352A,
+ 0xC13C, 0xC13C, 0x08C3, 0xC13D, 0xC13F, 0x352C, 0xC140, 0xC140, 0x08C4,
+ 0xC141, 0xC147, 0x352F, 0xC148, 0xC149, 0x08C5, 0xC14A, 0xC14A, 0x3536,
+ 0xC14B, 0xC14D, 0x08C7, 0xC14E, 0xC153, 0x3537, 0xC154, 0xC155, 0x08CA,
+ 0xC156, 0xC157, 0x353D, 0xC158, 0xC158, 0x08CC, 0xC159, 0xC15B, 0x353F,
+ 0xC15C, 0xC15C, 0x08CD, 0xC15D, 0xC163, 0x3542, 0xC164, 0xC165, 0x08CE,
+ 0xC166, 0xC166, 0x3549, 0xC167, 0xC169, 0x08D0, 0xC16A, 0xC16F, 0x354A,
+ 0xC170, 0xC170, 0x08D3, 0xC171, 0xC173, 0x3550, 0xC174, 0xC174, 0x08D4,
+ 0xC175, 0xC177, 0x3553, 0xC178, 0xC178, 0x08D5, 0xC179, 0xC184, 0x3556,
+ 0xC185, 0xC185, 0x08D6, 0xC186, 0xC18B, 0x3562, 0xC18C, 0xC18E, 0x08D7,
+ 0xC18F, 0xC18F, 0x3568, 0xC190, 0xC190, 0x08DA, 0xC191, 0xC193, 0x3569,
+ 0xC194, 0xC194, 0x08DB, 0xC195, 0xC195, 0x356C, 0xC196, 0xC196, 0x08DC,
+ 0xC197, 0xC19B, 0x356D, 0xC19C, 0xC19D, 0x08DD, 0xC19E, 0xC19E, 0x3572,
+ 0xC19F, 0xC19F, 0x08DF, 0xC1A0, 0xC1A0, 0x3573, 0xC1A1, 0xC1A1, 0x08E0,
+ 0xC1A2, 0xC1A4, 0x3574, 0xC1A5, 0xC1A5, 0x08E1, 0xC1A6, 0xC1A7, 0x3577,
+ 0xC1A8, 0xC1A9, 0x08E2, 0xC1AA, 0xC1AB, 0x3579, 0xC1AC, 0xC1AC, 0x08E4,
+ 0xC1AD, 0xC1AF, 0x357B, 0xC1B0, 0xC1B0, 0x08E5, 0xC1B1, 0xC1BC, 0x357E,
+ 0xC1BD, 0xC1BD, 0x08E6, 0xC1BE, 0xC1C3, 0x358A, 0xC1C4, 0xC1C4, 0x08E7,
+ 0xC1C5, 0xC1C7, 0x3590, 0xC1C8, 0xC1C8, 0x08E8, 0xC1C9, 0xC1CB, 0x3593,
+ 0xC1CC, 0xC1CC, 0x08E9, 0xC1CD, 0xC1D3, 0x3596, 0xC1D4, 0xC1D4, 0x08EA,
+ 0xC1D5, 0xC1D6, 0x359D, 0xC1D7, 0xC1D8, 0x08EB, 0xC1D9, 0xC1DF, 0x359F,
+ 0xC1E0, 0xC1E0, 0x08ED, 0xC1E1, 0xC1E3, 0x35A6, 0xC1E4, 0xC1E4, 0x08EE,
+ 0xC1E5, 0xC1E7, 0x35A9, 0xC1E8, 0xC1E8, 0x08EF, 0xC1E9, 0xC1EF, 0x35AC,
+ 0xC1F0, 0xC1F1, 0x08F0, 0xC1F2, 0xC1F2, 0x35B3, 0xC1F3, 0xC1F3, 0x08F2,
+ 0xC1F4, 0xC1FB, 0x35B4, 0xC1FC, 0xC1FD, 0x08F3, 0xC1FE, 0xC1FF, 0x35BC,
+ 0xC200, 0xC200, 0x08F5, 0xC201, 0xC203, 0x35BE, 0xC204, 0xC204, 0x08F6,
+ 0xC205, 0xC20B, 0x35C1, 0xC20C, 0xC20D, 0x08F7, 0xC20E, 0xC20E, 0x35C8,
+ 0xC20F, 0xC20F, 0x08F9, 0xC210, 0xC210, 0x35C9, 0xC211, 0xC211, 0x08FA,
+ 0xC212, 0xC217, 0x35CA, 0xC218, 0xC219, 0x08FB, 0xC21A, 0xC21B, 0x35D0,
+ 0xC21C, 0xC21C, 0x08FD, 0xC21D, 0xC21E, 0x35D2, 0xC21F, 0xC220, 0x08FE,
+ 0xC221, 0xC227, 0x35D4, 0xC228, 0xC229, 0x0900, 0xC22A, 0xC22A, 0x35DB,
+ 0xC22B, 0xC22B, 0x0902, 0xC22C, 0xC22C, 0x35DC, 0xC22D, 0xC22D, 0x0903,
+ 0xC22E, 0xC22E, 0x35DD, 0xC22F, 0xC22F, 0x0904, 0xC230, 0xC230, 0x35DE,
+ 0xC231, 0xC232, 0x0905, 0xC233, 0xC233, 0x35DF, 0xC234, 0xC234, 0x0907,
+ 0xC235, 0xC247, 0x35E0, 0xC248, 0xC248, 0x0908, 0xC249, 0xC24F, 0x35F3,
+ 0xC250, 0xC251, 0x0909, 0xC252, 0xC253, 0x35FA, 0xC254, 0xC254, 0x090B,
+ 0xC255, 0xC257, 0x35FC, 0xC258, 0xC258, 0x090C, 0xC259, 0xC25F, 0x35FF,
+ 0xC260, 0xC260, 0x090D, 0xC261, 0xC264, 0x3606, 0xC265, 0xC265, 0x090E,
+ 0xC266, 0xC26B, 0x360A, 0xC26C, 0xC26D, 0x090F, 0xC26E, 0xC26F, 0x3610,
+ 0xC270, 0xC270, 0x0911, 0xC271, 0xC273, 0x3612, 0xC274, 0xC274, 0x0912,
+ 0xC275, 0xC27B, 0x3615, 0xC27C, 0xC27D, 0x0913, 0xC27E, 0xC27E, 0x361C,
+ 0xC27F, 0xC27F, 0x0915, 0xC280, 0xC280, 0x361D, 0xC281, 0xC281, 0x0916,
+ 0xC282, 0xC287, 0x361E, 0xC288, 0xC289, 0x0917, 0xC28A, 0xC28F, 0x3624,
+ 0xC290, 0xC290, 0x0919, 0xC291, 0xC297, 0x362A, 0xC298, 0xC298, 0x091A,
+ 0xC299, 0xC29A, 0x3631, 0xC29B, 0xC29B, 0x091B, 0xC29C, 0xC29C, 0x3633,
+ 0xC29D, 0xC29D, 0x091C, 0xC29E, 0xC2A3, 0x3634, 0xC2A4, 0xC2A5, 0x091D,
+ 0xC2A6, 0xC2A7, 0x363A, 0xC2A8, 0xC2A8, 0x091F, 0xC2A9, 0xC2AB, 0x363C,
+ 0xC2AC, 0xC2AD, 0x0920, 0xC2AE, 0xC2B3, 0x363F, 0xC2B4, 0xC2B5, 0x0922,
+ 0xC2B6, 0xC2B6, 0x3645, 0xC2B7, 0xC2B7, 0x0924, 0xC2B8, 0xC2B8, 0x3646,
+ 0xC2B9, 0xC2B9, 0x0925, 0xC2BA, 0xC2DB, 0x3647, 0xC2DC, 0xC2DD, 0x0926,
+ 0xC2DE, 0xC2DF, 0x3669, 0xC2E0, 0xC2E0, 0x0928, 0xC2E1, 0xC2E2, 0x366B,
+ 0xC2E3, 0xC2E4, 0x0929, 0xC2E5, 0xC2EA, 0x366D, 0xC2EB, 0xC2ED, 0x092B,
+ 0xC2EE, 0xC2EE, 0x3673, 0xC2EF, 0xC2EF, 0x092E, 0xC2F0, 0xC2F0, 0x3674,
+ 0xC2F1, 0xC2F1, 0x092F, 0xC2F2, 0xC2F5, 0x3675, 0xC2F6, 0xC2F6, 0x0930,
+ 0xC2F7, 0xC2F7, 0x3679, 0xC2F8, 0xC2F9, 0x0931, 0xC2FA, 0xC2FA, 0x367A,
+ 0xC2FB, 0xC2FC, 0x0933, 0xC2FD, 0xC2FF, 0x367B, 0xC300, 0xC300, 0x0935,
+ 0xC301, 0xC307, 0x367E, 0xC308, 0xC309, 0x0936, 0xC30A, 0xC30B, 0x3685,
+ 0xC30C, 0xC30D, 0x0938, 0xC30E, 0xC312, 0x3687, 0xC313, 0xC315, 0x093A,
+ 0xC316, 0xC317, 0x368C, 0xC318, 0xC318, 0x093D, 0xC319, 0xC31B, 0x368E,
+ 0xC31C, 0xC31C, 0x093E, 0xC31D, 0xC323, 0x3691, 0xC324, 0xC325, 0x093F,
+ 0xC326, 0xC327, 0x3698, 0xC328, 0xC329, 0x0941, 0xC32A, 0xC344, 0x369A,
+ 0xC345, 0xC345, 0x0943, 0xC346, 0xC367, 0x36B5, 0xC368, 0xC369, 0x0944,
+ 0xC36A, 0xC36B, 0x36D7, 0xC36C, 0xC36C, 0x0946, 0xC36D, 0xC36F, 0x36D9,
+ 0xC370, 0xC370, 0x0947, 0xC371, 0xC371, 0x36DC, 0xC372, 0xC372, 0x0948,
+ 0xC373, 0xC377, 0x36DD, 0xC378, 0xC379, 0x0949, 0xC37A, 0xC37B, 0x36E2,
+ 0xC37C, 0xC37D, 0x094B, 0xC37E, 0xC383, 0x36E4, 0xC384, 0xC384, 0x094D,
+ 0xC385, 0xC387, 0x36EA, 0xC388, 0xC388, 0x094E, 0xC389, 0xC38B, 0x36ED,
+ 0xC38C, 0xC38C, 0x094F, 0xC38D, 0xC3BF, 0x36F0, 0xC3C0, 0xC3C0, 0x0950,
+ 0xC3C1, 0xC3D7, 0x3723, 0xC3D8, 0xC3D9, 0x0951, 0xC3DA, 0xC3DB, 0x373A,
+ 0xC3DC, 0xC3DC, 0x0953, 0xC3DD, 0xC3DE, 0x373C, 0xC3DF, 0xC3E0, 0x0954,
+ 0xC3E1, 0xC3E1, 0x373E, 0xC3E2, 0xC3E2, 0x0956, 0xC3E3, 0xC3E7, 0x373F,
+ 0xC3E8, 0xC3E9, 0x0957, 0xC3EA, 0xC3EC, 0x3744, 0xC3ED, 0xC3ED, 0x0959,
+ 0xC3EE, 0xC3F3, 0x3747, 0xC3F4, 0xC3F5, 0x095A, 0xC3F6, 0xC3F7, 0x374D,
+ 0xC3F8, 0xC3F8, 0x095C, 0xC3F9, 0xC3FF, 0x374F, 0xC400, 0xC407, 0x3756,
+ 0xC408, 0xC408, 0x095D, 0xC409, 0xC40F, 0x375E, 0xC410, 0xC410, 0x095E,
+ 0xC411, 0xC423, 0x3765, 0xC424, 0xC424, 0x095F, 0xC425, 0xC42B, 0x3778,
+ 0xC42C, 0xC42C, 0x0960, 0xC42D, 0xC42F, 0x377F, 0xC430, 0xC430, 0x0961,
+ 0xC431, 0xC433, 0x3782, 0xC434, 0xC434, 0x0962, 0xC435, 0xC43B, 0x3785,
+ 0xC43C, 0xC43D, 0x0963, 0xC43E, 0xC447, 0x378C, 0xC448, 0xC448, 0x0965,
+ 0xC449, 0xC463, 0x3796, 0xC464, 0xC465, 0x0966, 0xC466, 0xC467, 0x37B1,
+ 0xC468, 0xC468, 0x0968, 0xC469, 0xC46B, 0x37B3, 0xC46C, 0xC46C, 0x0969,
+ 0xC46D, 0xC473, 0x37B6, 0xC474, 0xC475, 0x096A, 0xC476, 0xC478, 0x37BD,
+ 0xC479, 0xC479, 0x096C, 0xC47A, 0xC47F, 0x37C0, 0xC480, 0xC480, 0x096D,
+ 0xC481, 0xC493, 0x37C6, 0xC494, 0xC494, 0x096E, 0xC495, 0xC49B, 0x37D9,
+ 0xC49C, 0xC49C, 0x096F, 0xC49D, 0xC4B7, 0x37E0, 0xC4B8, 0xC4B8, 0x0970,
+ 0xC4B9, 0xC4BB, 0x37FB, 0xC4BC, 0xC4BC, 0x0971, 0xC4BD, 0xC4E8, 0x37FE,
+ 0xC4E9, 0xC4E9, 0x0972, 0xC4EA, 0xC4EF, 0x382A, 0xC4F0, 0xC4F1, 0x0973,
+ 0xC4F2, 0xC4F3, 0x3830, 0xC4F4, 0xC4F4, 0x0975, 0xC4F5, 0xC4F7, 0x3832,
+ 0xC4F8, 0xC4F8, 0x0976, 0xC4F9, 0xC4F9, 0x3835, 0xC4FA, 0xC4FA, 0x0977,
+ 0xC4FB, 0xC4FE, 0x3836, 0xC4FF, 0xC4FF, 0x0978, 0xC500, 0xC501, 0x0979,
+ 0xC502, 0xC50B, 0x383A, 0xC50C, 0xC50C, 0x097B, 0xC50D, 0xC50F, 0x3844,
+ 0xC510, 0xC510, 0x097C, 0xC511, 0xC513, 0x3847, 0xC514, 0xC514, 0x097D,
+ 0xC515, 0xC51B, 0x384A, 0xC51C, 0xC51C, 0x097E, 0xC51D, 0xC527, 0x3851,
+ 0xC528, 0xC529, 0x097F, 0xC52A, 0xC52B, 0x385C, 0xC52C, 0xC52C, 0x0981,
+ 0xC52D, 0xC52F, 0x385E, 0xC530, 0xC530, 0x0982, 0xC531, 0xC537, 0x3861,
+ 0xC538, 0xC539, 0x0983, 0xC53A, 0xC53A, 0x3868, 0xC53B, 0xC53B, 0x0985,
+ 0xC53C, 0xC53C, 0x3869, 0xC53D, 0xC53D, 0x0986, 0xC53E, 0xC543, 0x386A,
+ 0xC544, 0xC545, 0x0987, 0xC546, 0xC547, 0x3870, 0xC548, 0xC54A, 0x0989,
+ 0xC54B, 0xC54B, 0x3872, 0xC54C, 0xC54E, 0x098C, 0xC54F, 0xC552, 0x3873,
+ 0xC553, 0xC555, 0x098F, 0xC556, 0xC556, 0x3877, 0xC557, 0xC559, 0x0992,
+ 0xC55A, 0xC55C, 0x3878, 0xC55D, 0xC55E, 0x0995, 0xC55F, 0xC55F, 0x387B,
+ 0xC560, 0xC561, 0x0997, 0xC562, 0xC563, 0x387C, 0xC564, 0xC564, 0x0999,
+ 0xC565, 0xC567, 0x387E, 0xC568, 0xC568, 0x099A, 0xC569, 0xC56F, 0x3881,
+ 0xC570, 0xC571, 0x099B, 0xC572, 0xC572, 0x3888, 0xC573, 0xC575, 0x099D,
+ 0xC576, 0xC57B, 0x3889, 0xC57C, 0xC57D, 0x09A0, 0xC57E, 0xC57F, 0x388F,
+ 0xC580, 0xC580, 0x09A2, 0xC581, 0xC583, 0x3891, 0xC584, 0xC584, 0x09A3,
+ 0xC585, 0xC586, 0x3894, 0xC587, 0xC587, 0x09A4, 0xC588, 0xC58B, 0x3896,
+ 0xC58C, 0xC58D, 0x09A5, 0xC58E, 0xC58E, 0x389A, 0xC58F, 0xC58F, 0x09A7,
+ 0xC590, 0xC590, 0x389B, 0xC591, 0xC591, 0x09A8, 0xC592, 0xC594, 0x389C,
+ 0xC595, 0xC595, 0x09A9, 0xC596, 0xC596, 0x389F, 0xC597, 0xC598, 0x09AA,
+ 0xC599, 0xC59B, 0x38A0, 0xC59C, 0xC59C, 0x09AC, 0xC59D, 0xC59F, 0x38A3,
+ 0xC5A0, 0xC5A0, 0x09AD, 0xC5A1, 0xC5A8, 0x38A6, 0xC5A9, 0xC5A9, 0x09AE,
+ 0xC5AA, 0xC5B3, 0x38AE, 0xC5B4, 0xC5B5, 0x09AF, 0xC5B6, 0xC5B7, 0x38B8,
+ 0xC5B8, 0xC5B9, 0x09B1, 0xC5BA, 0xC5BA, 0x38BA, 0xC5BB, 0xC5BE, 0x09B3,
+ 0xC5BF, 0xC5C3, 0x38BB, 0xC5C4, 0xC5CA, 0x09B7, 0xC5CB, 0xC5CB, 0x38C0,
+ 0xC5CC, 0xC5CC, 0x09BE, 0xC5CD, 0xC5CD, 0x38C1, 0xC5CE, 0xC5CE, 0x09BF,
+ 0xC5CF, 0xC5CF, 0x38C2, 0xC5D0, 0xC5D1, 0x09C0, 0xC5D2, 0xC5D3, 0x38C3,
+ 0xC5D4, 0xC5D4, 0x09C2, 0xC5D5, 0xC5D7, 0x38C5, 0xC5D8, 0xC5D8, 0x09C3,
+ 0xC5D9, 0xC5DF, 0x38C8, 0xC5E0, 0xC5E1, 0x09C4, 0xC5E2, 0xC5E2, 0x38CF,
+ 0xC5E3, 0xC5E3, 0x09C6, 0xC5E4, 0xC5E4, 0x38D0, 0xC5E5, 0xC5E5, 0x09C7,
+ 0xC5E6, 0xC5EB, 0x38D1, 0xC5EC, 0xC5EE, 0x09C8, 0xC5EF, 0xC5EF, 0x38D7,
+ 0xC5F0, 0xC5F0, 0x09CB, 0xC5F1, 0xC5F3, 0x38D8, 0xC5F4, 0xC5F4, 0x09CC,
+ 0xC5F5, 0xC5F5, 0x38DB, 0xC5F6, 0xC5F7, 0x09CD, 0xC5F8, 0xC5FB, 0x38DC,
+ 0xC5FC, 0xC5FF, 0x09CF, 0xC600, 0xC601, 0x09D3, 0xC602, 0xC604, 0x38E0,
+ 0xC605, 0xC608, 0x09D5, 0xC609, 0xC60B, 0x38E3, 0xC60C, 0xC60C, 0x09D9,
+ 0xC60D, 0xC60F, 0x38E6, 0xC610, 0xC610, 0x09DA, 0xC611, 0xC617, 0x38E9,
+ 0xC618, 0xC619, 0x09DB, 0xC61A, 0xC61A, 0x38F0, 0xC61B, 0xC61C, 0x09DD,
+ 0xC61D, 0xC623, 0x38F1, 0xC624, 0xC625, 0x09DF, 0xC626, 0xC627, 0x38F8,
+ 0xC628, 0xC628, 0x09E1, 0xC629, 0xC62B, 0x38FA, 0xC62C, 0xC62E, 0x09E2,
+ 0xC62F, 0xC62F, 0x38FD, 0xC630, 0xC630, 0x09E5, 0xC631, 0xC632, 0x38FE,
+ 0xC633, 0xC635, 0x09E6, 0xC636, 0xC636, 0x3900, 0xC637, 0xC637, 0x09E9,
+ 0xC638, 0xC638, 0x3901, 0xC639, 0xC639, 0x09EA, 0xC63A, 0xC63A, 0x3902,
+ 0xC63B, 0xC63B, 0x09EB, 0xC63C, 0xC63F, 0x3903, 0xC640, 0xC641, 0x09EC,
+ 0xC642, 0xC643, 0x3907, 0xC644, 0xC644, 0x09EE, 0xC645, 0xC647, 0x3909,
+ 0xC648, 0xC648, 0x09EF, 0xC649, 0xC64F, 0x390C, 0xC650, 0xC651, 0x09F0,
+ 0xC652, 0xC652, 0x3913, 0xC653, 0xC655, 0x09F2, 0xC656, 0xC65B, 0x3914,
+ 0xC65C, 0xC65D, 0x09F5, 0xC65E, 0xC65F, 0x391A, 0xC660, 0xC660, 0x09F7,
+ 0xC661, 0xC66B, 0x391C, 0xC66C, 0xC66C, 0x09F8, 0xC66D, 0xC66E, 0x3927,
+ 0xC66F, 0xC66F, 0x09F9, 0xC670, 0xC670, 0x3929, 0xC671, 0xC671, 0x09FA,
+ 0xC672, 0xC677, 0x392A, 0xC678, 0xC679, 0x09FB, 0xC67A, 0xC67B, 0x3930,
+ 0xC67C, 0xC67C, 0x09FD, 0xC67D, 0xC67F, 0x3932, 0xC680, 0xC680, 0x09FE,
+ 0xC681, 0xC687, 0x3935, 0xC688, 0xC689, 0x09FF, 0xC68A, 0xC68A, 0x393C,
+ 0xC68B, 0xC68B, 0x0A01, 0xC68C, 0xC68C, 0x393D, 0xC68D, 0xC68D, 0x0A02,
+ 0xC68E, 0xC693, 0x393E, 0xC694, 0xC695, 0x0A03, 0xC696, 0xC697, 0x3944,
+ 0xC698, 0xC698, 0x0A05, 0xC699, 0xC69B, 0x3946, 0xC69C, 0xC69C, 0x0A06,
+ 0xC69D, 0xC6A3, 0x3949, 0xC6A4, 0xC6A5, 0x0A07, 0xC6A6, 0xC6A6, 0x3950,
+ 0xC6A7, 0xC6A7, 0x0A09, 0xC6A8, 0xC6A8, 0x3951, 0xC6A9, 0xC6A9, 0x0A0A,
+ 0xC6AA, 0xC6AF, 0x3952, 0xC6B0, 0xC6B1, 0x0A0B, 0xC6B2, 0xC6B3, 0x3958,
+ 0xC6B4, 0xC6B4, 0x0A0D, 0xC6B5, 0xC6B7, 0x395A, 0xC6B8, 0xC6BA, 0x0A0E,
+ 0xC6BB, 0xC6BF, 0x395D, 0xC6C0, 0xC6C1, 0x0A11, 0xC6C2, 0xC6C2, 0x3962,
+ 0xC6C3, 0xC6C3, 0x0A13, 0xC6C4, 0xC6C4, 0x3963, 0xC6C5, 0xC6C5, 0x0A14,
+ 0xC6C6, 0xC6CB, 0x3964, 0xC6CC, 0xC6CD, 0x0A15, 0xC6CE, 0xC6CF, 0x396A,
+ 0xC6D0, 0xC6D0, 0x0A17, 0xC6D1, 0xC6D3, 0x396C, 0xC6D4, 0xC6D4, 0x0A18,
+ 0xC6D5, 0xC6DB, 0x396F, 0xC6DC, 0xC6DD, 0x0A19, 0xC6DE, 0xC6DF, 0x3976,
+ 0xC6E0, 0xC6E1, 0x0A1B, 0xC6E2, 0xC6E7, 0x3978, 0xC6E8, 0xC6E9, 0x0A1D,
+ 0xC6EA, 0xC6EB, 0x397E, 0xC6EC, 0xC6EC, 0x0A1F, 0xC6ED, 0xC6EF, 0x3980,
+ 0xC6F0, 0xC6F0, 0x0A20, 0xC6F1, 0xC6F7, 0x3983, 0xC6F8, 0xC6F9, 0x0A21,
+ 0xC6FA, 0xC6FC, 0x398A, 0xC6FD, 0xC6FD, 0x0A23, 0xC6FE, 0xC6FF, 0x398D,
+ 0xC700, 0xC703, 0x398F, 0xC704, 0xC705, 0x0A24, 0xC706, 0xC707, 0x3993,
+ 0xC708, 0xC708, 0x0A26, 0xC709, 0xC70B, 0x3995, 0xC70C, 0xC70C, 0x0A27,
+ 0xC70D, 0xC713, 0x3998, 0xC714, 0xC715, 0x0A28, 0xC716, 0xC716, 0x399F,
+ 0xC717, 0xC717, 0x0A2A, 0xC718, 0xC718, 0x39A0, 0xC719, 0xC719, 0x0A2B,
+ 0xC71A, 0xC71F, 0x39A1, 0xC720, 0xC721, 0x0A2C, 0xC722, 0xC723, 0x39A7,
+ 0xC724, 0xC724, 0x0A2E, 0xC725, 0xC727, 0x39A9, 0xC728, 0xC728, 0x0A2F,
+ 0xC729, 0xC72F, 0x39AC, 0xC730, 0xC731, 0x0A30, 0xC732, 0xC732, 0x39B3,
+ 0xC733, 0xC733, 0x0A32, 0xC734, 0xC734, 0x39B4, 0xC735, 0xC735, 0x0A33,
+ 0xC736, 0xC736, 0x39B5, 0xC737, 0xC737, 0x0A34, 0xC738, 0xC73B, 0x39B6,
+ 0xC73C, 0xC73D, 0x0A35, 0xC73E, 0xC73F, 0x39BA, 0xC740, 0xC740, 0x0A37,
+ 0xC741, 0xC743, 0x39BC, 0xC744, 0xC744, 0x0A38, 0xC745, 0xC749, 0x39BF,
+ 0xC74A, 0xC74A, 0x0A39, 0xC74B, 0xC74B, 0x39C4, 0xC74C, 0xC74D, 0x0A3A,
+ 0xC74E, 0xC74E, 0x39C5, 0xC74F, 0xC74F, 0x0A3C, 0xC750, 0xC750, 0x39C6,
+ 0xC751, 0xC758, 0x0A3D, 0xC759, 0xC75B, 0x39C7, 0xC75C, 0xC75C, 0x0A45,
+ 0xC75D, 0xC75F, 0x39CA, 0xC760, 0xC760, 0x0A46, 0xC761, 0xC767, 0x39CD,
+ 0xC768, 0xC768, 0x0A47, 0xC769, 0xC76A, 0x39D4, 0xC76B, 0xC76B, 0x0A48,
+ 0xC76C, 0xC773, 0x39D6, 0xC774, 0xC775, 0x0A49, 0xC776, 0xC777, 0x39DE,
+ 0xC778, 0xC778, 0x0A4B, 0xC779, 0xC77B, 0x39E0, 0xC77C, 0xC77E, 0x0A4C,
+ 0xC77F, 0xC782, 0x39E3, 0xC783, 0xC785, 0x0A4F, 0xC786, 0xC786, 0x39E7,
+ 0xC787, 0xC78A, 0x0A52, 0xC78B, 0xC78D, 0x39E8, 0xC78E, 0xC78E, 0x0A56,
+ 0xC78F, 0xC78F, 0x39EB, 0xC790, 0xC791, 0x0A57, 0xC792, 0xC793, 0x39EC,
+ 0xC794, 0xC794, 0x0A59, 0xC795, 0xC795, 0x39EE, 0xC796, 0xC798, 0x0A5A,
+ 0xC799, 0xC799, 0x39EF, 0xC79A, 0xC79A, 0x0A5D, 0xC79B, 0xC79F, 0x39F0,
+ 0xC7A0, 0xC7A1, 0x0A5E, 0xC7A2, 0xC7A2, 0x39F5, 0xC7A3, 0xC7A6, 0x0A60,
+ 0xC7A7, 0xC7AB, 0x39F6, 0xC7AC, 0xC7AD, 0x0A64, 0xC7AE, 0xC7AF, 0x39FB,
+ 0xC7B0, 0xC7B0, 0x0A66, 0xC7B1, 0xC7B3, 0x39FD, 0xC7B4, 0xC7B4, 0x0A67,
+ 0xC7B5, 0xC7BB, 0x3A00, 0xC7BC, 0xC7BD, 0x0A68, 0xC7BE, 0xC7BE, 0x3A07,
+ 0xC7BF, 0xC7C1, 0x0A6A, 0xC7C2, 0xC7C7, 0x3A08, 0xC7C8, 0xC7C9, 0x0A6D,
+ 0xC7CA, 0xC7CB, 0x3A0E, 0xC7CC, 0xC7CC, 0x0A6F, 0xC7CD, 0xC7CD, 0x3A10,
+ 0xC7CE, 0xC7CE, 0x0A70, 0xC7CF, 0xC7CF, 0x3A11, 0xC7D0, 0xC7D0, 0x0A71,
+ 0xC7D1, 0xC7D7, 0x3A12, 0xC7D8, 0xC7D8, 0x0A72, 0xC7D9, 0xC7DC, 0x3A19,
+ 0xC7DD, 0xC7DD, 0x0A73, 0xC7DE, 0xC7E3, 0x3A1D, 0xC7E4, 0xC7E4, 0x0A74,
+ 0xC7E5, 0xC7E7, 0x3A23, 0xC7E8, 0xC7E8, 0x0A75, 0xC7E9, 0xC7EB, 0x3A26,
+ 0xC7EC, 0xC7EC, 0x0A76, 0xC7ED, 0xC7FF, 0x3A29, 0xC800, 0xC801, 0x0A77,
+ 0xC802, 0xC803, 0x3A3C, 0xC804, 0xC804, 0x0A79, 0xC805, 0xC807, 0x3A3E,
+ 0xC808, 0xC808, 0x0A7A, 0xC809, 0xC809, 0x3A41, 0xC80A, 0xC80A, 0x0A7B,
+ 0xC80B, 0xC80F, 0x3A42, 0xC810, 0xC811, 0x0A7C, 0xC812, 0xC812, 0x3A47,
+ 0xC813, 0xC813, 0x0A7E, 0xC814, 0xC814, 0x3A48, 0xC815, 0xC816, 0x0A7F,
+ 0xC817, 0xC81B, 0x3A49, 0xC81C, 0xC81D, 0x0A81, 0xC81E, 0xC81F, 0x3A4E,
+ 0xC820, 0xC820, 0x0A83, 0xC821, 0xC823, 0x3A50, 0xC824, 0xC824, 0x0A84,
+ 0xC825, 0xC82B, 0x3A53, 0xC82C, 0xC82D, 0x0A85, 0xC82E, 0xC82E, 0x3A5A,
+ 0xC82F, 0xC82F, 0x0A87, 0xC830, 0xC830, 0x3A5B, 0xC831, 0xC831, 0x0A88,
+ 0xC832, 0xC837, 0x3A5C, 0xC838, 0xC838, 0x0A89, 0xC839, 0xC83B, 0x3A62,
+ 0xC83C, 0xC83C, 0x0A8A, 0xC83D, 0xC83F, 0x3A65, 0xC840, 0xC840, 0x0A8B,
+ 0xC841, 0xC847, 0x3A68, 0xC848, 0xC849, 0x0A8C, 0xC84A, 0xC84B, 0x3A6F,
+ 0xC84C, 0xC84D, 0x0A8E, 0xC84E, 0xC853, 0x3A71, 0xC854, 0xC854, 0x0A90,
+ 0xC855, 0xC86F, 0x3A77, 0xC870, 0xC871, 0x0A91, 0xC872, 0xC873, 0x3A92,
+ 0xC874, 0xC874, 0x0A93, 0xC875, 0xC877, 0x3A94, 0xC878, 0xC878, 0x0A94,
+ 0xC879, 0xC879, 0x3A97, 0xC87A, 0xC87A, 0x0A95, 0xC87B, 0xC87F, 0x3A98,
+ 0xC880, 0xC881, 0x0A96, 0xC882, 0xC882, 0x3A9D, 0xC883, 0xC883, 0x0A98,
+ 0xC884, 0xC884, 0x3A9E, 0xC885, 0xC887, 0x0A99, 0xC888, 0xC88A, 0x3A9F,
+ 0xC88B, 0xC88D, 0x0A9C, 0xC88E, 0xC893, 0x3AA2, 0xC894, 0xC894, 0x0A9F,
+ 0xC895, 0xC89C, 0x3AA8, 0xC89D, 0xC89D, 0x0AA0, 0xC89E, 0xC89E, 0x3AB0,
+ 0xC89F, 0xC89F, 0x0AA1, 0xC8A0, 0xC8A0, 0x3AB1, 0xC8A1, 0xC8A1, 0x0AA2,
+ 0xC8A2, 0xC8A7, 0x3AB2, 0xC8A8, 0xC8A8, 0x0AA3, 0xC8A9, 0xC8BB, 0x3AB8,
+ 0xC8BC, 0xC8BD, 0x0AA4, 0xC8BE, 0xC8C3, 0x3ACB, 0xC8C4, 0xC8C4, 0x0AA6,
+ 0xC8C5, 0xC8C7, 0x3AD1, 0xC8C8, 0xC8C8, 0x0AA7, 0xC8C9, 0xC8CB, 0x3AD4,
+ 0xC8CC, 0xC8CC, 0x0AA8, 0xC8CD, 0xC8D3, 0x3AD7, 0xC8D4, 0xC8D5, 0x0AA9,
+ 0xC8D6, 0xC8D6, 0x3ADE, 0xC8D7, 0xC8D7, 0x0AAB, 0xC8D8, 0xC8D8, 0x3ADF,
+ 0xC8D9, 0xC8D9, 0x0AAC, 0xC8DA, 0xC8DF, 0x3AE0, 0xC8E0, 0xC8E1, 0x0AAD,
+ 0xC8E2, 0xC8E3, 0x3AE6, 0xC8E4, 0xC8E4, 0x0AAF, 0xC8E5, 0xC8F4, 0x3AE8,
+ 0xC8F5, 0xC8F5, 0x0AB0, 0xC8F6, 0xC8FB, 0x3AF8, 0xC8FC, 0xC8FD, 0x0AB1,
+ 0xC8FE, 0xC8FF, 0x3AFE, 0xC900, 0xC900, 0x0AB3, 0xC901, 0xC903, 0x3B00,
+ 0xC904, 0xC906, 0x0AB4, 0xC907, 0xC90B, 0x3B03, 0xC90C, 0xC90D, 0x0AB7,
+ 0xC90E, 0xC90E, 0x3B08, 0xC90F, 0xC90F, 0x0AB9, 0xC910, 0xC910, 0x3B09,
+ 0xC911, 0xC911, 0x0ABA, 0xC912, 0xC917, 0x3B0A, 0xC918, 0xC918, 0x0ABB,
+ 0xC919, 0xC92B, 0x3B10, 0xC92C, 0xC92C, 0x0ABC, 0xC92D, 0xC933, 0x3B23,
+ 0xC934, 0xC934, 0x0ABD, 0xC935, 0xC94F, 0x3B2A, 0xC950, 0xC951, 0x0ABE,
+ 0xC952, 0xC953, 0x3B45, 0xC954, 0xC954, 0x0AC0, 0xC955, 0xC957, 0x3B47,
+ 0xC958, 0xC958, 0x0AC1, 0xC959, 0xC95F, 0x3B4A, 0xC960, 0xC961, 0x0AC2,
+ 0xC962, 0xC962, 0x3B51, 0xC963, 0xC963, 0x0AC4, 0xC964, 0xC96B, 0x3B52,
+ 0xC96C, 0xC96C, 0x0AC5, 0xC96D, 0xC96F, 0x3B5A, 0xC970, 0xC970, 0x0AC6,
+ 0xC971, 0xC973, 0x3B5D, 0xC974, 0xC974, 0x0AC7, 0xC975, 0xC97B, 0x3B60,
+ 0xC97C, 0xC97C, 0x0AC8, 0xC97D, 0xC987, 0x3B67, 0xC988, 0xC989, 0x0AC9,
+ 0xC98A, 0xC98B, 0x3B72, 0xC98C, 0xC98C, 0x0ACB, 0xC98D, 0xC98F, 0x3B74,
+ 0xC990, 0xC990, 0x0ACC, 0xC991, 0xC997, 0x3B77, 0xC998, 0xC999, 0x0ACD,
+ 0xC99A, 0xC99A, 0x3B7E, 0xC99B, 0xC99B, 0x0ACF, 0xC99C, 0xC99C, 0x3B7F,
+ 0xC99D, 0xC99D, 0x0AD0, 0xC99E, 0xC9BF, 0x3B80, 0xC9C0, 0xC9C1, 0x0AD1,
+ 0xC9C2, 0xC9C3, 0x3BA2, 0xC9C4, 0xC9C4, 0x0AD3, 0xC9C5, 0xC9C6, 0x3BA4,
+ 0xC9C7, 0xC9C8, 0x0AD4, 0xC9C9, 0xC9C9, 0x3BA6, 0xC9CA, 0xC9CA, 0x0AD6,
+ 0xC9CB, 0xC9CF, 0x3BA7, 0xC9D0, 0xC9D1, 0x0AD7, 0xC9D2, 0xC9D2, 0x3BAC,
+ 0xC9D3, 0xC9D3, 0x0AD9, 0xC9D4, 0xC9D4, 0x3BAD, 0xC9D5, 0xC9D6, 0x0ADA,
+ 0xC9D7, 0xC9D8, 0x3BAE, 0xC9D9, 0xC9DA, 0x0ADC, 0xC9DB, 0xC9DB, 0x3BB0,
+ 0xC9DC, 0xC9DD, 0x0ADE, 0xC9DE, 0xC9DF, 0x3BB1, 0xC9E0, 0xC9E0, 0x0AE0,
+ 0xC9E1, 0xC9E1, 0x3BB3, 0xC9E2, 0xC9E2, 0x0AE1, 0xC9E3, 0xC9E3, 0x3BB4,
+ 0xC9E4, 0xC9E4, 0x0AE2, 0xC9E5, 0xC9E6, 0x3BB5, 0xC9E7, 0xC9E7, 0x0AE3,
+ 0xC9E8, 0xC9EB, 0x3BB7, 0xC9EC, 0xC9ED, 0x0AE4, 0xC9EE, 0xC9EE, 0x3BBB,
+ 0xC9EF, 0xC9F1, 0x0AE6, 0xC9F2, 0xC9F7, 0x3BBC, 0xC9F8, 0xC9F9, 0x0AE9,
+ 0xC9FA, 0xC9FB, 0x3BC2, 0xC9FC, 0xC9FC, 0x0AEB, 0xC9FD, 0xC9FF, 0x3BC4,
+ 0xCA00, 0xCA00, 0x0AEC, 0xCA01, 0xCA07, 0x3BC7, 0xCA08, 0xCA09, 0x0AED,
+ 0xCA0A, 0xCA0A, 0x3BCE, 0xCA0B, 0xCA0D, 0x0AEF, 0xCA0E, 0xCA13, 0x3BCF,
+ 0xCA14, 0xCA14, 0x0AF2, 0xCA15, 0xCA17, 0x3BD5, 0xCA18, 0xCA18, 0x0AF3,
+ 0xCA19, 0xCA28, 0x3BD8, 0xCA29, 0xCA29, 0x0AF4, 0xCA2A, 0xCA4B, 0x3BE8,
+ 0xCA4C, 0xCA4D, 0x0AF5, 0xCA4E, 0xCA4F, 0x3C0A, 0xCA50, 0xCA50, 0x0AF7,
+ 0xCA51, 0xCA53, 0x3C0C, 0xCA54, 0xCA54, 0x0AF8, 0xCA55, 0xCA5B, 0x3C0F,
+ 0xCA5C, 0xCA5D, 0x0AF9, 0xCA5E, 0xCA5E, 0x3C16, 0xCA5F, 0xCA61, 0x0AFB,
+ 0xCA62, 0xCA67, 0x3C17, 0xCA68, 0xCA68, 0x0AFE, 0xCA69, 0xCA7C, 0x3C1D,
+ 0xCA7D, 0xCA7D, 0x0AFF, 0xCA7E, 0xCA83, 0x3C31, 0xCA84, 0xCA84, 0x0B00,
+ 0xCA85, 0xCA97, 0x3C37, 0xCA98, 0xCA98, 0x0B01, 0xCA99, 0xCABB, 0x3C4A,
+ 0xCABC, 0xCABD, 0x0B02, 0xCABE, 0xCABF, 0x3C6D, 0xCAC0, 0xCAC0, 0x0B04,
+ 0xCAC1, 0xCAC3, 0x3C6F, 0xCAC4, 0xCAC4, 0x0B05, 0xCAC5, 0xCACB, 0x3C72,
+ 0xCACC, 0xCACD, 0x0B06, 0xCACE, 0xCACE, 0x3C79, 0xCACF, 0xCACF, 0x0B08,
+ 0xCAD0, 0xCAD0, 0x3C7A, 0xCAD1, 0xCAD1, 0x0B09, 0xCAD2, 0xCAD2, 0x3C7B,
+ 0xCAD3, 0xCAD3, 0x0B0A, 0xCAD4, 0xCAD7, 0x3C7C, 0xCAD8, 0xCAD9, 0x0B0B,
+ 0xCADA, 0xCADF, 0x3C80, 0xCAE0, 0xCAE0, 0x0B0D, 0xCAE1, 0xCAEB, 0x3C86,
+ 0xCAEC, 0xCAEC, 0x0B0E, 0xCAED, 0xCAF3, 0x3C91, 0xCAF4, 0xCAF4, 0x0B0F,
+ 0xCAF5, 0xCAFF, 0x3C98, 0xCB00, 0xCB07, 0x3CA3, 0xCB08, 0xCB08, 0x0B10,
+ 0xCB09, 0xCB0F, 0x3CAB, 0xCB10, 0xCB10, 0x0B11, 0xCB11, 0xCB13, 0x3CB2,
+ 0xCB14, 0xCB14, 0x0B12, 0xCB15, 0xCB17, 0x3CB5, 0xCB18, 0xCB18, 0x0B13,
+ 0xCB19, 0xCB1F, 0x3CB8, 0xCB20, 0xCB21, 0x0B14, 0xCB22, 0xCB40, 0x3CBF,
+ 0xCB41, 0xCB41, 0x0B16, 0xCB42, 0xCB47, 0x3CDE, 0xCB48, 0xCB49, 0x0B17,
+ 0xCB4A, 0xCB4B, 0x3CE4, 0xCB4C, 0xCB4C, 0x0B19, 0xCB4D, 0xCB4F, 0x3CE6,
+ 0xCB50, 0xCB50, 0x0B1A, 0xCB51, 0xCB57, 0x3CE9, 0xCB58, 0xCB59, 0x0B1B,
+ 0xCB5A, 0xCB5C, 0x3CF0, 0xCB5D, 0xCB5D, 0x0B1D, 0xCB5E, 0xCB63, 0x3CF3,
+ 0xCB64, 0xCB64, 0x0B1E, 0xCB65, 0xCB77, 0x3CF9, 0xCB78, 0xCB79, 0x0B1F,
+ 0xCB7A, 0xCB9B, 0x3D0C, 0xCB9C, 0xCB9C, 0x0B21, 0xCB9D, 0xCBB7, 0x3D2E,
+ 0xCBB8, 0xCBB8, 0x0B22, 0xCBB9, 0xCBD3, 0x3D49, 0xCBD4, 0xCBD4, 0x0B23,
+ 0xCBD5, 0xCBE3, 0x3D64, 0xCBE4, 0xCBE4, 0x0B24, 0xCBE5, 0xCBE6, 0x3D73,
+ 0xCBE7, 0xCBE7, 0x0B25, 0xCBE8, 0xCBE8, 0x3D75, 0xCBE9, 0xCBE9, 0x0B26,
+ 0xCBEA, 0xCBFF, 0x3D76, 0xCC00, 0xCC0B, 0x3D8C, 0xCC0C, 0xCC0D, 0x0B27,
+ 0xCC0E, 0xCC0F, 0x3D98, 0xCC10, 0xCC10, 0x0B29, 0xCC11, 0xCC13, 0x3D9A,
+ 0xCC14, 0xCC14, 0x0B2A, 0xCC15, 0xCC1B, 0x3D9D, 0xCC1C, 0xCC1D, 0x0B2B,
+ 0xCC1E, 0xCC20, 0x3DA4, 0xCC21, 0xCC22, 0x0B2D, 0xCC23, 0xCC26, 0x3DA7,
+ 0xCC27, 0xCC29, 0x0B2F, 0xCC2A, 0xCC2B, 0x3DAB, 0xCC2C, 0xCC2C, 0x0B32,
+ 0xCC2D, 0xCC2D, 0x3DAD, 0xCC2E, 0xCC2E, 0x0B33, 0xCC2F, 0xCC2F, 0x3DAE,
+ 0xCC30, 0xCC30, 0x0B34, 0xCC31, 0xCC37, 0x3DAF, 0xCC38, 0xCC39, 0x0B35,
+ 0xCC3A, 0xCC3A, 0x3DB6, 0xCC3B, 0xCC3E, 0x0B37, 0xCC3F, 0xCC43, 0x3DB7,
+ 0xCC44, 0xCC45, 0x0B3B, 0xCC46, 0xCC47, 0x3DBC, 0xCC48, 0xCC48, 0x0B3D,
+ 0xCC49, 0xCC4B, 0x3DBE, 0xCC4C, 0xCC4C, 0x0B3E, 0xCC4D, 0xCC53, 0x3DC1,
+ 0xCC54, 0xCC55, 0x0B3F, 0xCC56, 0xCC56, 0x3DC8, 0xCC57, 0xCC59, 0x0B41,
+ 0xCC5A, 0xCC5F, 0x3DC9, 0xCC60, 0xCC60, 0x0B44, 0xCC61, 0xCC63, 0x3DCF,
+ 0xCC64, 0xCC64, 0x0B45, 0xCC65, 0xCC65, 0x3DD2, 0xCC66, 0xCC66, 0x0B46,
+ 0xCC67, 0xCC67, 0x3DD3, 0xCC68, 0xCC68, 0x0B47, 0xCC69, 0xCC6F, 0x3DD4,
+ 0xCC70, 0xCC70, 0x0B48, 0xCC71, 0xCC74, 0x3DDB, 0xCC75, 0xCC75, 0x0B49,
+ 0xCC76, 0xCC97, 0x3DDF, 0xCC98, 0xCC99, 0x0B4A, 0xCC9A, 0xCC9B, 0x3E01,
+ 0xCC9C, 0xCC9C, 0x0B4C, 0xCC9D, 0xCC9F, 0x3E03, 0xCCA0, 0xCCA0, 0x0B4D,
+ 0xCCA1, 0xCCA7, 0x3E06, 0xCCA8, 0xCCA9, 0x0B4E, 0xCCAA, 0xCCAA, 0x3E0D,
+ 0xCCAB, 0xCCAD, 0x0B50, 0xCCAE, 0xCCB3, 0x3E0E, 0xCCB4, 0xCCB5, 0x0B53,
+ 0xCCB6, 0xCCB7, 0x3E14, 0xCCB8, 0xCCB8, 0x0B55, 0xCCB9, 0xCCBB, 0x3E16,
+ 0xCCBC, 0xCCBC, 0x0B56, 0xCCBD, 0xCCC3, 0x3E19, 0xCCC4, 0xCCC5, 0x0B57,
+ 0xCCC6, 0xCCC6, 0x3E20, 0xCCC7, 0xCCC7, 0x0B59, 0xCCC8, 0xCCC8, 0x3E21,
+ 0xCCC9, 0xCCC9, 0x0B5A, 0xCCCA, 0xCCCF, 0x3E22, 0xCCD0, 0xCCD0, 0x0B5B,
+ 0xCCD1, 0xCCD3, 0x3E28, 0xCCD4, 0xCCD4, 0x0B5C, 0xCCD5, 0xCCE3, 0x3E2B,
+ 0xCCE4, 0xCCE4, 0x0B5D, 0xCCE5, 0xCCEB, 0x3E3A, 0xCCEC, 0xCCEC, 0x0B5E,
+ 0xCCED, 0xCCEF, 0x3E41, 0xCCF0, 0xCCF0, 0x0B5F, 0xCCF1, 0xCCFF, 0x3E44,
+ 0xCD00, 0xCD00, 0x3E53, 0xCD01, 0xCD01, 0x0B60, 0xCD02, 0xCD07, 0x3E54,
+ 0xCD08, 0xCD09, 0x0B61, 0xCD0A, 0xCD0B, 0x3E5A, 0xCD0C, 0xCD0C, 0x0B63,
+ 0xCD0D, 0xCD0F, 0x3E5C, 0xCD10, 0xCD10, 0x0B64, 0xCD11, 0xCD17, 0x3E5F,
+ 0xCD18, 0xCD19, 0x0B65, 0xCD1A, 0xCD1A, 0x3E66, 0xCD1B, 0xCD1B, 0x0B67,
+ 0xCD1C, 0xCD1C, 0x3E67, 0xCD1D, 0xCD1D, 0x0B68, 0xCD1E, 0xCD23, 0x3E68,
+ 0xCD24, 0xCD24, 0x0B69, 0xCD25, 0xCD27, 0x3E6E, 0xCD28, 0xCD28, 0x0B6A,
+ 0xCD29, 0xCD2B, 0x3E71, 0xCD2C, 0xCD2C, 0x0B6B, 0xCD2D, 0xCD38, 0x3E74,
+ 0xCD39, 0xCD39, 0x0B6C, 0xCD3A, 0xCD5B, 0x3E80, 0xCD5C, 0xCD5C, 0x0B6D,
+ 0xCD5D, 0xCD5F, 0x3EA2, 0xCD60, 0xCD60, 0x0B6E, 0xCD61, 0xCD63, 0x3EA5,
+ 0xCD64, 0xCD64, 0x0B6F, 0xCD65, 0xCD6B, 0x3EA8, 0xCD6C, 0xCD6D, 0x0B70,
+ 0xCD6E, 0xCD6E, 0x3EAF, 0xCD6F, 0xCD6F, 0x0B72, 0xCD70, 0xCD70, 0x3EB0,
+ 0xCD71, 0xCD71, 0x0B73, 0xCD72, 0xCD77, 0x3EB1, 0xCD78, 0xCD78, 0x0B74,
+ 0xCD79, 0xCD87, 0x3EB7, 0xCD88, 0xCD88, 0x0B75, 0xCD89, 0xCD93, 0x3EC6,
+ 0xCD94, 0xCD95, 0x0B76, 0xCD96, 0xCD97, 0x3ED1, 0xCD98, 0xCD98, 0x0B78,
+ 0xCD99, 0xCD9B, 0x3ED3, 0xCD9C, 0xCD9C, 0x0B79, 0xCD9D, 0xCDA3, 0x3ED6,
+ 0xCDA4, 0xCDA5, 0x0B7A, 0xCDA6, 0xCDA6, 0x3EDD, 0xCDA7, 0xCDA7, 0x0B7C,
+ 0xCDA8, 0xCDA8, 0x3EDE, 0xCDA9, 0xCDA9, 0x0B7D, 0xCDAA, 0xCDAF, 0x3EDF,
+ 0xCDB0, 0xCDB0, 0x0B7E, 0xCDB1, 0xCDC3, 0x3EE5, 0xCDC4, 0xCDC4, 0x0B7F,
+ 0xCDC5, 0xCDCB, 0x3EF8, 0xCDCC, 0xCDCC, 0x0B80, 0xCDCD, 0xCDCF, 0x3EFF,
+ 0xCDD0, 0xCDD0, 0x0B81, 0xCDD1, 0xCDE7, 0x3F02, 0xCDE8, 0xCDE8, 0x0B82,
+ 0xCDE9, 0xCDEB, 0x3F19, 0xCDEC, 0xCDEC, 0x0B83, 0xCDED, 0xCDEF, 0x3F1C,
+ 0xCDF0, 0xCDF0, 0x0B84, 0xCDF1, 0xCDF7, 0x3F1F, 0xCDF8, 0xCDF9, 0x0B85,
+ 0xCDFA, 0xCDFA, 0x3F26, 0xCDFB, 0xCDFB, 0x0B87, 0xCDFC, 0xCDFC, 0x3F27,
+ 0xCDFD, 0xCDFD, 0x0B88, 0xCDFE, 0xCDFF, 0x3F28, 0xCE00, 0xCE03, 0x3F2A,
+ 0xCE04, 0xCE04, 0x0B89, 0xCE05, 0xCE07, 0x3F2E, 0xCE08, 0xCE08, 0x0B8A,
+ 0xCE09, 0xCE0B, 0x3F31, 0xCE0C, 0xCE0C, 0x0B8B, 0xCE0D, 0xCE13, 0x3F34,
+ 0xCE14, 0xCE14, 0x0B8C, 0xCE15, 0xCE18, 0x3F3B, 0xCE19, 0xCE19, 0x0B8D,
+ 0xCE1A, 0xCE1F, 0x3F3F, 0xCE20, 0xCE21, 0x0B8E, 0xCE22, 0xCE23, 0x3F45,
+ 0xCE24, 0xCE24, 0x0B90, 0xCE25, 0xCE27, 0x3F47, 0xCE28, 0xCE28, 0x0B91,
+ 0xCE29, 0xCE2F, 0x3F4A, 0xCE30, 0xCE31, 0x0B92, 0xCE32, 0xCE32, 0x3F51,
+ 0xCE33, 0xCE33, 0x0B94, 0xCE34, 0xCE34, 0x3F52, 0xCE35, 0xCE35, 0x0B95,
+ 0xCE36, 0xCE57, 0x3F53, 0xCE58, 0xCE59, 0x0B96, 0xCE5A, 0xCE5B, 0x3F75,
+ 0xCE5C, 0xCE5C, 0x0B98, 0xCE5D, 0xCE5E, 0x3F77, 0xCE5F, 0xCE61, 0x0B99,
+ 0xCE62, 0xCE67, 0x3F79, 0xCE68, 0xCE69, 0x0B9C, 0xCE6A, 0xCE6A, 0x3F7F,
+ 0xCE6B, 0xCE6B, 0x0B9E, 0xCE6C, 0xCE6C, 0x3F80, 0xCE6D, 0xCE6D, 0x0B9F,
+ 0xCE6E, 0xCE73, 0x3F81, 0xCE74, 0xCE75, 0x0BA0, 0xCE76, 0xCE77, 0x3F87,
+ 0xCE78, 0xCE78, 0x0BA2, 0xCE79, 0xCE7B, 0x3F89, 0xCE7C, 0xCE7C, 0x0BA3,
+ 0xCE7D, 0xCE83, 0x3F8C, 0xCE84, 0xCE85, 0x0BA4, 0xCE86, 0xCE86, 0x3F93,
+ 0xCE87, 0xCE87, 0x0BA6, 0xCE88, 0xCE88, 0x3F94, 0xCE89, 0xCE89, 0x0BA7,
+ 0xCE8A, 0xCE8F, 0x3F95, 0xCE90, 0xCE91, 0x0BA8, 0xCE92, 0xCE93, 0x3F9B,
+ 0xCE94, 0xCE94, 0x0BAA, 0xCE95, 0xCE97, 0x3F9D, 0xCE98, 0xCE98, 0x0BAB,
+ 0xCE99, 0xCE9F, 0x3FA0, 0xCEA0, 0xCEA1, 0x0BAC, 0xCEA2, 0xCEA2, 0x3FA7,
+ 0xCEA3, 0xCEA5, 0x0BAE, 0xCEA6, 0xCEAB, 0x3FA8, 0xCEAC, 0xCEAD, 0x0BB1,
+ 0xCEAE, 0xCEC0, 0x3FAE, 0xCEC1, 0xCEC1, 0x0BB3, 0xCEC2, 0xCEE3, 0x3FC1,
+ 0xCEE4, 0xCEE5, 0x0BB4, 0xCEE6, 0xCEE7, 0x3FE3, 0xCEE8, 0xCEE8, 0x0BB6,
+ 0xCEE9, 0xCEEA, 0x3FE5, 0xCEEB, 0xCEEC, 0x0BB7, 0xCEED, 0xCEF3, 0x3FE7,
+ 0xCEF4, 0xCEF5, 0x0BB9, 0xCEF6, 0xCEF6, 0x3FEE, 0xCEF7, 0xCEF9, 0x0BBB,
+ 0xCEFA, 0xCEFF, 0x3FEF, 0xCF00, 0xCF01, 0x0BBE, 0xCF02, 0xCF03, 0x3FF5,
+ 0xCF04, 0xCF04, 0x0BC0, 0xCF05, 0xCF07, 0x3FF7, 0xCF08, 0xCF08, 0x0BC1,
+ 0xCF09, 0xCF0F, 0x3FFA, 0xCF10, 0xCF11, 0x0BC2, 0xCF12, 0xCF12, 0x4001,
+ 0xCF13, 0xCF13, 0x0BC4, 0xCF14, 0xCF14, 0x4002, 0xCF15, 0xCF15, 0x0BC5,
+ 0xCF16, 0xCF1B, 0x4003, 0xCF1C, 0xCF1C, 0x0BC6, 0xCF1D, 0xCF1F, 0x4009,
+ 0xCF20, 0xCF20, 0x0BC7, 0xCF21, 0xCF23, 0x400C, 0xCF24, 0xCF24, 0x0BC8,
+ 0xCF25, 0xCF2B, 0x400F, 0xCF2C, 0xCF2D, 0x0BC9, 0xCF2E, 0xCF2E, 0x4016,
+ 0xCF2F, 0xCF31, 0x0BCB, 0xCF32, 0xCF37, 0x4017, 0xCF38, 0xCF38, 0x0BCE,
+ 0xCF39, 0xCF53, 0x401D, 0xCF54, 0xCF55, 0x0BCF, 0xCF56, 0xCF57, 0x4038,
+ 0xCF58, 0xCF58, 0x0BD1, 0xCF59, 0xCF5B, 0x403A, 0xCF5C, 0xCF5C, 0x0BD2,
+ 0xCF5D, 0xCF63, 0x403D, 0xCF64, 0xCF65, 0x0BD3, 0xCF66, 0xCF66, 0x4044,
+ 0xCF67, 0xCF67, 0x0BD5, 0xCF68, 0xCF68, 0x4045, 0xCF69, 0xCF69, 0x0BD6,
+ 0xCF6A, 0xCF6F, 0x4046, 0xCF70, 0xCF71, 0x0BD7, 0xCF72, 0xCF73, 0x404C,
+ 0xCF74, 0xCF74, 0x0BD9, 0xCF75, 0xCF77, 0x404E, 0xCF78, 0xCF78, 0x0BDA,
+ 0xCF79, 0xCF7F, 0x4051, 0xCF80, 0xCF80, 0x0BDB, 0xCF81, 0xCF84, 0x4058,
+ 0xCF85, 0xCF85, 0x0BDC, 0xCF86, 0xCF8B, 0x405C, 0xCF8C, 0xCF8C, 0x0BDD,
+ 0xCF8D, 0xCFA0, 0x4062, 0xCFA1, 0xCFA1, 0x0BDE, 0xCFA2, 0xCFA7, 0x4076,
+ 0xCFA8, 0xCFA8, 0x0BDF, 0xCFA9, 0xCFAF, 0x407C, 0xCFB0, 0xCFB0, 0x0BE0,
+ 0xCFB1, 0xCFC3, 0x4083, 0xCFC4, 0xCFC4, 0x0BE1, 0xCFC5, 0xCFDF, 0x4096,
+ 0xCFE0, 0xCFE1, 0x0BE2, 0xCFE2, 0xCFE3, 0x40B1, 0xCFE4, 0xCFE4, 0x0BE4,
+ 0xCFE5, 0xCFE7, 0x40B3, 0xCFE8, 0xCFE8, 0x0BE5, 0xCFE9, 0xCFEF, 0x40B6,
+ 0xCFF0, 0xCFF1, 0x0BE6, 0xCFF2, 0xCFF2, 0x40BD, 0xCFF3, 0xCFF3, 0x0BE8,
+ 0xCFF4, 0xCFF4, 0x40BE, 0xCFF5, 0xCFF5, 0x0BE9, 0xCFF6, 0xCFFB, 0x40BF,
+ 0xCFFC, 0xCFFC, 0x0BEA, 0xCFFD, 0xCFFF, 0x40C5, 0xD000, 0xD000, 0x0BEB,
+ 0xD001, 0xD003, 0x40C8, 0xD004, 0xD004, 0x0BEC, 0xD005, 0xD010, 0x40CB,
+ 0xD011, 0xD011, 0x0BED, 0xD012, 0xD017, 0x40D7, 0xD018, 0xD018, 0x0BEE,
+ 0xD019, 0xD02C, 0x40DD, 0xD02D, 0xD02D, 0x0BEF, 0xD02E, 0xD033, 0x40F1,
+ 0xD034, 0xD035, 0x0BF0, 0xD036, 0xD037, 0x40F7, 0xD038, 0xD038, 0x0BF2,
+ 0xD039, 0xD03B, 0x40F9, 0xD03C, 0xD03C, 0x0BF3, 0xD03D, 0xD043, 0x40FC,
+ 0xD044, 0xD045, 0x0BF4, 0xD046, 0xD046, 0x4103, 0xD047, 0xD047, 0x0BF6,
+ 0xD048, 0xD048, 0x4104, 0xD049, 0xD049, 0x0BF7, 0xD04A, 0xD04F, 0x4105,
+ 0xD050, 0xD050, 0x0BF8, 0xD051, 0xD053, 0x410B, 0xD054, 0xD054, 0x0BF9,
+ 0xD055, 0xD057, 0x410E, 0xD058, 0xD058, 0x0BFA, 0xD059, 0xD05F, 0x4111,
+ 0xD060, 0xD060, 0x0BFB, 0xD061, 0xD06B, 0x4118, 0xD06C, 0xD06D, 0x0BFC,
+ 0xD06E, 0xD06F, 0x4123, 0xD070, 0xD070, 0x0BFE, 0xD071, 0xD073, 0x4125,
+ 0xD074, 0xD074, 0x0BFF, 0xD075, 0xD07B, 0x4128, 0xD07C, 0xD07D, 0x0C00,
+ 0xD07E, 0xD080, 0x412F, 0xD081, 0xD081, 0x0C02, 0xD082, 0xD0A3, 0x4132,
+ 0xD0A4, 0xD0A5, 0x0C03, 0xD0A6, 0xD0A7, 0x4154, 0xD0A8, 0xD0A8, 0x0C05,
+ 0xD0A9, 0xD0AB, 0x4156, 0xD0AC, 0xD0AC, 0x0C06, 0xD0AD, 0xD0B3, 0x4159,
+ 0xD0B4, 0xD0B5, 0x0C07, 0xD0B6, 0xD0B6, 0x4160, 0xD0B7, 0xD0B7, 0x0C09,
+ 0xD0B8, 0xD0B8, 0x4161, 0xD0B9, 0xD0B9, 0x0C0A, 0xD0BA, 0xD0BF, 0x4162,
+ 0xD0C0, 0xD0C1, 0x0C0B, 0xD0C2, 0xD0C3, 0x4168, 0xD0C4, 0xD0C4, 0x0C0D,
+ 0xD0C5, 0xD0C7, 0x416A, 0xD0C8, 0xD0C9, 0x0C0E, 0xD0CA, 0xD0CF, 0x416D,
+ 0xD0D0, 0xD0D1, 0x0C10, 0xD0D2, 0xD0D2, 0x4173, 0xD0D3, 0xD0D5, 0x0C12,
+ 0xD0D6, 0xD0DB, 0x4174, 0xD0DC, 0xD0DD, 0x0C15, 0xD0DE, 0xD0DF, 0x417A,
+ 0xD0E0, 0xD0E0, 0x0C17, 0xD0E1, 0xD0E3, 0x417C, 0xD0E4, 0xD0E4, 0x0C18,
+ 0xD0E5, 0xD0EB, 0x417F, 0xD0EC, 0xD0ED, 0x0C19, 0xD0EE, 0xD0EE, 0x4186,
+ 0xD0EF, 0xD0F1, 0x0C1B, 0xD0F2, 0xD0F7, 0x4187, 0xD0F8, 0xD0F8, 0x0C1E,
+ 0xD0F9, 0xD0FF, 0x418D, 0xD100, 0xD10C, 0x4194, 0xD10D, 0xD10D, 0x0C1F,
+ 0xD10E, 0xD12F, 0x41A1, 0xD130, 0xD131, 0x0C20, 0xD132, 0xD133, 0x41C3,
+ 0xD134, 0xD134, 0x0C22, 0xD135, 0xD137, 0x41C5, 0xD138, 0xD138, 0x0C23,
+ 0xD139, 0xD139, 0x41C8, 0xD13A, 0xD13A, 0x0C24, 0xD13B, 0xD13F, 0x41C9,
+ 0xD140, 0xD141, 0x0C25, 0xD142, 0xD142, 0x41CE, 0xD143, 0xD145, 0x0C27,
+ 0xD146, 0xD14B, 0x41CF, 0xD14C, 0xD14D, 0x0C2A, 0xD14E, 0xD14F, 0x41D5,
+ 0xD150, 0xD150, 0x0C2C, 0xD151, 0xD153, 0x41D7, 0xD154, 0xD154, 0x0C2D,
+ 0xD155, 0xD15B, 0x41DA, 0xD15C, 0xD15D, 0x0C2E, 0xD15E, 0xD15E, 0x41E1,
+ 0xD15F, 0xD15F, 0x0C30, 0xD160, 0xD160, 0x41E2, 0xD161, 0xD161, 0x0C31,
+ 0xD162, 0xD167, 0x41E3, 0xD168, 0xD168, 0x0C32, 0xD169, 0xD16B, 0x41E9,
+ 0xD16C, 0xD16C, 0x0C33, 0xD16D, 0xD17B, 0x41EC, 0xD17C, 0xD17C, 0x0C34,
+ 0xD17D, 0xD183, 0x41FB, 0xD184, 0xD184, 0x0C35, 0xD185, 0xD187, 0x4202,
+ 0xD188, 0xD188, 0x0C36, 0xD189, 0xD19F, 0x4205, 0xD1A0, 0xD1A1, 0x0C37,
+ 0xD1A2, 0xD1A3, 0x421C, 0xD1A4, 0xD1A4, 0x0C39, 0xD1A5, 0xD1A7, 0x421E,
+ 0xD1A8, 0xD1A8, 0x0C3A, 0xD1A9, 0xD1AF, 0x4221, 0xD1B0, 0xD1B1, 0x0C3B,
+ 0xD1B2, 0xD1B2, 0x4228, 0xD1B3, 0xD1B3, 0x0C3D, 0xD1B4, 0xD1B4, 0x4229,
+ 0xD1B5, 0xD1B5, 0x0C3E, 0xD1B6, 0xD1B9, 0x422A, 0xD1BA, 0xD1BA, 0x0C3F,
+ 0xD1BB, 0xD1BB, 0x422E, 0xD1BC, 0xD1BC, 0x0C40, 0xD1BD, 0xD1BF, 0x422F,
+ 0xD1C0, 0xD1C0, 0x0C41, 0xD1C1, 0xD1D7, 0x4232, 0xD1D8, 0xD1D8, 0x0C42,
+ 0xD1D9, 0xD1F3, 0x4249, 0xD1F4, 0xD1F4, 0x0C43, 0xD1F5, 0xD1F7, 0x4264,
+ 0xD1F8, 0xD1F8, 0x0C44, 0xD1F9, 0xD1FF, 0x4267, 0xD200, 0xD206, 0x426E,
+ 0xD207, 0xD207, 0x0C45, 0xD208, 0xD208, 0x4275, 0xD209, 0xD209, 0x0C46,
+ 0xD20A, 0xD20F, 0x4276, 0xD210, 0xD210, 0x0C47, 0xD211, 0xD22B, 0x427C,
+ 0xD22C, 0xD22D, 0x0C48, 0xD22E, 0xD22F, 0x4297, 0xD230, 0xD230, 0x0C4A,
+ 0xD231, 0xD233, 0x4299, 0xD234, 0xD234, 0x0C4B, 0xD235, 0xD23B, 0x429C,
+ 0xD23C, 0xD23D, 0x0C4C, 0xD23E, 0xD23E, 0x42A3, 0xD23F, 0xD23F, 0x0C4E,
+ 0xD240, 0xD240, 0x42A4, 0xD241, 0xD241, 0x0C4F, 0xD242, 0xD247, 0x42A5,
+ 0xD248, 0xD248, 0x0C50, 0xD249, 0xD25B, 0x42AB, 0xD25C, 0xD25C, 0x0C51,
+ 0xD25D, 0xD263, 0x42BE, 0xD264, 0xD264, 0x0C52, 0xD265, 0xD27F, 0x42C5,
+ 0xD280, 0xD281, 0x0C53, 0xD282, 0xD283, 0x42E0, 0xD284, 0xD284, 0x0C55,
+ 0xD285, 0xD287, 0x42E2, 0xD288, 0xD288, 0x0C56, 0xD289, 0xD28F, 0x42E5,
+ 0xD290, 0xD291, 0x0C57, 0xD292, 0xD294, 0x42EC, 0xD295, 0xD295, 0x0C59,
+ 0xD296, 0xD29B, 0x42EF, 0xD29C, 0xD29C, 0x0C5A, 0xD29D, 0xD29F, 0x42F5,
+ 0xD2A0, 0xD2A0, 0x0C5B, 0xD2A1, 0xD2A3, 0x42F8, 0xD2A4, 0xD2A4, 0x0C5C,
+ 0xD2A5, 0xD2AB, 0x42FB, 0xD2AC, 0xD2AC, 0x0C5D, 0xD2AD, 0xD2B0, 0x4302,
+ 0xD2B1, 0xD2B1, 0x0C5E, 0xD2B2, 0xD2B7, 0x4306, 0xD2B8, 0xD2B9, 0x0C5F,
+ 0xD2BA, 0xD2BB, 0x430C, 0xD2BC, 0xD2BC, 0x0C61, 0xD2BD, 0xD2BE, 0x430E,
+ 0xD2BF, 0xD2C0, 0x0C62, 0xD2C1, 0xD2C1, 0x4310, 0xD2C2, 0xD2C2, 0x0C64,
+ 0xD2C3, 0xD2C7, 0x4311, 0xD2C8, 0xD2C9, 0x0C65, 0xD2CA, 0xD2CA, 0x4316,
+ 0xD2CB, 0xD2CB, 0x0C67, 0xD2CC, 0xD2D3, 0x4317, 0xD2D4, 0xD2D4, 0x0C68,
+ 0xD2D5, 0xD2D7, 0x431F, 0xD2D8, 0xD2D8, 0x0C69, 0xD2D9, 0xD2DB, 0x4322,
+ 0xD2DC, 0xD2DC, 0x0C6A, 0xD2DD, 0xD2E3, 0x4325, 0xD2E4, 0xD2E5, 0x0C6B,
+ 0xD2E6, 0xD2EF, 0x432C, 0xD2F0, 0xD2F1, 0x0C6D, 0xD2F2, 0xD2F3, 0x4336,
+ 0xD2F4, 0xD2F4, 0x0C6F, 0xD2F5, 0xD2F7, 0x4338, 0xD2F8, 0xD2F8, 0x0C70,
+ 0xD2F9, 0xD2FF, 0x433B, 0xD300, 0xD301, 0x0C71, 0xD302, 0xD302, 0x4342,
+ 0xD303, 0xD303, 0x0C73, 0xD304, 0xD304, 0x4343, 0xD305, 0xD305, 0x0C74,
+ 0xD306, 0xD30B, 0x4344, 0xD30C, 0xD30E, 0x0C75, 0xD30F, 0xD30F, 0x434A,
+ 0xD310, 0xD310, 0x0C78, 0xD311, 0xD313, 0x434B, 0xD314, 0xD314, 0x0C79,
+ 0xD315, 0xD315, 0x434E, 0xD316, 0xD316, 0x0C7A, 0xD317, 0xD31B, 0x434F,
+ 0xD31C, 0xD31D, 0x0C7B, 0xD31E, 0xD31E, 0x4354, 0xD31F, 0xD321, 0x0C7D,
+ 0xD322, 0xD324, 0x4355, 0xD325, 0xD325, 0x0C80, 0xD326, 0xD327, 0x4358,
+ 0xD328, 0xD329, 0x0C81, 0xD32A, 0xD32B, 0x435A, 0xD32C, 0xD32C, 0x0C83,
+ 0xD32D, 0xD32F, 0x435C, 0xD330, 0xD330, 0x0C84, 0xD331, 0xD337, 0x435F,
+ 0xD338, 0xD339, 0x0C85, 0xD33A, 0xD33A, 0x4366, 0xD33B, 0xD33D, 0x0C87,
+ 0xD33E, 0xD343, 0x4367, 0xD344, 0xD345, 0x0C8A, 0xD346, 0xD37B, 0x436D,
+ 0xD37C, 0xD37D, 0x0C8C, 0xD37E, 0xD37F, 0x43A3, 0xD380, 0xD380, 0x0C8E,
+ 0xD381, 0xD383, 0x43A5, 0xD384, 0xD384, 0x0C8F, 0xD385, 0xD38B, 0x43A8,
+ 0xD38C, 0xD38D, 0x0C90, 0xD38E, 0xD38E, 0x43AF, 0xD38F, 0xD391, 0x0C92,
+ 0xD392, 0xD397, 0x43B0, 0xD398, 0xD399, 0x0C95, 0xD39A, 0xD39B, 0x43B6,
+ 0xD39C, 0xD39C, 0x0C97, 0xD39D, 0xD39F, 0x43B8, 0xD3A0, 0xD3A0, 0x0C98,
+ 0xD3A1, 0xD3A7, 0x43BB, 0xD3A8, 0xD3A9, 0x0C99, 0xD3AA, 0xD3AA, 0x43C2,
+ 0xD3AB, 0xD3AB, 0x0C9B, 0xD3AC, 0xD3AC, 0x43C3, 0xD3AD, 0xD3AD, 0x0C9C,
+ 0xD3AE, 0xD3B3, 0x43C4, 0xD3B4, 0xD3B4, 0x0C9D, 0xD3B5, 0xD3B7, 0x43CA,
+ 0xD3B8, 0xD3B8, 0x0C9E, 0xD3B9, 0xD3BB, 0x43CD, 0xD3BC, 0xD3BC, 0x0C9F,
+ 0xD3BD, 0xD3C3, 0x43D0, 0xD3C4, 0xD3C5, 0x0CA0, 0xD3C6, 0xD3C7, 0x43D7,
+ 0xD3C8, 0xD3C9, 0x0CA2, 0xD3CA, 0xD3CF, 0x43D9, 0xD3D0, 0xD3D0, 0x0CA4,
+ 0xD3D1, 0xD3D7, 0x43DF, 0xD3D8, 0xD3D8, 0x0CA5, 0xD3D9, 0xD3E0, 0x43E6,
+ 0xD3E1, 0xD3E1, 0x0CA6, 0xD3E2, 0xD3E2, 0x43EE, 0xD3E3, 0xD3E3, 0x0CA7,
+ 0xD3E4, 0xD3EB, 0x43EF, 0xD3EC, 0xD3ED, 0x0CA8, 0xD3EE, 0xD3EF, 0x43F7,
+ 0xD3F0, 0xD3F0, 0x0CAA, 0xD3F1, 0xD3F3, 0x43F9, 0xD3F4, 0xD3F4, 0x0CAB,
+ 0xD3F5, 0xD3FB, 0x43FC, 0xD3FC, 0xD3FD, 0x0CAC, 0xD3FE, 0xD3FE, 0x4403,
+ 0xD3FF, 0xD3FF, 0x0CAE, 0xD400, 0xD400, 0x4404, 0xD401, 0xD401, 0x0CAF,
+ 0xD402, 0xD407, 0x4405, 0xD408, 0xD408, 0x0CB0, 0xD409, 0xD41C, 0x440B,
+ 0xD41D, 0xD41D, 0x0CB1, 0xD41E, 0xD43F, 0x441F, 0xD440, 0xD440, 0x0CB2,
+ 0xD441, 0xD443, 0x4441, 0xD444, 0xD444, 0x0CB3, 0xD445, 0xD45B, 0x4444,
+ 0xD45C, 0xD45C, 0x0CB4, 0xD45D, 0xD45F, 0x445B, 0xD460, 0xD460, 0x0CB5,
+ 0xD461, 0xD463, 0x445E, 0xD464, 0xD464, 0x0CB6, 0xD465, 0xD46C, 0x4461,
+ 0xD46D, 0xD46D, 0x0CB7, 0xD46E, 0xD46E, 0x4469, 0xD46F, 0xD46F, 0x0CB8,
+ 0xD470, 0xD477, 0x446A, 0xD478, 0xD479, 0x0CB9, 0xD47A, 0xD47B, 0x4472,
+ 0xD47C, 0xD47C, 0x0CBB, 0xD47D, 0xD47E, 0x4474, 0xD47F, 0xD480, 0x0CBC,
+ 0xD481, 0xD481, 0x4476, 0xD482, 0xD482, 0x0CBE, 0xD483, 0xD487, 0x4477,
+ 0xD488, 0xD489, 0x0CBF, 0xD48A, 0xD48A, 0x447C, 0xD48B, 0xD48B, 0x0CC1,
+ 0xD48C, 0xD48C, 0x447D, 0xD48D, 0xD48D, 0x0CC2, 0xD48E, 0xD493, 0x447E,
+ 0xD494, 0xD494, 0x0CC3, 0xD495, 0xD4A8, 0x4484, 0xD4A9, 0xD4A9, 0x0CC4,
+ 0xD4AA, 0xD4CB, 0x4498, 0xD4CC, 0xD4CC, 0x0CC5, 0xD4CD, 0xD4CF, 0x44BA,
+ 0xD4D0, 0xD4D0, 0x0CC6, 0xD4D1, 0xD4D3, 0x44BD, 0xD4D4, 0xD4D4, 0x0CC7,
+ 0xD4D5, 0xD4DB, 0x44C0, 0xD4DC, 0xD4DC, 0x0CC8, 0xD4DD, 0xD4DE, 0x44C7,
+ 0xD4DF, 0xD4DF, 0x0CC9, 0xD4E0, 0xD4E7, 0x44C9, 0xD4E8, 0xD4E8, 0x0CCA,
+ 0xD4E9, 0xD4EB, 0x44D1, 0xD4EC, 0xD4EC, 0x0CCB, 0xD4ED, 0xD4EF, 0x44D4,
+ 0xD4F0, 0xD4F0, 0x0CCC, 0xD4F1, 0xD4F7, 0x44D7, 0xD4F8, 0xD4F8, 0x0CCD,
+ 0xD4F9, 0xD4FA, 0x44DE, 0xD4FB, 0xD4FB, 0x0CCE, 0xD4FC, 0xD4FC, 0x44E0,
+ 0xD4FD, 0xD4FD, 0x0CCF, 0xD4FE, 0xD4FF, 0x44E1, 0xD500, 0xD503, 0x44E3,
+ 0xD504, 0xD504, 0x0CD0, 0xD505, 0xD507, 0x44E7, 0xD508, 0xD508, 0x0CD1,
+ 0xD509, 0xD50B, 0x44EA, 0xD50C, 0xD50C, 0x0CD2, 0xD50D, 0xD513, 0x44ED,
+ 0xD514, 0xD515, 0x0CD3, 0xD516, 0xD516, 0x44F4, 0xD517, 0xD517, 0x0CD5,
+ 0xD518, 0xD53B, 0x44F5, 0xD53C, 0xD53D, 0x0CD6, 0xD53E, 0xD53F, 0x4519,
+ 0xD540, 0xD540, 0x0CD8, 0xD541, 0xD543, 0x451B, 0xD544, 0xD544, 0x0CD9,
+ 0xD545, 0xD54B, 0x451E, 0xD54C, 0xD54D, 0x0CDA, 0xD54E, 0xD54E, 0x4525,
+ 0xD54F, 0xD54F, 0x0CDC, 0xD550, 0xD550, 0x4526, 0xD551, 0xD551, 0x0CDD,
+ 0xD552, 0xD557, 0x4527, 0xD558, 0xD559, 0x0CDE, 0xD55A, 0xD55B, 0x452D,
+ 0xD55C, 0xD55C, 0x0CE0, 0xD55D, 0xD55F, 0x452F, 0xD560, 0xD560, 0x0CE1,
+ 0xD561, 0xD564, 0x4532, 0xD565, 0xD565, 0x0CE2, 0xD566, 0xD567, 0x4536,
+ 0xD568, 0xD569, 0x0CE3, 0xD56A, 0xD56A, 0x4538, 0xD56B, 0xD56B, 0x0CE5,
+ 0xD56C, 0xD56C, 0x4539, 0xD56D, 0xD56D, 0x0CE6, 0xD56E, 0xD573, 0x453A,
+ 0xD574, 0xD575, 0x0CE7, 0xD576, 0xD577, 0x4540, 0xD578, 0xD578, 0x0CE9,
+ 0xD579, 0xD57B, 0x4542, 0xD57C, 0xD57C, 0x0CEA, 0xD57D, 0xD583, 0x4545,
+ 0xD584, 0xD585, 0x0CEB, 0xD586, 0xD586, 0x454C, 0xD587, 0xD589, 0x0CED,
+ 0xD58A, 0xD58F, 0x454D, 0xD590, 0xD590, 0x0CF0, 0xD591, 0xD5A4, 0x4553,
+ 0xD5A5, 0xD5A5, 0x0CF1, 0xD5A6, 0xD5C7, 0x4567, 0xD5C8, 0xD5C9, 0x0CF2,
+ 0xD5CA, 0xD5CB, 0x4589, 0xD5CC, 0xD5CC, 0x0CF4, 0xD5CD, 0xD5CF, 0x458B,
+ 0xD5D0, 0xD5D0, 0x0CF5, 0xD5D1, 0xD5D1, 0x458E, 0xD5D2, 0xD5D2, 0x0CF6,
+ 0xD5D3, 0xD5D7, 0x458F, 0xD5D8, 0xD5D9, 0x0CF7, 0xD5DA, 0xD5DA, 0x4594,
+ 0xD5DB, 0xD5DB, 0x0CF9, 0xD5DC, 0xD5DC, 0x4595, 0xD5DD, 0xD5DD, 0x0CFA,
+ 0xD5DE, 0xD5E3, 0x4596, 0xD5E4, 0xD5E5, 0x0CFB, 0xD5E6, 0xD5E7, 0x459C,
+ 0xD5E8, 0xD5E8, 0x0CFD, 0xD5E9, 0xD5EB, 0x459E, 0xD5EC, 0xD5EC, 0x0CFE,
+ 0xD5ED, 0xD5F3, 0x45A1, 0xD5F4, 0xD5F5, 0x0CFF, 0xD5F6, 0xD5F6, 0x45A8,
+ 0xD5F7, 0xD5F7, 0x0D01, 0xD5F8, 0xD5F8, 0x45A9, 0xD5F9, 0xD5F9, 0x0D02,
+ 0xD5FA, 0xD5FF, 0x45AA, 0xD600, 0xD601, 0x0D03, 0xD602, 0xD603, 0x45B0,
+ 0xD604, 0xD604, 0x0D05, 0xD605, 0xD607, 0x45B2, 0xD608, 0xD608, 0x0D06,
+ 0xD609, 0xD60F, 0x45B5, 0xD610, 0xD611, 0x0D07, 0xD612, 0xD612, 0x45BC,
+ 0xD613, 0xD615, 0x0D09, 0xD616, 0xD61B, 0x45BD, 0xD61C, 0xD61C, 0x0D0C,
+ 0xD61D, 0xD61F, 0x45C3, 0xD620, 0xD620, 0x0D0D, 0xD621, 0xD623, 0x45C6,
+ 0xD624, 0xD624, 0x0D0E, 0xD625, 0xD62C, 0x45C9, 0xD62D, 0xD62D, 0x0D0F,
+ 0xD62E, 0xD637, 0x45D1, 0xD638, 0xD639, 0x0D10, 0xD63A, 0xD63B, 0x45DB,
+ 0xD63C, 0xD63C, 0x0D12, 0xD63D, 0xD63F, 0x45DD, 0xD640, 0xD640, 0x0D13,
+ 0xD641, 0xD644, 0x45E0, 0xD645, 0xD645, 0x0D14, 0xD646, 0xD647, 0x45E4,
+ 0xD648, 0xD649, 0x0D15, 0xD64A, 0xD64A, 0x45E6, 0xD64B, 0xD64B, 0x0D17,
+ 0xD64C, 0xD64C, 0x45E7, 0xD64D, 0xD64D, 0x0D18, 0xD64E, 0xD650, 0x45E8,
+ 0xD651, 0xD651, 0x0D19, 0xD652, 0xD653, 0x45EB, 0xD654, 0xD655, 0x0D1A,
+ 0xD656, 0xD657, 0x45ED, 0xD658, 0xD658, 0x0D1C, 0xD659, 0xD65B, 0x45EF,
+ 0xD65C, 0xD65C, 0x0D1D, 0xD65D, 0xD666, 0x45F2, 0xD667, 0xD667, 0x0D1E,
+ 0xD668, 0xD668, 0x45FC, 0xD669, 0xD669, 0x0D1F, 0xD66A, 0xD66F, 0x45FD,
+ 0xD670, 0xD671, 0x0D20, 0xD672, 0xD673, 0x4603, 0xD674, 0xD674, 0x0D22,
+ 0xD675, 0xD682, 0x4605, 0xD683, 0xD683, 0x0D23, 0xD684, 0xD684, 0x4613,
+ 0xD685, 0xD685, 0x0D24, 0xD686, 0xD68B, 0x4614, 0xD68C, 0xD68D, 0x0D25,
+ 0xD68E, 0xD68F, 0x461A, 0xD690, 0xD690, 0x0D27, 0xD691, 0xD693, 0x461C,
+ 0xD694, 0xD694, 0x0D28, 0xD695, 0xD69C, 0x461F, 0xD69D, 0xD69D, 0x0D29,
+ 0xD69E, 0xD69E, 0x4627, 0xD69F, 0xD69F, 0x0D2A, 0xD6A0, 0xD6A0, 0x4628,
+ 0xD6A1, 0xD6A1, 0x0D2B, 0xD6A2, 0xD6A7, 0x4629, 0xD6A8, 0xD6A8, 0x0D2C,
+ 0xD6A9, 0xD6AB, 0x462F, 0xD6AC, 0xD6AC, 0x0D2D, 0xD6AD, 0xD6AF, 0x4632,
+ 0xD6B0, 0xD6B0, 0x0D2E, 0xD6B1, 0xD6B8, 0x4635, 0xD6B9, 0xD6B9, 0x0D2F,
+ 0xD6BA, 0xD6BA, 0x463D, 0xD6BB, 0xD6BB, 0x0D30, 0xD6BC, 0xD6C3, 0x463E,
+ 0xD6C4, 0xD6C5, 0x0D31, 0xD6C6, 0xD6C7, 0x4646, 0xD6C8, 0xD6C8, 0x0D33,
+ 0xD6C9, 0xD6CB, 0x4648, 0xD6CC, 0xD6CC, 0x0D34, 0xD6CD, 0xD6D0, 0x464B,
+ 0xD6D1, 0xD6D1, 0x0D35, 0xD6D2, 0xD6D3, 0x464F, 0xD6D4, 0xD6D4, 0x0D36,
+ 0xD6D5, 0xD6D6, 0x4651, 0xD6D7, 0xD6D7, 0x0D37, 0xD6D8, 0xD6D8, 0x4653,
+ 0xD6D9, 0xD6D9, 0x0D38, 0xD6DA, 0xD6DF, 0x4654, 0xD6E0, 0xD6E0, 0x0D39,
+ 0xD6E1, 0xD6E3, 0x465A, 0xD6E4, 0xD6E4, 0x0D3A, 0xD6E5, 0xD6E7, 0x465D,
+ 0xD6E8, 0xD6E8, 0x0D3B, 0xD6E9, 0xD6EF, 0x4660, 0xD6F0, 0xD6F0, 0x0D3C,
+ 0xD6F1, 0xD6F4, 0x4667, 0xD6F5, 0xD6F5, 0x0D3D, 0xD6F6, 0xD6FB, 0x466B,
+ 0xD6FC, 0xD6FD, 0x0D3E, 0xD6FE, 0xD6FF, 0x4671, 0xD700, 0xD700, 0x0D40,
+ 0xD701, 0xD703, 0x4673, 0xD704, 0xD704, 0x0D41, 0xD705, 0xD710, 0x4676,
+ 0xD711, 0xD711, 0x0D42, 0xD712, 0xD717, 0x4682, 0xD718, 0xD719, 0x0D43,
+ 0xD71A, 0xD71B, 0x4688, 0xD71C, 0xD71C, 0x0D45, 0xD71D, 0xD71F, 0x468A,
+ 0xD720, 0xD720, 0x0D46, 0xD721, 0xD727, 0x468D, 0xD728, 0xD729, 0x0D47,
+ 0xD72A, 0xD72A, 0x4694, 0xD72B, 0xD72B, 0x0D49, 0xD72C, 0xD72C, 0x4695,
+ 0xD72D, 0xD72D, 0x0D4A, 0xD72E, 0xD733, 0x4696, 0xD734, 0xD735, 0x0D4B,
+ 0xD736, 0xD737, 0x469C, 0xD738, 0xD738, 0x0D4D, 0xD739, 0xD73B, 0x469E,
+ 0xD73C, 0xD73C, 0x0D4E, 0xD73D, 0xD743, 0x46A1, 0xD744, 0xD744, 0x0D4F,
+ 0xD745, 0xD746, 0x46A8, 0xD747, 0xD747, 0x0D50, 0xD748, 0xD748, 0x46AA,
+ 0xD749, 0xD749, 0x0D51, 0xD74A, 0xD74F, 0x46AB, 0xD750, 0xD751, 0x0D52,
+ 0xD752, 0xD753, 0x46B1, 0xD754, 0xD754, 0x0D54, 0xD755, 0xD755, 0x46B3,
+ 0xD756, 0xD759, 0x0D55, 0xD75A, 0xD75F, 0x46B4, 0xD760, 0xD761, 0x0D59,
+ 0xD762, 0xD762, 0x46BA, 0xD763, 0xD763, 0x0D5B, 0xD764, 0xD764, 0x46BB,
+ 0xD765, 0xD765, 0x0D5C, 0xD766, 0xD768, 0x46BC, 0xD769, 0xD769, 0x0D5D,
+ 0xD76A, 0xD76B, 0x46BF, 0xD76C, 0xD76C, 0x0D5E, 0xD76D, 0xD76F, 0x46C1,
+ 0xD770, 0xD770, 0x0D5F, 0xD771, 0xD773, 0x46C4, 0xD774, 0xD774, 0x0D60,
+ 0xD775, 0xD77B, 0x46C7, 0xD77C, 0xD77D, 0x0D61, 0xD77E, 0xD780, 0x46CE,
+ 0xD781, 0xD781, 0x0D63, 0xD782, 0xD787, 0x46D1, 0xD788, 0xD789, 0x0D64,
+ 0xD78A, 0xD78B, 0x46D7, 0xD78C, 0xD78C, 0x0D66, 0xD78D, 0xD78F, 0x46D9,
+ 0xD790, 0xD790, 0x0D67, 0xD791, 0xD797, 0x46DC, 0xD798, 0xD799, 0x0D68,
+ 0xD79A, 0xD79A, 0x46E3, 0xD79B, 0xD79B, 0x0D6A, 0xD79C, 0xD79C, 0x46E4,
+ 0xD79D, 0xD79D, 0x0D6B, 0xD79E, 0xD7A3, 0x46E5, 0xF900, 0xF900, 0x1014,
+ 0xF901, 0xF901, 0x0E5E, 0xF902, 0xF902, 0x1B8D, 0xF903, 0xF903, 0x0D84,
+ 0xF904, 0xF904, 0x1EDC, 0xF905, 0xF905, 0x0EDA, 0xF906, 0xF906, 0x0F3E,
+ 0xF907, 0xF907, 0x0F6A, 0xF908, 0xF908, 0x0F6A, 0xF909, 0xF909, 0x0E7C,
+ 0xF90A, 0xF90A, 0x1023, 0xF90B, 0xF90B, 0x1116, 0xF90C, 0xF90C, 0x103C,
+ 0xF90D, 0xF913, 0x1117, 0xF914, 0xF914, 0x16A8, 0xF915, 0xF917, 0x111E,
+ 0xF918, 0xF91D, 0x1122, 0xF91E, 0xF920, 0x112A, 0xF921, 0xF921, 0x112F,
+ 0xF922, 0xF922, 0x1133, 0xF923, 0xF924, 0x1136, 0xF925, 0xF92B, 0x1139,
+ 0xF92C, 0xF92D, 0x1143, 0xF92E, 0xF92E, 0x1148, 0xF92F, 0xF92F, 0x119F,
+ 0xF930, 0xF931, 0x11A1, 0xF932, 0xF937, 0x11A5, 0xF938, 0xF93A, 0x11AC,
+ 0xF93B, 0xF940, 0x11B0, 0xF941, 0xF943, 0x11B7, 0xF944, 0xF945, 0x11BD,
+ 0xF946, 0xF948, 0x11C1, 0xF949, 0xF949, 0x11C6, 0xF94A, 0xF94A, 0x11D4,
+ 0xF94B, 0xF94E, 0x11D6, 0xF94F, 0xF950, 0x11DB, 0xF951, 0xF951, 0x11E0,
+ 0xF952, 0xF955, 0x11FC, 0xF956, 0xF959, 0x1201, 0xF95A, 0xF95A, 0x10DE,
+ 0xF95B, 0xF95B, 0x1028, 0xF95C, 0xF95C, 0x16A8, 0xF95D, 0xF95D, 0x102B,
+ 0xF95E, 0xF95E, 0x1060, 0xF95F, 0xF95F, 0x1047, 0xF960, 0xF960, 0x104C,
+ 0xF961, 0xF961, 0x15B0, 0xF962, 0xF962, 0x1918, 0xF963, 0xF963, 0x141F,
+ 0xF964, 0xF964, 0x133A, 0xF965, 0xF965, 0x1D5E, 0xF966, 0xF966, 0x13D7,
+ 0xF967, 0xF967, 0x13F5, 0xF968, 0xF968, 0x1DB7, 0xF969, 0xF969, 0x15D0,
+ 0xF96A, 0xF96A, 0x14F7, 0xF96B, 0xF96B, 0x1BAB, 0xF96C, 0xF96C, 0x14F2,
+ 0xF96D, 0xF96D, 0x156D, 0xF96E, 0xF96E, 0x1771, 0xF96F, 0xF96F, 0x1554,
+ 0xF970, 0xF970, 0x14C5, 0xF971, 0xF971, 0x1B61, 0xF972, 0xF972, 0x1CCA,
+ 0xF973, 0xF973, 0x162E, 0xF974, 0xF974, 0x16F2, 0xF975, 0xF977, 0x1149,
+ 0xF978, 0xF97A, 0x114D, 0xF97B, 0xF97D, 0x1153, 0xF97E, 0xF97E, 0x1157,
+ 0xF97F, 0xF980, 0x115A, 0xF981, 0xF981, 0x103F, 0xF982, 0xF982, 0x115C,
+ 0xF983, 0xF983, 0x115F, 0xF984, 0xF985, 0x1161, 0xF986, 0xF986, 0x1165,
+ 0xF987, 0xF98C, 0x1167, 0xF98D, 0xF98D, 0x116F, 0xF98E, 0xF98E, 0x1040,
+ 0xF98F, 0xF990, 0x1171, 0xF991, 0xF991, 0x1041, 0xF992, 0xF994, 0x1174,
+ 0xF995, 0xF995, 0x1042, 0xF996, 0xF997, 0x1177, 0xF998, 0xF998, 0x117A,
+ 0xF999, 0xF999, 0x1179, 0xF99A, 0xF99B, 0x117B, 0xF99C, 0xF99D, 0x117E,
+ 0xF99E, 0xF99E, 0x192F, 0xF99F, 0xF9A0, 0x1181, 0xF9A1, 0xF9A1, 0x1554,
+ 0xF9A2, 0xF9A2, 0x1183, 0xF9A3, 0xF9A3, 0x1043, 0xF9A4, 0xF9A4, 0x1046,
+ 0xF9A5, 0xF9A5, 0x1185, 0xF9A6, 0xF9A8, 0x1187, 0xF9A9, 0xF9A9, 0x118B,
+ 0xF9AA, 0xF9AA, 0x1047, 0xF9AB, 0xF9AD, 0x118D, 0xF9AE, 0xF9AE, 0x1E67,
+ 0xF9AF, 0xF9AF, 0x1191, 0xF9B0, 0xF9B0, 0x1193, 0xF9B1, 0xF9B4, 0x1195,
+ 0xF9B5, 0xF9B5, 0x119A, 0xF9B6, 0xF9B8, 0x119C, 0xF9B9, 0xF9B9, 0x16A5,
+ 0xF9BA, 0xF9BC, 0x11C7, 0xF9BD, 0xF9BD, 0x1054, 0xF9BE, 0xF9BE, 0x11CB,
+ 0xF9BF, 0xF9BF, 0x16A8, 0xF9C0, 0xF9C1, 0x11CC, 0xF9C2, 0xF9C3, 0x11D0,
+ 0xF9C4, 0xF9C4, 0x11D3, 0xF9C5, 0xF9C5, 0x1F34, 0xF9C6, 0xF9C6, 0x17EB,
+ 0xF9C7, 0xF9C7, 0x11E1, 0xF9C8, 0xF9C8, 0x1057, 0xF9C9, 0xF9C9, 0x11E3,
+ 0xF9CA, 0xF9CB, 0x11E5, 0xF9CC, 0xF9CC, 0x11E8, 0xF9CD, 0xF9CD, 0x11EA,
+ 0xF9CE, 0xF9CE, 0x11EC, 0xF9CF, 0xF9CF, 0x1058, 0xF9D0, 0xF9D3, 0x11EE,
+ 0xF9D4, 0xF9D6, 0x11F3, 0xF9D7, 0xF9DA, 0x11F7, 0xF9DB, 0xF9DB, 0x15B0,
+ 0xF9DC, 0xF9DC, 0x11FB, 0xF9DD, 0xF9DD, 0x1206, 0xF9DE, 0xF9DE, 0x1208,
+ 0xF9DF, 0xF9DF, 0x120A, 0xF9E0, 0xF9E0, 0x173E, 0xF9E1, 0xF9E2, 0x120C,
+ 0xF9E3, 0xF9E3, 0x105B, 0xF9E4, 0xF9E4, 0x1211, 0xF9E5, 0xF9E5, 0x1213,
+ 0xF9E6, 0xF9E6, 0x1215, 0xF9E7, 0xF9E9, 0x1218, 0xF9EA, 0xF9EA, 0x121C,
+ 0xF9EB, 0xF9EC, 0x105C, 0xF9ED, 0xF9ED, 0x121E, 0xF9EE, 0xF9F0, 0x1220,
+ 0xF9F1, 0xF9F5, 0x1224, 0xF9F6, 0xF9F6, 0x122A, 0xF9F7, 0xF9F9, 0x122D,
+ 0xF9FA, 0xF9FA, 0x14E7, 0xF9FB, 0xF9FB, 0x195E, 0xF9FC, 0xF9FC, 0x1663,
+ 0xF9FD, 0xF9FD, 0x168B, 0xF9FE, 0xF9FE, 0x105F, 0xF9FF, 0xF9FF, 0x1954,
+ 0xFA00, 0xFA00, 0x1A1C, 0xFA01, 0xFA01, 0x10B7, 0xFA02, 0xFA02, 0x1BE3,
+ 0xFA03, 0xFA03, 0x1097, 0xFA04, 0xFA04, 0x10AA, 0xFA05, 0xFA05, 0x10F4,
+ 0xFA06, 0xFA06, 0x1D94, 0xFA07, 0xFA07, 0x13E0, 0xFA08, 0xFA08, 0x1E1D,
+ 0xFA09, 0xFA09, 0x0DE6, 0xFA0A, 0xFA0A, 0x0E3C, 0xFA0B, 0xFA0B, 0x0EE7,
+ 0xFF01, 0xFF3B, 0x0108, 0xFF3C, 0xFF3C, 0x0070, 0xFF3D, 0xFF5D, 0x0144,
+ 0xFF5E, 0xFF5E, 0x0071, 0xFFE0, 0xFFE1, 0x008F, 0xFFE2, 0xFFE2, 0x00C2,
+ 0xFFE3, 0xFFE3, 0x0165, 0xFFE5, 0xFFE5, 0x0091, 0xFFE6, 0xFFE6, 0x0143,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-V_1.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-V_1.cpp
new file mode 100644
index 0000000000..834594d007
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UCS2-V_1.cpp
@@ -0,0 +1,16 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h"
+
+const FX_WORD g_FXCMAP_UniKS_UCS2_V_1[18 * 3] = {
+ 0x2013, 0x2014, 0x1F7B, 0x2016, 0x2016, 0x1F7D, 0x2025, 0x2025, 0x1F7A,
+ 0x3001, 0x3002, 0x1F78, 0x3008, 0x3011, 0x1F81, 0x3013, 0x3013, 0x1F8B,
+ 0x3014, 0x3015, 0x1F7F, 0xFF01, 0xFF01, 0x1F8C, 0xFF08, 0xFF09, 0x1F8D,
+ 0xFF0C, 0xFF0C, 0x1F8F, 0xFF0E, 0xFF0E, 0x1F90, 0xFF1A, 0xFF1F, 0x1F91,
+ 0xFF3B, 0xFF3B, 0x1F97, 0xFF3D, 0xFF3D, 0x1F98, 0xFF3F, 0xFF3F, 0x1F99,
+ 0xFF5B, 0xFF5D, 0x1F9A, 0xFF5E, 0xFF5E, 0x1F7E, 0xFFE3, 0xFFE3, 0x1F9D,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UTF16-H_0.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UTF16-H_0.cpp
new file mode 100644
index 0000000000..81f0c6ea7e
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Korea1/UniKS-UTF16-H_0.cpp
@@ -0,0 +1,46 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h"
+
+const FX_WORD g_FXCMAP_UniKS_UTF16_H_0[158 * 2] = {
+ 0x00A9, 0x0062, 0x2010, 0x0061, 0x20A9, 0x0060, 0x2F00, 0x193C, 0x2F04,
+ 0x18EC, 0x2F06, 0x190D, 0x2F08, 0x192B, 0x2F0A, 0x194D, 0x2F0B, 0x1D4B,
+ 0x2F11, 0x10AE, 0x2F12, 0x116A, 0x2F14, 0x143F, 0x2F17, 0x168C, 0x2F18,
+ 0x13D5, 0x2F1C, 0x1839, 0x2F1D, 0x0F3D, 0x2F1F, 0x1D1B, 0x2F20, 0x1487,
+ 0x2F23, 0x151B, 0x2F24, 0x109D, 0x2F25, 0x103F, 0x2F26, 0x1958, 0x2F28,
+ 0x1C4F, 0x2F29, 0x1580, 0x2F2B, 0x1641, 0x2F2D, 0x14B9, 0x2F2F, 0x0ECF,
+ 0x2F30, 0x0FED, 0x2F31, 0x0E14, 0x2F32, 0x0D99, 0x2F38, 0x0F7C, 0x2F3C,
+ 0x1684, 0x2F3D, 0x0EDC, 0x2F3E, 0x1E80, 0x2F3F, 0x15CC, 0x2F40, 0x1B27,
+ 0x2F42, 0x12E8, 0x2F43, 0x10FD, 0x2F44, 0x0FBB, 0x2F45, 0x1356, 0x2F46,
+ 0x12D3, 0x2F47, 0x1940, 0x2F48, 0x17ED, 0x2F49, 0x1889, 0x2F4A, 0x12B4,
+ 0x2F4B, 0x1F5B, 0x2F4C, 0x1B2C, 0x2F4F, 0x12D6, 0x2F50, 0x144C, 0x2F51,
+ 0x12A8, 0x2F52, 0x168E, 0x2F54, 0x15D3, 0x2F55, 0x1EBB, 0x2F56, 0x1A93,
+ 0x2F57, 0x1409, 0x2F58, 0x1F1A, 0x2F5A, 0x1D61, 0x2F5B, 0x1696, 0x2F5C,
+ 0x1842, 0x2F5D, 0x0E37, 0x2F5E, 0x1E3D, 0x2F5F, 0x17C1, 0x2F60, 0x0EDE,
+ 0x2F61, 0x17D4, 0x2F62, 0x0DC1, 0x2F63, 0x14FA, 0x2F64, 0x182D, 0x2F65,
+ 0x1A08, 0x2F66, 0x1DBA, 0x2F69, 0x1381, 0x2F6A, 0x1DB0, 0x2F6B, 0x1293,
+ 0x2F6C, 0x12B7, 0x2F6D, 0x12AD, 0x2F6E, 0x164D, 0x2F6F, 0x1525, 0x2F70,
+ 0x164E, 0x2F72, 0x1EBE, 0x2F73, 0x1E4B, 0x2F74, 0x122D, 0x2F75, 0x1AF4,
+ 0x2F76, 0x12FF, 0x2F78, 0x140C, 0x2F7A, 0x1708, 0x2F7B, 0x184A, 0x2F7C,
+ 0x11A7, 0x2F7D, 0x191B, 0x2F7F, 0x191C, 0x2F80, 0x18E0, 0x2F81, 0x18D5,
+ 0x2F82, 0x1675, 0x2F83, 0x1966, 0x2F84, 0x1B37, 0x2F85, 0x0F5A, 0x2F86,
+ 0x1550, 0x2F87, 0x1BF6, 0x2F88, 0x1AE8, 0x2F89, 0x0DA8, 0x2F8A, 0x14F8,
+ 0x2F8B, 0x1C40, 0x2F8E, 0x1E4C, 0x2F8F, 0x1E1D, 0x2F90, 0x1909, 0x2F92,
+ 0x0E3C, 0x2F93, 0x0D92, 0x2F94, 0x1721, 0x2F95, 0x0EBC, 0x2F96, 0x1103,
+ 0x2F97, 0x1656, 0x2F99, 0x1D58, 0x2F9A, 0x19EC, 0x2F9B, 0x1AEC, 0x2F9C,
+ 0x1AAE, 0x2F9D, 0x167B, 0x2F9E, 0x1B8D, 0x2F9F, 0x167C, 0x2FA0, 0x1B61,
+ 0x2FA2, 0x18F5, 0x2FA3, 0x18D0, 0x2FA5, 0x121A, 0x2FA6, 0x1023, 0x2FA7,
+ 0x19A8, 0x2FA8, 0x12EE, 0x2FA9, 0x141B, 0x2FAC, 0x1853, 0x2FAD, 0x1C23,
+ 0x2FAE, 0x1464, 0x2FAF, 0x1288, 0x2FB0, 0x1E35, 0x2FB1, 0x18A3, 0x2FB3,
+ 0x18F1, 0x2FB4, 0x1E4D, 0x2FB5, 0x1DAB, 0x2FB6, 0x1465, 0x2FB7, 0x1665,
+ 0x2FB8, 0x15F9, 0x2FB9, 0x1E26, 0x2FBA, 0x1235, 0x2FBB, 0x0EC9, 0x2FBC,
+ 0x0EB5, 0x2FC1, 0x0F99, 0x2FC2, 0x1716, 0x2FC3, 0x1AAB, 0x2FC4, 0x11AF,
+ 0x2FC5, 0x11B5, 0x2FC6, 0x1276, 0x2FC7, 0x1237, 0x2FC8, 0x1EF7, 0x2FC9,
+ 0x1519, 0x2FCA, 0x1F52, 0x2FCD, 0x1A66, 0x2FCE, 0x0EB6, 0x2FCF, 0x151A,
+ 0x2FD0, 0x1466, 0x2FD1, 0x1A7D, 0x2FD2, 0x1CBF, 0x2FD3, 0x11D3, 0x2FD4,
+ 0x0F6A,
+};
diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.cpp b/core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.cpp
new file mode 100644
index 0000000000..e5072104d6
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.cpp
@@ -0,0 +1,50 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h"
+
+#include "core/fpdfapi/fpdf_cmaps/cmap_int.h"
+#include "core/fpdfapi/fpdf_font/font_int.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_resource.h"
+#include "core/include/fxcrt/fx_basic.h" // For FX_ArraySize().
+
+static const FXCMAP_CMap g_FXCMAP_Korea1_cmaps[] = {
+ {"KSC-EUC-H", FXCMAP_CMap::Range, g_FXCMAP_KSC_EUC_H_0, 467,
+ FXCMAP_CMap::None, NULL, 0, 0},
+ {"KSC-EUC-V", FXCMAP_CMap::Range, g_FXCMAP_KSC_EUC_V_0, 16,
+ FXCMAP_CMap::None, NULL, 0, -1},
+ {"KSCms-UHC-H", FXCMAP_CMap::Range, g_FXCMAP_KSCms_UHC_H_1, 675,
+ FXCMAP_CMap::None, NULL, 0, -2},
+ {"KSCms-UHC-V", FXCMAP_CMap::Range, g_FXCMAP_KSCms_UHC_V_1, 16,
+ FXCMAP_CMap::None, NULL, 0, -1},
+ {"KSCms-UHC-HW-H", FXCMAP_CMap::Range, g_FXCMAP_KSCms_UHC_HW_H_1, 675,
+ FXCMAP_CMap::None, NULL, 0, 0},
+ {"KSCms-UHC-HW-V", FXCMAP_CMap::Range, g_FXCMAP_KSCms_UHC_HW_V_1, 16,
+ FXCMAP_CMap::None, NULL, 0, -1},
+ {"KSCpc-EUC-H", FXCMAP_CMap::Range, g_FXCMAP_KSCpc_EUC_H_0, 509,
+ FXCMAP_CMap::None, NULL, 0, -6},
+ {"UniKS-UCS2-H", FXCMAP_CMap::Range, g_FXCMAP_UniKS_UCS2_H_1, 8394,
+ FXCMAP_CMap::None, NULL, 0, 0},
+ {"UniKS-UCS2-V", FXCMAP_CMap::Range, g_FXCMAP_UniKS_UCS2_V_1, 18,
+ FXCMAP_CMap::None, NULL, 0, -1},
+ {"UniKS-UTF16-H", FXCMAP_CMap::Single, g_FXCMAP_UniKS_UTF16_H_0, 158,
+ FXCMAP_CMap::None, NULL, 0, -2},
+ {"UniKS-UTF16-V", FXCMAP_CMap::Range, g_FXCMAP_UniKS_UCS2_V_1, 18,
+ FXCMAP_CMap::None, NULL, 0, -1},
+};
+
+void CPDF_ModuleMgr::LoadEmbeddedKorea1CMaps() {
+ CPDF_FontGlobals* pFontGlobals =
+ CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals();
+ pFontGlobals->m_EmbeddedCharsets[CIDSET_KOREA1].m_pMapList =
+ g_FXCMAP_Korea1_cmaps;
+ pFontGlobals->m_EmbeddedCharsets[CIDSET_KOREA1].m_Count =
+ FX_ArraySize(g_FXCMAP_Korea1_cmaps);
+ pFontGlobals->m_EmbeddedToUnicodes[CIDSET_KOREA1].m_pMap =
+ g_FXCMAP_Korea1CID2Unicode_2;
+ pFontGlobals->m_EmbeddedToUnicodes[CIDSET_KOREA1].m_Count = 18352;
+}
diff --git a/core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h b/core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h
new file mode 100644
index 0000000000..0180658422
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/Korea1/cmaps_korea1.h
@@ -0,0 +1,24 @@
+// Copyright 2015 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_FPDFAPI_FPDF_CMAPS_KOREA1_CMAPS_KOREA1_H_
+#define CORE_FPDFAPI_FPDF_CMAPS_KOREA1_CMAPS_KOREA1_H_
+
+#include "core/include/fxcrt/fx_system.h" // For FX_WORD.
+
+extern const FX_WORD g_FXCMAP_KSC_EUC_H_0[];
+extern const FX_WORD g_FXCMAP_KSC_EUC_V_0[];
+extern const FX_WORD g_FXCMAP_KSCms_UHC_H_1[];
+extern const FX_WORD g_FXCMAP_KSCms_UHC_V_1[];
+extern const FX_WORD g_FXCMAP_KSCms_UHC_HW_H_1[];
+extern const FX_WORD g_FXCMAP_KSCms_UHC_HW_V_1[];
+extern const FX_WORD g_FXCMAP_KSCpc_EUC_H_0[];
+extern const FX_WORD g_FXCMAP_UniKS_UCS2_H_1[];
+extern const FX_WORD g_FXCMAP_UniKS_UCS2_V_1[];
+extern const FX_WORD g_FXCMAP_UniKS_UTF16_H_0[];
+extern const FX_WORD g_FXCMAP_Korea1CID2Unicode_2[];
+
+#endif // CORE_FPDFAPI_FPDF_CMAPS_KOREA1_CMAPS_KOREA1_H_
diff --git a/core/fpdfapi/fpdf_cmaps/cmap_int.h b/core/fpdfapi/fpdf_cmaps/cmap_int.h
new file mode 100644
index 0000000000..a812d84f33
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/cmap_int.h
@@ -0,0 +1,32 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_FPDFAPI_FPDF_CMAPS_CMAP_INT_H_
+#define CORE_FPDFAPI_FPDF_CMAPS_CMAP_INT_H_
+
+#include "core/include/fxcrt/fx_system.h" // For FX_WORD.
+
+struct FXCMAP_CMap {
+ enum MapType { None, Single, Range, Reverse };
+
+ const char* m_Name;
+ MapType m_WordMapType;
+ const FX_WORD* m_pWordMap;
+ int m_WordCount;
+ MapType m_DWordMapType;
+ const FX_WORD* m_pDWordMap;
+ int m_DWordCount;
+ int m_UseOffset;
+};
+
+void FPDFAPI_FindEmbeddedCMap(const char* name,
+ int charset,
+ int coding,
+ const FXCMAP_CMap*& pMap);
+FX_WORD FPDFAPI_CIDFromCharCode(const FXCMAP_CMap* pMap, FX_DWORD charcode);
+FX_DWORD FPDFAPI_CharCodeFromCID(const FXCMAP_CMap* pMap, FX_WORD cid);
+
+#endif // CORE_FPDFAPI_FPDF_CMAPS_CMAP_INT_H_
diff --git a/core/fpdfapi/fpdf_cmaps/fpdf_cmaps.cpp b/core/fpdfapi/fpdf_cmaps/fpdf_cmaps.cpp
new file mode 100644
index 0000000000..eed376db71
--- /dev/null
+++ b/core/fpdfapi/fpdf_cmaps/fpdf_cmaps.cpp
@@ -0,0 +1,192 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_cmaps/cmap_int.h"
+
+#include "core/fpdfapi/fpdf_font/font_int.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_resource.h"
+
+void FPDFAPI_FindEmbeddedCMap(const char* name,
+ int charset,
+ int coding,
+ const FXCMAP_CMap*& pMap) {
+ pMap = NULL;
+ CPDF_FontGlobals* pFontGlobals =
+ CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals();
+ const FXCMAP_CMap* pCMaps =
+ pFontGlobals->m_EmbeddedCharsets[charset].m_pMapList;
+ int nCMaps = pFontGlobals->m_EmbeddedCharsets[charset].m_Count;
+ for (int i = 0; i < nCMaps; i++) {
+ if (FXSYS_strcmp(name, pCMaps[i].m_Name)) {
+ continue;
+ }
+ pMap = &pCMaps[i];
+ break;
+ }
+}
+extern "C" {
+static int compareWord(const void* p1, const void* p2) {
+ return (*(FX_WORD*)p1) - (*(FX_WORD*)p2);
+}
+};
+extern "C" {
+static int compareWordRange(const void* key, const void* element) {
+ if (*(FX_WORD*)key < *(FX_WORD*)element) {
+ return -1;
+ }
+ if (*(FX_WORD*)key > ((FX_WORD*)element)[1]) {
+ return 1;
+ }
+ return 0;
+}
+};
+extern "C" {
+static int compareDWordRange(const void* p1, const void* p2) {
+ FX_DWORD key = *(FX_DWORD*)p1;
+ FX_WORD hiword = (FX_WORD)(key >> 16);
+ FX_WORD* element = (FX_WORD*)p2;
+ if (hiword < element[0]) {
+ return -1;
+ }
+ if (hiword > element[0]) {
+ return 1;
+ }
+ FX_WORD loword = (FX_WORD)key;
+ if (loword < element[1]) {
+ return -1;
+ }
+ if (loword > element[2]) {
+ return 1;
+ }
+ return 0;
+}
+};
+extern "C" {
+static int compareDWordSingle(const void* p1, const void* p2) {
+ FX_DWORD key = *(FX_DWORD*)p1;
+ FX_DWORD value = ((*(FX_WORD*)p2) << 16) | ((FX_WORD*)p2)[1];
+ if (key < value) {
+ return -1;
+ }
+ if (key > value) {
+ return 1;
+ }
+ return 0;
+}
+};
+FX_WORD FPDFAPI_CIDFromCharCode(const FXCMAP_CMap* pMap, FX_DWORD charcode) {
+ if (charcode >> 16) {
+ while (1) {
+ if (pMap->m_DWordMapType == FXCMAP_CMap::Range) {
+ FX_WORD* found =
+ (FX_WORD*)FXSYS_bsearch(&charcode, pMap->m_pDWordMap,
+ pMap->m_DWordCount, 8, compareDWordRange);
+ if (found) {
+ return found[3] + (FX_WORD)charcode - found[1];
+ }
+ } else if (pMap->m_DWordMapType == FXCMAP_CMap::Single) {
+ FX_WORD* found =
+ (FX_WORD*)FXSYS_bsearch(&charcode, pMap->m_pDWordMap,
+ pMap->m_DWordCount, 6, compareDWordSingle);
+ if (found) {
+ return found[2];
+ }
+ }
+ if (pMap->m_UseOffset == 0) {
+ return 0;
+ }
+ pMap = pMap + pMap->m_UseOffset;
+ }
+ return 0;
+ }
+ FX_WORD code = (FX_WORD)charcode;
+ while (1) {
+ if (!pMap->m_pWordMap) {
+ return 0;
+ }
+ if (pMap->m_WordMapType == FXCMAP_CMap::Single) {
+ FX_WORD* found = (FX_WORD*)FXSYS_bsearch(
+ &code, pMap->m_pWordMap, pMap->m_WordCount, 4, compareWord);
+ if (found) {
+ return found[1];
+ }
+ } else if (pMap->m_WordMapType == FXCMAP_CMap::Range) {
+ FX_WORD* found = (FX_WORD*)FXSYS_bsearch(
+ &code, pMap->m_pWordMap, pMap->m_WordCount, 6, compareWordRange);
+ if (found) {
+ return found[2] + code - found[0];
+ }
+ }
+ if (pMap->m_UseOffset == 0) {
+ return 0;
+ }
+ pMap = pMap + pMap->m_UseOffset;
+ }
+ return 0;
+}
+FX_DWORD FPDFAPI_CharCodeFromCID(const FXCMAP_CMap* pMap, FX_WORD cid) {
+ while (1) {
+ if (pMap->m_WordMapType == FXCMAP_CMap::Single) {
+ const FX_WORD* pCur = pMap->m_pWordMap;
+ const FX_WORD* pEnd = pMap->m_pWordMap + pMap->m_WordCount * 2;
+ while (pCur < pEnd) {
+ if (pCur[1] == cid) {
+ return pCur[0];
+ }
+ pCur += 2;
+ }
+ } else if (pMap->m_WordMapType == FXCMAP_CMap::Range) {
+ const FX_WORD* pCur = pMap->m_pWordMap;
+ const FX_WORD* pEnd = pMap->m_pWordMap + pMap->m_WordCount * 3;
+ while (pCur < pEnd) {
+ if (cid >= pCur[2] && cid <= pCur[2] + pCur[1] - pCur[0]) {
+ return pCur[0] + cid - pCur[2];
+ }
+ pCur += 3;
+ }
+ }
+ if (pMap->m_UseOffset == 0) {
+ return 0;
+ }
+ pMap = pMap + pMap->m_UseOffset;
+ }
+ while (1) {
+ if (pMap->m_DWordMapType == FXCMAP_CMap::Range) {
+ const FX_WORD* pCur = pMap->m_pDWordMap;
+ const FX_WORD* pEnd = pMap->m_pDWordMap + pMap->m_DWordCount * 4;
+ while (pCur < pEnd) {
+ if (cid >= pCur[3] && cid <= pCur[3] + pCur[2] - pCur[1]) {
+ return (((FX_DWORD)pCur[0] << 16) | pCur[1]) + cid - pCur[3];
+ }
+ pCur += 4;
+ }
+ } else if (pMap->m_DWordMapType == FXCMAP_CMap::Single) {
+ const FX_WORD* pCur = pMap->m_pDWordMap;
+ const FX_WORD* pEnd = pMap->m_pDWordMap + pMap->m_DWordCount * 3;
+ while (pCur < pEnd) {
+ if (pCur[2] == cid) {
+ return ((FX_DWORD)pCur[0] << 16) | pCur[1];
+ }
+ pCur += 3;
+ }
+ }
+ if (pMap->m_UseOffset == 0) {
+ return 0;
+ }
+ pMap = pMap + pMap->m_UseOffset;
+ }
+ return 0;
+}
+
+void FPDFAPI_LoadCID2UnicodeMap(CIDSet charset,
+ const FX_WORD*& pMap,
+ FX_DWORD& count) {
+ CPDF_FontGlobals* pFontGlobals =
+ CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals();
+ pMap = pFontGlobals->m_EmbeddedToUnicodes[charset].m_pMap;
+ count = pFontGlobals->m_EmbeddedToUnicodes[charset].m_Count;
+}
diff --git a/core/fpdfapi/fpdf_edit/editint.h b/core/fpdfapi/fpdf_edit/editint.h
new file mode 100644
index 0000000000..2e4b0cc067
--- /dev/null
+++ b/core/fpdfapi/fpdf_edit/editint.h
@@ -0,0 +1,74 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_FPDFAPI_FPDF_EDIT_EDITINT_H_
+#define CORE_FPDFAPI_FPDF_EDIT_EDITINT_H_
+
+#include <vector>
+
+#include "core/include/fxcrt/fx_basic.h"
+#include "core/include/fxcrt/fx_stream.h"
+#include "core/include/fxcrt/fx_system.h"
+
+class CPDF_Creator;
+class CPDF_Object;
+
+class CPDF_ObjectStream {
+ public:
+ CPDF_ObjectStream();
+
+ FX_BOOL Start();
+
+ int32_t CompressIndirectObject(FX_DWORD dwObjNum, const CPDF_Object* pObj);
+ int32_t CompressIndirectObject(FX_DWORD dwObjNum,
+ const uint8_t* pBuffer,
+ FX_DWORD dwSize);
+
+ FX_FILESIZE End(CPDF_Creator* pCreator);
+
+ CFX_DWordArray m_ObjNumArray;
+
+ CFX_ByteTextBuf m_Buffer;
+ FX_DWORD m_dwObjNum;
+ int32_t m_index;
+
+ protected:
+ CFX_DWordArray m_OffsetArray;
+};
+class CPDF_XRefStream {
+ public:
+ struct Index {
+ FX_DWORD objnum;
+ FX_DWORD count;
+ };
+
+ CPDF_XRefStream();
+
+ FX_BOOL Start();
+ int32_t CompressIndirectObject(FX_DWORD dwObjNum,
+ const CPDF_Object* pObj,
+ CPDF_Creator* pCreator);
+ int32_t CompressIndirectObject(FX_DWORD dwObjNum,
+ const uint8_t* pBuffer,
+ FX_DWORD dwSize,
+ CPDF_Creator* pCreator);
+ FX_BOOL End(CPDF_Creator* pCreator, FX_BOOL bEOF = FALSE);
+ void AddObjectNumberToIndexArray(FX_DWORD objnum);
+ FX_BOOL EndXRefStream(CPDF_Creator* pCreator);
+
+ std::vector<Index> m_IndexArray;
+ FX_FILESIZE m_PrevOffset;
+ FX_DWORD m_dwTempObjNum;
+
+ protected:
+ int32_t EndObjectStream(CPDF_Creator* pCreator, FX_BOOL bEOF = TRUE);
+ FX_BOOL GenerateXRefStream(CPDF_Creator* pCreator, FX_BOOL bEOF);
+ size_t m_iSeg;
+ CPDF_ObjectStream m_ObjStream;
+ CFX_ByteTextBuf m_Buffer;
+};
+
+#endif // CORE_FPDFAPI_FPDF_EDIT_EDITINT_H_
diff --git a/core/fpdfapi/fpdf_edit/fpdf_edit_content.cpp b/core/fpdfapi/fpdf_edit/fpdf_edit_content.cpp
new file mode 100644
index 0000000000..ad77455949
--- /dev/null
+++ b/core/fpdfapi/fpdf_edit/fpdf_edit_content.cpp
@@ -0,0 +1,162 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_page/pageint.h"
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_document.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_page.h"
+#include "core/include/fpdfapi/fpdf_parser_decode.h"
+#include "core/include/fpdfapi/fpdf_serial.h"
+
+CFX_ByteTextBuf& operator<<(CFX_ByteTextBuf& ar, CFX_Matrix& matrix) {
+ ar << matrix.a << " " << matrix.b << " " << matrix.c << " " << matrix.d << " "
+ << matrix.e << " " << matrix.f;
+ return ar;
+}
+
+CPDF_PageContentGenerator::CPDF_PageContentGenerator(CPDF_Page* pPage)
+ : m_pPage(pPage), m_pDocument(m_pPage->m_pDocument) {
+ for (const auto& pObj : *pPage->GetPageObjectList())
+ InsertPageObject(pObj.get());
+}
+
+FX_BOOL CPDF_PageContentGenerator::InsertPageObject(
+ CPDF_PageObject* pPageObject) {
+ return pPageObject && m_pageObjects.Add(pPageObject);
+}
+
+void CPDF_PageContentGenerator::GenerateContent() {
+ CFX_ByteTextBuf buf;
+ CPDF_Dictionary* pPageDict = m_pPage->m_pFormDict;
+ for (int i = 0; i < m_pageObjects.GetSize(); ++i) {
+ CPDF_PageObject* pPageObj = m_pageObjects[i];
+ if (!pPageObj || !pPageObj->IsImage()) {
+ continue;
+ }
+ ProcessImage(buf, pPageObj->AsImage());
+ }
+ CPDF_Object* pContent =
+ pPageDict ? pPageDict->GetElementValue("Contents") : NULL;
+ if (pContent) {
+ pPageDict->RemoveAt("Contents");
+ }
+ CPDF_Stream* pStream = new CPDF_Stream(NULL, 0, NULL);
+ pStream->SetData(buf.GetBuffer(), buf.GetLength(), FALSE, FALSE);
+ m_pDocument->AddIndirectObject(pStream);
+ pPageDict->SetAtReference("Contents", m_pDocument, pStream->GetObjNum());
+}
+CFX_ByteString CPDF_PageContentGenerator::RealizeResource(
+ CPDF_Object* pResourceObj,
+ const FX_CHAR* szType) {
+ if (!m_pPage->m_pResources) {
+ m_pPage->m_pResources = new CPDF_Dictionary;
+ int objnum = m_pDocument->AddIndirectObject(m_pPage->m_pResources);
+ m_pPage->m_pFormDict->SetAtReference("Resources", m_pDocument, objnum);
+ }
+ CPDF_Dictionary* pResList = m_pPage->m_pResources->GetDictBy(szType);
+ if (!pResList) {
+ pResList = new CPDF_Dictionary;
+ m_pPage->m_pResources->SetAt(szType, pResList);
+ }
+ m_pDocument->AddIndirectObject(pResourceObj);
+ CFX_ByteString name;
+ int idnum = 1;
+ while (1) {
+ name.Format("FX%c%d", szType[0], idnum);
+ if (!pResList->KeyExist(name)) {
+ break;
+ }
+ idnum++;
+ }
+ pResList->AddReference(name, m_pDocument, pResourceObj->GetObjNum());
+ return name;
+}
+void CPDF_PageContentGenerator::ProcessImage(CFX_ByteTextBuf& buf,
+ CPDF_ImageObject* pImageObj) {
+ if ((pImageObj->m_Matrix.a == 0 && pImageObj->m_Matrix.b == 0) ||
+ (pImageObj->m_Matrix.c == 0 && pImageObj->m_Matrix.d == 0)) {
+ return;
+ }
+ buf << "q " << pImageObj->m_Matrix << " cm ";
+ if (!pImageObj->m_pImage->IsInline()) {
+ CPDF_Stream* pStream = pImageObj->m_pImage->GetStream();
+ FX_DWORD dwSavedObjNum = pStream->GetObjNum();
+ CFX_ByteString name = RealizeResource(pStream, "XObject");
+ if (dwSavedObjNum == 0) {
+ if (pImageObj->m_pImage)
+ pImageObj->m_pImage->Release();
+ pImageObj->m_pImage = m_pDocument->GetPageData()->GetImage(pStream);
+ }
+ buf << "/" << PDF_NameEncode(name) << " Do Q\n";
+ }
+}
+void CPDF_PageContentGenerator::ProcessForm(CFX_ByteTextBuf& buf,
+ const uint8_t* data,
+ FX_DWORD size,
+ CFX_Matrix& matrix) {
+ if (!data || !size) {
+ return;
+ }
+ CPDF_Stream* pStream = new CPDF_Stream(NULL, 0, NULL);
+ CPDF_Dictionary* pFormDict = new CPDF_Dictionary;
+ pFormDict->SetAtName("Type", "XObject");
+ pFormDict->SetAtName("Subtype", "Form");
+ CFX_FloatRect bbox = m_pPage->GetPageBBox();
+ matrix.TransformRect(bbox);
+ pFormDict->SetAtRect("BBox", bbox);
+ pStream->InitStream((uint8_t*)data, size, pFormDict);
+ buf << "q " << matrix << " cm ";
+ CFX_ByteString name = RealizeResource(pStream, "XObject");
+ buf << "/" << PDF_NameEncode(name) << " Do Q\n";
+}
+void CPDF_PageContentGenerator::TransformContent(CFX_Matrix& matrix) {
+ CPDF_Dictionary* pDict = m_pPage->m_pFormDict;
+ CPDF_Object* pContent = pDict ? pDict->GetElementValue("Contents") : NULL;
+ if (!pContent)
+ return;
+
+ CFX_ByteTextBuf buf;
+ if (CPDF_Array* pArray = pContent->AsArray()) {
+ int iCount = pArray->GetCount();
+ CPDF_StreamAcc** pContentArray = FX_Alloc(CPDF_StreamAcc*, iCount);
+ int size = 0;
+ int i = 0;
+ for (i = 0; i < iCount; ++i) {
+ pContent = pArray->GetElement(i);
+ CPDF_Stream* pStream = ToStream(pContent);
+ if (!pStream)
+ continue;
+
+ CPDF_StreamAcc* pStreamAcc = new CPDF_StreamAcc();
+ pStreamAcc->LoadAllData(pStream);
+ pContentArray[i] = pStreamAcc;
+ size += pContentArray[i]->GetSize() + 1;
+ }
+ int pos = 0;
+ uint8_t* pBuf = FX_Alloc(uint8_t, size);
+ for (i = 0; i < iCount; ++i) {
+ FXSYS_memcpy(pBuf + pos, pContentArray[i]->GetData(),
+ pContentArray[i]->GetSize());
+ pos += pContentArray[i]->GetSize() + 1;
+ pBuf[pos - 1] = ' ';
+ delete pContentArray[i];
+ }
+ ProcessForm(buf, pBuf, size, matrix);
+ FX_Free(pBuf);
+ FX_Free(pContentArray);
+ } else if (CPDF_Stream* pStream = pContent->AsStream()) {
+ CPDF_StreamAcc contentStream;
+ contentStream.LoadAllData(pStream);
+ ProcessForm(buf, contentStream.GetData(), contentStream.GetSize(), matrix);
+ }
+ CPDF_Stream* pStream = new CPDF_Stream(NULL, 0, NULL);
+ pStream->SetData(buf.GetBuffer(), buf.GetLength(), FALSE, FALSE);
+ m_pDocument->AddIndirectObject(pStream);
+ m_pPage->m_pFormDict->SetAtReference("Contents", m_pDocument,
+ pStream->GetObjNum());
+}
diff --git a/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp b/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
new file mode 100644
index 0000000000..2dc2e3eb8e
--- /dev/null
+++ b/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
@@ -0,0 +1,2076 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_edit/editint.h"
+
+#include <vector>
+
+#include "core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h"
+#include "core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h"
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_document.h"
+#include "core/include/fpdfapi/cpdf_parser.h"
+#include "core/include/fpdfapi/cpdf_reference.h"
+#include "core/include/fpdfapi/cpdf_string.h"
+#include "core/include/fpdfapi/fpdf_parser_decode.h"
+#include "core/include/fpdfapi/fpdf_serial.h"
+#include "core/include/fpdfapi/ipdf_crypto_handler.h"
+#include "core/include/fxcrt/fx_ext.h"
+#include "third_party/base/stl_util.h"
+
+#define PDF_OBJECTSTREAM_MAXLENGTH (256 * 1024)
+#define PDF_XREFSTREAM_MAXSIZE 10000
+
+// TODO(ochang): Make helper for appending "objnum 0 R ".
+
+namespace {
+
+int32_t PDF_CreatorAppendObject(const CPDF_Object* pObj,
+ CFX_FileBufferArchive* pFile,
+ FX_FILESIZE& offset) {
+ int32_t len = 0;
+ if (!pObj) {
+ if (pFile->AppendString(" null") < 0) {
+ return -1;
+ }
+ offset += 5;
+ return 1;
+ }
+ switch (pObj->GetType()) {
+ case CPDF_Object::NULLOBJ:
+ if (pFile->AppendString(" null") < 0) {
+ return -1;
+ }
+ offset += 5;
+ break;
+ case CPDF_Object::BOOLEAN:
+ case CPDF_Object::NUMBER:
+ if (pFile->AppendString(" ") < 0) {
+ return -1;
+ }
+ if ((len = pFile->AppendString(pObj->GetString())) < 0) {
+ return -1;
+ }
+ offset += len + 1;
+ break;
+ case CPDF_Object::STRING: {
+ CFX_ByteString str = pObj->GetString();
+ FX_BOOL bHex = pObj->AsString()->IsHex();
+ if ((len = pFile->AppendString(PDF_EncodeString(str, bHex))) < 0) {
+ return -1;
+ }
+ offset += len;
+ break;
+ }
+ case CPDF_Object::NAME: {
+ if (pFile->AppendString("/") < 0) {
+ return -1;
+ }
+ CFX_ByteString str = pObj->GetString();
+ if ((len = pFile->AppendString(PDF_NameEncode(str))) < 0) {
+ return -1;
+ }
+ offset += len + 1;
+ break;
+ }
+ case CPDF_Object::REFERENCE: {
+ if (pFile->AppendString(" ") < 0)
+ return -1;
+ if ((len = pFile->AppendDWord(pObj->AsReference()->GetRefObjNum())) < 0)
+ return -1;
+ if (pFile->AppendString(" 0 R ") < 0)
+ return -1;
+ offset += len + 6;
+ break;
+ }
+ case CPDF_Object::ARRAY: {
+ if (pFile->AppendString("[") < 0) {
+ return -1;
+ }
+ offset += 1;
+ const CPDF_Array* p = pObj->AsArray();
+ for (FX_DWORD i = 0; i < p->GetCount(); i++) {
+ CPDF_Object* pElement = p->GetElement(i);
+ if (pElement->GetObjNum()) {
+ if (pFile->AppendString(" ") < 0) {
+ return -1;
+ }
+ if ((len = pFile->AppendDWord(pElement->GetObjNum())) < 0) {
+ return -1;
+ }
+ if (pFile->AppendString(" 0 R") < 0) {
+ return -1;
+ }
+ offset += len + 5;
+ } else {
+ if (PDF_CreatorAppendObject(pElement, pFile, offset) < 0) {
+ return -1;
+ }
+ }
+ }
+ if (pFile->AppendString("]") < 0) {
+ return -1;
+ }
+ offset += 1;
+ break;
+ }
+ case CPDF_Object::DICTIONARY: {
+ if (pFile->AppendString("<<") < 0) {
+ return -1;
+ }
+ offset += 2;
+ const CPDF_Dictionary* p = pObj->AsDictionary();
+ for (const auto& it : *p) {
+ const CFX_ByteString& key = it.first;
+ CPDF_Object* pValue = it.second;
+ if (pFile->AppendString("/") < 0) {
+ return -1;
+ }
+ if ((len = pFile->AppendString(PDF_NameEncode(key))) < 0) {
+ return -1;
+ }
+ offset += len + 1;
+ if (pValue->GetObjNum()) {
+ if (pFile->AppendString(" ") < 0) {
+ return -1;
+ }
+ if ((len = pFile->AppendDWord(pValue->GetObjNum())) < 0) {
+ return -1;
+ }
+ if (pFile->AppendString(" 0 R") < 0) {
+ return -1;
+ }
+ offset += len + 5;
+ } else {
+ if (PDF_CreatorAppendObject(pValue, pFile, offset) < 0) {
+ return -1;
+ }
+ }
+ }
+ if (pFile->AppendString(">>") < 0) {
+ return -1;
+ }
+ offset += 2;
+ break;
+ }
+ case CPDF_Object::STREAM: {
+ const CPDF_Stream* p = pObj->AsStream();
+ if (PDF_CreatorAppendObject(p->GetDict(), pFile, offset) < 0) {
+ return -1;
+ }
+ if (pFile->AppendString("stream\r\n") < 0) {
+ return -1;
+ }
+ offset += 8;
+ CPDF_StreamAcc acc;
+ acc.LoadAllData(p, TRUE);
+ if (pFile->AppendBlock(acc.GetData(), acc.GetSize()) < 0) {
+ return -1;
+ }
+ offset += acc.GetSize();
+ if ((len = pFile->AppendString("\r\nendstream")) < 0) {
+ return -1;
+ }
+ offset += len;
+ break;
+ }
+ default:
+ ASSERT(FALSE);
+ break;
+ }
+ return 1;
+}
+
+int32_t PDF_CreatorWriteTrailer(CPDF_Document* pDocument,
+ CFX_FileBufferArchive* pFile,
+ CPDF_Array* pIDArray,
+ FX_BOOL bCompress) {
+ FX_FILESIZE offset = 0;
+ int32_t len = 0;
+ FXSYS_assert(pDocument && pFile);
+ CPDF_Parser* pParser = (CPDF_Parser*)pDocument->GetParser();
+ if (pParser) {
+ CPDF_Dictionary* p = pParser->GetTrailer();
+ for (const auto& it : *p) {
+ const CFX_ByteString& key = it.first;
+ CPDF_Object* pValue = it.second;
+ if (key == "Encrypt" || key == "Size" || key == "Filter" ||
+ key == "Index" || key == "Length" || key == "Prev" || key == "W" ||
+ key == "XRefStm" || key == "Type" || key == "ID") {
+ continue;
+ }
+ if (bCompress && key == "DecodeParms") {
+ continue;
+ }
+ if (pFile->AppendString(("/")) < 0) {
+ return -1;
+ }
+ if ((len = pFile->AppendString(PDF_NameEncode(key))) < 0) {
+ return -1;
+ }
+ offset += len + 1;
+ if (pValue->GetObjNum()) {
+ if (pFile->AppendString(" ") < 0) {
+ return -1;
+ }
+ if ((len = pFile->AppendDWord(pValue->GetObjNum())) < 0) {
+ return -1;
+ }
+ if (pFile->AppendString(" 0 R ") < 0) {
+ return -1;
+ }
+ offset += len + 6;
+ } else {
+ if (PDF_CreatorAppendObject(pValue, pFile, offset) < 0) {
+ return -1;
+ }
+ }
+ }
+ if (pIDArray) {
+ if (pFile->AppendString(("/ID")) < 0) {
+ return -1;
+ }
+ offset += 3;
+ if (PDF_CreatorAppendObject(pIDArray, pFile, offset) < 0) {
+ return -1;
+ }
+ }
+ return offset;
+ }
+ if (pFile->AppendString("\r\n/Root ") < 0) {
+ return -1;
+ }
+ if ((len = pFile->AppendDWord(pDocument->GetRoot()->GetObjNum())) < 0) {
+ return -1;
+ }
+ if (pFile->AppendString(" 0 R\r\n") < 0) {
+ return -1;
+ }
+ offset += len + 14;
+ if (pDocument->GetInfo()) {
+ if (pFile->AppendString("/Info ") < 0) {
+ return -1;
+ }
+ if ((len = pFile->AppendDWord(pDocument->GetInfo()->GetObjNum())) < 0) {
+ return -1;
+ }
+ if (pFile->AppendString(" 0 R\r\n") < 0) {
+ return -1;
+ }
+ offset += len + 12;
+ }
+ if (pIDArray) {
+ if (pFile->AppendString(("/ID")) < 0) {
+ return -1;
+ }
+ offset += 3;
+ if (PDF_CreatorAppendObject(pIDArray, pFile, offset) < 0) {
+ return -1;
+ }
+ }
+ return offset;
+}
+
+int32_t PDF_CreatorWriteEncrypt(const CPDF_Dictionary* pEncryptDict,
+ FX_DWORD dwObjNum,
+ CFX_FileBufferArchive* pFile) {
+ if (!pEncryptDict) {
+ return 0;
+ }
+ FXSYS_assert(pFile);
+ FX_FILESIZE offset = 0;
+ int32_t len = 0;
+ if (pFile->AppendString("/Encrypt") < 0) {
+ return -1;
+ }
+ offset += 8;
+ if (pFile->AppendString(" ") < 0) {
+ return -1;
+ }
+ if ((len = pFile->AppendDWord(dwObjNum)) < 0) {
+ return -1;
+ }
+ if (pFile->AppendString(" 0 R ") < 0) {
+ return -1;
+ }
+ offset += len + 6;
+ return offset;
+}
+
+std::vector<uint8_t> PDF_GenerateFileID(FX_DWORD dwSeed1, FX_DWORD dwSeed2) {
+ std::vector<uint8_t> buffer(sizeof(FX_DWORD) * 4);
+ FX_DWORD* pBuffer = reinterpret_cast<FX_DWORD*>(buffer.data());
+ void* pContext = FX_Random_MT_Start(dwSeed1);
+ for (int i = 0; i < 2; ++i)
+ *pBuffer++ = FX_Random_MT_Generate(pContext);
+ FX_Random_MT_Close(pContext);
+ pContext = FX_Random_MT_Start(dwSeed2);
+ for (int i = 0; i < 2; ++i)
+ *pBuffer++ = FX_Random_MT_Generate(pContext);
+ FX_Random_MT_Close(pContext);
+ return buffer;
+}
+
+void AppendIndex0(CFX_ByteTextBuf& buffer, bool bFirstObject) {
+ buffer.AppendByte(0);
+ buffer.AppendByte(0);
+ buffer.AppendByte(0);
+ buffer.AppendByte(0);
+ buffer.AppendByte(0);
+ const uint8_t byte = bFirstObject ? 0xFF : 0;
+ buffer.AppendByte(byte);
+ buffer.AppendByte(byte);
+}
+
+void AppendIndex1(CFX_ByteTextBuf& buffer, FX_FILESIZE offset) {
+ buffer.AppendByte(1);
+ buffer.AppendByte(FX_GETBYTEOFFSET24(offset));
+ buffer.AppendByte(FX_GETBYTEOFFSET16(offset));
+ buffer.AppendByte(FX_GETBYTEOFFSET8(offset));
+ buffer.AppendByte(FX_GETBYTEOFFSET0(offset));
+ buffer.AppendByte(0);
+ buffer.AppendByte(0);
+}
+
+void AppendIndex2(CFX_ByteTextBuf& buffer, FX_DWORD objnum, int32_t index) {
+ buffer.AppendByte(2);
+ buffer.AppendByte(FX_GETBYTEOFFSET24(objnum));
+ buffer.AppendByte(FX_GETBYTEOFFSET16(objnum));
+ buffer.AppendByte(FX_GETBYTEOFFSET8(objnum));
+ buffer.AppendByte(FX_GETBYTEOFFSET0(objnum));
+ buffer.AppendByte(FX_GETBYTEOFFSET8(index));
+ buffer.AppendByte(FX_GETBYTEOFFSET0(index));
+}
+
+bool IsXRefNeedEnd(CPDF_XRefStream* pXRef, FX_DWORD flag) {
+ if (!(flag & FPDFCREATE_INCREMENTAL))
+ return false;
+
+ FX_DWORD iCount = 0;
+ for (const auto& pair : pXRef->m_IndexArray)
+ iCount += pair.count;
+
+ return iCount >= PDF_XREFSTREAM_MAXSIZE;
+}
+
+int32_t OutputIndex(CFX_FileBufferArchive* pFile, FX_FILESIZE offset) {
+ if (sizeof(offset) > 4) {
+ if (FX_GETBYTEOFFSET32(offset)) {
+ if (pFile->AppendByte(FX_GETBYTEOFFSET56(offset)) < 0)
+ return -1;
+ if (pFile->AppendByte(FX_GETBYTEOFFSET48(offset)) < 0)
+ return -1;
+ if (pFile->AppendByte(FX_GETBYTEOFFSET40(offset)) < 0)
+ return -1;
+ if (pFile->AppendByte(FX_GETBYTEOFFSET32(offset)) < 0)
+ return -1;
+ }
+ }
+ if (pFile->AppendByte(FX_GETBYTEOFFSET24(offset)) < 0)
+ return -1;
+ if (pFile->AppendByte(FX_GETBYTEOFFSET16(offset)) < 0)
+ return -1;
+ if (pFile->AppendByte(FX_GETBYTEOFFSET8(offset)) < 0)
+ return -1;
+ if (pFile->AppendByte(FX_GETBYTEOFFSET0(offset)) < 0)
+ return -1;
+ if (pFile->AppendByte(0) < 0)
+ return -1;
+ return 0;
+}
+
+class CPDF_FlateEncoder {
+ public:
+ CPDF_FlateEncoder();
+ ~CPDF_FlateEncoder();
+ FX_BOOL Initialize(CPDF_Stream* pStream, FX_BOOL bFlateEncode);
+ FX_BOOL Initialize(const uint8_t* pBuffer,
+ FX_DWORD size,
+ FX_BOOL bFlateEncode,
+ FX_BOOL bXRefStream = FALSE);
+ void CloneDict();
+ uint8_t* m_pData;
+ FX_DWORD m_dwSize;
+ CPDF_Dictionary* m_pDict;
+ FX_BOOL m_bCloned;
+ FX_BOOL m_bNewData;
+ CPDF_StreamAcc m_Acc;
+};
+CPDF_FlateEncoder::CPDF_FlateEncoder() {
+ m_pData = NULL;
+ m_dwSize = 0;
+ m_pDict = NULL;
+ m_bCloned = FALSE;
+ m_bNewData = FALSE;
+}
+void CPDF_FlateEncoder::CloneDict() {
+ if (!m_bCloned) {
+ m_pDict = ToDictionary(m_pDict->Clone());
+ ASSERT(m_pDict);
+ m_bCloned = TRUE;
+ }
+}
+FX_BOOL CPDF_FlateEncoder::Initialize(CPDF_Stream* pStream,
+ FX_BOOL bFlateEncode) {
+ m_Acc.LoadAllData(pStream, TRUE);
+ if ((pStream && pStream->GetDict() &&
+ pStream->GetDict()->KeyExist("Filter")) ||
+ !bFlateEncode) {
+ if (pStream->GetDict()->KeyExist("Filter") && !bFlateEncode) {
+ CPDF_StreamAcc destAcc;
+ destAcc.LoadAllData(pStream);
+ m_dwSize = destAcc.GetSize();
+ m_pData = (uint8_t*)destAcc.DetachData();
+ m_pDict = ToDictionary(pStream->GetDict()->Clone());
+ m_pDict->RemoveAt("Filter");
+ m_bNewData = TRUE;
+ m_bCloned = TRUE;
+ } else {
+ m_pData = (uint8_t*)m_Acc.GetData();
+ m_dwSize = m_Acc.GetSize();
+ m_pDict = pStream->GetDict();
+ }
+ return TRUE;
+ }
+ m_pData = NULL;
+ m_dwSize = 0;
+ m_bNewData = TRUE;
+ m_bCloned = TRUE;
+ ::FlateEncode(m_Acc.GetData(), m_Acc.GetSize(), m_pData, m_dwSize);
+ m_pDict = ToDictionary(pStream->GetDict()->Clone());
+ m_pDict->SetAtInteger("Length", m_dwSize);
+ m_pDict->SetAtName("Filter", "FlateDecode");
+ m_pDict->RemoveAt("DecodeParms");
+ return TRUE;
+}
+FX_BOOL CPDF_FlateEncoder::Initialize(const uint8_t* pBuffer,
+ FX_DWORD size,
+ FX_BOOL bFlateEncode,
+ FX_BOOL bXRefStream) {
+ if (!bFlateEncode) {
+ m_pData = (uint8_t*)pBuffer;
+ m_dwSize = size;
+ return TRUE;
+ }
+ m_bNewData = TRUE;
+ if (bXRefStream) {
+ ::FlateEncode(pBuffer, size, 12, 1, 8, 7, m_pData, m_dwSize);
+ } else {
+ ::FlateEncode(pBuffer, size, m_pData, m_dwSize);
+ }
+ return TRUE;
+}
+CPDF_FlateEncoder::~CPDF_FlateEncoder() {
+ if (m_bCloned && m_pDict) {
+ m_pDict->Release();
+ }
+ if (m_bNewData) {
+ FX_Free(m_pData);
+ }
+}
+class CPDF_Encryptor {
+ public:
+ CPDF_Encryptor();
+ ~CPDF_Encryptor();
+ FX_BOOL Initialize(IPDF_CryptoHandler* pHandler,
+ int objnum,
+ uint8_t* src_data,
+ FX_DWORD src_size);
+ uint8_t* m_pData;
+ FX_DWORD m_dwSize;
+ FX_BOOL m_bNewBuf;
+};
+CPDF_Encryptor::CPDF_Encryptor() {
+ m_pData = NULL;
+ m_dwSize = 0;
+ m_bNewBuf = FALSE;
+}
+FX_BOOL CPDF_Encryptor::Initialize(IPDF_CryptoHandler* pHandler,
+ int objnum,
+ uint8_t* src_data,
+ FX_DWORD src_size) {
+ if (src_size == 0) {
+ return TRUE;
+ }
+ if (!pHandler) {
+ m_pData = (uint8_t*)src_data;
+ m_dwSize = src_size;
+ m_bNewBuf = FALSE;
+ return TRUE;
+ }
+ m_dwSize = pHandler->EncryptGetSize(objnum, 0, src_data, src_size);
+ m_pData = FX_Alloc(uint8_t, m_dwSize);
+ pHandler->EncryptContent(objnum, 0, src_data, src_size, m_pData, m_dwSize);
+ m_bNewBuf = TRUE;
+ return TRUE;
+}
+CPDF_Encryptor::~CPDF_Encryptor() {
+ if (m_bNewBuf) {
+ FX_Free(m_pData);
+ }
+}
+
+} // namespace
+
+CPDF_ObjectStream::CPDF_ObjectStream() : m_dwObjNum(0), m_index(0) {}
+FX_BOOL CPDF_ObjectStream::Start() {
+ m_ObjNumArray.RemoveAll();
+ m_OffsetArray.RemoveAll();
+ m_Buffer.Clear();
+ m_dwObjNum = 0;
+ m_index = 0;
+ return TRUE;
+}
+int32_t CPDF_ObjectStream::CompressIndirectObject(FX_DWORD dwObjNum,
+ const CPDF_Object* pObj) {
+ m_ObjNumArray.Add(dwObjNum);
+ m_OffsetArray.Add(m_Buffer.GetLength());
+ m_Buffer << pObj;
+ return 1;
+}
+int32_t CPDF_ObjectStream::CompressIndirectObject(FX_DWORD dwObjNum,
+ const uint8_t* pBuffer,
+ FX_DWORD dwSize) {
+ m_ObjNumArray.Add(dwObjNum);
+ m_OffsetArray.Add(m_Buffer.GetLength());
+ m_Buffer.AppendBlock(pBuffer, dwSize);
+ return 1;
+}
+FX_FILESIZE CPDF_ObjectStream::End(CPDF_Creator* pCreator) {
+ FXSYS_assert(pCreator);
+ if (m_ObjNumArray.GetSize() == 0) {
+ return 0;
+ }
+ CFX_FileBufferArchive* pFile = &pCreator->m_File;
+ IPDF_CryptoHandler* pHandler = pCreator->m_pCryptoHandler;
+ FX_FILESIZE ObjOffset = pCreator->m_Offset;
+ if (!m_dwObjNum) {
+ m_dwObjNum = ++pCreator->m_dwLastObjNum;
+ }
+ CFX_ByteTextBuf tempBuffer;
+ int32_t iCount = m_ObjNumArray.GetSize();
+ for (int32_t i = 0; i < iCount; i++) {
+ tempBuffer << m_ObjNumArray.ElementAt(i) << " "
+ << m_OffsetArray.ElementAt(i) << " ";
+ }
+ FX_FILESIZE& offset = pCreator->m_Offset;
+ int32_t len = pFile->AppendDWord(m_dwObjNum);
+ if (len < 0) {
+ return -1;
+ }
+ offset += len;
+ if ((len = pFile->AppendString(" 0 obj\r\n<</Type /ObjStm /N ")) < 0) {
+ return -1;
+ }
+ offset += len;
+ if ((len = pFile->AppendDWord((FX_DWORD)iCount)) < 0) {
+ return -1;
+ }
+ offset += len;
+ if (pFile->AppendString("/First ") < 0) {
+ return -1;
+ }
+ if ((len = pFile->AppendDWord((FX_DWORD)tempBuffer.GetLength())) < 0) {
+ return -1;
+ }
+ if (pFile->AppendString("/Length ") < 0) {
+ return -1;
+ }
+ offset += len + 15;
+ if (!pCreator->m_bCompress && !pHandler) {
+ if ((len = pFile->AppendDWord(
+ (FX_DWORD)(tempBuffer.GetLength() + m_Buffer.GetLength()))) < 0) {
+ return -1;
+ }
+ offset += len;
+ if ((len = pFile->AppendString(">>stream\r\n")) < 0) {
+ return -1;
+ }
+ if (pFile->AppendBlock(tempBuffer.GetBuffer(), tempBuffer.GetLength()) <
+ 0) {
+ return -1;
+ }
+ if (pFile->AppendBlock(m_Buffer.GetBuffer(), m_Buffer.GetLength()) < 0) {
+ return -1;
+ }
+ offset += len + tempBuffer.GetLength() + m_Buffer.GetLength();
+ } else {
+ tempBuffer << m_Buffer;
+ CPDF_FlateEncoder encoder;
+ encoder.Initialize(tempBuffer.GetBuffer(), tempBuffer.GetLength(),
+ pCreator->m_bCompress);
+ CPDF_Encryptor encryptor;
+ encryptor.Initialize(pHandler, m_dwObjNum, encoder.m_pData,
+ encoder.m_dwSize);
+ if ((len = pFile->AppendDWord(encryptor.m_dwSize)) < 0) {
+ return -1;
+ }
+ offset += len;
+ if (pCreator->m_bCompress) {
+ if (pFile->AppendString("/Filter /FlateDecode") < 0) {
+ return -1;
+ }
+ offset += 20;
+ }
+ if ((len = pFile->AppendString(">>stream\r\n")) < 0) {
+ return -1;
+ }
+ if (pFile->AppendBlock(encryptor.m_pData, encryptor.m_dwSize) < 0) {
+ return -1;
+ }
+ offset += len + encryptor.m_dwSize;
+ }
+ if ((len = pFile->AppendString("\r\nendstream\r\nendobj\r\n")) < 0) {
+ return -1;
+ }
+ offset += len;
+ return ObjOffset;
+}
+CPDF_XRefStream::CPDF_XRefStream()
+ : m_PrevOffset(0), m_dwTempObjNum(0), m_iSeg(0) {}
+FX_BOOL CPDF_XRefStream::Start() {
+ m_IndexArray.clear();
+ m_Buffer.Clear();
+ m_iSeg = 0;
+ return TRUE;
+}
+int32_t CPDF_XRefStream::CompressIndirectObject(FX_DWORD dwObjNum,
+ const CPDF_Object* pObj,
+ CPDF_Creator* pCreator) {
+ if (!pCreator) {
+ return 0;
+ }
+ m_ObjStream.CompressIndirectObject(dwObjNum, pObj);
+ if (m_ObjStream.m_ObjNumArray.GetSize() < pCreator->m_ObjectStreamSize &&
+ m_ObjStream.m_Buffer.GetLength() < PDF_OBJECTSTREAM_MAXLENGTH) {
+ return 1;
+ }
+ return EndObjectStream(pCreator);
+}
+int32_t CPDF_XRefStream::CompressIndirectObject(FX_DWORD dwObjNum,
+ const uint8_t* pBuffer,
+ FX_DWORD dwSize,
+ CPDF_Creator* pCreator) {
+ if (!pCreator) {
+ return 0;
+ }
+ m_ObjStream.CompressIndirectObject(dwObjNum, pBuffer, dwSize);
+ if (m_ObjStream.m_ObjNumArray.GetSize() < pCreator->m_ObjectStreamSize &&
+ m_ObjStream.m_Buffer.GetLength() < PDF_OBJECTSTREAM_MAXLENGTH) {
+ return 1;
+ }
+ return EndObjectStream(pCreator);
+}
+
+int32_t CPDF_XRefStream::EndObjectStream(CPDF_Creator* pCreator, FX_BOOL bEOF) {
+ FX_FILESIZE objOffset = 0;
+ if (bEOF) {
+ objOffset = m_ObjStream.End(pCreator);
+ if (objOffset < 0) {
+ return -1;
+ }
+ }
+ FX_DWORD& dwObjStmNum = m_ObjStream.m_dwObjNum;
+ if (!dwObjStmNum) {
+ dwObjStmNum = ++pCreator->m_dwLastObjNum;
+ }
+ int32_t iSize = m_ObjStream.m_ObjNumArray.GetSize();
+ size_t iSeg = m_IndexArray.size();
+ if (!(pCreator->m_dwFlags & FPDFCREATE_INCREMENTAL)) {
+ if (m_dwTempObjNum == 0) {
+ AppendIndex0(m_Buffer, true);
+ m_dwTempObjNum++;
+ }
+ FX_DWORD end_num = m_IndexArray.back().objnum + m_IndexArray.back().count;
+ int index = 0;
+ for (; m_dwTempObjNum < end_num; m_dwTempObjNum++) {
+ FX_FILESIZE* offset = pCreator->m_ObjectOffset.GetPtrAt(m_dwTempObjNum);
+ if (offset) {
+ if (index >= iSize ||
+ m_dwTempObjNum != m_ObjStream.m_ObjNumArray[index]) {
+ AppendIndex1(m_Buffer, *offset);
+ } else {
+ AppendIndex2(m_Buffer, dwObjStmNum, index++);
+ }
+ } else {
+ AppendIndex0(m_Buffer, false);
+ }
+ }
+ if (iSize > 0 && bEOF) {
+ pCreator->m_ObjectOffset.Add(dwObjStmNum, 1);
+ pCreator->m_ObjectOffset[dwObjStmNum] = objOffset;
+ }
+ m_iSeg = iSeg;
+ if (bEOF) {
+ m_ObjStream.Start();
+ }
+ return 1;
+ }
+ for (auto it = m_IndexArray.begin() + m_iSeg; it != m_IndexArray.end();
+ ++it) {
+ for (FX_DWORD m = it->objnum; m < it->objnum + it->count; ++m) {
+ if (m_ObjStream.m_index >= iSize ||
+ m != m_ObjStream.m_ObjNumArray.ElementAt(it - m_IndexArray.begin())) {
+ AppendIndex1(m_Buffer, pCreator->m_ObjectOffset[m]);
+ } else {
+ AppendIndex2(m_Buffer, dwObjStmNum, m_ObjStream.m_index++);
+ }
+ }
+ }
+ if (iSize > 0 && bEOF) {
+ AppendIndex1(m_Buffer, objOffset);
+ m_IndexArray.push_back({dwObjStmNum, 1});
+ iSeg += 1;
+ }
+ m_iSeg = iSeg;
+ if (bEOF) {
+ m_ObjStream.Start();
+ }
+ return 1;
+}
+FX_BOOL CPDF_XRefStream::GenerateXRefStream(CPDF_Creator* pCreator,
+ FX_BOOL bEOF) {
+ FX_FILESIZE offset_tmp = pCreator->m_Offset;
+ FX_DWORD objnum = ++pCreator->m_dwLastObjNum;
+ CFX_FileBufferArchive* pFile = &pCreator->m_File;
+ FX_BOOL bIncremental = (pCreator->m_dwFlags & FPDFCREATE_INCREMENTAL) != 0;
+ if (bIncremental) {
+ AddObjectNumberToIndexArray(objnum);
+ } else {
+ for (; m_dwTempObjNum < pCreator->m_dwLastObjNum; m_dwTempObjNum++) {
+ FX_FILESIZE* offset = pCreator->m_ObjectOffset.GetPtrAt(m_dwTempObjNum);
+ if (offset) {
+ AppendIndex1(m_Buffer, *offset);
+ } else {
+ AppendIndex0(m_Buffer, false);
+ }
+ }
+ }
+ AppendIndex1(m_Buffer, offset_tmp);
+ FX_FILESIZE& offset = pCreator->m_Offset;
+ int32_t len = pFile->AppendDWord(objnum);
+ if (len < 0) {
+ return FALSE;
+ }
+ offset += len;
+ if ((len = pFile->AppendString(" 0 obj\r\n<</Type /XRef/W[1 4 2]/Index[")) <
+ 0) {
+ return FALSE;
+ }
+ offset += len;
+ if (!bIncremental) {
+ if ((len = pFile->AppendDWord(0)) < 0) {
+ return FALSE;
+ }
+ if ((len = pFile->AppendString(" ")) < 0) {
+ return FALSE;
+ }
+ offset += len + 1;
+ if ((len = pFile->AppendDWord(objnum + 1)) < 0) {
+ return FALSE;
+ }
+ offset += len;
+ } else {
+ for (const auto& pair : m_IndexArray) {
+ if ((len = pFile->AppendDWord(pair.objnum)) < 0) {
+ return FALSE;
+ }
+ if (pFile->AppendString(" ") < 0) {
+ return FALSE;
+ }
+ offset += len + 1;
+ if ((len = pFile->AppendDWord(pair.count)) < 0) {
+ return FALSE;
+ }
+ if (pFile->AppendString(" ") < 0) {
+ return FALSE;
+ }
+ offset += len + 1;
+ }
+ }
+ if (pFile->AppendString("]/Size ") < 0) {
+ return FALSE;
+ }
+ if ((len = pFile->AppendDWord(objnum + 1)) < 0) {
+ return FALSE;
+ }
+ offset += len + 7;
+ if (m_PrevOffset > 0) {
+ if (pFile->AppendString("/Prev ") < 0) {
+ return FALSE;
+ }
+ FX_CHAR offset_buf[20];
+ FXSYS_memset(offset_buf, 0, sizeof(offset_buf));
+ FXSYS_i64toa(m_PrevOffset, offset_buf, 10);
+ int32_t len = (int32_t)FXSYS_strlen(offset_buf);
+ if (pFile->AppendBlock(offset_buf, len) < 0) {
+ return FALSE;
+ }
+ offset += len + 6;
+ }
+ FX_BOOL bPredictor = TRUE;
+ CPDF_FlateEncoder encoder;
+ encoder.Initialize(m_Buffer.GetBuffer(), m_Buffer.GetLength(),
+ pCreator->m_bCompress, bPredictor);
+ if (pCreator->m_bCompress) {
+ if (pFile->AppendString("/Filter /FlateDecode") < 0) {
+ return FALSE;
+ }
+ offset += 20;
+ if (bPredictor) {
+ if ((len = pFile->AppendString(
+ "/DecodeParms<</Columns 7/Predictor 12>>")) < 0) {
+ return FALSE;
+ }
+ offset += len;
+ }
+ }
+ if (pFile->AppendString("/Length ") < 0) {
+ return FALSE;
+ }
+ if ((len = pFile->AppendDWord(encoder.m_dwSize)) < 0) {
+ return FALSE;
+ }
+ offset += len + 8;
+ if (bEOF) {
+ if ((len = PDF_CreatorWriteTrailer(pCreator->m_pDocument, pFile,
+ pCreator->m_pIDArray,
+ pCreator->m_bCompress)) < 0) {
+ return FALSE;
+ }
+ offset += len;
+ if (pCreator->m_pEncryptDict) {
+ FX_DWORD dwEncryptObjNum = pCreator->m_pEncryptDict->GetObjNum();
+ if (dwEncryptObjNum == 0) {
+ dwEncryptObjNum = pCreator->m_dwEnryptObjNum;
+ }
+ if ((len = PDF_CreatorWriteEncrypt(pCreator->m_pEncryptDict,
+ dwEncryptObjNum, pFile)) < 0) {
+ return FALSE;
+ }
+ offset += len;
+ }
+ }
+ if ((len = pFile->AppendString(">>stream\r\n")) < 0) {
+ return FALSE;
+ }
+ offset += len;
+ if (pFile->AppendBlock(encoder.m_pData, encoder.m_dwSize) < 0) {
+ return FALSE;
+ }
+ if ((len = pFile->AppendString("\r\nendstream\r\nendobj\r\n")) < 0) {
+ return FALSE;
+ }
+ offset += encoder.m_dwSize + len;
+ m_PrevOffset = offset_tmp;
+ return TRUE;
+}
+FX_BOOL CPDF_XRefStream::End(CPDF_Creator* pCreator, FX_BOOL bEOF) {
+ if (EndObjectStream(pCreator, bEOF) < 0) {
+ return FALSE;
+ }
+ return GenerateXRefStream(pCreator, bEOF);
+}
+FX_BOOL CPDF_XRefStream::EndXRefStream(CPDF_Creator* pCreator) {
+ if (!(pCreator->m_dwFlags & FPDFCREATE_INCREMENTAL)) {
+ AppendIndex0(m_Buffer, true);
+ for (FX_DWORD i = 1; i < pCreator->m_dwLastObjNum + 1; i++) {
+ FX_FILESIZE* offset = pCreator->m_ObjectOffset.GetPtrAt(i);
+ if (offset) {
+ AppendIndex1(m_Buffer, *offset);
+ } else {
+ AppendIndex0(m_Buffer, false);
+ }
+ }
+ } else {
+ for (const auto& pair : m_IndexArray) {
+ for (FX_DWORD j = pair.objnum; j < pair.objnum + pair.count; ++j)
+ AppendIndex1(m_Buffer, pCreator->m_ObjectOffset[j]);
+ }
+ }
+ return GenerateXRefStream(pCreator, FALSE);
+}
+void CPDF_XRefStream::AddObjectNumberToIndexArray(FX_DWORD objnum) {
+ if (m_IndexArray.empty()) {
+ m_IndexArray.push_back({objnum, 1});
+ return;
+ }
+ FX_DWORD next_objnum = m_IndexArray.back().objnum + m_IndexArray.back().count;
+ if (objnum == next_objnum)
+ m_IndexArray.back().count += 1;
+ else
+ m_IndexArray.push_back({objnum, 1});
+}
+CPDF_Creator::CPDF_Creator(CPDF_Document* pDoc) {
+ m_pDocument = pDoc;
+ m_pParser = (CPDF_Parser*)pDoc->m_pParser;
+ m_bCompress = TRUE;
+ if (m_pParser) {
+ m_pEncryptDict = m_pParser->GetEncryptDict();
+ m_pCryptoHandler = m_pParser->GetCryptoHandler();
+ } else {
+ m_pEncryptDict = NULL;
+ m_pCryptoHandler = NULL;
+ }
+ m_bSecurityChanged = FALSE;
+ m_bStandardSecurity = FALSE;
+ m_pMetadata = NULL;
+ m_bEncryptCloned = FALSE;
+ m_bEncryptMetadata = FALSE;
+ m_Offset = 0;
+ m_iStage = -1;
+ m_dwFlags = 0;
+ m_Pos = NULL;
+ m_XrefStart = 0;
+ m_pXRefStream = NULL;
+ m_ObjectStreamSize = 200;
+ m_dwLastObjNum = m_pDocument->GetLastObjNum();
+ m_pIDArray = NULL;
+ m_FileVersion = 0;
+ m_dwEnryptObjNum = 0;
+ m_bNewCrypto = FALSE;
+}
+CPDF_Creator::~CPDF_Creator() {
+ ResetStandardSecurity();
+ if (m_bEncryptCloned && m_pEncryptDict) {
+ m_pEncryptDict->Release();
+ m_pEncryptDict = NULL;
+ }
+ Clear();
+}
+
+int32_t CPDF_Creator::WriteIndirectObjectToStream(const CPDF_Object* pObj) {
+ if (!m_pXRefStream)
+ return 1;
+
+ FX_DWORD objnum = pObj->GetObjNum();
+ if (m_pParser && m_pParser->GetObjectGenNum(objnum) > 0)
+ return 1;
+
+ if (pObj->IsNumber())
+ return 1;
+
+ CPDF_Dictionary* pDict = pObj->GetDict();
+ if (pObj->IsStream()) {
+ if (pDict && pDict->GetStringBy("Type") == "XRef")
+ return 0;
+ return 1;
+ }
+
+ if (pDict) {
+ if (pDict == m_pDocument->m_pRootDict || pDict == m_pEncryptDict)
+ return 1;
+ if (pDict->IsSignatureDict())
+ return 1;
+ if (pDict->GetStringBy("Type") == "Page")
+ return 1;
+ }
+
+ m_pXRefStream->AddObjectNumberToIndexArray(objnum);
+ if (m_pXRefStream->CompressIndirectObject(objnum, pObj, this) < 0)
+ return -1;
+ if (!IsXRefNeedEnd(m_pXRefStream, m_dwFlags))
+ return 0;
+ if (!m_pXRefStream->End(this))
+ return -1;
+ if (!m_pXRefStream->Start())
+ return -1;
+ return 0;
+}
+int32_t CPDF_Creator::WriteIndirectObjectToStream(FX_DWORD objnum,
+ const uint8_t* pBuffer,
+ FX_DWORD dwSize) {
+ if (!m_pXRefStream) {
+ return 1;
+ }
+ m_pXRefStream->AddObjectNumberToIndexArray(objnum);
+ int32_t iRet =
+ m_pXRefStream->CompressIndirectObject(objnum, pBuffer, dwSize, this);
+ if (iRet < 1) {
+ return iRet;
+ }
+ if (!IsXRefNeedEnd(m_pXRefStream, m_dwFlags)) {
+ return 0;
+ }
+ if (!m_pXRefStream->End(this)) {
+ return -1;
+ }
+ if (!m_pXRefStream->Start()) {
+ return -1;
+ }
+ return 0;
+}
+int32_t CPDF_Creator::AppendObjectNumberToXRef(FX_DWORD objnum) {
+ if (!m_pXRefStream) {
+ return 1;
+ }
+ m_pXRefStream->AddObjectNumberToIndexArray(objnum);
+ if (!IsXRefNeedEnd(m_pXRefStream, m_dwFlags)) {
+ return 0;
+ }
+ if (!m_pXRefStream->End(this)) {
+ return -1;
+ }
+ if (!m_pXRefStream->Start()) {
+ return -1;
+ }
+ return 0;
+}
+int32_t CPDF_Creator::WriteStream(const CPDF_Object* pStream,
+ FX_DWORD objnum,
+ IPDF_CryptoHandler* pCrypto) {
+ CPDF_FlateEncoder encoder;
+ encoder.Initialize(const_cast<CPDF_Stream*>(pStream->AsStream()),
+ pStream == m_pMetadata ? FALSE : m_bCompress);
+ CPDF_Encryptor encryptor;
+ if (!encryptor.Initialize(pCrypto, objnum, encoder.m_pData,
+ encoder.m_dwSize)) {
+ return -1;
+ }
+ if ((FX_DWORD)encoder.m_pDict->GetIntegerBy("Length") != encryptor.m_dwSize) {
+ encoder.CloneDict();
+ encoder.m_pDict->SetAtInteger("Length", encryptor.m_dwSize);
+ }
+ if (WriteDirectObj(objnum, encoder.m_pDict) < 0) {
+ return -1;
+ }
+ int len = m_File.AppendString("stream\r\n");
+ if (len < 0) {
+ return -1;
+ }
+ m_Offset += len;
+ if (m_File.AppendBlock(encryptor.m_pData, encryptor.m_dwSize) < 0) {
+ return -1;
+ }
+ m_Offset += encryptor.m_dwSize;
+ if ((len = m_File.AppendString("\r\nendstream")) < 0) {
+ return -1;
+ }
+ m_Offset += len;
+ return 1;
+}
+int32_t CPDF_Creator::WriteIndirectObj(FX_DWORD objnum,
+ const CPDF_Object* pObj) {
+ int32_t len = m_File.AppendDWord(objnum);
+ if (len < 0)
+ return -1;
+
+ m_Offset += len;
+ if ((len = m_File.AppendString(" 0 obj\r\n")) < 0)
+ return -1;
+
+ m_Offset += len;
+ if (pObj->IsStream()) {
+ IPDF_CryptoHandler* pHandler = nullptr;
+ pHandler =
+ (pObj == m_pMetadata && !m_bEncryptMetadata) ? NULL : m_pCryptoHandler;
+ if (WriteStream(pObj, objnum, pHandler) < 0)
+ return -1;
+ } else {
+ if (WriteDirectObj(objnum, pObj) < 0)
+ return -1;
+ }
+ if ((len = m_File.AppendString("\r\nendobj\r\n")) < 0)
+ return -1;
+
+ m_Offset += len;
+ if (AppendObjectNumberToXRef(objnum) < 0)
+ return -1;
+ return 0;
+}
+int32_t CPDF_Creator::WriteIndirectObj(const CPDF_Object* pObj) {
+ int32_t iRet = WriteIndirectObjectToStream(pObj);
+ if (iRet < 1) {
+ return iRet;
+ }
+ return WriteIndirectObj(pObj->GetObjNum(), pObj);
+}
+int32_t CPDF_Creator::WriteDirectObj(FX_DWORD objnum,
+ const CPDF_Object* pObj,
+ FX_BOOL bEncrypt) {
+ int32_t len = 0;
+ if (!pObj) {
+ if (m_File.AppendString(" null") < 0) {
+ return -1;
+ }
+ m_Offset += 5;
+ return 1;
+ }
+ switch (pObj->GetType()) {
+ case CPDF_Object::NULLOBJ:
+ if (m_File.AppendString(" null") < 0) {
+ return -1;
+ }
+ m_Offset += 5;
+ break;
+ case CPDF_Object::BOOLEAN:
+ case CPDF_Object::NUMBER:
+ if (m_File.AppendString(" ") < 0) {
+ return -1;
+ }
+ if ((len = m_File.AppendString(pObj->GetString())) < 0) {
+ return -1;
+ }
+ m_Offset += len + 1;
+ break;
+ case CPDF_Object::STRING: {
+ CFX_ByteString str = pObj->GetString();
+ FX_BOOL bHex = pObj->AsString()->IsHex();
+ if (!m_pCryptoHandler || !bEncrypt) {
+ CFX_ByteString content = PDF_EncodeString(str, bHex);
+ if ((len = m_File.AppendString(content)) < 0) {
+ return -1;
+ }
+ m_Offset += len;
+ break;
+ }
+ CPDF_Encryptor encryptor;
+ encryptor.Initialize(m_pCryptoHandler, objnum, (uint8_t*)str.c_str(),
+ str.GetLength());
+ CFX_ByteString content = PDF_EncodeString(
+ CFX_ByteString((const FX_CHAR*)encryptor.m_pData, encryptor.m_dwSize),
+ bHex);
+ if ((len = m_File.AppendString(content)) < 0) {
+ return -1;
+ }
+ m_Offset += len;
+ break;
+ }
+ case CPDF_Object::STREAM: {
+ CPDF_FlateEncoder encoder;
+ encoder.Initialize(const_cast<CPDF_Stream*>(pObj->AsStream()),
+ m_bCompress);
+ CPDF_Encryptor encryptor;
+ IPDF_CryptoHandler* pHandler = m_pCryptoHandler;
+ encryptor.Initialize(pHandler, objnum, encoder.m_pData, encoder.m_dwSize);
+ if ((FX_DWORD)encoder.m_pDict->GetIntegerBy("Length") !=
+ encryptor.m_dwSize) {
+ encoder.CloneDict();
+ encoder.m_pDict->SetAtInteger("Length", encryptor.m_dwSize);
+ }
+ if (WriteDirectObj(objnum, encoder.m_pDict) < 0) {
+ return -1;
+ }
+ if ((len = m_File.AppendString("stream\r\n")) < 0) {
+ return -1;
+ }
+ m_Offset += len;
+ if (m_File.AppendBlock(encryptor.m_pData, encryptor.m_dwSize) < 0) {
+ return -1;
+ }
+ m_Offset += encryptor.m_dwSize;
+ if ((len = m_File.AppendString("\r\nendstream")) < 0) {
+ return -1;
+ }
+ m_Offset += len;
+ break;
+ }
+ case CPDF_Object::NAME: {
+ if (m_File.AppendString("/") < 0) {
+ return -1;
+ }
+ CFX_ByteString str = pObj->GetString();
+ if ((len = m_File.AppendString(PDF_NameEncode(str))) < 0) {
+ return -1;
+ }
+ m_Offset += len + 1;
+ break;
+ }
+ case CPDF_Object::REFERENCE: {
+ if (m_File.AppendString(" ") < 0)
+ return -1;
+ if ((len = m_File.AppendDWord(pObj->AsReference()->GetRefObjNum())) < 0)
+ return -1;
+ if (m_File.AppendString(" 0 R") < 0)
+ return -1;
+ m_Offset += len + 5;
+ break;
+ }
+ case CPDF_Object::ARRAY: {
+ if (m_File.AppendString("[") < 0) {
+ return -1;
+ }
+ m_Offset += 1;
+ const CPDF_Array* p = pObj->AsArray();
+ for (FX_DWORD i = 0; i < p->GetCount(); i++) {
+ CPDF_Object* pElement = p->GetElement(i);
+ if (pElement->GetObjNum()) {
+ if (m_File.AppendString(" ") < 0) {
+ return -1;
+ }
+ if ((len = m_File.AppendDWord(pElement->GetObjNum())) < 0) {
+ return -1;
+ }
+ if (m_File.AppendString(" 0 R") < 0) {
+ return -1;
+ }
+ m_Offset += len + 5;
+ } else {
+ if (WriteDirectObj(objnum, pElement) < 0) {
+ return -1;
+ }
+ }
+ }
+ if (m_File.AppendString("]") < 0) {
+ return -1;
+ }
+ m_Offset += 1;
+ break;
+ }
+ case CPDF_Object::DICTIONARY: {
+ if (!m_pCryptoHandler || pObj == m_pEncryptDict) {
+ return PDF_CreatorAppendObject(pObj, &m_File, m_Offset);
+ }
+ if (m_File.AppendString("<<") < 0) {
+ return -1;
+ }
+ m_Offset += 2;
+ const CPDF_Dictionary* p = pObj->AsDictionary();
+ bool bSignDict = p->IsSignatureDict();
+ for (const auto& it : *p) {
+ FX_BOOL bSignValue = FALSE;
+ const CFX_ByteString& key = it.first;
+ CPDF_Object* pValue = it.second;
+ if (m_File.AppendString("/") < 0) {
+ return -1;
+ }
+ if ((len = m_File.AppendString(PDF_NameEncode(key))) < 0) {
+ return -1;
+ }
+ m_Offset += len + 1;
+ if (bSignDict && key == "Contents") {
+ bSignValue = TRUE;
+ }
+ if (pValue->GetObjNum()) {
+ if (m_File.AppendString(" ") < 0) {
+ return -1;
+ }
+ if ((len = m_File.AppendDWord(pValue->GetObjNum())) < 0) {
+ return -1;
+ }
+ if (m_File.AppendString(" 0 R ") < 0) {
+ return -1;
+ }
+ m_Offset += len + 6;
+ } else {
+ if (WriteDirectObj(objnum, pValue, !bSignValue) < 0) {
+ return -1;
+ }
+ }
+ }
+ if (m_File.AppendString(">>") < 0) {
+ return -1;
+ }
+ m_Offset += 2;
+ break;
+ }
+ }
+ return 1;
+}
+int32_t CPDF_Creator::WriteOldIndirectObject(FX_DWORD objnum) {
+ if (m_pParser->IsObjectFreeOrNull(objnum))
+ return 0;
+
+ m_ObjectOffset[objnum] = m_Offset;
+ FX_BOOL bExistInMap =
+ pdfium::ContainsKey(m_pDocument->m_IndirectObjs, objnum);
+ const uint8_t object_type = m_pParser->GetObjectType(objnum);
+ bool bObjStm = (object_type == 2) && m_pEncryptDict && !m_pXRefStream;
+ if (m_pParser->IsVersionUpdated() || m_bSecurityChanged || bExistInMap ||
+ bObjStm) {
+ CPDF_Object* pObj = m_pDocument->GetIndirectObject(objnum);
+ if (!pObj) {
+ m_ObjectOffset[objnum] = 0;
+ return 0;
+ }
+ if (WriteIndirectObj(pObj)) {
+ return -1;
+ }
+ if (!bExistInMap) {
+ m_pDocument->ReleaseIndirectObject(objnum);
+ }
+ } else {
+ uint8_t* pBuffer;
+ FX_DWORD size;
+ m_pParser->GetIndirectBinary(objnum, pBuffer, size);
+ if (!pBuffer) {
+ return 0;
+ }
+ if (object_type == 2) {
+ if (m_pXRefStream) {
+ if (WriteIndirectObjectToStream(objnum, pBuffer, size) < 0) {
+ FX_Free(pBuffer);
+ return -1;
+ }
+ } else {
+ int32_t len = m_File.AppendDWord(objnum);
+ if (len < 0) {
+ return -1;
+ }
+ if (m_File.AppendString(" 0 obj ") < 0) {
+ return -1;
+ }
+ m_Offset += len + 7;
+ if (m_File.AppendBlock(pBuffer, size) < 0) {
+ return -1;
+ }
+ m_Offset += size;
+ if (m_File.AppendString("\r\nendobj\r\n") < 0) {
+ return -1;
+ }
+ m_Offset += 10;
+ }
+ } else {
+ if (m_File.AppendBlock(pBuffer, size) < 0) {
+ return -1;
+ }
+ m_Offset += size;
+ if (AppendObjectNumberToXRef(objnum) < 0) {
+ return -1;
+ }
+ }
+ FX_Free(pBuffer);
+ }
+ return 1;
+}
+int32_t CPDF_Creator::WriteOldObjs(IFX_Pause* pPause) {
+ FX_DWORD nLastObjNum = m_pParser->GetLastObjNum();
+ if (!m_pParser->IsValidObjectNumber(nLastObjNum))
+ return 0;
+
+ FX_DWORD objnum = (FX_DWORD)(uintptr_t)m_Pos;
+ for (; objnum <= nLastObjNum; ++objnum) {
+ int32_t iRet = WriteOldIndirectObject(objnum);
+ if (iRet < 0)
+ return iRet;
+
+ if (!iRet)
+ continue;
+
+ if (pPause && pPause->NeedToPauseNow()) {
+ m_Pos = (void*)(uintptr_t)(objnum + 1);
+ return 1;
+ }
+ }
+ return 0;
+}
+int32_t CPDF_Creator::WriteNewObjs(FX_BOOL bIncremental, IFX_Pause* pPause) {
+ int32_t iCount = m_NewObjNumArray.GetSize();
+ int32_t index = (int32_t)(uintptr_t)m_Pos;
+ while (index < iCount) {
+ FX_DWORD objnum = m_NewObjNumArray.ElementAt(index);
+ auto it = m_pDocument->m_IndirectObjs.find(objnum);
+ if (it == m_pDocument->m_IndirectObjs.end()) {
+ ++index;
+ continue;
+ }
+ m_ObjectOffset[objnum] = m_Offset;
+ if (WriteIndirectObj(it->second)) {
+ return -1;
+ }
+ index++;
+ if (pPause && pPause->NeedToPauseNow()) {
+ m_Pos = (FX_POSITION)(uintptr_t)index;
+ return 1;
+ }
+ }
+ return 0;
+}
+void CPDF_Creator::InitOldObjNumOffsets() {
+ if (!m_pParser) {
+ return;
+ }
+ FX_DWORD j = 0;
+ FX_DWORD dwStart = 0;
+ FX_DWORD dwEnd = m_pParser->GetLastObjNum();
+ while (dwStart <= dwEnd) {
+ while (dwStart <= dwEnd && m_pParser->IsObjectFreeOrNull(dwStart))
+ dwStart++;
+
+ if (dwStart > dwEnd)
+ break;
+
+ j = dwStart;
+ while (j <= dwEnd && !m_pParser->IsObjectFreeOrNull(j))
+ j++;
+
+ m_ObjectOffset.Add(dwStart, j - dwStart);
+ dwStart = j;
+ }
+}
+void CPDF_Creator::InitNewObjNumOffsets() {
+ FX_BOOL bIncremental = (m_dwFlags & FPDFCREATE_INCREMENTAL) != 0;
+ FX_BOOL bNoOriginal = (m_dwFlags & FPDFCREATE_NO_ORIGINAL) != 0;
+ for (const auto& pair : m_pDocument->m_IndirectObjs) {
+ const FX_DWORD objnum = pair.first;
+ const CPDF_Object* pObj = pair.second;
+ if (pObj->GetObjNum() == -1)
+ continue;
+ if (bIncremental) {
+ if (!pObj->IsModified())
+ continue;
+ } else if (m_pParser && m_pParser->IsValidObjectNumber(objnum) &&
+ m_pParser->GetObjectType(objnum)) {
+ continue;
+ }
+ AppendNewObjNum(objnum);
+ }
+
+ int32_t iCount = m_NewObjNumArray.GetSize();
+ if (iCount == 0) {
+ return;
+ }
+ int32_t i = 0;
+ FX_DWORD dwStartObjNum = 0;
+ FX_BOOL bCrossRefValid = m_pParser && m_pParser->GetLastXRefOffset() > 0;
+ while (i < iCount) {
+ dwStartObjNum = m_NewObjNumArray.ElementAt(i);
+ if ((bIncremental && (bNoOriginal || bCrossRefValid)) ||
+ !m_ObjectOffset.GetPtrAt(dwStartObjNum)) {
+ break;
+ }
+ i++;
+ }
+ if (i >= iCount) {
+ return;
+ }
+ FX_DWORD dwLastObjNum = dwStartObjNum;
+ i++;
+ FX_BOOL bNewStart = FALSE;
+ for (; i < iCount; i++) {
+ FX_DWORD dwCurObjNum = m_NewObjNumArray.ElementAt(i);
+ bool bExist = m_pParser && m_pParser->IsValidObjectNumber(dwCurObjNum) &&
+ m_ObjectOffset.GetPtrAt(dwCurObjNum);
+ if (bExist || dwCurObjNum - dwLastObjNum > 1) {
+ if (!bNewStart)
+ m_ObjectOffset.Add(dwStartObjNum, dwLastObjNum - dwStartObjNum + 1);
+ dwStartObjNum = dwCurObjNum;
+ }
+ if (bNewStart) {
+ dwStartObjNum = dwCurObjNum;
+ }
+ bNewStart = bExist;
+ dwLastObjNum = dwCurObjNum;
+ }
+ m_ObjectOffset.Add(dwStartObjNum, dwLastObjNum - dwStartObjNum + 1);
+}
+void CPDF_Creator::AppendNewObjNum(FX_DWORD objbum) {
+ int32_t iStart = 0, iFind = 0;
+ int32_t iEnd = m_NewObjNumArray.GetUpperBound();
+ while (iStart <= iEnd) {
+ int32_t iMid = (iStart + iEnd) / 2;
+ FX_DWORD dwMid = m_NewObjNumArray.ElementAt(iMid);
+ if (objbum < dwMid) {
+ iEnd = iMid - 1;
+ } else {
+ if (iMid == iEnd) {
+ iFind = iMid + 1;
+ break;
+ }
+ FX_DWORD dwNext = m_NewObjNumArray.ElementAt(iMid + 1);
+ if (objbum < dwNext) {
+ iFind = iMid + 1;
+ break;
+ }
+ iStart = iMid + 1;
+ }
+ }
+ m_NewObjNumArray.InsertAt(iFind, objbum);
+}
+int32_t CPDF_Creator::WriteDoc_Stage1(IFX_Pause* pPause) {
+ FXSYS_assert(m_iStage > -1 || m_iStage < 20);
+ if (m_iStage == 0) {
+ if (!m_pParser) {
+ m_dwFlags &= ~FPDFCREATE_INCREMENTAL;
+ }
+ if (m_bSecurityChanged && (m_dwFlags & FPDFCREATE_NO_ORIGINAL) == 0) {
+ m_dwFlags &= ~FPDFCREATE_INCREMENTAL;
+ }
+ CPDF_Dictionary* pDict = m_pDocument->GetRoot();
+ m_pMetadata = pDict ? pDict->GetElementValue("Metadata") : NULL;
+ if (m_dwFlags & FPDFCREATE_OBJECTSTREAM) {
+ m_pXRefStream = new CPDF_XRefStream;
+ m_pXRefStream->Start();
+ if ((m_dwFlags & FPDFCREATE_INCREMENTAL) != 0 && m_pParser) {
+ FX_FILESIZE prev = m_pParser->GetLastXRefOffset();
+ m_pXRefStream->m_PrevOffset = prev;
+ }
+ }
+ m_iStage = 10;
+ }
+ if (m_iStage == 10) {
+ if ((m_dwFlags & FPDFCREATE_INCREMENTAL) == 0) {
+ if (m_File.AppendString("%PDF-1.") < 0) {
+ return -1;
+ }
+ m_Offset += 7;
+ int32_t version = 7;
+ if (m_FileVersion) {
+ version = m_FileVersion;
+ } else if (m_pParser) {
+ version = m_pParser->GetFileVersion();
+ }
+ int32_t len = m_File.AppendDWord(version % 10);
+ if (len < 0) {
+ return -1;
+ }
+ m_Offset += len;
+ if ((len = m_File.AppendString("\r\n%\xA1\xB3\xC5\xD7\r\n")) < 0) {
+ return -1;
+ }
+ m_Offset += len;
+ InitOldObjNumOffsets();
+ m_iStage = 20;
+ } else {
+ IFX_FileRead* pSrcFile = m_pParser->GetFileAccess();
+ m_Offset = pSrcFile->GetSize();
+ m_Pos = (void*)(uintptr_t)m_Offset;
+ m_iStage = 15;
+ }
+ }
+ if (m_iStage == 15) {
+ if ((m_dwFlags & FPDFCREATE_NO_ORIGINAL) == 0 && m_Pos) {
+ IFX_FileRead* pSrcFile = m_pParser->GetFileAccess();
+ uint8_t buffer[4096];
+ FX_DWORD src_size = (FX_DWORD)(uintptr_t)m_Pos;
+ while (src_size) {
+ FX_DWORD block_size = src_size > 4096 ? 4096 : src_size;
+ if (!pSrcFile->ReadBlock(buffer, m_Offset - src_size, block_size)) {
+ return -1;
+ }
+ if (m_File.AppendBlock(buffer, block_size) < 0) {
+ return -1;
+ }
+ src_size -= block_size;
+ if (pPause && pPause->NeedToPauseNow()) {
+ m_Pos = (void*)(uintptr_t)src_size;
+ return 1;
+ }
+ }
+ }
+ if ((m_dwFlags & FPDFCREATE_NO_ORIGINAL) == 0 &&
+ m_pParser->GetLastXRefOffset() == 0) {
+ InitOldObjNumOffsets();
+ FX_DWORD dwEnd = m_pParser->GetLastObjNum();
+ bool bObjStm = (m_dwFlags & FPDFCREATE_OBJECTSTREAM) != 0;
+ for (FX_DWORD objnum = 0; objnum <= dwEnd; objnum++) {
+ if (m_pParser->IsObjectFreeOrNull(objnum))
+ continue;
+
+ m_ObjectOffset[objnum] = m_pParser->GetObjectPositionOrZero(objnum);
+ if (bObjStm) {
+ m_pXRefStream->AddObjectNumberToIndexArray(objnum);
+ }
+ }
+ if (bObjStm) {
+ m_pXRefStream->EndXRefStream(this);
+ m_pXRefStream->Start();
+ }
+ }
+ m_iStage = 20;
+ }
+ InitNewObjNumOffsets();
+ return m_iStage;
+}
+int32_t CPDF_Creator::WriteDoc_Stage2(IFX_Pause* pPause) {
+ FXSYS_assert(m_iStage >= 20 || m_iStage < 30);
+ if (m_iStage == 20) {
+ if ((m_dwFlags & FPDFCREATE_INCREMENTAL) == 0 && m_pParser) {
+ m_Pos = (void*)(uintptr_t)0;
+ m_iStage = 21;
+ } else {
+ m_iStage = 25;
+ }
+ }
+ if (m_iStage == 21) {
+ int32_t iRet = WriteOldObjs(pPause);
+ if (iRet) {
+ return iRet;
+ }
+ m_iStage = 25;
+ }
+ if (m_iStage == 25) {
+ m_Pos = (void*)(uintptr_t)0;
+ m_iStage = 26;
+ }
+ if (m_iStage == 26) {
+ int32_t iRet =
+ WriteNewObjs((m_dwFlags & FPDFCREATE_INCREMENTAL) != 0, pPause);
+ if (iRet) {
+ return iRet;
+ }
+ m_iStage = 27;
+ }
+ if (m_iStage == 27) {
+ if (NULL != m_pEncryptDict && 0 == m_pEncryptDict->GetObjNum()) {
+ m_dwLastObjNum += 1;
+ FX_FILESIZE saveOffset = m_Offset;
+ if (WriteIndirectObj(m_dwLastObjNum, m_pEncryptDict) < 0) {
+ return -1;
+ }
+ m_ObjectOffset.Add(m_dwLastObjNum, 1);
+ m_ObjectOffset[m_dwLastObjNum] = saveOffset;
+ m_dwEnryptObjNum = m_dwLastObjNum;
+ if (m_dwFlags & FPDFCREATE_INCREMENTAL) {
+ m_NewObjNumArray.Add(m_dwLastObjNum);
+ }
+ }
+ m_iStage = 80;
+ }
+ return m_iStage;
+}
+int32_t CPDF_Creator::WriteDoc_Stage3(IFX_Pause* pPause) {
+ FXSYS_assert(m_iStage >= 80 || m_iStage < 90);
+ FX_DWORD dwLastObjNum = m_dwLastObjNum;
+ if (m_iStage == 80) {
+ m_XrefStart = m_Offset;
+ if (m_dwFlags & FPDFCREATE_OBJECTSTREAM) {
+ m_pXRefStream->End(this, TRUE);
+ m_XrefStart = m_pXRefStream->m_PrevOffset;
+ m_iStage = 90;
+ } else if ((m_dwFlags & FPDFCREATE_INCREMENTAL) == 0 ||
+ !m_pParser->IsXRefStream()) {
+ if ((m_dwFlags & FPDFCREATE_INCREMENTAL) == 0 ||
+ m_pParser->GetLastXRefOffset() == 0) {
+ CFX_ByteString str;
+ str = m_ObjectOffset.GetPtrAt(1)
+ ? "xref\r\n"
+ : "xref\r\n0 1\r\n0000000000 65535 f\r\n";
+ if (m_File.AppendString(str) < 0) {
+ return -1;
+ }
+ m_Pos = (void*)(uintptr_t)1;
+ m_iStage = 81;
+ } else {
+ if (m_File.AppendString("xref\r\n") < 0) {
+ return -1;
+ }
+ m_Pos = (void*)(uintptr_t)0;
+ m_iStage = 82;
+ }
+ } else {
+ m_iStage = 90;
+ }
+ }
+ if (m_iStage == 81) {
+ CFX_ByteString str;
+ FX_DWORD i = (FX_DWORD)(uintptr_t)m_Pos, j;
+ while (i <= dwLastObjNum) {
+ while (i <= dwLastObjNum && !m_ObjectOffset.GetPtrAt(i)) {
+ i++;
+ }
+ if (i > dwLastObjNum) {
+ break;
+ }
+ j = i;
+ while (j <= dwLastObjNum && m_ObjectOffset.GetPtrAt(j)) {
+ j++;
+ }
+ if (i == 1) {
+ str.Format("0 %d\r\n0000000000 65535 f\r\n", j);
+ } else {
+ str.Format("%d %d\r\n", i, j - i);
+ }
+ if (m_File.AppendBlock(str.c_str(), str.GetLength()) < 0) {
+ return -1;
+ }
+ while (i < j) {
+ str.Format("%010d 00000 n\r\n", m_ObjectOffset[i++]);
+ if (m_File.AppendBlock(str.c_str(), str.GetLength()) < 0) {
+ return -1;
+ }
+ }
+ if (i > dwLastObjNum) {
+ break;
+ }
+ if (pPause && pPause->NeedToPauseNow()) {
+ m_Pos = (void*)(uintptr_t)i;
+ return 1;
+ }
+ }
+ m_iStage = 90;
+ }
+ if (m_iStage == 82) {
+ CFX_ByteString str;
+ int32_t iCount = m_NewObjNumArray.GetSize();
+ int32_t i = (int32_t)(uintptr_t)m_Pos;
+ while (i < iCount) {
+ int32_t j = i;
+ FX_DWORD objnum = m_NewObjNumArray.ElementAt(i);
+ while (j < iCount) {
+ if (++j == iCount) {
+ break;
+ }
+ FX_DWORD dwCurrent = m_NewObjNumArray.ElementAt(j);
+ if (dwCurrent - objnum > 1) {
+ break;
+ }
+ objnum = dwCurrent;
+ }
+ objnum = m_NewObjNumArray.ElementAt(i);
+ if (objnum == 1) {
+ str.Format("0 %d\r\n0000000000 65535 f\r\n", j - i + 1);
+ } else {
+ str.Format("%d %d\r\n", objnum, j - i);
+ }
+ if (m_File.AppendBlock(str.c_str(), str.GetLength()) < 0) {
+ return -1;
+ }
+ while (i < j) {
+ objnum = m_NewObjNumArray.ElementAt(i++);
+ str.Format("%010d 00000 n\r\n", m_ObjectOffset[objnum]);
+ if (m_File.AppendBlock(str.c_str(), str.GetLength()) < 0) {
+ return -1;
+ }
+ }
+ if (pPause && (i % 100) == 0 && pPause->NeedToPauseNow()) {
+ m_Pos = (void*)(uintptr_t)i;
+ return 1;
+ }
+ }
+ m_iStage = 90;
+ }
+ return m_iStage;
+}
+
+int32_t CPDF_Creator::WriteDoc_Stage4(IFX_Pause* pPause) {
+ FXSYS_assert(m_iStage >= 90);
+ if ((m_dwFlags & FPDFCREATE_OBJECTSTREAM) == 0) {
+ FX_BOOL bXRefStream =
+ (m_dwFlags & FPDFCREATE_INCREMENTAL) != 0 && m_pParser->IsXRefStream();
+ if (!bXRefStream) {
+ if (m_File.AppendString("trailer\r\n<<") < 0) {
+ return -1;
+ }
+ } else {
+ if (m_File.AppendDWord(m_pDocument->m_LastObjNum + 1) < 0) {
+ return -1;
+ }
+ if (m_File.AppendString(" 0 obj <<") < 0) {
+ return -1;
+ }
+ }
+ if (m_pParser) {
+ CPDF_Dictionary* p = m_pParser->GetTrailer();
+ for (const auto& it : *p) {
+ const CFX_ByteString& key = it.first;
+ CPDF_Object* pValue = it.second;
+ // TODO(ochang): Consolidate with similar check in
+ // PDF_CreatorWriteTrailer.
+ if (key == "Encrypt" || key == "Size" || key == "Filter" ||
+ key == "Index" || key == "Length" || key == "Prev" || key == "W" ||
+ key == "XRefStm" || key == "ID") {
+ continue;
+ }
+ if (m_File.AppendString(("/")) < 0) {
+ return -1;
+ }
+ if (m_File.AppendString(PDF_NameEncode(key)) < 0) {
+ return -1;
+ }
+ if (pValue->GetObjNum()) {
+ if (m_File.AppendString(" ") < 0) {
+ return -1;
+ }
+ if (m_File.AppendDWord(pValue->GetObjNum()) < 0) {
+ return -1;
+ }
+ if (m_File.AppendString(" 0 R ") < 0) {
+ return -1;
+ }
+ } else {
+ FX_FILESIZE offset = 0;
+ if (PDF_CreatorAppendObject(pValue, &m_File, offset) < 0) {
+ return -1;
+ }
+ }
+ }
+ } else {
+ if (m_File.AppendString("\r\n/Root ") < 0) {
+ return -1;
+ }
+ if (m_File.AppendDWord(m_pDocument->m_pRootDict->GetObjNum()) < 0) {
+ return -1;
+ }
+ if (m_File.AppendString(" 0 R\r\n") < 0) {
+ return -1;
+ }
+ if (m_pDocument->m_pInfoDict) {
+ if (m_File.AppendString("/Info ") < 0) {
+ return -1;
+ }
+ if (m_File.AppendDWord(m_pDocument->m_pInfoDict->GetObjNum()) < 0) {
+ return -1;
+ }
+ if (m_File.AppendString(" 0 R\r\n") < 0) {
+ return -1;
+ }
+ }
+ }
+ if (m_pEncryptDict) {
+ if (m_File.AppendString("/Encrypt") < 0) {
+ return -1;
+ }
+ FX_DWORD dwObjNum = m_pEncryptDict->GetObjNum();
+ if (dwObjNum == 0) {
+ dwObjNum = m_pDocument->GetLastObjNum() + 1;
+ }
+ if (m_File.AppendString(" ") < 0) {
+ return -1;
+ }
+ if (m_File.AppendDWord(dwObjNum) < 0) {
+ return -1;
+ }
+ if (m_File.AppendString(" 0 R ") < 0) {
+ return -1;
+ }
+ }
+ if (m_File.AppendString("/Size ") < 0) {
+ return -1;
+ }
+ if (m_File.AppendDWord(m_dwLastObjNum + (bXRefStream ? 2 : 1)) < 0) {
+ return -1;
+ }
+ if ((m_dwFlags & FPDFCREATE_INCREMENTAL) != 0) {
+ FX_FILESIZE prev = m_pParser->GetLastXRefOffset();
+ if (prev) {
+ if (m_File.AppendString("/Prev ") < 0) {
+ return -1;
+ }
+ FX_CHAR offset_buf[20];
+ FXSYS_memset(offset_buf, 0, sizeof(offset_buf));
+ FXSYS_i64toa(prev, offset_buf, 10);
+ if (m_File.AppendBlock(offset_buf, FXSYS_strlen(offset_buf)) < 0) {
+ return -1;
+ }
+ }
+ }
+ if (m_pIDArray) {
+ if (m_File.AppendString(("/ID")) < 0) {
+ return -1;
+ }
+ FX_FILESIZE offset = 0;
+ if (PDF_CreatorAppendObject(m_pIDArray, &m_File, offset) < 0) {
+ return -1;
+ }
+ }
+ if (!bXRefStream) {
+ if (m_File.AppendString(">>") < 0) {
+ return -1;
+ }
+ } else {
+ if (m_File.AppendString("/W[0 4 1]/Index[") < 0) {
+ return -1;
+ }
+ if ((m_dwFlags & FPDFCREATE_INCREMENTAL) != 0 && m_pParser &&
+ m_pParser->GetLastXRefOffset() == 0) {
+ FX_DWORD i = 0;
+ for (i = 0; i < m_dwLastObjNum; i++) {
+ if (!m_ObjectOffset.GetPtrAt(i)) {
+ continue;
+ }
+ if (m_File.AppendDWord(i) < 0) {
+ return -1;
+ }
+ if (m_File.AppendString(" 1 ") < 0) {
+ return -1;
+ }
+ }
+ if (m_File.AppendString("]/Length ") < 0) {
+ return -1;
+ }
+ if (m_File.AppendDWord(m_dwLastObjNum * 5) < 0) {
+ return -1;
+ }
+ if (m_File.AppendString(">>stream\r\n") < 0) {
+ return -1;
+ }
+ for (i = 0; i < m_dwLastObjNum; i++) {
+ FX_FILESIZE* offset = m_ObjectOffset.GetPtrAt(i);
+ if (!offset) {
+ continue;
+ }
+ OutputIndex(&m_File, *offset);
+ }
+ } else {
+ int count = m_NewObjNumArray.GetSize();
+ int32_t i = 0;
+ for (i = 0; i < count; i++) {
+ FX_DWORD objnum = m_NewObjNumArray.ElementAt(i);
+ if (m_File.AppendDWord(objnum) < 0) {
+ return -1;
+ }
+ if (m_File.AppendString(" 1 ") < 0) {
+ return -1;
+ }
+ }
+ if (m_File.AppendString("]/Length ") < 0) {
+ return -1;
+ }
+ if (m_File.AppendDWord(count * 5) < 0) {
+ return -1;
+ }
+ if (m_File.AppendString(">>stream\r\n") < 0) {
+ return -1;
+ }
+ for (i = 0; i < count; i++) {
+ FX_DWORD objnum = m_NewObjNumArray.ElementAt(i);
+ FX_FILESIZE offset = m_ObjectOffset[objnum];
+ OutputIndex(&m_File, offset);
+ }
+ }
+ if (m_File.AppendString("\r\nendstream") < 0) {
+ return -1;
+ }
+ }
+ }
+ if (m_File.AppendString("\r\nstartxref\r\n") < 0) {
+ return -1;
+ }
+ FX_CHAR offset_buf[20];
+ FXSYS_memset(offset_buf, 0, sizeof(offset_buf));
+ FXSYS_i64toa(m_XrefStart, offset_buf, 10);
+ if (m_File.AppendBlock(offset_buf, FXSYS_strlen(offset_buf)) < 0) {
+ return -1;
+ }
+ if (m_File.AppendString("\r\n%%EOF\r\n") < 0) {
+ return -1;
+ }
+ m_File.Flush();
+ return m_iStage = 100;
+}
+void CPDF_Creator::Clear() {
+ delete m_pXRefStream;
+ m_pXRefStream = NULL;
+ m_File.Clear();
+ m_NewObjNumArray.RemoveAll();
+ if (m_pIDArray) {
+ m_pIDArray->Release();
+ m_pIDArray = NULL;
+ }
+}
+
+bool CPDF_Creator::Create(IFX_StreamWrite* pFile, FX_DWORD flags) {
+ m_File.AttachFile(pFile);
+ return Create(flags);
+}
+
+bool CPDF_Creator::Create(FX_DWORD flags) {
+ m_dwFlags = flags;
+ m_iStage = 0;
+ m_Offset = 0;
+ m_dwLastObjNum = m_pDocument->GetLastObjNum();
+ m_ObjectOffset.Clear();
+ m_NewObjNumArray.RemoveAll();
+ InitID();
+ if (flags & FPDFCREATE_PROGRESSIVE) {
+ return true;
+ }
+ return Continue(NULL) > -1;
+}
+void CPDF_Creator::InitID(FX_BOOL bDefault) {
+ CPDF_Array* pOldIDArray = m_pParser ? m_pParser->GetIDArray() : NULL;
+ FX_BOOL bNewId = !m_pIDArray;
+ if (!m_pIDArray) {
+ m_pIDArray = new CPDF_Array;
+ CPDF_Object* pID1 = pOldIDArray ? pOldIDArray->GetElement(0) : NULL;
+ if (pID1) {
+ m_pIDArray->Add(pID1->Clone());
+ } else {
+ std::vector<uint8_t> buffer =
+ PDF_GenerateFileID((FX_DWORD)(uintptr_t) this, m_dwLastObjNum);
+ CFX_ByteStringC bsBuffer(buffer.data(), buffer.size());
+ m_pIDArray->Add(new CPDF_String(bsBuffer, TRUE), m_pDocument);
+ }
+ }
+ if (!bDefault) {
+ return;
+ }
+ if (pOldIDArray) {
+ CPDF_Object* pID2 = pOldIDArray->GetElement(1);
+ if ((m_dwFlags & FPDFCREATE_INCREMENTAL) && m_pEncryptDict && pID2) {
+ m_pIDArray->Add(pID2->Clone());
+ return;
+ }
+ std::vector<uint8_t> buffer =
+ PDF_GenerateFileID((FX_DWORD)(uintptr_t) this, m_dwLastObjNum);
+ CFX_ByteStringC bsBuffer(buffer.data(), buffer.size());
+ m_pIDArray->Add(new CPDF_String(bsBuffer, TRUE), m_pDocument);
+ return;
+ }
+ m_pIDArray->Add(m_pIDArray->GetElement(0)->Clone());
+ if (m_pEncryptDict && !pOldIDArray && m_pParser && bNewId) {
+ if (m_pEncryptDict->GetStringBy("Filter") == "Standard") {
+ CPDF_StandardSecurityHandler handler;
+ CFX_ByteString user_pass = m_pParser->GetPassword();
+ FX_DWORD flag = PDF_ENCRYPT_CONTENT;
+ handler.OnCreate(m_pEncryptDict, m_pIDArray, (const uint8_t*)user_pass,
+ user_pass.GetLength(), flag);
+ if (m_bNewCrypto) {
+ delete m_pCryptoHandler;
+ }
+ m_pCryptoHandler = new CPDF_StandardCryptoHandler;
+ m_pCryptoHandler->Init(m_pEncryptDict, &handler);
+ m_bNewCrypto = TRUE;
+ m_bSecurityChanged = TRUE;
+ }
+ }
+}
+int32_t CPDF_Creator::Continue(IFX_Pause* pPause) {
+ if (m_iStage < 0) {
+ return m_iStage;
+ }
+ int32_t iRet = 0;
+ while (m_iStage < 100) {
+ if (m_iStage < 20) {
+ iRet = WriteDoc_Stage1(pPause);
+ } else if (m_iStage < 30) {
+ iRet = WriteDoc_Stage2(pPause);
+ } else if (m_iStage < 90) {
+ iRet = WriteDoc_Stage3(pPause);
+ } else {
+ iRet = WriteDoc_Stage4(pPause);
+ }
+ if (iRet < m_iStage) {
+ break;
+ }
+ }
+ if (iRet < 1 || m_iStage == 100) {
+ m_iStage = -1;
+ Clear();
+ return iRet > 99 ? 0 : (iRet < 1 ? -1 : iRet);
+ }
+ return m_iStage;
+}
+FX_BOOL CPDF_Creator::SetFileVersion(int32_t fileVersion) {
+ if (fileVersion < 10 || fileVersion > 17) {
+ return FALSE;
+ }
+ m_FileVersion = fileVersion;
+ return TRUE;
+}
+void CPDF_Creator::RemoveSecurity() {
+ ResetStandardSecurity();
+ m_bSecurityChanged = TRUE;
+ m_pEncryptDict = NULL;
+ m_pCryptoHandler = NULL;
+}
+void CPDF_Creator::ResetStandardSecurity() {
+ if (m_bStandardSecurity || m_bNewCrypto) {
+ delete m_pCryptoHandler;
+ m_pCryptoHandler = NULL;
+ }
+ m_bNewCrypto = FALSE;
+ if (!m_bStandardSecurity) {
+ return;
+ }
+ if (m_pEncryptDict) {
+ m_pEncryptDict->Release();
+ m_pEncryptDict = NULL;
+ }
+ m_bStandardSecurity = FALSE;
+}
diff --git a/core/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp b/core/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp
new file mode 100644
index 0000000000..48e42e2a1f
--- /dev/null
+++ b/core/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp
@@ -0,0 +1,1156 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include <limits.h>
+
+#include "core/fpdfapi/fpdf_page/pageint.h"
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_document.h"
+#include "core/include/fpdfapi/cpdf_reference.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_page.h"
+
+CPDF_Document::CPDF_Document() : CPDF_IndirectObjectHolder(NULL) {
+ m_pRootDict = NULL;
+ m_pInfoDict = NULL;
+ m_bLinearized = FALSE;
+ m_dwFirstPageNo = 0;
+ m_dwFirstPageObjNum = 0;
+ m_pDocPage = CPDF_ModuleMgr::Get()->GetPageModule()->CreateDocData(this);
+ m_pDocRender = CPDF_ModuleMgr::Get()->GetRenderModule()->CreateDocData(this);
+}
+void CPDF_Document::CreateNewDoc() {
+ ASSERT(!m_pRootDict && !m_pInfoDict);
+ m_pRootDict = new CPDF_Dictionary;
+ m_pRootDict->SetAtName("Type", "Catalog");
+ int objnum = AddIndirectObject(m_pRootDict);
+ CPDF_Dictionary* pPages = new CPDF_Dictionary;
+ pPages->SetAtName("Type", "Pages");
+ pPages->SetAtNumber("Count", 0);
+ pPages->SetAt("Kids", new CPDF_Array);
+ objnum = AddIndirectObject(pPages);
+ m_pRootDict->SetAtReference("Pages", this, objnum);
+ m_pInfoDict = new CPDF_Dictionary;
+ AddIndirectObject(m_pInfoDict);
+}
+static const FX_WCHAR g_FX_CP874Unicodes[128] = {
+ 0x20AC, 0x0000, 0x0000, 0x0000, 0x0000, 0x2026, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2018,
+ 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00A0, 0x0E01, 0x0E02, 0x0E03,
+ 0x0E04, 0x0E05, 0x0E06, 0x0E07, 0x0E08, 0x0E09, 0x0E0A, 0x0E0B, 0x0E0C,
+ 0x0E0D, 0x0E0E, 0x0E0F, 0x0E10, 0x0E11, 0x0E12, 0x0E13, 0x0E14, 0x0E15,
+ 0x0E16, 0x0E17, 0x0E18, 0x0E19, 0x0E1A, 0x0E1B, 0x0E1C, 0x0E1D, 0x0E1E,
+ 0x0E1F, 0x0E20, 0x0E21, 0x0E22, 0x0E23, 0x0E24, 0x0E25, 0x0E26, 0x0E27,
+ 0x0E28, 0x0E29, 0x0E2A, 0x0E2B, 0x0E2C, 0x0E2D, 0x0E2E, 0x0E2F, 0x0E30,
+ 0x0E31, 0x0E32, 0x0E33, 0x0E34, 0x0E35, 0x0E36, 0x0E37, 0x0E38, 0x0E39,
+ 0x0E3A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0E3F, 0x0E40, 0x0E41, 0x0E42,
+ 0x0E43, 0x0E44, 0x0E45, 0x0E46, 0x0E47, 0x0E48, 0x0E49, 0x0E4A, 0x0E4B,
+ 0x0E4C, 0x0E4D, 0x0E4E, 0x0E4F, 0x0E50, 0x0E51, 0x0E52, 0x0E53, 0x0E54,
+ 0x0E55, 0x0E56, 0x0E57, 0x0E58, 0x0E59, 0x0E5A, 0x0E5B, 0x0000, 0x0000,
+ 0x0000, 0x0000,
+};
+static const FX_WCHAR g_FX_CP1250Unicodes[128] = {
+ 0x20AC, 0x0000, 0x201A, 0x0000, 0x201E, 0x2026, 0x2020, 0x2021, 0x0000,
+ 0x2030, 0x0160, 0x2039, 0x015A, 0x0164, 0x017D, 0x0179, 0x0000, 0x2018,
+ 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0000, 0x2122, 0x0161,
+ 0x203A, 0x015B, 0x0165, 0x017E, 0x017A, 0x00A0, 0x02C7, 0x02D8, 0x0141,
+ 0x00A4, 0x0104, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x015E, 0x00AB, 0x00AC,
+ 0x00AD, 0x00AE, 0x017B, 0x00B0, 0x00B1, 0x02DB, 0x0142, 0x00B4, 0x00B5,
+ 0x00B6, 0x00B7, 0x00B8, 0x0105, 0x015F, 0x00BB, 0x013D, 0x02DD, 0x013E,
+ 0x017C, 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7,
+ 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E, 0x0110,
+ 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7, 0x0158, 0x016E,
+ 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, 0x0155, 0x00E1, 0x00E2,
+ 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, 0x010D, 0x00E9, 0x0119, 0x00EB,
+ 0x011B, 0x00ED, 0x00EE, 0x010F, 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4,
+ 0x0151, 0x00F6, 0x00F7, 0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD,
+ 0x0163, 0x02D9,
+};
+static const FX_WCHAR g_FX_CP1251Unicodes[128] = {
+ 0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021, 0x20AC,
+ 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F, 0x0452, 0x2018,
+ 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0000, 0x2122, 0x0459,
+ 0x203A, 0x045A, 0x045C, 0x045B, 0x045F, 0x00A0, 0x040E, 0x045E, 0x0408,
+ 0x00A4, 0x0490, 0x00A6, 0x00A7, 0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC,
+ 0x00AD, 0x00AE, 0x0407, 0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5,
+ 0x00B6, 0x00B7, 0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455,
+ 0x0457, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+ 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420,
+ 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429,
+ 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, 0x0430, 0x0431, 0x0432,
+ 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B,
+ 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444,
+ 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D,
+ 0x044E, 0x044F,
+};
+static const FX_WCHAR g_FX_CP1253Unicodes[128] = {
+ 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x0000,
+ 0x2030, 0x0000, 0x2039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2018,
+ 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0000, 0x2122, 0x0000,
+ 0x203A, 0x0000, 0x0000, 0x0000, 0x0000, 0x00A0, 0x0385, 0x0386, 0x00A3,
+ 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x0000, 0x00AB, 0x00AC,
+ 0x00AD, 0x00AE, 0x2015, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x00B5,
+ 0x00B6, 0x00B7, 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E,
+ 0x038F, 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+ 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F, 0x03A0,
+ 0x03A1, 0x0000, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9,
+ 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF, 0x03B0, 0x03B1, 0x03B2,
+ 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB,
+ 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4,
+ 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD,
+ 0x03CE, 0x0000,
+};
+static const FX_WCHAR g_FX_CP1254Unicodes[128] = {
+ 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6,
+ 0x2030, 0x0160, 0x2039, 0x0152, 0x0000, 0x0000, 0x0000, 0x0000, 0x2018,
+ 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x02DC, 0x2122, 0x0161,
+ 0x203A, 0x0153, 0x0000, 0x0000, 0x0178, 0x00A0, 0x00A1, 0x00A2, 0x00A3,
+ 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC,
+ 0x00AD, 0x00AE, 0x00AF, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5,
+ 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE,
+ 0x00BF, 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
+ 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF, 0x011E,
+ 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7, 0x00D8, 0x00D9,
+ 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF, 0x00E0, 0x00E1, 0x00E2,
+ 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB,
+ 0x00EC, 0x00ED, 0x00EE, 0x00EF, 0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4,
+ 0x00F5, 0x00F6, 0x00F7, 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131,
+ 0x015F, 0x00FF,
+};
+static const FX_WCHAR g_FX_CP1255Unicodes[128] = {
+ 0x20AC, 0x0000, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6,
+ 0x2030, 0x0000, 0x2039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2018,
+ 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x02DC, 0x2122, 0x0000,
+ 0x203A, 0x0000, 0x0000, 0x0000, 0x0000, 0x00A0, 0x00A1, 0x00A2, 0x00A3,
+ 0x20AA, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00D7, 0x00AB, 0x00AC,
+ 0x00AD, 0x00AE, 0x00AF, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5,
+ 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE,
+ 0x00BF, 0x05B0, 0x05B1, 0x05B2, 0x05B3, 0x05B4, 0x05B5, 0x05B6, 0x05B7,
+ 0x05B8, 0x05B9, 0x0000, 0x05BB, 0x05BC, 0x05BD, 0x05BE, 0x05BF, 0x05C0,
+ 0x05C1, 0x05C2, 0x05C3, 0x05F0, 0x05F1, 0x05F2, 0x05F3, 0x05F4, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x05D0, 0x05D1, 0x05D2,
+ 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7, 0x05D8, 0x05D9, 0x05DA, 0x05DB,
+ 0x05DC, 0x05DD, 0x05DE, 0x05DF, 0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4,
+ 0x05E5, 0x05E6, 0x05E7, 0x05E8, 0x05E9, 0x05EA, 0x0000, 0x0000, 0x200E,
+ 0x200F, 0x0000,
+};
+static const FX_WCHAR g_FX_CP1256Unicodes[128] = {
+ 0x20AC, 0x067E, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6,
+ 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688, 0x06AF, 0x2018,
+ 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x06A9, 0x2122, 0x0691,
+ 0x203A, 0x0153, 0x200C, 0x200D, 0x06BA, 0x00A0, 0x060C, 0x00A2, 0x00A3,
+ 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x06BE, 0x00AB, 0x00AC,
+ 0x00AD, 0x00AE, 0x00AF, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5,
+ 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x061B, 0x00BB, 0x00BC, 0x00BD, 0x00BE,
+ 0x061F, 0x06C1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
+ 0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F, 0x0630,
+ 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00D7, 0x0637, 0x0638,
+ 0x0639, 0x063A, 0x0640, 0x0641, 0x0642, 0x0643, 0x00E0, 0x0644, 0x00E2,
+ 0x0645, 0x0646, 0x0647, 0x0648, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB,
+ 0x0649, 0x064A, 0x00EE, 0x00EF, 0x064B, 0x064C, 0x064D, 0x064E, 0x00F4,
+ 0x064F, 0x0650, 0x00F7, 0x0651, 0x00F9, 0x0652, 0x00FB, 0x00FC, 0x200E,
+ 0x200F, 0x06D2,
+};
+static const FX_WCHAR g_FX_CP1257Unicodes[128] = {
+ 0x20AC, 0x0000, 0x201A, 0x0000, 0x201E, 0x2026, 0x2020, 0x2021, 0x0000,
+ 0x2030, 0x0000, 0x2039, 0x0000, 0x00A8, 0x02C7, 0x00B8, 0x0000, 0x2018,
+ 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x0000, 0x2122, 0x0000,
+ 0x203A, 0x0000, 0x00AF, 0x02DB, 0x0000, 0x00A0, 0x0000, 0x00A2, 0x00A3,
+ 0x00A4, 0x0000, 0x00A6, 0x00A7, 0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC,
+ 0x00AD, 0x00AE, 0x00C6, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5,
+ 0x00B6, 0x00B7, 0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE,
+ 0x00E6, 0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112,
+ 0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B, 0x0160,
+ 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7, 0x0172, 0x0141,
+ 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF, 0x0105, 0x012F, 0x0101,
+ 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, 0x010D, 0x00E9, 0x017A, 0x0117,
+ 0x0123, 0x0137, 0x012B, 0x013C, 0x0161, 0x0144, 0x0146, 0x00F3, 0x014D,
+ 0x00F5, 0x00F6, 0x00F7, 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C,
+ 0x017E, 0x02D9,
+};
+typedef struct {
+ uint8_t m_Charset;
+ const FX_WCHAR* m_pUnicodes;
+} FX_CharsetUnicodes;
+const FX_CharsetUnicodes g_FX_CharsetUnicodes[] = {
+ {FXFONT_THAI_CHARSET, g_FX_CP874Unicodes},
+ {FXFONT_EASTEUROPE_CHARSET, g_FX_CP1250Unicodes},
+ {FXFONT_RUSSIAN_CHARSET, g_FX_CP1251Unicodes},
+ {FXFONT_GREEK_CHARSET, g_FX_CP1253Unicodes},
+ {FXFONT_TURKISH_CHARSET, g_FX_CP1254Unicodes},
+ {FXFONT_HEBREW_CHARSET, g_FX_CP1255Unicodes},
+ {FXFONT_ARABIC_CHARSET, g_FX_CP1256Unicodes},
+ {FXFONT_BALTIC_CHARSET, g_FX_CP1257Unicodes},
+};
+#if (_FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_DESKTOP_)
+static void _InsertWidthArray(HDC hDC,
+ int start,
+ int end,
+ CPDF_Array* pWidthArray) {
+ int size = end - start + 1;
+ int* widths = FX_Alloc(int, size);
+ GetCharWidth(hDC, start, end, widths);
+ int i;
+ for (i = 1; i < size; i++)
+ if (widths[i] != *widths) {
+ break;
+ }
+ if (i == size) {
+ int first = pWidthArray->GetIntegerAt(pWidthArray->GetCount() - 1);
+ pWidthArray->AddInteger(first + size - 1);
+ pWidthArray->AddInteger(*widths);
+ } else {
+ CPDF_Array* pWidthArray1 = new CPDF_Array;
+ pWidthArray->Add(pWidthArray1);
+ for (i = 0; i < size; i++) {
+ pWidthArray1->AddInteger(widths[i]);
+ }
+ }
+ FX_Free(widths);
+}
+CPDF_Font* CPDF_Document::AddWindowsFont(LOGFONTW* pLogFont,
+ FX_BOOL bVert,
+ FX_BOOL bTranslateName) {
+ LOGFONTA lfa;
+ FXSYS_memcpy(&lfa, pLogFont, (char*)lfa.lfFaceName - (char*)&lfa);
+ CFX_ByteString face = CFX_ByteString::FromUnicode(pLogFont->lfFaceName);
+ if (face.GetLength() >= LF_FACESIZE) {
+ return NULL;
+ }
+ FXSYS_strcpy(lfa.lfFaceName, face.c_str());
+ return AddWindowsFont(&lfa, bVert, bTranslateName);
+}
+CFX_ByteString _FPDF_GetPSNameFromTT(HDC hDC) {
+ CFX_ByteString result;
+ DWORD size = ::GetFontData(hDC, 'eman', 0, NULL, 0);
+ if (size != GDI_ERROR) {
+ LPBYTE buffer = FX_Alloc(BYTE, size);
+ ::GetFontData(hDC, 'eman', 0, buffer, size);
+ result = GetNameFromTT(buffer, 6);
+ FX_Free(buffer);
+ }
+ return result;
+}
+CPDF_Font* CPDF_Document::AddWindowsFont(LOGFONTA* pLogFont,
+ FX_BOOL bVert,
+ FX_BOOL bTranslateName) {
+ pLogFont->lfHeight = -1000;
+ pLogFont->lfWidth = 0;
+ HGDIOBJ hFont = CreateFontIndirectA(pLogFont);
+ HDC hDC = CreateCompatibleDC(NULL);
+ hFont = SelectObject(hDC, hFont);
+ int tm_size = GetOutlineTextMetrics(hDC, 0, NULL);
+ if (tm_size == 0) {
+ hFont = SelectObject(hDC, hFont);
+ DeleteObject(hFont);
+ DeleteDC(hDC);
+ return NULL;
+ }
+ LPBYTE tm_buf = FX_Alloc(BYTE, tm_size);
+ OUTLINETEXTMETRIC* ptm = (OUTLINETEXTMETRIC*)tm_buf;
+ GetOutlineTextMetrics(hDC, tm_size, ptm);
+ int flags = 0, italicangle, ascend, descend, capheight, bbox[4];
+ if (pLogFont->lfItalic) {
+ flags |= PDFFONT_ITALIC;
+ }
+ if ((pLogFont->lfPitchAndFamily & 3) == FIXED_PITCH) {
+ flags |= PDFFONT_FIXEDPITCH;
+ }
+ if ((pLogFont->lfPitchAndFamily & 0xf8) == FF_ROMAN) {
+ flags |= PDFFONT_SERIF;
+ }
+ if ((pLogFont->lfPitchAndFamily & 0xf8) == FF_SCRIPT) {
+ flags |= PDFFONT_SCRIPT;
+ }
+ bool bCJK = pLogFont->lfCharSet == CHINESEBIG5_CHARSET ||
+ pLogFont->lfCharSet == GB2312_CHARSET ||
+ pLogFont->lfCharSet == HANGEUL_CHARSET ||
+ pLogFont->lfCharSet == SHIFTJIS_CHARSET;
+ CFX_ByteString basefont;
+ if (bTranslateName && bCJK) {
+ basefont = _FPDF_GetPSNameFromTT(hDC);
+ }
+ if (basefont.IsEmpty()) {
+ basefont = pLogFont->lfFaceName;
+ }
+ italicangle = ptm->otmItalicAngle / 10;
+ ascend = ptm->otmrcFontBox.top;
+ descend = ptm->otmrcFontBox.bottom;
+ capheight = ptm->otmsCapEmHeight;
+ bbox[0] = ptm->otmrcFontBox.left;
+ bbox[1] = ptm->otmrcFontBox.bottom;
+ bbox[2] = ptm->otmrcFontBox.right;
+ bbox[3] = ptm->otmrcFontBox.top;
+ FX_Free(tm_buf);
+ basefont.Replace(" ", "");
+ CPDF_Dictionary* pBaseDict = new CPDF_Dictionary;
+ pBaseDict->SetAtName("Type", "Font");
+ CPDF_Dictionary* pFontDict = pBaseDict;
+ if (!bCJK) {
+ if (pLogFont->lfCharSet == ANSI_CHARSET ||
+ pLogFont->lfCharSet == DEFAULT_CHARSET ||
+ pLogFont->lfCharSet == SYMBOL_CHARSET) {
+ if (pLogFont->lfCharSet == SYMBOL_CHARSET) {
+ flags |= PDFFONT_SYMBOLIC;
+ } else {
+ flags |= PDFFONT_NONSYMBOLIC;
+ }
+ pBaseDict->SetAtName("Encoding", "WinAnsiEncoding");
+ } else {
+ flags |= PDFFONT_NONSYMBOLIC;
+ int i;
+ for (i = 0; i < sizeof g_FX_CharsetUnicodes / sizeof(FX_CharsetUnicodes);
+ i++)
+ if (g_FX_CharsetUnicodes[i].m_Charset == pLogFont->lfCharSet) {
+ break;
+ }
+ if (i < sizeof g_FX_CharsetUnicodes / sizeof(FX_CharsetUnicodes)) {
+ CPDF_Dictionary* pEncoding = new CPDF_Dictionary;
+ pEncoding->SetAtName("BaseEncoding", "WinAnsiEncoding");
+ CPDF_Array* pArray = new CPDF_Array;
+ pArray->AddInteger(128);
+ const FX_WCHAR* pUnicodes = g_FX_CharsetUnicodes[i].m_pUnicodes;
+ for (int j = 0; j < 128; j++) {
+ CFX_ByteString name = PDF_AdobeNameFromUnicode(pUnicodes[j]);
+ if (name.IsEmpty()) {
+ pArray->AddName(".notdef");
+ } else {
+ pArray->AddName(name);
+ }
+ }
+ pEncoding->SetAt("Differences", pArray);
+ AddIndirectObject(pEncoding);
+ pBaseDict->SetAtReference("Encoding", this, pEncoding);
+ }
+ }
+ if (pLogFont->lfWeight > FW_MEDIUM && pLogFont->lfItalic) {
+ basefont += ",BoldItalic";
+ } else if (pLogFont->lfWeight > FW_MEDIUM) {
+ basefont += ",Bold";
+ } else if (pLogFont->lfItalic) {
+ basefont += ",Italic";
+ }
+ pBaseDict->SetAtName("Subtype", "TrueType");
+ pBaseDict->SetAtName("BaseFont", basefont);
+ pBaseDict->SetAtNumber("FirstChar", 32);
+ pBaseDict->SetAtNumber("LastChar", 255);
+ int char_widths[224];
+ GetCharWidth(hDC, 32, 255, char_widths);
+ CPDF_Array* pWidths = new CPDF_Array;
+ for (int i = 0; i < 224; i++) {
+ pWidths->AddInteger(char_widths[i]);
+ }
+ pBaseDict->SetAt("Widths", pWidths);
+ } else {
+ flags |= PDFFONT_NONSYMBOLIC;
+ pFontDict = new CPDF_Dictionary;
+ CFX_ByteString cmap;
+ CFX_ByteString ordering;
+ int supplement;
+ CPDF_Array* pWidthArray = new CPDF_Array;
+ switch (pLogFont->lfCharSet) {
+ case CHINESEBIG5_CHARSET:
+ cmap = bVert ? "ETenms-B5-V" : "ETenms-B5-H";
+ ordering = "CNS1";
+ supplement = 4;
+ pWidthArray->AddInteger(1);
+ _InsertWidthArray(hDC, 0x20, 0x7e, pWidthArray);
+ break;
+ case GB2312_CHARSET:
+ cmap = bVert ? "GBK-EUC-V" : "GBK-EUC-H";
+ ordering = "GB1", supplement = 2;
+ pWidthArray->AddInteger(7716);
+ _InsertWidthArray(hDC, 0x20, 0x20, pWidthArray);
+ pWidthArray->AddInteger(814);
+ _InsertWidthArray(hDC, 0x21, 0x7e, pWidthArray);
+ break;
+ case HANGEUL_CHARSET:
+ cmap = bVert ? "KSCms-UHC-V" : "KSCms-UHC-H";
+ ordering = "Korea1";
+ supplement = 2;
+ pWidthArray->AddInteger(1);
+ _InsertWidthArray(hDC, 0x20, 0x7e, pWidthArray);
+ break;
+ case SHIFTJIS_CHARSET:
+ cmap = bVert ? "90ms-RKSJ-V" : "90ms-RKSJ-H";
+ ordering = "Japan1";
+ supplement = 5;
+ pWidthArray->AddInteger(231);
+ _InsertWidthArray(hDC, 0x20, 0x7d, pWidthArray);
+ pWidthArray->AddInteger(326);
+ _InsertWidthArray(hDC, 0xa0, 0xa0, pWidthArray);
+ pWidthArray->AddInteger(327);
+ _InsertWidthArray(hDC, 0xa1, 0xdf, pWidthArray);
+ pWidthArray->AddInteger(631);
+ _InsertWidthArray(hDC, 0x7e, 0x7e, pWidthArray);
+ break;
+ }
+ pBaseDict->SetAtName("Subtype", "Type0");
+ pBaseDict->SetAtName("BaseFont", basefont);
+ pBaseDict->SetAtName("Encoding", cmap);
+ pFontDict->SetAt("W", pWidthArray);
+ pFontDict->SetAtName("Type", "Font");
+ pFontDict->SetAtName("Subtype", "CIDFontType2");
+ pFontDict->SetAtName("BaseFont", basefont);
+ CPDF_Dictionary* pCIDSysInfo = new CPDF_Dictionary;
+ pCIDSysInfo->SetAtString("Registry", "Adobe");
+ pCIDSysInfo->SetAtString("Ordering", ordering);
+ pCIDSysInfo->SetAtInteger("Supplement", supplement);
+ pFontDict->SetAt("CIDSystemInfo", pCIDSysInfo);
+ CPDF_Array* pArray = new CPDF_Array;
+ pBaseDict->SetAt("DescendantFonts", pArray);
+ AddIndirectObject(pFontDict);
+ pArray->AddReference(this, pFontDict);
+ }
+ AddIndirectObject(pBaseDict);
+ CPDF_Dictionary* pFontDesc = new CPDF_Dictionary;
+ pFontDesc->SetAtName("Type", "FontDescriptor");
+ pFontDesc->SetAtName("FontName", basefont);
+ pFontDesc->SetAtInteger("Flags", flags);
+ CPDF_Array* pBBox = new CPDF_Array;
+ for (int i = 0; i < 4; i++) {
+ pBBox->AddInteger(bbox[i]);
+ }
+ pFontDesc->SetAt("FontBBox", pBBox);
+ pFontDesc->SetAtInteger("ItalicAngle", italicangle);
+ pFontDesc->SetAtInteger("Ascent", ascend);
+ pFontDesc->SetAtInteger("Descent", descend);
+ pFontDesc->SetAtInteger("CapHeight", capheight);
+ pFontDesc->SetAtInteger("StemV", pLogFont->lfWeight / 5);
+ AddIndirectObject(pFontDesc);
+ pFontDict->SetAtReference("FontDescriptor", this, pFontDesc);
+ hFont = SelectObject(hDC, hFont);
+ DeleteObject(hFont);
+ DeleteDC(hDC);
+ return LoadFont(pBaseDict);
+}
+#endif
+
+#if (_FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_)
+uint32_t FX_GetLangHashCode(const FX_CHAR* pStr) {
+ FXSYS_assert(pStr);
+ int32_t iLength = FXSYS_strlen(pStr);
+ const FX_CHAR* pStrEnd = pStr + iLength;
+ uint32_t uHashCode = 0;
+ while (pStr < pStrEnd) {
+ uHashCode = 31 * uHashCode + tolower(*pStr++);
+ }
+ return uHashCode;
+}
+struct FX_LANG2CS {
+ FX_DWORD uLang;
+ int uCharset;
+} * FX_LPLANG2CS;
+static const FX_LANG2CS gs_FXLang2CharsetTable[] = {
+ {3109, 0}, {3121, 178}, {3129, 162}, {3139, 204}, {3141, 204},
+ {3166, 0}, {3184, 238}, {3197, 0}, {3201, 0}, {3239, 161},
+ {3241, 0}, {3246, 0}, {3247, 186}, {3248, 0}, {3259, 178},
+ {3267, 0}, {3273, 0}, {3276, 0}, {3301, 0}, {3310, 1},
+ {3325, 177}, {3329, 1}, {3338, 238}, {3341, 238}, {3345, 1},
+ {3355, 0}, {3370, 0}, {3371, 0}, {3383, 128}, {3424, 204},
+ {3427, 1}, {3428, 129}, {3436, 178}, {3464, 186}, {3466, 186},
+ {3486, 204}, {3487, 0}, {3493, 1}, {3494, 0}, {3508, 0},
+ {3518, 0}, {3520, 0}, {3569, 1}, {3580, 238}, {3588, 0},
+ {3645, 238}, {3651, 204}, {3672, 238}, {3673, 238}, {3678, 238},
+ {3679, 238}, {3683, 0}, {3684, 0}, {3693, 1}, {3697, 1},
+ {3700, 222}, {3710, 162}, {3734, 204}, {3741, 178}, {3749, 162},
+ {3763, 163}, {3886, 134}, {105943, 0}, {106375, 1}, {3923451837, 134},
+ {3923451838, 136},
+};
+static FX_WORD FX_GetCsFromLangCode(uint32_t uCode) {
+ int32_t iStart = 0;
+ int32_t iEnd = sizeof(gs_FXLang2CharsetTable) / sizeof(FX_LANG2CS) - 1;
+ while (iStart <= iEnd) {
+ int32_t iMid = (iStart + iEnd) / 2;
+ const FX_LANG2CS& charset = gs_FXLang2CharsetTable[iMid];
+ if (uCode == charset.uLang) {
+ return charset.uCharset;
+ }
+ if (uCode < charset.uLang) {
+ iEnd = iMid - 1;
+ } else {
+ iStart = iMid + 1;
+ }
+ }
+ return 0;
+}
+static FX_WORD FX_GetCharsetFromLang(const FX_CHAR* pLang, int32_t iLength) {
+ FXSYS_assert(pLang);
+ if (iLength < 0) {
+ iLength = FXSYS_strlen(pLang);
+ }
+ uint32_t uHash = FX_GetLangHashCode(pLang);
+ return FX_GetCsFromLangCode(uHash);
+}
+static void _CFString2CFXByteString(CFStringRef src, CFX_ByteString& dest) {
+ SInt32 len = CFStringGetLength(src);
+ CFRange range = CFRangeMake(0, len);
+ CFIndex used = 0;
+ UInt8* pBuffer = (UInt8*)calloc(len + 1, sizeof(UInt8));
+ CFStringGetBytes(src, range, kCFStringEncodingASCII, 0, false, pBuffer, len,
+ &used);
+ dest = (FX_CHAR*)pBuffer;
+ free(pBuffer);
+}
+FX_BOOL IsHasCharSet(CFArrayRef languages, const CFX_DWordArray& charSets) {
+ int iCount = charSets.GetSize();
+ for (int i = 0; i < CFArrayGetCount(languages); ++i) {
+ CFStringRef language = (CFStringRef)CFArrayGetValueAtIndex(languages, i);
+ FX_DWORD CharSet = FX_GetCharsetFromLang(
+ CFStringGetCStringPtr(language, kCFStringEncodingMacRoman), -1);
+ for (int j = 0; j < iCount; ++j) {
+ if (CharSet == charSets[j]) {
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+void FX_GetCharWidth(CTFontRef font, UniChar start, UniChar end, int* width) {
+ CGFloat size = CTFontGetSize(font);
+ for (; start <= end; ++start) {
+ CGGlyph pGlyph = 0;
+ CFIndex count = 1;
+ CTFontGetGlyphsForCharacters(font, &start, &pGlyph, count);
+ CGSize advances;
+ CTFontGetAdvancesForGlyphs(font, kCTFontDefaultOrientation, &pGlyph,
+ &advances, 1);
+ *width = (int)(advances.width / size * 1000);
+ width++;
+ }
+}
+static void _InsertWidthArray(CTFontRef font,
+ int start,
+ int end,
+ CPDF_Array* pWidthArray) {
+ int size = end - start + 1;
+ int* widths = FX_Alloc(int, size);
+ FX_GetCharWidth(font, start, end, widths);
+ int i;
+ for (i = 1; i < size; i++)
+ if (widths[i] != *widths) {
+ break;
+ }
+ if (i == size) {
+ int first = pWidthArray->GetIntegerAt(pWidthArray->GetCount() - 1);
+ pWidthArray->AddInteger(first + size - 1);
+ pWidthArray->AddInteger(*widths);
+ } else {
+ CPDF_Array* pWidthArray1 = new CPDF_Array;
+ pWidthArray->Add(pWidthArray1);
+ for (i = 0; i < size; i++) {
+ pWidthArray1->AddInteger(widths[i]);
+ }
+ }
+ FX_Free(widths);
+}
+CPDF_Font* CPDF_Document::AddMacFont(CTFontRef pFont,
+ FX_BOOL bVert,
+ FX_BOOL bTranslateName) {
+ CTFontRef font = (CTFontRef)pFont;
+ CTFontDescriptorRef descriptor = CTFontCopyFontDescriptor(font);
+ if (!descriptor) {
+ return NULL;
+ }
+ CFX_ByteString basefont;
+ FX_BOOL bCJK = FALSE;
+ int flags = 0, italicangle = 0, ascend = 0, descend = 0, capheight = 0,
+ bbox[4];
+ FXSYS_memset(bbox, 0, sizeof(int) * 4);
+ CFArrayRef languages = (CFArrayRef)CTFontDescriptorCopyAttribute(
+ descriptor, kCTFontLanguagesAttribute);
+ if (!languages) {
+ CFRelease(descriptor);
+ return NULL;
+ }
+ CFX_DWordArray charSets;
+ charSets.Add(FXFONT_CHINESEBIG5_CHARSET);
+ charSets.Add(FXFONT_GB2312_CHARSET);
+ charSets.Add(FXFONT_HANGEUL_CHARSET);
+ charSets.Add(FXFONT_SHIFTJIS_CHARSET);
+ if (IsHasCharSet(languages, charSets)) {
+ bCJK = TRUE;
+ }
+ CFRelease(descriptor);
+ CFDictionaryRef traits = (CFDictionaryRef)CTFontCopyTraits(font);
+ if (!traits) {
+ CFRelease(languages);
+ return NULL;
+ }
+ CFNumberRef sybolicTrait =
+ (CFNumberRef)CFDictionaryGetValue(traits, kCTFontSymbolicTrait);
+ CTFontSymbolicTraits trait = 0;
+ CFNumberGetValue(sybolicTrait, kCFNumberSInt32Type, &trait);
+ if (trait & kCTFontItalicTrait) {
+ flags |= PDFFONT_ITALIC;
+ }
+ if (trait & kCTFontMonoSpaceTrait) {
+ flags |= PDFFONT_FIXEDPITCH;
+ }
+ if (trait & kCTFontModernSerifsClass) {
+ flags |= PDFFONT_SERIF;
+ }
+ if (trait & kCTFontScriptsClass) {
+ flags |= PDFFONT_SCRIPT;
+ }
+ CFNumberRef weightTrait =
+ (CFNumberRef)CFDictionaryGetValue(traits, kCTFontWeightTrait);
+ Float32 weight = 0;
+ CFNumberGetValue(weightTrait, kCFNumberFloat32Type, &weight);
+ italicangle = CTFontGetSlantAngle(font);
+ ascend = CTFontGetAscent(font);
+ descend = CTFontGetDescent(font);
+ capheight = CTFontGetCapHeight(font);
+ CGRect box = CTFontGetBoundingBox(font);
+ bbox[0] = box.origin.x;
+ bbox[1] = box.origin.y;
+ bbox[2] = box.origin.x + box.size.width;
+ bbox[3] = box.origin.y + box.size.height;
+ if (bTranslateName && bCJK) {
+ CFStringRef postName = CTFontCopyPostScriptName(font);
+ _CFString2CFXByteString(postName, basefont);
+ CFRelease(postName);
+ }
+ if (basefont.IsEmpty()) {
+ CFStringRef fullName = CTFontCopyFullName(font);
+ _CFString2CFXByteString(fullName, basefont);
+ CFRelease(fullName);
+ }
+ basefont.Replace(" ", "");
+ CPDF_Dictionary* pBaseDict = new CPDF_Dictionary;
+ CPDF_Dictionary* pFontDict = pBaseDict;
+ if (!bCJK) {
+ charSets.RemoveAll();
+ charSets.Add(FXFONT_ANSI_CHARSET);
+ charSets.Add(FXFONT_DEFAULT_CHARSET);
+ charSets.Add(FXFONT_SYMBOL_CHARSET);
+ if (IsHasCharSet(languages, charSets)) {
+ charSets.RemoveAll();
+ charSets.Add(FXFONT_SYMBOL_CHARSET);
+ if (IsHasCharSet(languages, charSets)) {
+ flags |= PDFFONT_SYMBOLIC;
+ } else {
+ flags |= PDFFONT_NONSYMBOLIC;
+ }
+ pBaseDict->SetAtName("Encoding", "WinAnsiEncoding");
+ } else {
+ flags |= PDFFONT_NONSYMBOLIC;
+ size_t i;
+ for (i = 0; i < sizeof g_FX_CharsetUnicodes / sizeof(FX_CharsetUnicodes);
+ i++) {
+ charSets.RemoveAll();
+ charSets.Add(g_FX_CharsetUnicodes[i].m_Charset);
+ if (IsHasCharSet(languages, charSets)) {
+ break;
+ }
+ }
+ if (i < sizeof g_FX_CharsetUnicodes / sizeof(FX_CharsetUnicodes)) {
+ CPDF_Dictionary* pEncoding = new CPDF_Dictionary;
+ pEncoding->SetAtName("BaseEncoding", "WinAnsiEncoding");
+ CPDF_Array* pArray = new CPDF_Array;
+ pArray->AddInteger(128);
+ const FX_WCHAR* pUnicodes = g_FX_CharsetUnicodes[i].m_pUnicodes;
+ for (int j = 0; j < 128; j++) {
+ CFX_ByteString name = PDF_AdobeNameFromUnicode(pUnicodes[j]);
+ if (name.IsEmpty()) {
+ pArray->AddName(".notdef");
+ } else {
+ pArray->AddName(name);
+ }
+ }
+ pEncoding->SetAt("Differences", pArray);
+ AddIndirectObject(pEncoding);
+ pBaseDict->SetAtReference("Encoding", this, pEncoding);
+ }
+ }
+ if (weight > 0.0 && trait & kCTFontItalicTrait) {
+ basefont += ",BoldItalic";
+ } else if (weight > 0.0) {
+ basefont += ",Bold";
+ } else if (trait & kCTFontItalicTrait) {
+ basefont += ",Italic";
+ }
+ pBaseDict->SetAtName("Subtype", "TrueType");
+ pBaseDict->SetAtName("BaseFont", basefont);
+ pBaseDict->SetAtNumber("FirstChar", 32);
+ pBaseDict->SetAtNumber("LastChar", 255);
+ int char_widths[224];
+ FX_GetCharWidth(font, 32, 255, char_widths);
+ CPDF_Array* pWidths = new CPDF_Array;
+ for (int i = 0; i < 224; i++) {
+ pWidths->AddInteger(char_widths[i]);
+ }
+ pBaseDict->SetAt("Widths", pWidths);
+ } else {
+ flags |= PDFFONT_NONSYMBOLIC;
+ CPDF_Array* pArray = NULL;
+ pFontDict = new CPDF_Dictionary;
+ CFX_ByteString cmap;
+ CFX_ByteString ordering;
+ int supplement;
+ FX_BOOL bFound = FALSE;
+ CPDF_Array* pWidthArray = new CPDF_Array;
+ charSets.RemoveAll();
+ charSets.Add(FXFONT_CHINESEBIG5_CHARSET);
+ if (IsHasCharSet(languages, charSets)) {
+ cmap = bVert ? "ETenms-B5-V" : "ETenms-B5-H";
+ ordering = "CNS1";
+ supplement = 4;
+ pWidthArray->AddInteger(1);
+ _InsertWidthArray(font, 0x20, 0x7e, pWidthArray);
+ bFound = TRUE;
+ }
+ charSets.RemoveAll();
+ charSets.Add(FXFONT_GB2312_CHARSET);
+ if (!bFound && IsHasCharSet(languages, charSets)) {
+ cmap = bVert ? "GBK-EUC-V" : "GBK-EUC-H";
+ ordering = "GB1", supplement = 2;
+ pWidthArray->AddInteger(7716);
+ _InsertWidthArray(font, 0x20, 0x20, pWidthArray);
+ pWidthArray->AddInteger(814);
+ _InsertWidthArray(font, 0x21, 0x7e, pWidthArray);
+ bFound = TRUE;
+ }
+ charSets.RemoveAll();
+ charSets.Add(FXFONT_HANGEUL_CHARSET);
+ if (!bFound && IsHasCharSet(languages, charSets)) {
+ cmap = bVert ? "KSCms-UHC-V" : "KSCms-UHC-H";
+ ordering = "Korea1";
+ supplement = 2;
+ pWidthArray->AddInteger(1);
+ _InsertWidthArray(font, 0x20, 0x7e, pWidthArray);
+ bFound = TRUE;
+ }
+ charSets.RemoveAll();
+ charSets.Add(FXFONT_SHIFTJIS_CHARSET);
+ if (!bFound && IsHasCharSet(languages, charSets)) {
+ cmap = bVert ? "90ms-RKSJ-V" : "90ms-RKSJ-H";
+ ordering = "Japan1";
+ supplement = 5;
+ pWidthArray->AddInteger(231);
+ _InsertWidthArray(font, 0x20, 0x7d, pWidthArray);
+ pWidthArray->AddInteger(326);
+ _InsertWidthArray(font, 0xa0, 0xa0, pWidthArray);
+ pWidthArray->AddInteger(327);
+ _InsertWidthArray(font, 0xa1, 0xdf, pWidthArray);
+ pWidthArray->AddInteger(631);
+ _InsertWidthArray(font, 0x7e, 0x7e, pWidthArray);
+ }
+ pBaseDict->SetAtName("Subtype", "Type0");
+ pBaseDict->SetAtName("BaseFont", basefont);
+ pBaseDict->SetAtName("Encoding", cmap);
+ pFontDict->SetAt("W", pWidthArray);
+ pFontDict->SetAtName("Type", "Font");
+ pFontDict->SetAtName("Subtype", "CIDFontType2");
+ pFontDict->SetAtName("BaseFont", basefont);
+ CPDF_Dictionary* pCIDSysInfo = new CPDF_Dictionary;
+ pCIDSysInfo->SetAtString("Registry", "Adobe");
+ pCIDSysInfo->SetAtString("Ordering", ordering);
+ pCIDSysInfo->SetAtInteger("Supplement", supplement);
+ pFontDict->SetAt("CIDSystemInfo", pCIDSysInfo);
+ pArray = new CPDF_Array;
+ pBaseDict->SetAt("DescendantFonts", pArray);
+ AddIndirectObject(pFontDict);
+ pArray->AddReference(this, pFontDict);
+ }
+ AddIndirectObject(pBaseDict);
+ CPDF_Dictionary* pFontDesc = new CPDF_Dictionary;
+ pFontDesc->SetAtName("Type", "FontDescriptor");
+ pFontDesc->SetAtName("FontName", basefont);
+ pFontDesc->SetAtInteger("Flags", flags);
+ CPDF_Array* pBBox = new CPDF_Array;
+ for (int i = 0; i < 4; i++) {
+ pBBox->AddInteger(bbox[i]);
+ }
+ pFontDesc->SetAt("FontBBox", pBBox);
+ pFontDesc->SetAtInteger("ItalicAngle", italicangle);
+ pFontDesc->SetAtInteger("Ascent", ascend);
+ pFontDesc->SetAtInteger("Descent", descend);
+ pFontDesc->SetAtInteger("CapHeight", capheight);
+ CGFloat fStemV = 0;
+ int16_t min_width = SHRT_MAX;
+
+ static const UniChar stem_chars[] = {'i', 'I', '!', '1'};
+ CGGlyph glyphs[FX_ArraySize(stem_chars)];
+ CGRect boundingRects[FX_ArraySize(stem_chars)];
+
+ const size_t count = FX_ArraySize(stem_chars);
+ if (CTFontGetGlyphsForCharacters(font, stem_chars, glyphs, count)) {
+ CTFontGetBoundingRectsForGlyphs(font, kCTFontHorizontalOrientation, glyphs,
+ boundingRects, count);
+ for (size_t i = 0; i < count; i++) {
+ int16_t width = boundingRects[i].size.width;
+ if (width > 0 && width < min_width) {
+ min_width = width;
+ fStemV = min_width;
+ }
+ }
+ }
+ pFontDesc->SetAtInteger("StemV", fStemV);
+ AddIndirectObject(pFontDesc);
+ pFontDict->SetAtReference("FontDescriptor", this, pFontDesc);
+ CFRelease(traits);
+ CFRelease(languages);
+ return LoadFont(pBaseDict);
+}
+#endif // (_FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_)
+
+static void _InsertWidthArray1(CFX_Font* pFont,
+ CFX_UnicodeEncoding* pEncoding,
+ FX_WCHAR start,
+ FX_WCHAR end,
+ CPDF_Array* pWidthArray) {
+ int size = end - start + 1;
+ int* widths = FX_Alloc(int, size);
+ int i;
+ for (i = 0; i < size; i++) {
+ int glyph_index = pEncoding->GlyphFromCharCode(start + i);
+ widths[i] = pFont->GetGlyphWidth(glyph_index);
+ }
+ for (i = 1; i < size; i++)
+ if (widths[i] != *widths) {
+ break;
+ }
+ if (i == size) {
+ int first = pWidthArray->GetIntegerAt(pWidthArray->GetCount() - 1);
+ pWidthArray->AddInteger(first + size - 1);
+ pWidthArray->AddInteger(*widths);
+ } else {
+ CPDF_Array* pWidthArray1 = new CPDF_Array;
+ pWidthArray->Add(pWidthArray1);
+ for (i = 0; i < size; i++) {
+ pWidthArray1->AddInteger(widths[i]);
+ }
+ }
+ FX_Free(widths);
+}
+
+CPDF_Font* CPDF_Document::AddFont(CFX_Font* pFont, int charset, FX_BOOL bVert) {
+ if (!pFont) {
+ return NULL;
+ }
+ bool bCJK = charset == FXFONT_CHINESEBIG5_CHARSET ||
+ charset == FXFONT_GB2312_CHARSET ||
+ charset == FXFONT_HANGEUL_CHARSET ||
+ charset == FXFONT_SHIFTJIS_CHARSET;
+ CFX_ByteString basefont = pFont->GetFamilyName();
+ basefont.Replace(" ", "");
+ int flags = 0;
+ if (pFont->IsBold()) {
+ flags |= PDFFONT_FORCEBOLD;
+ }
+ if (pFont->IsItalic()) {
+ flags |= PDFFONT_ITALIC;
+ }
+ if (pFont->IsFixedWidth()) {
+ flags |= PDFFONT_FIXEDPITCH;
+ }
+ CPDF_Dictionary* pBaseDict = new CPDF_Dictionary;
+ pBaseDict->SetAtName("Type", "Font");
+ std::unique_ptr<CFX_UnicodeEncoding> pEncoding(
+ new CFX_UnicodeEncoding(pFont));
+ CPDF_Dictionary* pFontDict = pBaseDict;
+ if (!bCJK) {
+ CPDF_Array* pWidths = new CPDF_Array;
+ int charcode;
+ for (charcode = 32; charcode < 128; charcode++) {
+ int glyph_index = pEncoding->GlyphFromCharCode(charcode);
+ int char_width = pFont->GetGlyphWidth(glyph_index);
+ pWidths->AddInteger(char_width);
+ }
+ if (charset == FXFONT_ANSI_CHARSET || charset == FXFONT_DEFAULT_CHARSET ||
+ charset == FXFONT_SYMBOL_CHARSET) {
+ if (charset == FXFONT_SYMBOL_CHARSET) {
+ flags |= PDFFONT_SYMBOLIC;
+ } else {
+ flags |= PDFFONT_NONSYMBOLIC;
+ }
+ pBaseDict->SetAtName("Encoding", "WinAnsiEncoding");
+ for (charcode = 128; charcode <= 255; charcode++) {
+ int glyph_index = pEncoding->GlyphFromCharCode(charcode);
+ int char_width = pFont->GetGlyphWidth(glyph_index);
+ pWidths->AddInteger(char_width);
+ }
+ } else {
+ flags |= PDFFONT_NONSYMBOLIC;
+ size_t i;
+ for (i = 0; i < sizeof g_FX_CharsetUnicodes / sizeof(FX_CharsetUnicodes);
+ i++)
+ if (g_FX_CharsetUnicodes[i].m_Charset == charset) {
+ break;
+ }
+ if (i < sizeof g_FX_CharsetUnicodes / sizeof(FX_CharsetUnicodes)) {
+ CPDF_Dictionary* pEncodingDict = new CPDF_Dictionary;
+ pEncodingDict->SetAtName("BaseEncoding", "WinAnsiEncoding");
+ CPDF_Array* pArray = new CPDF_Array;
+ pArray->AddInteger(128);
+ const FX_WCHAR* pUnicodes = g_FX_CharsetUnicodes[i].m_pUnicodes;
+ for (int j = 0; j < 128; j++) {
+ CFX_ByteString name = PDF_AdobeNameFromUnicode(pUnicodes[j]);
+ if (name.IsEmpty()) {
+ pArray->AddName(".notdef");
+ } else {
+ pArray->AddName(name);
+ }
+ int glyph_index = pEncoding->GlyphFromCharCode(pUnicodes[j]);
+ int char_width = pFont->GetGlyphWidth(glyph_index);
+ pWidths->AddInteger(char_width);
+ }
+ pEncodingDict->SetAt("Differences", pArray);
+ AddIndirectObject(pEncodingDict);
+ pBaseDict->SetAtReference("Encoding", this, pEncodingDict);
+ }
+ }
+ if (pFont->IsBold() && pFont->IsItalic()) {
+ basefont += ",BoldItalic";
+ } else if (pFont->IsBold()) {
+ basefont += ",Bold";
+ } else if (pFont->IsItalic()) {
+ basefont += ",Italic";
+ }
+ pBaseDict->SetAtName("Subtype", "TrueType");
+ pBaseDict->SetAtName("BaseFont", basefont);
+ pBaseDict->SetAtNumber("FirstChar", 32);
+ pBaseDict->SetAtNumber("LastChar", 255);
+ pBaseDict->SetAt("Widths", pWidths);
+ } else {
+ flags |= PDFFONT_NONSYMBOLIC;
+ pFontDict = new CPDF_Dictionary;
+ CFX_ByteString cmap;
+ CFX_ByteString ordering;
+ int supplement;
+ CPDF_Array* pWidthArray = new CPDF_Array;
+ switch (charset) {
+ case FXFONT_CHINESEBIG5_CHARSET:
+ cmap = bVert ? "ETenms-B5-V" : "ETenms-B5-H";
+ ordering = "CNS1";
+ supplement = 4;
+ pWidthArray->AddInteger(1);
+ _InsertWidthArray1(pFont, pEncoding.get(), 0x20, 0x7e, pWidthArray);
+ break;
+ case FXFONT_GB2312_CHARSET:
+ cmap = bVert ? "GBK-EUC-V" : "GBK-EUC-H";
+ ordering = "GB1", supplement = 2;
+ pWidthArray->AddInteger(7716);
+ _InsertWidthArray1(pFont, pEncoding.get(), 0x20, 0x20, pWidthArray);
+ pWidthArray->AddInteger(814);
+ _InsertWidthArray1(pFont, pEncoding.get(), 0x21, 0x7e, pWidthArray);
+ break;
+ case FXFONT_HANGEUL_CHARSET:
+ cmap = bVert ? "KSCms-UHC-V" : "KSCms-UHC-H";
+ ordering = "Korea1";
+ supplement = 2;
+ pWidthArray->AddInteger(1);
+ _InsertWidthArray1(pFont, pEncoding.get(), 0x20, 0x7e, pWidthArray);
+ break;
+ case FXFONT_SHIFTJIS_CHARSET:
+ cmap = bVert ? "90ms-RKSJ-V" : "90ms-RKSJ-H";
+ ordering = "Japan1";
+ supplement = 5;
+ pWidthArray->AddInteger(231);
+ _InsertWidthArray1(pFont, pEncoding.get(), 0x20, 0x7d, pWidthArray);
+ pWidthArray->AddInteger(326);
+ _InsertWidthArray1(pFont, pEncoding.get(), 0xa0, 0xa0, pWidthArray);
+ pWidthArray->AddInteger(327);
+ _InsertWidthArray1(pFont, pEncoding.get(), 0xa1, 0xdf, pWidthArray);
+ pWidthArray->AddInteger(631);
+ _InsertWidthArray1(pFont, pEncoding.get(), 0x7e, 0x7e, pWidthArray);
+ break;
+ }
+ pBaseDict->SetAtName("Subtype", "Type0");
+ pBaseDict->SetAtName("BaseFont", basefont);
+ pBaseDict->SetAtName("Encoding", cmap);
+ pFontDict->SetAt("W", pWidthArray);
+ pFontDict->SetAtName("Type", "Font");
+ pFontDict->SetAtName("Subtype", "CIDFontType2");
+ pFontDict->SetAtName("BaseFont", basefont);
+ CPDF_Dictionary* pCIDSysInfo = new CPDF_Dictionary;
+ pCIDSysInfo->SetAtString("Registry", "Adobe");
+ pCIDSysInfo->SetAtString("Ordering", ordering);
+ pCIDSysInfo->SetAtInteger("Supplement", supplement);
+ pFontDict->SetAt("CIDSystemInfo", pCIDSysInfo);
+ CPDF_Array* pArray = new CPDF_Array;
+ pBaseDict->SetAt("DescendantFonts", pArray);
+ AddIndirectObject(pFontDict);
+ pArray->AddReference(this, pFontDict);
+ }
+ AddIndirectObject(pBaseDict);
+ CPDF_Dictionary* pFontDesc = new CPDF_Dictionary;
+ pFontDesc->SetAtName("Type", "FontDescriptor");
+ pFontDesc->SetAtName("FontName", basefont);
+ pFontDesc->SetAtInteger("Flags", flags);
+ pFontDesc->SetAtInteger(
+ "ItalicAngle",
+ pFont->GetSubstFont() ? pFont->GetSubstFont()->m_ItalicAngle : 0);
+ pFontDesc->SetAtInteger("Ascent", pFont->GetAscent());
+ pFontDesc->SetAtInteger("Descent", pFont->GetDescent());
+ FX_RECT bbox;
+ pFont->GetBBox(bbox);
+ CPDF_Array* pBBox = new CPDF_Array;
+ pBBox->AddInteger(bbox.left);
+ pBBox->AddInteger(bbox.bottom);
+ pBBox->AddInteger(bbox.right);
+ pBBox->AddInteger(bbox.top);
+ pFontDesc->SetAt("FontBBox", pBBox);
+ int32_t nStemV = 0;
+ if (pFont->GetSubstFont()) {
+ nStemV = pFont->GetSubstFont()->m_Weight / 5;
+ } else {
+ static const FX_CHAR stem_chars[] = {'i', 'I', '!', '1'};
+ const size_t count = sizeof(stem_chars) / sizeof(stem_chars[0]);
+ FX_DWORD glyph = pEncoding->GlyphFromCharCode(stem_chars[0]);
+ nStemV = pFont->GetGlyphWidth(glyph);
+ for (size_t i = 1; i < count; i++) {
+ glyph = pEncoding->GlyphFromCharCode(stem_chars[i]);
+ int width = pFont->GetGlyphWidth(glyph);
+ if (width > 0 && width < nStemV) {
+ nStemV = width;
+ }
+ }
+ }
+ pFontDesc->SetAtInteger("StemV", nStemV);
+ AddIndirectObject(pFontDesc);
+ pFontDict->SetAtReference("FontDescriptor", this, pFontDesc);
+ return LoadFont(pBaseDict);
+}
+static int InsertDeletePDFPage(CPDF_Document* pDoc,
+ CPDF_Dictionary* pPages,
+ int nPagesToGo,
+ CPDF_Dictionary* pPage,
+ FX_BOOL bInsert,
+ CFX_ArrayTemplate<CPDF_Dictionary*>& stackList) {
+ CPDF_Array* pKidList = pPages->GetArrayBy("Kids");
+ if (!pKidList) {
+ return -1;
+ }
+ int nKids = pKidList->GetCount();
+ for (int i = 0; i < nKids; i++) {
+ CPDF_Dictionary* pKid = pKidList->GetDictAt(i);
+ if (pKid->GetStringBy("Type") == "Page") {
+ if (nPagesToGo == 0) {
+ if (bInsert) {
+ pKidList->InsertAt(i, new CPDF_Reference(pDoc, pPage->GetObjNum()));
+ pPage->SetAtReference("Parent", pDoc, pPages->GetObjNum());
+ } else {
+ pKidList->RemoveAt(i);
+ }
+ pPages->SetAtInteger(
+ "Count", pPages->GetIntegerBy("Count") + (bInsert ? 1 : -1));
+ return 1;
+ }
+ nPagesToGo--;
+ } else {
+ int nPages = pKid->GetIntegerBy("Count");
+ if (nPagesToGo < nPages) {
+ int stackCount = stackList.GetSize();
+ for (int j = 0; j < stackCount; ++j) {
+ if (pKid == stackList[j]) {
+ return -1;
+ }
+ }
+ stackList.Add(pKid);
+ if (InsertDeletePDFPage(pDoc, pKid, nPagesToGo, pPage, bInsert,
+ stackList) < 0) {
+ return -1;
+ }
+ stackList.RemoveAt(stackCount);
+ pPages->SetAtInteger(
+ "Count", pPages->GetIntegerBy("Count") + (bInsert ? 1 : -1));
+ return 1;
+ }
+ nPagesToGo -= nPages;
+ }
+ }
+ return 0;
+}
+static int InsertNewPage(CPDF_Document* pDoc,
+ int iPage,
+ CPDF_Dictionary* pPageDict,
+ CFX_DWordArray& pageList) {
+ CPDF_Dictionary* pRoot = pDoc->GetRoot();
+ if (!pRoot) {
+ return -1;
+ }
+ CPDF_Dictionary* pPages = pRoot->GetDictBy("Pages");
+ if (!pPages) {
+ return -1;
+ }
+ int nPages = pDoc->GetPageCount();
+ if (iPage < 0 || iPage > nPages) {
+ return -1;
+ }
+ if (iPage == nPages) {
+ CPDF_Array* pPagesList = pPages->GetArrayBy("Kids");
+ if (!pPagesList) {
+ pPagesList = new CPDF_Array;
+ pPages->SetAt("Kids", pPagesList);
+ }
+ pPagesList->Add(pPageDict, pDoc);
+ pPages->SetAtInteger("Count", nPages + 1);
+ pPageDict->SetAtReference("Parent", pDoc, pPages->GetObjNum());
+ } else {
+ CFX_ArrayTemplate<CPDF_Dictionary*> stack;
+ stack.Add(pPages);
+ if (InsertDeletePDFPage(pDoc, pPages, iPage, pPageDict, TRUE, stack) < 0) {
+ return -1;
+ }
+ }
+ pageList.InsertAt(iPage, pPageDict->GetObjNum());
+ return iPage;
+}
+CPDF_Dictionary* CPDF_Document::CreateNewPage(int iPage) {
+ CPDF_Dictionary* pDict = new CPDF_Dictionary;
+ pDict->SetAtName("Type", "Page");
+ FX_DWORD dwObjNum = AddIndirectObject(pDict);
+ if (InsertNewPage(this, iPage, pDict, m_PageList) < 0) {
+ ReleaseIndirectObject(dwObjNum);
+ return NULL;
+ }
+ return pDict;
+}
+
+CPDF_Font* CPDF_Document::AddStandardFont(const FX_CHAR* font,
+ CPDF_FontEncoding* pEncoding) {
+ CFX_ByteString name(font);
+ if (PDF_GetStandardFontName(&name) < 0)
+ return nullptr;
+ return GetPageData()->GetStandardFont(name, pEncoding);
+}
+
+void CPDF_Document::DeletePage(int iPage) {
+ CPDF_Dictionary* pRoot = GetRoot();
+ if (!pRoot) {
+ return;
+ }
+ CPDF_Dictionary* pPages = pRoot->GetDictBy("Pages");
+ if (!pPages) {
+ return;
+ }
+ int nPages = pPages->GetIntegerBy("Count");
+ if (iPage < 0 || iPage >= nPages) {
+ return;
+ }
+ CFX_ArrayTemplate<CPDF_Dictionary*> stack;
+ stack.Add(pPages);
+ if (InsertDeletePDFPage(this, pPages, iPage, NULL, FALSE, stack) < 0) {
+ return;
+ }
+ m_PageList.RemoveAt(iPage);
+}
+CPDF_Object* FPDFAPI_GetPageAttr(CPDF_Dictionary* pPageDict,
+ const CFX_ByteStringC& name);
+void FPDFAPI_FlatPageAttr(CPDF_Dictionary* pPageDict,
+ const CFX_ByteStringC& name) {
+ if (pPageDict->KeyExist(name)) {
+ return;
+ }
+ CPDF_Object* pObj = FPDFAPI_GetPageAttr(pPageDict, name);
+ if (pObj) {
+ pPageDict->SetAt(name, pObj->Clone());
+ }
+}
diff --git a/core/fpdfapi/fpdf_edit/fpdf_edit_image.cpp b/core/fpdfapi/fpdf_edit/fpdf_edit_image.cpp
new file mode 100644
index 0000000000..f3e6a439c2
--- /dev/null
+++ b/core/fpdfapi/fpdf_edit/fpdf_edit_image.cpp
@@ -0,0 +1,391 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_page/pageint.h"
+#include "core/fpdfapi/fpdf_render/render_int.h"
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_boolean.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_document.h"
+#include "core/include/fpdfapi/cpdf_string.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_page.h"
+#include "core/include/fpdfapi/fpdf_render.h"
+#include "core/include/fxcodec/fx_codec.h"
+
+CPDF_Dictionary* CPDF_Image::InitJPEG(uint8_t* pData, FX_DWORD size) {
+ int32_t width;
+ int32_t height;
+ int32_t num_comps;
+ int32_t bits;
+ FX_BOOL color_trans;
+ if (!CPDF_ModuleMgr::Get()->GetJpegModule()->LoadInfo(
+ pData, size, width, height, num_comps, bits, color_trans)) {
+ return NULL;
+ }
+ CPDF_Dictionary* pDict = new CPDF_Dictionary;
+ pDict->SetAtName("Type", "XObject");
+ pDict->SetAtName("Subtype", "Image");
+ pDict->SetAtInteger("Width", width);
+ pDict->SetAtInteger("Height", height);
+ const FX_CHAR* csname = NULL;
+ if (num_comps == 1) {
+ csname = "DeviceGray";
+ } else if (num_comps == 3) {
+ csname = "DeviceRGB";
+ } else if (num_comps == 4) {
+ csname = "DeviceCMYK";
+ CPDF_Array* pDecode = new CPDF_Array;
+ for (int n = 0; n < 4; n++) {
+ pDecode->AddInteger(1);
+ pDecode->AddInteger(0);
+ }
+ pDict->SetAt("Decode", pDecode);
+ }
+ pDict->SetAtName("ColorSpace", csname);
+ pDict->SetAtInteger("BitsPerComponent", bits);
+ pDict->SetAtName("Filter", "DCTDecode");
+ if (!color_trans) {
+ CPDF_Dictionary* pParms = new CPDF_Dictionary;
+ pDict->SetAt("DecodeParms", pParms);
+ pParms->SetAtInteger("ColorTransform", 0);
+ }
+ m_bIsMask = FALSE;
+ m_Width = width;
+ m_Height = height;
+ if (!m_pStream) {
+ m_pStream = new CPDF_Stream(NULL, 0, NULL);
+ }
+ return pDict;
+}
+void CPDF_Image::SetJpegImage(uint8_t* pData, FX_DWORD size) {
+ CPDF_Dictionary* pDict = InitJPEG(pData, size);
+ if (!pDict) {
+ return;
+ }
+ m_pStream->InitStream(pData, size, pDict);
+}
+void CPDF_Image::SetJpegImage(IFX_FileRead* pFile) {
+ FX_DWORD size = (FX_DWORD)pFile->GetSize();
+ if (!size) {
+ return;
+ }
+ FX_DWORD dwEstimateSize = size;
+ if (dwEstimateSize > 8192) {
+ dwEstimateSize = 8192;
+ }
+ uint8_t* pData = FX_Alloc(uint8_t, dwEstimateSize);
+ pFile->ReadBlock(pData, 0, dwEstimateSize);
+ CPDF_Dictionary* pDict = InitJPEG(pData, dwEstimateSize);
+ FX_Free(pData);
+ if (!pDict && size > dwEstimateSize) {
+ pData = FX_Alloc(uint8_t, size);
+ pFile->ReadBlock(pData, 0, size);
+ pDict = InitJPEG(pData, size);
+ FX_Free(pData);
+ }
+ if (!pDict) {
+ return;
+ }
+ m_pStream->InitStreamFromFile(pFile, pDict);
+}
+void _DCTEncodeBitmap(CPDF_Dictionary* pBitmapDict,
+ const CFX_DIBitmap* pBitmap,
+ int quality,
+ uint8_t*& buf,
+ FX_STRSIZE& size) {}
+void _JBIG2EncodeBitmap(CPDF_Dictionary* pBitmapDict,
+ const CFX_DIBitmap* pBitmap,
+ CPDF_Document* pDoc,
+ uint8_t*& buf,
+ FX_STRSIZE& size,
+ FX_BOOL bLossLess) {}
+void CPDF_Image::SetImage(const CFX_DIBitmap* pBitmap,
+ int32_t iCompress,
+ IFX_FileWrite* pFileWrite,
+ IFX_FileRead* pFileRead,
+ const CFX_DIBitmap* pMask,
+ const CPDF_ImageSetParam* pParam) {
+ int32_t BitmapWidth = pBitmap->GetWidth();
+ int32_t BitmapHeight = pBitmap->GetHeight();
+ if (BitmapWidth < 1 || BitmapHeight < 1) {
+ return;
+ }
+ uint8_t* src_buf = pBitmap->GetBuffer();
+ int32_t src_pitch = pBitmap->GetPitch();
+ int32_t bpp = pBitmap->GetBPP();
+ FX_BOOL bUseMatte =
+ pParam && pParam->pMatteColor && (pBitmap->GetFormat() == FXDIB_Argb);
+ CPDF_Dictionary* pDict = new CPDF_Dictionary;
+ pDict->SetAtName("Type", "XObject");
+ pDict->SetAtName("Subtype", "Image");
+ pDict->SetAtInteger("Width", BitmapWidth);
+ pDict->SetAtInteger("Height", BitmapHeight);
+ uint8_t* dest_buf = NULL;
+ FX_STRSIZE dest_pitch = 0, dest_size = 0, opType = -1;
+ if (bpp == 1) {
+ int32_t reset_a = 0, reset_r = 0, reset_g = 0, reset_b = 0;
+ int32_t set_a = 0, set_r = 0, set_g = 0, set_b = 0;
+ if (!pBitmap->IsAlphaMask()) {
+ ArgbDecode(pBitmap->GetPaletteArgb(0), reset_a, reset_r, reset_g,
+ reset_b);
+ ArgbDecode(pBitmap->GetPaletteArgb(1), set_a, set_r, set_g, set_b);
+ }
+ if (set_a == 0 || reset_a == 0) {
+ pDict->SetAt("ImageMask", new CPDF_Boolean(TRUE));
+ if (reset_a == 0) {
+ CPDF_Array* pArray = new CPDF_Array;
+ pArray->AddInteger(1);
+ pArray->AddInteger(0);
+ pDict->SetAt("Decode", pArray);
+ }
+ } else {
+ CPDF_Array* pCS = new CPDF_Array;
+ pCS->AddName("Indexed");
+ pCS->AddName("DeviceRGB");
+ pCS->AddInteger(1);
+ CFX_ByteString ct;
+ FX_CHAR* pBuf = ct.GetBuffer(6);
+ pBuf[0] = (FX_CHAR)reset_r;
+ pBuf[1] = (FX_CHAR)reset_g;
+ pBuf[2] = (FX_CHAR)reset_b;
+ pBuf[3] = (FX_CHAR)set_r;
+ pBuf[4] = (FX_CHAR)set_g;
+ pBuf[5] = (FX_CHAR)set_b;
+ ct.ReleaseBuffer(6);
+ pCS->Add(new CPDF_String(ct, TRUE));
+ pDict->SetAt("ColorSpace", pCS);
+ }
+ pDict->SetAtInteger("BitsPerComponent", 1);
+ dest_pitch = (BitmapWidth + 7) / 8;
+ if ((iCompress & 0x03) == PDF_IMAGE_NO_COMPRESS) {
+ opType = 1;
+ } else {
+ opType = 0;
+ }
+ } else if (bpp == 8) {
+ int32_t iPalette = pBitmap->GetPaletteSize();
+ if (iPalette > 0) {
+ CPDF_Array* pCS = new CPDF_Array;
+ m_pDocument->AddIndirectObject(pCS);
+ pCS->AddName("Indexed");
+ pCS->AddName("DeviceRGB");
+ pCS->AddInteger(iPalette - 1);
+ uint8_t* pColorTable = FX_Alloc2D(uint8_t, iPalette, 3);
+ uint8_t* ptr = pColorTable;
+ for (int32_t i = 0; i < iPalette; i++) {
+ FX_DWORD argb = pBitmap->GetPaletteArgb(i);
+ ptr[0] = (uint8_t)(argb >> 16);
+ ptr[1] = (uint8_t)(argb >> 8);
+ ptr[2] = (uint8_t)argb;
+ ptr += 3;
+ }
+ CPDF_Stream* pCTS =
+ new CPDF_Stream(pColorTable, iPalette * 3, new CPDF_Dictionary);
+ m_pDocument->AddIndirectObject(pCTS);
+ pCS->AddReference(m_pDocument, pCTS);
+ pDict->SetAtReference("ColorSpace", m_pDocument, pCS);
+ } else {
+ pDict->SetAtName("ColorSpace", "DeviceGray");
+ }
+ pDict->SetAtInteger("BitsPerComponent", 8);
+ if ((iCompress & 0x03) == PDF_IMAGE_NO_COMPRESS) {
+ dest_pitch = BitmapWidth;
+ opType = 1;
+ } else {
+ opType = 0;
+ }
+ } else {
+ pDict->SetAtName("ColorSpace", "DeviceRGB");
+ pDict->SetAtInteger("BitsPerComponent", 8);
+ if ((iCompress & 0x03) == PDF_IMAGE_NO_COMPRESS) {
+ dest_pitch = BitmapWidth * 3;
+ opType = 2;
+ } else {
+ opType = 0;
+ }
+ }
+ const CFX_DIBitmap* pMaskBitmap = NULL;
+ FX_BOOL bDeleteMask = FALSE;
+ if (pBitmap->HasAlpha()) {
+ pMaskBitmap = pBitmap->GetAlphaMask();
+ bDeleteMask = TRUE;
+ }
+ if (!pMaskBitmap && pMask) {
+ FXDIB_Format maskFormat = pMask->GetFormat();
+ if (maskFormat == FXDIB_1bppMask || maskFormat == FXDIB_8bppMask) {
+ pMaskBitmap = pMask;
+ }
+ }
+ if (pMaskBitmap) {
+ int32_t maskWidth = pMaskBitmap->GetWidth();
+ int32_t maskHeight = pMaskBitmap->GetHeight();
+ uint8_t* mask_buf = NULL;
+ FX_STRSIZE mask_size = 0;
+ CPDF_Dictionary* pMaskDict = new CPDF_Dictionary;
+ pMaskDict->SetAtName("Type", "XObject");
+ pMaskDict->SetAtName("Subtype", "Image");
+ pMaskDict->SetAtInteger("Width", maskWidth);
+ pMaskDict->SetAtInteger("Height", maskHeight);
+ pMaskDict->SetAtName("ColorSpace", "DeviceGray");
+ pMaskDict->SetAtInteger("BitsPerComponent", 8);
+ if (pMaskBitmap->GetBPP() == 8 &&
+ (iCompress & PDF_IMAGE_MASK_LOSSY_COMPRESS) != 0) {
+ _DCTEncodeBitmap(pMaskDict, pMaskBitmap, pParam ? pParam->nQuality : 75,
+ mask_buf, mask_size);
+ } else if (pMaskBitmap->GetFormat() == FXDIB_1bppMask) {
+ _JBIG2EncodeBitmap(pMaskDict, pMaskBitmap, m_pDocument, mask_buf,
+ mask_size, TRUE);
+ } else {
+ mask_buf = FX_Alloc2D(uint8_t, maskHeight, maskWidth);
+ mask_size = maskHeight * maskWidth; // Safe since checked alloc returned.
+ for (int32_t a = 0; a < maskHeight; a++) {
+ FXSYS_memcpy(mask_buf + a * maskWidth, pMaskBitmap->GetScanline(a),
+ maskWidth);
+ }
+ }
+ pMaskDict->SetAtInteger("Length", mask_size);
+ if (bUseMatte) {
+ int a, r, g, b;
+ ArgbDecode(*(pParam->pMatteColor), a, r, g, b);
+ CPDF_Array* pMatte = new CPDF_Array;
+ pMatte->AddInteger(r);
+ pMatte->AddInteger(g);
+ pMatte->AddInteger(b);
+ pMaskDict->SetAt("Matte", pMatte);
+ }
+ CPDF_Stream* pMaskStream = new CPDF_Stream(mask_buf, mask_size, pMaskDict);
+ m_pDocument->AddIndirectObject(pMaskStream);
+ pDict->SetAtReference("SMask", m_pDocument, pMaskStream);
+ if (bDeleteMask) {
+ delete pMaskBitmap;
+ }
+ }
+ FX_BOOL bStream = pFileWrite && pFileRead;
+ if (opType == 0) {
+ if (iCompress & PDF_IMAGE_LOSSLESS_COMPRESS) {
+ if (pBitmap->GetBPP() == 1) {
+ _JBIG2EncodeBitmap(pDict, pBitmap, m_pDocument, dest_buf, dest_size,
+ TRUE);
+ }
+ } else {
+ if (pBitmap->GetBPP() == 1) {
+ _JBIG2EncodeBitmap(pDict, pBitmap, m_pDocument, dest_buf, dest_size,
+ FALSE);
+ } else if (pBitmap->GetBPP() >= 8 && pBitmap->GetPalette()) {
+ CFX_DIBitmap* pNewBitmap = new CFX_DIBitmap();
+ pNewBitmap->Copy(pBitmap);
+ pNewBitmap->ConvertFormat(FXDIB_Rgb);
+ SetImage(pNewBitmap, iCompress, pFileWrite, pFileRead);
+ if (pDict) {
+ pDict->Release();
+ pDict = NULL;
+ }
+ FX_Free(dest_buf);
+ dest_buf = NULL;
+ dest_size = 0;
+ delete pNewBitmap;
+ return;
+ } else {
+ if (bUseMatte) {
+ CFX_DIBitmap* pNewBitmap = new CFX_DIBitmap();
+ pNewBitmap->Create(BitmapWidth, BitmapHeight, FXDIB_Argb);
+ uint8_t* dst_buf = pNewBitmap->GetBuffer();
+ int32_t src_offset = 0;
+ for (int32_t row = 0; row < BitmapHeight; row++) {
+ src_offset = row * src_pitch;
+ for (int32_t column = 0; column < BitmapWidth; column++) {
+ FX_FLOAT alpha = src_buf[src_offset + 3] / 255.0f;
+ dst_buf[src_offset] = (uint8_t)(src_buf[src_offset] * alpha);
+ dst_buf[src_offset + 1] =
+ (uint8_t)(src_buf[src_offset + 1] * alpha);
+ dst_buf[src_offset + 2] =
+ (uint8_t)(src_buf[src_offset + 2] * alpha);
+ dst_buf[src_offset + 3] = (uint8_t)(src_buf[src_offset + 3]);
+ src_offset += 4;
+ }
+ }
+ _DCTEncodeBitmap(pDict, pNewBitmap, pParam ? pParam->nQuality : 75,
+ dest_buf, dest_size);
+ delete pNewBitmap;
+ } else {
+ _DCTEncodeBitmap(pDict, pBitmap, pParam ? pParam->nQuality : 75,
+ dest_buf, dest_size);
+ }
+ }
+ }
+ if (bStream) {
+ pFileWrite->WriteBlock(dest_buf, dest_size);
+ FX_Free(dest_buf);
+ dest_buf = NULL;
+ }
+ } else if (opType == 1) {
+ if (!bStream) {
+ dest_buf = FX_Alloc2D(uint8_t, dest_pitch, BitmapHeight);
+ dest_size =
+ dest_pitch * BitmapHeight; // Safe since checked alloc returned.
+ }
+ uint8_t* pDest = dest_buf;
+ for (int32_t i = 0; i < BitmapHeight; i++) {
+ if (!bStream) {
+ FXSYS_memcpy(pDest, src_buf, dest_pitch);
+ pDest += dest_pitch;
+ } else {
+ pFileWrite->WriteBlock(src_buf, dest_pitch);
+ }
+ src_buf += src_pitch;
+ }
+ } else if (opType == 2) {
+ if (!bStream) {
+ dest_buf = FX_Alloc2D(uint8_t, dest_pitch, BitmapHeight);
+ dest_size =
+ dest_pitch * BitmapHeight; // Safe since checked alloc returned.
+ } else {
+ dest_buf = FX_Alloc(uint8_t, dest_pitch);
+ }
+ uint8_t* pDest = dest_buf;
+ int32_t src_offset = 0;
+ int32_t dest_offset = 0;
+ for (int32_t row = 0; row < BitmapHeight; row++) {
+ src_offset = row * src_pitch;
+ for (int32_t column = 0; column < BitmapWidth; column++) {
+ FX_FLOAT alpha = bUseMatte ? src_buf[src_offset + 3] / 255.0f : 1;
+ pDest[dest_offset] = (uint8_t)(src_buf[src_offset + 2] * alpha);
+ pDest[dest_offset + 1] = (uint8_t)(src_buf[src_offset + 1] * alpha);
+ pDest[dest_offset + 2] = (uint8_t)(src_buf[src_offset] * alpha);
+ dest_offset += 3;
+ src_offset += bpp == 24 ? 3 : 4;
+ }
+ if (bStream) {
+ pFileWrite->WriteBlock(pDest, dest_pitch);
+ pDest = dest_buf;
+ } else {
+ pDest += dest_pitch;
+ }
+ dest_offset = 0;
+ }
+ if (bStream) {
+ FX_Free(dest_buf);
+ dest_buf = NULL;
+ }
+ }
+ if (!m_pStream) {
+ m_pStream = new CPDF_Stream(NULL, 0, NULL);
+ }
+ if (!bStream) {
+ m_pStream->InitStream(dest_buf, dest_size, pDict);
+ } else {
+ pFileWrite->Flush();
+ m_pStream->InitStreamFromFile(pFileRead, pDict);
+ }
+ m_bIsMask = pBitmap->IsAlphaMask();
+ m_Width = BitmapWidth;
+ m_Height = BitmapHeight;
+ FX_Free(dest_buf);
+}
+void CPDF_Image::ResetCache(CPDF_Page* pPage, const CFX_DIBitmap* pBitmap) {
+ pPage->GetRenderCache()->ResetBitmap(m_pStream, pBitmap);
+}
diff --git a/core/fpdfapi/fpdf_font/font_int.h b/core/fpdfapi/fpdf_font/font_int.h
new file mode 100644
index 0000000000..8ceefe353e
--- /dev/null
+++ b/core/fpdfapi/fpdf_font/font_int.h
@@ -0,0 +1,203 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_FPDFAPI_FPDF_FONT_FONT_INT_H_
+#define CORE_FPDFAPI_FPDF_FONT_FONT_INT_H_
+
+#include <map>
+#include <memory>
+
+#include "core/include/fpdfapi/fpdf_resource.h"
+#include "core/include/fxcrt/fx_basic.h"
+
+class CPDF_CID2UnicodeMap;
+class CPDF_CMap;
+class CPDF_Font;
+class CPDF_Stream;
+
+typedef void* FXFT_Library;
+
+short TT2PDF(int m, FXFT_Face face);
+FX_BOOL FT_UseTTCharmap(FXFT_Face face, int platform_id, int encoding_id);
+
+class CPDF_CMapManager {
+ public:
+ CPDF_CMapManager();
+ ~CPDF_CMapManager();
+ void* GetPackage(FX_BOOL bPrompt);
+ CPDF_CMap* GetPredefinedCMap(const CFX_ByteString& name, FX_BOOL bPromptCJK);
+ CPDF_CID2UnicodeMap* GetCID2UnicodeMap(CIDSet charset, FX_BOOL bPromptCJK);
+ void ReloadAll();
+
+ private:
+ CPDF_CMap* LoadPredefinedCMap(const CFX_ByteString& name, FX_BOOL bPromptCJK);
+ CPDF_CID2UnicodeMap* LoadCID2UnicodeMap(CIDSet charset, FX_BOOL bPromptCJK);
+
+ FX_BOOL m_bPrompted;
+ std::map<CFX_ByteString, CPDF_CMap*> m_CMaps;
+ CPDF_CID2UnicodeMap* m_CID2UnicodeMaps[6];
+};
+
+class CFX_StockFontArray {
+ public:
+ CFX_StockFontArray();
+ ~CFX_StockFontArray();
+
+ // Takes ownership of |pFont|.
+ void SetFont(int index, CPDF_Font* pFont);
+ CPDF_Font* GetFont(int index) const;
+
+ private:
+ std::unique_ptr<CPDF_Font> m_StockFonts[14];
+};
+
+class CPDF_FontGlobals {
+ public:
+ CPDF_FontGlobals();
+ ~CPDF_FontGlobals();
+
+ void Clear(CPDF_Document* pDoc);
+ CPDF_Font* Find(CPDF_Document* pDoc, int index);
+
+ // Takes ownership of |pFont|.
+ void Set(CPDF_Document* key, int index, CPDF_Font* pFont);
+
+ CPDF_CMapManager m_CMapManager;
+ struct {
+ const struct FXCMAP_CMap* m_pMapList;
+ int m_Count;
+ } m_EmbeddedCharsets[CIDSET_NUM_SETS];
+ struct {
+ const FX_WORD* m_pMap;
+ int m_Count;
+ } m_EmbeddedToUnicodes[CIDSET_NUM_SETS];
+
+ private:
+ std::map<CPDF_Document*, std::unique_ptr<CFX_StockFontArray>> m_StockMap;
+};
+
+struct CMap_CodeRange {
+ int m_CharSize;
+ uint8_t m_Lower[4];
+ uint8_t m_Upper[4];
+};
+
+class CPDF_CMapParser {
+ public:
+ CPDF_CMapParser();
+ ~CPDF_CMapParser() {}
+ FX_BOOL Initialize(CPDF_CMap* pMap);
+ void ParseWord(const CFX_ByteStringC& str);
+ CFX_BinaryBuf m_AddMaps;
+
+ private:
+ friend class fpdf_font_cid_CMap_GetCode_Test;
+ friend class fpdf_font_cid_CMap_GetCodeRange_Test;
+
+ static FX_DWORD CMap_GetCode(const CFX_ByteStringC& word);
+ static bool CMap_GetCodeRange(CMap_CodeRange& range,
+ const CFX_ByteStringC& first,
+ const CFX_ByteStringC& second);
+
+ CPDF_CMap* m_pCMap;
+ int m_Status;
+ int m_CodeSeq;
+ FX_DWORD m_CodePoints[4];
+ CFX_ArrayTemplate<CMap_CodeRange> m_CodeRanges;
+ CFX_ByteString m_Registry, m_Ordering, m_Supplement;
+ CFX_ByteString m_LastWord;
+};
+#define CIDCODING_UNKNOWN 0
+#define CIDCODING_GB 1
+#define CIDCODING_BIG5 2
+#define CIDCODING_JIS 3
+#define CIDCODING_KOREA 4
+#define CIDCODING_UCS2 5
+#define CIDCODING_CID 6
+#define CIDCODING_UTF16 7
+class CPDF_CMap {
+ public:
+ CPDF_CMap();
+ FX_BOOL LoadPredefined(CPDF_CMapManager* pMgr,
+ const FX_CHAR* name,
+ FX_BOOL bPromptCJK);
+ FX_BOOL LoadEmbedded(const uint8_t* pData, FX_DWORD dwSize);
+ void Release();
+ FX_BOOL IsLoaded() const { return m_bLoaded; }
+ FX_BOOL IsVertWriting() const { return m_bVertical; }
+ FX_WORD CIDFromCharCode(FX_DWORD charcode) const;
+ FX_DWORD CharCodeFromCID(FX_WORD CID) const;
+ int GetCharSize(FX_DWORD charcode) const;
+ FX_DWORD GetNextChar(const FX_CHAR* pString, int nStrLen, int& offset) const;
+ int CountChar(const FX_CHAR* pString, int size) const;
+ int AppendChar(FX_CHAR* str, FX_DWORD charcode) const;
+ typedef enum {
+ OneByte,
+ TwoBytes,
+ MixedTwoBytes,
+ MixedFourBytes
+ } CodingScheme;
+
+ protected:
+ ~CPDF_CMap();
+ friend class CPDF_CMapParser;
+ friend class CPDF_CMapManager;
+ friend class CPDF_CIDFont;
+
+ protected:
+ CFX_ByteString m_PredefinedCMap;
+ FX_BOOL m_bVertical;
+ CIDSet m_Charset;
+ int m_Coding;
+ CodingScheme m_CodingScheme;
+ int m_nCodeRanges;
+ uint8_t* m_pLeadingBytes;
+ FX_WORD* m_pMapping;
+ uint8_t* m_pAddMapping;
+ FX_BOOL m_bLoaded;
+ const FXCMAP_CMap* m_pEmbedMap;
+ CPDF_CMap* m_pUseMap;
+};
+
+class CPDF_CID2UnicodeMap {
+ public:
+ CPDF_CID2UnicodeMap();
+ ~CPDF_CID2UnicodeMap();
+ FX_BOOL Initialize();
+ FX_BOOL IsLoaded();
+ void Load(CPDF_CMapManager* pMgr, CIDSet charset, FX_BOOL bPromptCJK);
+ FX_WCHAR UnicodeFromCID(FX_WORD CID);
+
+ protected:
+ CIDSet m_Charset;
+ const FX_WORD* m_pEmbeddedMap;
+ FX_DWORD m_EmbeddedCount;
+};
+
+class CPDF_ToUnicodeMap {
+ public:
+ void Load(CPDF_Stream* pStream);
+ CFX_WideString Lookup(FX_DWORD charcode);
+ FX_DWORD ReverseLookup(FX_WCHAR unicode);
+
+ protected:
+ std::map<FX_DWORD, FX_DWORD> m_Map;
+ CPDF_CID2UnicodeMap* m_pBaseMap;
+ CFX_WideTextBuf m_MultiCharBuf;
+
+ private:
+ friend class fpdf_font_StringToCode_Test;
+ friend class fpdf_font_StringToWideString_Test;
+
+ static FX_DWORD StringToCode(const CFX_ByteStringC& str);
+ static CFX_WideString StringToWideString(const CFX_ByteStringC& str);
+};
+
+void FPDFAPI_LoadCID2UnicodeMap(CIDSet charset,
+ const FX_WORD*& pMap,
+ FX_DWORD& count);
+
+#endif // CORE_FPDFAPI_FPDF_FONT_FONT_INT_H_
diff --git a/core/fpdfapi/fpdf_font/fpdf_font.cpp b/core/fpdfapi/fpdf_font/fpdf_font.cpp
new file mode 100644
index 0000000000..98411ef0f1
--- /dev/null
+++ b/core/fpdfapi/fpdf_font/fpdf_font.cpp
@@ -0,0 +1,1814 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_font/font_int.h"
+
+#include "core/fpdfapi/fpdf_page/pageint.h"
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_document.h"
+#include "core/include/fpdfapi/cpdf_name.h"
+#include "core/include/fpdfapi/cpdf_number.h"
+#include "core/include/fpdfapi/cpdf_simple_parser.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_page.h"
+#include "core/include/fpdfapi/fpdf_pageobj.h"
+#include "core/include/fpdfapi/fpdf_resource.h"
+#include "core/include/fxcrt/fx_ext.h"
+#include "core/include/fxge/fx_freetype.h"
+#include "third_party/base/stl_util.h"
+
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+#include "core/fxge/apple/apple_int.h"
+#endif
+
+namespace {
+
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+struct GlyphNameMap {
+ const FX_CHAR* m_pStrAdobe;
+ const FX_CHAR* m_pStrUnicode;
+};
+
+const GlyphNameMap g_GlyphNameSubsts[] = {{"ff", "uniFB00"},
+ {"fi", "uniFB01"},
+ {"fl", "uniFB02"},
+ {"ffi", "uniFB03"},
+ {"ffl", "uniFB04"}};
+
+int compareString(const void* key, const void* element) {
+ return FXSYS_stricmp((const FX_CHAR*)key,
+ ((GlyphNameMap*)element)->m_pStrAdobe);
+}
+
+const FX_CHAR* GlyphNameRemap(const FX_CHAR* pStrAdobe) {
+ GlyphNameMap* found = (GlyphNameMap*)FXSYS_bsearch(
+ pStrAdobe, g_GlyphNameSubsts,
+ sizeof(g_GlyphNameSubsts) / sizeof(GlyphNameMap), sizeof(GlyphNameMap),
+ compareString);
+ if (found)
+ return found->m_pStrUnicode;
+ return NULL;
+}
+#endif
+
+const uint8_t ChineseFontNames[][5] = {{0xCB, 0xCE, 0xCC, 0xE5, 0x00},
+ {0xBF, 0xAC, 0xCC, 0xE5, 0x00},
+ {0xBA, 0xDA, 0xCC, 0xE5, 0x00},
+ {0xB7, 0xC2, 0xCB, 0xCE, 0x00},
+ {0xD0, 0xC2, 0xCB, 0xCE, 0x00}};
+
+FX_BOOL GetPredefinedEncoding(int& basemap, const CFX_ByteString& value) {
+ if (value == "WinAnsiEncoding") {
+ basemap = PDFFONT_ENCODING_WINANSI;
+ } else if (value == "MacRomanEncoding") {
+ basemap = PDFFONT_ENCODING_MACROMAN;
+ } else if (value == "MacExpertEncoding") {
+ basemap = PDFFONT_ENCODING_MACEXPERT;
+ } else if (value == "PDFDocEncoding") {
+ basemap = PDFFONT_ENCODING_PDFDOC;
+ } else {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+FX_BOOL FT_UseType1Charmap(FXFT_Face face) {
+ if (FXFT_Get_Face_CharmapCount(face) == 0) {
+ return FALSE;
+ }
+ if (FXFT_Get_Face_CharmapCount(face) == 1 &&
+ FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[0]) ==
+ FXFT_ENCODING_UNICODE) {
+ return FALSE;
+ }
+ if (FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[0]) ==
+ FXFT_ENCODING_UNICODE) {
+ FXFT_Set_Charmap(face, FXFT_Get_Face_Charmaps(face)[1]);
+ } else {
+ FXFT_Set_Charmap(face, FXFT_Get_Face_Charmaps(face)[0]);
+ }
+ return TRUE;
+}
+
+} // namespace
+
+FX_BOOL FT_UseTTCharmap(FXFT_Face face, int platform_id, int encoding_id) {
+ for (int i = 0; i < FXFT_Get_Face_CharmapCount(face); i++) {
+ if (FXFT_Get_Charmap_PlatformID(FXFT_Get_Face_Charmaps(face)[i]) ==
+ platform_id &&
+ FXFT_Get_Charmap_EncodingID(FXFT_Get_Face_Charmaps(face)[i]) ==
+ encoding_id) {
+ FXFT_Set_Charmap(face, FXFT_Get_Face_Charmaps(face)[i]);
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+CFX_StockFontArray::CFX_StockFontArray() {}
+
+CFX_StockFontArray::~CFX_StockFontArray() {
+ for (size_t i = 0; i < FX_ArraySize(m_StockFonts); ++i) {
+ if (!m_StockFonts[i])
+ continue;
+ CPDF_Dictionary* pFontDict = m_StockFonts[i]->GetFontDict();
+ if (pFontDict)
+ pFontDict->Release();
+ }
+}
+
+CPDF_Font* CFX_StockFontArray::GetFont(int index) const {
+ if (index < 0 || index >= FX_ArraySize(m_StockFonts))
+ return nullptr;
+ return m_StockFonts[index].get();
+}
+
+void CFX_StockFontArray::SetFont(int index, CPDF_Font* font) {
+ if (index < 0 || index >= FX_ArraySize(m_StockFonts))
+ return;
+ m_StockFonts[index].reset(font);
+}
+
+CPDF_FontGlobals::CPDF_FontGlobals() {
+ FXSYS_memset(m_EmbeddedCharsets, 0, sizeof(m_EmbeddedCharsets));
+ FXSYS_memset(m_EmbeddedToUnicodes, 0, sizeof(m_EmbeddedToUnicodes));
+}
+
+CPDF_FontGlobals::~CPDF_FontGlobals() {}
+
+CPDF_Font* CPDF_FontGlobals::Find(CPDF_Document* pDoc, int index) {
+ auto it = m_StockMap.find(pDoc);
+ if (it == m_StockMap.end())
+ return nullptr;
+ return it->second ? it->second->GetFont(index) : nullptr;
+}
+
+void CPDF_FontGlobals::Set(CPDF_Document* pDoc, int index, CPDF_Font* pFont) {
+ if (!pdfium::ContainsKey(m_StockMap, pDoc))
+ m_StockMap[pDoc].reset(new CFX_StockFontArray);
+ m_StockMap[pDoc]->SetFont(index, pFont);
+}
+
+void CPDF_FontGlobals::Clear(CPDF_Document* pDoc) {
+ m_StockMap.erase(pDoc);
+}
+
+CPDF_Font::CPDF_Font()
+ : m_pFontFile(nullptr),
+ m_pFontDict(nullptr),
+ m_pToUnicodeMap(nullptr),
+ m_bToUnicodeLoaded(FALSE),
+ m_Flags(0),
+ m_StemV(0),
+ m_Ascent(0),
+ m_Descent(0),
+ m_ItalicAngle(0) {}
+
+CPDF_Font::~CPDF_Font() {
+ delete m_pToUnicodeMap;
+ m_pToUnicodeMap = NULL;
+
+ if (m_pFontFile) {
+ m_pDocument->GetPageData()->ReleaseFontFileStreamAcc(
+ const_cast<CPDF_Stream*>(m_pFontFile->GetStream()->AsStream()));
+ }
+}
+
+bool CPDF_Font::IsType1Font() const {
+ return false;
+}
+
+bool CPDF_Font::IsTrueTypeFont() const {
+ return false;
+}
+
+bool CPDF_Font::IsType3Font() const {
+ return false;
+}
+
+bool CPDF_Font::IsCIDFont() const {
+ return false;
+}
+
+const CPDF_Type1Font* CPDF_Font::AsType1Font() const {
+ return nullptr;
+}
+
+CPDF_Type1Font* CPDF_Font::AsType1Font() {
+ return nullptr;
+}
+
+const CPDF_TrueTypeFont* CPDF_Font::AsTrueTypeFont() const {
+ return nullptr;
+}
+
+CPDF_TrueTypeFont* CPDF_Font::AsTrueTypeFont() {
+ return nullptr;
+}
+
+const CPDF_Type3Font* CPDF_Font::AsType3Font() const {
+ return nullptr;
+}
+
+CPDF_Type3Font* CPDF_Font::AsType3Font() {
+ return nullptr;
+}
+
+const CPDF_CIDFont* CPDF_Font::AsCIDFont() const {
+ return nullptr;
+}
+
+CPDF_CIDFont* CPDF_Font::AsCIDFont() {
+ return nullptr;
+}
+
+FX_BOOL CPDF_Font::IsUnicodeCompatible() const {
+ return FALSE;
+}
+
+int CPDF_Font::CountChar(const FX_CHAR* pString, int size) const {
+ return size;
+}
+
+int CPDF_Font::GetCharSize(FX_DWORD charcode) const {
+ return 1;
+}
+
+int CPDF_Font::GlyphFromCharCode(FX_DWORD charcode, FX_BOOL* pVertGlyph) {
+ ASSERT(false);
+ return 0;
+}
+
+int CPDF_Font::GlyphFromCharCodeExt(FX_DWORD charcode) {
+ return GlyphFromCharCode(charcode);
+}
+
+FX_BOOL CPDF_Font::IsVertWriting() const {
+ FX_BOOL bVertWriting = FALSE;
+ const CPDF_CIDFont* pCIDFont = AsCIDFont();
+ if (pCIDFont) {
+ bVertWriting = pCIDFont->IsVertWriting();
+ } else {
+ bVertWriting = m_Font.IsVertical();
+ }
+ return bVertWriting;
+}
+
+int CPDF_Font::AppendChar(FX_CHAR* buf, FX_DWORD charcode) const {
+ *buf = (FX_CHAR)charcode;
+ return 1;
+}
+
+void CPDF_Font::AppendChar(CFX_ByteString& str, FX_DWORD charcode) const {
+ char buf[4];
+ int len = AppendChar(buf, charcode);
+ if (len == 1) {
+ str += buf[0];
+ } else {
+ str += CFX_ByteString(buf, len);
+ }
+}
+
+CFX_WideString CPDF_Font::UnicodeFromCharCode(FX_DWORD charcode) const {
+ if (!m_bToUnicodeLoaded)
+ ((CPDF_Font*)this)->LoadUnicodeMap();
+
+ if (m_pToUnicodeMap)
+ return m_pToUnicodeMap->Lookup(charcode);
+ return CFX_WideString();
+}
+
+FX_DWORD CPDF_Font::CharCodeFromUnicode(FX_WCHAR unicode) const {
+ if (!m_bToUnicodeLoaded)
+ ((CPDF_Font*)this)->LoadUnicodeMap();
+
+ if (m_pToUnicodeMap)
+ return m_pToUnicodeMap->ReverseLookup(unicode);
+ return 0;
+}
+
+void CPDF_Font::LoadFontDescriptor(CPDF_Dictionary* pFontDesc) {
+ m_Flags = pFontDesc->GetIntegerBy("Flags", PDFFONT_NONSYMBOLIC);
+ int ItalicAngle = 0;
+ FX_BOOL bExistItalicAngle = FALSE;
+ if (pFontDesc->KeyExist("ItalicAngle")) {
+ ItalicAngle = pFontDesc->GetIntegerBy("ItalicAngle");
+ bExistItalicAngle = TRUE;
+ }
+ if (ItalicAngle < 0) {
+ m_Flags |= PDFFONT_ITALIC;
+ m_ItalicAngle = ItalicAngle;
+ }
+ FX_BOOL bExistStemV = FALSE;
+ if (pFontDesc->KeyExist("StemV")) {
+ m_StemV = pFontDesc->GetIntegerBy("StemV");
+ bExistStemV = TRUE;
+ }
+ FX_BOOL bExistAscent = FALSE;
+ if (pFontDesc->KeyExist("Ascent")) {
+ m_Ascent = pFontDesc->GetIntegerBy("Ascent");
+ bExistAscent = TRUE;
+ }
+ FX_BOOL bExistDescent = FALSE;
+ if (pFontDesc->KeyExist("Descent")) {
+ m_Descent = pFontDesc->GetIntegerBy("Descent");
+ bExistDescent = TRUE;
+ }
+ FX_BOOL bExistCapHeight = FALSE;
+ if (pFontDesc->KeyExist("CapHeight")) {
+ bExistCapHeight = TRUE;
+ }
+ if (bExistItalicAngle && bExistAscent && bExistCapHeight && bExistDescent &&
+ bExistStemV) {
+ m_Flags |= PDFFONT_USEEXTERNATTR;
+ }
+ if (m_Descent > 10) {
+ m_Descent = -m_Descent;
+ }
+ CPDF_Array* pBBox = pFontDesc->GetArrayBy("FontBBox");
+ if (pBBox) {
+ m_FontBBox.left = pBBox->GetIntegerAt(0);
+ m_FontBBox.bottom = pBBox->GetIntegerAt(1);
+ m_FontBBox.right = pBBox->GetIntegerAt(2);
+ m_FontBBox.top = pBBox->GetIntegerAt(3);
+ }
+
+ CPDF_Stream* pFontFile = pFontDesc->GetStreamBy("FontFile");
+ if (!pFontFile)
+ pFontFile = pFontDesc->GetStreamBy("FontFile2");
+ if (!pFontFile)
+ pFontFile = pFontDesc->GetStreamBy("FontFile3");
+ if (!pFontFile)
+ return;
+
+ m_pFontFile = m_pDocument->LoadFontFile(pFontFile);
+ if (!m_pFontFile)
+ return;
+
+ const uint8_t* pFontData = m_pFontFile->GetData();
+ FX_DWORD dwFontSize = m_pFontFile->GetSize();
+ if (!m_Font.LoadEmbedded(pFontData, dwFontSize)) {
+ m_pDocument->GetPageData()->ReleaseFontFileStreamAcc(
+ const_cast<CPDF_Stream*>(m_pFontFile->GetStream()->AsStream()));
+ m_pFontFile = nullptr;
+ }
+}
+
+short TT2PDF(int m, FXFT_Face face) {
+ int upm = FXFT_Get_Face_UnitsPerEM(face);
+ if (upm == 0) {
+ return (short)m;
+ }
+ return (m * 1000 + upm / 2) / upm;
+}
+
+void CPDF_Font::CheckFontMetrics() {
+ if (m_FontBBox.top == 0 && m_FontBBox.bottom == 0 && m_FontBBox.left == 0 &&
+ m_FontBBox.right == 0) {
+ FXFT_Face face = m_Font.GetFace();
+ if (face) {
+ m_FontBBox.left = TT2PDF(FXFT_Get_Face_xMin(face), face);
+ m_FontBBox.bottom = TT2PDF(FXFT_Get_Face_yMin(face), face);
+ m_FontBBox.right = TT2PDF(FXFT_Get_Face_xMax(face), face);
+ m_FontBBox.top = TT2PDF(FXFT_Get_Face_yMax(face), face);
+ m_Ascent = TT2PDF(FXFT_Get_Face_Ascender(face), face);
+ m_Descent = TT2PDF(FXFT_Get_Face_Descender(face), face);
+ } else {
+ FX_BOOL bFirst = TRUE;
+ for (int i = 0; i < 256; i++) {
+ FX_RECT rect = GetCharBBox(i);
+ if (rect.left == rect.right) {
+ continue;
+ }
+ if (bFirst) {
+ m_FontBBox = rect;
+ bFirst = FALSE;
+ } else {
+ if (m_FontBBox.top < rect.top) {
+ m_FontBBox.top = rect.top;
+ }
+ if (m_FontBBox.right < rect.right) {
+ m_FontBBox.right = rect.right;
+ }
+ if (m_FontBBox.left > rect.left) {
+ m_FontBBox.left = rect.left;
+ }
+ if (m_FontBBox.bottom > rect.bottom) {
+ m_FontBBox.bottom = rect.bottom;
+ }
+ }
+ }
+ }
+ }
+ if (m_Ascent == 0 && m_Descent == 0) {
+ FX_RECT rect = GetCharBBox('A');
+ m_Ascent = rect.bottom == rect.top ? m_FontBBox.top : rect.top;
+ rect = GetCharBBox('g');
+ m_Descent = rect.bottom == rect.top ? m_FontBBox.bottom : rect.bottom;
+ }
+}
+
+void CPDF_Font::LoadUnicodeMap() {
+ m_bToUnicodeLoaded = TRUE;
+ CPDF_Stream* pStream = m_pFontDict->GetStreamBy("ToUnicode");
+ if (!pStream) {
+ return;
+ }
+ m_pToUnicodeMap = new CPDF_ToUnicodeMap;
+ m_pToUnicodeMap->Load(pStream);
+}
+
+int CPDF_Font::GetStringWidth(const FX_CHAR* pString, int size) {
+ int offset = 0;
+ int width = 0;
+ while (offset < size) {
+ FX_DWORD charcode = GetNextChar(pString, size, offset);
+ width += GetCharWidthF(charcode);
+ }
+ return width;
+}
+
+CPDF_Font* CPDF_Font::GetStockFont(CPDF_Document* pDoc,
+ const CFX_ByteStringC& name) {
+ CFX_ByteString fontname(name);
+ int font_id = PDF_GetStandardFontName(&fontname);
+ if (font_id < 0) {
+ return nullptr;
+ }
+ CPDF_FontGlobals* pFontGlobals =
+ CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals();
+ CPDF_Font* pFont = pFontGlobals->Find(pDoc, font_id);
+ if (pFont) {
+ return pFont;
+ }
+ CPDF_Dictionary* pDict = new CPDF_Dictionary;
+ pDict->SetAtName("Type", "Font");
+ pDict->SetAtName("Subtype", "Type1");
+ pDict->SetAtName("BaseFont", fontname);
+ pDict->SetAtName("Encoding", "WinAnsiEncoding");
+ pFont = CPDF_Font::CreateFontF(NULL, pDict);
+ pFontGlobals->Set(pDoc, font_id, pFont);
+ return pFont;
+}
+
+CPDF_Font* CPDF_Font::CreateFontF(CPDF_Document* pDoc,
+ CPDF_Dictionary* pFontDict) {
+ CFX_ByteString type = pFontDict->GetStringBy("Subtype");
+ CPDF_Font* pFont;
+ if (type == "TrueType") {
+ {
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ || \
+ _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_ || \
+ _FXM_PLATFORM_ == _FXM_PLATFORM_ANDROID_ || \
+ _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+ CFX_ByteString basefont = pFontDict->GetStringBy("BaseFont");
+ CFX_ByteString tag = basefont.Left(4);
+ int i;
+ int count = sizeof(ChineseFontNames) / sizeof(ChineseFontNames[0]);
+ for (i = 0; i < count; ++i) {
+ if (tag == CFX_ByteString((const FX_CHAR*)ChineseFontNames[i])) {
+ break;
+ }
+ }
+ if (i < count) {
+ CPDF_Dictionary* pFontDesc = pFontDict->GetDictBy("FontDescriptor");
+ if (!pFontDesc || !pFontDesc->KeyExist("FontFile2")) {
+ pFont = new CPDF_CIDFont;
+ pFont->m_pFontDict = pFontDict;
+ pFont->m_pDocument = pDoc;
+ pFont->m_BaseFont = pFontDict->GetStringBy("BaseFont");
+ if (!pFont->Load()) {
+ delete pFont;
+ return NULL;
+ }
+ return pFont;
+ }
+ }
+#endif
+ }
+ pFont = new CPDF_TrueTypeFont;
+ } else if (type == "Type3") {
+ pFont = new CPDF_Type3Font;
+ } else if (type == "Type0") {
+ pFont = new CPDF_CIDFont;
+ } else {
+ pFont = new CPDF_Type1Font;
+ }
+ pFont->m_pFontDict = pFontDict;
+ pFont->m_pDocument = pDoc;
+ pFont->m_BaseFont = pFontDict->GetStringBy("BaseFont");
+ if (!pFont->Load()) {
+ delete pFont;
+ return NULL;
+ }
+ return pFont;
+}
+
+CFX_WideString CPDF_ToUnicodeMap::Lookup(FX_DWORD charcode) {
+ auto it = m_Map.find(charcode);
+ if (it != m_Map.end()) {
+ FX_DWORD value = it->second;
+ FX_WCHAR unicode = (FX_WCHAR)(value & 0xffff);
+ if (unicode != 0xffff) {
+ return unicode;
+ }
+ const FX_WCHAR* buf = m_MultiCharBuf.GetBuffer();
+ FX_DWORD buf_len = m_MultiCharBuf.GetLength();
+ if (!buf || buf_len == 0) {
+ return CFX_WideString();
+ }
+ FX_DWORD index = value >> 16;
+ if (index >= buf_len) {
+ return CFX_WideString();
+ }
+ FX_DWORD len = buf[index];
+ if (index + len < index || index + len >= buf_len) {
+ return CFX_WideString();
+ }
+ return CFX_WideString(buf + index + 1, len);
+ }
+ if (m_pBaseMap) {
+ return m_pBaseMap->UnicodeFromCID((FX_WORD)charcode);
+ }
+ return CFX_WideString();
+}
+
+FX_DWORD CPDF_ToUnicodeMap::ReverseLookup(FX_WCHAR unicode) {
+ for (const auto& pair : m_Map) {
+ if (pair.second == unicode)
+ return pair.first;
+ }
+ return 0;
+}
+
+// Static.
+FX_DWORD CPDF_ToUnicodeMap::StringToCode(const CFX_ByteStringC& str) {
+ const FX_CHAR* buf = str.GetCStr();
+ int len = str.GetLength();
+ if (len == 0)
+ return 0;
+
+ int result = 0;
+ if (buf[0] == '<') {
+ for (int i = 1; i < len && std::isxdigit(buf[i]); ++i)
+ result = result * 16 + FXSYS_toHexDigit(buf[i]);
+ return result;
+ }
+
+ for (int i = 0; i < len && std::isdigit(buf[i]); ++i)
+ result = result * 10 + FXSYS_toDecimalDigit(buf[i]);
+
+ return result;
+}
+
+static CFX_WideString StringDataAdd(CFX_WideString str) {
+ CFX_WideString ret;
+ int len = str.GetLength();
+ FX_WCHAR value = 1;
+ for (int i = len - 1; i >= 0; --i) {
+ FX_WCHAR ch = str[i] + value;
+ if (ch < str[i]) {
+ ret.Insert(0, 0);
+ } else {
+ ret.Insert(0, ch);
+ value = 0;
+ }
+ }
+ if (value) {
+ ret.Insert(0, value);
+ }
+ return ret;
+}
+
+// Static.
+CFX_WideString CPDF_ToUnicodeMap::StringToWideString(
+ const CFX_ByteStringC& str) {
+ const FX_CHAR* buf = str.GetCStr();
+ int len = str.GetLength();
+ if (len == 0)
+ return CFX_WideString();
+
+ CFX_WideString result;
+ if (buf[0] == '<') {
+ int byte_pos = 0;
+ FX_WCHAR ch = 0;
+ for (int i = 1; i < len && std::isxdigit(buf[i]); ++i) {
+ ch = ch * 16 + FXSYS_toHexDigit(buf[i]);
+ byte_pos++;
+ if (byte_pos == 4) {
+ result += ch;
+ byte_pos = 0;
+ ch = 0;
+ }
+ }
+ return result;
+ }
+ return result;
+}
+
+void CPDF_ToUnicodeMap::Load(CPDF_Stream* pStream) {
+ CIDSet cid_set = CIDSET_UNKNOWN;
+ CPDF_StreamAcc stream;
+ stream.LoadAllData(pStream, FALSE);
+ CPDF_SimpleParser parser(stream.GetData(), stream.GetSize());
+ while (1) {
+ CFX_ByteStringC word = parser.GetWord();
+ if (word.IsEmpty()) {
+ break;
+ }
+ if (word == "beginbfchar") {
+ while (1) {
+ word = parser.GetWord();
+ if (word.IsEmpty() || word == "endbfchar") {
+ break;
+ }
+ FX_DWORD srccode = StringToCode(word);
+ word = parser.GetWord();
+ CFX_WideString destcode = StringToWideString(word);
+ int len = destcode.GetLength();
+ if (len == 0) {
+ continue;
+ }
+ if (len == 1) {
+ m_Map[srccode] = destcode.GetAt(0);
+ } else {
+ m_Map[srccode] = m_MultiCharBuf.GetLength() * 0x10000 + 0xffff;
+ m_MultiCharBuf.AppendChar(destcode.GetLength());
+ m_MultiCharBuf << destcode;
+ }
+ }
+ } else if (word == "beginbfrange") {
+ while (1) {
+ CFX_ByteString low, high;
+ low = parser.GetWord();
+ if (low.IsEmpty() || low == "endbfrange") {
+ break;
+ }
+ high = parser.GetWord();
+ FX_DWORD lowcode = StringToCode(low);
+ FX_DWORD highcode =
+ (lowcode & 0xffffff00) | (StringToCode(high) & 0xff);
+ if (highcode == (FX_DWORD)-1) {
+ break;
+ }
+ CFX_ByteString start = parser.GetWord();
+ if (start == "[") {
+ for (FX_DWORD code = lowcode; code <= highcode; code++) {
+ CFX_ByteString dest = parser.GetWord();
+ CFX_WideString destcode = StringToWideString(dest);
+ int len = destcode.GetLength();
+ if (len == 0) {
+ continue;
+ }
+ if (len == 1) {
+ m_Map[code] = destcode.GetAt(0);
+ } else {
+ m_Map[code] = m_MultiCharBuf.GetLength() * 0x10000 + 0xffff;
+ m_MultiCharBuf.AppendChar(destcode.GetLength());
+ m_MultiCharBuf << destcode;
+ }
+ }
+ parser.GetWord();
+ } else {
+ CFX_WideString destcode = StringToWideString(start);
+ int len = destcode.GetLength();
+ FX_DWORD value = 0;
+ if (len == 1) {
+ value = StringToCode(start);
+ for (FX_DWORD code = lowcode; code <= highcode; code++) {
+ m_Map[code] = value++;
+ }
+ } else {
+ for (FX_DWORD code = lowcode; code <= highcode; code++) {
+ CFX_WideString retcode;
+ if (code == lowcode) {
+ retcode = destcode;
+ } else {
+ retcode = StringDataAdd(destcode);
+ }
+ m_Map[code] = m_MultiCharBuf.GetLength() * 0x10000 + 0xffff;
+ m_MultiCharBuf.AppendChar(retcode.GetLength());
+ m_MultiCharBuf << retcode;
+ destcode = retcode;
+ }
+ }
+ }
+ }
+ } else if (word == "/Adobe-Korea1-UCS2") {
+ cid_set = CIDSET_KOREA1;
+ } else if (word == "/Adobe-Japan1-UCS2") {
+ cid_set = CIDSET_JAPAN1;
+ } else if (word == "/Adobe-CNS1-UCS2") {
+ cid_set = CIDSET_CNS1;
+ } else if (word == "/Adobe-GB1-UCS2") {
+ cid_set = CIDSET_GB1;
+ }
+ }
+ if (cid_set) {
+ m_pBaseMap = CPDF_ModuleMgr::Get()
+ ->GetPageModule()
+ ->GetFontGlobals()
+ ->m_CMapManager.GetCID2UnicodeMap(cid_set, FALSE);
+ } else {
+ m_pBaseMap = NULL;
+ }
+}
+
+FX_DWORD CPDF_Font::GetNextChar(const FX_CHAR* pString,
+ int nStrLen,
+ int& offset) const {
+ if (offset < 0 || nStrLen < 1) {
+ return 0;
+ }
+ uint8_t ch = offset < nStrLen ? pString[offset++] : pString[nStrLen - 1];
+ return static_cast<FX_DWORD>(ch);
+}
+
+void CPDF_Font::LoadPDFEncoding(CPDF_Object* pEncoding,
+ int& iBaseEncoding,
+ CFX_ByteString*& pCharNames,
+ FX_BOOL bEmbedded,
+ FX_BOOL bTrueType) {
+ if (!pEncoding) {
+ if (m_BaseFont == "Symbol") {
+ iBaseEncoding = bTrueType ? PDFFONT_ENCODING_MS_SYMBOL
+ : PDFFONT_ENCODING_ADOBE_SYMBOL;
+ } else if (!bEmbedded && iBaseEncoding == PDFFONT_ENCODING_BUILTIN) {
+ iBaseEncoding = PDFFONT_ENCODING_WINANSI;
+ }
+ return;
+ }
+ if (pEncoding->IsName()) {
+ if (iBaseEncoding == PDFFONT_ENCODING_ADOBE_SYMBOL ||
+ iBaseEncoding == PDFFONT_ENCODING_ZAPFDINGBATS) {
+ return;
+ }
+ if ((m_Flags & PDFFONT_SYMBOLIC) && m_BaseFont == "Symbol") {
+ if (!bTrueType) {
+ iBaseEncoding = PDFFONT_ENCODING_ADOBE_SYMBOL;
+ }
+ return;
+ }
+ CFX_ByteString bsEncoding = pEncoding->GetString();
+ if (bsEncoding.Compare("MacExpertEncoding") == 0) {
+ bsEncoding = "WinAnsiEncoding";
+ }
+ GetPredefinedEncoding(iBaseEncoding, bsEncoding);
+ return;
+ }
+
+ CPDF_Dictionary* pDict = pEncoding->AsDictionary();
+ if (!pDict)
+ return;
+
+ if (iBaseEncoding != PDFFONT_ENCODING_ADOBE_SYMBOL &&
+ iBaseEncoding != PDFFONT_ENCODING_ZAPFDINGBATS) {
+ CFX_ByteString bsEncoding = pDict->GetStringBy("BaseEncoding");
+ if (bsEncoding.Compare("MacExpertEncoding") == 0 && bTrueType) {
+ bsEncoding = "WinAnsiEncoding";
+ }
+ GetPredefinedEncoding(iBaseEncoding, bsEncoding);
+ }
+ if ((!bEmbedded || bTrueType) && iBaseEncoding == PDFFONT_ENCODING_BUILTIN) {
+ iBaseEncoding = PDFFONT_ENCODING_STANDARD;
+ }
+ CPDF_Array* pDiffs = pDict->GetArrayBy("Differences");
+ if (!pDiffs) {
+ return;
+ }
+ pCharNames = new CFX_ByteString[256];
+ FX_DWORD cur_code = 0;
+ for (FX_DWORD i = 0; i < pDiffs->GetCount(); i++) {
+ CPDF_Object* pElement = pDiffs->GetElementValue(i);
+ if (!pElement)
+ continue;
+
+ if (CPDF_Name* pName = pElement->AsName()) {
+ if (cur_code < 256)
+ pCharNames[cur_code] = pName->GetString();
+ cur_code++;
+ } else {
+ cur_code = pElement->GetInteger();
+ }
+ }
+}
+
+FX_BOOL CPDF_Font::IsStandardFont() const {
+ if (!IsType1Font())
+ return FALSE;
+ if (m_pFontFile)
+ return FALSE;
+ if (AsType1Font()->GetBase14Font() < 0)
+ return FALSE;
+ return TRUE;
+}
+
+CPDF_SimpleFont::CPDF_SimpleFont()
+ : m_pCharNames(nullptr), m_BaseEncoding(PDFFONT_ENCODING_BUILTIN) {
+ FXSYS_memset(m_CharWidth, 0xff, sizeof m_CharWidth);
+ FXSYS_memset(m_GlyphIndex, 0xff, sizeof m_GlyphIndex);
+ FXSYS_memset(m_ExtGID, 0xff, sizeof m_ExtGID);
+}
+
+CPDF_SimpleFont::~CPDF_SimpleFont() {
+ delete[] m_pCharNames;
+}
+
+int CPDF_SimpleFont::GlyphFromCharCode(FX_DWORD charcode, FX_BOOL* pVertGlyph) {
+ if (pVertGlyph) {
+ *pVertGlyph = FALSE;
+ }
+ if (charcode > 0xff) {
+ return -1;
+ }
+ int index = m_GlyphIndex[(uint8_t)charcode];
+ if (index == 0xffff) {
+ return -1;
+ }
+ return index;
+}
+
+void CPDF_SimpleFont::LoadCharMetrics(int charcode) {
+ if (!m_Font.GetFace())
+ return;
+
+ if (charcode < 0 || charcode > 0xff) {
+ return;
+ }
+ int glyph_index = m_GlyphIndex[charcode];
+ if (glyph_index == 0xffff) {
+ if (!m_pFontFile && charcode != 32) {
+ LoadCharMetrics(32);
+ m_CharBBox[charcode] = m_CharBBox[32];
+ if (m_bUseFontWidth) {
+ m_CharWidth[charcode] = m_CharWidth[32];
+ }
+ }
+ return;
+ }
+ FXFT_Face face = m_Font.GetFace();
+ int err = FXFT_Load_Glyph(
+ face, glyph_index,
+ FXFT_LOAD_NO_SCALE | FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH);
+ if (err) {
+ return;
+ }
+ m_CharBBox[charcode] = FX_SMALL_RECT(
+ TT2PDF(FXFT_Get_Glyph_HoriBearingX(face), face),
+ TT2PDF(FXFT_Get_Glyph_HoriBearingY(face), face),
+ TT2PDF(FXFT_Get_Glyph_HoriBearingX(face) + FXFT_Get_Glyph_Width(face),
+ face),
+ TT2PDF(FXFT_Get_Glyph_HoriBearingY(face) - FXFT_Get_Glyph_Height(face),
+ face));
+
+ if (m_bUseFontWidth) {
+ int TT_Width = TT2PDF(FXFT_Get_Glyph_HoriAdvance(face), face);
+ if (m_CharWidth[charcode] == 0xffff) {
+ m_CharWidth[charcode] = TT_Width;
+ } else if (TT_Width && !IsEmbedded()) {
+ m_CharBBox[charcode].right =
+ m_CharBBox[charcode].right * m_CharWidth[charcode] / TT_Width;
+ m_CharBBox[charcode].left =
+ m_CharBBox[charcode].left * m_CharWidth[charcode] / TT_Width;
+ }
+ }
+}
+
+int CPDF_SimpleFont::GetCharWidthF(FX_DWORD charcode, int level) {
+ if (charcode > 0xff) {
+ charcode = 0;
+ }
+ if (m_CharWidth[charcode] == 0xffff) {
+ LoadCharMetrics(charcode);
+ if (m_CharWidth[charcode] == 0xffff) {
+ m_CharWidth[charcode] = 0;
+ }
+ }
+ return (int16_t)m_CharWidth[charcode];
+}
+
+FX_RECT CPDF_SimpleFont::GetCharBBox(FX_DWORD charcode, int level) {
+ if (charcode > 0xff)
+ charcode = 0;
+
+ if (m_CharBBox[charcode].left == FX_SMALL_RECT::kInvalid)
+ LoadCharMetrics(charcode);
+
+ return FX_RECT(m_CharBBox[charcode]);
+}
+
+const FX_CHAR* GetAdobeCharName(int iBaseEncoding,
+ const CFX_ByteString* pCharNames,
+ int charcode) {
+ ASSERT(charcode >= 0 && charcode < 256);
+ if (charcode < 0 || charcode >= 256) {
+ return NULL;
+ }
+ const FX_CHAR* name = NULL;
+ if (pCharNames) {
+ name = pCharNames[charcode];
+ }
+ if ((!name || name[0] == 0) && iBaseEncoding) {
+ name = PDF_CharNameFromPredefinedCharSet(iBaseEncoding, charcode);
+ }
+ return name && name[0] ? name : nullptr;
+}
+
+FX_BOOL CPDF_SimpleFont::LoadCommon() {
+ CPDF_Dictionary* pFontDesc = m_pFontDict->GetDictBy("FontDescriptor");
+ if (pFontDesc) {
+ LoadFontDescriptor(pFontDesc);
+ }
+ CPDF_Array* pWidthArray = m_pFontDict->GetArrayBy("Widths");
+ int width_start = 0, width_end = -1;
+ m_bUseFontWidth = TRUE;
+ if (pWidthArray) {
+ m_bUseFontWidth = FALSE;
+ if (pFontDesc && pFontDesc->KeyExist("MissingWidth")) {
+ int MissingWidth = pFontDesc->GetIntegerBy("MissingWidth");
+ for (int i = 0; i < 256; i++) {
+ m_CharWidth[i] = MissingWidth;
+ }
+ }
+ width_start = m_pFontDict->GetIntegerBy("FirstChar", 0);
+ width_end = m_pFontDict->GetIntegerBy("LastChar", 0);
+ if (width_start >= 0 && width_start <= 255) {
+ if (width_end <= 0 ||
+ width_end >= width_start + (int)pWidthArray->GetCount()) {
+ width_end = width_start + pWidthArray->GetCount() - 1;
+ }
+ if (width_end > 255) {
+ width_end = 255;
+ }
+ for (int i = width_start; i <= width_end; i++) {
+ m_CharWidth[i] = pWidthArray->GetIntegerAt(i - width_start);
+ }
+ }
+ }
+ if (m_pFontFile) {
+ if (m_BaseFont.GetLength() > 8 && m_BaseFont[7] == '+') {
+ m_BaseFont = m_BaseFont.Mid(8);
+ }
+ } else {
+ LoadSubstFont();
+ }
+ if (!(m_Flags & PDFFONT_SYMBOLIC)) {
+ m_BaseEncoding = PDFFONT_ENCODING_STANDARD;
+ }
+ CPDF_Object* pEncoding = m_pFontDict->GetElementValue("Encoding");
+ LoadPDFEncoding(pEncoding, m_BaseEncoding, m_pCharNames, m_pFontFile != NULL,
+ m_Font.IsTTFont());
+ LoadGlyphMap();
+ delete[] m_pCharNames;
+ m_pCharNames = NULL;
+ if (!m_Font.GetFace())
+ return TRUE;
+
+ if (m_Flags & PDFFONT_ALLCAP) {
+ unsigned char lowercases[] = {'a', 'z', 0xe0, 0xf6, 0xf8, 0xfd};
+ for (size_t range = 0; range < sizeof lowercases / 2; range++) {
+ for (int i = lowercases[range * 2]; i <= lowercases[range * 2 + 1]; i++) {
+ if (m_GlyphIndex[i] != 0xffff && m_pFontFile) {
+ continue;
+ }
+ m_GlyphIndex[i] = m_GlyphIndex[i - 32];
+ if (m_CharWidth[i - 32]) {
+ m_CharWidth[i] = m_CharWidth[i - 32];
+ m_CharBBox[i] = m_CharBBox[i - 32];
+ }
+ }
+ }
+ }
+ CheckFontMetrics();
+ return TRUE;
+}
+
+void CPDF_SimpleFont::LoadSubstFont() {
+ if (!m_bUseFontWidth && !(m_Flags & PDFFONT_FIXEDPITCH)) {
+ int width = 0, i;
+ for (i = 0; i < 256; i++) {
+ if (m_CharWidth[i] == 0 || m_CharWidth[i] == 0xffff) {
+ continue;
+ }
+ if (width == 0) {
+ width = m_CharWidth[i];
+ } else if (width != m_CharWidth[i]) {
+ break;
+ }
+ }
+ if (i == 256 && width) {
+ m_Flags |= PDFFONT_FIXEDPITCH;
+ }
+ }
+ int weight = m_StemV < 140 ? m_StemV * 5 : (m_StemV * 4 + 140);
+ m_Font.LoadSubst(m_BaseFont, IsTrueTypeFont(), m_Flags, weight, m_ItalicAngle,
+ 0);
+ if (m_Font.GetSubstFont()->m_SubstFlags & FXFONT_SUBST_NONSYMBOL) {
+ }
+}
+
+FX_BOOL CPDF_SimpleFont::IsUnicodeCompatible() const {
+ return m_BaseEncoding != PDFFONT_ENCODING_BUILTIN &&
+ m_BaseEncoding != PDFFONT_ENCODING_ADOBE_SYMBOL &&
+ m_BaseEncoding != PDFFONT_ENCODING_ZAPFDINGBATS;
+}
+
+CFX_WideString CPDF_SimpleFont::UnicodeFromCharCode(FX_DWORD charcode) const {
+ CFX_WideString unicode = CPDF_Font::UnicodeFromCharCode(charcode);
+ if (!unicode.IsEmpty())
+ return unicode;
+ FX_WCHAR ret = m_Encoding.UnicodeFromCharCode((uint8_t)charcode);
+ if (ret == 0)
+ return CFX_WideString();
+ return ret;
+}
+
+FX_DWORD CPDF_SimpleFont::CharCodeFromUnicode(FX_WCHAR unicode) const {
+ FX_DWORD ret = CPDF_Font::CharCodeFromUnicode(unicode);
+ if (ret)
+ return ret;
+ return m_Encoding.CharCodeFromUnicode(unicode);
+}
+
+CPDF_Type1Font::CPDF_Type1Font() : m_Base14Font(-1) {}
+
+bool CPDF_Type1Font::IsType1Font() const {
+ return true;
+}
+
+const CPDF_Type1Font* CPDF_Type1Font::AsType1Font() const {
+ return this;
+}
+
+CPDF_Type1Font* CPDF_Type1Font::AsType1Font() {
+ return this;
+}
+
+FX_BOOL CPDF_Type1Font::Load() {
+ m_Base14Font = PDF_GetStandardFontName(&m_BaseFont);
+ if (m_Base14Font >= 0) {
+ CPDF_Dictionary* pFontDesc = m_pFontDict->GetDictBy("FontDescriptor");
+ if (pFontDesc && pFontDesc->KeyExist("Flags"))
+ m_Flags = pFontDesc->GetIntegerBy("Flags");
+ else
+ m_Flags = m_Base14Font >= 12 ? PDFFONT_SYMBOLIC : PDFFONT_NONSYMBOLIC;
+
+ if (m_Base14Font < 4) {
+ for (int i = 0; i < 256; i++)
+ m_CharWidth[i] = 600;
+ }
+ if (m_Base14Font == 12)
+ m_BaseEncoding = PDFFONT_ENCODING_ADOBE_SYMBOL;
+ else if (m_Base14Font == 13)
+ m_BaseEncoding = PDFFONT_ENCODING_ZAPFDINGBATS;
+ else if (m_Flags & PDFFONT_NONSYMBOLIC)
+ m_BaseEncoding = PDFFONT_ENCODING_STANDARD;
+ }
+ return LoadCommon();
+}
+
+int CPDF_Type1Font::GlyphFromCharCodeExt(FX_DWORD charcode) {
+ if (charcode > 0xff) {
+ return -1;
+ }
+ int index = m_ExtGID[(uint8_t)charcode];
+ if (index == 0xffff) {
+ return -1;
+ }
+ return index;
+}
+
+void CPDF_Type1Font::LoadGlyphMap() {
+ if (!m_Font.GetFace())
+ return;
+
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+ FX_BOOL bCoreText = TRUE;
+ CQuartz2D& quartz2d =
+ ((CApplePlatform*)CFX_GEModule::Get()->GetPlatformData())->_quartz2d;
+ if (!m_Font.GetPlatformFont()) {
+ if (m_Font.GetPsName() == CFX_WideString::FromLocal("DFHeiStd-W5")) {
+ bCoreText = FALSE;
+ }
+ m_Font.SetPlatformFont(
+ quartz2d.CreateFont(m_Font.GetFontData(), m_Font.GetSize()));
+ if (!m_Font.GetPlatformFont()) {
+ bCoreText = FALSE;
+ }
+ }
+#endif
+ if (!IsEmbedded() && (m_Base14Font < 12) && m_Font.IsTTFont()) {
+ if (FT_UseTTCharmap(m_Font.GetFace(), 3, 0)) {
+ FX_BOOL bGotOne = FALSE;
+ for (int charcode = 0; charcode < 256; charcode++) {
+ const uint8_t prefix[4] = {0x00, 0xf0, 0xf1, 0xf2};
+ for (int j = 0; j < 4; j++) {
+ FX_WORD unicode = prefix[j] * 256 + charcode;
+ m_GlyphIndex[charcode] =
+ FXFT_Get_Char_Index(m_Font.GetFace(), unicode);
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+ FX_CHAR name_glyph[256];
+ FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode],
+ name_glyph, 256);
+ name_glyph[255] = 0;
+ CFStringRef name_ct = CFStringCreateWithCStringNoCopy(
+ kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII,
+ kCFAllocatorNull);
+ m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName(
+ (CGFontRef)m_Font.GetPlatformFont(), name_ct);
+ if (name_ct) {
+ CFRelease(name_ct);
+ }
+#endif
+ if (m_GlyphIndex[charcode]) {
+ bGotOne = TRUE;
+ break;
+ }
+ }
+ }
+ if (bGotOne) {
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+ if (!bCoreText) {
+ FXSYS_memcpy(m_ExtGID, m_GlyphIndex, 256);
+ }
+#endif
+ return;
+ }
+ }
+ FXFT_Select_Charmap(m_Font.GetFace(), FXFT_ENCODING_UNICODE);
+ if (m_BaseEncoding == 0) {
+ m_BaseEncoding = PDFFONT_ENCODING_STANDARD;
+ }
+ for (int charcode = 0; charcode < 256; charcode++) {
+ const FX_CHAR* name =
+ GetAdobeCharName(m_BaseEncoding, m_pCharNames, charcode);
+ if (!name) {
+ continue;
+ }
+ m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name);
+ m_GlyphIndex[charcode] = FXFT_Get_Char_Index(
+ m_Font.GetFace(), m_Encoding.m_Unicodes[charcode]);
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+ FX_CHAR name_glyph[256];
+ FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode], name_glyph,
+ 256);
+ name_glyph[255] = 0;
+ CFStringRef name_ct = CFStringCreateWithCStringNoCopy(
+ kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII,
+ kCFAllocatorNull);
+ m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName(
+ (CGFontRef)m_Font.GetPlatformFont(), name_ct);
+ if (name_ct) {
+ CFRelease(name_ct);
+ }
+#endif
+ if (m_GlyphIndex[charcode] == 0 && FXSYS_strcmp(name, ".notdef") == 0) {
+ m_Encoding.m_Unicodes[charcode] = 0x20;
+ m_GlyphIndex[charcode] = FXFT_Get_Char_Index(m_Font.GetFace(), 0x20);
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+ FX_CHAR name_glyph[256];
+ FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode],
+ name_glyph, 256);
+ name_glyph[255] = 0;
+ CFStringRef name_ct = CFStringCreateWithCStringNoCopy(
+ kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII,
+ kCFAllocatorNull);
+ m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName(
+ (CGFontRef)m_Font.GetPlatformFont(), name_ct);
+ if (name_ct) {
+ CFRelease(name_ct);
+ }
+#endif
+ }
+ }
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+ if (!bCoreText) {
+ FXSYS_memcpy(m_ExtGID, m_GlyphIndex, 256);
+ }
+#endif
+ return;
+ }
+ FT_UseType1Charmap(m_Font.GetFace());
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+ if (bCoreText) {
+ if (m_Flags & PDFFONT_SYMBOLIC) {
+ for (int charcode = 0; charcode < 256; charcode++) {
+ const FX_CHAR* name =
+ GetAdobeCharName(m_BaseEncoding, m_pCharNames, charcode);
+ if (name) {
+ m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name);
+ m_GlyphIndex[charcode] =
+ FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name);
+ CFStringRef name_ct = CFStringCreateWithCStringNoCopy(
+ kCFAllocatorDefault, name, kCFStringEncodingASCII,
+ kCFAllocatorNull);
+ m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName(
+ (CGFontRef)m_Font.GetPlatformFont(), name_ct);
+ if (name_ct) {
+ CFRelease(name_ct);
+ }
+ } else {
+ m_GlyphIndex[charcode] =
+ FXFT_Get_Char_Index(m_Font.GetFace(), charcode);
+ FX_WCHAR unicode = 0;
+ if (m_GlyphIndex[charcode]) {
+ unicode =
+ FT_UnicodeFromCharCode(PDFFONT_ENCODING_STANDARD, charcode);
+ }
+ FX_CHAR name_glyph[256];
+ FXSYS_memset(name_glyph, 0, sizeof(name_glyph));
+ FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode],
+ name_glyph, 256);
+ name_glyph[255] = 0;
+ if (unicode == 0 && name_glyph[0] != 0) {
+ unicode = PDF_UnicodeFromAdobeName(name_glyph);
+ }
+ m_Encoding.m_Unicodes[charcode] = unicode;
+ CFStringRef name_ct = CFStringCreateWithCStringNoCopy(
+ kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII,
+ kCFAllocatorNull);
+ m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName(
+ (CGFontRef)m_Font.GetPlatformFont(), name_ct);
+ if (name_ct) {
+ CFRelease(name_ct);
+ }
+ }
+ }
+ return;
+ }
+ FX_BOOL bUnicode = FALSE;
+ if (0 == FXFT_Select_Charmap(m_Font.GetFace(), FXFT_ENCODING_UNICODE)) {
+ bUnicode = TRUE;
+ }
+ for (int charcode = 0; charcode < 256; charcode++) {
+ const FX_CHAR* name =
+ GetAdobeCharName(m_BaseEncoding, m_pCharNames, charcode);
+ if (!name) {
+ continue;
+ }
+ m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name);
+ const FX_CHAR* pStrUnicode = GlyphNameRemap(name);
+ if (pStrUnicode &&
+ 0 == FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name)) {
+ name = pStrUnicode;
+ }
+ m_GlyphIndex[charcode] =
+ FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name);
+ CFStringRef name_ct = CFStringCreateWithCStringNoCopy(
+ kCFAllocatorDefault, name, kCFStringEncodingASCII, kCFAllocatorNull);
+ m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName(
+ (CGFontRef)m_Font.GetPlatformFont(), name_ct);
+ if (name_ct) {
+ CFRelease(name_ct);
+ }
+ if (m_GlyphIndex[charcode] == 0) {
+ if (FXSYS_strcmp(name, ".notdef") != 0 &&
+ FXSYS_strcmp(name, "space") != 0) {
+ m_GlyphIndex[charcode] = FXFT_Get_Char_Index(
+ m_Font.GetFace(),
+ bUnicode ? m_Encoding.m_Unicodes[charcode] : charcode);
+ FX_CHAR name_glyph[256];
+ FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode],
+ name_glyph, 256);
+ name_glyph[255] = 0;
+ CFStringRef name_ct = CFStringCreateWithCStringNoCopy(
+ kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII,
+ kCFAllocatorNull);
+ m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName(
+ (CGFontRef)m_Font.GetPlatformFont(), name_ct);
+ if (name_ct) {
+ CFRelease(name_ct);
+ }
+ } else {
+ m_Encoding.m_Unicodes[charcode] = 0x20;
+ m_GlyphIndex[charcode] =
+ bUnicode ? FXFT_Get_Char_Index(m_Font.GetFace(), 0x20) : 0xffff;
+ FX_CHAR name_glyph[256];
+ FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode],
+ name_glyph, 256);
+ name_glyph[255] = 0;
+ CFStringRef name_ct = CFStringCreateWithCStringNoCopy(
+ kCFAllocatorDefault, name_glyph, kCFStringEncodingASCII,
+ kCFAllocatorNull);
+ m_ExtGID[charcode] = CGFontGetGlyphWithGlyphName(
+ (CGFontRef)m_Font.GetPlatformFont(), name_ct);
+ if (name_ct) {
+ CFRelease(name_ct);
+ }
+ }
+ }
+ }
+ return;
+ }
+#endif
+ if (m_Flags & PDFFONT_SYMBOLIC) {
+ for (int charcode = 0; charcode < 256; charcode++) {
+ const FX_CHAR* name =
+ GetAdobeCharName(m_BaseEncoding, m_pCharNames, charcode);
+ if (name) {
+ m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name);
+ m_GlyphIndex[charcode] =
+ FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name);
+ } else {
+ m_GlyphIndex[charcode] =
+ FXFT_Get_Char_Index(m_Font.GetFace(), charcode);
+ if (m_GlyphIndex[charcode]) {
+ FX_WCHAR unicode =
+ FT_UnicodeFromCharCode(PDFFONT_ENCODING_STANDARD, charcode);
+ if (unicode == 0) {
+ FX_CHAR name_glyph[256];
+ FXSYS_memset(name_glyph, 0, sizeof(name_glyph));
+ FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode],
+ name_glyph, 256);
+ name_glyph[255] = 0;
+ if (name_glyph[0] != 0) {
+ unicode = PDF_UnicodeFromAdobeName(name_glyph);
+ }
+ }
+ m_Encoding.m_Unicodes[charcode] = unicode;
+ }
+ }
+ }
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+ if (!bCoreText) {
+ FXSYS_memcpy(m_ExtGID, m_GlyphIndex, 256);
+ }
+#endif
+ return;
+ }
+ FX_BOOL bUnicode = FALSE;
+ if (0 == FXFT_Select_Charmap(m_Font.GetFace(), FXFT_ENCODING_UNICODE)) {
+ bUnicode = TRUE;
+ }
+ for (int charcode = 0; charcode < 256; charcode++) {
+ const FX_CHAR* name =
+ GetAdobeCharName(m_BaseEncoding, m_pCharNames, charcode);
+ if (!name) {
+ continue;
+ }
+ m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name);
+ m_GlyphIndex[charcode] = FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name);
+ if (m_GlyphIndex[charcode] == 0) {
+ if (FXSYS_strcmp(name, ".notdef") != 0 &&
+ FXSYS_strcmp(name, "space") != 0) {
+ m_GlyphIndex[charcode] = FXFT_Get_Char_Index(
+ m_Font.GetFace(),
+ bUnicode ? m_Encoding.m_Unicodes[charcode] : charcode);
+ } else {
+ m_Encoding.m_Unicodes[charcode] = 0x20;
+ m_GlyphIndex[charcode] = 0xffff;
+ }
+ }
+ }
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+ if (!bCoreText) {
+ FXSYS_memcpy(m_ExtGID, m_GlyphIndex, 256);
+ }
+#endif
+}
+
+CPDF_FontEncoding::CPDF_FontEncoding() {
+ FXSYS_memset(m_Unicodes, 0, sizeof(m_Unicodes));
+}
+
+int CPDF_FontEncoding::CharCodeFromUnicode(FX_WCHAR unicode) const {
+ for (int i = 0; i < 256; i++)
+ if (m_Unicodes[i] == unicode) {
+ return i;
+ }
+ return -1;
+}
+
+CPDF_FontEncoding::CPDF_FontEncoding(int PredefinedEncoding) {
+ const FX_WORD* pSrc = PDF_UnicodesForPredefinedCharSet(PredefinedEncoding);
+ if (!pSrc) {
+ FXSYS_memset(m_Unicodes, 0, sizeof(m_Unicodes));
+ } else {
+ for (int i = 0; i < 256; i++)
+ m_Unicodes[i] = pSrc[i];
+ }
+}
+
+FX_BOOL CPDF_FontEncoding::IsIdentical(CPDF_FontEncoding* pAnother) const {
+ return FXSYS_memcmp(m_Unicodes, pAnother->m_Unicodes, sizeof(m_Unicodes)) ==
+ 0;
+}
+
+CPDF_Object* CPDF_FontEncoding::Realize() {
+ int predefined = 0;
+ for (int cs = PDFFONT_ENCODING_WINANSI; cs < PDFFONT_ENCODING_ZAPFDINGBATS;
+ cs++) {
+ const FX_WORD* pSrc = PDF_UnicodesForPredefinedCharSet(cs);
+ FX_BOOL match = TRUE;
+ for (int i = 0; i < 256; ++i) {
+ if (m_Unicodes[i] != pSrc[i]) {
+ match = FALSE;
+ break;
+ }
+ }
+ if (match) {
+ predefined = cs;
+ break;
+ }
+ }
+ if (predefined) {
+ if (predefined == PDFFONT_ENCODING_WINANSI) {
+ return new CPDF_Name("WinAnsiEncoding");
+ }
+ if (predefined == PDFFONT_ENCODING_MACROMAN) {
+ return new CPDF_Name("MacRomanEncoding");
+ }
+ if (predefined == PDFFONT_ENCODING_MACEXPERT) {
+ return new CPDF_Name("MacExpertEncoding");
+ }
+ return NULL;
+ }
+ const FX_WORD* pStandard =
+ PDF_UnicodesForPredefinedCharSet(PDFFONT_ENCODING_WINANSI);
+ CPDF_Array* pDiff = new CPDF_Array;
+ for (int i = 0; i < 256; i++) {
+ if (pStandard[i] == m_Unicodes[i]) {
+ continue;
+ }
+ pDiff->Add(new CPDF_Number(i));
+ pDiff->Add(new CPDF_Name(PDF_AdobeNameFromUnicode(m_Unicodes[i])));
+ }
+
+ CPDF_Dictionary* pDict = new CPDF_Dictionary;
+ pDict->SetAtName("BaseEncoding", "WinAnsiEncoding");
+ pDict->SetAt("Differences", pDiff);
+ return pDict;
+}
+
+CPDF_TrueTypeFont::CPDF_TrueTypeFont() {}
+
+bool CPDF_TrueTypeFont::IsTrueTypeFont() const {
+ return true;
+}
+
+const CPDF_TrueTypeFont* CPDF_TrueTypeFont::AsTrueTypeFont() const {
+ return this;
+}
+
+CPDF_TrueTypeFont* CPDF_TrueTypeFont::AsTrueTypeFont() {
+ return this;
+}
+
+FX_BOOL CPDF_TrueTypeFont::Load() {
+ return LoadCommon();
+}
+
+void CPDF_TrueTypeFont::LoadGlyphMap() {
+ if (!m_Font.GetFace())
+ return;
+
+ int baseEncoding = m_BaseEncoding;
+ if (m_pFontFile && m_Font.GetFace()->num_charmaps > 0 &&
+ (baseEncoding == PDFFONT_ENCODING_MACROMAN ||
+ baseEncoding == PDFFONT_ENCODING_WINANSI) &&
+ (m_Flags & PDFFONT_SYMBOLIC)) {
+ FX_BOOL bSupportWin = FALSE;
+ FX_BOOL bSupportMac = FALSE;
+ for (int i = 0; i < FXFT_Get_Face_CharmapCount(m_Font.GetFace()); i++) {
+ int platform_id = FXFT_Get_Charmap_PlatformID(
+ FXFT_Get_Face_Charmaps(m_Font.GetFace())[i]);
+ if (platform_id == 0 || platform_id == 3) {
+ bSupportWin = TRUE;
+ } else if (platform_id == 0 || platform_id == 1) {
+ bSupportMac = TRUE;
+ }
+ }
+ if (baseEncoding == PDFFONT_ENCODING_WINANSI && !bSupportWin) {
+ baseEncoding =
+ bSupportMac ? PDFFONT_ENCODING_MACROMAN : PDFFONT_ENCODING_BUILTIN;
+ } else if (baseEncoding == PDFFONT_ENCODING_MACROMAN && !bSupportMac) {
+ baseEncoding =
+ bSupportWin ? PDFFONT_ENCODING_WINANSI : PDFFONT_ENCODING_BUILTIN;
+ }
+ }
+ if (((baseEncoding == PDFFONT_ENCODING_MACROMAN ||
+ baseEncoding == PDFFONT_ENCODING_WINANSI) &&
+ !m_pCharNames) ||
+ (m_Flags & PDFFONT_NONSYMBOLIC)) {
+ if (!FXFT_Has_Glyph_Names(m_Font.GetFace()) &&
+ (!m_Font.GetFace()->num_charmaps || !m_Font.GetFace()->charmaps)) {
+ int nStartChar = m_pFontDict->GetIntegerBy("FirstChar");
+ if (nStartChar < 0 || nStartChar > 255)
+ return;
+
+ int charcode = 0;
+ for (; charcode < nStartChar; charcode++) {
+ m_GlyphIndex[charcode] = 0;
+ }
+ FX_WORD nGlyph = charcode - nStartChar + 3;
+ for (; charcode < 256; charcode++, nGlyph++) {
+ m_GlyphIndex[charcode] = nGlyph;
+ }
+ return;
+ }
+ FX_BOOL bMSUnicode = FT_UseTTCharmap(m_Font.GetFace(), 3, 1);
+ FX_BOOL bMacRoman = FALSE, bMSSymbol = FALSE;
+ if (!bMSUnicode) {
+ if (m_Flags & PDFFONT_NONSYMBOLIC) {
+ bMacRoman = FT_UseTTCharmap(m_Font.GetFace(), 1, 0);
+ bMSSymbol = !bMacRoman && FT_UseTTCharmap(m_Font.GetFace(), 3, 0);
+ } else {
+ bMSSymbol = FT_UseTTCharmap(m_Font.GetFace(), 3, 0);
+ bMacRoman = !bMSSymbol && FT_UseTTCharmap(m_Font.GetFace(), 1, 0);
+ }
+ }
+ FX_BOOL bToUnicode = m_pFontDict->KeyExist("ToUnicode");
+ for (int charcode = 0; charcode < 256; charcode++) {
+ const FX_CHAR* name =
+ GetAdobeCharName(baseEncoding, m_pCharNames, charcode);
+ if (!name) {
+ m_GlyphIndex[charcode] =
+ m_pFontFile ? FXFT_Get_Char_Index(m_Font.GetFace(), charcode) : -1;
+ continue;
+ }
+ m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name);
+ if (bMSSymbol) {
+ const uint8_t prefix[4] = {0x00, 0xf0, 0xf1, 0xf2};
+ for (int j = 0; j < 4; j++) {
+ FX_WORD unicode = prefix[j] * 256 + charcode;
+ m_GlyphIndex[charcode] =
+ FXFT_Get_Char_Index(m_Font.GetFace(), unicode);
+ if (m_GlyphIndex[charcode]) {
+ break;
+ }
+ }
+ } else if (m_Encoding.m_Unicodes[charcode]) {
+ if (bMSUnicode) {
+ m_GlyphIndex[charcode] = FXFT_Get_Char_Index(
+ m_Font.GetFace(), m_Encoding.m_Unicodes[charcode]);
+ } else if (bMacRoman) {
+ FX_DWORD maccode = FT_CharCodeFromUnicode(
+ FXFT_ENCODING_APPLE_ROMAN, m_Encoding.m_Unicodes[charcode]);
+ if (!maccode) {
+ m_GlyphIndex[charcode] =
+ FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name);
+ } else {
+ m_GlyphIndex[charcode] =
+ FXFT_Get_Char_Index(m_Font.GetFace(), maccode);
+ }
+ }
+ }
+ if ((m_GlyphIndex[charcode] == 0 || m_GlyphIndex[charcode] == 0xffff) &&
+ name) {
+ if (name[0] == '.' && FXSYS_strcmp(name, ".notdef") == 0) {
+ m_GlyphIndex[charcode] = FXFT_Get_Char_Index(m_Font.GetFace(), 32);
+ } else {
+ m_GlyphIndex[charcode] =
+ FXFT_Get_Name_Index(m_Font.GetFace(), (char*)name);
+ if (m_GlyphIndex[charcode] == 0) {
+ if (bToUnicode) {
+ CFX_WideString wsUnicode = UnicodeFromCharCode(charcode);
+ if (!wsUnicode.IsEmpty()) {
+ m_GlyphIndex[charcode] =
+ FXFT_Get_Char_Index(m_Font.GetFace(), wsUnicode[0]);
+ m_Encoding.m_Unicodes[charcode] = wsUnicode[0];
+ }
+ }
+ if (m_GlyphIndex[charcode] == 0) {
+ m_GlyphIndex[charcode] =
+ FXFT_Get_Char_Index(m_Font.GetFace(), charcode);
+ }
+ }
+ }
+ }
+ }
+ return;
+ }
+ if (FT_UseTTCharmap(m_Font.GetFace(), 3, 0)) {
+ const uint8_t prefix[4] = {0x00, 0xf0, 0xf1, 0xf2};
+ FX_BOOL bGotOne = FALSE;
+ for (int charcode = 0; charcode < 256; charcode++) {
+ for (int j = 0; j < 4; j++) {
+ FX_WORD unicode = prefix[j] * 256 + charcode;
+ m_GlyphIndex[charcode] = FXFT_Get_Char_Index(m_Font.GetFace(), unicode);
+ if (m_GlyphIndex[charcode]) {
+ bGotOne = TRUE;
+ break;
+ }
+ }
+ }
+ if (bGotOne) {
+ if (baseEncoding != PDFFONT_ENCODING_BUILTIN) {
+ for (int charcode = 0; charcode < 256; charcode++) {
+ const FX_CHAR* name =
+ GetAdobeCharName(baseEncoding, m_pCharNames, charcode);
+ if (!name) {
+ continue;
+ }
+ m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name);
+ }
+ } else if (FT_UseTTCharmap(m_Font.GetFace(), 1, 0)) {
+ for (int charcode = 0; charcode < 256; charcode++) {
+ m_Encoding.m_Unicodes[charcode] =
+ FT_UnicodeFromCharCode(FXFT_ENCODING_APPLE_ROMAN, charcode);
+ }
+ }
+ return;
+ }
+ }
+ if (FT_UseTTCharmap(m_Font.GetFace(), 1, 0)) {
+ FX_BOOL bGotOne = FALSE;
+ for (int charcode = 0; charcode < 256; charcode++) {
+ m_GlyphIndex[charcode] = FXFT_Get_Char_Index(m_Font.GetFace(), charcode);
+ m_Encoding.m_Unicodes[charcode] =
+ FT_UnicodeFromCharCode(FXFT_ENCODING_APPLE_ROMAN, charcode);
+ if (m_GlyphIndex[charcode]) {
+ bGotOne = TRUE;
+ }
+ }
+ if (m_pFontFile || bGotOne) {
+ return;
+ }
+ }
+ if (FXFT_Select_Charmap(m_Font.GetFace(), FXFT_ENCODING_UNICODE) == 0) {
+ FX_BOOL bGotOne = FALSE;
+ const FX_WORD* pUnicodes = PDF_UnicodesForPredefinedCharSet(baseEncoding);
+ for (int charcode = 0; charcode < 256; charcode++) {
+ if (m_pFontFile) {
+ m_Encoding.m_Unicodes[charcode] = charcode;
+ } else {
+ const FX_CHAR* name = GetAdobeCharName(0, m_pCharNames, charcode);
+ if (name) {
+ m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name);
+ } else if (pUnicodes) {
+ m_Encoding.m_Unicodes[charcode] = pUnicodes[charcode];
+ }
+ }
+ m_GlyphIndex[charcode] = FXFT_Get_Char_Index(
+ m_Font.GetFace(), m_Encoding.m_Unicodes[charcode]);
+ if (m_GlyphIndex[charcode]) {
+ bGotOne = TRUE;
+ }
+ }
+ if (bGotOne) {
+ return;
+ }
+ }
+ for (int charcode = 0; charcode < 256; charcode++) {
+ m_GlyphIndex[charcode] = charcode;
+ }
+}
+
+CPDF_Type3Font::CPDF_Type3Font()
+ : m_pCharProcs(nullptr),
+ m_pPageResources(nullptr),
+ m_pFontResources(nullptr) {
+ FXSYS_memset(m_CharWidthL, 0, sizeof(m_CharWidthL));
+}
+
+CPDF_Type3Font::~CPDF_Type3Font() {
+ for (auto it : m_CacheMap)
+ delete it.second;
+}
+
+bool CPDF_Type3Font::IsType3Font() const {
+ return true;
+}
+
+const CPDF_Type3Font* CPDF_Type3Font::AsType3Font() const {
+ return this;
+}
+
+CPDF_Type3Font* CPDF_Type3Font::AsType3Font() {
+ return this;
+}
+
+FX_BOOL CPDF_Type3Font::Load() {
+ m_pFontResources = m_pFontDict->GetDictBy("Resources");
+ CPDF_Array* pMatrix = m_pFontDict->GetArrayBy("FontMatrix");
+ FX_FLOAT xscale = 1.0f, yscale = 1.0f;
+ if (pMatrix) {
+ m_FontMatrix = pMatrix->GetMatrix();
+ xscale = m_FontMatrix.a;
+ yscale = m_FontMatrix.d;
+ }
+ CPDF_Array* pBBox = m_pFontDict->GetArrayBy("FontBBox");
+ if (pBBox) {
+ m_FontBBox.left = (int32_t)(pBBox->GetNumberAt(0) * xscale * 1000);
+ m_FontBBox.bottom = (int32_t)(pBBox->GetNumberAt(1) * yscale * 1000);
+ m_FontBBox.right = (int32_t)(pBBox->GetNumberAt(2) * xscale * 1000);
+ m_FontBBox.top = (int32_t)(pBBox->GetNumberAt(3) * yscale * 1000);
+ }
+ int StartChar = m_pFontDict->GetIntegerBy("FirstChar");
+ CPDF_Array* pWidthArray = m_pFontDict->GetArrayBy("Widths");
+ if (pWidthArray && (StartChar >= 0 && StartChar < 256)) {
+ FX_DWORD count = pWidthArray->GetCount();
+ if (count > 256) {
+ count = 256;
+ }
+ if (StartChar + count > 256) {
+ count = 256 - StartChar;
+ }
+ for (FX_DWORD i = 0; i < count; i++) {
+ m_CharWidthL[StartChar + i] =
+ FXSYS_round(pWidthArray->GetNumberAt(i) * xscale * 1000);
+ }
+ }
+ m_pCharProcs = m_pFontDict->GetDictBy("CharProcs");
+ CPDF_Object* pEncoding = m_pFontDict->GetElementValue("Encoding");
+ if (pEncoding) {
+ LoadPDFEncoding(pEncoding, m_BaseEncoding, m_pCharNames, FALSE, FALSE);
+ if (m_pCharNames) {
+ for (int i = 0; i < 256; i++) {
+ m_Encoding.m_Unicodes[i] = PDF_UnicodeFromAdobeName(m_pCharNames[i]);
+ if (m_Encoding.m_Unicodes[i] == 0) {
+ m_Encoding.m_Unicodes[i] = i;
+ }
+ }
+ }
+ }
+ return TRUE;
+}
+
+void CPDF_Type3Font::CheckType3FontMetrics() {
+ CheckFontMetrics();
+}
+
+CPDF_Type3Char* CPDF_Type3Font::LoadChar(FX_DWORD charcode, int level) {
+ if (level >= _FPDF_MAX_TYPE3_FORM_LEVEL_)
+ return nullptr;
+
+ auto it = m_CacheMap.find(charcode);
+ if (it != m_CacheMap.end())
+ return it->second;
+
+ const FX_CHAR* name =
+ GetAdobeCharName(m_BaseEncoding, m_pCharNames, charcode);
+ if (!name)
+ return nullptr;
+
+ CPDF_Stream* pStream =
+ ToStream(m_pCharProcs ? m_pCharProcs->GetElementValue(name) : nullptr);
+ if (!pStream)
+ return nullptr;
+
+ std::unique_ptr<CPDF_Type3Char> pNewChar(new CPDF_Type3Char(new CPDF_Form(
+ m_pDocument, m_pFontResources ? m_pFontResources : m_pPageResources,
+ pStream, nullptr)));
+
+ // This can trigger recursion into this method. The content of |m_CacheMap|
+ // can change as a result. Thus after it returns, check the cache again for
+ // a cache hit.
+ pNewChar->m_pForm->ParseContent(nullptr, nullptr, pNewChar.get(), nullptr,
+ level + 1);
+ it = m_CacheMap.find(charcode);
+ if (it != m_CacheMap.end())
+ return it->second;
+
+ FX_FLOAT scale = m_FontMatrix.GetXUnit();
+ pNewChar->m_Width = (int32_t)(pNewChar->m_Width * scale + 0.5f);
+ FX_RECT& rcBBox = pNewChar->m_BBox;
+ CFX_FloatRect char_rect(
+ (FX_FLOAT)rcBBox.left / 1000.0f, (FX_FLOAT)rcBBox.bottom / 1000.0f,
+ (FX_FLOAT)rcBBox.right / 1000.0f, (FX_FLOAT)rcBBox.top / 1000.0f);
+ if (rcBBox.right <= rcBBox.left || rcBBox.bottom >= rcBBox.top)
+ char_rect = pNewChar->m_pForm->CalcBoundingBox();
+
+ char_rect.Transform(&m_FontMatrix);
+ rcBBox.left = FXSYS_round(char_rect.left * 1000);
+ rcBBox.right = FXSYS_round(char_rect.right * 1000);
+ rcBBox.top = FXSYS_round(char_rect.top * 1000);
+ rcBBox.bottom = FXSYS_round(char_rect.bottom * 1000);
+
+ ASSERT(!pdfium::ContainsKey(m_CacheMap, charcode));
+ CPDF_Type3Char* pCachedChar = pNewChar.release();
+ m_CacheMap[charcode] = pCachedChar;
+ if (pCachedChar->m_pForm->GetPageObjectList()->empty()) {
+ delete pCachedChar->m_pForm;
+ pCachedChar->m_pForm = nullptr;
+ }
+ return pCachedChar;
+}
+
+int CPDF_Type3Font::GetCharWidthF(FX_DWORD charcode, int level) {
+ if (charcode >= FX_ArraySize(m_CharWidthL))
+ charcode = 0;
+
+ if (m_CharWidthL[charcode])
+ return m_CharWidthL[charcode];
+
+ const CPDF_Type3Char* pChar = LoadChar(charcode, level);
+ return pChar ? pChar->m_Width : 0;
+}
+
+FX_RECT CPDF_Type3Font::GetCharBBox(FX_DWORD charcode, int level) {
+ const CPDF_Type3Char* pChar = LoadChar(charcode, level);
+ return pChar ? pChar->m_BBox : FX_RECT();
+}
+
+CPDF_Type3Char::CPDF_Type3Char(CPDF_Form* pForm)
+ : m_pForm(pForm), m_pBitmap(nullptr), m_bColored(FALSE) {}
+
+CPDF_Type3Char::~CPDF_Type3Char() {
+ delete m_pForm;
+ delete m_pBitmap;
+}
diff --git a/core/fpdfapi/fpdf_font/fpdf_font_charset.cpp b/core/fpdfapi/fpdf_font/fpdf_font_charset.cpp
new file mode 100644
index 0000000000..a4167914d1
--- /dev/null
+++ b/core/fpdfapi/fpdf_font/fpdf_font_charset.cpp
@@ -0,0 +1,1782 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/include/fpdfapi/fpdf_page.h"
+#include "core/include/fpdfapi/fpdf_parser_decode.h"
+#include "core/include/fpdfapi/fpdf_resource.h"
+#include "core/include/fxge/fx_freetype.h"
+
+static const struct _UnicodeAlt {
+ FX_WORD m_Unicode;
+ const FX_CHAR* m_Alter;
+} UnicodeAlts[] = {
+ {0x00a0, " "}, {0x00a1, "!"}, {0x00a2, "c"}, {0x00a3, "P"},
+ {0x00a4, "o"}, {0x00a5, "Y"}, {0x00a6, "|"}, {0x00a7, "S"},
+ {0x00a9, "(C)"}, {0x00aa, "a"}, {0x00ab, "<<"}, {0x00ac, "-|"},
+ {0x00ae, "(R)"}, {0x00af, "-"}, {0x00b0, "o"}, {0x00b1, "+/-"},
+ {0x00b2, "^2"}, {0x00b3, "^3"}, {0x00b4, "'"}, {0x00b5, "u"},
+ {0x00b6, "P"}, {0x00b7, "."}, {0x00b9, "^1"}, {0x00ba, "o"},
+ {0x00bb, ">>"}, {0x00bc, "1/4"}, {0x00bd, "1/2"}, {0x00be, "3/4"},
+ {0x00bf, "?"}, {0x00c0, "A"}, {0x00c1, "A"}, {0x00c2, "A"},
+ {0x00c3, "A"}, {0x00c4, "A"}, {0x00c5, "A"}, {0x00c6, "AE"},
+ {0x00c7, "C"}, {0x00c8, "E"}, {0x00c9, "E"}, {0x00ca, "E"},
+ {0x00cb, "E"}, {0x00cc, "I"}, {0x00cd, "I"}, {0x00ce, "I"},
+ {0x00cf, "I"}, {0x00d1, "N"}, {0x00d2, "O"}, {0x00d3, "O"},
+ {0x00d4, "O"}, {0x00d5, "O"}, {0x00d6, "O"}, {0x00d7, "x"},
+ {0x00d8, "O"}, {0x00d9, "U"}, {0x00da, "U"}, {0x00db, "U"},
+ {0x00dc, "U"}, {0x00dd, "Y"}, {0x00df, "S"}, {0x00e0, "a"},
+ {0x00e1, "a"}, {0x00e2, "a"}, {0x00e3, "a"}, {0x00e4, "a"},
+ {0x00e5, "a"}, {0x00e6, "ae"}, {0x00e7, "c"}, {0x00e8, "e"},
+ {0x00e9, "e"}, {0x00ea, "e"}, {0x00eb, "e"}, {0x00ec, "i"},
+ {0x00ed, "i"}, {0x00ee, "i"}, {0x00ef, "i"}, {0x00f1, "n"},
+ {0x00f2, "o"}, {0x00f3, "o"}, {0x00f4, "o"}, {0x00f5, "o"},
+ {0x00f6, "o"}, {0x00f7, "/"}, {0x00f8, "o"}, {0x00f9, "u"},
+ {0x00fa, "u"}, {0x00fb, "u"}, {0x00fc, "u"}, {0x00fd, "y"},
+ {0x00ff, "y"}, {0x02b0, "h"}, {0x02b2, "j"}, {0x02b3, "r"},
+ {0x02b7, "w"}, {0x02b8, "y"}, {0x02b9, "'"}, {0x02ba, "\""},
+ {0x02bb, "'"}, {0x02bc, "'"}, {0x02bd, "'"}, {0x02be, "'"},
+ {0x02bf, "'"}, {0x02c2, "<"}, {0x02c3, ">"}, {0x02c4, "^"},
+ {0x02c5, "v"}, {0x02c6, "^"}, {0x02c7, "v"}, {0x02c8, "'"},
+ {0x02c9, "-"}, {0x02ca, "'"}, {0x02cb, "'"}, {0x02cc, "."},
+ {0x02cd, "_"}, {0x2010, "-"}, {0x2012, "-"}, {0x2013, "-"},
+ {0x2014, "--"}, {0x2015, "--"}, {0x2016, "|"}, {0x2017, "_"},
+ {0x2018, "'"}, {0x2019, "'"}, {0x201a, ","}, {0x201b, "'"},
+ {0x201c, "\""}, {0x201d, "\""}, {0x201e, ","}, {0x201f, "'"},
+ {0x2020, "+"}, {0x2021, "+"}, {0x2022, "*"}, {0x2023, ">"},
+ {0x2024, "."}, {0x2025, ".."}, {0x2027, "."}, {0x2032, "'"},
+ {0x2033, "\""}, {0x2035, "'"}, {0x2036, "\""}, {0x2038, "^"},
+ {0x2039, "<"}, {0x203a, ">"}, {0x203b, "*"}, {0x203c, "!!"},
+ {0x203d, "?!"}, {0x203e, "-"}, {0x2044, "/"}, {0x2047, "??"},
+ {0x2048, "?!"}, {0x2049, "!?"}, {0x204e, "*"}, {0x2052, "%"},
+ {0x2122, "(TM)"}, {0x2212, "-"}, {0x2215, "/"}, {0x2216, "\\"},
+ {0x2217, "*"}, {0x2218, "*"}, {0x2219, "*"}, {0x2223, "|"},
+ {0x22c5, "."}, {0x266f, "#"}, {0XF6D9, "(C)"}, {0XF6DA, "(C)"},
+ {0XF6DB, "(TM)"}, {0XF8E8, "(C)"}, {0xf8e9, "(C)"}, {0XF8EA, "(TM)"},
+ {0xfb01, "fi"}, {0xfb02, "fl"}};
+const FX_CHAR* FCS_GetAltStr(FX_WCHAR unicode) {
+ int begin = 0;
+ int end = sizeof UnicodeAlts / sizeof(struct _UnicodeAlt) - 1;
+ while (begin <= end) {
+ int middle = (begin + end) / 2;
+ FX_WORD middlecode = UnicodeAlts[middle].m_Unicode;
+ if (middlecode > unicode) {
+ end = middle - 1;
+ } else if (middlecode < unicode) {
+ begin = middle + 1;
+ } else {
+ return UnicodeAlts[middle].m_Alter;
+ }
+ }
+ return NULL;
+}
+static const FX_WORD StandardEncoding[256] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0021, 0x0022, 0x0023,
+ 0x0024, 0x0025, 0x0026, 0x2019, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c,
+ 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035,
+ 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e,
+ 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+ 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059,
+ 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x2018, 0x0061, 0x0062,
+ 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b,
+ 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074,
+ 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d,
+ 0x007e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00a1,
+ 0x00a2, 0x00a3, 0x2044, 0x00a5, 0x0192, 0x00a7, 0x00a4, 0x0027, 0x201c,
+ 0x00ab, 0x2039, 0x203a, 0xfb01, 0xfb02, 0x0000, 0x2013, 0x2020, 0x2021,
+ 0x00b7, 0x0000, 0x00b6, 0x2022, 0x201a, 0x201e, 0x201d, 0x00bb, 0x2026,
+ 0x2030, 0x0000, 0x00bf, 0x0000, 0x0060, 0x00b4, 0x02c6, 0x02dc, 0x00af,
+ 0x02d8, 0x02d9, 0x00a8, 0x0000, 0x02da, 0x00b8, 0x0000, 0x02dd, 0x02db,
+ 0x02c7, 0x2014, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x00c6, 0x0000, 0x00aa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0141, 0x00d8,
+ 0x0152, 0x00ba, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00e6, 0x0000,
+ 0x0000, 0x0000, 0x0131, 0x0000, 0x0000, 0x0142, 0x00f8, 0x0153, 0x00df,
+ 0x0000, 0x0000, 0x0000, 0x0000};
+static const FX_WORD MacRomanEncoding[256] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0021, 0x0022, 0x0023,
+ 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c,
+ 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035,
+ 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e,
+ 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+ 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059,
+ 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062,
+ 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b,
+ 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074,
+ 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d,
+ 0x007e, 0x0000, 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc,
+ 0x00e1, 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8,
+ 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, 0x00f2,
+ 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, 0x2020, 0x00b0,
+ 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, 0x00ae, 0x00a9, 0x2122,
+ 0x00b4, 0x00a8, 0x0000, 0x00c6, 0x00d8, 0x0000, 0x00b1, 0x0000, 0x0000,
+ 0x00a5, 0x00b5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00aa, 0x00ba,
+ 0x0000, 0x00e6, 0x00f8, 0x00bf, 0x00a3, 0x00ac, 0x0000, 0x0192, 0x0000,
+ 0x0000, 0x00ab, 0x00bb, 0x2026, 0x0020, 0x00c0, 0x00c3, 0x00d5, 0x0152,
+ 0x0153, 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x0000,
+ 0x00ff, 0x0178, 0x2044, 0x00a4, 0x2039, 0x203a, 0xfb01, 0xfb02, 0x2021,
+ 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1, 0x00cb, 0x00c8,
+ 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, 0x0000, 0x00d2, 0x00da,
+ 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc, 0x00af, 0x02d8, 0x02d9, 0x02da,
+ 0x00b8, 0x02dd, 0x02db, 0x02c7};
+static const FX_WORD AdobeWinAnsiEncoding[256] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0021, 0x0022, 0x0023,
+ 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c,
+ 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035,
+ 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e,
+ 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+ 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059,
+ 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062,
+ 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b,
+ 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074,
+ 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d,
+ 0x007e, 0x2022, 0x20ac, 0x2022, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020,
+ 0x2021, 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x2022, 0x017d, 0x2022,
+ 0x2022, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc,
+ 0x2122, 0x0161, 0x203a, 0x0153, 0x2022, 0x017e, 0x0178, 0x0020, 0x00a1,
+ 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa,
+ 0x00ab, 0x00ac, 0x002d, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3,
+ 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc,
+ 0x00bd, 0x00be, 0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5,
+ 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce,
+ 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 0x00e0,
+ 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9,
+ 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2,
+ 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb,
+ 0x00fc, 0x00fd, 0x00fe, 0x00ff};
+static const FX_WORD MacExpertEncoding[256] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0xf721, 0xf6f8, 0xf7a2,
+ 0xf724, 0xf6e4, 0xf726, 0xf7b4, 0x207d, 0x207e, 0x2025, 0x2024, 0x002c,
+ 0x002d, 0x002e, 0x2044, 0xf730, 0xf731, 0xf732, 0xf733, 0xf734, 0xf735,
+ 0xf736, 0xf737, 0xf738, 0xf739, 0x003a, 0x003b, 0x0000, 0xf6de, 0x0000,
+ 0xf73f, 0x0000, 0x0000, 0x0000, 0x0000, 0xf7f0, 0x0000, 0x0000, 0x00bc,
+ 0x00bd, 0x00be, 0x215b, 0x215c, 0x215d, 0x215e, 0x2153, 0x2154, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfb00, 0xfb01, 0xfb02, 0xfb03,
+ 0xfb04, 0x208d, 0x0000, 0x208e, 0xf6f6, 0xf6e5, 0xf760, 0xf761, 0xf762,
+ 0xf763, 0xf764, 0xf765, 0xf766, 0xf767, 0xf768, 0xf769, 0xf76a, 0xf76b,
+ 0xf76c, 0xf76d, 0xf76e, 0xf76f, 0xf770, 0xf771, 0xf772, 0xf773, 0xf774,
+ 0xf775, 0xf776, 0xf777, 0xf778, 0xf779, 0xf77a, 0x20a1, 0xf6dc, 0xf6dd,
+ 0xf6fe, 0x0000, 0x0000, 0xf6e9, 0xf6e0, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xf7e1, 0xf7e0, 0xf7e2, 0xf7e4, 0xf7e3, 0xf7e5, 0xf7e7, 0xf7e9, 0xf7e8,
+ 0xf7ea, 0xf7eb, 0xf7ed, 0xf7ec, 0xf7ee, 0xf7ef, 0xf7f1, 0xf7f3, 0xf7f2,
+ 0xf7f4, 0xf7f6, 0xf7f5, 0xf7fa, 0xf7f9, 0xf7fb, 0xf7fc, 0x0000, 0x2078,
+ 0x2084, 0x2083, 0x2086, 0x2088, 0x2087, 0xf6fd, 0x0000, 0xf6df, 0x2082,
+ 0x0000, 0xf7a8, 0x0000, 0xf6f5, 0xf6fd, 0x2085, 0x0000, 0xf6e1, 0xf6e7,
+ 0xf7fd, 0x0000, 0xf6e3, 0x0000, 0x0000, 0xf7fe, 0x0000, 0x2089, 0x2080,
+ 0xf6ff, 0xf7e6, 0xf7f8, 0xf7bf, 0x2081, 0xf6e9, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0xf7b8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xf6fa, 0x2012, 0xf6e6, 0x0000, 0x0000, 0x0000, 0x0000, 0xf7a1, 0x0000,
+ 0xf7ff, 0x0000, 0x00b9, 0x00b2, 0x00b3, 0x2074, 0x2075, 0x2076, 0x2077,
+ 0x2079, 0x2070, 0x0000, 0xf6ec, 0xf6f1, 0x0000, 0x0000, 0x0000, 0xf6ed,
+ 0xf6f2, 0xf6eb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf6ee, 0xf6fb,
+ 0xf6f4, 0xf7af, 0xf6ea, 0x207f, 0xf6ef, 0xf6e2, 0xf6e8, 0xf6f7, 0xf6fc,
+ 0x0000, 0x0000, 0x0000, 0x0000};
+static const FX_WORD AdobeSymbolEncoding[256] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0021, 0x2200, 0x0023,
+ 0x2203, 0x0025, 0x0026, 0x220B, 0x0028, 0x0029, 0x2217, 0x002B, 0x002C,
+ 0x2212, 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035,
+ 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E,
+ 0x003F, 0x2245, 0x0391, 0x0392, 0x03A7, 0x0394, 0x0395, 0x03A6, 0x0393,
+ 0x0397, 0x0399, 0x03D1, 0x039A, 0x039B, 0x039C, 0x039D, 0x039F, 0x03A0,
+ 0x0398, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03C2, 0x03A9, 0x039E, 0x03A8,
+ 0x0396, 0x005B, 0x2234, 0x005D, 0x22A5, 0x005F, 0xF8E5, 0x03B1, 0x03B2,
+ 0x03C7, 0x03B4, 0x03B5, 0x03C6, 0x03B3, 0x03B7, 0x03B9, 0x03D5, 0x03BA,
+ 0x03BB, 0x03BC, 0x03BD, 0x03BF, 0x03C0, 0x03B8, 0x03C1, 0x03C3, 0x03C4,
+ 0x03C5, 0x03D6, 0x03C9, 0x03BE, 0x03C8, 0x03B6, 0x007B, 0x007C, 0x007D,
+ 0x223C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x20AC, 0x03D2,
+ 0x2032, 0x2264, 0x2044, 0x221E, 0x0192, 0x2663, 0x2666, 0x2665, 0x2660,
+ 0x2194, 0x2190, 0x2191, 0x2192, 0x2193, 0x00B0, 0x00B1, 0x2033, 0x2265,
+ 0x00D7, 0x221D, 0x2202, 0x2022, 0x00F7, 0x2260, 0x2261, 0x2248, 0x2026,
+ 0xF8E6, 0xF8E7, 0x21B5, 0x2135, 0x2111, 0x211C, 0x2118, 0x2297, 0x2295,
+ 0x2205, 0x2229, 0x222A, 0x2283, 0x2287, 0x2284, 0x2282, 0x2286, 0x2208,
+ 0x2209, 0x2220, 0x2207, 0xF6DA, 0xF6D9, 0xF6DB, 0x220F, 0x221A, 0x22C5,
+ 0x00AC, 0x2227, 0x2228, 0x21D4, 0x21D0, 0x21D1, 0x21D2, 0x21D3, 0x25CA,
+ 0x2329, 0xF8E8, 0xF8E9, 0xF8EA, 0x2211, 0xF8EB, 0xF8EC, 0xF8ED, 0xF8EE,
+ 0xF8EF, 0xF8F0, 0xF8F1, 0xF8F2, 0xF8F3, 0xF8F4, 0x0000, 0x232A, 0x222B,
+ 0x2320, 0xF8F5, 0x2321, 0xF8F6, 0xF8F7, 0xF8F8, 0xF8F9, 0xF8FA, 0xF8FB,
+ 0xF8FC, 0xF8FD, 0xF8FE, 0x0000,
+};
+static const FX_WORD ZapfEncoding[256] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x2701, 0x2702, 0x2703,
+ 0x2704, 0x260E, 0x2706, 0x2707, 0x2708, 0x2709, 0x261B, 0x261E, 0x270C,
+ 0x270D, 0x270E, 0x270F, 0x2710, 0x2711, 0x2712, 0x2713, 0x2714, 0x2715,
+ 0x2716, 0x2717, 0x2718, 0x2719, 0x271A, 0x271B, 0x271C, 0x271D, 0x271E,
+ 0x271F, 0x2720, 0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726, 0x2727,
+ 0x2605, 0x2729, 0x272A, 0x272B, 0x272C, 0x272D, 0x272E, 0x272F, 0x2730,
+ 0x2731, 0x2732, 0x2733, 0x2734, 0x2735, 0x2736, 0x2737, 0x2738, 0x2739,
+ 0x273A, 0x273B, 0x273C, 0x273D, 0x273E, 0x273F, 0x2740, 0x2741, 0x2742,
+ 0x2743, 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x2749, 0x274A, 0x274B,
+ 0x25CF, 0x274D, 0x25A0, 0x274F, 0x2750, 0x2751, 0x2752, 0x25B2, 0x25BC,
+ 0x25C6, 0x2756, 0x25D7, 0x2758, 0x2759, 0x275A, 0x275B, 0x275C, 0x275D,
+ 0x275E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2761,
+ 0x2762, 0x2763, 0x2764, 0x2765, 0x2766, 0x2767, 0x2663, 0x2666, 0x2665,
+ 0x2660, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
+ 0x2468, 0x2469, 0x2776, 0x2777, 0x2778, 0x2779, 0x277A, 0x277B, 0x277C,
+ 0x277D, 0x277E, 0x277F, 0x2780, 0x2781, 0x2782, 0x2783, 0x2784, 0x2785,
+ 0x2786, 0x2787, 0x2788, 0x2789, 0x278A, 0x278B, 0x278C, 0x278D, 0x278E,
+ 0x278F, 0x2790, 0x2791, 0x2792, 0x2793, 0x2794, 0x2192, 0x2194, 0x2195,
+ 0x2798, 0x2799, 0x279A, 0x279B, 0x279C, 0x279D, 0x279E, 0x279F, 0x27A0,
+ 0x27A1, 0x27A2, 0x27A3, 0x27A4, 0x27A5, 0x27A6, 0x27A7, 0x27A8, 0x27A9,
+ 0x27AA, 0x27AB, 0x27AC, 0x27AD, 0x27AE, 0x27AF, 0x0000, 0x27B1, 0x27B2,
+ 0x27B3, 0x27B4, 0x27B5, 0x27B6, 0x27B7, 0x27B8, 0x27B9, 0x27BA, 0x27BB,
+ 0x27BC, 0x27BD, 0x27BE, 0x0000,
+};
+static const FX_CHAR* const StandardEncodingNames[224] = {
+ "space",
+ "exclam",
+ "quotedbl",
+ "numbersign",
+ "dollar",
+ "percent",
+ "ampersand",
+ "quoteright",
+ "parenleft",
+ "parenright",
+ "asterisk",
+ "plus",
+ "comma",
+ "hyphen",
+ "period",
+ "slash",
+ "zero",
+ "one",
+ "two",
+ "three",
+ "four",
+ "five",
+ "six",
+ "seven",
+ "eight",
+ "nine",
+ "colon",
+ "semicolon",
+ "less",
+ "equal",
+ "greater",
+ "question",
+ "at",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "G",
+ "H",
+ "I",
+ "J",
+ "K",
+ "L",
+ "M",
+ "N",
+ "O",
+ "P",
+ "Q",
+ "R",
+ "S",
+ "T",
+ "U",
+ "V",
+ "W",
+ "X",
+ "Y",
+ "Z",
+ "bracketleft",
+ "backslash",
+ "bracketright",
+ "asciicircum",
+ "underscore",
+ "quoteleft",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "braceleft",
+ "bar",
+ "braceright",
+ "asciitilde",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "exclamdown",
+ "cent",
+ "sterling",
+ "fraction",
+ "yen",
+ "florin",
+ "section",
+ "currency",
+ "quotesingle",
+ "quotedblleft",
+ "guillemotleft",
+ "guilsinglleft",
+ "guilsinglright",
+ "fi",
+ "fl",
+ NULL,
+ "endash",
+ "dagger",
+ "daggerdbl",
+ "periodcentered",
+ NULL,
+ "paragraph",
+ "bullet",
+ "quotesinglbase",
+ "quotedblbase",
+ "quotedblright",
+ "guillemotright",
+ "ellipsis",
+ "perthousand",
+ NULL,
+ "questiondown",
+ NULL,
+ "grave",
+ "acute",
+ "circumflex",
+ "tilde",
+ "macron",
+ "breve",
+ "dotaccent",
+ "dieresis",
+ NULL,
+ "ring",
+ "cedilla",
+ NULL,
+ "hungarumlaut",
+ "ogonek",
+ "caron",
+ "emdash",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "AE",
+ NULL,
+ "ordfeminine",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Lslash",
+ "Oslash",
+ "OE",
+ "ordmasculine",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "ae",
+ NULL,
+ NULL,
+ NULL,
+ "dotlessi",
+ NULL,
+ NULL,
+ "lslash",
+ "oslash",
+ "oe",
+ "germandbls",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+};
+static const FX_CHAR* const AdobeWinAnsiEncodingNames[224] = {
+ "space",
+ "exclam",
+ "quotedbl",
+ "numbersign",
+ "dollar",
+ "percent",
+ "ampersand",
+ "quotesingle",
+ "parenleft",
+ "parenright",
+ "asterisk",
+ "plus",
+ "comma",
+ "hyphen",
+ "period",
+ "slash",
+ "zero",
+ "one",
+ "two",
+ "three",
+ "four",
+ "five",
+ "six",
+ "seven",
+ "eight",
+ "nine",
+ "colon",
+ "semicolon",
+ "less",
+ "equal",
+ "greater",
+ "question",
+ "at",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "G",
+ "H",
+ "I",
+ "J",
+ "K",
+ "L",
+ "M",
+ "N",
+ "O",
+ "P",
+ "Q",
+ "R",
+ "S",
+ "T",
+ "U",
+ "V",
+ "W",
+ "X",
+ "Y",
+ "Z",
+ "bracketleft",
+ "backslash",
+ "bracketright",
+ "asciicircum",
+ "underscore",
+ "grave",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "braceleft",
+ "bar",
+ "braceright",
+ "asciitilde",
+ "bullet",
+ "Euro",
+ "bullet",
+ "quotesinglbase",
+ "florin",
+ "quotedblbase",
+ "ellipsis",
+ "dagger",
+ "daggerdbl",
+ "circumflex",
+ "perthousand",
+ "Scaron",
+ "guilsinglleft",
+ "OE",
+ "bullet",
+ "Zcaron",
+ "bullet",
+ "bullet",
+ "quoteleft",
+ "quoteright",
+ "quotedblleft",
+ "quotedblright",
+ "bullet",
+ "endash",
+ "emdash",
+ "tilde",
+ "trademark",
+ "scaron",
+ "guilsinglright",
+ "oe",
+ "bullet",
+ "zcaron",
+ "Ydieresis",
+ "space",
+ "exclamdown",
+ "cent",
+ "sterling",
+ "currency",
+ "yen",
+ "brokenbar",
+ "section",
+ "dieresis",
+ "copyright",
+ "ordfeminine",
+ "guillemotleft",
+ "logicalnot",
+ "hyphen",
+ "registered",
+ "macron",
+ "degree",
+ "plusminus",
+ "twosuperior",
+ "threesuperior",
+ "acute",
+ "mu",
+ "paragraph",
+ "periodcentered",
+ "cedilla",
+ "onesuperior",
+ "ordmasculine",
+ "guillemotright",
+ "onequarter",
+ "onehalf",
+ "threequarters",
+ "questiondown",
+ "Agrave",
+ "Aacute",
+ "Acircumflex",
+ "Atilde",
+ "Adieresis",
+ "Aring",
+ "AE",
+ "Ccedilla",
+ "Egrave",
+ "Eacute",
+ "Ecircumflex",
+ "Edieresis",
+ "Igrave",
+ "Iacute",
+ "Icircumflex",
+ "Idieresis",
+ "Eth",
+ "Ntilde",
+ "Ograve",
+ "Oacute",
+ "Ocircumflex",
+ "Otilde",
+ "Odieresis",
+ "multiply",
+ "Oslash",
+ "Ugrave",
+ "Uacute",
+ "Ucircumflex",
+ "Udieresis",
+ "Yacute",
+ "Thorn",
+ "germandbls",
+ "agrave",
+ "aacute",
+ "acircumflex",
+ "atilde",
+ "adieresis",
+ "aring",
+ "ae",
+ "ccedilla",
+ "egrave",
+ "eacute",
+ "ecircumflex",
+ "edieresis",
+ "igrave",
+ "iacute",
+ "icircumflex",
+ "idieresis",
+ "eth",
+ "ntilde",
+ "ograve",
+ "oacute",
+ "ocircumflex",
+ "otilde",
+ "odieresis",
+ "divide",
+ "oslash",
+ "ugrave",
+ "uacute",
+ "ucircumflex",
+ "udieresis",
+ "yacute",
+ "thorn",
+ "ydieresis",
+};
+static const FX_CHAR* const MacRomanEncodingNames[224] = {
+ "space",
+ "exclam",
+ "quotedbl",
+ "numbersign",
+ "dollar",
+ "percent",
+ "ampersand",
+ "quotesingle",
+ "parenleft",
+ "parenright",
+ "asterisk",
+ "plus",
+ "comma",
+ "hyphen",
+ "period",
+ "slash",
+ "zero",
+ "one",
+ "two",
+ "three",
+ "four",
+ "five",
+ "six",
+ "seven",
+ "eight",
+ "nine",
+ "colon",
+ "semicolon",
+ "less",
+ "equal",
+ "greater",
+ "question",
+ "at",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "G",
+ "H",
+ "I",
+ "J",
+ "K",
+ "L",
+ "M",
+ "N",
+ "O",
+ "P",
+ "Q",
+ "R",
+ "S",
+ "T",
+ "U",
+ "V",
+ "W",
+ "X",
+ "Y",
+ "Z",
+ "bracketleft",
+ "backslash",
+ "bracketright",
+ "asciicircum",
+ "underscore",
+ "grave",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "braceleft",
+ "bar",
+ "braceright",
+ "asciitilde",
+ NULL,
+ "Adieresis",
+ "Aring",
+ "Ccedilla",
+ "Eacute",
+ "Ntilde",
+ "Odieresis",
+ "Udieresis",
+ "aacute",
+ "agrave",
+ "acircumflex",
+ "adieresis",
+ "atilde",
+ "aring",
+ "ccedilla",
+ "eacute",
+ "egrave",
+ "ecircumflex",
+ "edieresis",
+ "iacute",
+ "igrave",
+ "icircumflex",
+ "idieresis",
+ "ntilde",
+ "oacute",
+ "ograve",
+ "ocircumflex",
+ "odieresis",
+ "otilde",
+ "uacute",
+ "ugrave",
+ "ucircumflex",
+ "udieresis",
+ "dagger",
+ "degree",
+ "cent",
+ "sterling",
+ "section",
+ "bullet",
+ "paragraph",
+ "germandbls",
+ "registered",
+ "copyright",
+ "trademark",
+ "acute",
+ "dieresis",
+ "notequal",
+ "AE",
+ "Oslash",
+ "infinity",
+ "plusminus",
+ "lessequal",
+ "greaterequal",
+ "yen",
+ "mu",
+ "partialdiff",
+ "summation",
+ "product",
+ "pi",
+ "integral",
+ "ordfeminine",
+ "ordmasculine",
+ "Omega",
+ "ae",
+ "oslash",
+ "questiondown",
+ "exclamdown",
+ "logicalnot",
+ "radical",
+ "florin",
+ "approxequal",
+ "Delta",
+ "guillemotleft",
+ "guillemotright",
+ "ellipsis",
+ "space",
+ "Agrave",
+ "Atilde",
+ "Otilde",
+ "OE",
+ "oe",
+ "endash",
+ "emdash",
+ "quotedblleft",
+ "quotedblright",
+ "quoteleft",
+ "quoteright",
+ "divide",
+ "lozenge",
+ "ydieresis",
+ "Ydieresis",
+ "fraction",
+ "currency",
+ "guilsinglleft",
+ "guilsinglright",
+ "fi",
+ "fl",
+ "daggerdbl",
+ "periodcentered",
+ "quotesinglbase",
+ "quotedblbase",
+ "perthousand",
+ "Acircumflex",
+ "Ecircumflex",
+ "Aacute",
+ "Edieresis",
+ "Egrave",
+ "Iacute",
+ "Icircumflex",
+ "Idieresis",
+ "Igrave",
+ "Oacute",
+ "Ocircumflex",
+ "apple",
+ "Ograve",
+ "Uacute",
+ "Ucircumflex",
+ "Ugrave",
+ "dotlessi",
+ "circumflex",
+ "tilde",
+ "macron",
+ "breve",
+ "dotaccent",
+ "ring",
+ "cedilla",
+ "hungarumlaut",
+ "ogonek",
+ "caron",
+};
+static const FX_CHAR* const MacExpertEncodingNames[224] = {
+ "space",
+ "exclamsmall",
+ "Hungarumlautsmall",
+ "centoldstyle",
+ "dollaroldstyle",
+ "dollarsuperior",
+ "ampersandsmall",
+ "Acutesmall",
+ "parenleftsuperior",
+ "parenrightsuperior",
+ "twodotenleader",
+ "onedotenleader",
+ "comma",
+ "hyphen",
+ "period",
+ "fraction",
+ "zerooldstyle",
+ "oneoldstyle",
+ "twooldstyle",
+ "threeoldstyle",
+ "fouroldstyle",
+ "fiveoldstyle",
+ "sixoldstyle",
+ "sevenoldstyle",
+ "eightoldstyle",
+ "nineoldstyle",
+ "colon",
+ "semicolon",
+ NULL,
+ "threequartersemdash",
+ NULL,
+ "questionsmall",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Ethsmall",
+ NULL,
+ NULL,
+ "onequarter",
+ "onehalf",
+ "threequarters",
+ "oneeighth",
+ "threeeighths",
+ "fiveeighths",
+ "seveneighths",
+ "onethird",
+ "twothirds",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "ff",
+ "fi",
+ "fl",
+ "ffi",
+ "ffl",
+ "parenleftinferior",
+ NULL,
+ "parenrightinferior",
+ "Circumflexsmall",
+ "hypheninferior",
+ "Gravesmall",
+ "Asmall",
+ "Bsmall",
+ "Csmall",
+ "Dsmall",
+ "Esmall",
+ "Fsmall",
+ "Gsmall",
+ "Hsmall",
+ "Ismall",
+ "Jsmall",
+ "Ksmall",
+ "Lsmall",
+ "Msmall",
+ "Nsmall",
+ "Osmall",
+ "Psmall",
+ "Qsmall",
+ "Rsmall",
+ "Ssmall",
+ "Tsmall",
+ "Usmall",
+ "Vsmall",
+ "Wsmall",
+ "Xsmall",
+ "Ysmall",
+ "Zsmall",
+ "colonmonetary",
+ "onefitted",
+ "rupiah",
+ "Tildesmall",
+ NULL,
+ NULL,
+ "asuperior",
+ "centsuperior",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Aacutesmall",
+ "Agravesmall",
+ "Acircumflexsmall",
+ "Adieresissmall",
+ "Atildesmall",
+ "Aringsmall",
+ "Ccedillasmall",
+ "Eacutesmall",
+ "Egravesmall",
+ "Ecircumflexsmall",
+ "Edieresissmall",
+ "Iacutesmall",
+ "Igravesmall",
+ "Icircumflexsmall",
+ "Idieresissmall",
+ "Ntildesmall",
+ "Oacutesmall",
+ "Ogravesmall",
+ "Ocircumflexsmall",
+ "Odieresissmall",
+ "Otildesmall",
+ "Uacutesmall",
+ "Ugravesmall",
+ "Ucircumflexsmall",
+ "Udieresissmall",
+ NULL,
+ "eightsuperior",
+ "fourinferior",
+ "threeinferior",
+ "sixinferior",
+ "eightinferior",
+ "seveninferior",
+ "Scaronsmall",
+ NULL,
+ "centinferior",
+ "twoinferior",
+ NULL,
+ "Dieresissmall",
+ NULL,
+ "Caronsmall",
+ "Scaronsmall",
+ "fiveinferior",
+ NULL,
+ "commainferior",
+ "periodinferior",
+ "Yacutesmall",
+ NULL,
+ "dollarinferior",
+ NULL,
+ NULL,
+ "Thornsmall",
+ NULL,
+ "nineinferior",
+ "zeroinferior",
+ "Zcaronsmall",
+ "AEsmall",
+ "Oslashsmall",
+ "questiondownsmall",
+ "oneinferior",
+ "asuperior",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Cedillasmall",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "OEsmall",
+ "figuredash",
+ "hyphensuperior",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "exclamdownsmall",
+ NULL,
+ "Ydieresissmall",
+ NULL,
+ "onesuperior",
+ "twosuperior",
+ "threesuperior",
+ "foursuperior",
+ "fivesuperior",
+ "sixsuperior",
+ "sevensuperior",
+ "ninesuperior",
+ "zerosuperior",
+ NULL,
+ "esuperior",
+ "rsuperior",
+ NULL,
+ NULL,
+ NULL,
+ "isuperior",
+ "ssuperior",
+ "dsuperior",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "lsuperior",
+ "Ogoneksmall",
+ "Brevesmall",
+ "Macronsmall",
+ "bsuperior",
+ "nsuperior",
+ "msuperior",
+ "commasuperior",
+ "periodsuperior",
+ "Dotaccentsmall",
+ "Ringsmall",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+};
+static const FX_CHAR* const PDFDocEncodingNames[232] = {
+ "breve",
+ "caron",
+ "circumflex",
+ "dotaccent",
+ "hungarumlaut",
+ "ogonek",
+ "ring",
+ "tilde",
+ "space",
+ "exclam",
+ "quotedbl",
+ "numbersign",
+ "dollar",
+ "percent",
+ "ampersand",
+ "quotesingle",
+ "parenleft",
+ "parenright",
+ "asterisk",
+ "plus",
+ "comma",
+ "hyphen",
+ "period",
+ "slash",
+ "zero",
+ "one",
+ "two",
+ "three",
+ "four",
+ "five",
+ "six",
+ "seven",
+ "eight",
+ "nine",
+ "colon",
+ "semicolon",
+ "less",
+ "equal",
+ "greater",
+ "question",
+ "at",
+ "A",
+ "B",
+ "C",
+ "D",
+ "E",
+ "F",
+ "G",
+ "H",
+ "I",
+ "J",
+ "K",
+ "L",
+ "M",
+ "N",
+ "O",
+ "P",
+ "Q",
+ "R",
+ "S",
+ "T",
+ "U",
+ "V",
+ "W",
+ "X",
+ "Y",
+ "Z",
+ "bracketleft",
+ "backslash",
+ "bracketright",
+ "asciicircum",
+ "underscore",
+ "grave",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "f",
+ "g",
+ "h",
+ "i",
+ "j",
+ "k",
+ "l",
+ "m",
+ "n",
+ "o",
+ "p",
+ "q",
+ "r",
+ "s",
+ "t",
+ "u",
+ "v",
+ "w",
+ "x",
+ "y",
+ "z",
+ "braceleft",
+ "bar",
+ "braceright",
+ "asciitilde",
+ NULL,
+ "bullet3",
+ "dagger",
+ "daggerdbl",
+ "ellipsis",
+ "emdash",
+ "endash",
+ "florin",
+ "fraction",
+ "guilsinglleft",
+ "guilsinglright",
+ "minus",
+ "perthousand",
+ "quotedblbase",
+ "quotedblleft",
+ "quotedblright",
+ "quoteleft",
+ "quoteright",
+ "quotesinglbase",
+ "trademark",
+ "fi",
+ "fl",
+ "Lslash",
+ "OE",
+ "Scaron",
+ "Ydieresis",
+ "Zcaron2",
+ "dotlessi",
+ "lslash",
+ "oe",
+ "scaron",
+ "zcaron2",
+ NULL,
+ "Euro",
+ "exclamdown",
+ "cent",
+ "sterling",
+ "currency",
+ "yen",
+ "brokenbar",
+ "section",
+ "dieresis",
+ "copyright",
+ "ordfeminine",
+ "guillemotleft4",
+ "logicalnot",
+ NULL,
+ "registered",
+ "macron",
+ "degree",
+ "plusminus",
+ "twosuperior",
+ "threesuperior",
+ "acute",
+ "mu",
+ "paragraph",
+ "periodcentered",
+ "cedilla",
+ "onesuperior",
+ "ordmasculine",
+ "guillemotright4",
+ "onequarter",
+ "onehalf",
+ "threequarters",
+ "questiondown",
+ "Agrave",
+ "Aacute",
+ "Acircumflex",
+ "Atilde",
+ "Adieresis",
+ "Aring",
+ "AE",
+ "Ccedilla",
+ "Egrave",
+ "Eacute",
+ "Ecircumflex",
+ "Edieresis",
+ "Igrave",
+ "Iacute",
+ "Icircumflex",
+ "Idieresis",
+ "Eth",
+ "Ntilde",
+ "Ograve",
+ "Oacute",
+ "Ocircumflex",
+ "Otilde",
+ "Odieresis",
+ "multiply",
+ "Oslash",
+ "Ugrave",
+ "Uacute",
+ "Ucircumflex",
+ "Udieresis",
+ "Yacute",
+ "Thorn",
+ "germandbls",
+ "agrave",
+ "aacute",
+ "acircumflex",
+ "atilde",
+ "adieresis",
+ "aring",
+ "ae",
+ "ccedilla",
+ "egrave",
+ "eacute",
+ "ecircumflex",
+ "edieresis",
+ "igrave",
+ "iacute",
+ "icircumflex",
+ "idieresis",
+ "eth",
+ "ntilde",
+ "ograve",
+ "oacute",
+ "ocircumflex",
+ "otilde",
+ "odieresis",
+ "divide",
+ "oslash",
+ "ugrave",
+ "uacute",
+ "ucircumflex",
+ "udieresis",
+ "yacute",
+ "thorn",
+ "ydieresis",
+};
+static const FX_CHAR* const AdobeSymbolEncodingNames[224] = {
+ "space",
+ "exclam",
+ "universal",
+ "numbersign",
+ "existential",
+ "percent",
+ "ampersand",
+ "suchthat",
+ "parenleft",
+ "parenright",
+ "asteriskmath",
+ "plus",
+ "comma",
+ "minus",
+ "period",
+ "slash",
+ "zero",
+ "one",
+ "two",
+ "three",
+ "four",
+ "five",
+ "six",
+ "seven",
+ "eight",
+ "nine",
+ "colon",
+ "semicolon",
+ "less",
+ "equal",
+ "greater",
+ "question",
+ "congruent",
+ "Alpha",
+ "Beta",
+ "Chi",
+ "Delta",
+ "Epsilon",
+ "Phi",
+ "Gamma",
+ "Eta",
+ "Iota",
+ "theta1",
+ "Kappa",
+ "Lambda",
+ "Mu",
+ "Nu",
+ "Omicron",
+ "Pi",
+ "Theta",
+ "Rho",
+ "Sigma",
+ "Tau",
+ "Upsilon",
+ "sigma1",
+ "Omega",
+ "Xi",
+ "Psi",
+ "Zeta",
+ "bracketleft",
+ "therefore",
+ "bracketright",
+ "perpendicular",
+ "underscore",
+ "radicalex",
+ "alpha",
+ "beta",
+ "chi",
+ "delta",
+ "epsilon",
+ "phi",
+ "gamma",
+ "eta",
+ "iota",
+ "phi1",
+ "kappa",
+ "lambda",
+ "mu",
+ "nu",
+ "omicron",
+ "pi",
+ "theta",
+ "rho",
+ "sigma",
+ "tau",
+ "upsilon",
+ "omega1",
+ "omega",
+ "xi",
+ "psi",
+ "zeta",
+ "braceleft",
+ "bar",
+ "braceright",
+ "similar",
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ "Euro",
+ "Upsilon1",
+ "minute",
+ "lessequal",
+ "fraction",
+ "infinity",
+ "florin",
+ "club",
+ "diamond",
+ "heart",
+ "spade",
+ "arrowboth",
+ "arrowleft",
+ "arrowup",
+ "arrowright",
+ "arrowdown",
+ "degree",
+ "plusminus",
+ "second",
+ "greaterequal",
+ "multiply",
+ "proportional",
+ "partialdiff",
+ "bullet",
+ "divide",
+ "notequal",
+ "equivalence",
+ "approxequal",
+ "ellipsis",
+ "arrowvertex",
+ "arrowhorizex",
+ "carriagereturn",
+ "aleph",
+ "Ifraktur",
+ "Rfraktur",
+ "weierstrass",
+ "circlemultiply",
+ "circleplus",
+ "emptyset",
+ "intersection",
+ "union",
+ "propersuperset",
+ "reflexsuperset",
+ "notsubset",
+ "propersubset",
+ "reflexsubset",
+ "element",
+ "notelement",
+ "angle",
+ "gradient",
+ "registerserif",
+ "copyrightserif",
+ "trademarkserif",
+ "product",
+ "radical",
+ "dotmath",
+ "logicalnot",
+ "logicaland",
+ "logicalor",
+ "arrowdblboth",
+ "arrowdblleft",
+ "arrowdblup",
+ "arrowdblright",
+ "arrowdbldown",
+ "lozenge",
+ "angleleft",
+ "registersans",
+ "copyrightsans",
+ "trademarksans",
+ "summation",
+ "parenlefttp",
+ "parenleftex",
+ "parenleftbt",
+ "bracketlefttp",
+ "bracketleftex",
+ "bracketleftbt",
+ "bracelefttp",
+ "braceleftmid",
+ "braceleftbt",
+ "braceex",
+ NULL,
+ "angleright",
+ "integral",
+ "integraltp",
+ "integralex",
+ "integralbt",
+ "parenrighttp",
+ "parenrightex",
+ "parenrightbt",
+ "bracketrighttp",
+ "bracketrightex",
+ "bracketrightbt",
+ "bracerighttp",
+ "bracerightmid",
+ "bracerightbt",
+ NULL,
+};
+static const FX_CHAR* const ZapfEncodingNames[224] = {
+ "space", "a1", "a2", "a202", "a3", "a4", "a5", "a119", "a118",
+ "a117", "a11", "a12", "a13", "a14", "a15", "a16", "a105", "a17",
+ "a18", "a19", "a20", "a21", "a22", "a23", "a24", "a25", "a26",
+ "a27", "a28", "a6", "a7", "a8", "a9", "a10", "a29", "a30",
+ "a31", "a32", "a33", "a34", "a35", "a36", "a37", "a38", "a39",
+ "a40", "a41", "a42", "a43", "a44", "a45", "a46", "a47", "a48",
+ "a49", "a50", "a51", "a52", "a53", "a54", "a55", "a56", "a57",
+ "a58", "a59", "a60", "a61", "a62", "a63", "a64", "a65", "a66",
+ "a67", "a68", "a69", "a70", "a71", "a72", "a73", "a74", "a203",
+ "a75", "a204", "a76", "a77", "a78", "a79", "a81", "a82", "a83",
+ "a84", "a97", "a98", "a99", "a100", NULL, "a89", "a90", "a93",
+ "a94", "a91", "a92", "a205", "a85", "a206", "a86", "a87", "a88",
+ "a95", "a96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, "a101", "a102", "a103", "a104", "a106", "a107",
+ "a108", "a112", "a111", "a110", "a109", "a120", "a121", "a122", "a123",
+ "a124", "a125", "a126", "a127", "a128", "a129", "a130", "a131", "a132",
+ "a133", "a134", "a135", "a136", "a137", "a138", "a139", "a140", "a141",
+ "a142", "a143", "a144", "a145", "a146", "a147", "a148", "a149", "a150",
+ "a151", "a152", "a153", "a154", "a155", "a156", "a157", "a158", "a159",
+ "a160", "a161", "a163", "a164", "a196", "a165", "a192", "a166", "a167",
+ "a168", "a169", "a170", "a171", "a172", "a173", "a162", "a174", "a175",
+ "a176", "a177", "a178", "a179", "a193", "a180", "a199", "a181", "a200",
+ "a182", NULL, "a201", "a183", "a184", "a197", "a185", "a194", "a198",
+ "a186", "a195", "a187", "a188", "a189", "a190", "a191", NULL};
+const FX_CHAR* PDF_CharNameFromPredefinedCharSet(int encoding,
+ uint8_t charcode) {
+ if (encoding == PDFFONT_ENCODING_PDFDOC) {
+ if (charcode < 24) {
+ return NULL;
+ }
+ charcode -= 24;
+ } else {
+ if (charcode < 32) {
+ return NULL;
+ }
+ charcode -= 32;
+ }
+ switch (encoding) {
+ case PDFFONT_ENCODING_WINANSI:
+ return AdobeWinAnsiEncodingNames[charcode];
+ case PDFFONT_ENCODING_MACROMAN:
+ return MacRomanEncodingNames[charcode];
+ case PDFFONT_ENCODING_MACEXPERT:
+ return MacExpertEncodingNames[charcode];
+ case PDFFONT_ENCODING_STANDARD:
+ return StandardEncodingNames[charcode];
+ case PDFFONT_ENCODING_ADOBE_SYMBOL:
+ return AdobeSymbolEncodingNames[charcode];
+ case PDFFONT_ENCODING_ZAPFDINGBATS:
+ return ZapfEncodingNames[charcode];
+ case PDFFONT_ENCODING_PDFDOC:
+ return PDFDocEncodingNames[charcode];
+ }
+ return NULL;
+}
+FX_WCHAR FT_UnicodeFromCharCode(int encoding, FX_DWORD charcode) {
+ switch (encoding) {
+ case FXFT_ENCODING_UNICODE:
+ return (FX_WORD)charcode;
+ case FXFT_ENCODING_ADOBE_STANDARD:
+ return StandardEncoding[(uint8_t)charcode];
+ case FXFT_ENCODING_ADOBE_EXPERT:
+ return MacExpertEncoding[(uint8_t)charcode];
+ case FXFT_ENCODING_ADOBE_LATIN_1:
+ return AdobeWinAnsiEncoding[(uint8_t)charcode];
+ case FXFT_ENCODING_APPLE_ROMAN:
+ return MacRomanEncoding[(uint8_t)charcode];
+ case PDFFONT_ENCODING_PDFDOC:
+ return PDFDocEncoding[(uint8_t)charcode];
+ }
+ return 0;
+}
+static FX_DWORD PDF_FindCode(const FX_WORD* pCodes, FX_WORD unicode) {
+ for (FX_DWORD i = 0; i < 256; i++)
+ if (pCodes[i] == unicode) {
+ return i;
+ }
+ return 0;
+}
+static const FX_WORD MSSymbolEncoding[256] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 32, 33, 8704, 35,
+ 8707, 37, 38, 8715, 40, 41, 8727, 43, 44,
+ 8722, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 8773, 913, 914, 935, 916, 917, 934, 915,
+ 919, 921, 977, 922, 923, 924, 925, 927, 928,
+ 920, 929, 931, 932, 933, 962, 937, 926, 936,
+ 918, 91, 8756, 93, 8869, 95, 8254, 945, 946,
+ 967, 948, 949, 966, 947, 951, 953, 981, 954,
+ 955, 956, 957, 959, 960, 952, 961, 963, 964,
+ 965, 982, 969, 958, 968, 950, 123, 124, 125,
+ 8764, 0, 0, 0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 978,
+ 8242, 8804, 8725, 8734, 402, 9827, 9830, 9828, 9824,
+ 8596, 8592, 8593, 8594, 8595, 176, 177, 8243, 8805,
+ 215, 8733, 8706, 8729, 247, 8800, 8801, 8776, 8943,
+ 0, 0, 8629, 0, 8465, 8476, 8472, 8855, 8853,
+ 8709, 8745, 8746, 8835, 8839, 8836, 8834, 8838, 8712,
+ 8713, 8736, 8711, 174, 169, 8482, 8719, 8730, 8901,
+ 172, 8743, 8744, 8660, 8656, 8657, 8658, 8659, 9674,
+ 9001, 0, 0, 0, 8721, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0x0000, 9002, 8747,
+ 8992, 0, 8993, 0, 0, 0, 0, 0, 0,
+ 0x0000, 0x0000, 0x0000, 0x0000};
+FX_DWORD FT_CharCodeFromUnicode(int encoding, FX_WCHAR unicode) {
+ switch (encoding) {
+ case FXFT_ENCODING_UNICODE:
+ return unicode;
+ case FXFT_ENCODING_ADOBE_STANDARD:
+ return PDF_FindCode(StandardEncoding, unicode);
+ case FXFT_ENCODING_ADOBE_EXPERT:
+ return PDF_FindCode(MacExpertEncoding, unicode);
+ case FXFT_ENCODING_ADOBE_LATIN_1:
+ return PDF_FindCode(AdobeWinAnsiEncoding, unicode);
+ case FXFT_ENCODING_APPLE_ROMAN:
+ return PDF_FindCode(MacRomanEncoding, unicode);
+ case FXFT_ENCODING_ADOBE_CUSTOM:
+ return PDF_FindCode(PDFDocEncoding, unicode);
+ case FXFT_ENCODING_MS_SYMBOL:
+ return PDF_FindCode(MSSymbolEncoding, unicode);
+ }
+ return 0;
+}
+const FX_WORD* PDF_UnicodesForPredefinedCharSet(int encoding) {
+ switch (encoding) {
+ case PDFFONT_ENCODING_WINANSI:
+ return AdobeWinAnsiEncoding;
+ case PDFFONT_ENCODING_MACROMAN:
+ return MacRomanEncoding;
+ case PDFFONT_ENCODING_MACEXPERT:
+ return MacExpertEncoding;
+ case PDFFONT_ENCODING_STANDARD:
+ return StandardEncoding;
+ case PDFFONT_ENCODING_ADOBE_SYMBOL:
+ return AdobeSymbolEncoding;
+ case PDFFONT_ENCODING_ZAPFDINGBATS:
+ return ZapfEncoding;
+ case PDFFONT_ENCODING_PDFDOC:
+ return PDFDocEncoding;
+ case PDFFONT_ENCODING_MS_SYMBOL:
+ return MSSymbolEncoding;
+ }
+ return NULL;
+}
+FX_DWORD PDF_PredefinedCharCodeFromUnicode(int encoding, FX_WCHAR unicode) {
+ return PDF_FindCode(PDF_UnicodesForPredefinedCharSet(encoding), unicode);
+}
+FX_WCHAR PDF_UnicodeFromAdobeName(const FX_CHAR* name) {
+ return (FX_WCHAR)(FXFT_unicode_from_adobe_name(name) & 0x7FFFFFFF);
+}
+CFX_ByteString PDF_AdobeNameFromUnicode(FX_WCHAR unicode) {
+ char glyph_name[64];
+ FXFT_adobe_name_from_unicode(glyph_name, unicode);
+ return CFX_ByteString(glyph_name);
+}
diff --git a/core/fpdfapi/fpdf_font/fpdf_font_cid.cpp b/core/fpdfapi/fpdf_font/fpdf_font_cid.cpp
new file mode 100644
index 0000000000..91fb9fc2ae
--- /dev/null
+++ b/core/fpdfapi/fpdf_font/fpdf_font_cid.cpp
@@ -0,0 +1,1676 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_font/font_int.h"
+
+#include "core/fpdfapi/fpdf_cmaps/cmap_int.h"
+#include "core/fpdfapi/fpdf_font/ttgsubtable.h"
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_simple_parser.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_page.h"
+#include "core/include/fpdfapi/fpdf_resource.h"
+#include "core/include/fxcrt/fx_ext.h"
+#include "core/include/fxge/fx_freetype.h"
+#include "core/include/fxge/fx_ge.h"
+
+namespace {
+
+const FX_CHAR* const g_CharsetNames[CIDSET_NUM_SETS] = {
+ nullptr, "GB1", "CNS1", "Japan1", "Korea1", "UCS"};
+
+const int g_CharsetCPs[CIDSET_NUM_SETS] = {0, 936, 950, 932, 949, 1200};
+
+class CPDF_PredefinedCMap {
+ public:
+ const FX_CHAR* m_pName;
+ CIDSet m_Charset;
+ int m_Coding;
+ CPDF_CMap::CodingScheme m_CodingScheme;
+ FX_DWORD m_LeadingSegCount;
+ uint8_t m_LeadingSegs[4];
+};
+
+const CPDF_PredefinedCMap g_PredefinedCMaps[] = {
+ {"GB-EUC",
+ CIDSET_GB1,
+ CIDCODING_GB,
+ CPDF_CMap::MixedTwoBytes,
+ 1,
+ {0xa1, 0xfe}},
+ {"GBpc-EUC",
+ CIDSET_GB1,
+ CIDCODING_GB,
+ CPDF_CMap::MixedTwoBytes,
+ 1,
+ {0xa1, 0xfc}},
+ {"GBK-EUC",
+ CIDSET_GB1,
+ CIDCODING_GB,
+ CPDF_CMap::MixedTwoBytes,
+ 1,
+ {0x81, 0xfe}},
+ {"GBKp-EUC",
+ CIDSET_GB1,
+ CIDCODING_GB,
+ CPDF_CMap::MixedTwoBytes,
+ 1,
+ {0x81, 0xfe}},
+ {"GBK2K-EUC",
+ CIDSET_GB1,
+ CIDCODING_GB,
+ CPDF_CMap::MixedTwoBytes,
+ 1,
+ {0x81, 0xfe}},
+ {"GBK2K",
+ CIDSET_GB1,
+ CIDCODING_GB,
+ CPDF_CMap::MixedTwoBytes,
+ 1,
+ {0x81, 0xfe}},
+ {"UniGB-UCS2", CIDSET_GB1, CIDCODING_UCS2, CPDF_CMap::TwoBytes, 0, {}},
+ {"UniGB-UTF16", CIDSET_GB1, CIDCODING_UTF16, CPDF_CMap::TwoBytes, 0, {}},
+ {"B5pc",
+ CIDSET_CNS1,
+ CIDCODING_BIG5,
+ CPDF_CMap::MixedTwoBytes,
+ 1,
+ {0xa1, 0xfc}},
+ {"HKscs-B5",
+ CIDSET_CNS1,
+ CIDCODING_BIG5,
+ CPDF_CMap::MixedTwoBytes,
+ 1,
+ {0x88, 0xfe}},
+ {"ETen-B5",
+ CIDSET_CNS1,
+ CIDCODING_BIG5,
+ CPDF_CMap::MixedTwoBytes,
+ 1,
+ {0xa1, 0xfe}},
+ {"ETenms-B5",
+ CIDSET_CNS1,
+ CIDCODING_BIG5,
+ CPDF_CMap::MixedTwoBytes,
+ 1,
+ {0xa1, 0xfe}},
+ {"UniCNS-UCS2", CIDSET_CNS1, CIDCODING_UCS2, CPDF_CMap::TwoBytes, 0, {}},
+ {"UniCNS-UTF16", CIDSET_CNS1, CIDCODING_UTF16, CPDF_CMap::TwoBytes, 0, {}},
+ {"83pv-RKSJ",
+ CIDSET_JAPAN1,
+ CIDCODING_JIS,
+ CPDF_CMap::MixedTwoBytes,
+ 2,
+ {0x81, 0x9f, 0xe0, 0xfc}},
+ {"90ms-RKSJ",
+ CIDSET_JAPAN1,
+ CIDCODING_JIS,
+ CPDF_CMap::MixedTwoBytes,
+ 2,
+ {0x81, 0x9f, 0xe0, 0xfc}},
+ {"90msp-RKSJ",
+ CIDSET_JAPAN1,
+ CIDCODING_JIS,
+ CPDF_CMap::MixedTwoBytes,
+ 2,
+ {0x81, 0x9f, 0xe0, 0xfc}},
+ {"90pv-RKSJ",
+ CIDSET_JAPAN1,
+ CIDCODING_JIS,
+ CPDF_CMap::MixedTwoBytes,
+ 2,
+ {0x81, 0x9f, 0xe0, 0xfc}},
+ {"Add-RKSJ",
+ CIDSET_JAPAN1,
+ CIDCODING_JIS,
+ CPDF_CMap::MixedTwoBytes,
+ 2,
+ {0x81, 0x9f, 0xe0, 0xfc}},
+ {"EUC",
+ CIDSET_JAPAN1,
+ CIDCODING_JIS,
+ CPDF_CMap::MixedTwoBytes,
+ 2,
+ {0x8e, 0x8e, 0xa1, 0xfe}},
+ {"H", CIDSET_JAPAN1, CIDCODING_JIS, CPDF_CMap::TwoBytes, 1, {0x21, 0x7e}},
+ {"V", CIDSET_JAPAN1, CIDCODING_JIS, CPDF_CMap::TwoBytes, 1, {0x21, 0x7e}},
+ {"Ext-RKSJ",
+ CIDSET_JAPAN1,
+ CIDCODING_JIS,
+ CPDF_CMap::MixedTwoBytes,
+ 2,
+ {0x81, 0x9f, 0xe0, 0xfc}},
+ {"UniJIS-UCS2", CIDSET_JAPAN1, CIDCODING_UCS2, CPDF_CMap::TwoBytes, 0, {}},
+ {"UniJIS-UCS2-HW",
+ CIDSET_JAPAN1,
+ CIDCODING_UCS2,
+ CPDF_CMap::TwoBytes,
+ 0,
+ {}},
+ {"UniJIS-UTF16",
+ CIDSET_JAPAN1,
+ CIDCODING_UTF16,
+ CPDF_CMap::TwoBytes,
+ 0,
+ {}},
+ {"KSC-EUC",
+ CIDSET_KOREA1,
+ CIDCODING_KOREA,
+ CPDF_CMap::MixedTwoBytes,
+ 1,
+ {0xa1, 0xfe}},
+ {"KSCms-UHC",
+ CIDSET_KOREA1,
+ CIDCODING_KOREA,
+ CPDF_CMap::MixedTwoBytes,
+ 1,
+ {0x81, 0xfe}},
+ {"KSCms-UHC-HW",
+ CIDSET_KOREA1,
+ CIDCODING_KOREA,
+ CPDF_CMap::MixedTwoBytes,
+ 1,
+ {0x81, 0xfe}},
+ {"KSCpc-EUC",
+ CIDSET_KOREA1,
+ CIDCODING_KOREA,
+ CPDF_CMap::MixedTwoBytes,
+ 1,
+ {0xa1, 0xfd}},
+ {"UniKS-UCS2", CIDSET_KOREA1, CIDCODING_UCS2, CPDF_CMap::TwoBytes, 0, {}},
+ {"UniKS-UTF16", CIDSET_KOREA1, CIDCODING_UTF16, CPDF_CMap::TwoBytes, 0, {}},
+};
+
+CIDSet CIDSetFromSizeT(size_t index) {
+ if (index >= CIDSET_NUM_SETS) {
+ NOTREACHED();
+ return CIDSET_UNKNOWN;
+ }
+ return static_cast<CIDSet>(index);
+}
+
+CIDSet CharsetFromOrdering(const CFX_ByteString& ordering) {
+ for (size_t charset = 1; charset < FX_ArraySize(g_CharsetNames); ++charset) {
+ if (ordering == CFX_ByteStringC(g_CharsetNames[charset]))
+ return CIDSetFromSizeT(charset);
+ }
+ return CIDSET_UNKNOWN;
+}
+
+CFX_ByteString CMap_GetString(const CFX_ByteStringC& word) {
+ return word.Mid(1, word.GetLength() - 2);
+}
+
+int CompareDWORD(const void* data1, const void* data2) {
+ return (*(FX_DWORD*)data1) - (*(FX_DWORD*)data2);
+}
+
+int CompareCID(const void* key, const void* element) {
+ if ((*(FX_DWORD*)key) < (*(FX_DWORD*)element)) {
+ return -1;
+ }
+ if ((*(FX_DWORD*)key) >
+ (*(FX_DWORD*)element) + ((FX_DWORD*)element)[1] / 65536) {
+ return 1;
+ }
+ return 0;
+}
+
+int CheckCodeRange(uint8_t* codes,
+ int size,
+ CMap_CodeRange* pRanges,
+ int nRanges) {
+ int iSeg = nRanges - 1;
+ while (iSeg >= 0) {
+ if (pRanges[iSeg].m_CharSize < size) {
+ --iSeg;
+ continue;
+ }
+ int iChar = 0;
+ while (iChar < size) {
+ if (codes[iChar] < pRanges[iSeg].m_Lower[iChar] ||
+ codes[iChar] > pRanges[iSeg].m_Upper[iChar]) {
+ break;
+ }
+ ++iChar;
+ }
+ if (iChar == pRanges[iSeg].m_CharSize)
+ return 2;
+
+ if (iChar)
+ return (size == pRanges[iSeg].m_CharSize) ? 2 : 1;
+ iSeg--;
+ }
+ return 0;
+}
+
+int GetCharSizeImpl(FX_DWORD charcode,
+ CMap_CodeRange* pRanges,
+ int iRangesSize) {
+ if (!iRangesSize)
+ return 1;
+
+ uint8_t codes[4];
+ codes[0] = codes[1] = 0x00;
+ codes[2] = (uint8_t)(charcode >> 8 & 0xFF);
+ codes[3] = (uint8_t)charcode;
+ int offset = 0;
+ int size = 4;
+ for (int i = 0; i < 4; ++i) {
+ int iSeg = iRangesSize - 1;
+ while (iSeg >= 0) {
+ if (pRanges[iSeg].m_CharSize < size) {
+ --iSeg;
+ continue;
+ }
+ int iChar = 0;
+ while (iChar < size) {
+ if (codes[offset + iChar] < pRanges[iSeg].m_Lower[iChar] ||
+ codes[offset + iChar] > pRanges[iSeg].m_Upper[iChar]) {
+ break;
+ }
+ ++iChar;
+ }
+ if (iChar == pRanges[iSeg].m_CharSize)
+ return size;
+ --iSeg;
+ }
+ --size;
+ ++offset;
+ }
+ return 1;
+}
+
+bool IsValidEmbeddedCharcodeFromUnicodeCharset(CIDSet charset) {
+ switch (charset) {
+ case CIDSET_GB1:
+ case CIDSET_CNS1:
+ case CIDSET_JAPAN1:
+ case CIDSET_KOREA1:
+ return true;
+
+ default:
+ return false;
+ }
+}
+
+#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
+FX_DWORD EmbeddedCharcodeFromUnicode(const FXCMAP_CMap* pEmbedMap,
+ CIDSet charset,
+ FX_WCHAR unicode) {
+ if (!IsValidEmbeddedCharcodeFromUnicodeCharset(charset))
+ return 0;
+
+ CPDF_FontGlobals* pFontGlobals =
+ CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals();
+ const FX_WORD* pCodes = pFontGlobals->m_EmbeddedToUnicodes[charset].m_pMap;
+ if (!pCodes)
+ return 0;
+
+ int nCodes = pFontGlobals->m_EmbeddedToUnicodes[charset].m_Count;
+ for (int i = 0; i < nCodes; ++i) {
+ if (pCodes[i] == unicode) {
+ FX_DWORD CharCode = FPDFAPI_CharCodeFromCID(pEmbedMap, i);
+ if (CharCode != 0) {
+ return CharCode;
+ }
+ }
+ }
+ return 0;
+}
+#endif // _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
+
+FX_WCHAR EmbeddedUnicodeFromCharcode(const FXCMAP_CMap* pEmbedMap,
+ CIDSet charset,
+ FX_DWORD charcode) {
+ if (!IsValidEmbeddedCharcodeFromUnicodeCharset(charset))
+ return 0;
+
+ FX_WORD cid = FPDFAPI_CIDFromCharCode(pEmbedMap, charcode);
+ if (cid == 0)
+ return 0;
+
+ CPDF_FontGlobals* pFontGlobals =
+ CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals();
+ const FX_WORD* pCodes = pFontGlobals->m_EmbeddedToUnicodes[charset].m_pMap;
+ if (!pCodes)
+ return 0;
+
+ if (cid < pFontGlobals->m_EmbeddedToUnicodes[charset].m_Count)
+ return pCodes[cid];
+ return 0;
+}
+
+void FT_UseCIDCharmap(FXFT_Face face, int coding) {
+ int encoding;
+ switch (coding) {
+ case CIDCODING_GB:
+ encoding = FXFT_ENCODING_GB2312;
+ break;
+ case CIDCODING_BIG5:
+ encoding = FXFT_ENCODING_BIG5;
+ break;
+ case CIDCODING_JIS:
+ encoding = FXFT_ENCODING_SJIS;
+ break;
+ case CIDCODING_KOREA:
+ encoding = FXFT_ENCODING_JOHAB;
+ break;
+ default:
+ encoding = FXFT_ENCODING_UNICODE;
+ }
+ int err = FXFT_Select_Charmap(face, encoding);
+ if (err) {
+ err = FXFT_Select_Charmap(face, FXFT_ENCODING_UNICODE);
+ }
+ if (err && FXFT_Get_Face_Charmaps(face)) {
+ FXFT_Set_Charmap(face, *FXFT_Get_Face_Charmaps(face));
+ }
+}
+
+const struct CIDTransform {
+ FX_WORD CID;
+ uint8_t a, b, c, d, e, f;
+} g_Japan1_VertCIDs[] = {
+ {97, 129, 0, 0, 127, 55, 0}, {7887, 127, 0, 0, 127, 76, 89},
+ {7888, 127, 0, 0, 127, 79, 94}, {7889, 0, 129, 127, 0, 17, 127},
+ {7890, 0, 129, 127, 0, 17, 127}, {7891, 0, 129, 127, 0, 17, 127},
+ {7892, 0, 129, 127, 0, 17, 127}, {7893, 0, 129, 127, 0, 17, 127},
+ {7894, 0, 129, 127, 0, 17, 127}, {7895, 0, 129, 127, 0, 17, 127},
+ {7896, 0, 129, 127, 0, 17, 127}, {7897, 0, 129, 127, 0, 17, 127},
+ {7898, 0, 129, 127, 0, 17, 127}, {7899, 0, 129, 127, 0, 17, 104},
+ {7900, 0, 129, 127, 0, 17, 127}, {7901, 0, 129, 127, 0, 17, 104},
+ {7902, 0, 129, 127, 0, 17, 127}, {7903, 0, 129, 127, 0, 17, 127},
+ {7904, 0, 129, 127, 0, 17, 127}, {7905, 0, 129, 127, 0, 17, 114},
+ {7906, 0, 129, 127, 0, 17, 127}, {7907, 0, 129, 127, 0, 17, 127},
+ {7908, 0, 129, 127, 0, 17, 127}, {7909, 0, 129, 127, 0, 17, 127},
+ {7910, 0, 129, 127, 0, 17, 127}, {7911, 0, 129, 127, 0, 17, 127},
+ {7912, 0, 129, 127, 0, 17, 127}, {7913, 0, 129, 127, 0, 17, 127},
+ {7914, 0, 129, 127, 0, 17, 127}, {7915, 0, 129, 127, 0, 17, 114},
+ {7916, 0, 129, 127, 0, 17, 127}, {7917, 0, 129, 127, 0, 17, 127},
+ {7918, 127, 0, 0, 127, 18, 25}, {7919, 127, 0, 0, 127, 18, 25},
+ {7920, 127, 0, 0, 127, 18, 25}, {7921, 127, 0, 0, 127, 18, 25},
+ {7922, 127, 0, 0, 127, 18, 25}, {7923, 127, 0, 0, 127, 18, 25},
+ {7924, 127, 0, 0, 127, 18, 25}, {7925, 127, 0, 0, 127, 18, 25},
+ {7926, 127, 0, 0, 127, 18, 25}, {7927, 127, 0, 0, 127, 18, 25},
+ {7928, 127, 0, 0, 127, 18, 25}, {7929, 127, 0, 0, 127, 18, 25},
+ {7930, 127, 0, 0, 127, 18, 25}, {7931, 127, 0, 0, 127, 18, 25},
+ {7932, 127, 0, 0, 127, 18, 25}, {7933, 127, 0, 0, 127, 18, 25},
+ {7934, 127, 0, 0, 127, 18, 25}, {7935, 127, 0, 0, 127, 18, 25},
+ {7936, 127, 0, 0, 127, 18, 25}, {7937, 127, 0, 0, 127, 18, 25},
+ {7938, 127, 0, 0, 127, 18, 25}, {7939, 127, 0, 0, 127, 18, 25},
+ {8720, 0, 129, 127, 0, 19, 102}, {8721, 0, 129, 127, 0, 13, 127},
+ {8722, 0, 129, 127, 0, 19, 108}, {8723, 0, 129, 127, 0, 19, 102},
+ {8724, 0, 129, 127, 0, 19, 102}, {8725, 0, 129, 127, 0, 19, 102},
+ {8726, 0, 129, 127, 0, 19, 102}, {8727, 0, 129, 127, 0, 19, 102},
+ {8728, 0, 129, 127, 0, 19, 114}, {8729, 0, 129, 127, 0, 19, 114},
+ {8730, 0, 129, 127, 0, 38, 108}, {8731, 0, 129, 127, 0, 13, 108},
+ {8732, 0, 129, 127, 0, 19, 108}, {8733, 0, 129, 127, 0, 19, 108},
+ {8734, 0, 129, 127, 0, 19, 108}, {8735, 0, 129, 127, 0, 19, 108},
+ {8736, 0, 129, 127, 0, 19, 102}, {8737, 0, 129, 127, 0, 19, 102},
+ {8738, 0, 129, 127, 0, 19, 102}, {8739, 0, 129, 127, 0, 19, 102},
+ {8740, 0, 129, 127, 0, 19, 102}, {8741, 0, 129, 127, 0, 19, 102},
+ {8742, 0, 129, 127, 0, 19, 102}, {8743, 0, 129, 127, 0, 19, 102},
+ {8744, 0, 129, 127, 0, 19, 102}, {8745, 0, 129, 127, 0, 19, 102},
+ {8746, 0, 129, 127, 0, 19, 114}, {8747, 0, 129, 127, 0, 19, 114},
+ {8748, 0, 129, 127, 0, 19, 102}, {8749, 0, 129, 127, 0, 19, 102},
+ {8750, 0, 129, 127, 0, 19, 102}, {8751, 0, 129, 127, 0, 19, 102},
+ {8752, 0, 129, 127, 0, 19, 102}, {8753, 0, 129, 127, 0, 19, 102},
+ {8754, 0, 129, 127, 0, 19, 102}, {8755, 0, 129, 127, 0, 19, 102},
+ {8756, 0, 129, 127, 0, 19, 102}, {8757, 0, 129, 127, 0, 19, 102},
+ {8758, 0, 129, 127, 0, 19, 102}, {8759, 0, 129, 127, 0, 19, 102},
+ {8760, 0, 129, 127, 0, 19, 102}, {8761, 0, 129, 127, 0, 19, 102},
+ {8762, 0, 129, 127, 0, 19, 102}, {8763, 0, 129, 127, 0, 19, 102},
+ {8764, 0, 129, 127, 0, 19, 102}, {8765, 0, 129, 127, 0, 19, 102},
+ {8766, 0, 129, 127, 0, 19, 102}, {8767, 0, 129, 127, 0, 19, 102},
+ {8768, 0, 129, 127, 0, 19, 102}, {8769, 0, 129, 127, 0, 19, 102},
+ {8770, 0, 129, 127, 0, 19, 102}, {8771, 0, 129, 127, 0, 19, 102},
+ {8772, 0, 129, 127, 0, 19, 102}, {8773, 0, 129, 127, 0, 19, 102},
+ {8774, 0, 129, 127, 0, 19, 102}, {8775, 0, 129, 127, 0, 19, 102},
+ {8776, 0, 129, 127, 0, 19, 102}, {8777, 0, 129, 127, 0, 19, 102},
+ {8778, 0, 129, 127, 0, 19, 102}, {8779, 0, 129, 127, 0, 19, 114},
+ {8780, 0, 129, 127, 0, 19, 108}, {8781, 0, 129, 127, 0, 19, 114},
+ {8782, 0, 129, 127, 0, 13, 114}, {8783, 0, 129, 127, 0, 19, 108},
+ {8784, 0, 129, 127, 0, 13, 114}, {8785, 0, 129, 127, 0, 19, 108},
+ {8786, 0, 129, 127, 0, 19, 108}, {8787, 0, 129, 127, 0, 19, 108},
+ {8788, 0, 129, 127, 0, 19, 108}, {8789, 0, 129, 127, 0, 19, 108},
+ {8790, 0, 129, 127, 0, 19, 108}, {8791, 0, 129, 127, 0, 19, 108},
+ {8792, 0, 129, 127, 0, 19, 108}, {8793, 0, 129, 127, 0, 19, 108},
+ {8794, 0, 129, 127, 0, 19, 108}, {8795, 0, 129, 127, 0, 19, 108},
+ {8796, 0, 129, 127, 0, 19, 108}, {8797, 0, 129, 127, 0, 19, 108},
+ {8798, 0, 129, 127, 0, 19, 108}, {8799, 0, 129, 127, 0, 19, 108},
+ {8800, 0, 129, 127, 0, 19, 108}, {8801, 0, 129, 127, 0, 19, 108},
+ {8802, 0, 129, 127, 0, 19, 108}, {8803, 0, 129, 127, 0, 19, 108},
+ {8804, 0, 129, 127, 0, 19, 108}, {8805, 0, 129, 127, 0, 19, 108},
+ {8806, 0, 129, 127, 0, 19, 108}, {8807, 0, 129, 127, 0, 19, 108},
+ {8808, 0, 129, 127, 0, 19, 108}, {8809, 0, 129, 127, 0, 19, 108},
+ {8810, 0, 129, 127, 0, 19, 108}, {8811, 0, 129, 127, 0, 19, 114},
+ {8812, 0, 129, 127, 0, 19, 102}, {8813, 0, 129, 127, 0, 19, 114},
+ {8814, 0, 129, 127, 0, 76, 102}, {8815, 0, 129, 127, 0, 13, 121},
+ {8816, 0, 129, 127, 0, 19, 114}, {8817, 0, 129, 127, 0, 19, 127},
+ {8818, 0, 129, 127, 0, 19, 114}, {8819, 0, 129, 127, 0, 218, 108},
+};
+
+int CompareCIDTransform(const void* key, const void* element) {
+ FX_WORD CID = *static_cast<const FX_WORD*>(key);
+ return CID - static_cast<const struct CIDTransform*>(element)->CID;
+}
+
+} // namespace
+
+CPDF_CMapManager::CPDF_CMapManager() {
+ m_bPrompted = FALSE;
+ FXSYS_memset(m_CID2UnicodeMaps, 0, sizeof m_CID2UnicodeMaps);
+}
+CPDF_CMapManager::~CPDF_CMapManager() {
+ for (const auto& pair : m_CMaps) {
+ delete pair.second;
+ }
+ m_CMaps.clear();
+ for (size_t i = 0; i < FX_ArraySize(m_CID2UnicodeMaps); ++i) {
+ delete m_CID2UnicodeMaps[i];
+ }
+}
+CPDF_CMap* CPDF_CMapManager::GetPredefinedCMap(const CFX_ByteString& name,
+ FX_BOOL bPromptCJK) {
+ auto it = m_CMaps.find(name);
+ if (it != m_CMaps.end()) {
+ return it->second;
+ }
+ CPDF_CMap* pCMap = LoadPredefinedCMap(name, bPromptCJK);
+ if (!name.IsEmpty()) {
+ m_CMaps[name] = pCMap;
+ }
+ return pCMap;
+}
+CPDF_CMap* CPDF_CMapManager::LoadPredefinedCMap(const CFX_ByteString& name,
+ FX_BOOL bPromptCJK) {
+ CPDF_CMap* pCMap = new CPDF_CMap;
+ const FX_CHAR* pname = name;
+ if (*pname == '/') {
+ pname++;
+ }
+ pCMap->LoadPredefined(this, pname, bPromptCJK);
+ return pCMap;
+}
+
+void CPDF_CMapManager::ReloadAll() {
+ for (const auto& pair : m_CMaps) {
+ CPDF_CMap* pCMap = pair.second;
+ pCMap->LoadPredefined(this, pair.first, FALSE);
+ }
+ for (size_t i = 0; i < FX_ArraySize(m_CID2UnicodeMaps); ++i) {
+ if (CPDF_CID2UnicodeMap* pMap = m_CID2UnicodeMaps[i]) {
+ pMap->Load(this, CIDSetFromSizeT(i), FALSE);
+ }
+ }
+}
+CPDF_CID2UnicodeMap* CPDF_CMapManager::GetCID2UnicodeMap(CIDSet charset,
+ FX_BOOL bPromptCJK) {
+ if (!m_CID2UnicodeMaps[charset])
+ m_CID2UnicodeMaps[charset] = LoadCID2UnicodeMap(charset, bPromptCJK);
+ return m_CID2UnicodeMaps[charset];
+}
+CPDF_CID2UnicodeMap* CPDF_CMapManager::LoadCID2UnicodeMap(CIDSet charset,
+ FX_BOOL bPromptCJK) {
+ CPDF_CID2UnicodeMap* pMap = new CPDF_CID2UnicodeMap();
+ if (!pMap->Initialize()) {
+ delete pMap;
+ return NULL;
+ }
+ pMap->Load(this, charset, bPromptCJK);
+ return pMap;
+}
+CPDF_CMapParser::CPDF_CMapParser() {
+ m_pCMap = NULL;
+ m_Status = 0;
+ m_CodeSeq = 0;
+}
+FX_BOOL CPDF_CMapParser::Initialize(CPDF_CMap* pCMap) {
+ m_pCMap = pCMap;
+ m_Status = 0;
+ m_CodeSeq = 0;
+ m_AddMaps.EstimateSize(0, 10240);
+ return TRUE;
+}
+
+void CPDF_CMapParser::ParseWord(const CFX_ByteStringC& word) {
+ if (word.IsEmpty()) {
+ return;
+ }
+ if (word == "begincidchar") {
+ m_Status = 1;
+ m_CodeSeq = 0;
+ } else if (word == "begincidrange") {
+ m_Status = 2;
+ m_CodeSeq = 0;
+ } else if (word == "endcidrange" || word == "endcidchar") {
+ m_Status = 0;
+ } else if (word == "/WMode") {
+ m_Status = 6;
+ } else if (word == "/Registry") {
+ m_Status = 3;
+ } else if (word == "/Ordering") {
+ m_Status = 4;
+ } else if (word == "/Supplement") {
+ m_Status = 5;
+ } else if (word == "begincodespacerange") {
+ m_Status = 7;
+ m_CodeSeq = 0;
+ } else if (word == "usecmap") {
+ } else if (m_Status == 1 || m_Status == 2) {
+ m_CodePoints[m_CodeSeq] = CMap_GetCode(word);
+ m_CodeSeq++;
+ FX_DWORD StartCode, EndCode;
+ FX_WORD StartCID;
+ if (m_Status == 1) {
+ if (m_CodeSeq < 2) {
+ return;
+ }
+ EndCode = StartCode = m_CodePoints[0];
+ StartCID = (FX_WORD)m_CodePoints[1];
+ } else {
+ if (m_CodeSeq < 3) {
+ return;
+ }
+ StartCode = m_CodePoints[0];
+ EndCode = m_CodePoints[1];
+ StartCID = (FX_WORD)m_CodePoints[2];
+ }
+ if (EndCode < 0x10000) {
+ for (FX_DWORD code = StartCode; code <= EndCode; code++) {
+ m_pCMap->m_pMapping[code] = (FX_WORD)(StartCID + code - StartCode);
+ }
+ } else {
+ FX_DWORD buf[2];
+ buf[0] = StartCode;
+ buf[1] = ((EndCode - StartCode) << 16) + StartCID;
+ m_AddMaps.AppendBlock(buf, sizeof buf);
+ }
+ m_CodeSeq = 0;
+ } else if (m_Status == 3) {
+ CMap_GetString(word);
+ m_Status = 0;
+ } else if (m_Status == 4) {
+ m_pCMap->m_Charset = CharsetFromOrdering(CMap_GetString(word));
+ m_Status = 0;
+ } else if (m_Status == 5) {
+ CMap_GetCode(word);
+ m_Status = 0;
+ } else if (m_Status == 6) {
+ m_pCMap->m_bVertical = CMap_GetCode(word);
+ m_Status = 0;
+ } else if (m_Status == 7) {
+ if (word == "endcodespacerange") {
+ int nSegs = m_CodeRanges.GetSize();
+ if (nSegs > 1) {
+ m_pCMap->m_CodingScheme = CPDF_CMap::MixedFourBytes;
+ m_pCMap->m_nCodeRanges = nSegs;
+ m_pCMap->m_pLeadingBytes =
+ FX_Alloc2D(uint8_t, nSegs, sizeof(CMap_CodeRange));
+ FXSYS_memcpy(m_pCMap->m_pLeadingBytes, m_CodeRanges.GetData(),
+ nSegs * sizeof(CMap_CodeRange));
+ } else if (nSegs == 1) {
+ m_pCMap->m_CodingScheme = (m_CodeRanges[0].m_CharSize == 2)
+ ? CPDF_CMap::TwoBytes
+ : CPDF_CMap::OneByte;
+ }
+ m_Status = 0;
+ } else {
+ if (word.GetLength() == 0 || word.GetAt(0) != '<') {
+ return;
+ }
+ if (m_CodeSeq % 2) {
+ CMap_CodeRange range;
+ if (CMap_GetCodeRange(range, m_LastWord, word)) {
+ m_CodeRanges.Add(range);
+ }
+ }
+ m_CodeSeq++;
+ }
+ }
+ m_LastWord = word;
+}
+
+// Static.
+FX_DWORD CPDF_CMapParser::CMap_GetCode(const CFX_ByteStringC& word) {
+ int num = 0;
+ if (word.GetAt(0) == '<') {
+ for (int i = 1; i < word.GetLength() && std::isxdigit(word.GetAt(i)); ++i)
+ num = num * 16 + FXSYS_toHexDigit(word.GetAt(i));
+ return num;
+ }
+
+ for (int i = 0; i < word.GetLength() && std::isdigit(word.GetAt(i)); ++i)
+ num = num * 10 + FXSYS_toDecimalDigit(static_cast<FX_WCHAR>(word.GetAt(i)));
+ return num;
+}
+
+// Static.
+bool CPDF_CMapParser::CMap_GetCodeRange(CMap_CodeRange& range,
+ const CFX_ByteStringC& first,
+ const CFX_ByteStringC& second) {
+ if (first.GetLength() == 0 || first.GetAt(0) != '<')
+ return false;
+
+ int i;
+ for (i = 1; i < first.GetLength(); ++i) {
+ if (first.GetAt(i) == '>') {
+ break;
+ }
+ }
+ range.m_CharSize = (i - 1) / 2;
+ if (range.m_CharSize > 4)
+ return false;
+
+ for (i = 0; i < range.m_CharSize; ++i) {
+ uint8_t digit1 = first.GetAt(i * 2 + 1);
+ uint8_t digit2 = first.GetAt(i * 2 + 2);
+ range.m_Lower[i] = FXSYS_toHexDigit(digit1) * 16 + FXSYS_toHexDigit(digit2);
+ }
+
+ FX_DWORD size = second.GetLength();
+ for (i = 0; i < range.m_CharSize; ++i) {
+ uint8_t digit1 = ((FX_DWORD)i * 2 + 1 < size)
+ ? second.GetAt((FX_STRSIZE)i * 2 + 1)
+ : '0';
+ uint8_t digit2 = ((FX_DWORD)i * 2 + 2 < size)
+ ? second.GetAt((FX_STRSIZE)i * 2 + 2)
+ : '0';
+ range.m_Upper[i] = FXSYS_toHexDigit(digit1) * 16 + FXSYS_toHexDigit(digit2);
+ }
+ return true;
+}
+
+CPDF_CMap::CPDF_CMap() {
+ m_Charset = CIDSET_UNKNOWN;
+ m_Coding = CIDCODING_UNKNOWN;
+ m_CodingScheme = TwoBytes;
+ m_bVertical = 0;
+ m_bLoaded = FALSE;
+ m_pMapping = NULL;
+ m_pLeadingBytes = NULL;
+ m_pAddMapping = NULL;
+ m_pEmbedMap = NULL;
+ m_pUseMap = NULL;
+ m_nCodeRanges = 0;
+}
+CPDF_CMap::~CPDF_CMap() {
+ FX_Free(m_pMapping);
+ FX_Free(m_pAddMapping);
+ FX_Free(m_pLeadingBytes);
+ delete m_pUseMap;
+}
+void CPDF_CMap::Release() {
+ if (m_PredefinedCMap.IsEmpty()) {
+ delete this;
+ }
+}
+
+FX_BOOL CPDF_CMap::LoadPredefined(CPDF_CMapManager* pMgr,
+ const FX_CHAR* pName,
+ FX_BOOL bPromptCJK) {
+ m_PredefinedCMap = pName;
+ if (m_PredefinedCMap == "Identity-H" || m_PredefinedCMap == "Identity-V") {
+ m_Coding = CIDCODING_CID;
+ m_bVertical = pName[9] == 'V';
+ m_bLoaded = TRUE;
+ return TRUE;
+ }
+ CFX_ByteString cmapid = m_PredefinedCMap;
+ m_bVertical = cmapid.Right(1) == "V";
+ if (cmapid.GetLength() > 2) {
+ cmapid = cmapid.Left(cmapid.GetLength() - 2);
+ }
+ const CPDF_PredefinedCMap* map = nullptr;
+ for (size_t i = 0; i < FX_ArraySize(g_PredefinedCMaps); ++i) {
+ if (cmapid == CFX_ByteStringC(g_PredefinedCMaps[i].m_pName)) {
+ map = &g_PredefinedCMaps[i];
+ break;
+ }
+ }
+ if (!map)
+ return FALSE;
+
+ m_Charset = map->m_Charset;
+ m_Coding = map->m_Coding;
+ m_CodingScheme = map->m_CodingScheme;
+ if (m_CodingScheme == MixedTwoBytes) {
+ m_pLeadingBytes = FX_Alloc(uint8_t, 256);
+ for (FX_DWORD i = 0; i < map->m_LeadingSegCount; ++i) {
+ const uint8_t* segs = map->m_LeadingSegs;
+ for (int b = segs[i * 2]; b <= segs[i * 2 + 1]; ++b) {
+ m_pLeadingBytes[b] = 1;
+ }
+ }
+ }
+ FPDFAPI_FindEmbeddedCMap(pName, m_Charset, m_Coding, m_pEmbedMap);
+ if (m_pEmbedMap) {
+ m_bLoaded = TRUE;
+ return TRUE;
+ }
+ return FALSE;
+}
+FX_BOOL CPDF_CMap::LoadEmbedded(const uint8_t* pData, FX_DWORD size) {
+ m_pMapping = FX_Alloc(FX_WORD, 65536);
+ CPDF_CMapParser parser;
+ parser.Initialize(this);
+ CPDF_SimpleParser syntax(pData, size);
+ while (1) {
+ CFX_ByteStringC word = syntax.GetWord();
+ if (word.IsEmpty()) {
+ break;
+ }
+ parser.ParseWord(word);
+ }
+ if (m_CodingScheme == MixedFourBytes && parser.m_AddMaps.GetSize()) {
+ m_pAddMapping = FX_Alloc(uint8_t, parser.m_AddMaps.GetSize() + 4);
+ *(FX_DWORD*)m_pAddMapping = parser.m_AddMaps.GetSize() / 8;
+ FXSYS_memcpy(m_pAddMapping + 4, parser.m_AddMaps.GetBuffer(),
+ parser.m_AddMaps.GetSize());
+ FXSYS_qsort(m_pAddMapping + 4, parser.m_AddMaps.GetSize() / 8, 8,
+ CompareDWORD);
+ }
+ return TRUE;
+}
+
+FX_WORD CPDF_CMap::CIDFromCharCode(FX_DWORD charcode) const {
+ if (m_Coding == CIDCODING_CID) {
+ return (FX_WORD)charcode;
+ }
+ if (m_pEmbedMap) {
+ return FPDFAPI_CIDFromCharCode(m_pEmbedMap, charcode);
+ }
+ if (!m_pMapping) {
+ return (FX_WORD)charcode;
+ }
+ if (charcode >> 16) {
+ if (m_pAddMapping) {
+ void* found = FXSYS_bsearch(&charcode, m_pAddMapping + 4,
+ *(FX_DWORD*)m_pAddMapping, 8, CompareCID);
+ if (!found) {
+ if (m_pUseMap) {
+ return m_pUseMap->CIDFromCharCode(charcode);
+ }
+ return 0;
+ }
+ return (FX_WORD)(((FX_DWORD*)found)[1] % 65536 + charcode -
+ *(FX_DWORD*)found);
+ }
+ if (m_pUseMap)
+ return m_pUseMap->CIDFromCharCode(charcode);
+ return 0;
+ }
+ FX_DWORD CID = m_pMapping[charcode];
+ if (!CID && m_pUseMap)
+ return m_pUseMap->CIDFromCharCode(charcode);
+ return (FX_WORD)CID;
+}
+
+FX_DWORD CPDF_CMap::GetNextChar(const FX_CHAR* pString,
+ int nStrLen,
+ int& offset) const {
+ switch (m_CodingScheme) {
+ case OneByte:
+ return ((uint8_t*)pString)[offset++];
+ case TwoBytes:
+ offset += 2;
+ return ((uint8_t*)pString)[offset - 2] * 256 +
+ ((uint8_t*)pString)[offset - 1];
+ case MixedTwoBytes: {
+ uint8_t byte1 = ((uint8_t*)pString)[offset++];
+ if (!m_pLeadingBytes[byte1]) {
+ return byte1;
+ }
+ uint8_t byte2 = ((uint8_t*)pString)[offset++];
+ return byte1 * 256 + byte2;
+ }
+ case MixedFourBytes: {
+ uint8_t codes[4];
+ int char_size = 1;
+ codes[0] = ((uint8_t*)pString)[offset++];
+ CMap_CodeRange* pRanges = (CMap_CodeRange*)m_pLeadingBytes;
+ while (1) {
+ int ret = CheckCodeRange(codes, char_size, pRanges, m_nCodeRanges);
+ if (ret == 0) {
+ return 0;
+ }
+ if (ret == 2) {
+ FX_DWORD charcode = 0;
+ for (int i = 0; i < char_size; i++) {
+ charcode = (charcode << 8) + codes[i];
+ }
+ return charcode;
+ }
+ if (char_size == 4 || offset == nStrLen) {
+ return 0;
+ }
+ codes[char_size++] = ((uint8_t*)pString)[offset++];
+ }
+ break;
+ }
+ }
+ return 0;
+}
+int CPDF_CMap::GetCharSize(FX_DWORD charcode) const {
+ switch (m_CodingScheme) {
+ case OneByte:
+ return 1;
+ case TwoBytes:
+ return 2;
+ case MixedTwoBytes:
+ case MixedFourBytes:
+ if (charcode < 0x100) {
+ return 1;
+ }
+ if (charcode < 0x10000) {
+ return 2;
+ }
+ if (charcode < 0x1000000) {
+ return 3;
+ }
+ return 4;
+ }
+ return 1;
+}
+int CPDF_CMap::CountChar(const FX_CHAR* pString, int size) const {
+ switch (m_CodingScheme) {
+ case OneByte:
+ return size;
+ case TwoBytes:
+ return (size + 1) / 2;
+ case MixedTwoBytes: {
+ int count = 0;
+ for (int i = 0; i < size; i++) {
+ count++;
+ if (m_pLeadingBytes[((uint8_t*)pString)[i]]) {
+ i++;
+ }
+ }
+ return count;
+ }
+ case MixedFourBytes: {
+ int count = 0, offset = 0;
+ while (offset < size) {
+ GetNextChar(pString, size, offset);
+ count++;
+ }
+ return count;
+ }
+ }
+ return size;
+}
+
+int CPDF_CMap::AppendChar(FX_CHAR* str, FX_DWORD charcode) const {
+ switch (m_CodingScheme) {
+ case OneByte:
+ str[0] = (uint8_t)charcode;
+ return 1;
+ case TwoBytes:
+ str[0] = (uint8_t)(charcode / 256);
+ str[1] = (uint8_t)(charcode % 256);
+ return 2;
+ case MixedTwoBytes:
+ case MixedFourBytes:
+ if (charcode < 0x100) {
+ CMap_CodeRange* pRanges = (CMap_CodeRange*)m_pLeadingBytes;
+ int iSize = GetCharSizeImpl(charcode, pRanges, m_nCodeRanges);
+ if (iSize == 0) {
+ iSize = 1;
+ }
+ if (iSize > 1) {
+ FXSYS_memset(str, 0, sizeof(uint8_t) * iSize);
+ }
+ str[iSize - 1] = (uint8_t)charcode;
+ return iSize;
+ }
+ if (charcode < 0x10000) {
+ str[0] = (uint8_t)(charcode >> 8);
+ str[1] = (uint8_t)charcode;
+ return 2;
+ }
+ if (charcode < 0x1000000) {
+ str[0] = (uint8_t)(charcode >> 16);
+ str[1] = (uint8_t)(charcode >> 8);
+ str[2] = (uint8_t)charcode;
+ return 3;
+ }
+ str[0] = (uint8_t)(charcode >> 24);
+ str[1] = (uint8_t)(charcode >> 16);
+ str[2] = (uint8_t)(charcode >> 8);
+ str[3] = (uint8_t)charcode;
+ return 4;
+ }
+ return 0;
+}
+CPDF_CID2UnicodeMap::CPDF_CID2UnicodeMap() {
+ m_EmbeddedCount = 0;
+}
+CPDF_CID2UnicodeMap::~CPDF_CID2UnicodeMap() {}
+FX_BOOL CPDF_CID2UnicodeMap::Initialize() {
+ return TRUE;
+}
+FX_BOOL CPDF_CID2UnicodeMap::IsLoaded() {
+ return m_EmbeddedCount != 0;
+}
+FX_WCHAR CPDF_CID2UnicodeMap::UnicodeFromCID(FX_WORD CID) {
+ if (m_Charset == CIDSET_UNICODE) {
+ return CID;
+ }
+ if (CID < m_EmbeddedCount) {
+ return m_pEmbeddedMap[CID];
+ }
+ return 0;
+}
+
+void CPDF_CID2UnicodeMap::Load(CPDF_CMapManager* pMgr,
+ CIDSet charset,
+ FX_BOOL bPromptCJK) {
+ m_Charset = charset;
+ FPDFAPI_LoadCID2UnicodeMap(charset, m_pEmbeddedMap, m_EmbeddedCount);
+}
+
+CPDF_CIDFont::CPDF_CIDFont()
+ : m_pCMap(nullptr),
+ m_pAllocatedCMap(nullptr),
+ m_pCID2UnicodeMap(nullptr),
+ m_pCIDToGIDMap(nullptr),
+ m_bCIDIsGID(FALSE),
+ m_pAnsiWidths(nullptr),
+ m_bAdobeCourierStd(FALSE),
+ m_pTTGSUBTable(nullptr) {}
+
+CPDF_CIDFont::~CPDF_CIDFont() {
+ if (m_pAnsiWidths) {
+ FX_Free(m_pAnsiWidths);
+ }
+ delete m_pAllocatedCMap;
+ delete m_pCIDToGIDMap;
+ delete m_pTTGSUBTable;
+}
+
+bool CPDF_CIDFont::IsCIDFont() const {
+ return true;
+}
+
+const CPDF_CIDFont* CPDF_CIDFont::AsCIDFont() const {
+ return this;
+}
+
+CPDF_CIDFont* CPDF_CIDFont::AsCIDFont() {
+ return this;
+}
+
+FX_WORD CPDF_CIDFont::CIDFromCharCode(FX_DWORD charcode) const {
+ if (!m_pCMap) {
+ return (FX_WORD)charcode;
+ }
+ return m_pCMap->CIDFromCharCode(charcode);
+}
+
+FX_BOOL CPDF_CIDFont::IsVertWriting() const {
+ return m_pCMap ? m_pCMap->IsVertWriting() : FALSE;
+}
+
+CFX_WideString CPDF_CIDFont::UnicodeFromCharCode(FX_DWORD charcode) const {
+ CFX_WideString str = CPDF_Font::UnicodeFromCharCode(charcode);
+ if (!str.IsEmpty())
+ return str;
+ FX_WCHAR ret = GetUnicodeFromCharCode(charcode);
+ if (ret == 0)
+ return CFX_WideString();
+ return ret;
+}
+
+FX_WCHAR CPDF_CIDFont::GetUnicodeFromCharCode(FX_DWORD charcode) const {
+ switch (m_pCMap->m_Coding) {
+ case CIDCODING_UCS2:
+ case CIDCODING_UTF16:
+ return (FX_WCHAR)charcode;
+ case CIDCODING_CID:
+ if (!m_pCID2UnicodeMap || !m_pCID2UnicodeMap->IsLoaded()) {
+ return 0;
+ }
+ return m_pCID2UnicodeMap->UnicodeFromCID((FX_WORD)charcode);
+ }
+ if (!m_pCMap->IsLoaded() || !m_pCID2UnicodeMap ||
+ !m_pCID2UnicodeMap->IsLoaded()) {
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
+ FX_WCHAR unicode;
+ int charsize = 1;
+ if (charcode > 255) {
+ charcode = (charcode % 256) * 256 + (charcode / 256);
+ charsize = 2;
+ }
+ int ret = FXSYS_MultiByteToWideChar(g_CharsetCPs[m_pCMap->m_Coding], 0,
+ (const FX_CHAR*)&charcode, charsize,
+ &unicode, 1);
+ if (ret != 1) {
+ return 0;
+ }
+ return unicode;
+#endif
+ if (m_pCMap->m_pEmbedMap) {
+ return EmbeddedUnicodeFromCharcode(m_pCMap->m_pEmbedMap,
+ m_pCMap->m_Charset, charcode);
+ }
+ return 0;
+ }
+ return m_pCID2UnicodeMap->UnicodeFromCID(CIDFromCharCode(charcode));
+}
+
+FX_DWORD CPDF_CIDFont::CharCodeFromUnicode(FX_WCHAR unicode) const {
+ FX_DWORD charcode = CPDF_Font::CharCodeFromUnicode(unicode);
+ if (charcode)
+ return charcode;
+ switch (m_pCMap->m_Coding) {
+ case CIDCODING_UNKNOWN:
+ return 0;
+ case CIDCODING_UCS2:
+ case CIDCODING_UTF16:
+ return unicode;
+ case CIDCODING_CID: {
+ if (!m_pCID2UnicodeMap || !m_pCID2UnicodeMap->IsLoaded()) {
+ return 0;
+ }
+ FX_DWORD CID = 0;
+ while (CID < 65536) {
+ FX_WCHAR this_unicode = m_pCID2UnicodeMap->UnicodeFromCID((FX_WORD)CID);
+ if (this_unicode == unicode) {
+ return CID;
+ }
+ CID++;
+ }
+ break;
+ }
+ }
+
+ if (unicode < 0x80) {
+ return static_cast<FX_DWORD>(unicode);
+ }
+ if (m_pCMap->m_Coding == CIDCODING_CID) {
+ return 0;
+ }
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
+ uint8_t buffer[32];
+ int ret =
+ FXSYS_WideCharToMultiByte(g_CharsetCPs[m_pCMap->m_Coding], 0, &unicode, 1,
+ (char*)buffer, 4, NULL, NULL);
+ if (ret == 1) {
+ return buffer[0];
+ }
+ if (ret == 2) {
+ return buffer[0] * 256 + buffer[1];
+ }
+#else
+ if (m_pCMap->m_pEmbedMap) {
+ return EmbeddedCharcodeFromUnicode(m_pCMap->m_pEmbedMap, m_pCMap->m_Charset,
+ unicode);
+ }
+#endif
+ return 0;
+}
+
+FX_BOOL CPDF_CIDFont::Load() {
+ if (m_pFontDict->GetStringBy("Subtype") == "TrueType") {
+ return LoadGB2312();
+ }
+ CPDF_Array* pFonts = m_pFontDict->GetArrayBy("DescendantFonts");
+ if (!pFonts) {
+ return FALSE;
+ }
+ if (pFonts->GetCount() != 1) {
+ return FALSE;
+ }
+ CPDF_Dictionary* pCIDFontDict = pFonts->GetDictAt(0);
+ if (!pCIDFontDict) {
+ return FALSE;
+ }
+ m_BaseFont = pCIDFontDict->GetStringBy("BaseFont");
+ if ((m_BaseFont.Compare("CourierStd") == 0 ||
+ m_BaseFont.Compare("CourierStd-Bold") == 0 ||
+ m_BaseFont.Compare("CourierStd-BoldOblique") == 0 ||
+ m_BaseFont.Compare("CourierStd-Oblique") == 0) &&
+ !IsEmbedded()) {
+ m_bAdobeCourierStd = TRUE;
+ }
+ CPDF_Dictionary* pFontDesc = pCIDFontDict->GetDictBy("FontDescriptor");
+ if (pFontDesc) {
+ LoadFontDescriptor(pFontDesc);
+ }
+ CPDF_Object* pEncoding = m_pFontDict->GetElementValue("Encoding");
+ if (!pEncoding) {
+ return FALSE;
+ }
+ CFX_ByteString subtype = pCIDFontDict->GetStringBy("Subtype");
+ m_bType1 = (subtype == "CIDFontType0");
+
+ if (pEncoding->IsName()) {
+ CFX_ByteString cmap = pEncoding->GetString();
+ m_pCMap =
+ CPDF_ModuleMgr::Get()
+ ->GetPageModule()
+ ->GetFontGlobals()
+ ->m_CMapManager.GetPredefinedCMap(cmap, m_pFontFile && m_bType1);
+ } else if (CPDF_Stream* pStream = pEncoding->AsStream()) {
+ m_pAllocatedCMap = m_pCMap = new CPDF_CMap;
+ CPDF_StreamAcc acc;
+ acc.LoadAllData(pStream, FALSE);
+ m_pCMap->LoadEmbedded(acc.GetData(), acc.GetSize());
+ } else {
+ return FALSE;
+ }
+ if (!m_pCMap) {
+ return FALSE;
+ }
+ m_Charset = m_pCMap->m_Charset;
+ if (m_Charset == CIDSET_UNKNOWN) {
+ CPDF_Dictionary* pCIDInfo = pCIDFontDict->GetDictBy("CIDSystemInfo");
+ if (pCIDInfo) {
+ m_Charset = CharsetFromOrdering(pCIDInfo->GetStringBy("Ordering"));
+ }
+ }
+ if (m_Charset != CIDSET_UNKNOWN)
+ m_pCID2UnicodeMap =
+ CPDF_ModuleMgr::Get()
+ ->GetPageModule()
+ ->GetFontGlobals()
+ ->m_CMapManager.GetCID2UnicodeMap(
+ m_Charset,
+ !m_pFontFile && (m_pCMap->m_Coding == CIDCODING_CID ||
+ pCIDFontDict->KeyExist("W")));
+ if (m_Font.GetFace()) {
+ if (m_bType1) {
+ FXFT_Select_Charmap(m_Font.GetFace(), FXFT_ENCODING_UNICODE);
+ } else {
+ FT_UseCIDCharmap(m_Font.GetFace(), m_pCMap->m_Coding);
+ }
+ }
+ m_DefaultWidth = pCIDFontDict->GetIntegerBy("DW", 1000);
+ CPDF_Array* pWidthArray = pCIDFontDict->GetArrayBy("W");
+ if (pWidthArray) {
+ LoadMetricsArray(pWidthArray, m_WidthList, 1);
+ }
+ if (!IsEmbedded()) {
+ LoadSubstFont();
+ }
+ if (1) {
+ if (m_pFontFile || (GetSubstFont()->m_SubstFlags & FXFONT_SUBST_EXACT)) {
+ CPDF_Object* pmap = pCIDFontDict->GetElementValue("CIDToGIDMap");
+ if (pmap) {
+ if (CPDF_Stream* pStream = pmap->AsStream()) {
+ m_pCIDToGIDMap = new CPDF_StreamAcc;
+ m_pCIDToGIDMap->LoadAllData(pStream, FALSE);
+ } else if (pmap->GetString() == "Identity") {
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+ if (m_pFontFile) {
+ m_bCIDIsGID = TRUE;
+ }
+#else
+ m_bCIDIsGID = TRUE;
+#endif
+ }
+ }
+ }
+ }
+ CheckFontMetrics();
+ if (IsVertWriting()) {
+ pWidthArray = pCIDFontDict->GetArrayBy("W2");
+ if (pWidthArray) {
+ LoadMetricsArray(pWidthArray, m_VertMetrics, 3);
+ }
+ CPDF_Array* pDefaultArray = pCIDFontDict->GetArrayBy("DW2");
+ if (pDefaultArray) {
+ m_DefaultVY = pDefaultArray->GetIntegerAt(0);
+ m_DefaultW1 = pDefaultArray->GetIntegerAt(1);
+ } else {
+ m_DefaultVY = 880;
+ m_DefaultW1 = -1000;
+ }
+ }
+ return TRUE;
+}
+
+FX_RECT CPDF_CIDFont::GetCharBBox(FX_DWORD charcode, int level) {
+ if (charcode < 256 && m_CharBBox[charcode].right != FX_SMALL_RECT::kInvalid)
+ return FX_RECT(m_CharBBox[charcode]);
+
+ FX_RECT rect;
+ FX_BOOL bVert = FALSE;
+ int glyph_index = GlyphFromCharCode(charcode, &bVert);
+ FXFT_Face face = m_Font.GetFace();
+ if (face) {
+ if (FXFT_Is_Face_Tricky(face)) {
+ int err = FXFT_Load_Glyph(face, glyph_index,
+ FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH);
+ if (!err) {
+ FXFT_BBox cbox;
+ FXFT_Glyph glyph;
+ err = FXFT_Get_Glyph(((FXFT_Face)face)->glyph, &glyph);
+ if (!err) {
+ FXFT_Glyph_Get_CBox(glyph, FXFT_GLYPH_BBOX_PIXELS, &cbox);
+ int pixel_size_x = ((FXFT_Face)face)->size->metrics.x_ppem;
+ int pixel_size_y = ((FXFT_Face)face)->size->metrics.y_ppem;
+ if (pixel_size_x == 0 || pixel_size_y == 0) {
+ rect = FX_RECT(cbox.xMin, cbox.yMax, cbox.xMax, cbox.yMin);
+ } else {
+ rect = FX_RECT(cbox.xMin * 1000 / pixel_size_x,
+ cbox.yMax * 1000 / pixel_size_y,
+ cbox.xMax * 1000 / pixel_size_x,
+ cbox.yMin * 1000 / pixel_size_y);
+ }
+ if (rect.top > FXFT_Get_Face_Ascender(face)) {
+ rect.top = FXFT_Get_Face_Ascender(face);
+ }
+ if (rect.bottom < FXFT_Get_Face_Descender(face)) {
+ rect.bottom = FXFT_Get_Face_Descender(face);
+ }
+ FXFT_Done_Glyph(glyph);
+ }
+ }
+ } else {
+ int err = FXFT_Load_Glyph(face, glyph_index, FXFT_LOAD_NO_SCALE);
+ if (err == 0) {
+ rect = FX_RECT(TT2PDF(FXFT_Get_Glyph_HoriBearingX(face), face),
+ TT2PDF(FXFT_Get_Glyph_HoriBearingY(face), face),
+ TT2PDF(FXFT_Get_Glyph_HoriBearingX(face) +
+ FXFT_Get_Glyph_Width(face),
+ face),
+ TT2PDF(FXFT_Get_Glyph_HoriBearingY(face) -
+ FXFT_Get_Glyph_Height(face),
+ face));
+ rect.top += rect.top / 64;
+ }
+ }
+ }
+ if (!m_pFontFile && m_Charset == CIDSET_JAPAN1) {
+ FX_WORD CID = CIDFromCharCode(charcode);
+ const uint8_t* pTransform = GetCIDTransform(CID);
+ if (pTransform && !bVert) {
+ CFX_Matrix matrix(CIDTransformToFloat(pTransform[0]),
+ CIDTransformToFloat(pTransform[1]),
+ CIDTransformToFloat(pTransform[2]),
+ CIDTransformToFloat(pTransform[3]),
+ CIDTransformToFloat(pTransform[4]) * 1000,
+ CIDTransformToFloat(pTransform[5]) * 1000);
+ CFX_FloatRect rect_f(rect);
+ rect_f.Transform(&matrix);
+ rect = rect_f.GetOutterRect();
+ }
+ }
+ if (charcode < 256)
+ m_CharBBox[charcode] = rect.ToSmallRect();
+
+ return rect;
+}
+int CPDF_CIDFont::GetCharWidthF(FX_DWORD charcode, int level) {
+ if (m_pAnsiWidths && charcode < 0x80) {
+ return m_pAnsiWidths[charcode];
+ }
+ FX_WORD cid = CIDFromCharCode(charcode);
+ int size = m_WidthList.GetSize();
+ FX_DWORD* list = m_WidthList.GetData();
+ for (int i = 0; i < size; i += 3) {
+ if (cid >= list[i] && cid <= list[i + 1]) {
+ return (int)list[i + 2];
+ }
+ }
+ return m_DefaultWidth;
+}
+short CPDF_CIDFont::GetVertWidth(FX_WORD CID) const {
+ FX_DWORD vertsize = m_VertMetrics.GetSize() / 5;
+ if (vertsize == 0) {
+ return m_DefaultW1;
+ }
+ const FX_DWORD* pTable = m_VertMetrics.GetData();
+ for (FX_DWORD i = 0; i < vertsize; i++)
+ if (pTable[i * 5] <= CID && pTable[i * 5 + 1] >= CID) {
+ return (short)(int)pTable[i * 5 + 2];
+ }
+ return m_DefaultW1;
+}
+void CPDF_CIDFont::GetVertOrigin(FX_WORD CID, short& vx, short& vy) const {
+ FX_DWORD vertsize = m_VertMetrics.GetSize() / 5;
+ if (vertsize) {
+ const FX_DWORD* pTable = m_VertMetrics.GetData();
+ for (FX_DWORD i = 0; i < vertsize; i++)
+ if (pTable[i * 5] <= CID && pTable[i * 5 + 1] >= CID) {
+ vx = (short)(int)pTable[i * 5 + 3];
+ vy = (short)(int)pTable[i * 5 + 4];
+ return;
+ }
+ }
+ FX_DWORD dwWidth = m_DefaultWidth;
+ int size = m_WidthList.GetSize();
+ const FX_DWORD* list = m_WidthList.GetData();
+ for (int i = 0; i < size; i += 3) {
+ if (CID >= list[i] && CID <= list[i + 1]) {
+ dwWidth = (FX_WORD)list[i + 2];
+ break;
+ }
+ }
+ vx = (short)dwWidth / 2;
+ vy = (short)m_DefaultVY;
+}
+int CPDF_CIDFont::GetGlyphIndex(FX_DWORD unicode, FX_BOOL* pVertGlyph) {
+ if (pVertGlyph) {
+ *pVertGlyph = FALSE;
+ }
+ FXFT_Face face = m_Font.GetFace();
+ int index = FXFT_Get_Char_Index(face, unicode);
+ if (unicode == 0x2502) {
+ return index;
+ }
+ if (index && IsVertWriting()) {
+ if (m_pTTGSUBTable) {
+ uint32_t vindex = 0;
+ m_pTTGSUBTable->GetVerticalGlyph(index, &vindex);
+ if (vindex) {
+ index = vindex;
+ if (pVertGlyph) {
+ *pVertGlyph = TRUE;
+ }
+ }
+ return index;
+ }
+ if (!m_Font.GetSubData()) {
+ unsigned long length = 0;
+ int error = FXFT_Load_Sfnt_Table(face, FT_MAKE_TAG('G', 'S', 'U', 'B'), 0,
+ NULL, &length);
+ if (!error) {
+ m_Font.SetSubData(FX_Alloc(uint8_t, length));
+ }
+ }
+ int error = FXFT_Load_Sfnt_Table(face, FT_MAKE_TAG('G', 'S', 'U', 'B'), 0,
+ m_Font.GetSubData(), NULL);
+ if (!error && m_Font.GetSubData()) {
+ m_pTTGSUBTable = new CFX_CTTGSUBTable;
+ m_pTTGSUBTable->LoadGSUBTable((FT_Bytes)m_Font.GetSubData());
+ uint32_t vindex = 0;
+ m_pTTGSUBTable->GetVerticalGlyph(index, &vindex);
+ if (vindex) {
+ index = vindex;
+ if (pVertGlyph) {
+ *pVertGlyph = TRUE;
+ }
+ }
+ }
+ return index;
+ }
+ if (pVertGlyph) {
+ *pVertGlyph = FALSE;
+ }
+ return index;
+}
+int CPDF_CIDFont::GlyphFromCharCode(FX_DWORD charcode, FX_BOOL* pVertGlyph) {
+ if (pVertGlyph) {
+ *pVertGlyph = FALSE;
+ }
+ if (!m_pFontFile && !m_pCIDToGIDMap) {
+ FX_WORD cid = CIDFromCharCode(charcode);
+ FX_WCHAR unicode = 0;
+ if (m_bCIDIsGID) {
+#if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_
+ return cid;
+#else
+ if (m_Flags & PDFFONT_SYMBOLIC) {
+ return cid;
+ }
+ CFX_WideString uni_str = UnicodeFromCharCode(charcode);
+ if (uni_str.IsEmpty()) {
+ return cid;
+ }
+ unicode = uni_str.GetAt(0);
+#endif
+ } else {
+ if (cid && m_pCID2UnicodeMap && m_pCID2UnicodeMap->IsLoaded()) {
+ unicode = m_pCID2UnicodeMap->UnicodeFromCID(cid);
+ }
+ if (unicode == 0) {
+ unicode = GetUnicodeFromCharCode(charcode);
+ }
+ if (unicode == 0 && !(m_Flags & PDFFONT_SYMBOLIC)) {
+ unicode = UnicodeFromCharCode(charcode).GetAt(0);
+ }
+ }
+ FXFT_Face face = m_Font.GetFace();
+ if (unicode == 0) {
+ if (!m_bAdobeCourierStd) {
+ return charcode == 0 ? -1 : (int)charcode;
+ }
+ charcode += 31;
+ int index = 0, iBaseEncoding;
+ FX_BOOL bMSUnicode = FT_UseTTCharmap(face, 3, 1);
+ FX_BOOL bMacRoman = FALSE;
+ if (!bMSUnicode) {
+ bMacRoman = FT_UseTTCharmap(face, 1, 0);
+ }
+ iBaseEncoding = PDFFONT_ENCODING_STANDARD;
+ if (bMSUnicode) {
+ iBaseEncoding = PDFFONT_ENCODING_WINANSI;
+ } else if (bMacRoman) {
+ iBaseEncoding = PDFFONT_ENCODING_MACROMAN;
+ }
+ const FX_CHAR* name = GetAdobeCharName(iBaseEncoding, NULL, charcode);
+ if (!name) {
+ return charcode == 0 ? -1 : (int)charcode;
+ }
+ FX_WORD unicode = PDF_UnicodeFromAdobeName(name);
+ if (unicode) {
+ if (bMSUnicode) {
+ index = FXFT_Get_Char_Index(face, unicode);
+ } else if (bMacRoman) {
+ FX_DWORD maccode =
+ FT_CharCodeFromUnicode(FXFT_ENCODING_APPLE_ROMAN, unicode);
+ index = !maccode ? FXFT_Get_Name_Index(face, (char*)name)
+ : FXFT_Get_Char_Index(face, maccode);
+ } else {
+ return FXFT_Get_Char_Index(face, unicode);
+ }
+ } else {
+ return charcode == 0 ? -1 : (int)charcode;
+ }
+ if (index == 0 || index == 0xffff) {
+ return charcode == 0 ? -1 : (int)charcode;
+ }
+ return index;
+ }
+ if (m_Charset == CIDSET_JAPAN1) {
+ if (unicode == '\\') {
+ unicode = '/';
+#if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_
+ } else if (unicode == 0xa5) {
+ unicode = 0x5c;
+#endif
+ }
+ }
+ if (!face)
+ return unicode;
+
+ int err = FXFT_Select_Charmap(face, FXFT_ENCODING_UNICODE);
+ if (err != 0) {
+ int i;
+ for (i = 0; i < FXFT_Get_Face_CharmapCount(face); i++) {
+ FX_DWORD ret = FT_CharCodeFromUnicode(
+ FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[i]),
+ (FX_WCHAR)charcode);
+ if (ret == 0) {
+ continue;
+ }
+ FXFT_Set_Charmap(face, FXFT_Get_Face_Charmaps(face)[i]);
+ unicode = (FX_WCHAR)ret;
+ break;
+ }
+ if (i == FXFT_Get_Face_CharmapCount(face) && i) {
+ FXFT_Set_Charmap(face, FXFT_Get_Face_Charmaps(face)[0]);
+ unicode = (FX_WCHAR)charcode;
+ }
+ }
+ if (FXFT_Get_Face_Charmap(face)) {
+ int index = GetGlyphIndex(unicode, pVertGlyph);
+ if (index == 0)
+ return -1;
+ return index;
+ }
+ return unicode;
+ }
+ if (!m_Font.GetFace())
+ return -1;
+
+ FX_WORD cid = CIDFromCharCode(charcode);
+ if (m_bType1) {
+ if (!m_pCIDToGIDMap) {
+ return cid;
+ }
+ } else {
+ if (!m_pCIDToGIDMap) {
+ if (m_pFontFile && !m_pCMap->m_pMapping)
+ return cid;
+ if (m_pCMap->m_Coding == CIDCODING_UNKNOWN ||
+ !FXFT_Get_Face_Charmap(m_Font.GetFace())) {
+ return cid;
+ }
+ if (FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmap(m_Font.GetFace())) ==
+ FXFT_ENCODING_UNICODE) {
+ CFX_WideString unicode_str = UnicodeFromCharCode(charcode);
+ if (unicode_str.IsEmpty()) {
+ return -1;
+ }
+ charcode = unicode_str.GetAt(0);
+ }
+ return GetGlyphIndex(charcode, pVertGlyph);
+ }
+ }
+ FX_DWORD byte_pos = cid * 2;
+ if (byte_pos + 2 > m_pCIDToGIDMap->GetSize())
+ return -1;
+
+ const uint8_t* pdata = m_pCIDToGIDMap->GetData() + byte_pos;
+ return pdata[0] * 256 + pdata[1];
+}
+FX_DWORD CPDF_CIDFont::GetNextChar(const FX_CHAR* pString,
+ int nStrLen,
+ int& offset) const {
+ return m_pCMap->GetNextChar(pString, nStrLen, offset);
+}
+int CPDF_CIDFont::GetCharSize(FX_DWORD charcode) const {
+ return m_pCMap->GetCharSize(charcode);
+}
+int CPDF_CIDFont::CountChar(const FX_CHAR* pString, int size) const {
+ return m_pCMap->CountChar(pString, size);
+}
+int CPDF_CIDFont::AppendChar(FX_CHAR* str, FX_DWORD charcode) const {
+ return m_pCMap->AppendChar(str, charcode);
+}
+FX_BOOL CPDF_CIDFont::IsUnicodeCompatible() const {
+ if (!m_pCMap->IsLoaded() || !m_pCID2UnicodeMap ||
+ !m_pCID2UnicodeMap->IsLoaded()) {
+ return m_pCMap->m_Coding != CIDCODING_UNKNOWN;
+ }
+ return TRUE;
+}
+FX_BOOL CPDF_CIDFont::IsFontStyleFromCharCode(FX_DWORD charcode) const {
+ return TRUE;
+}
+void CPDF_CIDFont::LoadSubstFont() {
+ m_Font.LoadSubst(m_BaseFont, !m_bType1, m_Flags, m_StemV * 5, m_ItalicAngle,
+ g_CharsetCPs[m_Charset], IsVertWriting());
+}
+void CPDF_CIDFont::LoadMetricsArray(CPDF_Array* pArray,
+ CFX_DWordArray& result,
+ int nElements) {
+ int width_status = 0;
+ int iCurElement = 0;
+ int first_code = 0, last_code;
+ FX_DWORD count = pArray->GetCount();
+ for (FX_DWORD i = 0; i < count; i++) {
+ CPDF_Object* pObj = pArray->GetElementValue(i);
+ if (!pObj)
+ continue;
+
+ if (CPDF_Array* pArray = pObj->AsArray()) {
+ if (width_status != 1)
+ return;
+
+ FX_DWORD count = pArray->GetCount();
+ for (FX_DWORD j = 0; j < count; j += nElements) {
+ result.Add(first_code);
+ result.Add(first_code);
+ for (int k = 0; k < nElements; k++) {
+ result.Add(pArray->GetIntegerAt(j + k));
+ }
+ first_code++;
+ }
+ width_status = 0;
+ } else {
+ if (width_status == 0) {
+ first_code = pObj->GetInteger();
+ width_status = 1;
+ } else if (width_status == 1) {
+ last_code = pObj->GetInteger();
+ width_status = 2;
+ iCurElement = 0;
+ } else {
+ if (!iCurElement) {
+ result.Add(first_code);
+ result.Add(last_code);
+ }
+ result.Add(pObj->GetInteger());
+ iCurElement++;
+ if (iCurElement == nElements) {
+ width_status = 0;
+ }
+ }
+ }
+ }
+}
+
+// static
+FX_FLOAT CPDF_CIDFont::CIDTransformToFloat(uint8_t ch) {
+ if (ch < 128) {
+ return ch * 1.0f / 127;
+ }
+ return (-255 + ch) * 1.0f / 127;
+}
+
+FX_BOOL CPDF_CIDFont::LoadGB2312() {
+ m_BaseFont = m_pFontDict->GetStringBy("BaseFont");
+ CPDF_Dictionary* pFontDesc = m_pFontDict->GetDictBy("FontDescriptor");
+ if (pFontDesc) {
+ LoadFontDescriptor(pFontDesc);
+ }
+ m_Charset = CIDSET_GB1;
+ m_bType1 = FALSE;
+ m_pCMap = CPDF_ModuleMgr::Get()
+ ->GetPageModule()
+ ->GetFontGlobals()
+ ->m_CMapManager.GetPredefinedCMap("GBK-EUC-H", FALSE);
+ m_pCID2UnicodeMap = CPDF_ModuleMgr::Get()
+ ->GetPageModule()
+ ->GetFontGlobals()
+ ->m_CMapManager.GetCID2UnicodeMap(m_Charset, FALSE);
+ if (!IsEmbedded()) {
+ LoadSubstFont();
+ }
+ CheckFontMetrics();
+ m_DefaultWidth = 1000;
+ m_pAnsiWidths = FX_Alloc(FX_WORD, 128);
+ for (int i = 32; i < 127; i++) {
+ m_pAnsiWidths[i] = 500;
+ }
+ return TRUE;
+}
+
+const uint8_t* CPDF_CIDFont::GetCIDTransform(FX_WORD CID) const {
+ if (m_Charset != CIDSET_JAPAN1 || m_pFontFile)
+ return nullptr;
+
+ const struct CIDTransform* found = (const struct CIDTransform*)FXSYS_bsearch(
+ &CID, g_Japan1_VertCIDs, FX_ArraySize(g_Japan1_VertCIDs),
+ sizeof(g_Japan1_VertCIDs[0]), CompareCIDTransform);
+ return found ? &found->a : nullptr;
+}
diff --git a/core/fpdfapi/fpdf_font/fpdf_font_cid_unittest.cpp b/core/fpdfapi/fpdf_font/fpdf_font_cid_unittest.cpp
new file mode 100644
index 0000000000..c12b9c5eee
--- /dev/null
+++ b/core/fpdfapi/fpdf_font/fpdf_font_cid_unittest.cpp
@@ -0,0 +1,65 @@
+// Copyright 2015 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "core/fpdfapi/fpdf_font/font_int.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+bool uint_ranges_equal(uint8_t* a, uint8_t* b, size_t count) {
+ for (size_t i = 0; i < count; ++i) {
+ if (a[i] != b[i])
+ return false;
+ }
+ return true;
+}
+
+} // namespace
+
+TEST(fpdf_font_cid, CMap_GetCode) {
+ EXPECT_EQ(0, CPDF_CMapParser::CMap_GetCode(""));
+ EXPECT_EQ(0, CPDF_CMapParser::CMap_GetCode("<"));
+ EXPECT_EQ(194, CPDF_CMapParser::CMap_GetCode("<c2"));
+ EXPECT_EQ(162, CPDF_CMapParser::CMap_GetCode("<A2"));
+ EXPECT_EQ(2802, CPDF_CMapParser::CMap_GetCode("<Af2"));
+ EXPECT_EQ(162, CPDF_CMapParser::CMap_GetCode("<A2z"));
+
+ EXPECT_EQ(12, CPDF_CMapParser::CMap_GetCode("12"));
+ EXPECT_EQ(12, CPDF_CMapParser::CMap_GetCode("12d"));
+ EXPECT_EQ(128, CPDF_CMapParser::CMap_GetCode("128"));
+}
+
+TEST(fpdf_font_cid, CMap_GetCodeRange) {
+ CMap_CodeRange range;
+
+ // Must start with a <
+ EXPECT_FALSE(CPDF_CMapParser::CMap_GetCodeRange(range, "", ""));
+ EXPECT_FALSE(CPDF_CMapParser::CMap_GetCodeRange(range, "A", ""));
+
+ // m_CharSize must be <= 4
+ EXPECT_FALSE(CPDF_CMapParser::CMap_GetCodeRange(range, "<aaaaaaaaaa>", ""));
+ EXPECT_EQ(5, range.m_CharSize);
+
+ EXPECT_TRUE(
+ CPDF_CMapParser::CMap_GetCodeRange(range, "<12345678>", "<87654321>"));
+ EXPECT_EQ(4, range.m_CharSize);
+ {
+ uint8_t lower[4] = {18, 52, 86, 120};
+ uint8_t upper[4] = {135, 101, 67, 33};
+ EXPECT_TRUE(uint_ranges_equal(lower, range.m_Lower, range.m_CharSize));
+ EXPECT_TRUE(uint_ranges_equal(upper, range.m_Upper, range.m_CharSize));
+ }
+
+ // Hex characters
+ EXPECT_TRUE(CPDF_CMapParser::CMap_GetCodeRange(range, "<a1>", "<F3>"));
+ EXPECT_EQ(1, range.m_CharSize);
+ EXPECT_EQ(161, range.m_Lower[0]);
+ EXPECT_EQ(243, range.m_Upper[0]);
+
+ // The second string should return 0's if it is shorter
+ EXPECT_TRUE(CPDF_CMapParser::CMap_GetCodeRange(range, "<a1>", ""));
+ EXPECT_EQ(1, range.m_CharSize);
+ EXPECT_EQ(161, range.m_Lower[0]);
+ EXPECT_EQ(0, range.m_Upper[0]);
+}
diff --git a/core/fpdfapi/fpdf_font/fpdf_font_unittest.cpp b/core/fpdfapi/fpdf_font/fpdf_font_unittest.cpp
new file mode 100644
index 0000000000..dd2119e0cf
--- /dev/null
+++ b/core/fpdfapi/fpdf_font/fpdf_font_unittest.cpp
@@ -0,0 +1,30 @@
+// Copyright 2015 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "core/fpdfapi/fpdf_font/font_int.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+TEST(fpdf_font, StringToCode) {
+ EXPECT_EQ(0, CPDF_ToUnicodeMap::StringToCode(""));
+ EXPECT_EQ(194, CPDF_ToUnicodeMap::StringToCode("<c2"));
+ EXPECT_EQ(162, CPDF_ToUnicodeMap::StringToCode("<A2"));
+ EXPECT_EQ(2802, CPDF_ToUnicodeMap::StringToCode("<Af2"));
+ EXPECT_EQ(12, CPDF_ToUnicodeMap::StringToCode("12"));
+ EXPECT_EQ(128, CPDF_ToUnicodeMap::StringToCode("128"));
+}
+
+TEST(fpdf_font, StringToWideString) {
+ EXPECT_EQ(L"", CPDF_ToUnicodeMap::StringToWideString(""));
+ EXPECT_EQ(L"", CPDF_ToUnicodeMap::StringToWideString("1234"));
+
+ EXPECT_EQ(L"", CPDF_ToUnicodeMap::StringToWideString("<c2"));
+
+ CFX_WideString res = L"\xc2ab";
+ EXPECT_EQ(res, CPDF_ToUnicodeMap::StringToWideString("<c2ab"));
+ EXPECT_EQ(res, CPDF_ToUnicodeMap::StringToWideString("<c2abab"));
+ EXPECT_EQ(res, CPDF_ToUnicodeMap::StringToWideString("<c2ab 1234"));
+
+ res += L"\xfaab";
+ EXPECT_EQ(res, CPDF_ToUnicodeMap::StringToWideString("<c2abFaAb"));
+}
diff --git a/core/fpdfapi/fpdf_font/ttgsubtable.cpp b/core/fpdfapi/fpdf_font/ttgsubtable.cpp
new file mode 100644
index 0000000000..24825ec14e
--- /dev/null
+++ b/core/fpdfapi/fpdf_font/ttgsubtable.cpp
@@ -0,0 +1,415 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_font/ttgsubtable.h"
+
+#include <memory>
+
+#include "core/include/fxge/fx_freetype.h"
+#include "core/include/fxge/fx_ge.h"
+#include "third_party/base/stl_util.h"
+
+CFX_GlyphMap::CFX_GlyphMap() {}
+CFX_GlyphMap::~CFX_GlyphMap() {}
+extern "C" {
+static int _CompareInt(const void* p1, const void* p2) {
+ return (*(FX_DWORD*)p1) - (*(FX_DWORD*)p2);
+}
+};
+struct _IntPair {
+ int32_t key;
+ int32_t value;
+};
+void CFX_GlyphMap::SetAt(int key, int value) {
+ FX_DWORD count = m_Buffer.GetSize() / sizeof(_IntPair);
+ _IntPair* buf = (_IntPair*)m_Buffer.GetBuffer();
+ _IntPair pair = {key, value};
+ if (count == 0 || key > buf[count - 1].key) {
+ m_Buffer.AppendBlock(&pair, sizeof(_IntPair));
+ return;
+ }
+ int low = 0, high = count - 1;
+ while (low <= high) {
+ int mid = (low + high) / 2;
+ if (buf[mid].key < key) {
+ low = mid + 1;
+ } else if (buf[mid].key > key) {
+ high = mid - 1;
+ } else {
+ buf[mid].value = value;
+ return;
+ }
+ }
+ m_Buffer.InsertBlock(low * sizeof(_IntPair), &pair, sizeof(_IntPair));
+}
+FX_BOOL CFX_GlyphMap::Lookup(int key, int& value) {
+ void* pResult = FXSYS_bsearch(&key, m_Buffer.GetBuffer(),
+ m_Buffer.GetSize() / sizeof(_IntPair),
+ sizeof(_IntPair), _CompareInt);
+ if (!pResult) {
+ return FALSE;
+ }
+ value = ((FX_DWORD*)pResult)[1];
+ return TRUE;
+}
+bool CFX_CTTGSUBTable::LoadGSUBTable(FT_Bytes gsub) {
+ header.Version = gsub[0] << 24 | gsub[1] << 16 | gsub[2] << 8 | gsub[3];
+ if (header.Version != 0x00010000) {
+ return false;
+ }
+ header.ScriptList = gsub[4] << 8 | gsub[5];
+ header.FeatureList = gsub[6] << 8 | gsub[7];
+ header.LookupList = gsub[8] << 8 | gsub[9];
+ return Parse(&gsub[header.ScriptList], &gsub[header.FeatureList],
+ &gsub[header.LookupList]);
+}
+bool CFX_CTTGSUBTable::GetVerticalGlyph(uint32_t glyphnum,
+ uint32_t* vglyphnum) {
+ uint32_t tag[] = {
+ (uint8_t)'v' << 24 | (uint8_t)'r' << 16 | (uint8_t)'t' << 8 |
+ (uint8_t)'2',
+ (uint8_t)'v' << 24 | (uint8_t)'e' << 16 | (uint8_t)'r' << 8 |
+ (uint8_t)'t',
+ };
+ if (!m_bFeautureMapLoad) {
+ for (int i = 0; i < ScriptList.ScriptCount; i++) {
+ for (int j = 0; j < (ScriptList.ScriptRecord + i)->Script.LangSysCount;
+ ++j) {
+ for (int k = 0;
+ k < ((ScriptList.ScriptRecord + i)->Script.LangSysRecord + j)
+ ->LangSys.FeatureCount;
+ ++k) {
+ FX_DWORD index =
+ *(((ScriptList.ScriptRecord + i)->Script.LangSysRecord + j)
+ ->LangSys.FeatureIndex +
+ k);
+ if (FeatureList.FeatureRecord[index].FeatureTag == tag[0] ||
+ FeatureList.FeatureRecord[index].FeatureTag == tag[1]) {
+ if (!pdfium::ContainsKey(m_featureMap, index)) {
+ m_featureMap[index] = index;
+ }
+ }
+ }
+ }
+ }
+ if (m_featureMap.empty()) {
+ for (int i = 0; i < FeatureList.FeatureCount; i++) {
+ if (FeatureList.FeatureRecord[i].FeatureTag == tag[0] ||
+ FeatureList.FeatureRecord[i].FeatureTag == tag[1]) {
+ m_featureMap[i] = i;
+ }
+ }
+ }
+ m_bFeautureMapLoad = TRUE;
+ }
+ for (const auto& pair : m_featureMap) {
+ if (GetVerticalGlyphSub(glyphnum, vglyphnum,
+ &FeatureList.FeatureRecord[pair.second].Feature)) {
+ return true;
+ }
+ }
+ return false;
+}
+bool CFX_CTTGSUBTable::GetVerticalGlyphSub(uint32_t glyphnum,
+ uint32_t* vglyphnum,
+ struct TFeature* Feature) {
+ for (int i = 0; i < Feature->LookupCount; i++) {
+ int index = Feature->LookupListIndex[i];
+ if (index < 0 || LookupList.LookupCount < index) {
+ continue;
+ }
+ if (LookupList.Lookup[index].LookupType == 1) {
+ if (GetVerticalGlyphSub2(glyphnum, vglyphnum,
+ &LookupList.Lookup[index])) {
+ return true;
+ }
+ }
+ }
+ return false;
+}
+bool CFX_CTTGSUBTable::GetVerticalGlyphSub2(uint32_t glyphnum,
+ uint32_t* vglyphnum,
+ struct TLookup* Lookup) {
+ for (int i = 0; i < Lookup->SubTableCount; i++) {
+ switch (Lookup->SubTable[i]->SubstFormat) {
+ case 1: {
+ TSingleSubstFormat1* tbl1 = (TSingleSubstFormat1*)Lookup->SubTable[i];
+ if (GetCoverageIndex(tbl1->Coverage, glyphnum) >= 0) {
+ *vglyphnum = glyphnum + tbl1->DeltaGlyphID;
+ return true;
+ }
+ break;
+ }
+ case 2: {
+ TSingleSubstFormat2* tbl2 = (TSingleSubstFormat2*)Lookup->SubTable[i];
+ int index = -1;
+ index = GetCoverageIndex(tbl2->Coverage, glyphnum);
+ if (0 <= index && index < tbl2->GlyphCount) {
+ *vglyphnum = tbl2->Substitute[index];
+ return true;
+ }
+ break;
+ }
+ }
+ }
+ return false;
+}
+int CFX_CTTGSUBTable::GetCoverageIndex(struct TCoverageFormatBase* Coverage,
+ uint32_t g) {
+ int i = 0;
+ if (!Coverage) {
+ return -1;
+ }
+ switch (Coverage->CoverageFormat) {
+ case 1: {
+ TCoverageFormat1* c1 = (TCoverageFormat1*)Coverage;
+ for (i = 0; i < c1->GlyphCount; i++) {
+ if ((uint32_t)c1->GlyphArray[i] == g) {
+ return i;
+ }
+ }
+ return -1;
+ }
+ case 2: {
+ TCoverageFormat2* c2 = (TCoverageFormat2*)Coverage;
+ for (i = 0; i < c2->RangeCount; i++) {
+ uint32_t s = c2->RangeRecord[i].Start;
+ uint32_t e = c2->RangeRecord[i].End;
+ uint32_t si = c2->RangeRecord[i].StartCoverageIndex;
+ if (s <= g && g <= e) {
+ return si + g - s;
+ }
+ }
+ return -1;
+ }
+ }
+ return -1;
+}
+bool CFX_CTTGSUBTable::Parse(FT_Bytes scriptlist,
+ FT_Bytes featurelist,
+ FT_Bytes lookuplist) {
+ ParseScriptList(scriptlist, &ScriptList);
+ ParseFeatureList(featurelist, &FeatureList);
+ ParseLookupList(lookuplist, &LookupList);
+ return true;
+}
+void CFX_CTTGSUBTable::ParseScriptList(FT_Bytes raw, struct TScriptList* rec) {
+ int i;
+ FT_Bytes sp = raw;
+ rec->ScriptCount = GetUInt16(sp);
+ if (rec->ScriptCount <= 0) {
+ return;
+ }
+ rec->ScriptRecord = new struct TScriptRecord[rec->ScriptCount];
+ for (i = 0; i < rec->ScriptCount; i++) {
+ rec->ScriptRecord[i].ScriptTag = GetUInt32(sp);
+ uint16_t offset = GetUInt16(sp);
+ ParseScript(&raw[offset], &rec->ScriptRecord[i].Script);
+ }
+}
+void CFX_CTTGSUBTable::ParseScript(FT_Bytes raw, struct TScript* rec) {
+ int i;
+ FT_Bytes sp = raw;
+ rec->DefaultLangSys = GetUInt16(sp);
+ rec->LangSysCount = GetUInt16(sp);
+ if (rec->LangSysCount <= 0) {
+ return;
+ }
+ rec->LangSysRecord = new struct TLangSysRecord[rec->LangSysCount];
+ for (i = 0; i < rec->LangSysCount; i++) {
+ rec->LangSysRecord[i].LangSysTag = GetUInt32(sp);
+ uint16_t offset = GetUInt16(sp);
+ ParseLangSys(&raw[offset], &rec->LangSysRecord[i].LangSys);
+ }
+}
+void CFX_CTTGSUBTable::ParseLangSys(FT_Bytes raw, struct TLangSys* rec) {
+ FT_Bytes sp = raw;
+ rec->LookupOrder = GetUInt16(sp);
+ rec->ReqFeatureIndex = GetUInt16(sp);
+ rec->FeatureCount = GetUInt16(sp);
+ if (rec->FeatureCount <= 0) {
+ return;
+ }
+ rec->FeatureIndex = new uint16_t[rec->FeatureCount];
+ FXSYS_memset(rec->FeatureIndex, 0, sizeof(uint16_t) * rec->FeatureCount);
+ for (int i = 0; i < rec->FeatureCount; ++i) {
+ rec->FeatureIndex[i] = GetUInt16(sp);
+ }
+}
+void CFX_CTTGSUBTable::ParseFeatureList(FT_Bytes raw, TFeatureList* rec) {
+ int i;
+ FT_Bytes sp = raw;
+ rec->FeatureCount = GetUInt16(sp);
+ if (rec->FeatureCount <= 0) {
+ return;
+ }
+ rec->FeatureRecord = new struct TFeatureRecord[rec->FeatureCount];
+ for (i = 0; i < rec->FeatureCount; i++) {
+ rec->FeatureRecord[i].FeatureTag = GetUInt32(sp);
+ uint16_t offset = GetUInt16(sp);
+ ParseFeature(&raw[offset], &rec->FeatureRecord[i].Feature);
+ }
+}
+void CFX_CTTGSUBTable::ParseFeature(FT_Bytes raw, TFeature* rec) {
+ int i;
+ FT_Bytes sp = raw;
+ rec->FeatureParams = GetUInt16(sp);
+ rec->LookupCount = GetUInt16(sp);
+ if (rec->LookupCount <= 0) {
+ return;
+ }
+ rec->LookupListIndex = new uint16_t[rec->LookupCount];
+ for (i = 0; i < rec->LookupCount; i++) {
+ rec->LookupListIndex[i] = GetUInt16(sp);
+ }
+}
+void CFX_CTTGSUBTable::ParseLookupList(FT_Bytes raw, TLookupList* rec) {
+ int i;
+ FT_Bytes sp = raw;
+ rec->LookupCount = GetUInt16(sp);
+ if (rec->LookupCount <= 0) {
+ return;
+ }
+ rec->Lookup = new struct TLookup[rec->LookupCount];
+ for (i = 0; i < rec->LookupCount; i++) {
+ uint16_t offset = GetUInt16(sp);
+ ParseLookup(&raw[offset], &rec->Lookup[i]);
+ }
+}
+void CFX_CTTGSUBTable::ParseLookup(FT_Bytes raw, TLookup* rec) {
+ int i;
+ FT_Bytes sp = raw;
+ rec->LookupType = GetUInt16(sp);
+ rec->LookupFlag = GetUInt16(sp);
+ rec->SubTableCount = GetUInt16(sp);
+ if (rec->SubTableCount <= 0) {
+ return;
+ }
+ rec->SubTable = new struct TSubTableBase*[rec->SubTableCount];
+ for (i = 0; i < rec->SubTableCount; i++) {
+ rec->SubTable[i] = NULL;
+ }
+ if (rec->LookupType != 1) {
+ return;
+ }
+ for (i = 0; i < rec->SubTableCount; i++) {
+ uint16_t offset = GetUInt16(sp);
+ ParseSingleSubst(&raw[offset], &rec->SubTable[i]);
+ }
+}
+void CFX_CTTGSUBTable::ParseCoverage(FT_Bytes raw, TCoverageFormatBase** rec) {
+ FT_Bytes sp = raw;
+ uint16_t Format = GetUInt16(sp);
+ switch (Format) {
+ case 1:
+ *rec = new TCoverageFormat1();
+ ParseCoverageFormat1(raw, (TCoverageFormat1*)*rec);
+ break;
+ case 2:
+ *rec = new TCoverageFormat2();
+ ParseCoverageFormat2(raw, (TCoverageFormat2*)*rec);
+ break;
+ }
+}
+void CFX_CTTGSUBTable::ParseCoverageFormat1(FT_Bytes raw,
+ TCoverageFormat1* rec) {
+ int i;
+ FT_Bytes sp = raw;
+ GetUInt16(sp);
+ rec->GlyphCount = GetUInt16(sp);
+ if (rec->GlyphCount <= 0) {
+ return;
+ }
+ rec->GlyphArray = new uint16_t[rec->GlyphCount];
+ for (i = 0; i < rec->GlyphCount; i++) {
+ rec->GlyphArray[i] = GetUInt16(sp);
+ }
+}
+void CFX_CTTGSUBTable::ParseCoverageFormat2(FT_Bytes raw,
+ TCoverageFormat2* rec) {
+ int i;
+ FT_Bytes sp = raw;
+ GetUInt16(sp);
+ rec->RangeCount = GetUInt16(sp);
+ if (rec->RangeCount <= 0) {
+ return;
+ }
+ rec->RangeRecord = new TRangeRecord[rec->RangeCount];
+ for (i = 0; i < rec->RangeCount; i++) {
+ rec->RangeRecord[i].Start = GetUInt16(sp);
+ rec->RangeRecord[i].End = GetUInt16(sp);
+ rec->RangeRecord[i].StartCoverageIndex = GetUInt16(sp);
+ }
+}
+void CFX_CTTGSUBTable::ParseSingleSubst(FT_Bytes raw, TSubTableBase** rec) {
+ FT_Bytes sp = raw;
+ uint16_t Format = GetUInt16(sp);
+ switch (Format) {
+ case 1:
+ *rec = new TSingleSubstFormat1();
+ ParseSingleSubstFormat1(raw, (TSingleSubstFormat1*)*rec);
+ break;
+ case 2:
+ *rec = new TSingleSubstFormat2();
+ ParseSingleSubstFormat2(raw, (TSingleSubstFormat2*)*rec);
+ break;
+ }
+}
+void CFX_CTTGSUBTable::ParseSingleSubstFormat1(FT_Bytes raw,
+ TSingleSubstFormat1* rec) {
+ FT_Bytes sp = raw;
+ GetUInt16(sp);
+ uint16_t offset = GetUInt16(sp);
+ ParseCoverage(&raw[offset], &rec->Coverage);
+ rec->DeltaGlyphID = GetInt16(sp);
+}
+void CFX_CTTGSUBTable::ParseSingleSubstFormat2(FT_Bytes raw,
+ TSingleSubstFormat2* rec) {
+ int i;
+ FT_Bytes sp = raw;
+ GetUInt16(sp);
+ uint16_t offset = GetUInt16(sp);
+ ParseCoverage(&raw[offset], &rec->Coverage);
+ rec->GlyphCount = GetUInt16(sp);
+ if (rec->GlyphCount <= 0) {
+ return;
+ }
+ rec->Substitute = new uint16_t[rec->GlyphCount];
+ for (i = 0; i < rec->GlyphCount; i++) {
+ rec->Substitute[i] = GetUInt16(sp);
+ }
+}
+FX_BOOL CFX_GSUBTable::GetVerticalGlyph(FX_DWORD glyphnum,
+ FX_DWORD* vglyphnum) {
+ return m_GsubImp.GetVerticalGlyph(glyphnum, vglyphnum);
+}
+// static
+IFX_GSUBTable* IFX_GSUBTable::Create(CFX_Font* pFont) {
+ if (!pFont) {
+ return NULL;
+ }
+ if (!pFont->GetSubData()) {
+ unsigned long length = 0;
+ int error = FXFT_Load_Sfnt_Table(
+ pFont->GetFace(), FT_MAKE_TAG('G', 'S', 'U', 'B'), 0, NULL, &length);
+ if (!error) {
+ pFont->SetSubData(FX_Alloc(uint8_t, length));
+ }
+ if (!pFont->GetSubData()) {
+ return NULL;
+ }
+ }
+ int error =
+ FXFT_Load_Sfnt_Table(pFont->GetFace(), FT_MAKE_TAG('G', 'S', 'U', 'B'), 0,
+ pFont->GetSubData(), NULL);
+ if (!error && pFont->GetSubData()) {
+ std::unique_ptr<CFX_GSUBTable> pGsubTable(new CFX_GSUBTable);
+ if (pGsubTable->m_GsubImp.LoadGSUBTable((FT_Bytes)pFont->GetSubData())) {
+ return pGsubTable.release();
+ }
+ }
+ return NULL;
+}
diff --git a/core/fpdfapi/fpdf_font/ttgsubtable.h b/core/fpdfapi/fpdf_font/ttgsubtable.h
new file mode 100644
index 0000000000..47ae5a1fa4
--- /dev/null
+++ b/core/fpdfapi/fpdf_font/ttgsubtable.h
@@ -0,0 +1,363 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_FPDFAPI_FPDF_FONT_TTGSUBTABLE_H_
+#define CORE_FPDFAPI_FPDF_FONT_TTGSUBTABLE_H_
+
+#include <stdint.h>
+
+#include <map>
+
+#include "core/include/fxcrt/fx_basic.h"
+#include "core/include/fxge/fx_font.h"
+#include "core/include/fxge/fx_freetype.h"
+
+class CFX_GlyphMap {
+ public:
+ CFX_GlyphMap();
+ ~CFX_GlyphMap();
+ void SetAt(int key, int value);
+ FX_BOOL Lookup(int key, int& value);
+
+ protected:
+ CFX_BinaryBuf m_Buffer;
+};
+class CFX_CTTGSUBTable {
+ public:
+ CFX_CTTGSUBTable(void) : m_bFeautureMapLoad(FALSE), loaded(false) {}
+ CFX_CTTGSUBTable(FT_Bytes gsub) : m_bFeautureMapLoad(FALSE), loaded(false) {
+ LoadGSUBTable(gsub);
+ }
+ virtual ~CFX_CTTGSUBTable() {}
+ bool IsOk(void) const { return loaded; }
+ bool LoadGSUBTable(FT_Bytes gsub);
+ bool GetVerticalGlyph(uint32_t glyphnum, uint32_t* vglyphnum);
+
+ private:
+ struct tt_gsub_header {
+ uint32_t Version;
+ uint16_t ScriptList;
+ uint16_t FeatureList;
+ uint16_t LookupList;
+ };
+ struct TLangSys {
+ uint16_t LookupOrder;
+ uint16_t ReqFeatureIndex;
+ uint16_t FeatureCount;
+ uint16_t* FeatureIndex;
+ TLangSys()
+ : LookupOrder(0),
+ ReqFeatureIndex(0),
+ FeatureCount(0),
+ FeatureIndex(NULL) {}
+ ~TLangSys() { delete[] FeatureIndex; }
+
+ private:
+ TLangSys(const TLangSys&);
+ TLangSys& operator=(const TLangSys&);
+ };
+ struct TLangSysRecord {
+ uint32_t LangSysTag;
+ struct TLangSys LangSys;
+ TLangSysRecord() : LangSysTag(0) {}
+
+ private:
+ TLangSysRecord(const TLangSysRecord&);
+ TLangSysRecord& operator=(const TLangSysRecord&);
+ };
+ struct TScript {
+ uint16_t DefaultLangSys;
+ uint16_t LangSysCount;
+ struct TLangSysRecord* LangSysRecord;
+ TScript() : DefaultLangSys(0), LangSysCount(0), LangSysRecord(NULL) {}
+ ~TScript() { delete[] LangSysRecord; }
+
+ private:
+ TScript(const TScript&);
+ TScript& operator=(const TScript&);
+ };
+ struct TScriptRecord {
+ uint32_t ScriptTag;
+ struct TScript Script;
+ TScriptRecord() : ScriptTag(0) {}
+
+ private:
+ TScriptRecord(const TScriptRecord&);
+ TScriptRecord& operator=(const TScriptRecord&);
+ };
+ struct TScriptList {
+ uint16_t ScriptCount;
+ struct TScriptRecord* ScriptRecord;
+ TScriptList() : ScriptCount(0), ScriptRecord(NULL) {}
+ ~TScriptList() { delete[] ScriptRecord; }
+
+ private:
+ TScriptList(const TScriptList&);
+ TScriptList& operator=(const TScriptList&);
+ };
+ struct TFeature {
+ uint16_t FeatureParams;
+ int LookupCount;
+ uint16_t* LookupListIndex;
+ TFeature() : FeatureParams(0), LookupCount(0), LookupListIndex(NULL) {}
+ ~TFeature() { delete[] LookupListIndex; }
+
+ private:
+ TFeature(const TFeature&);
+ TFeature& operator=(const TFeature&);
+ };
+ struct TFeatureRecord {
+ uint32_t FeatureTag;
+ struct TFeature Feature;
+ TFeatureRecord() : FeatureTag(0) {}
+
+ private:
+ TFeatureRecord(const TFeatureRecord&);
+ TFeatureRecord& operator=(const TFeatureRecord&);
+ };
+ struct TFeatureList {
+ int FeatureCount;
+ struct TFeatureRecord* FeatureRecord;
+ TFeatureList() : FeatureCount(0), FeatureRecord(NULL) {}
+ ~TFeatureList() { delete[] FeatureRecord; }
+
+ private:
+ TFeatureList(const TFeatureList&);
+ TFeatureList& operator=(const TFeatureList&);
+ };
+ enum TLookupFlag {
+ LOOKUPFLAG_RightToLeft = 0x0001,
+ LOOKUPFLAG_IgnoreBaseGlyphs = 0x0002,
+ LOOKUPFLAG_IgnoreLigatures = 0x0004,
+ LOOKUPFLAG_IgnoreMarks = 0x0008,
+ LOOKUPFLAG_Reserved = 0x00F0,
+ LOOKUPFLAG_MarkAttachmentType = 0xFF00,
+ };
+ struct TCoverageFormatBase {
+ uint16_t CoverageFormat;
+ CFX_GlyphMap m_glyphMap;
+ TCoverageFormatBase() : CoverageFormat(0) {}
+ virtual ~TCoverageFormatBase() {}
+
+ private:
+ TCoverageFormatBase(const TCoverageFormatBase&);
+ TCoverageFormatBase& operator=(const TCoverageFormatBase&);
+ };
+ struct TCoverageFormat1 : public TCoverageFormatBase {
+ uint16_t GlyphCount;
+ uint16_t* GlyphArray;
+ TCoverageFormat1() : GlyphCount(0), GlyphArray(NULL) { CoverageFormat = 1; }
+ ~TCoverageFormat1() override { delete[] GlyphArray; }
+
+ private:
+ TCoverageFormat1(const TCoverageFormat1&);
+ TCoverageFormat1& operator=(const TCoverageFormat1&);
+ };
+ struct TRangeRecord {
+ uint16_t Start;
+ uint16_t End;
+ uint16_t StartCoverageIndex;
+ TRangeRecord() : Start(0), End(0), StartCoverageIndex(0) {}
+ friend bool operator>(const TRangeRecord& r1, const TRangeRecord& r2) {
+ return r1.Start > r2.Start;
+ }
+
+ private:
+ TRangeRecord(const TRangeRecord&);
+ };
+ struct TCoverageFormat2 : public TCoverageFormatBase {
+ uint16_t RangeCount;
+ struct TRangeRecord* RangeRecord;
+ TCoverageFormat2() : RangeCount(0), RangeRecord(NULL) {
+ CoverageFormat = 2;
+ }
+ ~TCoverageFormat2() override { delete[] RangeRecord; }
+
+ private:
+ TCoverageFormat2(const TCoverageFormat2&);
+ TCoverageFormat2& operator=(const TCoverageFormat2&);
+ };
+ struct TClassDefFormatBase {
+ uint16_t ClassFormat;
+ TClassDefFormatBase() : ClassFormat(0) {}
+ virtual ~TClassDefFormatBase() {}
+
+ private:
+ TClassDefFormatBase(const TClassDefFormatBase&);
+ TClassDefFormatBase& operator=(const TClassDefFormatBase&);
+ };
+ struct TClassDefFormat1 : public TClassDefFormatBase {
+ uint16_t StartGlyph;
+ uint16_t GlyphCount;
+ uint16_t* ClassValueArray;
+ TClassDefFormat1() : StartGlyph(0), GlyphCount(0), ClassValueArray(NULL) {
+ ClassFormat = 1;
+ }
+ ~TClassDefFormat1() override { delete[] ClassValueArray; }
+
+ private:
+ TClassDefFormat1(const TClassDefFormat1&);
+ TClassDefFormat1& operator=(const TClassDefFormat1&);
+ };
+ struct TClassRangeRecord {
+ uint16_t Start;
+ uint16_t End;
+ uint16_t Class;
+ TClassRangeRecord() : Start(0), End(0), Class(0) {}
+
+ private:
+ TClassRangeRecord(const TClassRangeRecord&);
+ TClassRangeRecord& operator=(const TClassRangeRecord&);
+ };
+ struct TClassDefFormat2 : public TClassDefFormatBase {
+ uint16_t ClassRangeCount;
+ struct TClassRangeRecord* ClassRangeRecord;
+ TClassDefFormat2() : ClassRangeCount(0), ClassRangeRecord(NULL) {
+ ClassFormat = 2;
+ }
+ ~TClassDefFormat2() override { delete[] ClassRangeRecord; }
+
+ private:
+ TClassDefFormat2(const TClassDefFormat2&);
+ TClassDefFormat2& operator=(const TClassDefFormat2&);
+ };
+ struct TDevice {
+ uint16_t StartSize;
+ uint16_t EndSize;
+ uint16_t DeltaFormat;
+ TDevice() : StartSize(0), EndSize(0), DeltaFormat(0) {}
+
+ private:
+ TDevice(const TDevice&);
+ TDevice& operator=(const TDevice&);
+ };
+ struct TSubTableBase {
+ uint16_t SubstFormat;
+ TSubTableBase() : SubstFormat(0) {}
+ virtual ~TSubTableBase() {}
+
+ private:
+ TSubTableBase(const TSubTableBase&);
+ TSubTableBase& operator=(const TSubTableBase&);
+ };
+ struct TSingleSubstFormat1 : public TSubTableBase {
+ TCoverageFormatBase* Coverage;
+ int16_t DeltaGlyphID;
+ TSingleSubstFormat1() : Coverage(NULL), DeltaGlyphID(0) { SubstFormat = 1; }
+ ~TSingleSubstFormat1() override { delete Coverage; }
+
+ private:
+ TSingleSubstFormat1(const TSingleSubstFormat1&);
+ TSingleSubstFormat1& operator=(const TSingleSubstFormat1&);
+ };
+ struct TSingleSubstFormat2 : public TSubTableBase {
+ TCoverageFormatBase* Coverage;
+ uint16_t GlyphCount;
+ uint16_t* Substitute;
+ TSingleSubstFormat2() : Coverage(NULL), GlyphCount(0), Substitute(NULL) {
+ SubstFormat = 2;
+ }
+ ~TSingleSubstFormat2() override {
+ delete Coverage;
+ delete[] Substitute;
+ }
+
+ private:
+ TSingleSubstFormat2(const TSingleSubstFormat2&);
+ TSingleSubstFormat2& operator=(const TSingleSubstFormat2&);
+ };
+ struct TLookup {
+ uint16_t LookupType;
+ uint16_t LookupFlag;
+ uint16_t SubTableCount;
+ struct TSubTableBase** SubTable;
+ TLookup()
+ : LookupType(0), LookupFlag(0), SubTableCount(0), SubTable(NULL) {}
+ ~TLookup() {
+ if (SubTable) {
+ for (int i = 0; i < SubTableCount; ++i)
+ delete SubTable[i];
+ delete[] SubTable;
+ }
+ }
+
+ private:
+ TLookup(const TLookup&);
+ TLookup& operator=(const TLookup&);
+ };
+ struct TLookupList {
+ int LookupCount;
+ struct TLookup* Lookup;
+ TLookupList() : LookupCount(0), Lookup(NULL) {}
+ ~TLookupList() { delete[] Lookup; }
+
+ private:
+ TLookupList(const TLookupList&);
+ TLookupList& operator=(const TLookupList&);
+ };
+ bool Parse(FT_Bytes scriptlist, FT_Bytes featurelist, FT_Bytes lookuplist);
+ void ParseScriptList(FT_Bytes raw, TScriptList* rec);
+ void ParseScript(FT_Bytes raw, TScript* rec);
+ void ParseLangSys(FT_Bytes raw, TLangSys* rec);
+ void ParseFeatureList(FT_Bytes raw, TFeatureList* rec);
+ void ParseFeature(FT_Bytes raw, TFeature* rec);
+ void ParseLookupList(FT_Bytes raw, TLookupList* rec);
+ void ParseLookup(FT_Bytes raw, TLookup* rec);
+ void ParseCoverage(FT_Bytes raw, TCoverageFormatBase** rec);
+ void ParseCoverageFormat1(FT_Bytes raw, TCoverageFormat1* rec);
+ void ParseCoverageFormat2(FT_Bytes raw, TCoverageFormat2* rec);
+ void ParseSingleSubst(FT_Bytes raw, TSubTableBase** rec);
+ void ParseSingleSubstFormat1(FT_Bytes raw, TSingleSubstFormat1* rec);
+ void ParseSingleSubstFormat2(FT_Bytes raw, TSingleSubstFormat2* rec);
+ bool GetVerticalGlyphSub(uint32_t glyphnum,
+ uint32_t* vglyphnum,
+ struct TFeature* Feature);
+ bool GetVerticalGlyphSub2(uint32_t glyphnum,
+ uint32_t* vglyphnum,
+ struct TLookup* Lookup);
+ int GetCoverageIndex(struct TCoverageFormatBase* Coverage, uint32_t g);
+ uint8_t GetUInt8(FT_Bytes& p) const {
+ uint8_t ret = p[0];
+ p += 1;
+ return ret;
+ }
+ int16_t GetInt16(FT_Bytes& p) const {
+ uint16_t ret = p[0] << 8 | p[1];
+ p += 2;
+ return *(int16_t*)&ret;
+ }
+ uint16_t GetUInt16(FT_Bytes& p) const {
+ uint16_t ret = p[0] << 8 | p[1];
+ p += 2;
+ return ret;
+ }
+ int32_t GetInt32(FT_Bytes& p) const {
+ uint32_t ret = p[0] << 24 | p[1] << 16 | p[2] << 8 | p[3];
+ p += 4;
+ return *(int32_t*)&ret;
+ }
+ uint32_t GetUInt32(FT_Bytes& p) const {
+ uint32_t ret = p[0] << 24 | p[1] << 16 | p[2] << 8 | p[3];
+ p += 4;
+ return ret;
+ }
+ std::map<FX_DWORD, FX_DWORD> m_featureMap;
+ FX_BOOL m_bFeautureMapLoad;
+ bool loaded;
+ struct tt_gsub_header header;
+ struct TScriptList ScriptList;
+ struct TFeatureList FeatureList;
+ struct TLookupList LookupList;
+};
+class CFX_GSUBTable final : public IFX_GSUBTable {
+ public:
+ ~CFX_GSUBTable() override {}
+ FX_BOOL GetVerticalGlyph(FX_DWORD glyphnum, FX_DWORD* vglyphnum) override;
+
+ CFX_CTTGSUBTable m_GsubImp;
+};
+
+#endif // CORE_FPDFAPI_FPDF_FONT_TTGSUBTABLE_H_
diff --git a/core/fpdfapi/fpdf_page/fpdf_page.cpp b/core/fpdfapi/fpdf_page/fpdf_page.cpp
new file mode 100644
index 0000000000..5d4a584349
--- /dev/null
+++ b/core/fpdfapi/fpdf_page/fpdf_page.cpp
@@ -0,0 +1,764 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_page/pageint.h"
+
+#include <algorithm>
+
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_document.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_page.h"
+#include "third_party/base/stl_util.h"
+
+CPDF_PageObject::CPDF_PageObject() {}
+
+CPDF_PageObject::~CPDF_PageObject() {}
+
+void CPDF_PageObject::CopyData(const CPDF_PageObject* pSrc) {
+ CopyStates(*pSrc);
+ m_Left = pSrc->m_Left;
+ m_Right = pSrc->m_Right;
+ m_Top = pSrc->m_Top;
+ m_Bottom = pSrc->m_Bottom;
+}
+
+void CPDF_PageObject::TransformClipPath(CFX_Matrix& matrix) {
+ if (m_ClipPath.IsNull()) {
+ return;
+ }
+ m_ClipPath.GetModify();
+ m_ClipPath.Transform(matrix);
+}
+
+void CPDF_PageObject::TransformGeneralState(CFX_Matrix& matrix) {
+ if (m_GeneralState.IsNull()) {
+ return;
+ }
+ CPDF_GeneralStateData* pGS = m_GeneralState.GetModify();
+ pGS->m_Matrix.Concat(matrix);
+}
+
+FX_RECT CPDF_PageObject::GetBBox(const CFX_Matrix* pMatrix) const {
+ CFX_FloatRect rect(m_Left, m_Bottom, m_Right, m_Top);
+ if (pMatrix) {
+ pMatrix->TransformRect(rect);
+ }
+ return rect.GetOutterRect();
+}
+
+CPDF_TextObject::CPDF_TextObject()
+ : m_PosX(0),
+ m_PosY(0),
+ m_nChars(0),
+ m_pCharCodes(nullptr),
+ m_pCharPos(nullptr) {}
+
+CPDF_TextObject::~CPDF_TextObject() {
+ if (m_nChars > 1) {
+ FX_Free(m_pCharCodes);
+ }
+ FX_Free(m_pCharPos);
+}
+
+void CPDF_TextObject::GetItemInfo(int index, CPDF_TextObjectItem* pInfo) const {
+ pInfo->m_CharCode =
+ m_nChars == 1 ? (FX_DWORD)(uintptr_t)m_pCharCodes : m_pCharCodes[index];
+ pInfo->m_OriginX = index ? m_pCharPos[index - 1] : 0;
+ pInfo->m_OriginY = 0;
+ if (pInfo->m_CharCode == -1) {
+ return;
+ }
+ CPDF_Font* pFont = m_TextState.GetFont();
+ if (!pFont->IsCIDFont()) {
+ return;
+ }
+ if (!pFont->AsCIDFont()->IsVertWriting()) {
+ return;
+ }
+ FX_WORD CID = pFont->AsCIDFont()->CIDFromCharCode(pInfo->m_CharCode);
+ pInfo->m_OriginY = pInfo->m_OriginX;
+ pInfo->m_OriginX = 0;
+ short vx, vy;
+ pFont->AsCIDFont()->GetVertOrigin(CID, vx, vy);
+ FX_FLOAT fontsize = m_TextState.GetFontSize();
+ pInfo->m_OriginX -= fontsize * vx / 1000;
+ pInfo->m_OriginY -= fontsize * vy / 1000;
+}
+
+int CPDF_TextObject::CountChars() const {
+ if (m_nChars == 1) {
+ return 1;
+ }
+ int count = 0;
+ for (int i = 0; i < m_nChars; ++i)
+ if (m_pCharCodes[i] != (FX_DWORD)-1) {
+ ++count;
+ }
+ return count;
+}
+
+void CPDF_TextObject::GetCharInfo(int index,
+ FX_DWORD& charcode,
+ FX_FLOAT& kerning) const {
+ if (m_nChars == 1) {
+ charcode = (FX_DWORD)(uintptr_t)m_pCharCodes;
+ kerning = 0;
+ return;
+ }
+ int count = 0;
+ for (int i = 0; i < m_nChars; ++i) {
+ if (m_pCharCodes[i] != (FX_DWORD)-1) {
+ if (count == index) {
+ charcode = m_pCharCodes[i];
+ if (i == m_nChars - 1 || m_pCharCodes[i + 1] != (FX_DWORD)-1) {
+ kerning = 0;
+ } else {
+ kerning = m_pCharPos[i];
+ }
+ return;
+ }
+ ++count;
+ }
+ }
+}
+
+void CPDF_TextObject::GetCharInfo(int index, CPDF_TextObjectItem* pInfo) const {
+ if (m_nChars == 1) {
+ GetItemInfo(0, pInfo);
+ return;
+ }
+ int count = 0;
+ for (int i = 0; i < m_nChars; ++i) {
+ FX_DWORD charcode = m_pCharCodes[i];
+ if (charcode == (FX_DWORD)-1) {
+ continue;
+ }
+ if (count == index) {
+ GetItemInfo(i, pInfo);
+ break;
+ }
+ ++count;
+ }
+}
+
+CPDF_TextObject* CPDF_TextObject::Clone() const {
+ CPDF_TextObject* obj = new CPDF_TextObject;
+ obj->CopyData(this);
+
+ obj->m_nChars = m_nChars;
+ if (m_nChars > 1) {
+ obj->m_pCharCodes = FX_Alloc(FX_DWORD, m_nChars);
+ FXSYS_memcpy(obj->m_pCharCodes, m_pCharCodes, m_nChars * sizeof(FX_DWORD));
+ obj->m_pCharPos = FX_Alloc(FX_FLOAT, m_nChars - 1);
+ FXSYS_memcpy(obj->m_pCharPos, m_pCharPos,
+ (m_nChars - 1) * sizeof(FX_FLOAT));
+ } else {
+ obj->m_pCharCodes = m_pCharCodes;
+ }
+ obj->m_PosX = m_PosX;
+ obj->m_PosY = m_PosY;
+ return obj;
+}
+
+void CPDF_TextObject::GetTextMatrix(CFX_Matrix* pMatrix) const {
+ FX_FLOAT* pTextMatrix = m_TextState.GetMatrix();
+ pMatrix->Set(pTextMatrix[0], pTextMatrix[2], pTextMatrix[1], pTextMatrix[3],
+ m_PosX, m_PosY);
+}
+
+void CPDF_TextObject::SetSegments(const CFX_ByteString* pStrs,
+ FX_FLOAT* pKerning,
+ int nsegs) {
+ if (m_nChars > 1) {
+ FX_Free(m_pCharCodes);
+ m_pCharCodes = nullptr;
+ }
+ FX_Free(m_pCharPos);
+ m_pCharPos = nullptr;
+ CPDF_Font* pFont = m_TextState.GetFont();
+ m_nChars = 0;
+ for (int i = 0; i < nsegs; ++i) {
+ m_nChars += pFont->CountChar(pStrs[i], pStrs[i].GetLength());
+ }
+ m_nChars += nsegs - 1;
+ if (m_nChars > 1) {
+ m_pCharCodes = FX_Alloc(FX_DWORD, m_nChars);
+ m_pCharPos = FX_Alloc(FX_FLOAT, m_nChars - 1);
+ int index = 0;
+ for (int i = 0; i < nsegs; ++i) {
+ const FX_CHAR* segment = pStrs[i];
+ int offset = 0, len = pStrs[i].GetLength();
+ while (offset < len) {
+ m_pCharCodes[index++] = pFont->GetNextChar(segment, len, offset);
+ }
+ if (i != nsegs - 1) {
+ m_pCharPos[index - 1] = pKerning[i];
+ m_pCharCodes[index++] = (FX_DWORD)-1;
+ }
+ }
+ } else {
+ int offset = 0;
+ m_pCharCodes = (FX_DWORD*)(uintptr_t)pFont->GetNextChar(
+ pStrs[0], pStrs[0].GetLength(), offset);
+ }
+}
+
+void CPDF_TextObject::SetText(const CFX_ByteString& str) {
+ SetSegments(&str, nullptr, 1);
+ RecalcPositionData();
+}
+
+FX_FLOAT CPDF_TextObject::GetCharWidth(FX_DWORD charcode) const {
+ FX_FLOAT fontsize = m_TextState.GetFontSize() / 1000;
+ CPDF_Font* pFont = m_TextState.GetFont();
+ FX_BOOL bVertWriting = FALSE;
+ CPDF_CIDFont* pCIDFont = pFont->AsCIDFont();
+ if (pCIDFont) {
+ bVertWriting = pCIDFont->IsVertWriting();
+ }
+ if (!bVertWriting)
+ return pFont->GetCharWidthF(charcode, 0) * fontsize;
+
+ FX_WORD CID = pCIDFont->CIDFromCharCode(charcode);
+ return pCIDFont->GetVertWidth(CID) * fontsize;
+}
+
+void CPDF_TextObject::CalcPositionData(FX_FLOAT* pTextAdvanceX,
+ FX_FLOAT* pTextAdvanceY,
+ FX_FLOAT horz_scale,
+ int level) {
+ FX_FLOAT curpos = 0;
+ FX_FLOAT min_x = 10000 * 1.0f;
+ FX_FLOAT max_x = -10000 * 1.0f;
+ FX_FLOAT min_y = 10000 * 1.0f;
+ FX_FLOAT max_y = -10000 * 1.0f;
+ CPDF_Font* pFont = m_TextState.GetFont();
+ FX_BOOL bVertWriting = FALSE;
+ CPDF_CIDFont* pCIDFont = pFont->AsCIDFont();
+ if (pCIDFont) {
+ bVertWriting = pCIDFont->IsVertWriting();
+ }
+ FX_FLOAT fontsize = m_TextState.GetFontSize();
+ for (int i = 0; i < m_nChars; ++i) {
+ FX_DWORD charcode =
+ m_nChars == 1 ? (FX_DWORD)(uintptr_t)m_pCharCodes : m_pCharCodes[i];
+ if (i > 0) {
+ if (charcode == (FX_DWORD)-1) {
+ curpos -= (m_pCharPos[i - 1] * fontsize) / 1000;
+ continue;
+ }
+ m_pCharPos[i - 1] = curpos;
+ }
+ FX_RECT char_rect = pFont->GetCharBBox(charcode, level);
+ FX_FLOAT charwidth;
+ if (!bVertWriting) {
+ if (min_y > char_rect.top) {
+ min_y = (FX_FLOAT)char_rect.top;
+ }
+ if (max_y < char_rect.top) {
+ max_y = (FX_FLOAT)char_rect.top;
+ }
+ if (min_y > char_rect.bottom) {
+ min_y = (FX_FLOAT)char_rect.bottom;
+ }
+ if (max_y < char_rect.bottom) {
+ max_y = (FX_FLOAT)char_rect.bottom;
+ }
+ FX_FLOAT char_left = curpos + char_rect.left * fontsize / 1000;
+ FX_FLOAT char_right = curpos + char_rect.right * fontsize / 1000;
+ if (min_x > char_left) {
+ min_x = char_left;
+ }
+ if (max_x < char_left) {
+ max_x = char_left;
+ }
+ if (min_x > char_right) {
+ min_x = char_right;
+ }
+ if (max_x < char_right) {
+ max_x = char_right;
+ }
+ charwidth = pFont->GetCharWidthF(charcode, level) * fontsize / 1000;
+ } else {
+ FX_WORD CID = pCIDFont->CIDFromCharCode(charcode);
+ short vx;
+ short vy;
+ pCIDFont->GetVertOrigin(CID, vx, vy);
+ char_rect.left -= vx;
+ char_rect.right -= vx;
+ char_rect.top -= vy;
+ char_rect.bottom -= vy;
+ if (min_x > char_rect.left) {
+ min_x = (FX_FLOAT)char_rect.left;
+ }
+ if (max_x < char_rect.left) {
+ max_x = (FX_FLOAT)char_rect.left;
+ }
+ if (min_x > char_rect.right) {
+ min_x = (FX_FLOAT)char_rect.right;
+ }
+ if (max_x < char_rect.right) {
+ max_x = (FX_FLOAT)char_rect.right;
+ }
+ FX_FLOAT char_top = curpos + char_rect.top * fontsize / 1000;
+ FX_FLOAT char_bottom = curpos + char_rect.bottom * fontsize / 1000;
+ if (min_y > char_top) {
+ min_y = char_top;
+ }
+ if (max_y < char_top) {
+ max_y = char_top;
+ }
+ if (min_y > char_bottom) {
+ min_y = char_bottom;
+ }
+ if (max_y < char_bottom) {
+ max_y = char_bottom;
+ }
+ charwidth = pCIDFont->GetVertWidth(CID) * fontsize / 1000;
+ }
+ curpos += charwidth;
+ if (charcode == ' ' && (!pCIDFont || pCIDFont->GetCharSize(32) == 1)) {
+ curpos += m_TextState.GetObject()->m_WordSpace;
+ }
+ curpos += m_TextState.GetObject()->m_CharSpace;
+ }
+ if (bVertWriting) {
+ if (pTextAdvanceX) {
+ *pTextAdvanceX = 0;
+ }
+ if (pTextAdvanceY) {
+ *pTextAdvanceY = curpos;
+ }
+ min_x = min_x * fontsize / 1000;
+ max_x = max_x * fontsize / 1000;
+ } else {
+ if (pTextAdvanceX) {
+ *pTextAdvanceX = curpos * horz_scale;
+ }
+ if (pTextAdvanceY) {
+ *pTextAdvanceY = 0;
+ }
+ min_y = min_y * fontsize / 1000;
+ max_y = max_y * fontsize / 1000;
+ }
+ CFX_Matrix matrix;
+ GetTextMatrix(&matrix);
+ m_Left = min_x;
+ m_Right = max_x;
+ m_Bottom = min_y;
+ m_Top = max_y;
+ matrix.TransformRect(m_Left, m_Right, m_Top, m_Bottom);
+ int textmode = m_TextState.GetObject()->m_TextMode;
+ if (textmode == 1 || textmode == 2 || textmode == 5 || textmode == 6) {
+ FX_FLOAT half_width = m_GraphState.GetObject()->m_LineWidth / 2;
+ m_Left -= half_width;
+ m_Right += half_width;
+ m_Top += half_width;
+ m_Bottom -= half_width;
+ }
+}
+
+void CPDF_TextObject::Transform(const CFX_Matrix& matrix) {
+ m_TextState.GetModify();
+ CFX_Matrix text_matrix;
+ GetTextMatrix(&text_matrix);
+ text_matrix.Concat(matrix);
+ FX_FLOAT* pTextMatrix = m_TextState.GetMatrix();
+ pTextMatrix[0] = text_matrix.GetA();
+ pTextMatrix[1] = text_matrix.GetC();
+ pTextMatrix[2] = text_matrix.GetB();
+ pTextMatrix[3] = text_matrix.GetD();
+ m_PosX = text_matrix.GetE();
+ m_PosY = text_matrix.GetF();
+ CalcPositionData(nullptr, nullptr, 0);
+}
+
+void CPDF_TextObject::SetPosition(FX_FLOAT x, FX_FLOAT y) {
+ FX_FLOAT dx = x - m_PosX;
+ FX_FLOAT dy = y - m_PosY;
+ m_PosX = x;
+ m_PosY = y;
+ m_Left += dx;
+ m_Right += dx;
+ m_Top += dy;
+ m_Bottom += dy;
+}
+
+CPDF_ShadingObject::CPDF_ShadingObject() : m_pShading(nullptr) {}
+
+CPDF_ShadingObject::~CPDF_ShadingObject() {}
+
+CPDF_ShadingObject* CPDF_ShadingObject::Clone() const {
+ CPDF_ShadingObject* obj = new CPDF_ShadingObject;
+ obj->CopyData(this);
+
+ obj->m_pShading = m_pShading;
+ if (obj->m_pShading && obj->m_pShading->m_pDocument) {
+ CPDF_DocPageData* pDocPageData =
+ obj->m_pShading->m_pDocument->GetPageData();
+ obj->m_pShading = (CPDF_ShadingPattern*)pDocPageData->GetPattern(
+ obj->m_pShading->m_pShadingObj, m_pShading->m_bShadingObj,
+ &obj->m_pShading->m_ParentMatrix);
+ }
+ obj->m_Matrix = m_Matrix;
+ return obj;
+}
+
+void CPDF_ShadingObject::Transform(const CFX_Matrix& matrix) {
+ if (!m_ClipPath.IsNull()) {
+ m_ClipPath.GetModify();
+ m_ClipPath.Transform(matrix);
+ }
+ m_Matrix.Concat(matrix);
+ if (!m_ClipPath.IsNull()) {
+ CalcBoundingBox();
+ } else {
+ matrix.TransformRect(m_Left, m_Right, m_Top, m_Bottom);
+ }
+}
+
+void CPDF_ShadingObject::CalcBoundingBox() {
+ if (m_ClipPath.IsNull()) {
+ return;
+ }
+ CFX_FloatRect rect = m_ClipPath.GetClipBox();
+ m_Left = rect.left;
+ m_Bottom = rect.bottom;
+ m_Right = rect.right;
+ m_Top = rect.top;
+}
+
+CPDF_FormObject::CPDF_FormObject() : m_pForm(nullptr) {}
+
+CPDF_FormObject::~CPDF_FormObject() {
+ delete m_pForm;
+}
+
+void CPDF_FormObject::Transform(const CFX_Matrix& matrix) {
+ m_FormMatrix.Concat(matrix);
+ CalcBoundingBox();
+}
+
+CPDF_FormObject* CPDF_FormObject::Clone() const {
+ CPDF_FormObject* obj = new CPDF_FormObject;
+ obj->CopyData(this);
+
+ obj->m_pForm = m_pForm->Clone();
+ obj->m_FormMatrix = m_FormMatrix;
+ return obj;
+}
+
+void CPDF_FormObject::CalcBoundingBox() {
+ CFX_FloatRect form_rect = m_pForm->CalcBoundingBox();
+ form_rect.Transform(&m_FormMatrix);
+ m_Left = form_rect.left;
+ m_Bottom = form_rect.bottom;
+ m_Right = form_rect.right;
+ m_Top = form_rect.top;
+}
+
+CPDF_PageObject* CPDF_PageObjectList::GetPageObjectByIndex(int index) {
+ if (index < 0 || index >= pdfium::CollectionSize<int>(*this))
+ return nullptr;
+ return (*this)[index].get();
+}
+
+CPDF_PageObjectHolder::CPDF_PageObjectHolder()
+ : m_pFormDict(nullptr),
+ m_pFormStream(nullptr),
+ m_pDocument(nullptr),
+ m_pPageResources(nullptr),
+ m_pResources(nullptr),
+ m_Transparency(0),
+ m_bBackgroundAlphaNeeded(FALSE),
+ m_bHasImageMask(FALSE),
+ m_ParseState(CONTENT_NOT_PARSED) {}
+
+void CPDF_PageObjectHolder::ContinueParse(IFX_Pause* pPause) {
+ if (!m_pParser) {
+ return;
+ }
+ m_pParser->Continue(pPause);
+ if (m_pParser->GetStatus() == CPDF_ContentParser::Done) {
+ m_ParseState = CONTENT_PARSED;
+ m_pParser.reset();
+ }
+}
+
+void CPDF_PageObjectHolder::Transform(const CFX_Matrix& matrix) {
+ for (auto& pObj : m_PageObjectList)
+ pObj->Transform(matrix);
+}
+
+CFX_FloatRect CPDF_PageObjectHolder::CalcBoundingBox() const {
+ if (m_PageObjectList.empty())
+ return CFX_FloatRect(0, 0, 0, 0);
+
+ FX_FLOAT left = 1000000.0f;
+ FX_FLOAT right = -1000000.0f;
+ FX_FLOAT bottom = 1000000.0f;
+ FX_FLOAT top = -1000000.0f;
+ for (const auto& pObj : m_PageObjectList) {
+ left = std::min(left, pObj->m_Left);
+ right = std::max(right, pObj->m_Right);
+ bottom = std::min(bottom, pObj->m_Bottom);
+ top = std::max(top, pObj->m_Top);
+ }
+ return CFX_FloatRect(left, bottom, right, top);
+}
+
+void CPDF_PageObjectHolder::LoadTransInfo() {
+ if (!m_pFormDict) {
+ return;
+ }
+ CPDF_Dictionary* pGroup = m_pFormDict->GetDictBy("Group");
+ if (!pGroup) {
+ return;
+ }
+ if (pGroup->GetStringBy("S") != "Transparency") {
+ return;
+ }
+ m_Transparency |= PDFTRANS_GROUP;
+ if (pGroup->GetIntegerBy("I")) {
+ m_Transparency |= PDFTRANS_ISOLATED;
+ }
+ if (pGroup->GetIntegerBy("K")) {
+ m_Transparency |= PDFTRANS_KNOCKOUT;
+ }
+}
+
+CPDF_Page::CPDF_Page() : m_pPageRender(nullptr) {}
+
+void CPDF_Page::Load(CPDF_Document* pDocument,
+ CPDF_Dictionary* pPageDict,
+ FX_BOOL bPageCache) {
+ m_pDocument = (CPDF_Document*)pDocument;
+ m_pFormDict = pPageDict;
+ if (bPageCache) {
+ m_pPageRender =
+ CPDF_ModuleMgr::Get()->GetRenderModule()->CreatePageCache(this);
+ }
+ if (!pPageDict) {
+ m_PageWidth = m_PageHeight = 100 * 1.0f;
+ m_pPageResources = m_pResources = NULL;
+ return;
+ }
+ CPDF_Object* pageAttr = GetPageAttr("Resources");
+ m_pResources = pageAttr ? pageAttr->GetDict() : NULL;
+ m_pPageResources = m_pResources;
+ CPDF_Object* pRotate = GetPageAttr("Rotate");
+ int rotate = 0;
+ if (pRotate) {
+ rotate = pRotate->GetInteger() / 90 % 4;
+ }
+ if (rotate < 0) {
+ rotate += 4;
+ }
+ CPDF_Array* pMediaBox = ToArray(GetPageAttr("MediaBox"));
+ CFX_FloatRect mediabox;
+ if (pMediaBox) {
+ mediabox = pMediaBox->GetRect();
+ mediabox.Normalize();
+ }
+ if (mediabox.IsEmpty()) {
+ mediabox = CFX_FloatRect(0, 0, 612, 792);
+ }
+
+ CPDF_Array* pCropBox = ToArray(GetPageAttr("CropBox"));
+ if (pCropBox) {
+ m_BBox = pCropBox->GetRect();
+ m_BBox.Normalize();
+ }
+ if (m_BBox.IsEmpty()) {
+ m_BBox = mediabox;
+ } else {
+ m_BBox.Intersect(mediabox);
+ }
+ if (rotate % 2) {
+ m_PageHeight = m_BBox.right - m_BBox.left;
+ m_PageWidth = m_BBox.top - m_BBox.bottom;
+ } else {
+ m_PageWidth = m_BBox.right - m_BBox.left;
+ m_PageHeight = m_BBox.top - m_BBox.bottom;
+ }
+ switch (rotate) {
+ case 0:
+ m_PageMatrix.Set(1.0f, 0, 0, 1.0f, -m_BBox.left, -m_BBox.bottom);
+ break;
+ case 1:
+ m_PageMatrix.Set(0, -1.0f, 1.0f, 0, -m_BBox.bottom, m_BBox.right);
+ break;
+ case 2:
+ m_PageMatrix.Set(-1.0f, 0, 0, -1.0f, m_BBox.right, m_BBox.top);
+ break;
+ case 3:
+ m_PageMatrix.Set(0, 1.0f, -1.0f, 0, m_BBox.top, -m_BBox.left);
+ break;
+ }
+ m_Transparency = PDFTRANS_ISOLATED;
+ LoadTransInfo();
+}
+
+void CPDF_Page::StartParse(CPDF_ParseOptions* pOptions) {
+ if (m_ParseState == CONTENT_PARSED || m_ParseState == CONTENT_PARSING) {
+ return;
+ }
+ m_pParser.reset(new CPDF_ContentParser);
+ m_pParser->Start(this, pOptions);
+ m_ParseState = CONTENT_PARSING;
+}
+
+void CPDF_Page::ParseContent(CPDF_ParseOptions* pOptions) {
+ StartParse(pOptions);
+ ContinueParse(nullptr);
+}
+
+CPDF_Page::~CPDF_Page() {
+ if (m_pPageRender) {
+ IPDF_RenderModule* pModule = CPDF_ModuleMgr::Get()->GetRenderModule();
+ pModule->DestroyPageCache(m_pPageRender);
+ }
+}
+
+CPDF_Object* FPDFAPI_GetPageAttr(CPDF_Dictionary* pPageDict,
+ const CFX_ByteStringC& name) {
+ int level = 0;
+ while (1) {
+ CPDF_Object* pObj = pPageDict->GetElementValue(name);
+ if (pObj) {
+ return pObj;
+ }
+ CPDF_Dictionary* pParent = pPageDict->GetDictBy("Parent");
+ if (!pParent || pParent == pPageDict) {
+ return NULL;
+ }
+ pPageDict = pParent;
+ level++;
+ if (level == 1000) {
+ return NULL;
+ }
+ }
+}
+
+CPDF_Object* CPDF_Page::GetPageAttr(const CFX_ByteStringC& name) const {
+ return FPDFAPI_GetPageAttr(m_pFormDict, name);
+}
+
+CPDF_Form::CPDF_Form(CPDF_Document* pDoc,
+ CPDF_Dictionary* pPageResources,
+ CPDF_Stream* pFormStream,
+ CPDF_Dictionary* pParentResources) {
+ m_pDocument = pDoc;
+ m_pFormStream = pFormStream;
+ m_pFormDict = pFormStream ? pFormStream->GetDict() : NULL;
+ m_pResources = m_pFormDict->GetDictBy("Resources");
+ m_pPageResources = pPageResources;
+ if (!m_pResources) {
+ m_pResources = pParentResources;
+ }
+ if (!m_pResources) {
+ m_pResources = pPageResources;
+ }
+ m_Transparency = 0;
+ LoadTransInfo();
+}
+
+CPDF_Form::~CPDF_Form() {}
+
+void CPDF_Form::StartParse(CPDF_AllStates* pGraphicStates,
+ CFX_Matrix* pParentMatrix,
+ CPDF_Type3Char* pType3Char,
+ CPDF_ParseOptions* pOptions,
+ int level) {
+ if (m_ParseState == CONTENT_PARSED || m_ParseState == CONTENT_PARSING) {
+ return;
+ }
+ m_pParser.reset(new CPDF_ContentParser);
+ m_pParser->Start(this, pGraphicStates, pParentMatrix, pType3Char, pOptions,
+ level);
+ m_ParseState = CONTENT_PARSING;
+}
+
+void CPDF_Form::ParseContent(CPDF_AllStates* pGraphicStates,
+ CFX_Matrix* pParentMatrix,
+ CPDF_Type3Char* pType3Char,
+ CPDF_ParseOptions* pOptions,
+ int level) {
+ StartParse(pGraphicStates, pParentMatrix, pType3Char, pOptions, level);
+ ContinueParse(NULL);
+}
+
+CPDF_Form* CPDF_Form::Clone() const {
+ CPDF_Form* pCloneForm =
+ new CPDF_Form(m_pDocument, m_pPageResources, m_pFormStream, m_pResources);
+ for (const auto& pObj : m_PageObjectList)
+ pCloneForm->m_PageObjectList.emplace_back(pObj->Clone());
+
+ return pCloneForm;
+}
+
+void CPDF_Page::GetDisplayMatrix(CFX_Matrix& matrix,
+ int xPos,
+ int yPos,
+ int xSize,
+ int ySize,
+ int iRotate) const {
+ if (m_PageWidth == 0 || m_PageHeight == 0) {
+ return;
+ }
+ CFX_Matrix display_matrix;
+ int x0, y0, x1, y1, x2, y2;
+ iRotate %= 4;
+ switch (iRotate) {
+ case 0:
+ x0 = xPos;
+ y0 = yPos + ySize;
+ x1 = xPos;
+ y1 = yPos;
+ x2 = xPos + xSize;
+ y2 = yPos + ySize;
+ break;
+ case 1:
+ x0 = xPos;
+ y0 = yPos;
+ x1 = xPos + xSize;
+ y1 = yPos;
+ x2 = xPos;
+ y2 = yPos + ySize;
+ break;
+ case 2:
+ x0 = xPos + xSize;
+ y0 = yPos;
+ x1 = xPos + xSize;
+ y1 = yPos + ySize;
+ x2 = xPos;
+ y2 = yPos;
+ break;
+ case 3:
+ x0 = xPos + xSize;
+ y0 = yPos + ySize;
+ x1 = xPos;
+ y1 = yPos + ySize;
+ x2 = xPos + xSize;
+ y2 = yPos;
+ break;
+ }
+ display_matrix.Set(
+ ((FX_FLOAT)(x2 - x0)) / m_PageWidth, ((FX_FLOAT)(y2 - y0)) / m_PageWidth,
+ ((FX_FLOAT)(x1 - x0)) / m_PageHeight,
+ ((FX_FLOAT)(y1 - y0)) / m_PageHeight, (FX_FLOAT)x0, (FX_FLOAT)y0);
+ matrix = m_PageMatrix;
+ matrix.Concat(display_matrix);
+}
+
+CPDF_ParseOptions::CPDF_ParseOptions() {
+ m_bTextOnly = FALSE;
+ m_bMarkedContent = TRUE;
+ m_bSeparateForm = TRUE;
+ m_bDecodeInlineImage = FALSE;
+}
diff --git a/core/fpdfapi/fpdf_page/fpdf_page_colors.cpp b/core/fpdfapi/fpdf_page/fpdf_page_colors.cpp
new file mode 100644
index 0000000000..f557669a77
--- /dev/null
+++ b/core/fpdfapi/fpdf_page/fpdf_page_colors.cpp
@@ -0,0 +1,1550 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_page/pageint.h"
+
+#include <limits.h>
+
+#include <algorithm>
+
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_document.h"
+#include "core/include/fpdfapi/cpdf_string.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_page.h"
+#include "core/include/fxcodec/fx_codec.h"
+
+namespace {
+
+void sRGB_to_AdobeCMYK(FX_FLOAT R,
+ FX_FLOAT G,
+ FX_FLOAT B,
+ FX_FLOAT& c,
+ FX_FLOAT& m,
+ FX_FLOAT& y,
+ FX_FLOAT& k) {
+ c = 1.0f - R;
+ m = 1.0f - G;
+ y = 1.0f - B;
+ k = c;
+ if (m < k) {
+ k = m;
+ }
+ if (y < k) {
+ k = y;
+ }
+}
+
+FX_DWORD ComponentsForFamily(int family) {
+ if (family == PDFCS_DEVICERGB)
+ return 3;
+ if (family == PDFCS_DEVICEGRAY)
+ return 1;
+ return 4;
+}
+
+void ReverseRGB(uint8_t* pDestBuf, const uint8_t* pSrcBuf, int pixels) {
+ if (pDestBuf == pSrcBuf) {
+ for (int i = 0; i < pixels; i++) {
+ uint8_t temp = pDestBuf[2];
+ pDestBuf[2] = pDestBuf[0];
+ pDestBuf[0] = temp;
+ pDestBuf += 3;
+ }
+ } else {
+ for (int i = 0; i < pixels; i++) {
+ *pDestBuf++ = pSrcBuf[2];
+ *pDestBuf++ = pSrcBuf[1];
+ *pDestBuf++ = pSrcBuf[0];
+ pSrcBuf += 3;
+ }
+ }
+}
+
+} // namespace
+
+CPDF_DeviceCS::CPDF_DeviceCS(CPDF_Document* pDoc, int family)
+ : CPDF_ColorSpace(pDoc, family, ComponentsForFamily(family)) {}
+
+FX_BOOL CPDF_DeviceCS::GetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT& R,
+ FX_FLOAT& G,
+ FX_FLOAT& B) const {
+ if (m_Family == PDFCS_DEVICERGB) {
+ R = pBuf[0];
+ if (R < 0) {
+ R = 0;
+ } else if (R > 1) {
+ R = 1;
+ }
+ G = pBuf[1];
+ if (G < 0) {
+ G = 0;
+ } else if (G > 1) {
+ G = 1;
+ }
+ B = pBuf[2];
+ if (B < 0) {
+ B = 0;
+ } else if (B > 1) {
+ B = 1;
+ }
+ } else if (m_Family == PDFCS_DEVICEGRAY) {
+ R = *pBuf;
+ if (R < 0) {
+ R = 0;
+ } else if (R > 1) {
+ R = 1;
+ }
+ G = B = R;
+ } else if (m_Family == PDFCS_DEVICECMYK) {
+ if (!m_dwStdConversion) {
+ AdobeCMYK_to_sRGB(pBuf[0], pBuf[1], pBuf[2], pBuf[3], R, G, B);
+ } else {
+ FX_FLOAT k = pBuf[3];
+ R = 1.0f - std::min(1.0f, pBuf[0] + k);
+ G = 1.0f - std::min(1.0f, pBuf[1] + k);
+ B = 1.0f - std::min(1.0f, pBuf[2] + k);
+ }
+ } else {
+ ASSERT(m_Family == PDFCS_PATTERN);
+ R = G = B = 0;
+ return FALSE;
+ }
+ return TRUE;
+}
+FX_BOOL CPDF_DeviceCS::v_GetCMYK(FX_FLOAT* pBuf,
+ FX_FLOAT& c,
+ FX_FLOAT& m,
+ FX_FLOAT& y,
+ FX_FLOAT& k) const {
+ if (m_Family != PDFCS_DEVICECMYK) {
+ return FALSE;
+ }
+ c = pBuf[0];
+ m = pBuf[1];
+ y = pBuf[2];
+ k = pBuf[3];
+ return TRUE;
+}
+FX_BOOL CPDF_DeviceCS::SetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT R,
+ FX_FLOAT G,
+ FX_FLOAT B) const {
+ if (m_Family == PDFCS_DEVICERGB) {
+ pBuf[0] = R;
+ pBuf[1] = G;
+ pBuf[2] = B;
+ return TRUE;
+ }
+ if (m_Family == PDFCS_DEVICEGRAY) {
+ if (R == G && R == B) {
+ *pBuf = R;
+ return TRUE;
+ }
+ return FALSE;
+ }
+ if (m_Family == PDFCS_DEVICECMYK) {
+ sRGB_to_AdobeCMYK(R, G, B, pBuf[0], pBuf[1], pBuf[2], pBuf[3]);
+ return TRUE;
+ }
+ return FALSE;
+}
+FX_BOOL CPDF_DeviceCS::v_SetCMYK(FX_FLOAT* pBuf,
+ FX_FLOAT c,
+ FX_FLOAT m,
+ FX_FLOAT y,
+ FX_FLOAT k) const {
+ if (m_Family == PDFCS_DEVICERGB) {
+ AdobeCMYK_to_sRGB(c, m, y, k, pBuf[0], pBuf[1], pBuf[2]);
+ return TRUE;
+ }
+ if (m_Family == PDFCS_DEVICECMYK) {
+ pBuf[0] = c;
+ pBuf[1] = m;
+ pBuf[2] = y;
+ pBuf[3] = k;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void CPDF_DeviceCS::TranslateImageLine(uint8_t* pDestBuf,
+ const uint8_t* pSrcBuf,
+ int pixels,
+ int image_width,
+ int image_height,
+ FX_BOOL bTransMask) const {
+ if (bTransMask && m_Family == PDFCS_DEVICECMYK) {
+ for (int i = 0; i < pixels; i++) {
+ int k = 255 - pSrcBuf[3];
+ pDestBuf[0] = ((255 - pSrcBuf[0]) * k) / 255;
+ pDestBuf[1] = ((255 - pSrcBuf[1]) * k) / 255;
+ pDestBuf[2] = ((255 - pSrcBuf[2]) * k) / 255;
+ pDestBuf += 3;
+ pSrcBuf += 4;
+ }
+ return;
+ }
+ if (m_Family == PDFCS_DEVICERGB) {
+ ReverseRGB(pDestBuf, pSrcBuf, pixels);
+ } else if (m_Family == PDFCS_DEVICEGRAY) {
+ for (int i = 0; i < pixels; i++) {
+ *pDestBuf++ = pSrcBuf[i];
+ *pDestBuf++ = pSrcBuf[i];
+ *pDestBuf++ = pSrcBuf[i];
+ }
+ } else {
+ for (int i = 0; i < pixels; i++) {
+ if (!m_dwStdConversion) {
+ AdobeCMYK_to_sRGB1(pSrcBuf[0], pSrcBuf[1], pSrcBuf[2], pSrcBuf[3],
+ pDestBuf[2], pDestBuf[1], pDestBuf[0]);
+ } else {
+ uint8_t k = pSrcBuf[3];
+ pDestBuf[2] = 255 - std::min(255, pSrcBuf[0] + k);
+ pDestBuf[1] = 255 - std::min(255, pSrcBuf[1] + k);
+ pDestBuf[0] = 255 - std::min(255, pSrcBuf[2] + k);
+ }
+ pSrcBuf += 4;
+ pDestBuf += 3;
+ }
+ }
+}
+const uint8_t g_sRGBSamples1[] = {
+ 0, 3, 6, 10, 13, 15, 18, 20, 22, 23, 25, 27, 28, 30, 31,
+ 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 49, 50, 51, 52, 53, 53, 54, 55, 56, 56, 57, 58, 58,
+ 59, 60, 61, 61, 62, 62, 63, 64, 64, 65, 66, 66, 67, 67, 68,
+ 68, 69, 70, 70, 71, 71, 72, 72, 73, 73, 74, 74, 75, 76, 76,
+ 77, 77, 78, 78, 79, 79, 79, 80, 80, 81, 81, 82, 82, 83, 83,
+ 84, 84, 85, 85, 85, 86, 86, 87, 87, 88, 88, 88, 89, 89, 90,
+ 90, 91, 91, 91, 92, 92, 93, 93, 93, 94, 94, 95, 95, 95, 96,
+ 96, 97, 97, 97, 98, 98, 98, 99, 99, 99, 100, 100, 101, 101, 101,
+ 102, 102, 102, 103, 103, 103, 104, 104, 104, 105, 105, 106, 106, 106, 107,
+ 107, 107, 108, 108, 108, 109, 109, 109, 110, 110, 110, 110, 111, 111, 111,
+ 112, 112, 112, 113, 113, 113, 114, 114, 114, 115, 115, 115, 115, 116, 116,
+ 116, 117, 117, 117, 118, 118, 118, 118, 119, 119, 119, 120,
+};
+const uint8_t g_sRGBSamples2[] = {
+ 120, 121, 122, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 148, 149,
+ 150, 151, 152, 153, 154, 155, 155, 156, 157, 158, 159, 159, 160, 161, 162,
+ 163, 163, 164, 165, 166, 167, 167, 168, 169, 170, 170, 171, 172, 173, 173,
+ 174, 175, 175, 176, 177, 178, 178, 179, 180, 180, 181, 182, 182, 183, 184,
+ 185, 185, 186, 187, 187, 188, 189, 189, 190, 190, 191, 192, 192, 193, 194,
+ 194, 195, 196, 196, 197, 197, 198, 199, 199, 200, 200, 201, 202, 202, 203,
+ 203, 204, 205, 205, 206, 206, 207, 208, 208, 209, 209, 210, 210, 211, 212,
+ 212, 213, 213, 214, 214, 215, 215, 216, 216, 217, 218, 218, 219, 219, 220,
+ 220, 221, 221, 222, 222, 223, 223, 224, 224, 225, 226, 226, 227, 227, 228,
+ 228, 229, 229, 230, 230, 231, 231, 232, 232, 233, 233, 234, 234, 235, 235,
+ 236, 236, 237, 237, 238, 238, 238, 239, 239, 240, 240, 241, 241, 242, 242,
+ 243, 243, 244, 244, 245, 245, 246, 246, 246, 247, 247, 248, 248, 249, 249,
+ 250, 250, 251, 251, 251, 252, 252, 253, 253, 254, 254, 255, 255,
+};
+
+static FX_FLOAT RGB_Conversion(FX_FLOAT colorComponent) {
+ if (colorComponent > 1) {
+ colorComponent = 1;
+ }
+ if (colorComponent < 0) {
+ colorComponent = 0;
+ }
+ int scale = (int)(colorComponent * 1023);
+ if (scale < 0) {
+ scale = 0;
+ }
+ if (scale < 192) {
+ colorComponent = (g_sRGBSamples1[scale] / 255.0f);
+ } else {
+ colorComponent = (g_sRGBSamples2[scale / 4 - 48] / 255.0f);
+ }
+ return colorComponent;
+}
+
+static void XYZ_to_sRGB(FX_FLOAT X,
+ FX_FLOAT Y,
+ FX_FLOAT Z,
+ FX_FLOAT& R,
+ FX_FLOAT& G,
+ FX_FLOAT& B) {
+ FX_FLOAT R1 = 3.2410f * X - 1.5374f * Y - 0.4986f * Z;
+ FX_FLOAT G1 = -0.9692f * X + 1.8760f * Y + 0.0416f * Z;
+ FX_FLOAT B1 = 0.0556f * X - 0.2040f * Y + 1.0570f * Z;
+
+ R = RGB_Conversion(R1);
+ G = RGB_Conversion(G1);
+ B = RGB_Conversion(B1);
+}
+
+static void XYZ_to_sRGB_WhitePoint(FX_FLOAT X,
+ FX_FLOAT Y,
+ FX_FLOAT Z,
+ FX_FLOAT& R,
+ FX_FLOAT& G,
+ FX_FLOAT& B,
+ FX_FLOAT Xw,
+ FX_FLOAT Yw,
+ FX_FLOAT Zw) {
+ // The following RGB_xyz is based on
+ // sRGB value {Rx,Ry}={0.64, 0.33}, {Gx,Gy}={0.30, 0.60}, {Bx,By}={0.15, 0.06}
+
+ FX_FLOAT Rx = 0.64f, Ry = 0.33f;
+ FX_FLOAT Gx = 0.30f, Gy = 0.60f;
+ FX_FLOAT Bx = 0.15f, By = 0.06f;
+ CFX_Matrix_3by3 RGB_xyz(Rx, Gx, Bx, Ry, Gy, By, 1 - Rx - Ry, 1 - Gx - Gy,
+ 1 - Bx - By);
+ CFX_Vector_3by1 whitePoint(Xw, Yw, Zw);
+ CFX_Vector_3by1 XYZ(X, Y, Z);
+
+ CFX_Vector_3by1 RGB_Sum_XYZ = RGB_xyz.Inverse().TransformVector(whitePoint);
+ CFX_Matrix_3by3 RGB_SUM_XYZ_DIAG(RGB_Sum_XYZ.a, 0, 0, 0, RGB_Sum_XYZ.b, 0, 0,
+ 0, RGB_Sum_XYZ.c);
+ CFX_Matrix_3by3 M = RGB_xyz.Multiply(RGB_SUM_XYZ_DIAG);
+ CFX_Vector_3by1 RGB = M.Inverse().TransformVector(XYZ);
+
+ R = RGB_Conversion(RGB.a);
+ G = RGB_Conversion(RGB.b);
+ B = RGB_Conversion(RGB.c);
+}
+class CPDF_CalGray : public CPDF_ColorSpace {
+ public:
+ explicit CPDF_CalGray(CPDF_Document* pDoc)
+ : CPDF_ColorSpace(pDoc, PDFCS_CALGRAY, 1) {}
+ FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override;
+ FX_BOOL GetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT& R,
+ FX_FLOAT& G,
+ FX_FLOAT& B) const override;
+ FX_BOOL SetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT R,
+ FX_FLOAT G,
+ FX_FLOAT B) const override;
+ void TranslateImageLine(uint8_t* pDestBuf,
+ const uint8_t* pSrcBuf,
+ int pixels,
+ int image_width,
+ int image_height,
+ FX_BOOL bTransMask = FALSE) const override;
+
+ private:
+ FX_FLOAT m_WhitePoint[3];
+ FX_FLOAT m_BlackPoint[3];
+ FX_FLOAT m_Gamma;
+};
+
+FX_BOOL CPDF_CalGray::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) {
+ CPDF_Dictionary* pDict = pArray->GetDictAt(1);
+ if (!pDict)
+ return FALSE;
+
+ CPDF_Array* pParam = pDict->GetArrayBy("WhitePoint");
+ int i;
+ for (i = 0; i < 3; i++) {
+ m_WhitePoint[i] = pParam ? pParam->GetNumberAt(i) : 0;
+ }
+ pParam = pDict->GetArrayBy("BlackPoint");
+ for (i = 0; i < 3; i++) {
+ m_BlackPoint[i] = pParam ? pParam->GetNumberAt(i) : 0;
+ }
+ m_Gamma = pDict->GetNumberBy("Gamma");
+ if (m_Gamma == 0) {
+ m_Gamma = 1.0f;
+ }
+ return TRUE;
+}
+FX_BOOL CPDF_CalGray::GetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT& R,
+ FX_FLOAT& G,
+ FX_FLOAT& B) const {
+ R = G = B = *pBuf;
+ return TRUE;
+}
+FX_BOOL CPDF_CalGray::SetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT R,
+ FX_FLOAT G,
+ FX_FLOAT B) const {
+ if (R == G && R == B) {
+ *pBuf = R;
+ return TRUE;
+ }
+ return FALSE;
+}
+void CPDF_CalGray::TranslateImageLine(uint8_t* pDestBuf,
+ const uint8_t* pSrcBuf,
+ int pixels,
+ int image_width,
+ int image_height,
+ FX_BOOL bTransMask) const {
+ for (int i = 0; i < pixels; i++) {
+ *pDestBuf++ = pSrcBuf[i];
+ *pDestBuf++ = pSrcBuf[i];
+ *pDestBuf++ = pSrcBuf[i];
+ }
+}
+class CPDF_CalRGB : public CPDF_ColorSpace {
+ public:
+ explicit CPDF_CalRGB(CPDF_Document* pDoc)
+ : CPDF_ColorSpace(pDoc, PDFCS_CALRGB, 3) {}
+ FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override;
+ FX_BOOL GetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT& R,
+ FX_FLOAT& G,
+ FX_FLOAT& B) const override;
+ FX_BOOL SetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT R,
+ FX_FLOAT G,
+ FX_FLOAT B) const override;
+ void TranslateImageLine(uint8_t* pDestBuf,
+ const uint8_t* pSrcBuf,
+ int pixels,
+ int image_width,
+ int image_height,
+ FX_BOOL bTransMask = FALSE) const override;
+
+ FX_FLOAT m_WhitePoint[3];
+ FX_FLOAT m_BlackPoint[3];
+ FX_FLOAT m_Gamma[3];
+ FX_FLOAT m_Matrix[9];
+ FX_BOOL m_bGamma;
+ FX_BOOL m_bMatrix;
+};
+FX_BOOL CPDF_CalRGB::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) {
+ CPDF_Dictionary* pDict = pArray->GetDictAt(1);
+ if (!pDict)
+ return FALSE;
+
+ CPDF_Array* pParam = pDict->GetArrayBy("WhitePoint");
+ int i;
+ for (i = 0; i < 3; i++) {
+ m_WhitePoint[i] = pParam ? pParam->GetNumberAt(i) : 0;
+ }
+ pParam = pDict->GetArrayBy("BlackPoint");
+ for (i = 0; i < 3; i++) {
+ m_BlackPoint[i] = pParam ? pParam->GetNumberAt(i) : 0;
+ }
+ pParam = pDict->GetArrayBy("Gamma");
+ if (pParam) {
+ m_bGamma = TRUE;
+ for (i = 0; i < 3; i++) {
+ m_Gamma[i] = pParam->GetNumberAt(i);
+ }
+ } else {
+ m_bGamma = FALSE;
+ }
+ pParam = pDict->GetArrayBy("Matrix");
+ if (pParam) {
+ m_bMatrix = TRUE;
+ for (i = 0; i < 9; i++) {
+ m_Matrix[i] = pParam->GetNumberAt(i);
+ }
+ } else {
+ m_bMatrix = FALSE;
+ }
+ return TRUE;
+}
+FX_BOOL CPDF_CalRGB::GetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT& R,
+ FX_FLOAT& G,
+ FX_FLOAT& B) const {
+ FX_FLOAT A_ = pBuf[0];
+ FX_FLOAT B_ = pBuf[1];
+ FX_FLOAT C_ = pBuf[2];
+ if (m_bGamma) {
+ A_ = (FX_FLOAT)FXSYS_pow(A_, m_Gamma[0]);
+ B_ = (FX_FLOAT)FXSYS_pow(B_, m_Gamma[1]);
+ C_ = (FX_FLOAT)FXSYS_pow(C_, m_Gamma[2]);
+ }
+ FX_FLOAT X, Y, Z;
+ if (m_bMatrix) {
+ X = m_Matrix[0] * A_ + m_Matrix[3] * B_ + m_Matrix[6] * C_;
+ Y = m_Matrix[1] * A_ + m_Matrix[4] * B_ + m_Matrix[7] * C_;
+ Z = m_Matrix[2] * A_ + m_Matrix[5] * B_ + m_Matrix[8] * C_;
+ } else {
+ X = A_;
+ Y = B_;
+ Z = C_;
+ }
+ XYZ_to_sRGB_WhitePoint(X, Y, Z, R, G, B, m_WhitePoint[0], m_WhitePoint[1],
+ m_WhitePoint[2]);
+ return TRUE;
+}
+FX_BOOL CPDF_CalRGB::SetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT R,
+ FX_FLOAT G,
+ FX_FLOAT B) const {
+ pBuf[0] = R;
+ pBuf[1] = G;
+ pBuf[2] = B;
+ return TRUE;
+}
+void CPDF_CalRGB::TranslateImageLine(uint8_t* pDestBuf,
+ const uint8_t* pSrcBuf,
+ int pixels,
+ int image_width,
+ int image_height,
+ FX_BOOL bTransMask) const {
+ if (bTransMask) {
+ FX_FLOAT Cal[3];
+ FX_FLOAT R, G, B;
+ for (int i = 0; i < pixels; i++) {
+ Cal[0] = ((FX_FLOAT)pSrcBuf[2]) / 255;
+ Cal[1] = ((FX_FLOAT)pSrcBuf[1]) / 255;
+ Cal[2] = ((FX_FLOAT)pSrcBuf[0]) / 255;
+ GetRGB(Cal, R, G, B);
+ pDestBuf[0] = FXSYS_round(B * 255);
+ pDestBuf[1] = FXSYS_round(G * 255);
+ pDestBuf[2] = FXSYS_round(R * 255);
+ pSrcBuf += 3;
+ pDestBuf += 3;
+ }
+ }
+ ReverseRGB(pDestBuf, pSrcBuf, pixels);
+}
+class CPDF_LabCS : public CPDF_ColorSpace {
+ public:
+ explicit CPDF_LabCS(CPDF_Document* pDoc)
+ : CPDF_ColorSpace(pDoc, PDFCS_LAB, 3) {}
+ void GetDefaultValue(int iComponent,
+ FX_FLOAT& value,
+ FX_FLOAT& min,
+ FX_FLOAT& max) const override;
+ FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override;
+ FX_BOOL GetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT& R,
+ FX_FLOAT& G,
+ FX_FLOAT& B) const override;
+ FX_BOOL SetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT R,
+ FX_FLOAT G,
+ FX_FLOAT B) const override;
+ void TranslateImageLine(uint8_t* pDestBuf,
+ const uint8_t* pSrcBuf,
+ int pixels,
+ int image_width,
+ int image_height,
+ FX_BOOL bTransMask = FALSE) const override;
+
+ FX_FLOAT m_WhitePoint[3];
+ FX_FLOAT m_BlackPoint[3];
+ FX_FLOAT m_Ranges[4];
+};
+FX_BOOL CPDF_LabCS::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) {
+ CPDF_Dictionary* pDict = pArray->GetDictAt(1);
+ if (!pDict) {
+ return FALSE;
+ }
+ CPDF_Array* pParam = pDict->GetArrayBy("WhitePoint");
+ int i;
+ for (i = 0; i < 3; i++) {
+ m_WhitePoint[i] = pParam ? pParam->GetNumberAt(i) : 0;
+ }
+ pParam = pDict->GetArrayBy("BlackPoint");
+ for (i = 0; i < 3; i++) {
+ m_BlackPoint[i] = pParam ? pParam->GetNumberAt(i) : 0;
+ }
+ pParam = pDict->GetArrayBy("Range");
+ const FX_FLOAT def_ranges[4] = {-100 * 1.0f, 100 * 1.0f, -100 * 1.0f,
+ 100 * 1.0f};
+ for (i = 0; i < 4; i++) {
+ m_Ranges[i] = pParam ? pParam->GetNumberAt(i) : def_ranges[i];
+ }
+ return TRUE;
+}
+void CPDF_LabCS::GetDefaultValue(int iComponent,
+ FX_FLOAT& value,
+ FX_FLOAT& min,
+ FX_FLOAT& max) const {
+ assert(iComponent < 3);
+ value = 0;
+ if (iComponent == 0) {
+ min = 0;
+ max = 100 * 1.0f;
+ } else {
+ min = m_Ranges[iComponent * 2 - 2];
+ max = m_Ranges[iComponent * 2 - 1];
+ if (value < min) {
+ value = min;
+ } else if (value > max) {
+ value = max;
+ }
+ }
+}
+FX_BOOL CPDF_LabCS::GetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT& R,
+ FX_FLOAT& G,
+ FX_FLOAT& B) const {
+ FX_FLOAT Lstar = pBuf[0];
+ FX_FLOAT astar = pBuf[1];
+ FX_FLOAT bstar = pBuf[2];
+ FX_FLOAT M = (Lstar + 16.0f) / 116.0f;
+ FX_FLOAT L = M + astar / 500.0f;
+ FX_FLOAT N = M - bstar / 200.0f;
+ FX_FLOAT X, Y, Z;
+ if (L < 0.2069f) {
+ X = 0.957f * 0.12842f * (L - 0.1379f);
+ } else {
+ X = 0.957f * L * L * L;
+ }
+ if (M < 0.2069f) {
+ Y = 0.12842f * (M - 0.1379f);
+ } else {
+ Y = M * M * M;
+ }
+ if (N < 0.2069f) {
+ Z = 1.0889f * 0.12842f * (N - 0.1379f);
+ } else {
+ Z = 1.0889f * N * N * N;
+ }
+ XYZ_to_sRGB(X, Y, Z, R, G, B);
+ return TRUE;
+}
+FX_BOOL CPDF_LabCS::SetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT R,
+ FX_FLOAT G,
+ FX_FLOAT B) const {
+ return FALSE;
+}
+void CPDF_LabCS::TranslateImageLine(uint8_t* pDestBuf,
+ const uint8_t* pSrcBuf,
+ int pixels,
+ int image_width,
+ int image_height,
+ FX_BOOL bTransMask) const {
+ for (int i = 0; i < pixels; i++) {
+ FX_FLOAT lab[3];
+ FX_FLOAT R, G, B;
+ lab[0] = (pSrcBuf[0] * 100 / 255.0f);
+ lab[1] = (FX_FLOAT)(pSrcBuf[1] - 128);
+ lab[2] = (FX_FLOAT)(pSrcBuf[2] - 128);
+ GetRGB(lab, R, G, B);
+ pDestBuf[0] = (int32_t)(B * 255);
+ pDestBuf[1] = (int32_t)(G * 255);
+ pDestBuf[2] = (int32_t)(R * 255);
+ pDestBuf += 3;
+ pSrcBuf += 3;
+ }
+}
+CPDF_IccProfile::CPDF_IccProfile(const uint8_t* pData, FX_DWORD dwSize)
+ : m_bsRGB(FALSE), m_pTransform(NULL), m_nSrcComponents(0) {
+ if (dwSize == 3144 &&
+ FXSYS_memcmp(pData + 0x190, "sRGB IEC61966-2.1", 17) == 0) {
+ m_bsRGB = TRUE;
+ m_nSrcComponents = 3;
+ } else if (CPDF_ModuleMgr::Get()->GetIccModule()) {
+ m_pTransform = CPDF_ModuleMgr::Get()->GetIccModule()->CreateTransform_sRGB(
+ pData, dwSize, m_nSrcComponents);
+ }
+}
+CPDF_IccProfile::~CPDF_IccProfile() {
+ if (m_pTransform) {
+ CPDF_ModuleMgr::Get()->GetIccModule()->DestroyTransform(m_pTransform);
+ }
+}
+class CPDF_ICCBasedCS : public CPDF_ColorSpace {
+ public:
+ explicit CPDF_ICCBasedCS(CPDF_Document* pDoc)
+ : CPDF_ColorSpace(pDoc, PDFCS_ICCBASED, 0),
+ m_pAlterCS(nullptr),
+ m_pProfile(nullptr),
+ m_pCache(nullptr),
+ m_pRanges(nullptr),
+ m_bOwn(FALSE) {}
+ ~CPDF_ICCBasedCS() override;
+
+ FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override;
+ FX_BOOL GetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT& R,
+ FX_FLOAT& G,
+ FX_FLOAT& B) const override;
+ FX_BOOL SetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT R,
+ FX_FLOAT G,
+ FX_FLOAT B) const override;
+ FX_BOOL v_GetCMYK(FX_FLOAT* pBuf,
+ FX_FLOAT& c,
+ FX_FLOAT& m,
+ FX_FLOAT& y,
+ FX_FLOAT& k) const override;
+ void EnableStdConversion(FX_BOOL bEnabled) override;
+ void TranslateImageLine(uint8_t* pDestBuf,
+ const uint8_t* pSrcBuf,
+ int pixels,
+ int image_width,
+ int image_height,
+ FX_BOOL bTransMask = FALSE) const override;
+
+ CPDF_ColorSpace* m_pAlterCS;
+ CPDF_IccProfile* m_pProfile;
+ uint8_t* m_pCache;
+ FX_FLOAT* m_pRanges;
+ FX_BOOL m_bOwn;
+};
+
+CPDF_ICCBasedCS::~CPDF_ICCBasedCS() {
+ FX_Free(m_pCache);
+ FX_Free(m_pRanges);
+ if (m_pAlterCS && m_bOwn) {
+ m_pAlterCS->ReleaseCS();
+ }
+ if (m_pProfile && m_pDocument) {
+ m_pDocument->GetPageData()->ReleaseIccProfile(m_pProfile);
+ }
+}
+
+FX_BOOL CPDF_ICCBasedCS::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) {
+ CPDF_Stream* pStream = pArray->GetStreamAt(1);
+ if (!pStream) {
+ return FALSE;
+ }
+ m_pProfile = pDoc->LoadIccProfile(pStream);
+ if (!m_pProfile) {
+ return FALSE;
+ }
+ m_nComponents =
+ m_pProfile
+ ->GetComponents(); // Try using the nComponents from ICC profile
+ CPDF_Dictionary* pDict = pStream->GetDict();
+ if (!m_pProfile->m_pTransform) { // No valid ICC profile or using sRGB
+ CPDF_Object* pAlterCSObj =
+ pDict ? pDict->GetElementValue("Alternate") : NULL;
+ if (pAlterCSObj) {
+ CPDF_ColorSpace* pAlterCS = CPDF_ColorSpace::Load(pDoc, pAlterCSObj);
+ if (pAlterCS) {
+ if (m_nComponents == 0) { // NO valid ICC profile
+ if (pAlterCS->CountComponents() > 0) { // Use Alternative colorspace
+ m_nComponents = pAlterCS->CountComponents();
+ m_pAlterCS = pAlterCS;
+ m_bOwn = TRUE;
+ } else { // No valid alternative colorspace
+ pAlterCS->ReleaseCS();
+ int32_t nDictComponents = pDict ? pDict->GetIntegerBy("N") : 0;
+ if (nDictComponents != 1 && nDictComponents != 3 &&
+ nDictComponents != 4) {
+ return FALSE;
+ }
+ m_nComponents = nDictComponents;
+ }
+
+ } else { // Using sRGB
+ if (pAlterCS->CountComponents() != m_nComponents) {
+ pAlterCS->ReleaseCS();
+ } else {
+ m_pAlterCS = pAlterCS;
+ m_bOwn = TRUE;
+ }
+ }
+ }
+ }
+ if (!m_pAlterCS) {
+ if (m_nComponents == 1) {
+ m_pAlterCS = GetStockCS(PDFCS_DEVICEGRAY);
+ } else if (m_nComponents == 3) {
+ m_pAlterCS = GetStockCS(PDFCS_DEVICERGB);
+ } else if (m_nComponents == 4) {
+ m_pAlterCS = GetStockCS(PDFCS_DEVICECMYK);
+ }
+ }
+ }
+ CPDF_Array* pRanges = pDict->GetArrayBy("Range");
+ m_pRanges = FX_Alloc2D(FX_FLOAT, m_nComponents, 2);
+ for (int i = 0; i < m_nComponents * 2; i++) {
+ if (pRanges) {
+ m_pRanges[i] = pRanges->GetNumberAt(i);
+ } else if (i % 2) {
+ m_pRanges[i] = 1.0f;
+ } else {
+ m_pRanges[i] = 0;
+ }
+ }
+ return TRUE;
+}
+FX_BOOL CPDF_ICCBasedCS::GetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT& R,
+ FX_FLOAT& G,
+ FX_FLOAT& B) const {
+ if (m_pProfile && m_pProfile->m_bsRGB) {
+ R = pBuf[0];
+ G = pBuf[1];
+ B = pBuf[2];
+ return TRUE;
+ }
+ ICodec_IccModule* pIccModule = CPDF_ModuleMgr::Get()->GetIccModule();
+ if (!m_pProfile->m_pTransform || !pIccModule) {
+ if (m_pAlterCS) {
+ return m_pAlterCS->GetRGB(pBuf, R, G, B);
+ }
+ R = G = B = 0.0f;
+ return TRUE;
+ }
+ FX_FLOAT rgb[3];
+ pIccModule->SetComponents(m_nComponents);
+ pIccModule->Translate(m_pProfile->m_pTransform, pBuf, rgb);
+ R = rgb[0];
+ G = rgb[1];
+ B = rgb[2];
+ return TRUE;
+}
+FX_BOOL CPDF_ICCBasedCS::v_GetCMYK(FX_FLOAT* pBuf,
+ FX_FLOAT& c,
+ FX_FLOAT& m,
+ FX_FLOAT& y,
+ FX_FLOAT& k) const {
+ if (m_nComponents != 4) {
+ return FALSE;
+ }
+ c = pBuf[0];
+ m = pBuf[1];
+ y = pBuf[2];
+ k = pBuf[3];
+ return TRUE;
+}
+FX_BOOL CPDF_ICCBasedCS::SetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT R,
+ FX_FLOAT G,
+ FX_FLOAT B) const {
+ return FALSE;
+}
+void CPDF_ICCBasedCS::EnableStdConversion(FX_BOOL bEnabled) {
+ CPDF_ColorSpace::EnableStdConversion(bEnabled);
+ if (m_pAlterCS) {
+ m_pAlterCS->EnableStdConversion(bEnabled);
+ }
+}
+void CPDF_ICCBasedCS::TranslateImageLine(uint8_t* pDestBuf,
+ const uint8_t* pSrcBuf,
+ int pixels,
+ int image_width,
+ int image_height,
+ FX_BOOL bTransMask) const {
+ if (m_pProfile->m_bsRGB) {
+ ReverseRGB(pDestBuf, pSrcBuf, pixels);
+ } else if (m_pProfile->m_pTransform) {
+ int nMaxColors = 1;
+ for (int i = 0; i < m_nComponents; i++) {
+ nMaxColors *= 52;
+ }
+ if (m_nComponents > 3 || image_width * image_height < nMaxColors * 3 / 2) {
+ CPDF_ModuleMgr::Get()->GetIccModule()->TranslateScanline(
+ m_pProfile->m_pTransform, pDestBuf, pSrcBuf, pixels);
+ } else {
+ if (!m_pCache) {
+ ((CPDF_ICCBasedCS*)this)->m_pCache = FX_Alloc2D(uint8_t, nMaxColors, 3);
+ uint8_t* temp_src = FX_Alloc2D(uint8_t, nMaxColors, m_nComponents);
+ uint8_t* pSrc = temp_src;
+ for (int i = 0; i < nMaxColors; i++) {
+ FX_DWORD color = i;
+ FX_DWORD order = nMaxColors / 52;
+ for (int c = 0; c < m_nComponents; c++) {
+ *pSrc++ = (uint8_t)(color / order * 5);
+ color %= order;
+ order /= 52;
+ }
+ }
+ CPDF_ModuleMgr::Get()->GetIccModule()->TranslateScanline(
+ m_pProfile->m_pTransform, m_pCache, temp_src, nMaxColors);
+ FX_Free(temp_src);
+ }
+ for (int i = 0; i < pixels; i++) {
+ int index = 0;
+ for (int c = 0; c < m_nComponents; c++) {
+ index = index * 52 + (*pSrcBuf) / 5;
+ pSrcBuf++;
+ }
+ index *= 3;
+ *pDestBuf++ = m_pCache[index];
+ *pDestBuf++ = m_pCache[index + 1];
+ *pDestBuf++ = m_pCache[index + 2];
+ }
+ }
+ } else if (m_pAlterCS) {
+ m_pAlterCS->TranslateImageLine(pDestBuf, pSrcBuf, pixels, image_width,
+ image_height);
+ }
+}
+class CPDF_IndexedCS : public CPDF_ColorSpace {
+ public:
+ explicit CPDF_IndexedCS(CPDF_Document* pDoc)
+ : CPDF_ColorSpace(pDoc, PDFCS_INDEXED, 1),
+ m_pBaseCS(nullptr),
+ m_pCountedBaseCS(nullptr),
+ m_pCompMinMax(nullptr) {}
+ ~CPDF_IndexedCS() override;
+
+ FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override;
+ FX_BOOL GetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT& R,
+ FX_FLOAT& G,
+ FX_FLOAT& B) const override;
+ CPDF_ColorSpace* GetBaseCS() const override;
+ void EnableStdConversion(FX_BOOL bEnabled) override;
+
+ CPDF_ColorSpace* m_pBaseCS;
+ CPDF_CountedColorSpace* m_pCountedBaseCS;
+ int m_nBaseComponents;
+ int m_MaxIndex;
+ CFX_ByteString m_Table;
+ FX_FLOAT* m_pCompMinMax;
+};
+CPDF_IndexedCS::~CPDF_IndexedCS() {
+ FX_Free(m_pCompMinMax);
+ CPDF_ColorSpace* pCS = m_pCountedBaseCS ? m_pCountedBaseCS->get() : NULL;
+ if (pCS && m_pDocument) {
+ m_pDocument->GetPageData()->ReleaseColorSpace(pCS->GetArray());
+ }
+}
+FX_BOOL CPDF_IndexedCS::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) {
+ if (pArray->GetCount() < 4) {
+ return FALSE;
+ }
+ CPDF_Object* pBaseObj = pArray->GetElementValue(1);
+ if (pBaseObj == m_pArray) {
+ return FALSE;
+ }
+ CPDF_DocPageData* pDocPageData = pDoc->GetPageData();
+ m_pBaseCS = pDocPageData->GetColorSpace(pBaseObj, NULL);
+ if (!m_pBaseCS) {
+ return FALSE;
+ }
+ m_pCountedBaseCS = pDocPageData->FindColorSpacePtr(m_pBaseCS->GetArray());
+ m_nBaseComponents = m_pBaseCS->CountComponents();
+ m_pCompMinMax = FX_Alloc2D(FX_FLOAT, m_nBaseComponents, 2);
+ FX_FLOAT defvalue;
+ for (int i = 0; i < m_nBaseComponents; i++) {
+ m_pBaseCS->GetDefaultValue(i, defvalue, m_pCompMinMax[i * 2],
+ m_pCompMinMax[i * 2 + 1]);
+ m_pCompMinMax[i * 2 + 1] -= m_pCompMinMax[i * 2];
+ }
+ m_MaxIndex = pArray->GetIntegerAt(2);
+
+ CPDF_Object* pTableObj = pArray->GetElementValue(3);
+ if (!pTableObj)
+ return FALSE;
+
+ if (CPDF_String* pString = pTableObj->AsString()) {
+ m_Table = pString->GetString();
+ } else if (CPDF_Stream* pStream = pTableObj->AsStream()) {
+ CPDF_StreamAcc acc;
+ acc.LoadAllData(pStream, FALSE);
+ m_Table = CFX_ByteStringC(acc.GetData(), acc.GetSize());
+ }
+ return TRUE;
+}
+
+FX_BOOL CPDF_IndexedCS::GetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT& R,
+ FX_FLOAT& G,
+ FX_FLOAT& B) const {
+ int index = (int32_t)(*pBuf);
+ if (index < 0 || index > m_MaxIndex) {
+ return FALSE;
+ }
+ if (m_nBaseComponents) {
+ if (index == INT_MAX || (index + 1) > INT_MAX / m_nBaseComponents ||
+ (index + 1) * m_nBaseComponents > (int)m_Table.GetLength()) {
+ R = G = B = 0;
+ return FALSE;
+ }
+ }
+ CFX_FixedBufGrow<FX_FLOAT, 16> Comps(m_nBaseComponents);
+ FX_FLOAT* comps = Comps;
+ const uint8_t* pTable = m_Table;
+ for (int i = 0; i < m_nBaseComponents; i++) {
+ comps[i] =
+ m_pCompMinMax[i * 2] +
+ m_pCompMinMax[i * 2 + 1] * pTable[index * m_nBaseComponents + i] / 255;
+ }
+ return m_pBaseCS->GetRGB(comps, R, G, B);
+}
+CPDF_ColorSpace* CPDF_IndexedCS::GetBaseCS() const {
+ return m_pBaseCS;
+}
+void CPDF_IndexedCS::EnableStdConversion(FX_BOOL bEnabled) {
+ CPDF_ColorSpace::EnableStdConversion(bEnabled);
+ if (m_pBaseCS) {
+ m_pBaseCS->EnableStdConversion(bEnabled);
+ }
+}
+
+#define MAX_PATTERN_COLORCOMPS 16
+struct PatternValue {
+ CPDF_Pattern* m_pPattern;
+ CPDF_CountedPattern* m_pCountedPattern;
+ int m_nComps;
+ FX_FLOAT m_Comps[MAX_PATTERN_COLORCOMPS];
+};
+
+CPDF_PatternCS::~CPDF_PatternCS() {
+ CPDF_ColorSpace* pCS = m_pCountedBaseCS ? m_pCountedBaseCS->get() : NULL;
+ if (pCS && m_pDocument) {
+ m_pDocument->GetPageData()->ReleaseColorSpace(pCS->GetArray());
+ }
+}
+FX_BOOL CPDF_PatternCS::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) {
+ CPDF_Object* pBaseCS = pArray->GetElementValue(1);
+ if (pBaseCS == m_pArray) {
+ return FALSE;
+ }
+ CPDF_DocPageData* pDocPageData = pDoc->GetPageData();
+ m_pBaseCS = pDocPageData->GetColorSpace(pBaseCS, NULL);
+ if (m_pBaseCS) {
+ if (m_pBaseCS->GetFamily() == PDFCS_PATTERN) {
+ return FALSE;
+ }
+ m_pCountedBaseCS = pDocPageData->FindColorSpacePtr(m_pBaseCS->GetArray());
+ m_nComponents = m_pBaseCS->CountComponents() + 1;
+ if (m_pBaseCS->CountComponents() > MAX_PATTERN_COLORCOMPS) {
+ return FALSE;
+ }
+ } else {
+ m_nComponents = 1;
+ }
+ return TRUE;
+}
+FX_BOOL CPDF_PatternCS::GetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT& R,
+ FX_FLOAT& G,
+ FX_FLOAT& B) const {
+ if (m_pBaseCS) {
+ ASSERT(m_pBaseCS->GetFamily() != PDFCS_PATTERN);
+ PatternValue* pvalue = (PatternValue*)pBuf;
+ if (m_pBaseCS->GetRGB(pvalue->m_Comps, R, G, B)) {
+ return TRUE;
+ }
+ }
+ R = G = B = 0.75f;
+ return FALSE;
+}
+CPDF_ColorSpace* CPDF_PatternCS::GetBaseCS() const {
+ return m_pBaseCS;
+}
+class CPDF_SeparationCS : public CPDF_ColorSpace {
+ public:
+ explicit CPDF_SeparationCS(CPDF_Document* pDoc)
+ : CPDF_ColorSpace(pDoc, PDFCS_SEPARATION, 1),
+ m_pAltCS(nullptr),
+ m_pFunc(nullptr) {}
+ ~CPDF_SeparationCS() override;
+
+ // CPDF_ColorSpace:
+ void GetDefaultValue(int iComponent,
+ FX_FLOAT& value,
+ FX_FLOAT& min,
+ FX_FLOAT& max) const override;
+ FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override;
+ FX_BOOL GetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT& R,
+ FX_FLOAT& G,
+ FX_FLOAT& B) const override;
+ void EnableStdConversion(FX_BOOL bEnabled) override;
+
+ CPDF_ColorSpace* m_pAltCS;
+ CPDF_Function* m_pFunc;
+ enum { None, All, Colorant } m_Type;
+};
+CPDF_SeparationCS::~CPDF_SeparationCS() {
+ if (m_pAltCS) {
+ m_pAltCS->ReleaseCS();
+ }
+ delete m_pFunc;
+}
+void CPDF_SeparationCS::GetDefaultValue(int iComponent,
+ FX_FLOAT& value,
+ FX_FLOAT& min,
+ FX_FLOAT& max) const {
+ value = 1.0f;
+ min = 0;
+ max = 1.0f;
+}
+FX_BOOL CPDF_SeparationCS::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) {
+ CFX_ByteString name = pArray->GetStringAt(1);
+ if (name == "None") {
+ m_Type = None;
+ } else {
+ m_Type = Colorant;
+ CPDF_Object* pAltCS = pArray->GetElementValue(2);
+ if (pAltCS == m_pArray) {
+ return FALSE;
+ }
+ m_pAltCS = Load(pDoc, pAltCS);
+ if (!m_pAltCS) {
+ return FALSE;
+ }
+ CPDF_Object* pFuncObj = pArray->GetElementValue(3);
+ if (pFuncObj && !pFuncObj->IsName())
+ m_pFunc = CPDF_Function::Load(pFuncObj);
+
+ if (m_pFunc && m_pFunc->CountOutputs() < m_pAltCS->CountComponents()) {
+ delete m_pFunc;
+ m_pFunc = NULL;
+ }
+ }
+ return TRUE;
+}
+FX_BOOL CPDF_SeparationCS::GetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT& R,
+ FX_FLOAT& G,
+ FX_FLOAT& B) const {
+ if (m_Type == None) {
+ return FALSE;
+ }
+ if (!m_pFunc) {
+ if (!m_pAltCS) {
+ return FALSE;
+ }
+ int nComps = m_pAltCS->CountComponents();
+ CFX_FixedBufGrow<FX_FLOAT, 16> results(nComps);
+ for (int i = 0; i < nComps; i++) {
+ results[i] = *pBuf;
+ }
+ return m_pAltCS->GetRGB(results, R, G, B);
+ }
+ CFX_FixedBufGrow<FX_FLOAT, 16> results(m_pFunc->CountOutputs());
+ int nresults = 0;
+ m_pFunc->Call(pBuf, 1, results, nresults);
+ if (nresults == 0) {
+ return FALSE;
+ }
+ if (m_pAltCS) {
+ return m_pAltCS->GetRGB(results, R, G, B);
+ }
+ R = G = B = 0;
+ return FALSE;
+}
+void CPDF_SeparationCS::EnableStdConversion(FX_BOOL bEnabled) {
+ CPDF_ColorSpace::EnableStdConversion(bEnabled);
+ if (m_pAltCS) {
+ m_pAltCS->EnableStdConversion(bEnabled);
+ }
+}
+class CPDF_DeviceNCS : public CPDF_ColorSpace {
+ public:
+ explicit CPDF_DeviceNCS(CPDF_Document* pDoc)
+ : CPDF_ColorSpace(pDoc, PDFCS_DEVICEN, 0),
+ m_pAltCS(nullptr),
+ m_pFunc(nullptr) {}
+ ~CPDF_DeviceNCS() override;
+
+ // CPDF_ColorSpace:
+ void GetDefaultValue(int iComponent,
+ FX_FLOAT& value,
+ FX_FLOAT& min,
+ FX_FLOAT& max) const override;
+ FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override;
+ FX_BOOL GetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT& R,
+ FX_FLOAT& G,
+ FX_FLOAT& B) const override;
+ void EnableStdConversion(FX_BOOL bEnabled) override;
+
+ CPDF_ColorSpace* m_pAltCS;
+ CPDF_Function* m_pFunc;
+};
+CPDF_DeviceNCS::~CPDF_DeviceNCS() {
+ delete m_pFunc;
+ if (m_pAltCS) {
+ m_pAltCS->ReleaseCS();
+ }
+}
+void CPDF_DeviceNCS::GetDefaultValue(int iComponent,
+ FX_FLOAT& value,
+ FX_FLOAT& min,
+ FX_FLOAT& max) const {
+ value = 1.0f;
+ min = 0;
+ max = 1.0f;
+}
+FX_BOOL CPDF_DeviceNCS::v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) {
+ CPDF_Array* pObj = ToArray(pArray->GetElementValue(1));
+ if (!pObj)
+ return FALSE;
+
+ m_nComponents = pObj->GetCount();
+ CPDF_Object* pAltCS = pArray->GetElementValue(2);
+ if (!pAltCS || pAltCS == m_pArray) {
+ return FALSE;
+ }
+ m_pAltCS = Load(pDoc, pAltCS);
+ m_pFunc = CPDF_Function::Load(pArray->GetElementValue(3));
+ if (!m_pAltCS || !m_pFunc) {
+ return FALSE;
+ }
+ if (m_pFunc->CountOutputs() < m_pAltCS->CountComponents()) {
+ return FALSE;
+ }
+ return TRUE;
+}
+FX_BOOL CPDF_DeviceNCS::GetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT& R,
+ FX_FLOAT& G,
+ FX_FLOAT& B) const {
+ if (!m_pFunc) {
+ return FALSE;
+ }
+ CFX_FixedBufGrow<FX_FLOAT, 16> results(m_pFunc->CountOutputs());
+ int nresults = 0;
+ m_pFunc->Call(pBuf, m_nComponents, results, nresults);
+ if (nresults == 0) {
+ return FALSE;
+ }
+ return m_pAltCS->GetRGB(results, R, G, B);
+}
+void CPDF_DeviceNCS::EnableStdConversion(FX_BOOL bEnabled) {
+ CPDF_ColorSpace::EnableStdConversion(bEnabled);
+ if (m_pAltCS) {
+ m_pAltCS->EnableStdConversion(bEnabled);
+ }
+}
+
+CPDF_ColorSpace* CPDF_ColorSpace::GetStockCS(int family) {
+ return CPDF_ModuleMgr::Get()->GetPageModule()->GetStockCS(family);
+}
+
+CPDF_ColorSpace* _CSFromName(const CFX_ByteString& name) {
+ if (name == "DeviceRGB" || name == "RGB") {
+ return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB);
+ }
+ if (name == "DeviceGray" || name == "G") {
+ return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY);
+ }
+ if (name == "DeviceCMYK" || name == "CMYK") {
+ return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICECMYK);
+ }
+ if (name == "Pattern") {
+ return CPDF_ColorSpace::GetStockCS(PDFCS_PATTERN);
+ }
+ return NULL;
+}
+CPDF_ColorSpace* CPDF_ColorSpace::Load(CPDF_Document* pDoc, CPDF_Object* pObj) {
+ if (!pObj)
+ return nullptr;
+ if (pObj->IsName())
+ return _CSFromName(pObj->GetString());
+
+ if (CPDF_Stream* pStream = pObj->AsStream()) {
+ CPDF_Dictionary* pDict = pStream->GetDict();
+ if (!pDict)
+ return nullptr;
+
+ for (const auto& it : *pDict) {
+ CPDF_ColorSpace* pRet = nullptr;
+ CPDF_Object* pValue = it.second;
+ if (ToName(pValue))
+ pRet = _CSFromName(pValue->GetString());
+ if (pRet)
+ return pRet;
+ }
+ return nullptr;
+ }
+
+ CPDF_Array* pArray = pObj->AsArray();
+ if (!pArray || pArray->GetCount() == 0)
+ return nullptr;
+
+ CPDF_Object* pFamilyObj = pArray->GetElementValue(0);
+ if (!pFamilyObj)
+ return nullptr;
+
+ CFX_ByteString familyname = pFamilyObj->GetString();
+ if (pArray->GetCount() == 1)
+ return _CSFromName(familyname);
+
+ CPDF_ColorSpace* pCS = NULL;
+ FX_DWORD id = familyname.GetID();
+ if (id == FXBSTR_ID('C', 'a', 'l', 'G')) {
+ pCS = new CPDF_CalGray(pDoc);
+ } else if (id == FXBSTR_ID('C', 'a', 'l', 'R')) {
+ pCS = new CPDF_CalRGB(pDoc);
+ } else if (id == FXBSTR_ID('L', 'a', 'b', 0)) {
+ pCS = new CPDF_LabCS(pDoc);
+ } else if (id == FXBSTR_ID('I', 'C', 'C', 'B')) {
+ pCS = new CPDF_ICCBasedCS(pDoc);
+ } else if (id == FXBSTR_ID('I', 'n', 'd', 'e') ||
+ id == FXBSTR_ID('I', 0, 0, 0)) {
+ pCS = new CPDF_IndexedCS(pDoc);
+ } else if (id == FXBSTR_ID('S', 'e', 'p', 'a')) {
+ pCS = new CPDF_SeparationCS(pDoc);
+ } else if (id == FXBSTR_ID('D', 'e', 'v', 'i')) {
+ pCS = new CPDF_DeviceNCS(pDoc);
+ } else if (id == FXBSTR_ID('P', 'a', 't', 't')) {
+ pCS = new CPDF_PatternCS(pDoc);
+ } else {
+ return NULL;
+ }
+ pCS->m_pArray = pArray;
+ if (!pCS->v_Load(pDoc, pArray)) {
+ pCS->ReleaseCS();
+ return NULL;
+ }
+ return pCS;
+}
+void CPDF_ColorSpace::ReleaseCS() {
+ if (this == GetStockCS(PDFCS_DEVICERGB)) {
+ return;
+ }
+ if (this == GetStockCS(PDFCS_DEVICEGRAY)) {
+ return;
+ }
+ if (this == GetStockCS(PDFCS_DEVICECMYK)) {
+ return;
+ }
+ if (this == GetStockCS(PDFCS_PATTERN)) {
+ return;
+ }
+ delete this;
+}
+int CPDF_ColorSpace::GetBufSize() const {
+ if (m_Family == PDFCS_PATTERN) {
+ return sizeof(PatternValue);
+ }
+ return m_nComponents * sizeof(FX_FLOAT);
+}
+FX_FLOAT* CPDF_ColorSpace::CreateBuf() {
+ int size = GetBufSize();
+ uint8_t* pBuf = FX_Alloc(uint8_t, size);
+ return (FX_FLOAT*)pBuf;
+}
+FX_BOOL CPDF_ColorSpace::sRGB() const {
+ if (m_Family == PDFCS_DEVICERGB) {
+ return TRUE;
+ }
+ if (m_Family != PDFCS_ICCBASED) {
+ return FALSE;
+ }
+ CPDF_ICCBasedCS* pCS = (CPDF_ICCBasedCS*)this;
+ return pCS->m_pProfile->m_bsRGB;
+}
+FX_BOOL CPDF_ColorSpace::GetCMYK(FX_FLOAT* pBuf,
+ FX_FLOAT& c,
+ FX_FLOAT& m,
+ FX_FLOAT& y,
+ FX_FLOAT& k) const {
+ if (v_GetCMYK(pBuf, c, m, y, k)) {
+ return TRUE;
+ }
+ FX_FLOAT R, G, B;
+ if (!GetRGB(pBuf, R, G, B)) {
+ return FALSE;
+ }
+ sRGB_to_AdobeCMYK(R, G, B, c, m, y, k);
+ return TRUE;
+}
+FX_BOOL CPDF_ColorSpace::SetCMYK(FX_FLOAT* pBuf,
+ FX_FLOAT c,
+ FX_FLOAT m,
+ FX_FLOAT y,
+ FX_FLOAT k) const {
+ if (v_SetCMYK(pBuf, c, m, y, k)) {
+ return TRUE;
+ }
+ FX_FLOAT R, G, B;
+ AdobeCMYK_to_sRGB(c, m, y, k, R, G, B);
+ return SetRGB(pBuf, R, G, B);
+}
+void CPDF_ColorSpace::GetDefaultColor(FX_FLOAT* buf) const {
+ if (!buf || m_Family == PDFCS_PATTERN) {
+ return;
+ }
+ FX_FLOAT min, max;
+ for (int i = 0; i < m_nComponents; i++) {
+ GetDefaultValue(i, buf[i], min, max);
+ }
+}
+int CPDF_ColorSpace::GetMaxIndex() const {
+ if (m_Family != PDFCS_INDEXED) {
+ return 0;
+ }
+ CPDF_IndexedCS* pCS = (CPDF_IndexedCS*)this;
+ return pCS->m_MaxIndex;
+}
+void CPDF_ColorSpace::TranslateImageLine(uint8_t* dest_buf,
+ const uint8_t* src_buf,
+ int pixels,
+ int image_width,
+ int image_height,
+ FX_BOOL bTransMask) const {
+ CFX_FixedBufGrow<FX_FLOAT, 16> srcbuf(m_nComponents);
+ FX_FLOAT* src = srcbuf;
+ FX_FLOAT R, G, B;
+ for (int i = 0; i < pixels; i++) {
+ for (int j = 0; j < m_nComponents; j++)
+ if (m_Family == PDFCS_INDEXED) {
+ src[j] = (FX_FLOAT)(*src_buf++);
+ } else {
+ src[j] = (FX_FLOAT)(*src_buf++) / 255;
+ }
+ GetRGB(src, R, G, B);
+ *dest_buf++ = (int32_t)(B * 255);
+ *dest_buf++ = (int32_t)(G * 255);
+ *dest_buf++ = (int32_t)(R * 255);
+ }
+}
+void CPDF_ColorSpace::EnableStdConversion(FX_BOOL bEnabled) {
+ if (bEnabled) {
+ m_dwStdConversion++;
+ } else if (m_dwStdConversion) {
+ m_dwStdConversion--;
+ }
+}
+CPDF_Color::CPDF_Color(int family) {
+ m_pCS = CPDF_ColorSpace::GetStockCS(family);
+ int nComps = 3;
+ if (family == PDFCS_DEVICEGRAY) {
+ nComps = 1;
+ } else if (family == PDFCS_DEVICECMYK) {
+ nComps = 4;
+ }
+ m_pBuffer = FX_Alloc(FX_FLOAT, nComps);
+ for (int i = 0; i < nComps; i++) {
+ m_pBuffer[i] = 0;
+ }
+}
+CPDF_Color::~CPDF_Color() {
+ ReleaseBuffer();
+ ReleaseColorSpace();
+}
+void CPDF_Color::ReleaseBuffer() {
+ if (!m_pBuffer) {
+ return;
+ }
+ if (m_pCS->GetFamily() == PDFCS_PATTERN) {
+ PatternValue* pvalue = (PatternValue*)m_pBuffer;
+ CPDF_Pattern* pPattern =
+ pvalue->m_pCountedPattern ? pvalue->m_pCountedPattern->get() : NULL;
+ if (pPattern && pPattern->m_pDocument) {
+ CPDF_DocPageData* pPageData = pPattern->m_pDocument->GetPageData();
+ if (pPageData) {
+ pPageData->ReleasePattern(pPattern->m_pPatternObj);
+ }
+ }
+ }
+ FX_Free(m_pBuffer);
+ m_pBuffer = NULL;
+}
+void CPDF_Color::ReleaseColorSpace() {
+ if (m_pCS && m_pCS->m_pDocument && m_pCS->GetArray()) {
+ m_pCS->m_pDocument->GetPageData()->ReleaseColorSpace(m_pCS->GetArray());
+ m_pCS = NULL;
+ }
+}
+void CPDF_Color::SetColorSpace(CPDF_ColorSpace* pCS) {
+ if (m_pCS == pCS) {
+ if (!m_pBuffer) {
+ m_pBuffer = pCS->CreateBuf();
+ }
+ ReleaseColorSpace();
+ m_pCS = pCS;
+ return;
+ }
+ ReleaseBuffer();
+ ReleaseColorSpace();
+ m_pCS = pCS;
+ if (m_pCS) {
+ m_pBuffer = pCS->CreateBuf();
+ pCS->GetDefaultColor(m_pBuffer);
+ }
+}
+void CPDF_Color::SetValue(FX_FLOAT* comps) {
+ if (!m_pBuffer) {
+ return;
+ }
+ if (m_pCS->GetFamily() != PDFCS_PATTERN) {
+ FXSYS_memcpy(m_pBuffer, comps, m_pCS->CountComponents() * sizeof(FX_FLOAT));
+ }
+}
+void CPDF_Color::SetValue(CPDF_Pattern* pPattern, FX_FLOAT* comps, int ncomps) {
+ if (ncomps > MAX_PATTERN_COLORCOMPS) {
+ return;
+ }
+ if (!m_pCS || m_pCS->GetFamily() != PDFCS_PATTERN) {
+ FX_Free(m_pBuffer);
+ m_pCS = CPDF_ColorSpace::GetStockCS(PDFCS_PATTERN);
+ m_pBuffer = m_pCS->CreateBuf();
+ }
+ CPDF_DocPageData* pDocPageData = NULL;
+ PatternValue* pvalue = (PatternValue*)m_pBuffer;
+ if (pvalue->m_pPattern && pvalue->m_pPattern->m_pDocument) {
+ pDocPageData = pvalue->m_pPattern->m_pDocument->GetPageData();
+ if (pDocPageData) {
+ pDocPageData->ReleasePattern(pvalue->m_pPattern->m_pPatternObj);
+ }
+ }
+ pvalue->m_nComps = ncomps;
+ pvalue->m_pPattern = pPattern;
+ if (ncomps) {
+ FXSYS_memcpy(pvalue->m_Comps, comps, ncomps * sizeof(FX_FLOAT));
+ }
+ pvalue->m_pCountedPattern = NULL;
+ if (pPattern && pPattern->m_pDocument) {
+ if (!pDocPageData) {
+ pDocPageData = pPattern->m_pDocument->GetPageData();
+ }
+ pvalue->m_pCountedPattern =
+ pDocPageData->FindPatternPtr(pPattern->m_pPatternObj);
+ }
+}
+void CPDF_Color::Copy(const CPDF_Color* pSrc) {
+ ReleaseBuffer();
+ ReleaseColorSpace();
+ m_pCS = pSrc->m_pCS;
+ if (m_pCS && m_pCS->m_pDocument) {
+ CPDF_Array* pArray = m_pCS->GetArray();
+ if (pArray) {
+ m_pCS = m_pCS->m_pDocument->GetPageData()->GetCopiedColorSpace(pArray);
+ }
+ }
+ if (!m_pCS) {
+ return;
+ }
+ m_pBuffer = m_pCS->CreateBuf();
+ FXSYS_memcpy(m_pBuffer, pSrc->m_pBuffer, m_pCS->GetBufSize());
+ if (m_pCS->GetFamily() == PDFCS_PATTERN) {
+ PatternValue* pvalue = (PatternValue*)m_pBuffer;
+ if (pvalue->m_pPattern && pvalue->m_pPattern->m_pDocument) {
+ pvalue->m_pPattern =
+ pvalue->m_pPattern->m_pDocument->GetPageData()->GetPattern(
+ pvalue->m_pPattern->m_pPatternObj, FALSE,
+ &pvalue->m_pPattern->m_ParentMatrix);
+ }
+ }
+}
+FX_BOOL CPDF_Color::GetRGB(int& R, int& G, int& B) const {
+ if (!m_pCS || !m_pBuffer) {
+ return FALSE;
+ }
+ FX_FLOAT r = 0.0f, g = 0.0f, b = 0.0f;
+ if (!m_pCS->GetRGB(m_pBuffer, r, g, b)) {
+ return FALSE;
+ }
+ R = (int32_t)(r * 255 + 0.5f);
+ G = (int32_t)(g * 255 + 0.5f);
+ B = (int32_t)(b * 255 + 0.5f);
+ return TRUE;
+}
+CPDF_Pattern* CPDF_Color::GetPattern() const {
+ if (!m_pBuffer || m_pCS->GetFamily() != PDFCS_PATTERN) {
+ return NULL;
+ }
+ PatternValue* pvalue = (PatternValue*)m_pBuffer;
+ return pvalue->m_pPattern;
+}
+CPDF_ColorSpace* CPDF_Color::GetPatternCS() const {
+ if (!m_pBuffer || m_pCS->GetFamily() != PDFCS_PATTERN) {
+ return NULL;
+ }
+ return m_pCS->GetBaseCS();
+}
+FX_FLOAT* CPDF_Color::GetPatternColor() const {
+ if (!m_pBuffer || m_pCS->GetFamily() != PDFCS_PATTERN) {
+ return NULL;
+ }
+ PatternValue* pvalue = (PatternValue*)m_pBuffer;
+ return pvalue->m_nComps ? pvalue->m_Comps : NULL;
+}
+FX_BOOL CPDF_Color::IsEqual(const CPDF_Color& other) const {
+ return m_pCS && m_pCS == other.m_pCS &&
+ FXSYS_memcmp(m_pBuffer, other.m_pBuffer, m_pCS->GetBufSize()) == 0;
+}
diff --git a/core/fpdfapi/fpdf_page/fpdf_page_doc.cpp b/core/fpdfapi/fpdf_page/fpdf_page_doc.cpp
new file mode 100644
index 0000000000..1a31364b1c
--- /dev/null
+++ b/core/fpdfapi/fpdf_page/fpdf_page_doc.cpp
@@ -0,0 +1,610 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_page/pageint.h"
+
+#include "core/fpdfapi/fpdf_font/font_int.h"
+#include "core/include/fdrm/fx_crypt.h"
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_document.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_page.h"
+
+class CPDF_PageModule : public IPDF_PageModule {
+ public:
+ CPDF_PageModule()
+ : m_StockGrayCS(nullptr, PDFCS_DEVICEGRAY),
+ m_StockRGBCS(nullptr, PDFCS_DEVICERGB),
+ m_StockCMYKCS(nullptr, PDFCS_DEVICECMYK),
+ m_StockPatternCS(nullptr) {}
+
+ private:
+ ~CPDF_PageModule() override {}
+
+ CPDF_DocPageData* CreateDocData(CPDF_Document* pDoc) override {
+ return new CPDF_DocPageData(pDoc);
+ }
+
+ void ReleaseDoc(CPDF_Document* pDoc) override;
+ void ClearDoc(CPDF_Document* pDoc) override;
+
+ CPDF_FontGlobals* GetFontGlobals() override { return &m_FontGlobals; }
+
+ void ClearStockFont(CPDF_Document* pDoc) override {
+ m_FontGlobals.Clear(pDoc);
+ }
+
+ CPDF_ColorSpace* GetStockCS(int family) override;
+ void NotifyCJKAvailable() override;
+
+ CPDF_FontGlobals m_FontGlobals;
+ CPDF_DeviceCS m_StockGrayCS;
+ CPDF_DeviceCS m_StockRGBCS;
+ CPDF_DeviceCS m_StockCMYKCS;
+ CPDF_PatternCS m_StockPatternCS;
+};
+
+CPDF_ColorSpace* CPDF_PageModule::GetStockCS(int family) {
+ if (family == PDFCS_DEVICEGRAY) {
+ return &m_StockGrayCS;
+ }
+ if (family == PDFCS_DEVICERGB) {
+ return &m_StockRGBCS;
+ }
+ if (family == PDFCS_DEVICECMYK) {
+ return &m_StockCMYKCS;
+ }
+ if (family == PDFCS_PATTERN) {
+ return &m_StockPatternCS;
+ }
+ return NULL;
+}
+
+void CPDF_ModuleMgr::InitPageModule() {
+ m_pPageModule.reset(new CPDF_PageModule);
+}
+
+void CPDF_PageModule::ReleaseDoc(CPDF_Document* pDoc) {
+ delete pDoc->GetPageData();
+}
+void CPDF_PageModule::ClearDoc(CPDF_Document* pDoc) {
+ pDoc->GetPageData()->Clear(FALSE);
+}
+void CPDF_PageModule::NotifyCJKAvailable() {
+ m_FontGlobals.m_CMapManager.ReloadAll();
+}
+
+CPDF_Font* CPDF_Document::LoadFont(CPDF_Dictionary* pFontDict) {
+ ASSERT(pFontDict);
+ return GetValidatePageData()->GetFont(pFontDict, FALSE);
+}
+
+CPDF_StreamAcc* CPDF_Document::LoadFontFile(CPDF_Stream* pStream) {
+ return GetValidatePageData()->GetFontFileStreamAcc(pStream);
+}
+
+CPDF_ColorSpace* _CSFromName(const CFX_ByteString& name);
+CPDF_ColorSpace* CPDF_Document::LoadColorSpace(CPDF_Object* pCSObj,
+ CPDF_Dictionary* pResources) {
+ return GetValidatePageData()->GetColorSpace(pCSObj, pResources);
+}
+CPDF_Pattern* CPDF_Document::LoadPattern(CPDF_Object* pPatternObj,
+ FX_BOOL bShading,
+ const CFX_Matrix* matrix) {
+ return GetValidatePageData()->GetPattern(pPatternObj, bShading, matrix);
+}
+CPDF_IccProfile* CPDF_Document::LoadIccProfile(CPDF_Stream* pStream) {
+ return GetValidatePageData()->GetIccProfile(pStream);
+}
+CPDF_Image* CPDF_Document::LoadImageF(CPDF_Object* pObj) {
+ if (!pObj) {
+ return NULL;
+ }
+ FXSYS_assert(pObj->GetObjNum());
+ return GetValidatePageData()->GetImage(pObj);
+}
+void CPDF_Document::RemoveColorSpaceFromPageData(CPDF_Object* pCSObj) {
+ if (!pCSObj) {
+ return;
+ }
+ GetPageData()->ReleaseColorSpace(pCSObj);
+}
+CPDF_DocPageData::CPDF_DocPageData(CPDF_Document* pPDFDoc)
+ : m_pPDFDoc(pPDFDoc), m_bForceClear(FALSE) {}
+
+CPDF_DocPageData::~CPDF_DocPageData() {
+ Clear(FALSE);
+ Clear(TRUE);
+
+ for (auto& it : m_PatternMap)
+ delete it.second;
+ m_PatternMap.clear();
+
+ for (auto& it : m_FontMap)
+ delete it.second;
+ m_FontMap.clear();
+
+ for (auto& it : m_ColorSpaceMap)
+ delete it.second;
+ m_ColorSpaceMap.clear();
+}
+
+void CPDF_DocPageData::Clear(FX_BOOL bForceRelease) {
+ m_bForceClear = bForceRelease;
+
+ for (auto& it : m_PatternMap) {
+ CPDF_CountedPattern* ptData = it.second;
+ if (!ptData->get())
+ continue;
+
+ if (bForceRelease || ptData->use_count() < 2) {
+ ptData->get()->SetForceClear(bForceRelease);
+ ptData->clear();
+ }
+ }
+
+ for (auto& it : m_FontMap) {
+ CPDF_CountedFont* fontData = it.second;
+ if (!fontData->get())
+ continue;
+
+ if (bForceRelease || fontData->use_count() < 2) {
+ fontData->clear();
+ }
+ }
+
+ for (auto& it : m_ColorSpaceMap) {
+ CPDF_CountedColorSpace* csData = it.second;
+ if (!csData->get())
+ continue;
+
+ if (bForceRelease || csData->use_count() < 2) {
+ csData->get()->ReleaseCS();
+ csData->reset(nullptr);
+ }
+ }
+
+ for (auto it = m_IccProfileMap.begin(); it != m_IccProfileMap.end();) {
+ auto curr_it = it++;
+ CPDF_CountedIccProfile* ipData = curr_it->second;
+ if (!ipData->get())
+ continue;
+
+ if (bForceRelease || ipData->use_count() < 2) {
+ for (auto hash_it = m_HashProfileMap.begin();
+ hash_it != m_HashProfileMap.end(); ++hash_it) {
+ if (curr_it->first == hash_it->second) {
+ m_HashProfileMap.erase(hash_it);
+ break;
+ }
+ }
+ delete ipData->get();
+ delete ipData;
+ m_IccProfileMap.erase(curr_it);
+ }
+ }
+
+ for (auto it = m_FontFileMap.begin(); it != m_FontFileMap.end();) {
+ auto curr_it = it++;
+ CPDF_CountedStreamAcc* ftData = curr_it->second;
+ if (!ftData->get())
+ continue;
+
+ if (bForceRelease || ftData->use_count() < 2) {
+ delete ftData->get();
+ delete ftData;
+ m_FontFileMap.erase(curr_it);
+ }
+ }
+
+ for (auto it = m_ImageMap.begin(); it != m_ImageMap.end();) {
+ auto curr_it = it++;
+ CPDF_CountedImage* imageData = curr_it->second;
+ if (!imageData->get())
+ continue;
+
+ if (bForceRelease || imageData->use_count() < 2) {
+ delete imageData->get();
+ delete imageData;
+ m_ImageMap.erase(curr_it);
+ }
+ }
+}
+
+CPDF_Font* CPDF_DocPageData::GetFont(CPDF_Dictionary* pFontDict,
+ FX_BOOL findOnly) {
+ if (!pFontDict) {
+ return NULL;
+ }
+ if (findOnly) {
+ auto it = m_FontMap.find(pFontDict);
+ if (it != m_FontMap.end() && it->second->get()) {
+ return it->second->AddRef();
+ }
+ return nullptr;
+ }
+
+ CPDF_CountedFont* fontData = nullptr;
+ auto it = m_FontMap.find(pFontDict);
+ if (it != m_FontMap.end()) {
+ fontData = it->second;
+ if (fontData->get()) {
+ return fontData->AddRef();
+ }
+ }
+
+ CPDF_Font* pFont = CPDF_Font::CreateFontF(m_pPDFDoc, pFontDict);
+ if (!pFont) {
+ return nullptr;
+ }
+ if (!fontData) {
+ fontData = new CPDF_CountedFont(pFont);
+ m_FontMap[pFontDict] = fontData;
+ } else {
+ fontData->reset(pFont);
+ }
+ return fontData->AddRef();
+}
+
+CPDF_Font* CPDF_DocPageData::GetStandardFont(const CFX_ByteStringC& fontName,
+ CPDF_FontEncoding* pEncoding) {
+ if (fontName.IsEmpty())
+ return nullptr;
+
+ for (auto& it : m_FontMap) {
+ CPDF_CountedFont* fontData = it.second;
+ CPDF_Font* pFont = fontData->get();
+ if (!pFont)
+ continue;
+ if (pFont->GetBaseFont() != fontName)
+ continue;
+ if (pFont->IsEmbedded())
+ continue;
+ if (!pFont->IsType1Font())
+ continue;
+ if (pFont->GetFontDict()->KeyExist("Widths"))
+ continue;
+
+ CPDF_Type1Font* pT1Font = pFont->AsType1Font();
+ if (pEncoding && !pT1Font->GetEncoding()->IsIdentical(pEncoding))
+ continue;
+
+ return fontData->AddRef();
+ }
+
+ CPDF_Dictionary* pDict = new CPDF_Dictionary;
+ pDict->SetAtName("Type", "Font");
+ pDict->SetAtName("Subtype", "Type1");
+ pDict->SetAtName("BaseFont", fontName);
+ if (pEncoding) {
+ pDict->SetAt("Encoding", pEncoding->Realize());
+ }
+ m_pPDFDoc->AddIndirectObject(pDict);
+ CPDF_Font* pFont = CPDF_Font::CreateFontF(m_pPDFDoc, pDict);
+ if (!pFont) {
+ return nullptr;
+ }
+ CPDF_CountedFont* fontData = new CPDF_CountedFont(pFont);
+ m_FontMap[pDict] = fontData;
+ return fontData->AddRef();
+}
+
+void CPDF_DocPageData::ReleaseFont(CPDF_Dictionary* pFontDict) {
+ if (!pFontDict)
+ return;
+
+ auto it = m_FontMap.find(pFontDict);
+ if (it == m_FontMap.end())
+ return;
+
+ CPDF_CountedFont* fontData = it->second;
+ if (fontData->get()) {
+ fontData->RemoveRef();
+ if (fontData->use_count() == 0) {
+ fontData->clear();
+ }
+ }
+}
+
+CPDF_ColorSpace* CPDF_DocPageData::GetColorSpace(
+ CPDF_Object* pCSObj,
+ const CPDF_Dictionary* pResources) {
+ if (!pCSObj)
+ return nullptr;
+
+ if (pCSObj->IsName()) {
+ CFX_ByteString name = pCSObj->GetConstString();
+ CPDF_ColorSpace* pCS = _CSFromName(name);
+ if (!pCS && pResources) {
+ CPDF_Dictionary* pList = pResources->GetDictBy("ColorSpace");
+ if (pList) {
+ pCSObj = pList->GetElementValue(name);
+ return GetColorSpace(pCSObj, nullptr);
+ }
+ }
+ if (!pCS || !pResources)
+ return pCS;
+
+ CPDF_Dictionary* pColorSpaces = pResources->GetDictBy("ColorSpace");
+ if (!pColorSpaces)
+ return pCS;
+
+ CPDF_Object* pDefaultCS = nullptr;
+ switch (pCS->GetFamily()) {
+ case PDFCS_DEVICERGB:
+ pDefaultCS = pColorSpaces->GetElementValue("DefaultRGB");
+ break;
+ case PDFCS_DEVICEGRAY:
+ pDefaultCS = pColorSpaces->GetElementValue("DefaultGray");
+ break;
+ case PDFCS_DEVICECMYK:
+ pDefaultCS = pColorSpaces->GetElementValue("DefaultCMYK");
+ break;
+ }
+ return pDefaultCS ? GetColorSpace(pDefaultCS, nullptr) : pCS;
+ }
+
+ CPDF_Array* pArray = pCSObj->AsArray();
+ if (!pArray || pArray->GetCount() == 0)
+ return nullptr;
+ if (pArray->GetCount() == 1)
+ return GetColorSpace(pArray->GetElementValue(0), pResources);
+
+ CPDF_CountedColorSpace* csData = nullptr;
+ auto it = m_ColorSpaceMap.find(pCSObj);
+ if (it != m_ColorSpaceMap.end()) {
+ csData = it->second;
+ if (csData->get()) {
+ return csData->AddRef();
+ }
+ }
+
+ CPDF_ColorSpace* pCS = CPDF_ColorSpace::Load(m_pPDFDoc, pArray);
+ if (!pCS)
+ return nullptr;
+
+ if (!csData) {
+ csData = new CPDF_CountedColorSpace(pCS);
+ m_ColorSpaceMap[pCSObj] = csData;
+ } else {
+ csData->reset(pCS);
+ }
+ return csData->AddRef();
+}
+
+CPDF_ColorSpace* CPDF_DocPageData::GetCopiedColorSpace(CPDF_Object* pCSObj) {
+ if (!pCSObj)
+ return nullptr;
+
+ auto it = m_ColorSpaceMap.find(pCSObj);
+ if (it != m_ColorSpaceMap.end())
+ return it->second->AddRef();
+
+ return nullptr;
+}
+
+void CPDF_DocPageData::ReleaseColorSpace(CPDF_Object* pColorSpace) {
+ if (!pColorSpace)
+ return;
+
+ auto it = m_ColorSpaceMap.find(pColorSpace);
+ if (it == m_ColorSpaceMap.end())
+ return;
+
+ CPDF_CountedColorSpace* csData = it->second;
+ if (csData->get()) {
+ csData->RemoveRef();
+ if (csData->use_count() == 0) {
+ csData->get()->ReleaseCS();
+ csData->reset(nullptr);
+ }
+ }
+}
+
+CPDF_Pattern* CPDF_DocPageData::GetPattern(CPDF_Object* pPatternObj,
+ FX_BOOL bShading,
+ const CFX_Matrix* matrix) {
+ if (!pPatternObj)
+ return nullptr;
+
+ CPDF_CountedPattern* ptData = nullptr;
+ auto it = m_PatternMap.find(pPatternObj);
+ if (it != m_PatternMap.end()) {
+ ptData = it->second;
+ if (ptData->get()) {
+ return ptData->AddRef();
+ }
+ }
+ CPDF_Pattern* pPattern = nullptr;
+ if (bShading) {
+ pPattern =
+ new CPDF_ShadingPattern(m_pPDFDoc, pPatternObj, bShading, matrix);
+ } else {
+ CPDF_Dictionary* pDict = pPatternObj ? pPatternObj->GetDict() : nullptr;
+ if (pDict) {
+ int type = pDict->GetIntegerBy("PatternType");
+ if (type == 1) {
+ pPattern = new CPDF_TilingPattern(m_pPDFDoc, pPatternObj, matrix);
+ } else if (type == 2) {
+ pPattern =
+ new CPDF_ShadingPattern(m_pPDFDoc, pPatternObj, FALSE, matrix);
+ }
+ }
+ }
+ if (!pPattern)
+ return nullptr;
+
+ if (!ptData) {
+ ptData = new CPDF_CountedPattern(pPattern);
+ m_PatternMap[pPatternObj] = ptData;
+ } else {
+ ptData->reset(pPattern);
+ }
+ return ptData->AddRef();
+}
+
+void CPDF_DocPageData::ReleasePattern(CPDF_Object* pPatternObj) {
+ if (!pPatternObj)
+ return;
+
+ auto it = m_PatternMap.find(pPatternObj);
+ if (it == m_PatternMap.end())
+ return;
+
+ CPDF_CountedPattern* ptData = it->second;
+ if (ptData->get()) {
+ ptData->RemoveRef();
+ if (ptData->use_count() == 0) {
+ ptData->clear();
+ }
+ }
+}
+
+CPDF_Image* CPDF_DocPageData::GetImage(CPDF_Object* pImageStream) {
+ if (!pImageStream)
+ return nullptr;
+
+ const FX_DWORD dwImageObjNum = pImageStream->GetObjNum();
+ auto it = m_ImageMap.find(dwImageObjNum);
+ if (it != m_ImageMap.end()) {
+ return it->second->AddRef();
+ }
+
+ CPDF_Image* pImage = new CPDF_Image(m_pPDFDoc);
+ pImage->LoadImageF(pImageStream->AsStream(), FALSE);
+
+ CPDF_CountedImage* imageData = new CPDF_CountedImage(pImage);
+ m_ImageMap[dwImageObjNum] = imageData;
+ return imageData->AddRef();
+}
+
+void CPDF_DocPageData::ReleaseImage(CPDF_Object* pImageStream) {
+ if (!pImageStream || !pImageStream->GetObjNum())
+ return;
+
+ auto it = m_ImageMap.find(pImageStream->GetObjNum());
+ if (it == m_ImageMap.end())
+ return;
+
+ CPDF_CountedImage* image = it->second;
+ if (!image)
+ return;
+
+ image->RemoveRef();
+ if (image->use_count() == 0) {
+ delete image->get();
+ delete image;
+ m_ImageMap.erase(it);
+ }
+}
+
+CPDF_IccProfile* CPDF_DocPageData::GetIccProfile(
+ CPDF_Stream* pIccProfileStream) {
+ if (!pIccProfileStream)
+ return NULL;
+
+ auto it = m_IccProfileMap.find(pIccProfileStream);
+ if (it != m_IccProfileMap.end()) {
+ return it->second->AddRef();
+ }
+
+ CPDF_StreamAcc stream;
+ stream.LoadAllData(pIccProfileStream, FALSE);
+ uint8_t digest[20];
+ CRYPT_SHA1Generate(stream.GetData(), stream.GetSize(), digest);
+ auto hash_it = m_HashProfileMap.find(CFX_ByteStringC(digest, 20));
+ if (hash_it != m_HashProfileMap.end()) {
+ auto it_copied_stream = m_IccProfileMap.find(hash_it->second);
+ return it_copied_stream->second->AddRef();
+ }
+ CPDF_IccProfile* pProfile =
+ new CPDF_IccProfile(stream.GetData(), stream.GetSize());
+ CPDF_CountedIccProfile* ipData = new CPDF_CountedIccProfile(pProfile);
+ m_IccProfileMap[pIccProfileStream] = ipData;
+ m_HashProfileMap[CFX_ByteStringC(digest, 20)] = pIccProfileStream;
+ return ipData->AddRef();
+}
+
+void CPDF_DocPageData::ReleaseIccProfile(CPDF_IccProfile* pIccProfile) {
+ ASSERT(pIccProfile);
+
+ for (auto it = m_IccProfileMap.begin(); it != m_IccProfileMap.end(); ++it) {
+ CPDF_CountedIccProfile* profile = it->second;
+ if (profile->get() != pIccProfile)
+ continue;
+
+ profile->RemoveRef();
+ if (profile->use_count() == 0) {
+ delete profile->get();
+ delete profile;
+ m_IccProfileMap.erase(it);
+ return;
+ }
+ }
+}
+
+CPDF_StreamAcc* CPDF_DocPageData::GetFontFileStreamAcc(
+ CPDF_Stream* pFontStream) {
+ ASSERT(pFontStream);
+
+ auto it = m_FontFileMap.find(pFontStream);
+ if (it != m_FontFileMap.end())
+ return it->second->AddRef();
+
+ CPDF_Dictionary* pFontDict = pFontStream->GetDict();
+ int32_t org_size = pFontDict->GetIntegerBy("Length1") +
+ pFontDict->GetIntegerBy("Length2") +
+ pFontDict->GetIntegerBy("Length3");
+ if (org_size < 0)
+ org_size = 0;
+
+ CPDF_StreamAcc* pFontFile = new CPDF_StreamAcc;
+ pFontFile->LoadAllData(pFontStream, FALSE, org_size);
+
+ CPDF_CountedStreamAcc* ftData = new CPDF_CountedStreamAcc(pFontFile);
+ m_FontFileMap[pFontStream] = ftData;
+ return ftData->AddRef();
+}
+
+void CPDF_DocPageData::ReleaseFontFileStreamAcc(CPDF_Stream* pFontStream,
+ FX_BOOL bForce) {
+ if (!pFontStream)
+ return;
+
+ auto it = m_FontFileMap.find(pFontStream);
+ if (it == m_FontFileMap.end())
+ return;
+
+ CPDF_CountedStreamAcc* findData = it->second;
+ if (!findData)
+ return;
+
+ findData->RemoveRef();
+ if (findData->use_count() == 0 || bForce) {
+ delete findData->get();
+ delete findData;
+ m_FontFileMap.erase(it);
+ }
+}
+
+CPDF_CountedColorSpace* CPDF_DocPageData::FindColorSpacePtr(
+ CPDF_Object* pCSObj) const {
+ if (!pCSObj)
+ return nullptr;
+
+ auto it = m_ColorSpaceMap.find(pCSObj);
+ return it != m_ColorSpaceMap.end() ? it->second : nullptr;
+}
+
+CPDF_CountedPattern* CPDF_DocPageData::FindPatternPtr(
+ CPDF_Object* pPatternObj) const {
+ if (!pPatternObj)
+ return nullptr;
+
+ auto it = m_PatternMap.find(pPatternObj);
+ return it != m_PatternMap.end() ? it->second : nullptr;
+}
diff --git a/core/fpdfapi/fpdf_page/fpdf_page_func.cpp b/core/fpdfapi/fpdf_page/fpdf_page_func.cpp
new file mode 100644
index 0000000000..fd37e1d3e4
--- /dev/null
+++ b/core/fpdfapi/fpdf_page/fpdf_page_func.cpp
@@ -0,0 +1,966 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_page/pageint.h"
+
+#include <limits.h>
+
+#include <memory>
+#include <utility>
+#include <vector>
+
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_simple_parser.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_page.h"
+#include "core/include/fxcrt/fx_safe_types.h"
+#include "third_party/base/numerics/safe_conversions_impl.h"
+
+namespace {
+
+enum PDF_PSOP {
+ PSOP_ADD,
+ PSOP_SUB,
+ PSOP_MUL,
+ PSOP_DIV,
+ PSOP_IDIV,
+ PSOP_MOD,
+ PSOP_NEG,
+ PSOP_ABS,
+ PSOP_CEILING,
+ PSOP_FLOOR,
+ PSOP_ROUND,
+ PSOP_TRUNCATE,
+ PSOP_SQRT,
+ PSOP_SIN,
+ PSOP_COS,
+ PSOP_ATAN,
+ PSOP_EXP,
+ PSOP_LN,
+ PSOP_LOG,
+ PSOP_CVI,
+ PSOP_CVR,
+ PSOP_EQ,
+ PSOP_NE,
+ PSOP_GT,
+ PSOP_GE,
+ PSOP_LT,
+ PSOP_LE,
+ PSOP_AND,
+ PSOP_OR,
+ PSOP_XOR,
+ PSOP_NOT,
+ PSOP_BITSHIFT,
+ PSOP_TRUE,
+ PSOP_FALSE,
+ PSOP_IF,
+ PSOP_IFELSE,
+ PSOP_POP,
+ PSOP_EXCH,
+ PSOP_DUP,
+ PSOP_COPY,
+ PSOP_INDEX,
+ PSOP_ROLL,
+ PSOP_PROC,
+ PSOP_CONST
+};
+
+class CPDF_PSEngine;
+class CPDF_PSProc;
+
+class CPDF_PSOP {
+ public:
+ explicit CPDF_PSOP(PDF_PSOP op) : m_op(op), m_value(0) {
+ ASSERT(m_op != PSOP_CONST);
+ ASSERT(m_op != PSOP_PROC);
+ }
+ explicit CPDF_PSOP(FX_FLOAT value) : m_op(PSOP_CONST), m_value(value) {}
+ explicit CPDF_PSOP(std::unique_ptr<CPDF_PSProc> proc)
+ : m_op(PSOP_PROC), m_value(0), m_proc(std::move(proc)) {}
+
+ FX_FLOAT GetFloatValue() const {
+ if (m_op == PSOP_CONST)
+ return m_value;
+
+ ASSERT(false);
+ return 0;
+ }
+ CPDF_PSProc* GetProc() const {
+ if (m_op == PSOP_PROC)
+ return m_proc.get();
+ ASSERT(false);
+ return nullptr;
+ }
+
+ PDF_PSOP GetOp() const { return m_op; }
+
+ private:
+ const PDF_PSOP m_op;
+ const FX_FLOAT m_value;
+ std::unique_ptr<CPDF_PSProc> m_proc;
+};
+
+class CPDF_PSProc {
+ public:
+ CPDF_PSProc() {}
+ ~CPDF_PSProc() {}
+
+ FX_BOOL Parse(CPDF_SimpleParser* parser);
+ FX_BOOL Execute(CPDF_PSEngine* pEngine);
+
+ private:
+ std::vector<std::unique_ptr<CPDF_PSOP>> m_Operators;
+};
+
+const size_t PSENGINE_STACKSIZE = 100;
+
+class CPDF_PSEngine {
+ public:
+ CPDF_PSEngine();
+ ~CPDF_PSEngine();
+
+ FX_BOOL Parse(const FX_CHAR* str, int size);
+ FX_BOOL Execute() { return m_MainProc.Execute(this); }
+ FX_BOOL DoOperator(PDF_PSOP op);
+ void Reset() { m_StackCount = 0; }
+ void Push(FX_FLOAT value);
+ void Push(int value) { Push((FX_FLOAT)value); }
+ FX_FLOAT Pop();
+ int GetStackSize() const { return m_StackCount; }
+
+ private:
+ FX_FLOAT m_Stack[PSENGINE_STACKSIZE];
+ int m_StackCount;
+ CPDF_PSProc m_MainProc;
+};
+
+FX_BOOL CPDF_PSProc::Execute(CPDF_PSEngine* pEngine) {
+ for (size_t i = 0; i < m_Operators.size(); ++i) {
+ const PDF_PSOP op = m_Operators[i]->GetOp();
+ if (op == PSOP_PROC)
+ continue;
+
+ if (op == PSOP_CONST) {
+ pEngine->Push(m_Operators[i]->GetFloatValue());
+ continue;
+ }
+
+ if (op == PSOP_IF) {
+ if (i == 0 || m_Operators[i - 1]->GetOp() != PSOP_PROC)
+ return FALSE;
+
+ if (static_cast<int>(pEngine->Pop()))
+ m_Operators[i - 1]->GetProc()->Execute(pEngine);
+ } else if (op == PSOP_IFELSE) {
+ if (i < 2 || m_Operators[i - 1]->GetOp() != PSOP_PROC ||
+ m_Operators[i - 2]->GetOp() != PSOP_PROC) {
+ return FALSE;
+ }
+ size_t offset = static_cast<int>(pEngine->Pop()) ? 2 : 1;
+ m_Operators[i - offset]->GetProc()->Execute(pEngine);
+ } else {
+ pEngine->DoOperator(op);
+ }
+ }
+ return TRUE;
+}
+
+CPDF_PSEngine::CPDF_PSEngine() {
+ m_StackCount = 0;
+}
+CPDF_PSEngine::~CPDF_PSEngine() {}
+void CPDF_PSEngine::Push(FX_FLOAT v) {
+ if (m_StackCount == PSENGINE_STACKSIZE) {
+ return;
+ }
+ m_Stack[m_StackCount++] = v;
+}
+FX_FLOAT CPDF_PSEngine::Pop() {
+ if (m_StackCount == 0) {
+ return 0;
+ }
+ return m_Stack[--m_StackCount];
+}
+const struct PDF_PSOpName {
+ const FX_CHAR* name;
+ PDF_PSOP op;
+} PDF_PSOpNames[] = {{"add", PSOP_ADD}, {"sub", PSOP_SUB},
+ {"mul", PSOP_MUL}, {"div", PSOP_DIV},
+ {"idiv", PSOP_IDIV}, {"mod", PSOP_MOD},
+ {"neg", PSOP_NEG}, {"abs", PSOP_ABS},
+ {"ceiling", PSOP_CEILING}, {"floor", PSOP_FLOOR},
+ {"round", PSOP_ROUND}, {"truncate", PSOP_TRUNCATE},
+ {"sqrt", PSOP_SQRT}, {"sin", PSOP_SIN},
+ {"cos", PSOP_COS}, {"atan", PSOP_ATAN},
+ {"exp", PSOP_EXP}, {"ln", PSOP_LN},
+ {"log", PSOP_LOG}, {"cvi", PSOP_CVI},
+ {"cvr", PSOP_CVR}, {"eq", PSOP_EQ},
+ {"ne", PSOP_NE}, {"gt", PSOP_GT},
+ {"ge", PSOP_GE}, {"lt", PSOP_LT},
+ {"le", PSOP_LE}, {"and", PSOP_AND},
+ {"or", PSOP_OR}, {"xor", PSOP_XOR},
+ {"not", PSOP_NOT}, {"bitshift", PSOP_BITSHIFT},
+ {"true", PSOP_TRUE}, {"false", PSOP_FALSE},
+ {"if", PSOP_IF}, {"ifelse", PSOP_IFELSE},
+ {"pop", PSOP_POP}, {"exch", PSOP_EXCH},
+ {"dup", PSOP_DUP}, {"copy", PSOP_COPY},
+ {"index", PSOP_INDEX}, {"roll", PSOP_ROLL}};
+
+FX_BOOL CPDF_PSEngine::Parse(const FX_CHAR* str, int size) {
+ CPDF_SimpleParser parser((uint8_t*)str, size);
+ CFX_ByteStringC word = parser.GetWord();
+ if (word != "{") {
+ return FALSE;
+ }
+ return m_MainProc.Parse(&parser);
+}
+FX_BOOL CPDF_PSProc::Parse(CPDF_SimpleParser* parser) {
+ while (1) {
+ CFX_ByteStringC word = parser->GetWord();
+ if (word.IsEmpty()) {
+ return FALSE;
+ }
+ if (word == "}") {
+ return TRUE;
+ }
+ if (word == "{") {
+ std::unique_ptr<CPDF_PSProc> proc(new CPDF_PSProc);
+ std::unique_ptr<CPDF_PSOP> op(new CPDF_PSOP(std::move(proc)));
+ m_Operators.push_back(std::move(op));
+ if (!m_Operators.back()->GetProc()->Parse(parser)) {
+ return FALSE;
+ }
+ } else {
+ bool found = false;
+ for (const PDF_PSOpName& op_name : PDF_PSOpNames) {
+ if (word == CFX_ByteStringC(op_name.name)) {
+ std::unique_ptr<CPDF_PSOP> op(new CPDF_PSOP(op_name.op));
+ m_Operators.push_back(std::move(op));
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ std::unique_ptr<CPDF_PSOP> op(new CPDF_PSOP(FX_atof(word)));
+ m_Operators.push_back(std::move(op));
+ }
+ }
+ }
+}
+
+FX_BOOL CPDF_PSEngine::DoOperator(PDF_PSOP op) {
+ int i1, i2;
+ FX_FLOAT d1, d2;
+ switch (op) {
+ case PSOP_ADD:
+ d1 = Pop();
+ d2 = Pop();
+ Push(d1 + d2);
+ break;
+ case PSOP_SUB:
+ d2 = Pop();
+ d1 = Pop();
+ Push(d1 - d2);
+ break;
+ case PSOP_MUL:
+ d1 = Pop();
+ d2 = Pop();
+ Push(d1 * d2);
+ break;
+ case PSOP_DIV:
+ d2 = Pop();
+ d1 = Pop();
+ Push(d1 / d2);
+ break;
+ case PSOP_IDIV:
+ i2 = (int)Pop();
+ i1 = (int)Pop();
+ Push(i1 / i2);
+ break;
+ case PSOP_MOD:
+ i2 = (int)Pop();
+ i1 = (int)Pop();
+ Push(i1 % i2);
+ break;
+ case PSOP_NEG:
+ d1 = Pop();
+ Push(-d1);
+ break;
+ case PSOP_ABS:
+ d1 = Pop();
+ Push((FX_FLOAT)FXSYS_fabs(d1));
+ break;
+ case PSOP_CEILING:
+ d1 = Pop();
+ Push((FX_FLOAT)FXSYS_ceil(d1));
+ break;
+ case PSOP_FLOOR:
+ d1 = Pop();
+ Push((FX_FLOAT)FXSYS_floor(d1));
+ break;
+ case PSOP_ROUND:
+ d1 = Pop();
+ Push(FXSYS_round(d1));
+ break;
+ case PSOP_TRUNCATE:
+ i1 = (int)Pop();
+ Push(i1);
+ break;
+ case PSOP_SQRT:
+ d1 = Pop();
+ Push((FX_FLOAT)FXSYS_sqrt(d1));
+ break;
+ case PSOP_SIN:
+ d1 = Pop();
+ Push((FX_FLOAT)FXSYS_sin(d1 * FX_PI / 180.0f));
+ break;
+ case PSOP_COS:
+ d1 = Pop();
+ Push((FX_FLOAT)FXSYS_cos(d1 * FX_PI / 180.0f));
+ break;
+ case PSOP_ATAN:
+ d2 = Pop();
+ d1 = Pop();
+ d1 = (FX_FLOAT)(FXSYS_atan2(d1, d2) * 180.0 / FX_PI);
+ if (d1 < 0) {
+ d1 += 360;
+ }
+ Push(d1);
+ break;
+ case PSOP_EXP:
+ d2 = Pop();
+ d1 = Pop();
+ Push((FX_FLOAT)FXSYS_pow(d1, d2));
+ break;
+ case PSOP_LN:
+ d1 = Pop();
+ Push((FX_FLOAT)FXSYS_log(d1));
+ break;
+ case PSOP_LOG:
+ d1 = Pop();
+ Push((FX_FLOAT)FXSYS_log10(d1));
+ break;
+ case PSOP_CVI:
+ i1 = (int)Pop();
+ Push(i1);
+ break;
+ case PSOP_CVR:
+ break;
+ case PSOP_EQ:
+ d2 = Pop();
+ d1 = Pop();
+ Push((int)(d1 == d2));
+ break;
+ case PSOP_NE:
+ d2 = Pop();
+ d1 = Pop();
+ Push((int)(d1 != d2));
+ break;
+ case PSOP_GT:
+ d2 = Pop();
+ d1 = Pop();
+ Push((int)(d1 > d2));
+ break;
+ case PSOP_GE:
+ d2 = Pop();
+ d1 = Pop();
+ Push((int)(d1 >= d2));
+ break;
+ case PSOP_LT:
+ d2 = Pop();
+ d1 = Pop();
+ Push((int)(d1 < d2));
+ break;
+ case PSOP_LE:
+ d2 = Pop();
+ d1 = Pop();
+ Push((int)(d1 <= d2));
+ break;
+ case PSOP_AND:
+ i1 = (int)Pop();
+ i2 = (int)Pop();
+ Push(i1 & i2);
+ break;
+ case PSOP_OR:
+ i1 = (int)Pop();
+ i2 = (int)Pop();
+ Push(i1 | i2);
+ break;
+ case PSOP_XOR:
+ i1 = (int)Pop();
+ i2 = (int)Pop();
+ Push(i1 ^ i2);
+ break;
+ case PSOP_NOT:
+ i1 = (int)Pop();
+ Push((int)!i1);
+ break;
+ case PSOP_BITSHIFT: {
+ int shift = (int)Pop();
+ int i = (int)Pop();
+ if (shift > 0) {
+ Push(i << shift);
+ } else {
+ Push(i >> -shift);
+ }
+ break;
+ }
+ case PSOP_TRUE:
+ Push(1);
+ break;
+ case PSOP_FALSE:
+ Push(0);
+ break;
+ case PSOP_POP:
+ Pop();
+ break;
+ case PSOP_EXCH:
+ d2 = Pop();
+ d1 = Pop();
+ Push(d2);
+ Push(d1);
+ break;
+ case PSOP_DUP:
+ d1 = Pop();
+ Push(d1);
+ Push(d1);
+ break;
+ case PSOP_COPY: {
+ int n = (int)Pop();
+ if (n < 0 || n > PSENGINE_STACKSIZE ||
+ m_StackCount + n > PSENGINE_STACKSIZE || n > m_StackCount) {
+ break;
+ }
+ for (int i = 0; i < n; i++) {
+ m_Stack[m_StackCount + i] = m_Stack[m_StackCount + i - n];
+ }
+ m_StackCount += n;
+ break;
+ }
+ case PSOP_INDEX: {
+ int n = (int)Pop();
+ if (n < 0 || n >= m_StackCount) {
+ break;
+ }
+ Push(m_Stack[m_StackCount - n - 1]);
+ break;
+ }
+ case PSOP_ROLL: {
+ int j = (int)Pop();
+ int n = (int)Pop();
+ if (m_StackCount == 0) {
+ break;
+ }
+ if (n < 0 || n > m_StackCount) {
+ break;
+ }
+ if (j < 0) {
+ for (int i = 0; i < -j; i++) {
+ FX_FLOAT first = m_Stack[m_StackCount - n];
+ for (int ii = 0; ii < n - 1; ii++) {
+ m_Stack[m_StackCount - n + ii] = m_Stack[m_StackCount - n + ii + 1];
+ }
+ m_Stack[m_StackCount - 1] = first;
+ }
+ } else {
+ for (int i = 0; i < j; i++) {
+ FX_FLOAT last = m_Stack[m_StackCount - 1];
+ int ii;
+ for (ii = 0; ii < n - 1; ii++) {
+ m_Stack[m_StackCount - ii - 1] = m_Stack[m_StackCount - ii - 2];
+ }
+ m_Stack[m_StackCount - ii - 1] = last;
+ }
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ return TRUE;
+}
+static FX_FLOAT PDF_Interpolate(FX_FLOAT x,
+ FX_FLOAT xmin,
+ FX_FLOAT xmax,
+ FX_FLOAT ymin,
+ FX_FLOAT ymax) {
+ return ((x - xmin) * (ymax - ymin) / (xmax - xmin)) + ymin;
+}
+static FX_DWORD _GetBits32(const uint8_t* pData, int bitpos, int nbits) {
+ int result = 0;
+ for (int i = 0; i < nbits; i++)
+ if (pData[(bitpos + i) / 8] & (1 << (7 - (bitpos + i) % 8))) {
+ result |= 1 << (nbits - i - 1);
+ }
+ return result;
+}
+typedef struct {
+ FX_FLOAT encode_max, encode_min;
+ int sizes;
+} SampleEncodeInfo;
+typedef struct { FX_FLOAT decode_max, decode_min; } SampleDecodeInfo;
+
+class CPDF_SampledFunc : public CPDF_Function {
+ public:
+ CPDF_SampledFunc();
+ ~CPDF_SampledFunc() override;
+
+ // CPDF_Function
+ FX_BOOL v_Init(CPDF_Object* pObj) override;
+ FX_BOOL v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const override;
+
+ SampleEncodeInfo* m_pEncodeInfo;
+ SampleDecodeInfo* m_pDecodeInfo;
+ FX_DWORD m_nBitsPerSample;
+ FX_DWORD m_SampleMax;
+ CPDF_StreamAcc* m_pSampleStream;
+};
+
+CPDF_SampledFunc::CPDF_SampledFunc() {
+ m_pSampleStream = NULL;
+ m_pEncodeInfo = NULL;
+ m_pDecodeInfo = NULL;
+}
+CPDF_SampledFunc::~CPDF_SampledFunc() {
+ delete m_pSampleStream;
+ FX_Free(m_pEncodeInfo);
+ FX_Free(m_pDecodeInfo);
+}
+FX_BOOL CPDF_SampledFunc::v_Init(CPDF_Object* pObj) {
+ CPDF_Stream* pStream = pObj->AsStream();
+ if (!pStream)
+ return false;
+
+ CPDF_Dictionary* pDict = pStream->GetDict();
+ CPDF_Array* pSize = pDict->GetArrayBy("Size");
+ CPDF_Array* pEncode = pDict->GetArrayBy("Encode");
+ CPDF_Array* pDecode = pDict->GetArrayBy("Decode");
+ m_nBitsPerSample = pDict->GetIntegerBy("BitsPerSample");
+ if (m_nBitsPerSample > 32) {
+ return FALSE;
+ }
+ m_SampleMax = 0xffffffff >> (32 - m_nBitsPerSample);
+ m_pSampleStream = new CPDF_StreamAcc;
+ m_pSampleStream->LoadAllData(pStream, FALSE);
+ m_pEncodeInfo = FX_Alloc(SampleEncodeInfo, m_nInputs);
+ FX_SAFE_DWORD nTotalSampleBits = 1;
+ for (int i = 0; i < m_nInputs; i++) {
+ m_pEncodeInfo[i].sizes = pSize ? pSize->GetIntegerAt(i) : 0;
+ if (!pSize && i == 0) {
+ m_pEncodeInfo[i].sizes = pDict->GetIntegerBy("Size");
+ }
+ nTotalSampleBits *= m_pEncodeInfo[i].sizes;
+ if (pEncode) {
+ m_pEncodeInfo[i].encode_min = pEncode->GetFloatAt(i * 2);
+ m_pEncodeInfo[i].encode_max = pEncode->GetFloatAt(i * 2 + 1);
+ } else {
+ m_pEncodeInfo[i].encode_min = 0;
+ if (m_pEncodeInfo[i].sizes == 1) {
+ m_pEncodeInfo[i].encode_max = 1;
+ } else {
+ m_pEncodeInfo[i].encode_max = (FX_FLOAT)m_pEncodeInfo[i].sizes - 1;
+ }
+ }
+ }
+ nTotalSampleBits *= m_nBitsPerSample;
+ nTotalSampleBits *= m_nOutputs;
+ FX_SAFE_DWORD nTotalSampleBytes = nTotalSampleBits;
+ nTotalSampleBytes += 7;
+ nTotalSampleBytes /= 8;
+ if (!nTotalSampleBytes.IsValid() || nTotalSampleBytes.ValueOrDie() == 0 ||
+ nTotalSampleBytes.ValueOrDie() > m_pSampleStream->GetSize()) {
+ return FALSE;
+ }
+ m_pDecodeInfo = FX_Alloc(SampleDecodeInfo, m_nOutputs);
+ for (int i = 0; i < m_nOutputs; i++) {
+ if (pDecode) {
+ m_pDecodeInfo[i].decode_min = pDecode->GetFloatAt(2 * i);
+ m_pDecodeInfo[i].decode_max = pDecode->GetFloatAt(2 * i + 1);
+ } else {
+ m_pDecodeInfo[i].decode_min = m_pRanges[i * 2];
+ m_pDecodeInfo[i].decode_max = m_pRanges[i * 2 + 1];
+ }
+ }
+ return TRUE;
+}
+FX_BOOL CPDF_SampledFunc::v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const {
+ int pos = 0;
+ CFX_FixedBufGrow<FX_FLOAT, 16> encoded_input_buf(m_nInputs);
+ FX_FLOAT* encoded_input = encoded_input_buf;
+ CFX_FixedBufGrow<int, 32> int_buf(m_nInputs * 2);
+ int* index = int_buf;
+ int* blocksize = index + m_nInputs;
+ for (int i = 0; i < m_nInputs; i++) {
+ if (i == 0) {
+ blocksize[i] = 1;
+ } else {
+ blocksize[i] = blocksize[i - 1] * m_pEncodeInfo[i - 1].sizes;
+ }
+ encoded_input[i] = PDF_Interpolate(
+ inputs[i], m_pDomains[i * 2], m_pDomains[i * 2 + 1],
+ m_pEncodeInfo[i].encode_min, m_pEncodeInfo[i].encode_max);
+ index[i] = (int)encoded_input[i];
+ if (index[i] < 0) {
+ index[i] = 0;
+ } else if (index[i] > m_pEncodeInfo[i].sizes - 1) {
+ index[i] = m_pEncodeInfo[i].sizes - 1;
+ }
+ pos += index[i] * blocksize[i];
+ }
+ FX_SAFE_INT32 bits_to_output = m_nOutputs;
+ bits_to_output *= m_nBitsPerSample;
+ if (!bits_to_output.IsValid()) {
+ return FALSE;
+ }
+ FX_SAFE_INT32 bitpos = pos;
+ bitpos *= bits_to_output.ValueOrDie();
+ if (!bitpos.IsValid()) {
+ return FALSE;
+ }
+ FX_SAFE_INT32 range_check = bitpos;
+ range_check += bits_to_output.ValueOrDie();
+ if (!range_check.IsValid()) {
+ return FALSE;
+ }
+ const uint8_t* pSampleData = m_pSampleStream->GetData();
+ if (!pSampleData) {
+ return FALSE;
+ }
+ for (int j = 0; j < m_nOutputs; j++) {
+ FX_DWORD sample =
+ _GetBits32(pSampleData, bitpos.ValueOrDie() + j * m_nBitsPerSample,
+ m_nBitsPerSample);
+ FX_FLOAT encoded = (FX_FLOAT)sample;
+ for (int i = 0; i < m_nInputs; i++) {
+ if (index[i] == m_pEncodeInfo[i].sizes - 1) {
+ if (index[i] == 0) {
+ encoded = encoded_input[i] * (FX_FLOAT)sample;
+ }
+ } else {
+ FX_SAFE_INT32 bitpos2 = blocksize[i];
+ bitpos2 += pos;
+ bitpos2 *= m_nOutputs;
+ bitpos2 += j;
+ bitpos2 *= m_nBitsPerSample;
+ if (!bitpos2.IsValid()) {
+ return FALSE;
+ }
+ FX_DWORD sample1 =
+ _GetBits32(pSampleData, bitpos2.ValueOrDie(), m_nBitsPerSample);
+ encoded += (encoded_input[i] - index[i]) *
+ ((FX_FLOAT)sample1 - (FX_FLOAT)sample);
+ }
+ }
+ results[j] = PDF_Interpolate(encoded, 0, (FX_FLOAT)m_SampleMax,
+ m_pDecodeInfo[j].decode_min,
+ m_pDecodeInfo[j].decode_max);
+ }
+ return TRUE;
+}
+
+class CPDF_PSFunc : public CPDF_Function {
+ public:
+ // CPDF_Function
+ FX_BOOL v_Init(CPDF_Object* pObj) override;
+ FX_BOOL v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const override;
+
+ CPDF_PSEngine m_PS;
+};
+
+FX_BOOL CPDF_PSFunc::v_Init(CPDF_Object* pObj) {
+ CPDF_Stream* pStream = pObj->AsStream();
+ CPDF_StreamAcc acc;
+ acc.LoadAllData(pStream, FALSE);
+ return m_PS.Parse((const FX_CHAR*)acc.GetData(), acc.GetSize());
+}
+FX_BOOL CPDF_PSFunc::v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const {
+ CPDF_PSEngine& PS = (CPDF_PSEngine&)m_PS;
+ PS.Reset();
+ int i;
+ for (i = 0; i < m_nInputs; i++) {
+ PS.Push(inputs[i]);
+ }
+ PS.Execute();
+ if (PS.GetStackSize() < m_nOutputs) {
+ return FALSE;
+ }
+ for (i = 0; i < m_nOutputs; i++) {
+ results[m_nOutputs - i - 1] = PS.Pop();
+ }
+ return TRUE;
+}
+
+class CPDF_ExpIntFunc : public CPDF_Function {
+ public:
+ CPDF_ExpIntFunc();
+ ~CPDF_ExpIntFunc() override;
+
+ // CPDF_Function
+ FX_BOOL v_Init(CPDF_Object* pObj) override;
+ FX_BOOL v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const override;
+
+ FX_FLOAT m_Exponent;
+ FX_FLOAT* m_pBeginValues;
+ FX_FLOAT* m_pEndValues;
+ int m_nOrigOutputs;
+};
+
+CPDF_ExpIntFunc::CPDF_ExpIntFunc() {
+ m_pBeginValues = NULL;
+ m_pEndValues = NULL;
+}
+CPDF_ExpIntFunc::~CPDF_ExpIntFunc() {
+ FX_Free(m_pBeginValues);
+ FX_Free(m_pEndValues);
+}
+FX_BOOL CPDF_ExpIntFunc::v_Init(CPDF_Object* pObj) {
+ CPDF_Dictionary* pDict = pObj->GetDict();
+ if (!pDict) {
+ return FALSE;
+ }
+ CPDF_Array* pArray0 = pDict->GetArrayBy("C0");
+ if (m_nOutputs == 0) {
+ m_nOutputs = 1;
+ if (pArray0) {
+ m_nOutputs = pArray0->GetCount();
+ }
+ }
+ CPDF_Array* pArray1 = pDict->GetArrayBy("C1");
+ m_pBeginValues = FX_Alloc2D(FX_FLOAT, m_nOutputs, 2);
+ m_pEndValues = FX_Alloc2D(FX_FLOAT, m_nOutputs, 2);
+ for (int i = 0; i < m_nOutputs; i++) {
+ m_pBeginValues[i] = pArray0 ? pArray0->GetFloatAt(i) : 0.0f;
+ m_pEndValues[i] = pArray1 ? pArray1->GetFloatAt(i) : 1.0f;
+ }
+ m_Exponent = pDict->GetFloatBy("N");
+ m_nOrigOutputs = m_nOutputs;
+ if (m_nOutputs && m_nInputs > INT_MAX / m_nOutputs) {
+ return FALSE;
+ }
+ m_nOutputs *= m_nInputs;
+ return TRUE;
+}
+FX_BOOL CPDF_ExpIntFunc::v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const {
+ for (int i = 0; i < m_nInputs; i++)
+ for (int j = 0; j < m_nOrigOutputs; j++) {
+ results[i * m_nOrigOutputs + j] =
+ m_pBeginValues[j] +
+ (FX_FLOAT)FXSYS_pow(inputs[i], m_Exponent) *
+ (m_pEndValues[j] - m_pBeginValues[j]);
+ }
+ return TRUE;
+}
+
+class CPDF_StitchFunc : public CPDF_Function {
+ public:
+ CPDF_StitchFunc();
+ ~CPDF_StitchFunc() override;
+
+ // CPDF_Function
+ FX_BOOL v_Init(CPDF_Object* pObj) override;
+ FX_BOOL v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const override;
+
+ std::vector<CPDF_Function*> m_pSubFunctions;
+ FX_FLOAT* m_pBounds;
+ FX_FLOAT* m_pEncode;
+
+ static const int kRequiredNumInputs = 1;
+};
+
+CPDF_StitchFunc::CPDF_StitchFunc() {
+ m_pBounds = NULL;
+ m_pEncode = NULL;
+}
+CPDF_StitchFunc::~CPDF_StitchFunc() {
+ for (auto& sub : m_pSubFunctions) {
+ delete sub;
+ }
+ FX_Free(m_pBounds);
+ FX_Free(m_pEncode);
+}
+FX_BOOL CPDF_StitchFunc::v_Init(CPDF_Object* pObj) {
+ CPDF_Dictionary* pDict = pObj->GetDict();
+ if (!pDict) {
+ return FALSE;
+ }
+ if (m_nInputs != kRequiredNumInputs) {
+ return FALSE;
+ }
+ CPDF_Array* pArray = pDict->GetArrayBy("Functions");
+ if (!pArray) {
+ return FALSE;
+ }
+ FX_DWORD nSubs = pArray->GetCount();
+ if (nSubs == 0) {
+ return FALSE;
+ }
+ m_nOutputs = 0;
+ for (FX_DWORD i = 0; i < nSubs; i++) {
+ CPDF_Object* pSub = pArray->GetElementValue(i);
+ if (pSub == pObj) {
+ return FALSE;
+ }
+ std::unique_ptr<CPDF_Function> pFunc(CPDF_Function::Load(pSub));
+ if (!pFunc) {
+ return FALSE;
+ }
+ // Check that the input dimensionality is 1, and that all output
+ // dimensionalities are the same.
+ if (pFunc->CountInputs() != kRequiredNumInputs) {
+ return FALSE;
+ }
+ if (pFunc->CountOutputs() != m_nOutputs) {
+ if (m_nOutputs)
+ return FALSE;
+
+ m_nOutputs = pFunc->CountOutputs();
+ }
+
+ m_pSubFunctions.push_back(pFunc.release());
+ }
+ m_pBounds = FX_Alloc(FX_FLOAT, nSubs + 1);
+ m_pBounds[0] = m_pDomains[0];
+ pArray = pDict->GetArrayBy("Bounds");
+ if (!pArray) {
+ return FALSE;
+ }
+ for (FX_DWORD i = 0; i < nSubs - 1; i++) {
+ m_pBounds[i + 1] = pArray->GetFloatAt(i);
+ }
+ m_pBounds[nSubs] = m_pDomains[1];
+ m_pEncode = FX_Alloc2D(FX_FLOAT, nSubs, 2);
+ pArray = pDict->GetArrayBy("Encode");
+ if (!pArray) {
+ return FALSE;
+ }
+ for (FX_DWORD i = 0; i < nSubs * 2; i++) {
+ m_pEncode[i] = pArray->GetFloatAt(i);
+ }
+ return TRUE;
+}
+FX_BOOL CPDF_StitchFunc::v_Call(FX_FLOAT* inputs, FX_FLOAT* outputs) const {
+ FX_FLOAT input = inputs[0];
+ size_t i;
+ for (i = 0; i < m_pSubFunctions.size() - 1; i++)
+ if (input < m_pBounds[i + 1]) {
+ break;
+ }
+ if (!m_pSubFunctions[i]) {
+ return FALSE;
+ }
+ input = PDF_Interpolate(input, m_pBounds[i], m_pBounds[i + 1],
+ m_pEncode[i * 2], m_pEncode[i * 2 + 1]);
+ int nresults;
+ m_pSubFunctions[i]->Call(&input, kRequiredNumInputs, outputs, nresults);
+ return TRUE;
+}
+
+} // namespace
+
+CPDF_Function* CPDF_Function::Load(CPDF_Object* pFuncObj) {
+ if (!pFuncObj) {
+ return NULL;
+ }
+ CPDF_Function* pFunc = NULL;
+ int type;
+ if (CPDF_Stream* pStream = pFuncObj->AsStream()) {
+ type = pStream->GetDict()->GetIntegerBy("FunctionType");
+ } else if (CPDF_Dictionary* pDict = pFuncObj->AsDictionary()) {
+ type = pDict->GetIntegerBy("FunctionType");
+ } else {
+ return NULL;
+ }
+ if (type == 0) {
+ pFunc = new CPDF_SampledFunc;
+ } else if (type == 2) {
+ pFunc = new CPDF_ExpIntFunc;
+ } else if (type == 3) {
+ pFunc = new CPDF_StitchFunc;
+ } else if (type == 4) {
+ pFunc = new CPDF_PSFunc;
+ } else {
+ return NULL;
+ }
+ if (!pFunc->Init(pFuncObj)) {
+ delete pFunc;
+ return NULL;
+ }
+ return pFunc;
+}
+CPDF_Function::CPDF_Function() {
+ m_pDomains = NULL;
+ m_pRanges = NULL;
+}
+CPDF_Function::~CPDF_Function() {
+ FX_Free(m_pDomains);
+ FX_Free(m_pRanges);
+}
+FX_BOOL CPDF_Function::Init(CPDF_Object* pObj) {
+ CPDF_Stream* pStream = pObj->AsStream();
+ CPDF_Dictionary* pDict = pStream ? pStream->GetDict() : pObj->AsDictionary();
+
+ CPDF_Array* pDomains = pDict->GetArrayBy("Domain");
+ if (!pDomains)
+ return FALSE;
+
+ m_nInputs = pDomains->GetCount() / 2;
+ if (m_nInputs == 0)
+ return FALSE;
+
+ m_pDomains = FX_Alloc2D(FX_FLOAT, m_nInputs, 2);
+ for (int i = 0; i < m_nInputs * 2; i++) {
+ m_pDomains[i] = pDomains->GetFloatAt(i);
+ }
+ CPDF_Array* pRanges = pDict->GetArrayBy("Range");
+ m_nOutputs = 0;
+ if (pRanges) {
+ m_nOutputs = pRanges->GetCount() / 2;
+ m_pRanges = FX_Alloc2D(FX_FLOAT, m_nOutputs, 2);
+ for (int i = 0; i < m_nOutputs * 2; i++) {
+ m_pRanges[i] = pRanges->GetFloatAt(i);
+ }
+ }
+ FX_DWORD old_outputs = m_nOutputs;
+ if (!v_Init(pObj)) {
+ return FALSE;
+ }
+ if (m_pRanges && m_nOutputs > (int)old_outputs) {
+ m_pRanges = FX_Realloc(FX_FLOAT, m_pRanges, m_nOutputs * 2);
+ if (m_pRanges) {
+ FXSYS_memset(m_pRanges + (old_outputs * 2), 0,
+ sizeof(FX_FLOAT) * (m_nOutputs - old_outputs) * 2);
+ }
+ }
+ return TRUE;
+}
+FX_BOOL CPDF_Function::Call(FX_FLOAT* inputs,
+ int ninputs,
+ FX_FLOAT* results,
+ int& nresults) const {
+ if (m_nInputs != ninputs) {
+ return FALSE;
+ }
+ nresults = m_nOutputs;
+ for (int i = 0; i < m_nInputs; i++) {
+ if (inputs[i] < m_pDomains[i * 2]) {
+ inputs[i] = m_pDomains[i * 2];
+ } else if (inputs[i] > m_pDomains[i * 2 + 1]) {
+ inputs[i] = m_pDomains[i * 2] + 1;
+ }
+ }
+ v_Call(inputs, results);
+ if (m_pRanges) {
+ for (int i = 0; i < m_nOutputs; i++) {
+ if (results[i] < m_pRanges[i * 2]) {
+ results[i] = m_pRanges[i * 2];
+ } else if (results[i] > m_pRanges[i * 2 + 1]) {
+ results[i] = m_pRanges[i * 2 + 1];
+ }
+ }
+ }
+ return TRUE;
+}
diff --git a/core/fpdfapi/fpdf_page/fpdf_page_func_embeddertest.cpp b/core/fpdfapi/fpdf_page/fpdf_page_func_embeddertest.cpp
new file mode 100644
index 0000000000..2892036882
--- /dev/null
+++ b/core/fpdfapi/fpdf_page/fpdf_page_func_embeddertest.cpp
@@ -0,0 +1,20 @@
+// Copyright 2015 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "testing/embedder_test.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+class FPDFPageFuncEmbeddertest : public EmbedderTest {};
+
+TEST_F(FPDFPageFuncEmbeddertest, Bug_551460) {
+ // Should not crash under ASan.
+ // Tests that the number of inputs is not simply calculated from the domain
+ // and trusted. The number of inputs has to be 1.
+ EXPECT_TRUE(OpenDocument("bug_551460.pdf"));
+ FPDF_PAGE page = LoadPage(0);
+ EXPECT_NE(nullptr, page);
+ FPDF_BITMAP bitmap = RenderPage(page);
+ FPDFBitmap_Destroy(bitmap);
+ UnloadPage(page);
+}
diff --git a/core/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp b/core/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp
new file mode 100644
index 0000000000..76753d2965
--- /dev/null
+++ b/core/fpdfapi/fpdf_page/fpdf_page_graph_state.cpp
@@ -0,0 +1,697 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_page/pageint.h"
+
+#include <algorithm>
+
+#include "core/fpdfapi/fpdf_render/render_int.h"
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_document.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_page.h"
+#include "core/include/fpdfapi/fpdf_pageobj.h"
+#include "core/include/fpdfapi/fpdf_render.h"
+#include "third_party/base/stl_util.h"
+
+namespace {
+
+FX_FLOAT ClipFloat(FX_FLOAT f) {
+ return std::max(0.0f, std::min(1.0f, f));
+}
+
+} // namespace
+
+void CPDF_GraphicStates::DefaultStates() {
+ m_ColorState.New()->Default();
+}
+void CPDF_GraphicStates::CopyStates(const CPDF_GraphicStates& src) {
+ m_ClipPath = src.m_ClipPath;
+ m_GraphState = src.m_GraphState;
+ m_ColorState = src.m_ColorState;
+ m_TextState = src.m_TextState;
+ m_GeneralState = src.m_GeneralState;
+}
+CPDF_ClipPathData::CPDF_ClipPathData() {
+ m_PathCount = 0;
+ m_pPathList = NULL;
+ m_pTypeList = NULL;
+ m_TextCount = 0;
+ m_pTextList = NULL;
+}
+CPDF_ClipPathData::~CPDF_ClipPathData() {
+ int i;
+ delete[] m_pPathList;
+ FX_Free(m_pTypeList);
+ for (i = m_TextCount - 1; i > -1; i--)
+ delete m_pTextList[i];
+ FX_Free(m_pTextList);
+}
+CPDF_ClipPathData::CPDF_ClipPathData(const CPDF_ClipPathData& src) {
+ m_pPathList = NULL;
+ m_pPathList = NULL;
+ m_pTextList = NULL;
+ m_PathCount = src.m_PathCount;
+ if (m_PathCount) {
+ int alloc_size = m_PathCount;
+ if (alloc_size % 8) {
+ alloc_size += 8 - (alloc_size % 8);
+ }
+ m_pPathList = new CPDF_Path[alloc_size];
+ for (int i = 0; i < m_PathCount; i++) {
+ m_pPathList[i] = src.m_pPathList[i];
+ }
+ m_pTypeList = FX_Alloc(uint8_t, alloc_size);
+ FXSYS_memcpy(m_pTypeList, src.m_pTypeList, m_PathCount);
+ } else {
+ m_pPathList = NULL;
+ m_pTypeList = NULL;
+ }
+ m_TextCount = src.m_TextCount;
+ if (m_TextCount) {
+ m_pTextList = FX_Alloc(CPDF_TextObject*, m_TextCount);
+ for (int i = 0; i < m_TextCount; i++) {
+ if (src.m_pTextList[i]) {
+ m_pTextList[i] = src.m_pTextList[i]->Clone();
+ } else {
+ m_pTextList[i] = NULL;
+ }
+ }
+ } else {
+ m_pTextList = NULL;
+ }
+}
+void CPDF_ClipPathData::SetCount(int path_count, int text_count) {
+ ASSERT(m_TextCount == 0 && m_PathCount == 0);
+ if (path_count) {
+ m_PathCount = path_count;
+ int alloc_size = (path_count + 7) / 8 * 8;
+ m_pPathList = new CPDF_Path[alloc_size];
+ m_pTypeList = FX_Alloc(uint8_t, alloc_size);
+ }
+ if (text_count) {
+ m_TextCount = text_count;
+ m_pTextList = FX_Alloc(CPDF_TextObject*, text_count);
+ }
+}
+CFX_FloatRect CPDF_ClipPath::GetClipBox() const {
+ CFX_FloatRect rect;
+ FX_BOOL bStarted = FALSE;
+ int count = GetPathCount();
+ if (count) {
+ rect = GetPath(0).GetBoundingBox();
+ for (int i = 1; i < count; i++) {
+ CFX_FloatRect path_rect = GetPath(i).GetBoundingBox();
+ rect.Intersect(path_rect);
+ }
+ bStarted = TRUE;
+ }
+ count = GetTextCount();
+ if (count) {
+ CFX_FloatRect layer_rect;
+ FX_BOOL bLayerStarted = FALSE;
+ for (int i = 0; i < count; i++) {
+ CPDF_TextObject* pTextObj = GetText(i);
+ if (!pTextObj) {
+ if (!bStarted) {
+ rect = layer_rect;
+ bStarted = TRUE;
+ } else {
+ rect.Intersect(layer_rect);
+ }
+ bLayerStarted = FALSE;
+ } else {
+ if (!bLayerStarted) {
+ layer_rect = CFX_FloatRect(pTextObj->GetBBox(nullptr));
+ bLayerStarted = TRUE;
+ } else {
+ layer_rect.Union(CFX_FloatRect(pTextObj->GetBBox(nullptr)));
+ }
+ }
+ }
+ }
+ return rect;
+}
+void CPDF_ClipPath::AppendPath(CPDF_Path path, int type, FX_BOOL bAutoMerge) {
+ CPDF_ClipPathData* pData = GetModify();
+ if (pData->m_PathCount && bAutoMerge) {
+ CPDF_Path old_path = pData->m_pPathList[pData->m_PathCount - 1];
+ if (old_path.IsRect()) {
+ CFX_FloatRect old_rect(old_path.GetPointX(0), old_path.GetPointY(0),
+ old_path.GetPointX(2), old_path.GetPointY(2));
+ CFX_FloatRect new_rect = path.GetBoundingBox();
+ if (old_rect.Contains(new_rect)) {
+ pData->m_PathCount--;
+ pData->m_pPathList[pData->m_PathCount].SetNull();
+ }
+ }
+ }
+ if (pData->m_PathCount % 8 == 0) {
+ CPDF_Path* pNewPath = new CPDF_Path[pData->m_PathCount + 8];
+ for (int i = 0; i < pData->m_PathCount; i++) {
+ pNewPath[i] = pData->m_pPathList[i];
+ }
+ delete[] pData->m_pPathList;
+ uint8_t* pNewType = FX_Alloc(uint8_t, pData->m_PathCount + 8);
+ FXSYS_memcpy(pNewType, pData->m_pTypeList, pData->m_PathCount);
+ FX_Free(pData->m_pTypeList);
+ pData->m_pPathList = pNewPath;
+ pData->m_pTypeList = pNewType;
+ }
+ pData->m_pPathList[pData->m_PathCount] = path;
+ pData->m_pTypeList[pData->m_PathCount] = (uint8_t)type;
+ pData->m_PathCount++;
+}
+void CPDF_ClipPath::DeletePath(int index) {
+ CPDF_ClipPathData* pData = GetModify();
+ if (index >= pData->m_PathCount) {
+ return;
+ }
+ pData->m_pPathList[index].SetNull();
+ for (int i = index; i < pData->m_PathCount - 1; i++) {
+ pData->m_pPathList[i] = pData->m_pPathList[i + 1];
+ }
+ pData->m_pPathList[pData->m_PathCount - 1].SetNull();
+ FXSYS_memmove(pData->m_pTypeList + index, pData->m_pTypeList + index + 1,
+ pData->m_PathCount - index - 1);
+ pData->m_PathCount--;
+}
+#define FPDF_CLIPPATH_MAX_TEXTS 1024
+void CPDF_ClipPath::AppendTexts(CPDF_TextObject** pTexts, int count) {
+ CPDF_ClipPathData* pData = GetModify();
+ if (pData->m_TextCount + count > FPDF_CLIPPATH_MAX_TEXTS) {
+ for (int i = 0; i < count; i++) {
+ delete pTexts[i];
+ }
+ return;
+ }
+ CPDF_TextObject** pNewList =
+ FX_Alloc(CPDF_TextObject*, pData->m_TextCount + count + 1);
+ if (pData->m_pTextList) {
+ FXSYS_memcpy(pNewList, pData->m_pTextList,
+ pData->m_TextCount * sizeof(CPDF_TextObject*));
+ FX_Free(pData->m_pTextList);
+ }
+ pData->m_pTextList = pNewList;
+ for (int i = 0; i < count; i++) {
+ pData->m_pTextList[pData->m_TextCount + i] = pTexts[i];
+ }
+ pData->m_pTextList[pData->m_TextCount + count] = NULL;
+ pData->m_TextCount += count + 1;
+}
+void CPDF_ClipPath::Transform(const CFX_Matrix& matrix) {
+ CPDF_ClipPathData* pData = GetModify();
+ int i;
+ for (i = 0; i < pData->m_PathCount; i++) {
+ pData->m_pPathList[i].Transform(&matrix);
+ }
+ for (i = 0; i < pData->m_TextCount; i++)
+ if (pData->m_pTextList[i]) {
+ pData->m_pTextList[i]->Transform(matrix);
+ }
+}
+CPDF_ColorStateData::CPDF_ColorStateData(const CPDF_ColorStateData& src) {
+ m_FillColor.Copy(&src.m_FillColor);
+ m_FillRGB = src.m_FillRGB;
+ m_StrokeColor.Copy(&src.m_StrokeColor);
+ m_StrokeRGB = src.m_StrokeRGB;
+}
+void CPDF_ColorStateData::Default() {
+ m_FillRGB = m_StrokeRGB = 0;
+ m_FillColor.SetColorSpace(CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY));
+ m_StrokeColor.SetColorSpace(CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY));
+}
+void CPDF_ColorState::SetFillColor(CPDF_ColorSpace* pCS,
+ FX_FLOAT* pValue,
+ int nValues) {
+ CPDF_ColorStateData* pData = GetModify();
+ SetColor(pData->m_FillColor, pData->m_FillRGB, pCS, pValue, nValues);
+}
+void CPDF_ColorState::SetStrokeColor(CPDF_ColorSpace* pCS,
+ FX_FLOAT* pValue,
+ int nValues) {
+ CPDF_ColorStateData* pData = GetModify();
+ SetColor(pData->m_StrokeColor, pData->m_StrokeRGB, pCS, pValue, nValues);
+}
+void CPDF_ColorState::SetColor(CPDF_Color& color,
+ FX_DWORD& rgb,
+ CPDF_ColorSpace* pCS,
+ FX_FLOAT* pValue,
+ int nValues) {
+ if (pCS) {
+ color.SetColorSpace(pCS);
+ } else if (color.IsNull()) {
+ color.SetColorSpace(CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY));
+ }
+ if (color.m_pCS->CountComponents() > nValues) {
+ return;
+ }
+ color.SetValue(pValue);
+ int R, G, B;
+ rgb = color.GetRGB(R, G, B) ? FXSYS_RGB(R, G, B) : (FX_DWORD)-1;
+}
+void CPDF_ColorState::SetFillPattern(CPDF_Pattern* pPattern,
+ FX_FLOAT* pValue,
+ int nValues) {
+ CPDF_ColorStateData* pData = GetModify();
+ pData->m_FillColor.SetValue(pPattern, pValue, nValues);
+ int R, G, B;
+ FX_BOOL ret = pData->m_FillColor.GetRGB(R, G, B);
+ if (pPattern->m_PatternType == 1 &&
+ ((CPDF_TilingPattern*)pPattern)->m_bColored && !ret) {
+ pData->m_FillRGB = 0x00BFBFBF;
+ return;
+ }
+ pData->m_FillRGB = ret ? FXSYS_RGB(R, G, B) : (FX_DWORD)-1;
+}
+void CPDF_ColorState::SetStrokePattern(CPDF_Pattern* pPattern,
+ FX_FLOAT* pValue,
+ int nValues) {
+ CPDF_ColorStateData* pData = GetModify();
+ pData->m_StrokeColor.SetValue(pPattern, pValue, nValues);
+ int R, G, B;
+ FX_BOOL ret = pData->m_StrokeColor.GetRGB(R, G, B);
+ if (pPattern->m_PatternType == 1 &&
+ ((CPDF_TilingPattern*)pPattern)->m_bColored && !ret) {
+ pData->m_StrokeRGB = 0x00BFBFBF;
+ return;
+ }
+ pData->m_StrokeRGB =
+ pData->m_StrokeColor.GetRGB(R, G, B) ? FXSYS_RGB(R, G, B) : (FX_DWORD)-1;
+}
+CPDF_TextStateData::CPDF_TextStateData() {
+ m_pFont = NULL;
+ m_pDocument = NULL;
+ m_FontSize = 1.0f;
+ m_WordSpace = 0;
+ m_CharSpace = 0;
+ m_TextMode = 0;
+ m_Matrix[0] = m_Matrix[3] = 1.0f;
+ m_Matrix[1] = m_Matrix[2] = 0;
+ m_CTM[0] = m_CTM[3] = 1.0f;
+ m_CTM[1] = m_CTM[2] = 0;
+}
+CPDF_TextStateData::CPDF_TextStateData(const CPDF_TextStateData& src) {
+ if (this == &src) {
+ return;
+ }
+ FXSYS_memcpy(this, &src, sizeof(CPDF_TextStateData));
+ if (m_pDocument && m_pFont) {
+ m_pFont =
+ m_pDocument->GetPageData()->GetFont(m_pFont->GetFontDict(), FALSE);
+ }
+}
+CPDF_TextStateData::~CPDF_TextStateData() {
+ if (m_pDocument && m_pFont) {
+ CPDF_DocPageData* pPageData = m_pDocument->GetPageData();
+ if (pPageData && !pPageData->IsForceClear()) {
+ pPageData->ReleaseFont(m_pFont->GetFontDict());
+ }
+ }
+}
+void CPDF_TextState::SetFont(CPDF_Font* pFont) {
+ CPDF_TextStateData* pStateData = GetModify();
+ if (pStateData) {
+ CPDF_Document* pDoc = pStateData->m_pDocument;
+ CPDF_DocPageData* pPageData = pDoc ? pDoc->GetPageData() : NULL;
+ if (pPageData && pStateData->m_pFont && !pPageData->IsForceClear()) {
+ pPageData->ReleaseFont(pStateData->m_pFont->GetFontDict());
+ }
+ pStateData->m_pDocument = pFont ? pFont->m_pDocument : NULL;
+ pStateData->m_pFont = pFont;
+ }
+}
+FX_FLOAT CPDF_TextState::GetFontSizeV() const {
+ FX_FLOAT* pMatrix = GetMatrix();
+ FX_FLOAT unit = FXSYS_sqrt2(pMatrix[1], pMatrix[3]);
+ FX_FLOAT size = unit * GetFontSize();
+ return (FX_FLOAT)FXSYS_fabs(size);
+}
+FX_FLOAT CPDF_TextState::GetFontSizeH() const {
+ FX_FLOAT* pMatrix = GetMatrix();
+ FX_FLOAT unit = FXSYS_sqrt2(pMatrix[0], pMatrix[2]);
+ FX_FLOAT size = unit * GetFontSize();
+ return (FX_FLOAT)FXSYS_fabs(size);
+}
+FX_FLOAT CPDF_TextState::GetBaselineAngle() const {
+ FX_FLOAT* m_Matrix = GetMatrix();
+ return FXSYS_atan2(m_Matrix[2], m_Matrix[0]);
+}
+FX_FLOAT CPDF_TextState::GetShearAngle() const {
+ FX_FLOAT* m_Matrix = GetMatrix();
+ FX_FLOAT shear_angle = FXSYS_atan2(m_Matrix[1], m_Matrix[3]);
+ return GetBaselineAngle() + shear_angle;
+}
+CPDF_GeneralStateData::CPDF_GeneralStateData() {
+ FXSYS_memset(this, 0, sizeof(CPDF_GeneralStateData));
+ FXSYS_strcpy((FX_CHAR*)m_BlendMode, "Normal");
+ m_StrokeAlpha = 1.0f;
+ m_FillAlpha = 1.0f;
+ m_Flatness = 1.0f;
+ m_Matrix.SetIdentity();
+}
+CPDF_GeneralStateData::CPDF_GeneralStateData(const CPDF_GeneralStateData& src) {
+ FXSYS_memcpy(this, &src, sizeof(CPDF_GeneralStateData));
+ if (src.m_pTransferFunc && src.m_pTransferFunc->m_pPDFDoc) {
+ CPDF_DocRenderData* pDocCache =
+ src.m_pTransferFunc->m_pPDFDoc->GetRenderData();
+ if (!pDocCache) {
+ return;
+ }
+ m_pTransferFunc = pDocCache->GetTransferFunc(m_pTR);
+ }
+}
+CPDF_GeneralStateData::~CPDF_GeneralStateData() {
+ if (m_pTransferFunc && m_pTransferFunc->m_pPDFDoc) {
+ CPDF_DocRenderData* pDocCache = m_pTransferFunc->m_pPDFDoc->GetRenderData();
+ if (!pDocCache) {
+ return;
+ }
+ pDocCache->ReleaseTransferFunc(m_pTR);
+ }
+}
+static int GetBlendType(const CFX_ByteStringC& mode) {
+ switch (mode.GetID()) {
+ case FXBSTR_ID('N', 'o', 'r', 'm'):
+ case FXBSTR_ID('C', 'o', 'm', 'p'):
+ return FXDIB_BLEND_NORMAL;
+ case FXBSTR_ID('M', 'u', 'l', 't'):
+ return FXDIB_BLEND_MULTIPLY;
+ case FXBSTR_ID('S', 'c', 'r', 'e'):
+ return FXDIB_BLEND_SCREEN;
+ case FXBSTR_ID('O', 'v', 'e', 'r'):
+ return FXDIB_BLEND_OVERLAY;
+ case FXBSTR_ID('D', 'a', 'r', 'k'):
+ return FXDIB_BLEND_DARKEN;
+ case FXBSTR_ID('L', 'i', 'g', 'h'):
+ return FXDIB_BLEND_LIGHTEN;
+ case FXBSTR_ID('C', 'o', 'l', 'o'):
+ if (mode.GetLength() == 10) {
+ return FXDIB_BLEND_COLORDODGE;
+ }
+ if (mode.GetLength() == 9) {
+ return FXDIB_BLEND_COLORBURN;
+ }
+ return FXDIB_BLEND_COLOR;
+ case FXBSTR_ID('H', 'a', 'r', 'd'):
+ return FXDIB_BLEND_HARDLIGHT;
+ case FXBSTR_ID('S', 'o', 'f', 't'):
+ return FXDIB_BLEND_SOFTLIGHT;
+ case FXBSTR_ID('D', 'i', 'f', 'f'):
+ return FXDIB_BLEND_DIFFERENCE;
+ case FXBSTR_ID('E', 'x', 'c', 'l'):
+ return FXDIB_BLEND_EXCLUSION;
+ case FXBSTR_ID('H', 'u', 'e', 0):
+ return FXDIB_BLEND_HUE;
+ case FXBSTR_ID('S', 'a', 't', 'u'):
+ return FXDIB_BLEND_SATURATION;
+ case FXBSTR_ID('L', 'u', 'm', 'i'):
+ return FXDIB_BLEND_LUMINOSITY;
+ }
+ return FXDIB_BLEND_NORMAL;
+}
+void CPDF_GeneralStateData::SetBlendMode(const CFX_ByteStringC& blend_mode) {
+ if (blend_mode.GetLength() > 15) {
+ return;
+ }
+ FXSYS_memcpy(m_BlendMode, blend_mode.GetPtr(), blend_mode.GetLength());
+ m_BlendMode[blend_mode.GetLength()] = 0;
+ m_BlendType = ::GetBlendType(blend_mode);
+}
+int RI_StringToId(const CFX_ByteString& ri) {
+ FX_DWORD id = ri.GetID();
+ if (id == FXBSTR_ID('A', 'b', 's', 'o')) {
+ return 1;
+ }
+ if (id == FXBSTR_ID('S', 'a', 't', 'u')) {
+ return 2;
+ }
+ if (id == FXBSTR_ID('P', 'e', 'r', 'c')) {
+ return 3;
+ }
+ return 0;
+}
+void CPDF_GeneralState::SetRenderIntent(const CFX_ByteString& ri) {
+ GetModify()->m_RenderIntent = RI_StringToId(ri);
+}
+CPDF_AllStates::CPDF_AllStates() {
+ m_TextX = m_TextY = m_TextLineX = m_TextLineY = 0;
+ m_TextLeading = 0;
+ m_TextRise = 0;
+ m_TextHorzScale = 1.0f;
+}
+CPDF_AllStates::~CPDF_AllStates() {}
+void CPDF_AllStates::Copy(const CPDF_AllStates& src) {
+ CopyStates(src);
+ m_TextMatrix.Copy(src.m_TextMatrix);
+ m_ParentMatrix.Copy(src.m_ParentMatrix);
+ m_CTM.Copy(src.m_CTM);
+ m_TextX = src.m_TextX;
+ m_TextY = src.m_TextY;
+ m_TextLineX = src.m_TextLineX;
+ m_TextLineY = src.m_TextLineY;
+ m_TextLeading = src.m_TextLeading;
+ m_TextRise = src.m_TextRise;
+ m_TextHorzScale = src.m_TextHorzScale;
+}
+void CPDF_AllStates::SetLineDash(CPDF_Array* pArray,
+ FX_FLOAT phase,
+ FX_FLOAT scale) {
+ CFX_GraphStateData* pData = m_GraphState.GetModify();
+ pData->m_DashPhase = phase * scale;
+ pData->SetDashCount(pArray->GetCount());
+ for (FX_DWORD i = 0; i < pArray->GetCount(); i++) {
+ pData->m_DashArray[i] = pArray->GetNumberAt(i) * scale;
+ }
+}
+void CPDF_AllStates::ProcessExtGS(CPDF_Dictionary* pGS,
+ CPDF_StreamContentParser* pParser) {
+ CPDF_GeneralStateData* pGeneralState = m_GeneralState.GetModify();
+ for (const auto& it : *pGS) {
+ const CFX_ByteString& key_str = it.first;
+ CPDF_Object* pElement = it.second;
+ CPDF_Object* pObject = pElement ? pElement->GetDirect() : nullptr;
+ if (!pObject)
+ continue;
+
+ FX_DWORD key = key_str.GetID();
+ switch (key) {
+ case FXBSTR_ID('L', 'W', 0, 0):
+ m_GraphState.GetModify()->m_LineWidth = pObject->GetNumber();
+ break;
+ case FXBSTR_ID('L', 'C', 0, 0):
+ m_GraphState.GetModify()->m_LineCap =
+ (CFX_GraphStateData::LineCap)pObject->GetInteger();
+ break;
+ case FXBSTR_ID('L', 'J', 0, 0):
+ m_GraphState.GetModify()->m_LineJoin =
+ (CFX_GraphStateData::LineJoin)pObject->GetInteger();
+ break;
+ case FXBSTR_ID('M', 'L', 0, 0):
+ m_GraphState.GetModify()->m_MiterLimit = pObject->GetNumber();
+ break;
+ case FXBSTR_ID('D', 0, 0, 0): {
+ CPDF_Array* pDash = pObject->AsArray();
+ if (!pDash)
+ break;
+
+ CPDF_Array* pArray = pDash->GetArrayAt(0);
+ if (!pArray)
+ break;
+
+ SetLineDash(pArray, pDash->GetNumberAt(1), 1.0f);
+ break;
+ }
+ case FXBSTR_ID('R', 'I', 0, 0):
+ m_GeneralState.SetRenderIntent(pObject->GetString());
+ break;
+ case FXBSTR_ID('F', 'o', 'n', 't'): {
+ CPDF_Array* pFont = pObject->AsArray();
+ if (!pFont)
+ break;
+
+ m_TextState.GetModify()->m_FontSize = pFont->GetNumberAt(1);
+ m_TextState.SetFont(pParser->FindFont(pFont->GetStringAt(0)));
+ break;
+ }
+ case FXBSTR_ID('T', 'R', 0, 0):
+ if (pGS->KeyExist("TR2")) {
+ continue;
+ }
+ case FXBSTR_ID('T', 'R', '2', 0):
+ pGeneralState->m_pTR =
+ (pObject && !pObject->IsName()) ? pObject : nullptr;
+ break;
+ case FXBSTR_ID('B', 'M', 0, 0): {
+ CPDF_Array* pArray = pObject->AsArray();
+ CFX_ByteString mode =
+ pArray ? pArray->GetStringAt(0) : pObject->GetString();
+
+ pGeneralState->SetBlendMode(mode);
+ if (pGeneralState->m_BlendType > FXDIB_BLEND_MULTIPLY) {
+ pParser->GetPageObjectHolder()->SetBackgroundAlphaNeeded(TRUE);
+ }
+ break;
+ }
+ case FXBSTR_ID('S', 'M', 'a', 's'):
+ if (ToDictionary(pObject)) {
+ pGeneralState->m_pSoftMask = pObject;
+ FXSYS_memcpy(pGeneralState->m_SMaskMatrix,
+ &pParser->GetCurStates()->m_CTM, sizeof(CFX_Matrix));
+ } else {
+ pGeneralState->m_pSoftMask = NULL;
+ }
+ break;
+ case FXBSTR_ID('C', 'A', 0, 0):
+ pGeneralState->m_StrokeAlpha = ClipFloat(pObject->GetNumber());
+ break;
+ case FXBSTR_ID('c', 'a', 0, 0):
+ pGeneralState->m_FillAlpha = ClipFloat(pObject->GetNumber());
+ break;
+ case FXBSTR_ID('O', 'P', 0, 0):
+ pGeneralState->m_StrokeOP = pObject->GetInteger();
+ if (!pGS->KeyExist("op")) {
+ pGeneralState->m_FillOP = pObject->GetInteger();
+ }
+ break;
+ case FXBSTR_ID('o', 'p', 0, 0):
+ pGeneralState->m_FillOP = pObject->GetInteger();
+ break;
+ case FXBSTR_ID('O', 'P', 'M', 0):
+ pGeneralState->m_OPMode = pObject->GetInteger();
+ break;
+ case FXBSTR_ID('B', 'G', 0, 0):
+ if (pGS->KeyExist("BG2")) {
+ continue;
+ }
+ case FXBSTR_ID('B', 'G', '2', 0):
+ pGeneralState->m_pBG = pObject;
+ break;
+ case FXBSTR_ID('U', 'C', 'R', 0):
+ if (pGS->KeyExist("UCR2")) {
+ continue;
+ }
+ case FXBSTR_ID('U', 'C', 'R', '2'):
+ pGeneralState->m_pUCR = pObject;
+ break;
+ case FXBSTR_ID('H', 'T', 0, 0):
+ pGeneralState->m_pHT = pObject;
+ break;
+ case FXBSTR_ID('F', 'L', 0, 0):
+ pGeneralState->m_Flatness = pObject->GetNumber();
+ break;
+ case FXBSTR_ID('S', 'M', 0, 0):
+ pGeneralState->m_Smoothness = pObject->GetNumber();
+ break;
+ case FXBSTR_ID('S', 'A', 0, 0):
+ pGeneralState->m_StrokeAdjust = pObject->GetInteger();
+ break;
+ case FXBSTR_ID('A', 'I', 'S', 0):
+ pGeneralState->m_AlphaSource = pObject->GetInteger();
+ break;
+ case FXBSTR_ID('T', 'K', 0, 0):
+ pGeneralState->m_TextKnockout = pObject->GetInteger();
+ break;
+ }
+ }
+ pGeneralState->m_Matrix = m_CTM;
+}
+CPDF_ContentMarkItem::CPDF_ContentMarkItem() {
+ m_ParamType = None;
+}
+CPDF_ContentMarkItem::CPDF_ContentMarkItem(const CPDF_ContentMarkItem& src) {
+ m_MarkName = src.m_MarkName;
+ m_ParamType = src.m_ParamType;
+ if (m_ParamType == DirectDict) {
+ m_pParam = ToDictionary(src.m_pParam->Clone());
+ } else {
+ m_pParam = src.m_pParam;
+ }
+}
+CPDF_ContentMarkItem::~CPDF_ContentMarkItem() {
+ if (m_ParamType == DirectDict && m_pParam)
+ m_pParam->Release();
+}
+FX_BOOL CPDF_ContentMarkItem::HasMCID() const {
+ if (m_pParam &&
+ (m_ParamType == DirectDict || m_ParamType == PropertiesDict)) {
+ return m_pParam->KeyExist("MCID");
+ }
+ return FALSE;
+}
+
+CPDF_ContentMarkData::CPDF_ContentMarkData(const CPDF_ContentMarkData& src)
+ : m_Marks(src.m_Marks) {}
+
+int CPDF_ContentMarkData::CountItems() const {
+ return pdfium::CollectionSize<int>(m_Marks);
+}
+
+int CPDF_ContentMarkData::GetMCID() const {
+ for (const auto& mark : m_Marks) {
+ CPDF_ContentMarkItem::ParamType type = mark.GetParamType();
+ if (type == CPDF_ContentMarkItem::PropertiesDict ||
+ type == CPDF_ContentMarkItem::DirectDict) {
+ CPDF_Dictionary* pDict = mark.GetParam();
+ if (pDict->KeyExist("MCID"))
+ return pDict->GetIntegerBy("MCID");
+ }
+ }
+ return -1;
+}
+
+void CPDF_ContentMarkData::AddMark(const CFX_ByteString& name,
+ CPDF_Dictionary* pDict,
+ FX_BOOL bDirect) {
+ CPDF_ContentMarkItem item;
+ item.SetName(name);
+ if (pDict) {
+ if (bDirect) {
+ item.SetParam(CPDF_ContentMarkItem::DirectDict,
+ ToDictionary(pDict->Clone()));
+ } else {
+ item.SetParam(CPDF_ContentMarkItem::PropertiesDict, pDict);
+ }
+ }
+ m_Marks.push_back(item);
+}
+
+void CPDF_ContentMarkData::DeleteLastMark() {
+ if (!m_Marks.empty())
+ m_Marks.pop_back();
+}
+
+FX_BOOL CPDF_ContentMark::HasMark(const CFX_ByteStringC& mark) const {
+ if (!m_pObject) {
+ return FALSE;
+ }
+ for (int i = 0; i < m_pObject->CountItems(); i++) {
+ CPDF_ContentMarkItem& item = m_pObject->GetItem(i);
+ if (item.GetName() == mark) {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+FX_BOOL CPDF_ContentMark::LookupMark(const CFX_ByteStringC& mark,
+ CPDF_Dictionary*& pDict) const {
+ if (!m_pObject) {
+ return FALSE;
+ }
+ for (int i = 0; i < m_pObject->CountItems(); i++) {
+ CPDF_ContentMarkItem& item = m_pObject->GetItem(i);
+ if (item.GetName() == mark) {
+ pDict = NULL;
+ if (item.GetParamType() == CPDF_ContentMarkItem::PropertiesDict ||
+ item.GetParamType() == CPDF_ContentMarkItem::DirectDict) {
+ pDict = item.GetParam();
+ }
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
diff --git a/core/fpdfapi/fpdf_page/fpdf_page_image.cpp b/core/fpdfapi/fpdf_page/fpdf_page_image.cpp
new file mode 100644
index 0000000000..a88d2b30bd
--- /dev/null
+++ b/core/fpdfapi/fpdf_page/fpdf_page_image.cpp
@@ -0,0 +1,100 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_page/pageint.h"
+
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_document.h"
+#include "core/include/fpdfapi/fpdf_page.h"
+#include "core/include/fpdfapi/fpdf_pageobj.h"
+
+CPDF_ImageObject::CPDF_ImageObject() : m_pImage(nullptr) {}
+
+CPDF_ImageObject::~CPDF_ImageObject() {
+ if (!m_pImage) {
+ return;
+ }
+ if (m_pImage->IsInline() ||
+ (m_pImage->GetStream() && m_pImage->GetStream()->GetObjNum() == 0)) {
+ delete m_pImage;
+ } else {
+ m_pImage->GetDocument()->GetPageData()->ReleaseImage(m_pImage->GetStream());
+ }
+}
+
+CPDF_ImageObject* CPDF_ImageObject::Clone() const {
+ CPDF_ImageObject* obj = new CPDF_ImageObject;
+ obj->CopyData(this);
+
+ obj->m_pImage = m_pImage->Clone();
+ obj->m_Matrix = m_Matrix;
+ return obj;
+}
+
+void CPDF_ImageObject::Transform(const CFX_Matrix& matrix) {
+ m_Matrix.Concat(matrix);
+ CalcBoundingBox();
+}
+void CPDF_ImageObject::CalcBoundingBox() {
+ m_Left = m_Bottom = 0;
+ m_Right = m_Top = 1.0f;
+ m_Matrix.TransformRect(m_Left, m_Right, m_Top, m_Bottom);
+}
+void CPDF_Image::Release() {
+ if (m_bInline || (m_pStream && m_pStream->GetObjNum() == 0)) {
+ delete this;
+ }
+}
+CPDF_Image* CPDF_Image::Clone() {
+ if (m_pStream->GetObjNum())
+ return m_pDocument->GetPageData()->GetImage(m_pStream);
+
+ CPDF_Image* pImage = new CPDF_Image(m_pDocument);
+ pImage->LoadImageF(ToStream(m_pStream->Clone()), m_bInline);
+ if (m_bInline)
+ pImage->SetInlineDict(ToDictionary(m_pInlineDict->Clone(TRUE)));
+
+ return pImage;
+}
+CPDF_Image::CPDF_Image(CPDF_Document* pDoc) {
+ m_pDocument = pDoc;
+ m_pStream = NULL;
+ m_pOC = NULL;
+ m_bInline = FALSE;
+ m_pInlineDict = NULL;
+ m_pDIBSource = NULL;
+ m_pMask = NULL;
+ m_MatteColor = 0;
+}
+CPDF_Image::~CPDF_Image() {
+ if (m_bInline) {
+ if (m_pStream) {
+ m_pStream->Release();
+ }
+ if (m_pInlineDict) {
+ m_pInlineDict->Release();
+ }
+ }
+}
+FX_BOOL CPDF_Image::LoadImageF(CPDF_Stream* pStream, FX_BOOL bInline) {
+ m_pStream = pStream;
+ if (m_bInline && m_pInlineDict) {
+ m_pInlineDict->Release();
+ m_pInlineDict = NULL;
+ }
+ m_bInline = bInline;
+ CPDF_Dictionary* pDict = pStream->GetDict();
+ if (m_bInline) {
+ m_pInlineDict = ToDictionary(pDict->Clone());
+ }
+ m_pOC = pDict->GetDictBy("OC");
+ m_bIsMask =
+ !pDict->KeyExist("ColorSpace") || pDict->GetIntegerBy("ImageMask");
+ m_bInterpolate = pDict->GetIntegerBy("Interpolate");
+ m_Height = pDict->GetIntegerBy("Height");
+ m_Width = pDict->GetIntegerBy("Width");
+ return TRUE;
+}
diff --git a/core/fpdfapi/fpdf_page/fpdf_page_parser.cpp b/core/fpdfapi/fpdf_page/fpdf_page_parser.cpp
new file mode 100644
index 0000000000..e4cdaba9d0
--- /dev/null
+++ b/core/fpdfapi/fpdf_page/fpdf_page_parser.cpp
@@ -0,0 +1,1819 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_page/pageint.h"
+
+#include <vector>
+
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_document.h"
+#include "core/include/fpdfapi/cpdf_name.h"
+#include "core/include/fpdfapi/cpdf_number.h"
+#include "core/include/fpdfapi/cpdf_reference.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_page.h"
+#include "core/include/fpdfapi/fpdf_parser_decode.h"
+#include "core/include/fpdfapi/fpdf_serial.h"
+
+namespace {
+
+const char kPathOperatorSubpath = 'm';
+const char kPathOperatorLine = 'l';
+const char kPathOperatorCubicBezier1 = 'c';
+const char kPathOperatorCubicBezier2 = 'v';
+const char kPathOperatorCubicBezier3 = 'y';
+const char kPathOperatorClosePath = 'h';
+const char kPathOperatorRectangle[] = "re";
+
+struct _FX_BSTR {
+ const FX_CHAR* m_Ptr;
+ int m_Size;
+};
+#define _FX_BSTRC(str) \
+ { str, sizeof(str) - 1 }
+
+struct PDF_AbbrPairs {
+ _FX_BSTR full_name;
+ _FX_BSTR abbr;
+};
+
+const PDF_AbbrPairs PDF_InlineKeyAbbr[] = {
+ {_FX_BSTRC("BitsPerComponent"), _FX_BSTRC("BPC")},
+ {_FX_BSTRC("ColorSpace"), _FX_BSTRC("CS")},
+ {_FX_BSTRC("Decode"), _FX_BSTRC("D")},
+ {_FX_BSTRC("DecodeParms"), _FX_BSTRC("DP")},
+ {_FX_BSTRC("Filter"), _FX_BSTRC("F")},
+ {_FX_BSTRC("Height"), _FX_BSTRC("H")},
+ {_FX_BSTRC("ImageMask"), _FX_BSTRC("IM")},
+ {_FX_BSTRC("Interpolate"), _FX_BSTRC("I")},
+ {_FX_BSTRC("Width"), _FX_BSTRC("W")},
+};
+
+const PDF_AbbrPairs PDF_InlineValueAbbr[] = {
+ {_FX_BSTRC("DeviceGray"), _FX_BSTRC("G")},
+ {_FX_BSTRC("DeviceRGB"), _FX_BSTRC("RGB")},
+ {_FX_BSTRC("DeviceCMYK"), _FX_BSTRC("CMYK")},
+ {_FX_BSTRC("Indexed"), _FX_BSTRC("I")},
+ {_FX_BSTRC("ASCIIHexDecode"), _FX_BSTRC("AHx")},
+ {_FX_BSTRC("ASCII85Decode"), _FX_BSTRC("A85")},
+ {_FX_BSTRC("LZWDecode"), _FX_BSTRC("LZW")},
+ {_FX_BSTRC("FlateDecode"), _FX_BSTRC("Fl")},
+ {_FX_BSTRC("RunLengthDecode"), _FX_BSTRC("RL")},
+ {_FX_BSTRC("CCITTFaxDecode"), _FX_BSTRC("CCF")},
+ {_FX_BSTRC("DCTDecode"), _FX_BSTRC("DCT")},
+};
+
+struct AbbrReplacementOp {
+ bool is_replace_key;
+ CFX_ByteString key;
+ CFX_ByteStringC replacement;
+};
+
+class CPDF_StreamParserAutoClearer {
+ public:
+ CPDF_StreamParserAutoClearer(CPDF_StreamParser** scoped_variable,
+ CPDF_StreamParser* new_parser)
+ : scoped_variable_(scoped_variable) {
+ *scoped_variable_ = new_parser;
+ }
+ ~CPDF_StreamParserAutoClearer() { *scoped_variable_ = NULL; }
+
+ private:
+ CPDF_StreamParser** scoped_variable_;
+};
+
+CFX_ByteStringC PDF_FindFullName(const PDF_AbbrPairs* table,
+ size_t count,
+ const CFX_ByteStringC& abbr) {
+ for (size_t i = 0; i < count; ++i) {
+ if (abbr.GetLength() != table[i].abbr.m_Size)
+ continue;
+ if (memcmp(abbr.GetPtr(), table[i].abbr.m_Ptr, abbr.GetLength()))
+ continue;
+ return CFX_ByteStringC(table[i].full_name.m_Ptr, table[i].full_name.m_Size);
+ }
+ return CFX_ByteStringC();
+}
+
+} // namespace
+
+bool IsPathOperator(const uint8_t* buf, size_t len) {
+ if (len == 1) {
+ uint8_t op = buf[0];
+ if (op == kPathOperatorSubpath || op == kPathOperatorLine ||
+ op == kPathOperatorCubicBezier1 || op == kPathOperatorCubicBezier2 ||
+ op == kPathOperatorCubicBezier3) {
+ return true;
+ }
+ } else if (len == 2) {
+ if (buf[0] == kPathOperatorRectangle[0] &&
+ buf[1] == kPathOperatorRectangle[1]) {
+ return true;
+ }
+ }
+ return false;
+}
+
+CPDF_StreamContentParser::CPDF_StreamContentParser(
+ CPDF_Document* pDocument,
+ CPDF_Dictionary* pPageResources,
+ CPDF_Dictionary* pParentResources,
+ CFX_Matrix* pmtContentToUser,
+ CPDF_PageObjectHolder* pObjHolder,
+ CPDF_Dictionary* pResources,
+ CFX_FloatRect* pBBox,
+ CPDF_ParseOptions* pOptions,
+ CPDF_AllStates* pStates,
+ int level)
+ : m_pDocument(pDocument),
+ m_pPageResources(pPageResources),
+ m_pParentResources(pParentResources),
+ m_pResources(pResources),
+ m_pObjectHolder(pObjHolder),
+ m_Level(level),
+ m_ParamStartPos(0),
+ m_ParamCount(0),
+ m_pCurStates(new CPDF_AllStates),
+ m_pLastTextObject(nullptr),
+ m_DefFontSize(0),
+ m_pPathPoints(nullptr),
+ m_PathPointCount(0),
+ m_PathAllocSize(0),
+ m_PathCurrentX(0.0f),
+ m_PathCurrentY(0.0f),
+ m_PathClipType(0),
+ m_pLastImage(nullptr),
+ m_pLastImageDict(nullptr),
+ m_pLastCloneImageDict(nullptr),
+ m_bReleaseLastDict(TRUE),
+ m_bColored(FALSE),
+ m_bResourceMissing(FALSE) {
+ if (pmtContentToUser) {
+ m_mtContentToUser = *pmtContentToUser;
+ }
+ if (pOptions) {
+ m_Options = *pOptions;
+ }
+ if (!m_pResources) {
+ m_pResources = m_pParentResources;
+ }
+ if (!m_pResources) {
+ m_pResources = m_pPageResources;
+ }
+ if (pBBox) {
+ m_BBox = *pBBox;
+ }
+ if (pStates) {
+ m_pCurStates->Copy(*pStates);
+ } else {
+ m_pCurStates->m_GeneralState.New();
+ m_pCurStates->m_GraphState.New();
+ m_pCurStates->m_TextState.New();
+ m_pCurStates->m_ColorState.New();
+ }
+ for (size_t i = 0; i < FX_ArraySize(m_Type3Data); ++i) {
+ m_Type3Data[i] = 0.0;
+ }
+}
+
+CPDF_StreamContentParser::~CPDF_StreamContentParser() {
+ ClearAllParams();
+ FX_Free(m_pPathPoints);
+ if (m_pLastImageDict) {
+ m_pLastImageDict->Release();
+ }
+ if (m_pLastCloneImageDict) {
+ m_pLastCloneImageDict->Release();
+ }
+}
+
+int CPDF_StreamContentParser::GetNextParamPos() {
+ if (m_ParamCount == PARAM_BUF_SIZE) {
+ m_ParamStartPos++;
+ if (m_ParamStartPos == PARAM_BUF_SIZE) {
+ m_ParamStartPos = 0;
+ }
+ if (m_ParamBuf[m_ParamStartPos].m_Type == 0) {
+ if (CPDF_Object* pObject = m_ParamBuf[m_ParamStartPos].m_pObject)
+ pObject->Release();
+ }
+ return m_ParamStartPos;
+ }
+ int index = m_ParamStartPos + m_ParamCount;
+ if (index >= PARAM_BUF_SIZE) {
+ index -= PARAM_BUF_SIZE;
+ }
+ m_ParamCount++;
+ return index;
+}
+
+void CPDF_StreamContentParser::AddNameParam(const FX_CHAR* name, int len) {
+ int index = GetNextParamPos();
+ if (len > 32) {
+ m_ParamBuf[index].m_Type = ContentParam::OBJECT;
+ m_ParamBuf[index].m_pObject =
+ new CPDF_Name(PDF_NameDecode(CFX_ByteStringC(name, len)));
+ } else {
+ m_ParamBuf[index].m_Type = ContentParam::NAME;
+ if (!FXSYS_memchr(name, '#', len)) {
+ FXSYS_memcpy(m_ParamBuf[index].m_Name.m_Buffer, name, len);
+ m_ParamBuf[index].m_Name.m_Len = len;
+ } else {
+ CFX_ByteString str = PDF_NameDecode(CFX_ByteStringC(name, len));
+ FXSYS_memcpy(m_ParamBuf[index].m_Name.m_Buffer, str.c_str(),
+ str.GetLength());
+ m_ParamBuf[index].m_Name.m_Len = str.GetLength();
+ }
+ }
+}
+
+void CPDF_StreamContentParser::AddNumberParam(const FX_CHAR* str, int len) {
+ int index = GetNextParamPos();
+ m_ParamBuf[index].m_Type = ContentParam::NUMBER;
+ FX_atonum(CFX_ByteStringC(str, len), m_ParamBuf[index].m_Number.m_bInteger,
+ &m_ParamBuf[index].m_Number.m_Integer);
+}
+void CPDF_StreamContentParser::AddObjectParam(CPDF_Object* pObj) {
+ int index = GetNextParamPos();
+ m_ParamBuf[index].m_Type = ContentParam::OBJECT;
+ m_ParamBuf[index].m_pObject = pObj;
+}
+void CPDF_StreamContentParser::ClearAllParams() {
+ FX_DWORD index = m_ParamStartPos;
+ for (FX_DWORD i = 0; i < m_ParamCount; i++) {
+ if (m_ParamBuf[index].m_Type == 0) {
+ if (CPDF_Object* pObject = m_ParamBuf[index].m_pObject)
+ pObject->Release();
+ }
+ index++;
+ if (index == PARAM_BUF_SIZE) {
+ index = 0;
+ }
+ }
+ m_ParamStartPos = 0;
+ m_ParamCount = 0;
+}
+
+CPDF_Object* CPDF_StreamContentParser::GetObject(FX_DWORD index) {
+ if (index >= m_ParamCount) {
+ return NULL;
+ }
+ int real_index = m_ParamStartPos + m_ParamCount - index - 1;
+ if (real_index >= PARAM_BUF_SIZE) {
+ real_index -= PARAM_BUF_SIZE;
+ }
+ ContentParam& param = m_ParamBuf[real_index];
+ if (param.m_Type == ContentParam::NUMBER) {
+ CPDF_Number* pNumber = param.m_Number.m_bInteger
+ ? new CPDF_Number(param.m_Number.m_Integer)
+ : new CPDF_Number(param.m_Number.m_Float);
+
+ param.m_Type = ContentParam::OBJECT;
+ param.m_pObject = pNumber;
+ return pNumber;
+ }
+ if (param.m_Type == ContentParam::NAME) {
+ CPDF_Name* pName = new CPDF_Name(
+ CFX_ByteString(param.m_Name.m_Buffer, param.m_Name.m_Len));
+ param.m_Type = ContentParam::OBJECT;
+ param.m_pObject = pName;
+ return pName;
+ }
+ if (param.m_Type == ContentParam::OBJECT) {
+ return param.m_pObject;
+ }
+ ASSERT(FALSE);
+ return NULL;
+}
+
+CFX_ByteString CPDF_StreamContentParser::GetString(FX_DWORD index) {
+ if (index >= m_ParamCount) {
+ return CFX_ByteString();
+ }
+ int real_index = m_ParamStartPos + m_ParamCount - index - 1;
+ if (real_index >= PARAM_BUF_SIZE) {
+ real_index -= PARAM_BUF_SIZE;
+ }
+ ContentParam& param = m_ParamBuf[real_index];
+ if (param.m_Type == ContentParam::NAME) {
+ return CFX_ByteString(param.m_Name.m_Buffer, param.m_Name.m_Len);
+ }
+ if (param.m_Type == 0 && param.m_pObject) {
+ return param.m_pObject->GetString();
+ }
+ return CFX_ByteString();
+}
+
+FX_FLOAT CPDF_StreamContentParser::GetNumber(FX_DWORD index) {
+ if (index >= m_ParamCount) {
+ return 0;
+ }
+ int real_index = m_ParamStartPos + m_ParamCount - index - 1;
+ if (real_index >= PARAM_BUF_SIZE) {
+ real_index -= PARAM_BUF_SIZE;
+ }
+ ContentParam& param = m_ParamBuf[real_index];
+ if (param.m_Type == ContentParam::NUMBER) {
+ return param.m_Number.m_bInteger ? (FX_FLOAT)param.m_Number.m_Integer
+ : param.m_Number.m_Float;
+ }
+ if (param.m_Type == 0 && param.m_pObject) {
+ return param.m_pObject->GetNumber();
+ }
+ return 0;
+}
+
+FX_FLOAT CPDF_StreamContentParser::GetNumber16(FX_DWORD index) {
+ return GetNumber(index);
+}
+
+void CPDF_StreamContentParser::SetGraphicStates(CPDF_PageObject* pObj,
+ FX_BOOL bColor,
+ FX_BOOL bText,
+ FX_BOOL bGraph) {
+ pObj->m_GeneralState = m_pCurStates->m_GeneralState;
+ pObj->m_ClipPath = m_pCurStates->m_ClipPath;
+ pObj->m_ContentMark = m_CurContentMark;
+ if (bColor) {
+ pObj->m_ColorState = m_pCurStates->m_ColorState;
+ }
+ if (bGraph) {
+ pObj->m_GraphState = m_pCurStates->m_GraphState;
+ }
+ if (bText) {
+ pObj->m_TextState = m_pCurStates->m_TextState;
+ }
+}
+
+// static
+CPDF_StreamContentParser::OpCodes
+CPDF_StreamContentParser::InitializeOpCodes() {
+ return OpCodes({
+ {FXBSTR_ID('"', 0, 0, 0),
+ &CPDF_StreamContentParser::Handle_NextLineShowText_Space},
+ {FXBSTR_ID('\'', 0, 0, 0),
+ &CPDF_StreamContentParser::Handle_NextLineShowText},
+ {FXBSTR_ID('B', 0, 0, 0),
+ &CPDF_StreamContentParser::Handle_FillStrokePath},
+ {FXBSTR_ID('B', '*', 0, 0),
+ &CPDF_StreamContentParser::Handle_EOFillStrokePath},
+ {FXBSTR_ID('B', 'D', 'C', 0),
+ &CPDF_StreamContentParser::Handle_BeginMarkedContent_Dictionary},
+ {FXBSTR_ID('B', 'I', 0, 0), &CPDF_StreamContentParser::Handle_BeginImage},
+ {FXBSTR_ID('B', 'M', 'C', 0),
+ &CPDF_StreamContentParser::Handle_BeginMarkedContent},
+ {FXBSTR_ID('B', 'T', 0, 0), &CPDF_StreamContentParser::Handle_BeginText},
+ {FXBSTR_ID('C', 'S', 0, 0),
+ &CPDF_StreamContentParser::Handle_SetColorSpace_Stroke},
+ {FXBSTR_ID('D', 'P', 0, 0),
+ &CPDF_StreamContentParser::Handle_MarkPlace_Dictionary},
+ {FXBSTR_ID('D', 'o', 0, 0),
+ &CPDF_StreamContentParser::Handle_ExecuteXObject},
+ {FXBSTR_ID('E', 'I', 0, 0), &CPDF_StreamContentParser::Handle_EndImage},
+ {FXBSTR_ID('E', 'M', 'C', 0),
+ &CPDF_StreamContentParser::Handle_EndMarkedContent},
+ {FXBSTR_ID('E', 'T', 0, 0), &CPDF_StreamContentParser::Handle_EndText},
+ {FXBSTR_ID('F', 0, 0, 0), &CPDF_StreamContentParser::Handle_FillPathOld},
+ {FXBSTR_ID('G', 0, 0, 0),
+ &CPDF_StreamContentParser::Handle_SetGray_Stroke},
+ {FXBSTR_ID('I', 'D', 0, 0),
+ &CPDF_StreamContentParser::Handle_BeginImageData},
+ {FXBSTR_ID('J', 0, 0, 0), &CPDF_StreamContentParser::Handle_SetLineCap},
+ {FXBSTR_ID('K', 0, 0, 0),
+ &CPDF_StreamContentParser::Handle_SetCMYKColor_Stroke},
+ {FXBSTR_ID('M', 0, 0, 0),
+ &CPDF_StreamContentParser::Handle_SetMiterLimit},
+ {FXBSTR_ID('M', 'P', 0, 0), &CPDF_StreamContentParser::Handle_MarkPlace},
+ {FXBSTR_ID('Q', 0, 0, 0),
+ &CPDF_StreamContentParser::Handle_RestoreGraphState},
+ {FXBSTR_ID('R', 'G', 0, 0),
+ &CPDF_StreamContentParser::Handle_SetRGBColor_Stroke},
+ {FXBSTR_ID('S', 0, 0, 0), &CPDF_StreamContentParser::Handle_StrokePath},
+ {FXBSTR_ID('S', 'C', 0, 0),
+ &CPDF_StreamContentParser::Handle_SetColor_Stroke},
+ {FXBSTR_ID('S', 'C', 'N', 0),
+ &CPDF_StreamContentParser::Handle_SetColorPS_Stroke},
+ {FXBSTR_ID('T', '*', 0, 0),
+ &CPDF_StreamContentParser::Handle_MoveToNextLine},
+ {FXBSTR_ID('T', 'D', 0, 0),
+ &CPDF_StreamContentParser::Handle_MoveTextPoint_SetLeading},
+ {FXBSTR_ID('T', 'J', 0, 0),
+ &CPDF_StreamContentParser::Handle_ShowText_Positioning},
+ {FXBSTR_ID('T', 'L', 0, 0),
+ &CPDF_StreamContentParser::Handle_SetTextLeading},
+ {FXBSTR_ID('T', 'c', 0, 0),
+ &CPDF_StreamContentParser::Handle_SetCharSpace},
+ {FXBSTR_ID('T', 'd', 0, 0),
+ &CPDF_StreamContentParser::Handle_MoveTextPoint},
+ {FXBSTR_ID('T', 'f', 0, 0), &CPDF_StreamContentParser::Handle_SetFont},
+ {FXBSTR_ID('T', 'j', 0, 0), &CPDF_StreamContentParser::Handle_ShowText},
+ {FXBSTR_ID('T', 'm', 0, 0),
+ &CPDF_StreamContentParser::Handle_SetTextMatrix},
+ {FXBSTR_ID('T', 'r', 0, 0),
+ &CPDF_StreamContentParser::Handle_SetTextRenderMode},
+ {FXBSTR_ID('T', 's', 0, 0),
+ &CPDF_StreamContentParser::Handle_SetTextRise},
+ {FXBSTR_ID('T', 'w', 0, 0),
+ &CPDF_StreamContentParser::Handle_SetWordSpace},
+ {FXBSTR_ID('T', 'z', 0, 0),
+ &CPDF_StreamContentParser::Handle_SetHorzScale},
+ {FXBSTR_ID('W', 0, 0, 0), &CPDF_StreamContentParser::Handle_Clip},
+ {FXBSTR_ID('W', '*', 0, 0), &CPDF_StreamContentParser::Handle_EOClip},
+ {FXBSTR_ID('b', 0, 0, 0),
+ &CPDF_StreamContentParser::Handle_CloseFillStrokePath},
+ {FXBSTR_ID('b', '*', 0, 0),
+ &CPDF_StreamContentParser::Handle_CloseEOFillStrokePath},
+ {FXBSTR_ID('c', 0, 0, 0), &CPDF_StreamContentParser::Handle_CurveTo_123},
+ {FXBSTR_ID('c', 'm', 0, 0),
+ &CPDF_StreamContentParser::Handle_ConcatMatrix},
+ {FXBSTR_ID('c', 's', 0, 0),
+ &CPDF_StreamContentParser::Handle_SetColorSpace_Fill},
+ {FXBSTR_ID('d', 0, 0, 0), &CPDF_StreamContentParser::Handle_SetDash},
+ {FXBSTR_ID('d', '0', 0, 0),
+ &CPDF_StreamContentParser::Handle_SetCharWidth},
+ {FXBSTR_ID('d', '1', 0, 0),
+ &CPDF_StreamContentParser::Handle_SetCachedDevice},
+ {FXBSTR_ID('f', 0, 0, 0), &CPDF_StreamContentParser::Handle_FillPath},
+ {FXBSTR_ID('f', '*', 0, 0), &CPDF_StreamContentParser::Handle_EOFillPath},
+ {FXBSTR_ID('g', 0, 0, 0), &CPDF_StreamContentParser::Handle_SetGray_Fill},
+ {FXBSTR_ID('g', 's', 0, 0),
+ &CPDF_StreamContentParser::Handle_SetExtendGraphState},
+ {FXBSTR_ID('h', 0, 0, 0), &CPDF_StreamContentParser::Handle_ClosePath},
+ {FXBSTR_ID('i', 0, 0, 0), &CPDF_StreamContentParser::Handle_SetFlat},
+ {FXBSTR_ID('j', 0, 0, 0), &CPDF_StreamContentParser::Handle_SetLineJoin},
+ {FXBSTR_ID('k', 0, 0, 0),
+ &CPDF_StreamContentParser::Handle_SetCMYKColor_Fill},
+ {FXBSTR_ID('l', 0, 0, 0), &CPDF_StreamContentParser::Handle_LineTo},
+ {FXBSTR_ID('m', 0, 0, 0), &CPDF_StreamContentParser::Handle_MoveTo},
+ {FXBSTR_ID('n', 0, 0, 0), &CPDF_StreamContentParser::Handle_EndPath},
+ {FXBSTR_ID('q', 0, 0, 0),
+ &CPDF_StreamContentParser::Handle_SaveGraphState},
+ {FXBSTR_ID('r', 'e', 0, 0), &CPDF_StreamContentParser::Handle_Rectangle},
+ {FXBSTR_ID('r', 'g', 0, 0),
+ &CPDF_StreamContentParser::Handle_SetRGBColor_Fill},
+ {FXBSTR_ID('r', 'i', 0, 0),
+ &CPDF_StreamContentParser::Handle_SetRenderIntent},
+ {FXBSTR_ID('s', 0, 0, 0),
+ &CPDF_StreamContentParser::Handle_CloseStrokePath},
+ {FXBSTR_ID('s', 'c', 0, 0),
+ &CPDF_StreamContentParser::Handle_SetColor_Fill},
+ {FXBSTR_ID('s', 'c', 'n', 0),
+ &CPDF_StreamContentParser::Handle_SetColorPS_Fill},
+ {FXBSTR_ID('s', 'h', 0, 0), &CPDF_StreamContentParser::Handle_ShadeFill},
+ {FXBSTR_ID('v', 0, 0, 0), &CPDF_StreamContentParser::Handle_CurveTo_23},
+ {FXBSTR_ID('w', 0, 0, 0), &CPDF_StreamContentParser::Handle_SetLineWidth},
+ {FXBSTR_ID('y', 0, 0, 0), &CPDF_StreamContentParser::Handle_CurveTo_13},
+ });
+}
+
+void CPDF_StreamContentParser::OnOperator(const FX_CHAR* op) {
+ int i = 0;
+ FX_DWORD opid = 0;
+ while (i < 4 && op[i]) {
+ opid = (opid << 8) + op[i];
+ i++;
+ }
+ while (i < 4) {
+ opid <<= 8;
+ i++;
+ }
+
+ static const OpCodes s_OpCodes = InitializeOpCodes();
+
+ auto it = s_OpCodes.find(opid);
+ if (it != s_OpCodes.end())
+ (this->*it->second)();
+}
+
+void CPDF_StreamContentParser::Handle_CloseFillStrokePath() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ Handle_ClosePath();
+ AddPathObject(FXFILL_WINDING, TRUE);
+}
+
+void CPDF_StreamContentParser::Handle_FillStrokePath() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ AddPathObject(FXFILL_WINDING, TRUE);
+}
+
+void CPDF_StreamContentParser::Handle_CloseEOFillStrokePath() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ AddPathPoint(m_PathStartX, m_PathStartY, FXPT_LINETO | FXPT_CLOSEFIGURE);
+ AddPathObject(FXFILL_ALTERNATE, TRUE);
+}
+
+void CPDF_StreamContentParser::Handle_EOFillStrokePath() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ AddPathObject(FXFILL_ALTERNATE, TRUE);
+}
+
+void CPDF_StreamContentParser::Handle_BeginMarkedContent_Dictionary() {
+ if (!m_Options.m_bMarkedContent) {
+ return;
+ }
+ CFX_ByteString tag = GetString(1);
+ CPDF_Object* pProperty = GetObject(0);
+ if (!pProperty) {
+ return;
+ }
+ FX_BOOL bDirect = TRUE;
+ if (pProperty->IsName()) {
+ pProperty = FindResourceObj("Properties", pProperty->GetString());
+ if (!pProperty)
+ return;
+ bDirect = FALSE;
+ }
+ if (CPDF_Dictionary* pDict = pProperty->AsDictionary()) {
+ m_CurContentMark.GetModify()->AddMark(tag, pDict, bDirect);
+ }
+}
+
+void CPDF_StreamContentParser::Handle_BeginImage() {
+ FX_FILESIZE savePos = m_pSyntax->GetPos();
+ CPDF_Dictionary* pDict = new CPDF_Dictionary;
+ while (1) {
+ CPDF_StreamParser::SyntaxType type = m_pSyntax->ParseNextElement();
+ if (type == CPDF_StreamParser::Keyword) {
+ CFX_ByteString bsKeyword(m_pSyntax->GetWordBuf(),
+ m_pSyntax->GetWordSize());
+ if (bsKeyword != "ID") {
+ m_pSyntax->SetPos(savePos);
+ pDict->Release();
+ return;
+ }
+ }
+ if (type != CPDF_StreamParser::Name) {
+ break;
+ }
+ CFX_ByteString key((const FX_CHAR*)m_pSyntax->GetWordBuf() + 1,
+ m_pSyntax->GetWordSize() - 1);
+ std::unique_ptr<CPDF_Object, ReleaseDeleter<CPDF_Object>> pObj(
+ m_pSyntax->ReadNextObject());
+ if (!key.IsEmpty()) {
+ FX_DWORD dwObjNum = pObj ? pObj->GetObjNum() : 0;
+ if (dwObjNum)
+ pDict->SetAtReference(key, m_pDocument, dwObjNum);
+ else
+ pDict->SetAt(key, pObj.release());
+ }
+ }
+ PDF_ReplaceAbbr(pDict);
+ CPDF_Object* pCSObj = NULL;
+ if (pDict->KeyExist("ColorSpace")) {
+ pCSObj = pDict->GetElementValue("ColorSpace");
+ if (pCSObj->IsName()) {
+ CFX_ByteString name = pCSObj->GetString();
+ if (name != "DeviceRGB" && name != "DeviceGray" && name != "DeviceCMYK") {
+ pCSObj = FindResourceObj("ColorSpace", name);
+ if (pCSObj && !pCSObj->GetObjNum()) {
+ pCSObj = pCSObj->Clone();
+ pDict->SetAt("ColorSpace", pCSObj);
+ }
+ }
+ }
+ }
+ CPDF_Stream* pStream = m_pSyntax->ReadInlineStream(
+ m_pDocument, pDict, pCSObj, m_Options.m_bDecodeInlineImage);
+ while (1) {
+ CPDF_StreamParser::SyntaxType type = m_pSyntax->ParseNextElement();
+ if (type == CPDF_StreamParser::EndOfData) {
+ break;
+ }
+ if (type != CPDF_StreamParser::Keyword) {
+ continue;
+ }
+ if (m_pSyntax->GetWordSize() == 2 && m_pSyntax->GetWordBuf()[0] == 'E' &&
+ m_pSyntax->GetWordBuf()[1] == 'I') {
+ break;
+ }
+ }
+ if (m_Options.m_bTextOnly) {
+ if (pStream) {
+ pStream->Release();
+ } else {
+ pDict->Release();
+ }
+ return;
+ }
+ pDict->SetAtName("Subtype", "Image");
+ CPDF_ImageObject* pImgObj = AddImage(pStream, NULL, TRUE);
+ if (!pImgObj) {
+ if (pStream) {
+ pStream->Release();
+ } else {
+ pDict->Release();
+ }
+ }
+}
+
+void CPDF_StreamContentParser::Handle_BeginMarkedContent() {
+ if (!m_Options.m_bMarkedContent) {
+ return;
+ }
+ CFX_ByteString tag = GetString(0);
+ m_CurContentMark.GetModify()->AddMark(tag, NULL, FALSE);
+}
+
+void CPDF_StreamContentParser::Handle_BeginText() {
+ m_pCurStates->m_TextMatrix.Set(1.0f, 0, 0, 1.0f, 0, 0);
+ OnChangeTextMatrix();
+ m_pCurStates->m_TextX = 0;
+ m_pCurStates->m_TextY = 0;
+ m_pCurStates->m_TextLineX = 0;
+ m_pCurStates->m_TextLineY = 0;
+}
+
+void CPDF_StreamContentParser::Handle_CurveTo_123() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ AddPathPoint(GetNumber(5), GetNumber(4), FXPT_BEZIERTO);
+ AddPathPoint(GetNumber(3), GetNumber(2), FXPT_BEZIERTO);
+ AddPathPoint(GetNumber(1), GetNumber(0), FXPT_BEZIERTO);
+}
+
+void CPDF_StreamContentParser::Handle_ConcatMatrix() {
+ FX_FLOAT a2 = GetNumber16(5), b2 = GetNumber16(4), c2 = GetNumber16(3),
+ d2 = GetNumber16(2);
+ FX_FLOAT e2 = GetNumber(1), f2 = GetNumber(0);
+ CFX_Matrix new_matrix(a2, b2, c2, d2, e2, f2);
+ new_matrix.Concat(m_pCurStates->m_CTM);
+ m_pCurStates->m_CTM = new_matrix;
+ OnChangeTextMatrix();
+}
+
+void CPDF_StreamContentParser::Handle_SetColorSpace_Fill() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ CFX_ByteString csname = GetString(0);
+ CPDF_ColorSpace* pCS = FindColorSpace(csname);
+ if (!pCS) {
+ return;
+ }
+ m_pCurStates->m_ColorState.GetModify()->m_FillColor.SetColorSpace(pCS);
+}
+
+void CPDF_StreamContentParser::Handle_SetColorSpace_Stroke() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ CFX_ByteString csname = GetString(0);
+ CPDF_ColorSpace* pCS = FindColorSpace(csname);
+ if (!pCS) {
+ return;
+ }
+ m_pCurStates->m_ColorState.GetModify()->m_StrokeColor.SetColorSpace(pCS);
+}
+
+void CPDF_StreamContentParser::Handle_SetDash() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ CPDF_Array* pArray = GetObject(1) ? GetObject(1)->GetArray() : NULL;
+ if (!pArray) {
+ return;
+ }
+ m_pCurStates->SetLineDash(pArray, GetNumber(0), 1.0f);
+}
+
+void CPDF_StreamContentParser::Handle_SetCharWidth() {
+ m_Type3Data[0] = GetNumber(1);
+ m_Type3Data[1] = GetNumber(0);
+ m_bColored = TRUE;
+}
+
+void CPDF_StreamContentParser::Handle_SetCachedDevice() {
+ for (int i = 0; i < 6; i++) {
+ m_Type3Data[i] = GetNumber(5 - i);
+ }
+ m_bColored = FALSE;
+}
+
+void CPDF_StreamContentParser::Handle_ExecuteXObject() {
+ CFX_ByteString name = GetString(0);
+ if (name == m_LastImageName && m_pLastImage && m_pLastImage->GetStream() &&
+ m_pLastImage->GetStream()->GetObjNum()) {
+ AddImage(nullptr, m_pLastImage, FALSE);
+ return;
+ }
+
+ if (m_Options.m_bTextOnly) {
+ if (!m_pResources)
+ return;
+
+ CPDF_Dictionary* pList = m_pResources->GetDictBy("XObject");
+ if (!pList && m_pPageResources && m_pResources != m_pPageResources)
+ pList = m_pPageResources->GetDictBy("XObject");
+ if (!pList)
+ return;
+ CPDF_Reference* pRes = ToReference(pList->GetElement(name));
+ if (!pRes)
+ return;
+
+ FX_BOOL bForm;
+ if (m_pDocument->IsFormStream(pRes->GetRefObjNum(), bForm) && !bForm)
+ return;
+ }
+
+ CPDF_Stream* pXObject = ToStream(FindResourceObj("XObject", name));
+ if (!pXObject) {
+ m_bResourceMissing = TRUE;
+ return;
+ }
+
+ CFX_ByteStringC type = pXObject->GetDict()
+ ? pXObject->GetDict()->GetConstStringBy("Subtype")
+ : CFX_ByteStringC();
+ if (type == "Image") {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ CPDF_ImageObject* pObj = AddImage(pXObject, NULL, FALSE);
+ m_LastImageName = name;
+ m_pLastImage = pObj->m_pImage;
+ if (!m_pObjectHolder->HasImageMask())
+ m_pObjectHolder->SetHasImageMask(m_pLastImage->IsMask());
+ } else if (type == "Form") {
+ AddForm(pXObject);
+ } else {
+ return;
+ }
+}
+
+void CPDF_StreamContentParser::AddForm(CPDF_Stream* pStream) {
+ if (!m_Options.m_bSeparateForm) {
+ CPDF_Dictionary* pResources = pStream->GetDict()->GetDictBy("Resources");
+ CFX_Matrix form_matrix = pStream->GetDict()->GetMatrixBy("Matrix");
+ form_matrix.Concat(m_pCurStates->m_CTM);
+ CPDF_Array* pBBox = pStream->GetDict()->GetArrayBy("BBox");
+ CFX_FloatRect form_bbox;
+ CPDF_Path ClipPath;
+ if (pBBox) {
+ form_bbox = pStream->GetDict()->GetRectBy("BBox");
+ ClipPath.New();
+ ClipPath.AppendRect(form_bbox.left, form_bbox.bottom, form_bbox.right,
+ form_bbox.top);
+ ClipPath.Transform(&form_matrix);
+ form_bbox.Transform(&form_matrix);
+ }
+ CPDF_StreamContentParser parser(m_pDocument, m_pPageResources, m_pResources,
+ &m_mtContentToUser, m_pObjectHolder,
+ pResources, &form_bbox, &m_Options,
+ m_pCurStates.get(), m_Level + 1);
+ parser.m_pCurStates->m_CTM = form_matrix;
+ if (ClipPath.NotNull()) {
+ parser.m_pCurStates->m_ClipPath.AppendPath(ClipPath, FXFILL_WINDING,
+ TRUE);
+ }
+ CPDF_StreamAcc stream;
+ stream.LoadAllData(pStream, FALSE);
+ if (stream.GetSize() == 0) {
+ return;
+ }
+ parser.Parse(stream.GetData(), stream.GetSize(), 0);
+ return;
+ }
+ std::unique_ptr<CPDF_FormObject> pFormObj(new CPDF_FormObject);
+ pFormObj->m_pForm =
+ new CPDF_Form(m_pDocument, m_pPageResources, pStream, m_pResources);
+ pFormObj->m_FormMatrix = m_pCurStates->m_CTM;
+ pFormObj->m_FormMatrix.Concat(m_mtContentToUser);
+ CPDF_AllStates status;
+ status.m_GeneralState = m_pCurStates->m_GeneralState;
+ status.m_GraphState = m_pCurStates->m_GraphState;
+ status.m_ColorState = m_pCurStates->m_ColorState;
+ status.m_TextState = m_pCurStates->m_TextState;
+ pFormObj->m_pForm->ParseContent(&status, NULL, NULL, &m_Options, m_Level + 1);
+ if (!m_pObjectHolder->BackgroundAlphaNeeded() &&
+ pFormObj->m_pForm->BackgroundAlphaNeeded()) {
+ m_pObjectHolder->SetBackgroundAlphaNeeded(TRUE);
+ }
+ pFormObj->CalcBoundingBox();
+ SetGraphicStates(pFormObj.get(), TRUE, TRUE, TRUE);
+ m_pObjectHolder->GetPageObjectList()->push_back(std::move(pFormObj));
+}
+
+CPDF_ImageObject* CPDF_StreamContentParser::AddImage(CPDF_Stream* pStream,
+ CPDF_Image* pImage,
+ FX_BOOL bInline) {
+ if (!pStream && !pImage) {
+ return NULL;
+ }
+ CFX_Matrix ImageMatrix;
+ ImageMatrix.Copy(m_pCurStates->m_CTM);
+ ImageMatrix.Concat(m_mtContentToUser);
+
+ std::unique_ptr<CPDF_ImageObject> pImageObj(new CPDF_ImageObject);
+ if (pImage) {
+ pImageObj->m_pImage =
+ m_pDocument->GetPageData()->GetImage(pImage->GetStream());
+ } else if (pStream->GetObjNum()) {
+ pImageObj->m_pImage = m_pDocument->LoadImageF(pStream);
+ } else {
+ pImageObj->m_pImage = new CPDF_Image(m_pDocument);
+ pImageObj->m_pImage->LoadImageF(pStream, bInline);
+ }
+ SetGraphicStates(pImageObj.get(), pImageObj->m_pImage->IsMask(), FALSE,
+ FALSE);
+ pImageObj->m_Matrix = ImageMatrix;
+ pImageObj->CalcBoundingBox();
+ CPDF_ImageObject* pRet = pImageObj.get();
+ m_pObjectHolder->GetPageObjectList()->push_back(std::move(pImageObj));
+ return pRet;
+}
+
+void CPDF_StreamContentParser::Handle_MarkPlace_Dictionary() {}
+
+void CPDF_StreamContentParser::Handle_EndImage() {}
+
+void CPDF_StreamContentParser::Handle_EndMarkedContent() {
+ if (!m_Options.m_bMarkedContent) {
+ return;
+ }
+ if (m_CurContentMark.IsNull()) {
+ return;
+ }
+ int count = m_CurContentMark.GetObject()->CountItems();
+ if (count == 1) {
+ m_CurContentMark.SetNull();
+ return;
+ }
+ m_CurContentMark.GetModify()->DeleteLastMark();
+}
+
+void CPDF_StreamContentParser::Handle_EndText() {
+ int count = m_ClipTextList.GetSize();
+ if (count == 0) {
+ return;
+ }
+ if (m_pCurStates->m_TextState.GetObject()->m_TextMode < 4) {
+ for (int i = 0; i < count; i++) {
+ delete m_ClipTextList.GetAt(i);
+ }
+ } else {
+ m_pCurStates->m_ClipPath.AppendTexts(m_ClipTextList.GetData(), count);
+ }
+ m_ClipTextList.RemoveAll();
+}
+
+void CPDF_StreamContentParser::Handle_FillPath() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ AddPathObject(FXFILL_WINDING, FALSE);
+}
+
+void CPDF_StreamContentParser::Handle_FillPathOld() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ AddPathObject(FXFILL_WINDING, FALSE);
+}
+
+void CPDF_StreamContentParser::Handle_EOFillPath() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ AddPathObject(FXFILL_ALTERNATE, FALSE);
+}
+
+void CPDF_StreamContentParser::Handle_SetGray_Fill() {
+ FX_FLOAT value = GetNumber(0);
+ CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY);
+ m_pCurStates->m_ColorState.SetFillColor(pCS, &value, 1);
+}
+
+void CPDF_StreamContentParser::Handle_SetGray_Stroke() {
+ FX_FLOAT value = GetNumber(0);
+ CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY);
+ m_pCurStates->m_ColorState.SetStrokeColor(pCS, &value, 1);
+}
+
+void CPDF_StreamContentParser::Handle_SetExtendGraphState() {
+ CFX_ByteString name = GetString(0);
+ CPDF_Dictionary* pGS = ToDictionary(FindResourceObj("ExtGState", name));
+ if (!pGS) {
+ m_bResourceMissing = TRUE;
+ return;
+ }
+ m_pCurStates->ProcessExtGS(pGS, this);
+}
+
+void CPDF_StreamContentParser::Handle_ClosePath() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ if (m_PathPointCount == 0) {
+ return;
+ }
+ if (m_PathStartX != m_PathCurrentX || m_PathStartY != m_PathCurrentY) {
+ AddPathPoint(m_PathStartX, m_PathStartY, FXPT_LINETO | FXPT_CLOSEFIGURE);
+ } else if (m_pPathPoints[m_PathPointCount - 1].m_Flag != FXPT_MOVETO) {
+ m_pPathPoints[m_PathPointCount - 1].m_Flag |= FXPT_CLOSEFIGURE;
+ }
+}
+
+void CPDF_StreamContentParser::Handle_SetFlat() {
+ m_pCurStates->m_GeneralState.GetModify()->m_Flatness = GetNumber(0);
+}
+
+void CPDF_StreamContentParser::Handle_BeginImageData() {}
+
+void CPDF_StreamContentParser::Handle_SetLineJoin() {
+ m_pCurStates->m_GraphState.GetModify()->m_LineJoin =
+ (CFX_GraphStateData::LineJoin)GetInteger(0);
+}
+
+void CPDF_StreamContentParser::Handle_SetLineCap() {
+ m_pCurStates->m_GraphState.GetModify()->m_LineCap =
+ (CFX_GraphStateData::LineCap)GetInteger(0);
+}
+
+void CPDF_StreamContentParser::Handle_SetCMYKColor_Fill() {
+ if (m_ParamCount != 4)
+ return;
+
+ FX_FLOAT values[4];
+ for (int i = 0; i < 4; i++) {
+ values[i] = GetNumber(3 - i);
+ }
+ CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICECMYK);
+ m_pCurStates->m_ColorState.SetFillColor(pCS, values, 4);
+}
+
+void CPDF_StreamContentParser::Handle_SetCMYKColor_Stroke() {
+ if (m_ParamCount != 4)
+ return;
+
+ FX_FLOAT values[4];
+ for (int i = 0; i < 4; i++) {
+ values[i] = GetNumber(3 - i);
+ }
+ CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICECMYK);
+ m_pCurStates->m_ColorState.SetStrokeColor(pCS, values, 4);
+}
+
+void CPDF_StreamContentParser::Handle_LineTo() {
+ if (m_ParamCount != 2)
+ return;
+
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ AddPathPoint(GetNumber(1), GetNumber(0), FXPT_LINETO);
+}
+
+void CPDF_StreamContentParser::Handle_MoveTo() {
+ if (m_ParamCount != 2)
+ return;
+
+ if (m_Options.m_bTextOnly) {
+ m_pSyntax->SkipPathObject();
+ return;
+ }
+ AddPathPoint(GetNumber(1), GetNumber(0), FXPT_MOVETO);
+ ParsePathObject();
+}
+
+void CPDF_StreamContentParser::Handle_SetMiterLimit() {
+ m_pCurStates->m_GraphState.GetModify()->m_MiterLimit = GetNumber(0);
+}
+
+void CPDF_StreamContentParser::Handle_MarkPlace() {}
+
+void CPDF_StreamContentParser::Handle_EndPath() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ AddPathObject(0, FALSE);
+}
+
+void CPDF_StreamContentParser::Handle_SaveGraphState() {
+ std::unique_ptr<CPDF_AllStates> pStates(new CPDF_AllStates);
+ pStates->Copy(*m_pCurStates);
+ m_StateStack.push_back(std::move(pStates));
+}
+
+void CPDF_StreamContentParser::Handle_RestoreGraphState() {
+ if (m_StateStack.empty())
+ return;
+ std::unique_ptr<CPDF_AllStates> pStates = std::move(m_StateStack.back());
+ m_StateStack.pop_back();
+ m_pCurStates->Copy(*pStates);
+}
+
+void CPDF_StreamContentParser::Handle_Rectangle() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ FX_FLOAT x = GetNumber(3), y = GetNumber(2);
+ FX_FLOAT w = GetNumber(1), h = GetNumber(0);
+ AddPathRect(x, y, w, h);
+}
+
+void CPDF_StreamContentParser::AddPathRect(FX_FLOAT x,
+ FX_FLOAT y,
+ FX_FLOAT w,
+ FX_FLOAT h) {
+ AddPathPoint(x, y, FXPT_MOVETO);
+ AddPathPoint(x + w, y, FXPT_LINETO);
+ AddPathPoint(x + w, y + h, FXPT_LINETO);
+ AddPathPoint(x, y + h, FXPT_LINETO);
+ AddPathPoint(x, y, FXPT_LINETO | FXPT_CLOSEFIGURE);
+}
+
+void CPDF_StreamContentParser::Handle_SetRGBColor_Fill() {
+ if (m_ParamCount != 3)
+ return;
+
+ FX_FLOAT values[3];
+ for (int i = 0; i < 3; i++) {
+ values[i] = GetNumber(2 - i);
+ }
+ CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB);
+ m_pCurStates->m_ColorState.SetFillColor(pCS, values, 3);
+}
+
+void CPDF_StreamContentParser::Handle_SetRGBColor_Stroke() {
+ if (m_ParamCount != 3)
+ return;
+
+ FX_FLOAT values[3];
+ for (int i = 0; i < 3; i++) {
+ values[i] = GetNumber(2 - i);
+ }
+ CPDF_ColorSpace* pCS = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB);
+ m_pCurStates->m_ColorState.SetStrokeColor(pCS, values, 3);
+}
+
+void CPDF_StreamContentParser::Handle_SetRenderIntent() {}
+
+void CPDF_StreamContentParser::Handle_CloseStrokePath() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ Handle_ClosePath();
+ AddPathObject(0, TRUE);
+}
+
+void CPDF_StreamContentParser::Handle_StrokePath() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ AddPathObject(0, TRUE);
+}
+
+void CPDF_StreamContentParser::Handle_SetColor_Fill() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ FX_FLOAT values[4];
+ int nargs = m_ParamCount;
+ if (nargs > 4) {
+ nargs = 4;
+ }
+ for (int i = 0; i < nargs; i++) {
+ values[i] = GetNumber(nargs - i - 1);
+ }
+ m_pCurStates->m_ColorState.SetFillColor(NULL, values, nargs);
+}
+
+void CPDF_StreamContentParser::Handle_SetColor_Stroke() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ FX_FLOAT values[4];
+ int nargs = m_ParamCount;
+ if (nargs > 4) {
+ nargs = 4;
+ }
+ for (int i = 0; i < nargs; i++) {
+ values[i] = GetNumber(nargs - i - 1);
+ }
+ m_pCurStates->m_ColorState.SetStrokeColor(NULL, values, nargs);
+}
+
+void CPDF_StreamContentParser::Handle_SetColorPS_Fill() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ CPDF_Object* pLastParam = GetObject(0);
+ if (!pLastParam) {
+ return;
+ }
+ int nargs = m_ParamCount;
+ int nvalues = nargs;
+ if (pLastParam->IsName()) {
+ nvalues--;
+ }
+ FX_FLOAT* values = NULL;
+ if (nvalues) {
+ values = FX_Alloc(FX_FLOAT, nvalues);
+ for (int i = 0; i < nvalues; i++) {
+ values[i] = GetNumber(nargs - i - 1);
+ }
+ }
+ if (nvalues != nargs) {
+ CPDF_Pattern* pPattern = FindPattern(GetString(0), FALSE);
+ if (pPattern) {
+ m_pCurStates->m_ColorState.SetFillPattern(pPattern, values, nvalues);
+ }
+ } else {
+ m_pCurStates->m_ColorState.SetFillColor(NULL, values, nvalues);
+ }
+ FX_Free(values);
+}
+
+void CPDF_StreamContentParser::Handle_SetColorPS_Stroke() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ CPDF_Object* pLastParam = GetObject(0);
+ if (!pLastParam) {
+ return;
+ }
+ int nargs = m_ParamCount;
+ int nvalues = nargs;
+ if (pLastParam->IsName())
+ nvalues--;
+
+ FX_FLOAT* values = NULL;
+ if (nvalues) {
+ values = FX_Alloc(FX_FLOAT, nvalues);
+ for (int i = 0; i < nvalues; i++) {
+ values[i] = GetNumber(nargs - i - 1);
+ }
+ }
+ if (nvalues != nargs) {
+ CPDF_Pattern* pPattern = FindPattern(GetString(0), FALSE);
+ if (pPattern) {
+ m_pCurStates->m_ColorState.SetStrokePattern(pPattern, values, nvalues);
+ }
+ } else {
+ m_pCurStates->m_ColorState.SetStrokeColor(NULL, values, nvalues);
+ }
+ FX_Free(values);
+}
+
+CFX_FloatRect GetShadingBBox(CPDF_Stream* pStream,
+ ShadingType type,
+ const CFX_Matrix* pMatrix,
+ CPDF_Function** pFuncs,
+ int nFuncs,
+ CPDF_ColorSpace* pCS);
+
+void CPDF_StreamContentParser::Handle_ShadeFill() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ CPDF_Pattern* pPattern = FindPattern(GetString(0), TRUE);
+ if (!pPattern) {
+ return;
+ }
+ if (pPattern->m_PatternType != CPDF_Pattern::SHADING) {
+ return;
+ }
+ CPDF_ShadingPattern* pShading = static_cast<CPDF_ShadingPattern*>(pPattern);
+ if (!pShading->m_bShadingObj) {
+ return;
+ }
+ if (!pShading->Load()) {
+ return;
+ }
+ std::unique_ptr<CPDF_ShadingObject> pObj(new CPDF_ShadingObject);
+ pObj->m_pShading = pShading;
+ SetGraphicStates(pObj.get(), FALSE, FALSE, FALSE);
+ pObj->m_Matrix = m_pCurStates->m_CTM;
+ pObj->m_Matrix.Concat(m_mtContentToUser);
+ CFX_FloatRect bbox;
+ if (!pObj->m_ClipPath.IsNull()) {
+ bbox = pObj->m_ClipPath.GetClipBox();
+ } else {
+ bbox = m_BBox;
+ }
+ if (pShading->IsMeshShading()) {
+ bbox.Intersect(GetShadingBBox(ToStream(pShading->m_pShadingObj),
+ pShading->m_ShadingType, &pObj->m_Matrix,
+ pShading->m_pFunctions, pShading->m_nFuncs,
+ pShading->m_pCS));
+ }
+ pObj->m_Left = bbox.left;
+ pObj->m_Right = bbox.right;
+ pObj->m_Top = bbox.top;
+ pObj->m_Bottom = bbox.bottom;
+ m_pObjectHolder->GetPageObjectList()->push_back(std::move(pObj));
+}
+
+void CPDF_StreamContentParser::Handle_SetCharSpace() {
+ m_pCurStates->m_TextState.GetModify()->m_CharSpace = GetNumber(0);
+}
+
+void CPDF_StreamContentParser::Handle_MoveTextPoint() {
+ m_pCurStates->m_TextLineX += GetNumber(1);
+ m_pCurStates->m_TextLineY += GetNumber(0);
+ m_pCurStates->m_TextX = m_pCurStates->m_TextLineX;
+ m_pCurStates->m_TextY = m_pCurStates->m_TextLineY;
+}
+
+void CPDF_StreamContentParser::Handle_MoveTextPoint_SetLeading() {
+ Handle_MoveTextPoint();
+ m_pCurStates->m_TextLeading = -GetNumber(0);
+}
+
+void CPDF_StreamContentParser::Handle_SetFont() {
+ FX_FLOAT fs = GetNumber(0);
+ if (fs == 0) {
+ fs = m_DefFontSize;
+ }
+ m_pCurStates->m_TextState.GetModify()->m_FontSize = fs;
+ CPDF_Font* pFont = FindFont(GetString(1));
+ if (pFont) {
+ m_pCurStates->m_TextState.SetFont(pFont);
+ }
+}
+
+CPDF_Object* CPDF_StreamContentParser::FindResourceObj(
+ const CFX_ByteStringC& type,
+ const CFX_ByteString& name) {
+ if (!m_pResources) {
+ return NULL;
+ }
+ if (m_pResources == m_pPageResources) {
+ CPDF_Dictionary* pList = m_pResources->GetDictBy(type);
+ if (!pList) {
+ return NULL;
+ }
+ CPDF_Object* pRes = pList->GetElementValue(name);
+ return pRes;
+ }
+ CPDF_Dictionary* pList = m_pResources->GetDictBy(type);
+ if (!pList) {
+ if (!m_pPageResources) {
+ return NULL;
+ }
+ CPDF_Dictionary* pList = m_pPageResources->GetDictBy(type);
+ if (!pList) {
+ return NULL;
+ }
+ CPDF_Object* pRes = pList->GetElementValue(name);
+ return pRes;
+ }
+ CPDF_Object* pRes = pList->GetElementValue(name);
+ return pRes;
+}
+
+CPDF_Font* CPDF_StreamContentParser::FindFont(const CFX_ByteString& name) {
+ CPDF_Dictionary* pFontDict = ToDictionary(FindResourceObj("Font", name));
+ if (!pFontDict) {
+ m_bResourceMissing = TRUE;
+ return CPDF_Font::GetStockFont(m_pDocument, "Helvetica");
+ }
+
+ CPDF_Font* pFont = m_pDocument->LoadFont(pFontDict);
+ if (pFont && pFont->IsType3Font()) {
+ pFont->AsType3Font()->SetPageResources(m_pResources);
+ pFont->AsType3Font()->CheckType3FontMetrics();
+ }
+ return pFont;
+}
+
+CPDF_ColorSpace* CPDF_StreamContentParser::FindColorSpace(
+ const CFX_ByteString& name) {
+ if (name == "Pattern") {
+ return CPDF_ColorSpace::GetStockCS(PDFCS_PATTERN);
+ }
+ if (name == "DeviceGray" || name == "DeviceCMYK" || name == "DeviceRGB") {
+ CFX_ByteString defname = "Default";
+ defname += name.Mid(7);
+ CPDF_Object* pDefObj = FindResourceObj("ColorSpace", defname);
+ if (!pDefObj) {
+ if (name == "DeviceGray") {
+ return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY);
+ }
+ if (name == "DeviceRGB") {
+ return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB);
+ }
+ return CPDF_ColorSpace::GetStockCS(PDFCS_DEVICECMYK);
+ }
+ return m_pDocument->LoadColorSpace(pDefObj);
+ }
+ CPDF_Object* pCSObj = FindResourceObj("ColorSpace", name);
+ if (!pCSObj) {
+ m_bResourceMissing = TRUE;
+ return NULL;
+ }
+ return m_pDocument->LoadColorSpace(pCSObj);
+}
+
+CPDF_Pattern* CPDF_StreamContentParser::FindPattern(const CFX_ByteString& name,
+ FX_BOOL bShading) {
+ CPDF_Object* pPattern =
+ FindResourceObj(bShading ? "Shading" : "Pattern", name);
+ if (!pPattern || (!pPattern->IsDictionary() && !pPattern->IsStream())) {
+ m_bResourceMissing = TRUE;
+ return NULL;
+ }
+ return m_pDocument->LoadPattern(pPattern, bShading,
+ &m_pCurStates->m_ParentMatrix);
+}
+
+void CPDF_StreamContentParser::ConvertTextSpace(FX_FLOAT& x, FX_FLOAT& y) {
+ m_pCurStates->m_TextMatrix.Transform(x, y, x, y);
+ ConvertUserSpace(x, y);
+}
+
+void CPDF_StreamContentParser::ConvertUserSpace(FX_FLOAT& x, FX_FLOAT& y) {
+ m_pCurStates->m_CTM.Transform(x, y, x, y);
+ m_mtContentToUser.Transform(x, y, x, y);
+}
+
+void CPDF_StreamContentParser::AddTextObject(CFX_ByteString* pStrs,
+ FX_FLOAT fInitKerning,
+ FX_FLOAT* pKerning,
+ int nsegs) {
+ CPDF_Font* pFont = m_pCurStates->m_TextState.GetFont();
+ if (!pFont) {
+ return;
+ }
+ if (fInitKerning != 0) {
+ if (!pFont->IsVertWriting()) {
+ m_pCurStates->m_TextX -=
+ (fInitKerning * m_pCurStates->m_TextState.GetFontSize()) / 1000;
+ } else {
+ m_pCurStates->m_TextY -=
+ (fInitKerning * m_pCurStates->m_TextState.GetFontSize()) / 1000;
+ }
+ }
+ if (nsegs == 0) {
+ return;
+ }
+ int textmode;
+ if (pFont->IsType3Font()) {
+ textmode = 0;
+ } else {
+ textmode = m_pCurStates->m_TextState.GetObject()->m_TextMode;
+ }
+ {
+ std::unique_ptr<CPDF_TextObject> pText(new CPDF_TextObject);
+ m_pLastTextObject = pText.get();
+ SetGraphicStates(m_pLastTextObject, TRUE, TRUE, TRUE);
+ if (textmode && textmode != 3 && textmode != 4 && textmode != 7) {
+ FX_FLOAT* pCTM = pText->m_TextState.GetModify()->m_CTM;
+ pCTM[0] = m_pCurStates->m_CTM.a;
+ pCTM[1] = m_pCurStates->m_CTM.c;
+ pCTM[2] = m_pCurStates->m_CTM.b;
+ pCTM[3] = m_pCurStates->m_CTM.d;
+ }
+ pText->SetSegments(pStrs, pKerning, nsegs);
+ pText->m_PosX = m_pCurStates->m_TextX;
+ pText->m_PosY = m_pCurStates->m_TextY + m_pCurStates->m_TextRise;
+ ConvertTextSpace(pText->m_PosX, pText->m_PosY);
+ FX_FLOAT x_advance;
+ FX_FLOAT y_advance;
+ pText->CalcPositionData(&x_advance, &y_advance,
+ m_pCurStates->m_TextHorzScale, m_Level);
+ m_pCurStates->m_TextX += x_advance;
+ m_pCurStates->m_TextY += y_advance;
+ if (textmode > 3)
+ m_ClipTextList.Add(pText->Clone());
+ m_pObjectHolder->GetPageObjectList()->push_back(std::move(pText));
+ }
+ if (pKerning && pKerning[nsegs - 1] != 0) {
+ if (!pFont->IsVertWriting()) {
+ m_pCurStates->m_TextX -=
+ (pKerning[nsegs - 1] * m_pCurStates->m_TextState.GetFontSize()) /
+ 1000;
+ } else {
+ m_pCurStates->m_TextY -=
+ (pKerning[nsegs - 1] * m_pCurStates->m_TextState.GetFontSize()) /
+ 1000;
+ }
+ }
+}
+
+void CPDF_StreamContentParser::Handle_ShowText() {
+ CFX_ByteString str = GetString(0);
+ if (str.IsEmpty()) {
+ return;
+ }
+ AddTextObject(&str, 0, NULL, 1);
+}
+
+void CPDF_StreamContentParser::Handle_ShowText_Positioning() {
+ CPDF_Array* pArray = GetObject(0) ? GetObject(0)->GetArray() : NULL;
+ if (!pArray) {
+ return;
+ }
+ int n = pArray->GetCount();
+ int nsegs = 0;
+ for (int i = 0; i < n; i++) {
+ if (pArray->GetElementValue(i)->IsString())
+ nsegs++;
+ }
+ if (nsegs == 0) {
+ for (int i = 0; i < n; i++) {
+ m_pCurStates->m_TextX -=
+ (pArray->GetNumberAt(i) * m_pCurStates->m_TextState.GetFontSize()) /
+ 1000;
+ }
+ return;
+ }
+ CFX_ByteString* pStrs = new CFX_ByteString[nsegs];
+ FX_FLOAT* pKerning = FX_Alloc(FX_FLOAT, nsegs);
+ int iSegment = 0;
+ FX_FLOAT fInitKerning = 0;
+ for (int i = 0; i < n; i++) {
+ CPDF_Object* pObj = pArray->GetElementValue(i);
+ if (pObj->IsString()) {
+ CFX_ByteString str = pObj->GetString();
+ if (str.IsEmpty()) {
+ continue;
+ }
+ pStrs[iSegment] = str;
+ pKerning[iSegment++] = 0;
+ } else {
+ FX_FLOAT num = pObj ? pObj->GetNumber() : 0;
+ if (iSegment == 0) {
+ fInitKerning += num;
+ } else {
+ pKerning[iSegment - 1] += num;
+ }
+ }
+ }
+ AddTextObject(pStrs, fInitKerning, pKerning, iSegment);
+ delete[] pStrs;
+ FX_Free(pKerning);
+}
+
+void CPDF_StreamContentParser::Handle_SetTextLeading() {
+ m_pCurStates->m_TextLeading = GetNumber(0);
+}
+
+void CPDF_StreamContentParser::Handle_SetTextMatrix() {
+ m_pCurStates->m_TextMatrix.Set(GetNumber16(5), GetNumber16(4), GetNumber16(3),
+ GetNumber16(2), GetNumber(1), GetNumber(0));
+ OnChangeTextMatrix();
+ m_pCurStates->m_TextX = 0;
+ m_pCurStates->m_TextY = 0;
+ m_pCurStates->m_TextLineX = 0;
+ m_pCurStates->m_TextLineY = 0;
+}
+
+void CPDF_StreamContentParser::OnChangeTextMatrix() {
+ CFX_Matrix text_matrix(m_pCurStates->m_TextHorzScale, 0.0f, 0.0f, 1.0f, 0.0f,
+ 0.0f);
+ text_matrix.Concat(m_pCurStates->m_TextMatrix);
+ text_matrix.Concat(m_pCurStates->m_CTM);
+ text_matrix.Concat(m_mtContentToUser);
+ FX_FLOAT* pTextMatrix = m_pCurStates->m_TextState.GetModify()->m_Matrix;
+ pTextMatrix[0] = text_matrix.a;
+ pTextMatrix[1] = text_matrix.c;
+ pTextMatrix[2] = text_matrix.b;
+ pTextMatrix[3] = text_matrix.d;
+}
+
+void CPDF_StreamContentParser::Handle_SetTextRenderMode() {
+ int mode = GetInteger(0);
+ if (mode < 0 || mode > 7) {
+ return;
+ }
+ m_pCurStates->m_TextState.GetModify()->m_TextMode = mode;
+}
+
+void CPDF_StreamContentParser::Handle_SetTextRise() {
+ m_pCurStates->m_TextRise = GetNumber(0);
+}
+
+void CPDF_StreamContentParser::Handle_SetWordSpace() {
+ m_pCurStates->m_TextState.GetModify()->m_WordSpace = GetNumber(0);
+}
+
+void CPDF_StreamContentParser::Handle_SetHorzScale() {
+ if (m_ParamCount != 1) {
+ return;
+ }
+ m_pCurStates->m_TextHorzScale = GetNumber(0) / 100;
+ OnChangeTextMatrix();
+}
+
+void CPDF_StreamContentParser::Handle_MoveToNextLine() {
+ m_pCurStates->m_TextLineY -= m_pCurStates->m_TextLeading;
+ m_pCurStates->m_TextX = m_pCurStates->m_TextLineX;
+ m_pCurStates->m_TextY = m_pCurStates->m_TextLineY;
+}
+
+void CPDF_StreamContentParser::Handle_CurveTo_23() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ AddPathPoint(m_PathCurrentX, m_PathCurrentY, FXPT_BEZIERTO);
+ AddPathPoint(GetNumber(3), GetNumber(2), FXPT_BEZIERTO);
+ AddPathPoint(GetNumber(1), GetNumber(0), FXPT_BEZIERTO);
+}
+
+void CPDF_StreamContentParser::Handle_SetLineWidth() {
+ FX_FLOAT width = GetNumber(0);
+ m_pCurStates->m_GraphState.GetModify()->m_LineWidth = width;
+}
+
+void CPDF_StreamContentParser::Handle_Clip() {
+ m_PathClipType = FXFILL_WINDING;
+}
+
+void CPDF_StreamContentParser::Handle_EOClip() {
+ m_PathClipType = FXFILL_ALTERNATE;
+}
+
+void CPDF_StreamContentParser::Handle_CurveTo_13() {
+ if (m_Options.m_bTextOnly) {
+ return;
+ }
+ AddPathPoint(GetNumber(3), GetNumber(2), FXPT_BEZIERTO);
+ AddPathPoint(GetNumber(1), GetNumber(0), FXPT_BEZIERTO);
+ AddPathPoint(GetNumber(1), GetNumber(0), FXPT_BEZIERTO);
+}
+
+void CPDF_StreamContentParser::Handle_NextLineShowText() {
+ Handle_MoveToNextLine();
+ Handle_ShowText();
+}
+
+void CPDF_StreamContentParser::Handle_NextLineShowText_Space() {
+ m_pCurStates->m_TextState.GetModify()->m_WordSpace = GetNumber(2);
+ m_pCurStates->m_TextState.GetModify()->m_CharSpace = GetNumber(1);
+ Handle_NextLineShowText();
+}
+
+void CPDF_StreamContentParser::Handle_Invalid() {}
+
+void CPDF_StreamContentParser::AddPathPoint(FX_FLOAT x, FX_FLOAT y, int flag) {
+ m_PathCurrentX = x;
+ m_PathCurrentY = y;
+ if (flag == FXPT_MOVETO) {
+ m_PathStartX = x;
+ m_PathStartY = y;
+ if (m_PathPointCount &&
+ m_pPathPoints[m_PathPointCount - 1].m_Flag == FXPT_MOVETO) {
+ m_pPathPoints[m_PathPointCount - 1].m_PointX = x;
+ m_pPathPoints[m_PathPointCount - 1].m_PointY = y;
+ return;
+ }
+ } else if (m_PathPointCount == 0) {
+ return;
+ }
+ m_PathPointCount++;
+ if (m_PathPointCount > m_PathAllocSize) {
+ int newsize = m_PathPointCount + 256;
+ FX_PATHPOINT* pNewPoints = FX_Alloc(FX_PATHPOINT, newsize);
+ if (m_PathAllocSize) {
+ FXSYS_memcpy(pNewPoints, m_pPathPoints,
+ m_PathAllocSize * sizeof(FX_PATHPOINT));
+ FX_Free(m_pPathPoints);
+ }
+ m_pPathPoints = pNewPoints;
+ m_PathAllocSize = newsize;
+ }
+ m_pPathPoints[m_PathPointCount - 1].m_Flag = flag;
+ m_pPathPoints[m_PathPointCount - 1].m_PointX = x;
+ m_pPathPoints[m_PathPointCount - 1].m_PointY = y;
+}
+
+void CPDF_StreamContentParser::AddPathObject(int FillType, FX_BOOL bStroke) {
+ int PathPointCount = m_PathPointCount, PathClipType = m_PathClipType;
+ m_PathPointCount = 0;
+ m_PathClipType = 0;
+ if (PathPointCount <= 1) {
+ if (PathPointCount && PathClipType) {
+ CPDF_Path path;
+ path.New()->AppendRect(0, 0, 0, 0);
+ m_pCurStates->m_ClipPath.AppendPath(path, FXFILL_WINDING, TRUE);
+ }
+ return;
+ }
+ if (PathPointCount &&
+ m_pPathPoints[PathPointCount - 1].m_Flag == FXPT_MOVETO) {
+ PathPointCount--;
+ }
+ CPDF_Path Path;
+ CFX_PathData* pPathData = Path.New();
+ pPathData->SetPointCount(PathPointCount);
+ FXSYS_memcpy(pPathData->GetPoints(), m_pPathPoints,
+ sizeof(FX_PATHPOINT) * PathPointCount);
+ CFX_Matrix matrix = m_pCurStates->m_CTM;
+ matrix.Concat(m_mtContentToUser);
+ if (bStroke || FillType) {
+ std::unique_ptr<CPDF_PathObject> pPathObj(new CPDF_PathObject);
+ pPathObj->m_bStroke = bStroke;
+ pPathObj->m_FillType = FillType;
+ pPathObj->m_Path = Path;
+ pPathObj->m_Matrix = matrix;
+ SetGraphicStates(pPathObj.get(), TRUE, FALSE, TRUE);
+ pPathObj->CalcBoundingBox();
+ m_pObjectHolder->GetPageObjectList()->push_back(std::move(pPathObj));
+ }
+ if (PathClipType) {
+ if (!matrix.IsIdentity()) {
+ Path.Transform(&matrix);
+ matrix.SetIdentity();
+ }
+ m_pCurStates->m_ClipPath.AppendPath(Path, PathClipType, TRUE);
+ }
+}
+
+FX_DWORD CPDF_StreamContentParser::Parse(const uint8_t* pData,
+ FX_DWORD dwSize,
+ FX_DWORD max_cost) {
+ if (m_Level > _FPDF_MAX_FORM_LEVEL_) {
+ return dwSize;
+ }
+ FX_DWORD InitObjCount = m_pObjectHolder->GetPageObjectList()->size();
+ CPDF_StreamParser syntax(pData, dwSize);
+ CPDF_StreamParserAutoClearer auto_clearer(&m_pSyntax, &syntax);
+ while (1) {
+ FX_DWORD cost = m_pObjectHolder->GetPageObjectList()->size() - InitObjCount;
+ if (max_cost && cost >= max_cost) {
+ break;
+ }
+ switch (syntax.ParseNextElement()) {
+ case CPDF_StreamParser::EndOfData:
+ return m_pSyntax->GetPos();
+ case CPDF_StreamParser::Keyword:
+ OnOperator((char*)syntax.GetWordBuf());
+ ClearAllParams();
+ break;
+ case CPDF_StreamParser::Number:
+ AddNumberParam((char*)syntax.GetWordBuf(), syntax.GetWordSize());
+ break;
+ case CPDF_StreamParser::Name:
+ AddNameParam((const FX_CHAR*)syntax.GetWordBuf() + 1,
+ syntax.GetWordSize() - 1);
+ break;
+ default:
+ AddObjectParam(syntax.GetObject());
+ }
+ }
+ return m_pSyntax->GetPos();
+}
+
+void CPDF_StreamContentParser::ParsePathObject() {
+ FX_FLOAT params[6] = {};
+ int nParams = 0;
+ int last_pos = m_pSyntax->GetPos();
+ while (1) {
+ CPDF_StreamParser::SyntaxType type = m_pSyntax->ParseNextElement();
+ FX_BOOL bProcessed = TRUE;
+ switch (type) {
+ case CPDF_StreamParser::EndOfData:
+ return;
+ case CPDF_StreamParser::Keyword: {
+ int len = m_pSyntax->GetWordSize();
+ if (len == 1) {
+ switch (m_pSyntax->GetWordBuf()[0]) {
+ case kPathOperatorSubpath:
+ AddPathPoint(params[0], params[1], FXPT_MOVETO);
+ nParams = 0;
+ break;
+ case kPathOperatorLine:
+ AddPathPoint(params[0], params[1], FXPT_LINETO);
+ nParams = 0;
+ break;
+ case kPathOperatorCubicBezier1:
+ AddPathPoint(params[0], params[1], FXPT_BEZIERTO);
+ AddPathPoint(params[2], params[3], FXPT_BEZIERTO);
+ AddPathPoint(params[4], params[5], FXPT_BEZIERTO);
+ nParams = 0;
+ break;
+ case kPathOperatorCubicBezier2:
+ AddPathPoint(m_PathCurrentX, m_PathCurrentY, FXPT_BEZIERTO);
+ AddPathPoint(params[0], params[1], FXPT_BEZIERTO);
+ AddPathPoint(params[2], params[3], FXPT_BEZIERTO);
+ nParams = 0;
+ break;
+ case kPathOperatorCubicBezier3:
+ AddPathPoint(params[0], params[1], FXPT_BEZIERTO);
+ AddPathPoint(params[2], params[3], FXPT_BEZIERTO);
+ AddPathPoint(params[2], params[3], FXPT_BEZIERTO);
+ nParams = 0;
+ break;
+ case kPathOperatorClosePath:
+ Handle_ClosePath();
+ nParams = 0;
+ break;
+ default:
+ bProcessed = FALSE;
+ break;
+ }
+ } else if (len == 2) {
+ if (m_pSyntax->GetWordBuf()[0] == kPathOperatorRectangle[0] &&
+ m_pSyntax->GetWordBuf()[1] == kPathOperatorRectangle[1]) {
+ AddPathRect(params[0], params[1], params[2], params[3]);
+ nParams = 0;
+ } else {
+ bProcessed = FALSE;
+ }
+ } else {
+ bProcessed = FALSE;
+ }
+ if (bProcessed) {
+ last_pos = m_pSyntax->GetPos();
+ }
+ break;
+ }
+ case CPDF_StreamParser::Number: {
+ if (nParams == 6) {
+ break;
+ }
+ FX_BOOL bInteger;
+ int value;
+ FX_atonum(
+ CFX_ByteStringC(m_pSyntax->GetWordBuf(), m_pSyntax->GetWordSize()),
+ bInteger, &value);
+ params[nParams++] = bInteger ? (FX_FLOAT)value : *(FX_FLOAT*)&value;
+ break;
+ }
+ default:
+ bProcessed = FALSE;
+ }
+ if (!bProcessed) {
+ m_pSyntax->SetPos(last_pos);
+ return;
+ }
+ }
+}
+
+void PDF_ReplaceAbbr(CPDF_Object* pObj) {
+ switch (pObj->GetType()) {
+ case CPDF_Object::DICTIONARY: {
+ CPDF_Dictionary* pDict = pObj->AsDictionary();
+ std::vector<AbbrReplacementOp> replacements;
+ for (const auto& it : *pDict) {
+ CFX_ByteString key = it.first;
+ CPDF_Object* value = it.second;
+ CFX_ByteStringC fullname = PDF_FindFullName(
+ PDF_InlineKeyAbbr, FX_ArraySize(PDF_InlineKeyAbbr), key);
+ if (!fullname.IsEmpty()) {
+ AbbrReplacementOp op;
+ op.is_replace_key = true;
+ op.key = key;
+ op.replacement = fullname;
+ replacements.push_back(op);
+ key = fullname;
+ }
+
+ if (value->IsName()) {
+ CFX_ByteString name = value->GetString();
+ fullname = PDF_FindFullName(PDF_InlineValueAbbr,
+ FX_ArraySize(PDF_InlineValueAbbr), name);
+ if (!fullname.IsEmpty()) {
+ AbbrReplacementOp op;
+ op.is_replace_key = false;
+ op.key = key;
+ op.replacement = fullname;
+ replacements.push_back(op);
+ }
+ } else {
+ PDF_ReplaceAbbr(value);
+ }
+ }
+ for (const auto& op : replacements) {
+ if (op.is_replace_key)
+ pDict->ReplaceKey(op.key, op.replacement);
+ else
+ pDict->SetAtName(op.key, op.replacement);
+ }
+ break;
+ }
+ case CPDF_Object::ARRAY: {
+ CPDF_Array* pArray = pObj->AsArray();
+ for (FX_DWORD i = 0; i < pArray->GetCount(); i++) {
+ CPDF_Object* pElement = pArray->GetElement(i);
+ if (pElement->IsName()) {
+ CFX_ByteString name = pElement->GetString();
+ CFX_ByteStringC fullname = PDF_FindFullName(
+ PDF_InlineValueAbbr, FX_ArraySize(PDF_InlineValueAbbr), name);
+ if (!fullname.IsEmpty()) {
+ pArray->SetAt(i, new CPDF_Name(fullname));
+ }
+ } else {
+ PDF_ReplaceAbbr(pElement);
+ }
+ }
+ break;
+ }
+ default:
+ break;
+ }
+}
diff --git a/core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp b/core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp
new file mode 100644
index 0000000000..13c56b4718
--- /dev/null
+++ b/core/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp
@@ -0,0 +1,888 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_page/pageint.h"
+
+#include <limits.h>
+
+#include "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h"
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_boolean.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_document.h"
+#include "core/include/fpdfapi/cpdf_name.h"
+#include "core/include/fpdfapi/cpdf_null.h"
+#include "core/include/fpdfapi/cpdf_number.h"
+#include "core/include/fpdfapi/cpdf_string.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_page.h"
+#include "core/include/fpdfapi/fpdf_parser_decode.h"
+#include "core/include/fxcodec/fx_codec.h"
+#include "core/include/fxcrt/fx_ext.h"
+#include "core/include/fxcrt/fx_safe_types.h"
+
+CPDF_StreamParser::CPDF_StreamParser(const uint8_t* pData, FX_DWORD dwSize) {
+ m_pBuf = pData;
+ m_Size = dwSize;
+ m_Pos = 0;
+ m_pLastObj = NULL;
+}
+
+CPDF_StreamParser::~CPDF_StreamParser() {
+ if (m_pLastObj) {
+ m_pLastObj->Release();
+ }
+}
+
+FX_DWORD _DecodeAllScanlines(ICodec_ScanlineDecoder* pDecoder,
+ uint8_t*& dest_buf,
+ FX_DWORD& dest_size) {
+ if (!pDecoder) {
+ return (FX_DWORD)-1;
+ }
+ int ncomps = pDecoder->CountComps();
+ int bpc = pDecoder->GetBPC();
+ int width = pDecoder->GetWidth();
+ int height = pDecoder->GetHeight();
+ int pitch = (width * ncomps * bpc + 7) / 8;
+ if (height == 0 || pitch > (1 << 30) / height) {
+ delete pDecoder;
+ return -1;
+ }
+ dest_buf = FX_Alloc2D(uint8_t, pitch, height);
+ dest_size = pitch * height; // Safe since checked alloc returned.
+ for (int row = 0; row < height; row++) {
+ const uint8_t* pLine = pDecoder->GetScanline(row);
+ if (!pLine)
+ break;
+
+ FXSYS_memcpy(dest_buf + row * pitch, pLine, pitch);
+ }
+ FX_DWORD srcoff = pDecoder->GetSrcOffset();
+ delete pDecoder;
+ return srcoff;
+}
+
+ICodec_ScanlineDecoder* FPDFAPI_CreateFaxDecoder(
+ const uint8_t* src_buf,
+ FX_DWORD src_size,
+ int width,
+ int height,
+ const CPDF_Dictionary* pParams);
+
+FX_DWORD PDF_DecodeInlineStream(const uint8_t* src_buf,
+ FX_DWORD limit,
+ int width,
+ int height,
+ CFX_ByteString& decoder,
+ CPDF_Dictionary* pParam,
+ uint8_t*& dest_buf,
+ FX_DWORD& dest_size) {
+ if (decoder == "CCITTFaxDecode" || decoder == "CCF") {
+ ICodec_ScanlineDecoder* pDecoder =
+ FPDFAPI_CreateFaxDecoder(src_buf, limit, width, height, pParam);
+ return _DecodeAllScanlines(pDecoder, dest_buf, dest_size);
+ }
+ if (decoder == "ASCII85Decode" || decoder == "A85") {
+ return A85Decode(src_buf, limit, dest_buf, dest_size);
+ }
+ if (decoder == "ASCIIHexDecode" || decoder == "AHx") {
+ return HexDecode(src_buf, limit, dest_buf, dest_size);
+ }
+ if (decoder == "FlateDecode" || decoder == "Fl") {
+ return FPDFAPI_FlateOrLZWDecode(FALSE, src_buf, limit, pParam, dest_size,
+ dest_buf, dest_size);
+ }
+ if (decoder == "LZWDecode" || decoder == "LZW") {
+ return FPDFAPI_FlateOrLZWDecode(TRUE, src_buf, limit, pParam, 0, dest_buf,
+ dest_size);
+ }
+ if (decoder == "DCTDecode" || decoder == "DCT") {
+ ICodec_ScanlineDecoder* pDecoder =
+ CPDF_ModuleMgr::Get()->GetJpegModule()->CreateDecoder(
+ src_buf, limit, width, height, 0,
+ pParam ? pParam->GetIntegerBy("ColorTransform", 1) : 1);
+ return _DecodeAllScanlines(pDecoder, dest_buf, dest_size);
+ }
+ if (decoder == "RunLengthDecode" || decoder == "RL") {
+ return RunLengthDecode(src_buf, limit, dest_buf, dest_size);
+ }
+ dest_size = 0;
+ dest_buf = 0;
+ return (FX_DWORD)-1;
+}
+
+CPDF_Stream* CPDF_StreamParser::ReadInlineStream(CPDF_Document* pDoc,
+ CPDF_Dictionary* pDict,
+ CPDF_Object* pCSObj,
+ FX_BOOL bDecode) {
+ if (m_Pos == m_Size)
+ return nullptr;
+
+ if (PDFCharIsWhitespace(m_pBuf[m_Pos]))
+ m_Pos++;
+
+ CFX_ByteString Decoder;
+ CPDF_Dictionary* pParam = nullptr;
+ CPDF_Object* pFilter = pDict->GetElementValue("Filter");
+ if (pFilter) {
+ if (CPDF_Array* pArray = pFilter->AsArray()) {
+ Decoder = pArray->GetStringAt(0);
+ CPDF_Array* pParams = pDict->GetArrayBy("DecodeParms");
+ if (pParams)
+ pParam = pParams->GetDictAt(0);
+ } else {
+ Decoder = pFilter->GetString();
+ pParam = pDict->GetDictBy("DecodeParms");
+ }
+ }
+ FX_DWORD width = pDict->GetIntegerBy("Width");
+ FX_DWORD height = pDict->GetIntegerBy("Height");
+ FX_DWORD OrigSize = 0;
+ if (pCSObj) {
+ FX_DWORD bpc = pDict->GetIntegerBy("BitsPerComponent");
+ FX_DWORD nComponents = 1;
+ CPDF_ColorSpace* pCS = pDoc->LoadColorSpace(pCSObj);
+ if (!pCS) {
+ nComponents = 3;
+ } else {
+ nComponents = pCS->CountComponents();
+ pDoc->GetPageData()->ReleaseColorSpace(pCSObj);
+ }
+ FX_DWORD pitch = width;
+ if (bpc && pitch > INT_MAX / bpc) {
+ return NULL;
+ }
+ pitch *= bpc;
+ if (nComponents && pitch > INT_MAX / nComponents) {
+ return NULL;
+ }
+ pitch *= nComponents;
+ if (pitch > INT_MAX - 7) {
+ return NULL;
+ }
+ pitch += 7;
+ pitch /= 8;
+ OrigSize = pitch;
+ } else {
+ if (width > INT_MAX - 7) {
+ return NULL;
+ }
+ OrigSize = ((width + 7) / 8);
+ }
+ if (height && OrigSize > INT_MAX / height) {
+ return NULL;
+ }
+ OrigSize *= height;
+ uint8_t* pData = NULL;
+ FX_DWORD dwStreamSize;
+ if (Decoder.IsEmpty()) {
+ if (OrigSize > m_Size - m_Pos) {
+ OrigSize = m_Size - m_Pos;
+ }
+ pData = FX_Alloc(uint8_t, OrigSize);
+ FXSYS_memcpy(pData, m_pBuf + m_Pos, OrigSize);
+ dwStreamSize = OrigSize;
+ m_Pos += OrigSize;
+ } else {
+ FX_DWORD dwDestSize = OrigSize;
+ dwStreamSize =
+ PDF_DecodeInlineStream(m_pBuf + m_Pos, m_Size - m_Pos, width, height,
+ Decoder, pParam, pData, dwDestSize);
+ if ((int)dwStreamSize < 0) {
+ FX_Free(pData);
+ return NULL;
+ }
+ if (bDecode) {
+ m_Pos += dwStreamSize;
+ dwStreamSize = dwDestSize;
+ if (CPDF_Array* pArray = pFilter->AsArray()) {
+ pArray->RemoveAt(0);
+ CPDF_Array* pParams = pDict->GetArrayBy("DecodeParms");
+ if (pParams)
+ pParams->RemoveAt(0);
+ } else {
+ pDict->RemoveAt("Filter");
+ pDict->RemoveAt("DecodeParms");
+ }
+ } else {
+ FX_Free(pData);
+ FX_DWORD dwSavePos = m_Pos;
+ m_Pos += dwStreamSize;
+ while (1) {
+ FX_DWORD dwPrevPos = m_Pos;
+ CPDF_StreamParser::SyntaxType type = ParseNextElement();
+ if (type == CPDF_StreamParser::EndOfData) {
+ break;
+ }
+ if (type != CPDF_StreamParser::Keyword) {
+ dwStreamSize += m_Pos - dwPrevPos;
+ continue;
+ }
+ if (GetWordSize() == 2 && GetWordBuf()[0] == 'E' &&
+ GetWordBuf()[1] == 'I') {
+ m_Pos = dwPrevPos;
+ break;
+ }
+ dwStreamSize += m_Pos - dwPrevPos;
+ }
+ m_Pos = dwSavePos;
+ pData = FX_Alloc(uint8_t, dwStreamSize);
+ FXSYS_memcpy(pData, m_pBuf + m_Pos, dwStreamSize);
+ m_Pos += dwStreamSize;
+ }
+ }
+ pDict->SetAtInteger("Length", (int)dwStreamSize);
+ return new CPDF_Stream(pData, dwStreamSize, pDict);
+}
+
+#define MAX_WORD_BUFFER 256
+#define MAX_STRING_LENGTH 32767
+#define FXDWORD_TRUE FXDWORD_FROM_LSBFIRST(0x65757274)
+#define FXDWORD_NULL FXDWORD_FROM_LSBFIRST(0x6c6c756e)
+#define FXDWORD_FALS FXDWORD_FROM_LSBFIRST(0x736c6166)
+CPDF_StreamParser::SyntaxType CPDF_StreamParser::ParseNextElement() {
+ if (m_pLastObj) {
+ m_pLastObj->Release();
+ m_pLastObj = nullptr;
+ }
+
+ m_WordSize = 0;
+ FX_BOOL bIsNumber = TRUE;
+ if (!PositionIsInBounds())
+ return EndOfData;
+
+ int ch = m_pBuf[m_Pos++];
+ while (1) {
+ while (PDFCharIsWhitespace(ch)) {
+ if (!PositionIsInBounds())
+ return EndOfData;
+
+ ch = m_pBuf[m_Pos++];
+ }
+
+ if (ch != '%')
+ break;
+
+ while (1) {
+ if (!PositionIsInBounds())
+ return EndOfData;
+
+ ch = m_pBuf[m_Pos++];
+ if (PDFCharIsLineEnding(ch))
+ break;
+ }
+ }
+
+ if (PDFCharIsDelimiter(ch) && ch != '/') {
+ m_Pos--;
+ m_pLastObj = ReadNextObject();
+ return Others;
+ }
+
+ while (1) {
+ if (m_WordSize < MAX_WORD_BUFFER)
+ m_WordBuffer[m_WordSize++] = ch;
+
+ if (!PDFCharIsNumeric(ch))
+ bIsNumber = FALSE;
+
+ if (!PositionIsInBounds())
+ break;
+
+ ch = m_pBuf[m_Pos++];
+
+ if (PDFCharIsDelimiter(ch) || PDFCharIsWhitespace(ch)) {
+ m_Pos--;
+ break;
+ }
+ }
+
+ m_WordBuffer[m_WordSize] = 0;
+ if (bIsNumber)
+ return Number;
+ if (m_WordBuffer[0] == '/')
+ return Name;
+
+ if (m_WordSize == 4) {
+ if (*(FX_DWORD*)m_WordBuffer == FXDWORD_TRUE) {
+ m_pLastObj = new CPDF_Boolean(TRUE);
+ return Others;
+ }
+ if (*(FX_DWORD*)m_WordBuffer == FXDWORD_NULL) {
+ m_pLastObj = new CPDF_Null;
+ return Others;
+ }
+ } else if (m_WordSize == 5) {
+ if (*(FX_DWORD*)m_WordBuffer == FXDWORD_FALS && m_WordBuffer[4] == 'e') {
+ m_pLastObj = new CPDF_Boolean(FALSE);
+ return Others;
+ }
+ }
+ return Keyword;
+}
+
+void CPDF_StreamParser::SkipPathObject() {
+ FX_DWORD command_startpos = m_Pos;
+ if (!PositionIsInBounds())
+ return;
+
+ int ch = m_pBuf[m_Pos++];
+ while (1) {
+ while (PDFCharIsWhitespace(ch)) {
+ if (!PositionIsInBounds())
+ return;
+ ch = m_pBuf[m_Pos++];
+ }
+
+ if (!PDFCharIsNumeric(ch)) {
+ m_Pos = command_startpos;
+ return;
+ }
+
+ while (1) {
+ while (!PDFCharIsWhitespace(ch)) {
+ if (!PositionIsInBounds())
+ return;
+ ch = m_pBuf[m_Pos++];
+ }
+
+ while (PDFCharIsWhitespace(ch)) {
+ if (!PositionIsInBounds())
+ return;
+ ch = m_pBuf[m_Pos++];
+ }
+
+ if (PDFCharIsNumeric(ch))
+ continue;
+
+ FX_DWORD op_startpos = m_Pos - 1;
+ while (!PDFCharIsWhitespace(ch) && !PDFCharIsDelimiter(ch)) {
+ if (!PositionIsInBounds())
+ return;
+ ch = m_pBuf[m_Pos++];
+ }
+
+ if (IsPathOperator(&m_pBuf[op_startpos], m_Pos - 1 - op_startpos)) {
+ command_startpos = m_Pos;
+ break;
+ }
+ m_Pos = command_startpos;
+ return;
+ }
+ }
+}
+
+CPDF_Object* CPDF_StreamParser::ReadNextObject(FX_BOOL bAllowNestedArray,
+ FX_BOOL bInArray) {
+ FX_BOOL bIsNumber;
+ GetNextWord(bIsNumber);
+ if (m_WordSize == 0) {
+ return NULL;
+ }
+ if (bIsNumber) {
+ m_WordBuffer[m_WordSize] = 0;
+ return new CPDF_Number(CFX_ByteStringC(m_WordBuffer, m_WordSize));
+ }
+ int first_char = m_WordBuffer[0];
+ if (first_char == '/') {
+ return new CPDF_Name(
+ PDF_NameDecode(CFX_ByteStringC(m_WordBuffer + 1, m_WordSize - 1)));
+ }
+ if (first_char == '(') {
+ return new CPDF_String(ReadString(), FALSE);
+ }
+ if (first_char == '<') {
+ if (m_WordSize == 1) {
+ return new CPDF_String(ReadHexString(), TRUE);
+ }
+ CPDF_Dictionary* pDict = new CPDF_Dictionary;
+ while (1) {
+ GetNextWord(bIsNumber);
+ if (m_WordSize == 0) {
+ pDict->Release();
+ return nullptr;
+ }
+ if (m_WordSize == 2 && m_WordBuffer[0] == '>') {
+ break;
+ }
+ if (m_WordBuffer[0] != '/') {
+ pDict->Release();
+ return nullptr;
+ }
+ CFX_ByteString key =
+ PDF_NameDecode(CFX_ByteStringC(m_WordBuffer + 1, m_WordSize - 1));
+ CPDF_Object* pObj = ReadNextObject(TRUE);
+ if (!pObj) {
+ pDict->Release();
+ return nullptr;
+ }
+ if (!key.IsEmpty()) {
+ pDict->SetAt(key, pObj);
+ } else {
+ pObj->Release();
+ }
+ }
+ return pDict;
+ }
+ if (first_char == '[') {
+ if (!bAllowNestedArray && bInArray) {
+ return NULL;
+ }
+ CPDF_Array* pArray = new CPDF_Array;
+ while (1) {
+ CPDF_Object* pObj = ReadNextObject(bAllowNestedArray, TRUE);
+ if (pObj) {
+ pArray->Add(pObj);
+ continue;
+ }
+
+ if (m_WordSize == 0 || m_WordBuffer[0] == ']')
+ break;
+ }
+ return pArray;
+ }
+ if (m_WordSize == 4) {
+ if (*(FX_DWORD*)m_WordBuffer == FXDWORD_TRUE) {
+ return new CPDF_Boolean(TRUE);
+ }
+ if (*(FX_DWORD*)m_WordBuffer == FXDWORD_NULL) {
+ return new CPDF_Null;
+ }
+ } else if (m_WordSize == 5) {
+ if (*(FX_DWORD*)m_WordBuffer == FXDWORD_FALS && m_WordBuffer[4] == 'e') {
+ return new CPDF_Boolean(FALSE);
+ }
+ }
+ return NULL;
+}
+
+void CPDF_StreamParser::GetNextWord(FX_BOOL& bIsNumber) {
+ m_WordSize = 0;
+ bIsNumber = TRUE;
+ if (!PositionIsInBounds())
+ return;
+
+ int ch = m_pBuf[m_Pos++];
+ while (1) {
+ while (PDFCharIsWhitespace(ch)) {
+ if (!PositionIsInBounds()) {
+ return;
+ }
+ ch = m_pBuf[m_Pos++];
+ }
+
+ if (ch != '%')
+ break;
+
+ while (1) {
+ if (!PositionIsInBounds())
+ return;
+ ch = m_pBuf[m_Pos++];
+ if (PDFCharIsLineEnding(ch))
+ break;
+ }
+ }
+
+ if (PDFCharIsDelimiter(ch)) {
+ bIsNumber = FALSE;
+ m_WordBuffer[m_WordSize++] = ch;
+ if (ch == '/') {
+ while (1) {
+ if (!PositionIsInBounds())
+ return;
+ ch = m_pBuf[m_Pos++];
+ if (!PDFCharIsOther(ch) && !PDFCharIsNumeric(ch)) {
+ m_Pos--;
+ return;
+ }
+
+ if (m_WordSize < MAX_WORD_BUFFER)
+ m_WordBuffer[m_WordSize++] = ch;
+ }
+ } else if (ch == '<') {
+ if (!PositionIsInBounds())
+ return;
+ ch = m_pBuf[m_Pos++];
+ if (ch == '<')
+ m_WordBuffer[m_WordSize++] = ch;
+ else
+ m_Pos--;
+ } else if (ch == '>') {
+ if (!PositionIsInBounds())
+ return;
+ ch = m_pBuf[m_Pos++];
+ if (ch == '>')
+ m_WordBuffer[m_WordSize++] = ch;
+ else
+ m_Pos--;
+ }
+ return;
+ }
+
+ while (1) {
+ if (m_WordSize < MAX_WORD_BUFFER)
+ m_WordBuffer[m_WordSize++] = ch;
+ if (!PDFCharIsNumeric(ch))
+ bIsNumber = FALSE;
+
+ if (!PositionIsInBounds())
+ return;
+ ch = m_pBuf[m_Pos++];
+ if (PDFCharIsDelimiter(ch) || PDFCharIsWhitespace(ch)) {
+ m_Pos--;
+ break;
+ }
+ }
+}
+
+CFX_ByteString CPDF_StreamParser::ReadString() {
+ if (!PositionIsInBounds())
+ return CFX_ByteString();
+
+ uint8_t ch = m_pBuf[m_Pos++];
+ CFX_ByteTextBuf buf;
+ int parlevel = 0;
+ int status = 0;
+ int iEscCode = 0;
+ while (1) {
+ switch (status) {
+ case 0:
+ if (ch == ')') {
+ if (parlevel == 0) {
+ if (buf.GetLength() > MAX_STRING_LENGTH) {
+ return CFX_ByteString(buf.GetBuffer(), MAX_STRING_LENGTH);
+ }
+ return buf.GetByteString();
+ }
+ parlevel--;
+ buf.AppendChar(')');
+ } else if (ch == '(') {
+ parlevel++;
+ buf.AppendChar('(');
+ } else if (ch == '\\') {
+ status = 1;
+ } else {
+ buf.AppendChar((char)ch);
+ }
+ break;
+ case 1:
+ if (ch >= '0' && ch <= '7') {
+ iEscCode = FXSYS_toDecimalDigit(static_cast<FX_WCHAR>(ch));
+ status = 2;
+ break;
+ }
+ if (ch == 'n') {
+ buf.AppendChar('\n');
+ } else if (ch == 'r') {
+ buf.AppendChar('\r');
+ } else if (ch == 't') {
+ buf.AppendChar('\t');
+ } else if (ch == 'b') {
+ buf.AppendChar('\b');
+ } else if (ch == 'f') {
+ buf.AppendChar('\f');
+ } else if (ch == '\r') {
+ status = 4;
+ break;
+ } else if (ch == '\n') {
+ } else {
+ buf.AppendChar(ch);
+ }
+ status = 0;
+ break;
+ case 2:
+ if (ch >= '0' && ch <= '7') {
+ iEscCode =
+ iEscCode * 8 + FXSYS_toDecimalDigit(static_cast<FX_WCHAR>(ch));
+ status = 3;
+ } else {
+ buf.AppendChar(iEscCode);
+ status = 0;
+ continue;
+ }
+ break;
+ case 3:
+ if (ch >= '0' && ch <= '7') {
+ iEscCode =
+ iEscCode * 8 + FXSYS_toDecimalDigit(static_cast<FX_WCHAR>(ch));
+ buf.AppendChar(iEscCode);
+ status = 0;
+ } else {
+ buf.AppendChar(iEscCode);
+ status = 0;
+ continue;
+ }
+ break;
+ case 4:
+ status = 0;
+ if (ch != '\n') {
+ continue;
+ }
+ break;
+ }
+ if (!PositionIsInBounds())
+ break;
+
+ ch = m_pBuf[m_Pos++];
+ }
+ if (PositionIsInBounds())
+ ++m_Pos;
+
+ if (buf.GetLength() > MAX_STRING_LENGTH) {
+ return CFX_ByteString(buf.GetBuffer(), MAX_STRING_LENGTH);
+ }
+ return buf.GetByteString();
+}
+
+CFX_ByteString CPDF_StreamParser::ReadHexString() {
+ if (!PositionIsInBounds())
+ return CFX_ByteString();
+
+ CFX_ByteTextBuf buf;
+ bool bFirst = true;
+ int code = 0;
+ while (PositionIsInBounds()) {
+ int ch = m_pBuf[m_Pos++];
+
+ if (ch == '>')
+ break;
+
+ if (!std::isxdigit(ch))
+ continue;
+
+ int val = FXSYS_toHexDigit(ch);
+ if (bFirst) {
+ code = val * 16;
+ } else {
+ code += val;
+ buf.AppendByte((uint8_t)code);
+ }
+ bFirst = !bFirst;
+ }
+ if (!bFirst)
+ buf.AppendChar((char)code);
+
+ if (buf.GetLength() > MAX_STRING_LENGTH)
+ return CFX_ByteString(buf.GetBuffer(), MAX_STRING_LENGTH);
+
+ return buf.GetByteString();
+}
+
+bool CPDF_StreamParser::PositionIsInBounds() const {
+ return m_Pos < m_Size;
+}
+
+CPDF_ContentParser::CPDF_ContentParser()
+ : m_Status(Ready),
+ m_InternalStage(STAGE_GETCONTENT),
+ m_pObjectHolder(nullptr),
+ m_bForm(false),
+ m_pType3Char(nullptr),
+ m_pData(nullptr),
+ m_Size(0),
+ m_CurrentOffset(0) {}
+
+CPDF_ContentParser::~CPDF_ContentParser() {
+ if (!m_pSingleStream)
+ FX_Free(m_pData);
+}
+
+void CPDF_ContentParser::Start(CPDF_Page* pPage, CPDF_ParseOptions* pOptions) {
+ if (m_Status != Ready || !pPage || !pPage->m_pDocument ||
+ !pPage->m_pFormDict) {
+ m_Status = Done;
+ return;
+ }
+ m_pObjectHolder = pPage;
+ m_bForm = FALSE;
+ if (pOptions) {
+ m_Options = *pOptions;
+ }
+ m_Status = ToBeContinued;
+ m_InternalStage = STAGE_GETCONTENT;
+ m_CurrentOffset = 0;
+
+ CPDF_Object* pContent = pPage->m_pFormDict->GetElementValue("Contents");
+ if (!pContent) {
+ m_Status = Done;
+ return;
+ }
+ if (CPDF_Stream* pStream = pContent->AsStream()) {
+ m_nStreams = 0;
+ m_pSingleStream.reset(new CPDF_StreamAcc);
+ m_pSingleStream->LoadAllData(pStream, FALSE);
+ } else if (CPDF_Array* pArray = pContent->AsArray()) {
+ m_nStreams = pArray->GetCount();
+ if (m_nStreams)
+ m_StreamArray.resize(m_nStreams);
+ else
+ m_Status = Done;
+ } else {
+ m_Status = Done;
+ }
+}
+
+void CPDF_ContentParser::Start(CPDF_Form* pForm,
+ CPDF_AllStates* pGraphicStates,
+ CFX_Matrix* pParentMatrix,
+ CPDF_Type3Char* pType3Char,
+ CPDF_ParseOptions* pOptions,
+ int level) {
+ m_pType3Char = pType3Char;
+ m_pObjectHolder = pForm;
+ m_bForm = TRUE;
+ CFX_Matrix form_matrix = pForm->m_pFormDict->GetMatrixBy("Matrix");
+ if (pGraphicStates) {
+ form_matrix.Concat(pGraphicStates->m_CTM);
+ }
+ CPDF_Array* pBBox = pForm->m_pFormDict->GetArrayBy("BBox");
+ CFX_FloatRect form_bbox;
+ CPDF_Path ClipPath;
+ if (pBBox) {
+ form_bbox = pBBox->GetRect();
+ ClipPath.New();
+ ClipPath.AppendRect(form_bbox.left, form_bbox.bottom, form_bbox.right,
+ form_bbox.top);
+ ClipPath.Transform(&form_matrix);
+ if (pParentMatrix) {
+ ClipPath.Transform(pParentMatrix);
+ }
+ form_bbox.Transform(&form_matrix);
+ if (pParentMatrix) {
+ form_bbox.Transform(pParentMatrix);
+ }
+ }
+ CPDF_Dictionary* pResources = pForm->m_pFormDict->GetDictBy("Resources");
+ m_pParser.reset(new CPDF_StreamContentParser(
+ pForm->m_pDocument, pForm->m_pPageResources, pForm->m_pResources,
+ pParentMatrix, pForm, pResources, &form_bbox, pOptions, pGraphicStates,
+ level));
+ m_pParser->GetCurStates()->m_CTM = form_matrix;
+ m_pParser->GetCurStates()->m_ParentMatrix = form_matrix;
+ if (ClipPath.NotNull()) {
+ m_pParser->GetCurStates()->m_ClipPath.AppendPath(ClipPath, FXFILL_WINDING,
+ TRUE);
+ }
+ if (pForm->m_Transparency & PDFTRANS_GROUP) {
+ CPDF_GeneralStateData* pData =
+ m_pParser->GetCurStates()->m_GeneralState.GetModify();
+ pData->m_BlendType = FXDIB_BLEND_NORMAL;
+ pData->m_StrokeAlpha = 1.0f;
+ pData->m_FillAlpha = 1.0f;
+ pData->m_pSoftMask = NULL;
+ }
+ m_nStreams = 0;
+ m_pSingleStream.reset(new CPDF_StreamAcc);
+ m_pSingleStream->LoadAllData(pForm->m_pFormStream, FALSE);
+ m_pData = (uint8_t*)m_pSingleStream->GetData();
+ m_Size = m_pSingleStream->GetSize();
+ m_Status = ToBeContinued;
+ m_InternalStage = STAGE_PARSE;
+ m_CurrentOffset = 0;
+}
+
+void CPDF_ContentParser::Continue(IFX_Pause* pPause) {
+ int steps = 0;
+ while (m_Status == ToBeContinued) {
+ if (m_InternalStage == STAGE_GETCONTENT) {
+ if (m_CurrentOffset == m_nStreams) {
+ if (!m_StreamArray.empty()) {
+ FX_SAFE_DWORD safeSize = 0;
+ for (const auto& stream : m_StreamArray) {
+ safeSize += stream->GetSize();
+ safeSize += 1;
+ }
+ if (!safeSize.IsValid()) {
+ m_Status = Done;
+ return;
+ }
+ m_Size = safeSize.ValueOrDie();
+ m_pData = FX_Alloc(uint8_t, m_Size);
+ FX_DWORD pos = 0;
+ for (const auto& stream : m_StreamArray) {
+ FXSYS_memcpy(m_pData + pos, stream->GetData(), stream->GetSize());
+ pos += stream->GetSize();
+ m_pData[pos++] = ' ';
+ }
+ m_StreamArray.clear();
+ } else {
+ m_pData = (uint8_t*)m_pSingleStream->GetData();
+ m_Size = m_pSingleStream->GetSize();
+ }
+ m_InternalStage = STAGE_PARSE;
+ m_CurrentOffset = 0;
+ } else {
+ CPDF_Array* pContent =
+ m_pObjectHolder->m_pFormDict->GetArrayBy("Contents");
+ m_StreamArray[m_CurrentOffset].reset(new CPDF_StreamAcc);
+ CPDF_Stream* pStreamObj = ToStream(
+ pContent ? pContent->GetElementValue(m_CurrentOffset) : nullptr);
+ m_StreamArray[m_CurrentOffset]->LoadAllData(pStreamObj, FALSE);
+ m_CurrentOffset++;
+ }
+ }
+ if (m_InternalStage == STAGE_PARSE) {
+ if (!m_pParser) {
+ m_pParser.reset(new CPDF_StreamContentParser(
+ m_pObjectHolder->m_pDocument, m_pObjectHolder->m_pPageResources,
+ nullptr, nullptr, m_pObjectHolder, m_pObjectHolder->m_pResources,
+ &m_pObjectHolder->m_BBox, &m_Options, nullptr, 0));
+ m_pParser->GetCurStates()->m_ColorState.GetModify()->Default();
+ }
+ if (m_CurrentOffset >= m_Size) {
+ m_InternalStage = STAGE_CHECKCLIP;
+ } else {
+ m_CurrentOffset +=
+ m_pParser->Parse(m_pData + m_CurrentOffset,
+ m_Size - m_CurrentOffset, PARSE_STEP_LIMIT);
+ }
+ }
+ if (m_InternalStage == STAGE_CHECKCLIP) {
+ if (m_pType3Char) {
+ m_pType3Char->m_bColored = m_pParser->IsColored();
+ m_pType3Char->m_Width =
+ FXSYS_round(m_pParser->GetType3Data()[0] * 1000);
+ m_pType3Char->m_BBox.left =
+ FXSYS_round(m_pParser->GetType3Data()[2] * 1000);
+ m_pType3Char->m_BBox.bottom =
+ FXSYS_round(m_pParser->GetType3Data()[3] * 1000);
+ m_pType3Char->m_BBox.right =
+ FXSYS_round(m_pParser->GetType3Data()[4] * 1000);
+ m_pType3Char->m_BBox.top =
+ FXSYS_round(m_pParser->GetType3Data()[5] * 1000);
+ }
+ for (auto& pObj : *m_pObjectHolder->GetPageObjectList()) {
+ if (pObj->m_ClipPath.IsNull()) {
+ continue;
+ }
+ if (pObj->m_ClipPath.GetPathCount() != 1) {
+ continue;
+ }
+ if (pObj->m_ClipPath.GetTextCount()) {
+ continue;
+ }
+ CPDF_Path ClipPath = pObj->m_ClipPath.GetPath(0);
+ if (!ClipPath.IsRect() || pObj->IsShading()) {
+ continue;
+ }
+ CFX_FloatRect old_rect(ClipPath.GetPointX(0), ClipPath.GetPointY(0),
+ ClipPath.GetPointX(2), ClipPath.GetPointY(2));
+ CFX_FloatRect obj_rect(pObj->m_Left, pObj->m_Bottom, pObj->m_Right,
+ pObj->m_Top);
+ if (old_rect.Contains(obj_rect)) {
+ pObj->m_ClipPath.SetNull();
+ }
+ }
+ m_Status = Done;
+ return;
+ }
+ steps++;
+ if (pPause && pPause->NeedToPauseNow()) {
+ break;
+ }
+ }
+}
diff --git a/core/fpdfapi/fpdf_page/fpdf_page_parser_old_unittest.cpp b/core/fpdfapi/fpdf_page/fpdf_page_parser_old_unittest.cpp
new file mode 100644
index 0000000000..f4c33d2811
--- /dev/null
+++ b/core/fpdfapi/fpdf_page/fpdf_page_parser_old_unittest.cpp
@@ -0,0 +1,47 @@
+// Copyright 2015 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "core/fpdfapi/fpdf_page/pageint.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+TEST(fpdf_page_parser_old, ReadHexString) {
+ {
+ // Position out of bounds.
+ uint8_t data[] = "12ab>";
+ CPDF_StreamParser parser(data, 5);
+ parser.SetPos(6);
+ EXPECT_EQ("", parser.ReadHexString());
+ }
+
+ {
+ // Regular conversion.
+ uint8_t data[] = "1A2b>abcd";
+ CPDF_StreamParser parser(data, 5);
+ EXPECT_EQ("\x1a\x2b", parser.ReadHexString());
+ EXPECT_EQ(5, parser.GetPos());
+ }
+
+ {
+ // Missing ending >
+ uint8_t data[] = "1A2b";
+ CPDF_StreamParser parser(data, 5);
+ EXPECT_EQ("\x1a\x2b", parser.ReadHexString());
+ EXPECT_EQ(5, parser.GetPos());
+ }
+
+ {
+ // Uneven number of bytes.
+ uint8_t data[] = "1A2>asdf";
+ CPDF_StreamParser parser(data, 5);
+ EXPECT_EQ("\x1a\x20", parser.ReadHexString());
+ EXPECT_EQ(4, parser.GetPos());
+ }
+
+ {
+ uint8_t data[] = ">";
+ CPDF_StreamParser parser(data, 5);
+ EXPECT_EQ("", parser.ReadHexString());
+ EXPECT_EQ(1, parser.GetPos());
+ }
+}
diff --git a/core/fpdfapi/fpdf_page/fpdf_page_path.cpp b/core/fpdfapi/fpdf_page/fpdf_page_path.cpp
new file mode 100644
index 0000000000..c2b6f13ca0
--- /dev/null
+++ b/core/fpdfapi/fpdf_page/fpdf_page_path.cpp
@@ -0,0 +1,55 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_page/pageint.h"
+
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_page.h"
+#include "core/include/fpdfapi/fpdf_pageobj.h"
+
+CPDF_PathObject::CPDF_PathObject() {}
+
+CPDF_PathObject::~CPDF_PathObject() {}
+
+CPDF_PathObject* CPDF_PathObject::Clone() const {
+ CPDF_PathObject* obj = new CPDF_PathObject;
+ obj->CopyData(this);
+
+ obj->m_Path = m_Path;
+ obj->m_FillType = m_FillType;
+ obj->m_bStroke = m_bStroke;
+ obj->m_Matrix = m_Matrix;
+ return obj;
+}
+
+void CPDF_PathObject::Transform(const CFX_Matrix& matrix) {
+ m_Matrix.Concat(matrix);
+ CalcBoundingBox();
+}
+
+void CPDF_PathObject::CalcBoundingBox() {
+ if (m_Path.IsNull()) {
+ return;
+ }
+ CFX_FloatRect rect;
+ FX_FLOAT width = m_GraphState.GetObject()->m_LineWidth;
+ if (m_bStroke && width != 0) {
+ rect = m_Path.GetBoundingBox(width, m_GraphState.GetObject()->m_MiterLimit);
+ } else {
+ rect = m_Path.GetBoundingBox();
+ }
+ rect.Transform(&m_Matrix);
+ if (width == 0 && m_bStroke) {
+ rect.left += -0.5f;
+ rect.right += 0.5f;
+ rect.bottom += -0.5f;
+ rect.top += 0.5f;
+ }
+ m_Left = rect.left;
+ m_Right = rect.right;
+ m_Top = rect.top;
+ m_Bottom = rect.bottom;
+}
diff --git a/core/fpdfapi/fpdf_page/fpdf_page_pattern.cpp b/core/fpdfapi/fpdf_page/fpdf_page_pattern.cpp
new file mode 100644
index 0000000000..6bb64292a3
--- /dev/null
+++ b/core/fpdfapi/fpdf_page/fpdf_page_pattern.cpp
@@ -0,0 +1,320 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_page/pageint.h"
+
+#include <algorithm>
+
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_document.h"
+#include "core/include/fpdfapi/fpdf_page.h"
+
+namespace {
+
+const int kSingleCoordinatePair = 1;
+const int kTensorCoordinatePairs = 16;
+const int kCoonsCoordinatePairs = 12;
+
+const int kSingleColorPerPatch = 1;
+const int kQuadColorsPerPatch = 4;
+
+ShadingType ToShadingType(int type) {
+ return (type > static_cast<int>(kInvalidShading) &&
+ type < static_cast<int>(kMaxShading))
+ ? static_cast<ShadingType>(type)
+ : kInvalidShading;
+}
+
+} // namespace
+
+CPDF_Pattern::CPDF_Pattern(PatternType type,
+ CPDF_Document* pDoc,
+ CPDF_Object* pObj,
+ const CFX_Matrix* pParentMatrix)
+ : m_PatternType(type),
+ m_pDocument(pDoc),
+ m_pPatternObj(pObj),
+ m_bForceClear(FALSE) {
+ if (pParentMatrix)
+ m_ParentMatrix = *pParentMatrix;
+}
+CPDF_Pattern::~CPDF_Pattern() {}
+CPDF_TilingPattern::CPDF_TilingPattern(CPDF_Document* pDoc,
+ CPDF_Object* pPatternObj,
+ const CFX_Matrix* parentMatrix)
+ : CPDF_Pattern(TILING, pDoc, pPatternObj, parentMatrix) {
+ CPDF_Dictionary* pDict = m_pPatternObj->GetDict();
+ m_Pattern2Form = pDict->GetMatrixBy("Matrix");
+ m_bColored = pDict->GetIntegerBy("PaintType") == 1;
+ if (parentMatrix) {
+ m_Pattern2Form.Concat(*parentMatrix);
+ }
+ m_pForm = NULL;
+}
+CPDF_TilingPattern::~CPDF_TilingPattern() {
+ delete m_pForm;
+ m_pForm = NULL;
+}
+FX_BOOL CPDF_TilingPattern::Load() {
+ if (m_pForm)
+ return TRUE;
+
+ CPDF_Dictionary* pDict = m_pPatternObj->GetDict();
+ if (!pDict)
+ return FALSE;
+
+ m_bColored = pDict->GetIntegerBy("PaintType") == 1;
+ m_XStep = (FX_FLOAT)FXSYS_fabs(pDict->GetNumberBy("XStep"));
+ m_YStep = (FX_FLOAT)FXSYS_fabs(pDict->GetNumberBy("YStep"));
+
+ CPDF_Stream* pStream = m_pPatternObj->AsStream();
+ if (!pStream)
+ return FALSE;
+
+ m_pForm = new CPDF_Form(m_pDocument, NULL, pStream);
+ m_pForm->ParseContent(NULL, &m_ParentMatrix, NULL, NULL);
+ m_BBox = pDict->GetRectBy("BBox");
+ return TRUE;
+}
+CPDF_ShadingPattern::CPDF_ShadingPattern(CPDF_Document* pDoc,
+ CPDF_Object* pPatternObj,
+ FX_BOOL bShading,
+ const CFX_Matrix* parentMatrix)
+ : CPDF_Pattern(SHADING,
+ pDoc,
+ bShading ? nullptr : pPatternObj,
+ parentMatrix),
+ m_ShadingType(kInvalidShading),
+ m_bShadingObj(bShading),
+ m_pShadingObj(pPatternObj),
+ m_pCS(nullptr),
+ m_pCountedCS(nullptr),
+ m_nFuncs(0) {
+ if (!bShading) {
+ CPDF_Dictionary* pDict = m_pPatternObj->GetDict();
+ m_Pattern2Form = pDict->GetMatrixBy("Matrix");
+ m_pShadingObj = pDict->GetElementValue("Shading");
+ if (parentMatrix)
+ m_Pattern2Form.Concat(*parentMatrix);
+ }
+ for (int i = 0; i < FX_ArraySize(m_pFunctions); ++i)
+ m_pFunctions[i] = nullptr;
+}
+
+CPDF_ShadingPattern::~CPDF_ShadingPattern() {
+ for (int i = 0; i < m_nFuncs; ++i)
+ delete m_pFunctions[i];
+
+ CPDF_ColorSpace* pCS = m_pCountedCS ? m_pCountedCS->get() : NULL;
+ if (pCS && m_pDocument)
+ m_pDocument->GetPageData()->ReleaseColorSpace(pCS->GetArray());
+}
+
+FX_BOOL CPDF_ShadingPattern::Load() {
+ if (m_ShadingType != kInvalidShading)
+ return TRUE;
+
+ CPDF_Dictionary* pShadingDict =
+ m_pShadingObj ? m_pShadingObj->GetDict() : NULL;
+ if (!pShadingDict) {
+ return FALSE;
+ }
+ if (m_nFuncs) {
+ for (int i = 0; i < m_nFuncs; i++)
+ delete m_pFunctions[i];
+ m_nFuncs = 0;
+ }
+ CPDF_Object* pFunc = pShadingDict->GetElementValue("Function");
+ if (pFunc) {
+ if (CPDF_Array* pArray = pFunc->AsArray()) {
+ m_nFuncs = std::min<int>(pArray->GetCount(), 4);
+
+ for (int i = 0; i < m_nFuncs; i++) {
+ m_pFunctions[i] = CPDF_Function::Load(pArray->GetElementValue(i));
+ }
+ } else {
+ m_pFunctions[0] = CPDF_Function::Load(pFunc);
+ m_nFuncs = 1;
+ }
+ }
+ CPDF_Object* pCSObj = pShadingDict->GetElementValue("ColorSpace");
+ if (!pCSObj) {
+ return FALSE;
+ }
+ CPDF_DocPageData* pDocPageData = m_pDocument->GetPageData();
+ m_pCS = pDocPageData->GetColorSpace(pCSObj, NULL);
+ if (m_pCS) {
+ m_pCountedCS = pDocPageData->FindColorSpacePtr(m_pCS->GetArray());
+ }
+
+ m_ShadingType = ToShadingType(pShadingDict->GetIntegerBy("ShadingType"));
+
+ // We expect to have a stream if our shading type is a mesh.
+ if (IsMeshShading() && !ToStream(m_pShadingObj))
+ return FALSE;
+
+ return TRUE;
+}
+FX_BOOL CPDF_MeshStream::Load(CPDF_Stream* pShadingStream,
+ CPDF_Function** pFuncs,
+ int nFuncs,
+ CPDF_ColorSpace* pCS) {
+ m_Stream.LoadAllData(pShadingStream);
+ m_BitStream.Init(m_Stream.GetData(), m_Stream.GetSize());
+ m_pFuncs = pFuncs;
+ m_nFuncs = nFuncs;
+ m_pCS = pCS;
+ CPDF_Dictionary* pDict = pShadingStream->GetDict();
+ m_nCoordBits = pDict->GetIntegerBy("BitsPerCoordinate");
+ m_nCompBits = pDict->GetIntegerBy("BitsPerComponent");
+ m_nFlagBits = pDict->GetIntegerBy("BitsPerFlag");
+ if (!m_nCoordBits || !m_nCompBits) {
+ return FALSE;
+ }
+ FX_DWORD nComps = pCS->CountComponents();
+ if (nComps > 8) {
+ return FALSE;
+ }
+ m_nComps = nFuncs ? 1 : nComps;
+ if (((int)m_nComps < 0) || m_nComps > 8) {
+ return FALSE;
+ }
+ m_CoordMax = m_nCoordBits == 32 ? -1 : (1 << m_nCoordBits) - 1;
+ m_CompMax = (1 << m_nCompBits) - 1;
+ CPDF_Array* pDecode = pDict->GetArrayBy("Decode");
+ if (!pDecode || pDecode->GetCount() != 4 + m_nComps * 2) {
+ return FALSE;
+ }
+ m_xmin = pDecode->GetNumberAt(0);
+ m_xmax = pDecode->GetNumberAt(1);
+ m_ymin = pDecode->GetNumberAt(2);
+ m_ymax = pDecode->GetNumberAt(3);
+ for (FX_DWORD i = 0; i < m_nComps; i++) {
+ m_ColorMin[i] = pDecode->GetNumberAt(i * 2 + 4);
+ m_ColorMax[i] = pDecode->GetNumberAt(i * 2 + 5);
+ }
+ return TRUE;
+}
+FX_DWORD CPDF_MeshStream::GetFlag() {
+ return m_BitStream.GetBits(m_nFlagBits) & 0x03;
+}
+void CPDF_MeshStream::GetCoords(FX_FLOAT& x, FX_FLOAT& y) {
+ if (m_nCoordBits == 32) {
+ x = m_xmin + (FX_FLOAT)(m_BitStream.GetBits(m_nCoordBits) *
+ (m_xmax - m_xmin) / (double)m_CoordMax);
+ y = m_ymin + (FX_FLOAT)(m_BitStream.GetBits(m_nCoordBits) *
+ (m_ymax - m_ymin) / (double)m_CoordMax);
+ } else {
+ x = m_xmin +
+ m_BitStream.GetBits(m_nCoordBits) * (m_xmax - m_xmin) / m_CoordMax;
+ y = m_ymin +
+ m_BitStream.GetBits(m_nCoordBits) * (m_ymax - m_ymin) / m_CoordMax;
+ }
+}
+void CPDF_MeshStream::GetColor(FX_FLOAT& r, FX_FLOAT& g, FX_FLOAT& b) {
+ FX_DWORD i;
+ FX_FLOAT color_value[8];
+ for (i = 0; i < m_nComps; i++) {
+ color_value[i] = m_ColorMin[i] +
+ m_BitStream.GetBits(m_nCompBits) *
+ (m_ColorMax[i] - m_ColorMin[i]) / m_CompMax;
+ }
+ if (m_nFuncs) {
+ static const int kMaxResults = 8;
+ FX_FLOAT result[kMaxResults];
+ int nResults;
+ FXSYS_memset(result, 0, sizeof(result));
+ for (FX_DWORD i = 0; i < m_nFuncs; i++) {
+ if (m_pFuncs[i] && m_pFuncs[i]->CountOutputs() <= kMaxResults) {
+ m_pFuncs[i]->Call(color_value, 1, result, nResults);
+ }
+ }
+ m_pCS->GetRGB(result, r, g, b);
+ } else {
+ m_pCS->GetRGB(color_value, r, g, b);
+ }
+}
+FX_DWORD CPDF_MeshStream::GetVertex(CPDF_MeshVertex& vertex,
+ CFX_Matrix* pObject2Bitmap) {
+ FX_DWORD flag = GetFlag();
+ GetCoords(vertex.x, vertex.y);
+ pObject2Bitmap->Transform(vertex.x, vertex.y);
+ GetColor(vertex.r, vertex.g, vertex.b);
+ m_BitStream.ByteAlign();
+ return flag;
+}
+FX_BOOL CPDF_MeshStream::GetVertexRow(CPDF_MeshVertex* vertex,
+ int count,
+ CFX_Matrix* pObject2Bitmap) {
+ for (int i = 0; i < count; i++) {
+ if (m_BitStream.IsEOF()) {
+ return FALSE;
+ }
+ GetCoords(vertex[i].x, vertex[i].y);
+ pObject2Bitmap->Transform(vertex[i].x, vertex[i].y);
+ GetColor(vertex[i].r, vertex[i].g, vertex[i].b);
+ m_BitStream.ByteAlign();
+ }
+ return TRUE;
+}
+
+CFX_FloatRect GetShadingBBox(CPDF_Stream* pStream,
+ ShadingType type,
+ const CFX_Matrix* pMatrix,
+ CPDF_Function** pFuncs,
+ int nFuncs,
+ CPDF_ColorSpace* pCS) {
+ if (!pStream || !pStream->IsStream() || !pFuncs || !pCS)
+ return CFX_FloatRect(0, 0, 0, 0);
+
+ CPDF_MeshStream stream;
+ if (!stream.Load(pStream, pFuncs, nFuncs, pCS))
+ return CFX_FloatRect(0, 0, 0, 0);
+
+ CFX_FloatRect rect;
+ bool bStarted = false;
+ bool bGouraud = type == kFreeFormGouraudTriangleMeshShading ||
+ type == kLatticeFormGouraudTriangleMeshShading;
+
+ int point_count = kSingleCoordinatePair;
+ if (type == kTensorProductPatchMeshShading)
+ point_count = kTensorCoordinatePairs;
+ else if (type == kCoonsPatchMeshShading)
+ point_count = kCoonsCoordinatePairs;
+
+ int color_count = kSingleColorPerPatch;
+ if (type == kCoonsPatchMeshShading || type == kTensorProductPatchMeshShading)
+ color_count = kQuadColorsPerPatch;
+
+ while (!stream.m_BitStream.IsEOF()) {
+ FX_DWORD flag = 0;
+ if (type != kLatticeFormGouraudTriangleMeshShading)
+ flag = stream.GetFlag();
+
+ if (!bGouraud && flag) {
+ point_count -= 4;
+ color_count -= 2;
+ }
+
+ for (int i = 0; i < point_count; i++) {
+ FX_FLOAT x, y;
+ stream.GetCoords(x, y);
+ if (bStarted) {
+ rect.UpdateRect(x, y);
+ } else {
+ rect.InitRect(x, y);
+ bStarted = TRUE;
+ }
+ }
+ stream.m_BitStream.SkipBits(stream.m_nComps * stream.m_nCompBits *
+ color_count);
+ if (bGouraud)
+ stream.m_BitStream.ByteAlign();
+ }
+ rect.Transform(pMatrix);
+ return rect;
+}
diff --git a/core/fpdfapi/fpdf_page/pageint.h b/core/fpdfapi/fpdf_page/pageint.h
new file mode 100644
index 0000000000..8818bc9af0
--- /dev/null
+++ b/core/fpdfapi/fpdf_page/pageint.h
@@ -0,0 +1,459 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_FPDFAPI_FPDF_PAGE_PAGEINT_H_
+#define CORE_FPDFAPI_FPDF_PAGE_PAGEINT_H_
+
+#include <map>
+#include <memory>
+#include <unordered_map>
+#include <vector>
+
+#include "core/include/fpdfapi/fpdf_page.h"
+#include "core/include/fpdfapi/fpdf_pageobj.h"
+
+class CPDF_AllStates;
+class CPDF_ParseOptions;
+class CPDF_IccProfile;
+
+#define PARSE_STEP_LIMIT 100
+
+class CPDF_StreamParser {
+ public:
+ enum SyntaxType { EndOfData, Number, Keyword, Name, Others };
+
+ CPDF_StreamParser(const uint8_t* pData, FX_DWORD dwSize);
+ ~CPDF_StreamParser();
+
+ CPDF_Stream* ReadInlineStream(CPDF_Document* pDoc,
+ CPDF_Dictionary* pDict,
+ CPDF_Object* pCSObj,
+ FX_BOOL bDecode);
+ SyntaxType ParseNextElement();
+ uint8_t* GetWordBuf() { return m_WordBuffer; }
+ FX_DWORD GetWordSize() const { return m_WordSize; }
+ CPDF_Object* GetObject() {
+ CPDF_Object* pObj = m_pLastObj;
+ m_pLastObj = NULL;
+ return pObj;
+ }
+ FX_DWORD GetPos() const { return m_Pos; }
+ void SetPos(FX_DWORD pos) { m_Pos = pos; }
+ CPDF_Object* ReadNextObject(FX_BOOL bAllowNestedArray = FALSE,
+ FX_BOOL bInArray = FALSE);
+ void SkipPathObject();
+
+ protected:
+ friend class fpdf_page_parser_old_ReadHexString_Test;
+
+ void GetNextWord(FX_BOOL& bIsNumber);
+ CFX_ByteString ReadString();
+ CFX_ByteString ReadHexString();
+ const uint8_t* m_pBuf;
+
+ // Length in bytes of m_pBuf.
+ FX_DWORD m_Size;
+
+ // Current byte position within m_pBuf.
+ FX_DWORD m_Pos;
+
+ uint8_t m_WordBuffer[256];
+ FX_DWORD m_WordSize;
+ CPDF_Object* m_pLastObj;
+
+ private:
+ bool PositionIsInBounds() const;
+};
+
+#define PARAM_BUF_SIZE 16
+struct ContentParam {
+ enum Type { OBJECT = 0, NUMBER, NAME };
+ Type m_Type;
+ union {
+ struct {
+ FX_BOOL m_bInteger;
+ union {
+ int m_Integer;
+ FX_FLOAT m_Float;
+ };
+ } m_Number;
+ CPDF_Object* m_pObject;
+ struct {
+ int m_Len;
+ char m_Buffer[32];
+ } m_Name;
+ };
+};
+#define _FPDF_MAX_FORM_LEVEL_ 30
+#define _FPDF_MAX_TYPE3_FORM_LEVEL_ 4
+#define _FPDF_MAX_OBJECT_STACK_SIZE_ 512
+class CPDF_StreamContentParser {
+ public:
+ CPDF_StreamContentParser(CPDF_Document* pDoc,
+ CPDF_Dictionary* pPageResources,
+ CPDF_Dictionary* pParentResources,
+ CFX_Matrix* pmtContentToUser,
+ CPDF_PageObjectHolder* pObjectHolder,
+ CPDF_Dictionary* pResources,
+ CFX_FloatRect* pBBox,
+ CPDF_ParseOptions* pOptions,
+ CPDF_AllStates* pAllStates,
+ int level);
+ ~CPDF_StreamContentParser();
+
+ CPDF_PageObjectHolder* GetPageObjectHolder() const { return m_pObjectHolder; }
+ CPDF_AllStates* GetCurStates() const { return m_pCurStates.get(); }
+ FX_BOOL IsColored() const { return m_bColored; }
+ const FX_FLOAT* GetType3Data() const { return m_Type3Data; }
+
+ void AddNumberParam(const FX_CHAR* str, int len);
+ void AddObjectParam(CPDF_Object* pObj);
+ void AddNameParam(const FX_CHAR* name, int size);
+ int GetNextParamPos();
+ void ClearAllParams();
+ CPDF_Object* GetObject(FX_DWORD index);
+ CFX_ByteString GetString(FX_DWORD index);
+ FX_FLOAT GetNumber(FX_DWORD index);
+ FX_FLOAT GetNumber16(FX_DWORD index);
+ int GetInteger(FX_DWORD index) { return (int32_t)(GetNumber(index)); }
+ void OnOperator(const FX_CHAR* op);
+ void BigCaseCaller(int index);
+ FX_DWORD GetParsePos() { return m_pSyntax->GetPos(); }
+ void AddTextObject(CFX_ByteString* pText,
+ FX_FLOAT fInitKerning,
+ FX_FLOAT* pKerning,
+ int count);
+
+ void ConvertUserSpace(FX_FLOAT& x, FX_FLOAT& y);
+ void ConvertTextSpace(FX_FLOAT& x, FX_FLOAT& y);
+ void OnChangeTextMatrix();
+ FX_DWORD Parse(const uint8_t* pData, FX_DWORD dwSize, FX_DWORD max_cost);
+ void ParsePathObject();
+ void AddPathPoint(FX_FLOAT x, FX_FLOAT y, int flag);
+ void AddPathRect(FX_FLOAT x, FX_FLOAT y, FX_FLOAT w, FX_FLOAT h);
+ void AddPathObject(int FillType, FX_BOOL bStroke);
+ CPDF_ImageObject* AddImage(CPDF_Stream* pStream,
+ CPDF_Image* pImage,
+ FX_BOOL bInline);
+ void AddDuplicateImage();
+ void AddForm(CPDF_Stream* pStream);
+ void SetGraphicStates(CPDF_PageObject* pObj,
+ FX_BOOL bColor,
+ FX_BOOL bText,
+ FX_BOOL bGraph);
+ void SaveStates(CPDF_AllStates* pState);
+ void RestoreStates(CPDF_AllStates* pState);
+ CPDF_Font* FindFont(const CFX_ByteString& name);
+ CPDF_ColorSpace* FindColorSpace(const CFX_ByteString& name);
+ CPDF_Pattern* FindPattern(const CFX_ByteString& name, FX_BOOL bShading);
+ CPDF_Object* FindResourceObj(const CFX_ByteStringC& type,
+ const CFX_ByteString& name);
+
+ protected:
+ using OpCodes =
+ std::unordered_map<FX_DWORD, void (CPDF_StreamContentParser::*)()>;
+ static OpCodes InitializeOpCodes();
+
+ void Handle_CloseFillStrokePath();
+ void Handle_FillStrokePath();
+ void Handle_CloseEOFillStrokePath();
+ void Handle_EOFillStrokePath();
+ void Handle_BeginMarkedContent_Dictionary();
+ void Handle_BeginImage();
+ void Handle_BeginMarkedContent();
+ void Handle_BeginText();
+ void Handle_CurveTo_123();
+ void Handle_ConcatMatrix();
+ void Handle_SetColorSpace_Fill();
+ void Handle_SetColorSpace_Stroke();
+ void Handle_SetDash();
+ void Handle_SetCharWidth();
+ void Handle_SetCachedDevice();
+ void Handle_ExecuteXObject();
+ void Handle_MarkPlace_Dictionary();
+ void Handle_EndImage();
+ void Handle_EndMarkedContent();
+ void Handle_EndText();
+ void Handle_FillPath();
+ void Handle_FillPathOld();
+ void Handle_EOFillPath();
+ void Handle_SetGray_Fill();
+ void Handle_SetGray_Stroke();
+ void Handle_SetExtendGraphState();
+ void Handle_ClosePath();
+ void Handle_SetFlat();
+ void Handle_BeginImageData();
+ void Handle_SetLineJoin();
+ void Handle_SetLineCap();
+ void Handle_SetCMYKColor_Fill();
+ void Handle_SetCMYKColor_Stroke();
+ void Handle_LineTo();
+ void Handle_MoveTo();
+ void Handle_SetMiterLimit();
+ void Handle_MarkPlace();
+ void Handle_EndPath();
+ void Handle_SaveGraphState();
+ void Handle_RestoreGraphState();
+ void Handle_Rectangle();
+ void Handle_SetRGBColor_Fill();
+ void Handle_SetRGBColor_Stroke();
+ void Handle_SetRenderIntent();
+ void Handle_CloseStrokePath();
+ void Handle_StrokePath();
+ void Handle_SetColor_Fill();
+ void Handle_SetColor_Stroke();
+ void Handle_SetColorPS_Fill();
+ void Handle_SetColorPS_Stroke();
+ void Handle_ShadeFill();
+ void Handle_SetCharSpace();
+ void Handle_MoveTextPoint();
+ void Handle_MoveTextPoint_SetLeading();
+ void Handle_SetFont();
+ void Handle_ShowText();
+ void Handle_ShowText_Positioning();
+ void Handle_SetTextLeading();
+ void Handle_SetTextMatrix();
+ void Handle_SetTextRenderMode();
+ void Handle_SetTextRise();
+ void Handle_SetWordSpace();
+ void Handle_SetHorzScale();
+ void Handle_MoveToNextLine();
+ void Handle_CurveTo_23();
+ void Handle_SetLineWidth();
+ void Handle_Clip();
+ void Handle_EOClip();
+ void Handle_CurveTo_13();
+ void Handle_NextLineShowText();
+ void Handle_NextLineShowText_Space();
+ void Handle_Invalid();
+
+ CPDF_Document* const m_pDocument;
+ CPDF_Dictionary* m_pPageResources;
+ CPDF_Dictionary* m_pParentResources;
+ CPDF_Dictionary* m_pResources;
+ CPDF_PageObjectHolder* m_pObjectHolder;
+ int m_Level;
+ CFX_Matrix m_mtContentToUser;
+ CFX_FloatRect m_BBox;
+ CPDF_ParseOptions m_Options;
+ ContentParam m_ParamBuf[PARAM_BUF_SIZE];
+ FX_DWORD m_ParamStartPos;
+ FX_DWORD m_ParamCount;
+ CPDF_StreamParser* m_pSyntax;
+ std::unique_ptr<CPDF_AllStates> m_pCurStates;
+ CPDF_ContentMark m_CurContentMark;
+ CFX_ArrayTemplate<CPDF_TextObject*> m_ClipTextList;
+ CPDF_TextObject* m_pLastTextObject;
+ FX_FLOAT m_DefFontSize;
+ FX_PATHPOINT* m_pPathPoints;
+ int m_PathPointCount;
+ int m_PathAllocSize;
+ FX_FLOAT m_PathStartX;
+ FX_FLOAT m_PathStartY;
+ FX_FLOAT m_PathCurrentX;
+ FX_FLOAT m_PathCurrentY;
+ int m_PathClipType;
+ CFX_ByteString m_LastImageName;
+ CPDF_Image* m_pLastImage;
+ CFX_BinaryBuf m_LastImageDict;
+ CFX_BinaryBuf m_LastImageData;
+ CPDF_Dictionary* m_pLastImageDict;
+ CPDF_Dictionary* m_pLastCloneImageDict;
+ FX_BOOL m_bReleaseLastDict;
+ FX_BOOL m_bSameLastDict;
+ FX_BOOL m_bColored;
+ FX_FLOAT m_Type3Data[6];
+ FX_BOOL m_bResourceMissing;
+ std::vector<std::unique_ptr<CPDF_AllStates>> m_StateStack;
+};
+class CPDF_ContentParser {
+ public:
+ enum ParseStatus { Ready, ToBeContinued, Done };
+
+ CPDF_ContentParser();
+ ~CPDF_ContentParser();
+
+ ParseStatus GetStatus() const { return m_Status; }
+ void Start(CPDF_Page* pPage, CPDF_ParseOptions* pOptions);
+ void Start(CPDF_Form* pForm,
+ CPDF_AllStates* pGraphicStates,
+ CFX_Matrix* pParentMatrix,
+ CPDF_Type3Char* pType3Char,
+ CPDF_ParseOptions* pOptions,
+ int level);
+ void Continue(IFX_Pause* pPause);
+
+ private:
+ enum InternalStage {
+ STAGE_GETCONTENT = 1,
+ STAGE_PARSE,
+ STAGE_CHECKCLIP,
+ };
+
+ ParseStatus m_Status;
+ InternalStage m_InternalStage;
+ CPDF_PageObjectHolder* m_pObjectHolder;
+ FX_BOOL m_bForm;
+ CPDF_ParseOptions m_Options;
+ CPDF_Type3Char* m_pType3Char;
+ FX_DWORD m_nStreams;
+ std::unique_ptr<CPDF_StreamAcc> m_pSingleStream;
+ std::vector<std::unique_ptr<CPDF_StreamAcc>> m_StreamArray;
+ uint8_t* m_pData;
+ FX_DWORD m_Size;
+ FX_DWORD m_CurrentOffset;
+ std::unique_ptr<CPDF_StreamContentParser> m_pParser;
+};
+class CPDF_AllStates : public CPDF_GraphicStates {
+ public:
+ CPDF_AllStates();
+ ~CPDF_AllStates();
+ void Copy(const CPDF_AllStates& src);
+ void ProcessExtGS(CPDF_Dictionary* pGS, CPDF_StreamContentParser* pParser);
+ void SetLineDash(CPDF_Array*, FX_FLOAT, FX_FLOAT scale);
+ CFX_Matrix m_TextMatrix, m_CTM, m_ParentMatrix;
+ FX_FLOAT m_TextX, m_TextY, m_TextLineX, m_TextLineY;
+ FX_FLOAT m_TextLeading, m_TextRise, m_TextHorzScale;
+};
+
+class CPDF_DocPageData {
+ public:
+ explicit CPDF_DocPageData(CPDF_Document* pPDFDoc);
+ ~CPDF_DocPageData();
+
+ void Clear(FX_BOOL bRelease = FALSE);
+ CPDF_Font* GetFont(CPDF_Dictionary* pFontDict, FX_BOOL findOnly);
+ CPDF_Font* GetStandardFont(const CFX_ByteStringC& fontName,
+ CPDF_FontEncoding* pEncoding);
+ void ReleaseFont(CPDF_Dictionary* pFontDict);
+ CPDF_ColorSpace* GetColorSpace(CPDF_Object* pCSObj,
+ const CPDF_Dictionary* pResources);
+ CPDF_ColorSpace* GetCopiedColorSpace(CPDF_Object* pCSObj);
+ void ReleaseColorSpace(CPDF_Object* pColorSpace);
+ CPDF_Pattern* GetPattern(CPDF_Object* pPatternObj,
+ FX_BOOL bShading,
+ const CFX_Matrix* matrix);
+ void ReleasePattern(CPDF_Object* pPatternObj);
+ CPDF_Image* GetImage(CPDF_Object* pImageStream);
+ void ReleaseImage(CPDF_Object* pImageStream);
+ CPDF_IccProfile* GetIccProfile(CPDF_Stream* pIccProfileStream);
+ void ReleaseIccProfile(CPDF_IccProfile* pIccProfile);
+ CPDF_StreamAcc* GetFontFileStreamAcc(CPDF_Stream* pFontStream);
+ void ReleaseFontFileStreamAcc(CPDF_Stream* pFontStream,
+ FX_BOOL bForce = FALSE);
+ FX_BOOL IsForceClear() const { return m_bForceClear; }
+ CPDF_CountedColorSpace* FindColorSpacePtr(CPDF_Object* pCSObj) const;
+ CPDF_CountedPattern* FindPatternPtr(CPDF_Object* pPatternObj) const;
+
+ private:
+ using CPDF_CountedFont = CPDF_CountedObject<CPDF_Font>;
+ using CPDF_CountedIccProfile = CPDF_CountedObject<CPDF_IccProfile>;
+ using CPDF_CountedImage = CPDF_CountedObject<CPDF_Image>;
+ using CPDF_CountedStreamAcc = CPDF_CountedObject<CPDF_StreamAcc>;
+
+ using CPDF_ColorSpaceMap = std::map<CPDF_Object*, CPDF_CountedColorSpace*>;
+ using CPDF_FontFileMap = std::map<CPDF_Stream*, CPDF_CountedStreamAcc*>;
+ using CPDF_FontMap = std::map<CPDF_Dictionary*, CPDF_CountedFont*>;
+ using CPDF_IccProfileMap = std::map<CPDF_Stream*, CPDF_CountedIccProfile*>;
+ using CPDF_ImageMap = std::map<FX_DWORD, CPDF_CountedImage*>;
+ using CPDF_PatternMap = std::map<CPDF_Object*, CPDF_CountedPattern*>;
+
+ CPDF_Document* const m_pPDFDoc;
+ FX_BOOL m_bForceClear;
+ std::map<CFX_ByteString, CPDF_Stream*> m_HashProfileMap;
+ CPDF_ColorSpaceMap m_ColorSpaceMap;
+ CPDF_FontFileMap m_FontFileMap;
+ CPDF_FontMap m_FontMap;
+ CPDF_IccProfileMap m_IccProfileMap;
+ CPDF_ImageMap m_ImageMap;
+ CPDF_PatternMap m_PatternMap;
+};
+
+class CPDF_Function {
+ public:
+ static CPDF_Function* Load(CPDF_Object* pFuncObj);
+ virtual ~CPDF_Function();
+ FX_BOOL Call(FX_FLOAT* inputs,
+ int ninputs,
+ FX_FLOAT* results,
+ int& nresults) const;
+ int CountInputs() { return m_nInputs; }
+ int CountOutputs() { return m_nOutputs; }
+
+ protected:
+ CPDF_Function();
+ int m_nInputs, m_nOutputs;
+ FX_FLOAT* m_pDomains;
+ FX_FLOAT* m_pRanges;
+ FX_BOOL Init(CPDF_Object* pObj);
+ virtual FX_BOOL v_Init(CPDF_Object* pObj) = 0;
+ virtual FX_BOOL v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const = 0;
+};
+class CPDF_IccProfile {
+ public:
+ CPDF_IccProfile(const uint8_t* pData, FX_DWORD dwSize);
+ ~CPDF_IccProfile();
+ FX_DWORD GetComponents() const { return m_nSrcComponents; }
+ FX_BOOL m_bsRGB;
+ void* m_pTransform;
+
+ private:
+ FX_DWORD m_nSrcComponents;
+};
+
+class CPDF_DeviceCS : public CPDF_ColorSpace {
+ public:
+ CPDF_DeviceCS(CPDF_Document* pDoc, int family);
+
+ FX_BOOL GetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT& R,
+ FX_FLOAT& G,
+ FX_FLOAT& B) const override;
+ FX_BOOL SetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT R,
+ FX_FLOAT G,
+ FX_FLOAT B) const override;
+ FX_BOOL v_GetCMYK(FX_FLOAT* pBuf,
+ FX_FLOAT& c,
+ FX_FLOAT& m,
+ FX_FLOAT& y,
+ FX_FLOAT& k) const override;
+ FX_BOOL v_SetCMYK(FX_FLOAT* pBuf,
+ FX_FLOAT c,
+ FX_FLOAT m,
+ FX_FLOAT y,
+ FX_FLOAT k) const override;
+ void TranslateImageLine(uint8_t* pDestBuf,
+ const uint8_t* pSrcBuf,
+ int pixels,
+ int image_width,
+ int image_height,
+ FX_BOOL bTransMask = FALSE) const override;
+};
+
+class CPDF_PatternCS : public CPDF_ColorSpace {
+ public:
+ explicit CPDF_PatternCS(CPDF_Document* pDoc)
+ : CPDF_ColorSpace(pDoc, PDFCS_PATTERN, 1),
+ m_pBaseCS(nullptr),
+ m_pCountedBaseCS(nullptr) {}
+ ~CPDF_PatternCS() override;
+ FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override;
+ FX_BOOL GetRGB(FX_FLOAT* pBuf,
+ FX_FLOAT& R,
+ FX_FLOAT& G,
+ FX_FLOAT& B) const override;
+ CPDF_ColorSpace* GetBaseCS() const override;
+
+ private:
+ CPDF_ColorSpace* m_pBaseCS;
+ CPDF_CountedColorSpace* m_pCountedBaseCS;
+};
+
+void PDF_ReplaceAbbr(CPDF_Object* pObj);
+bool IsPathOperator(const uint8_t* buf, size_t len);
+
+#endif // CORE_FPDFAPI_FPDF_PAGE_PAGEINT_H_
diff --git a/core/fpdfapi/fpdf_parser/cfdf_document.cpp b/core/fpdfapi/fpdf_parser/cfdf_document.cpp
new file mode 100644
index 0000000000..fd144a10a9
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cfdf_document.cpp
@@ -0,0 +1,98 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/include/fpdfapi/cfdf_document.h"
+
+#include "core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/fpdf_serial.h"
+
+CFDF_Document::CFDF_Document() : CPDF_IndirectObjectHolder(NULL) {
+ m_pRootDict = NULL;
+ m_pFile = NULL;
+ m_bOwnFile = FALSE;
+}
+CFDF_Document::~CFDF_Document() {
+ if (m_bOwnFile && m_pFile) {
+ m_pFile->Release();
+ }
+}
+CFDF_Document* CFDF_Document::CreateNewDoc() {
+ CFDF_Document* pDoc = new CFDF_Document;
+ pDoc->m_pRootDict = new CPDF_Dictionary;
+ pDoc->AddIndirectObject(pDoc->m_pRootDict);
+ CPDF_Dictionary* pFDFDict = new CPDF_Dictionary;
+ pDoc->m_pRootDict->SetAt("FDF", pFDFDict);
+ return pDoc;
+}
+CFDF_Document* CFDF_Document::ParseFile(IFX_FileRead* pFile, FX_BOOL bOwnFile) {
+ if (!pFile) {
+ return NULL;
+ }
+ CFDF_Document* pDoc = new CFDF_Document;
+ pDoc->ParseStream(pFile, bOwnFile);
+ if (!pDoc->m_pRootDict) {
+ delete pDoc;
+ return NULL;
+ }
+ return pDoc;
+}
+CFDF_Document* CFDF_Document::ParseMemory(const uint8_t* pData, FX_DWORD size) {
+ return CFDF_Document::ParseFile(FX_CreateMemoryStream((uint8_t*)pData, size),
+ TRUE);
+}
+void CFDF_Document::ParseStream(IFX_FileRead* pFile, FX_BOOL bOwnFile) {
+ m_pFile = pFile;
+ m_bOwnFile = bOwnFile;
+ CPDF_SyntaxParser parser;
+ parser.InitParser(m_pFile, 0);
+ while (1) {
+ bool bNumber;
+ CFX_ByteString word = parser.GetNextWord(&bNumber);
+ if (bNumber) {
+ FX_DWORD objnum = FXSYS_atoui(word);
+ word = parser.GetNextWord(&bNumber);
+ if (!bNumber) {
+ break;
+ }
+ word = parser.GetNextWord(nullptr);
+ if (word != "obj") {
+ break;
+ }
+ CPDF_Object* pObj = parser.GetObject(this, objnum, 0, true);
+ if (!pObj) {
+ break;
+ }
+ InsertIndirectObject(objnum, pObj);
+ word = parser.GetNextWord(nullptr);
+ if (word != "endobj") {
+ break;
+ }
+ } else {
+ if (word != "trailer") {
+ break;
+ }
+ if (CPDF_Dictionary* pMainDict =
+ ToDictionary(parser.GetObject(this, 0, 0, true))) {
+ m_pRootDict = pMainDict->GetDictBy("Root");
+ pMainDict->Release();
+ }
+ break;
+ }
+ }
+}
+FX_BOOL CFDF_Document::WriteBuf(CFX_ByteTextBuf& buf) const {
+ if (!m_pRootDict) {
+ return FALSE;
+ }
+ buf << "%FDF-1.2\r\n";
+ for (const auto& pair : m_IndirectObjs) {
+ buf << pair.first << " 0 obj\r\n" << pair.second << "\r\nendobj\r\n\r\n";
+ }
+ buf << "trailer\r\n<</Root " << m_pRootDict->GetObjNum()
+ << " 0 R>>\r\n%%EOF\r\n";
+ return TRUE;
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_array.cpp b/core/fpdfapi/fpdf_parser/cpdf_array.cpp
new file mode 100644
index 0000000000..3b21a45ae2
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_array.cpp
@@ -0,0 +1,207 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/include/fpdfapi/cpdf_array.h"
+
+#include "core/include/fpdfapi/cpdf_name.h"
+#include "core/include/fpdfapi/cpdf_number.h"
+#include "core/include/fpdfapi/cpdf_reference.h"
+#include "core/include/fpdfapi/cpdf_stream.h"
+#include "core/include/fpdfapi/cpdf_string.h"
+
+CPDF_Array::CPDF_Array() {}
+
+CPDF_Array::~CPDF_Array() {
+ int size = m_Objects.GetSize();
+ CPDF_Object** pList = m_Objects.GetData();
+ for (int i = 0; i < size; i++) {
+ if (pList[i])
+ pList[i]->Release();
+ }
+}
+
+CPDF_Object::Type CPDF_Array::GetType() const {
+ return ARRAY;
+}
+
+CPDF_Array* CPDF_Array::GetArray() const {
+ // The method should be made non-const if we want to not be const.
+ // See bug #234.
+ return const_cast<CPDF_Array*>(this);
+}
+
+bool CPDF_Array::IsArray() const {
+ return true;
+}
+
+CPDF_Array* CPDF_Array::AsArray() {
+ return this;
+}
+
+const CPDF_Array* CPDF_Array::AsArray() const {
+ return this;
+}
+
+CPDF_Object* CPDF_Array::Clone(FX_BOOL bDirect) const {
+ CPDF_Array* pCopy = new CPDF_Array();
+ for (int i = 0; i < GetCount(); i++) {
+ CPDF_Object* value = m_Objects.GetAt(i);
+ pCopy->m_Objects.Add(value->Clone(bDirect));
+ }
+ return pCopy;
+}
+
+CFX_FloatRect CPDF_Array::GetRect() {
+ CFX_FloatRect rect;
+ if (!IsArray() || m_Objects.GetSize() != 4)
+ return rect;
+
+ rect.left = GetNumberAt(0);
+ rect.bottom = GetNumberAt(1);
+ rect.right = GetNumberAt(2);
+ rect.top = GetNumberAt(3);
+ return rect;
+}
+
+CFX_Matrix CPDF_Array::GetMatrix() {
+ CFX_Matrix matrix;
+ if (!IsArray() || m_Objects.GetSize() != 6)
+ return matrix;
+
+ matrix.Set(GetNumberAt(0), GetNumberAt(1), GetNumberAt(2), GetNumberAt(3),
+ GetNumberAt(4), GetNumberAt(5));
+ return matrix;
+}
+
+CPDF_Object* CPDF_Array::GetElement(FX_DWORD i) const {
+ if (i >= (FX_DWORD)m_Objects.GetSize())
+ return nullptr;
+ return m_Objects.GetAt(i);
+}
+
+CPDF_Object* CPDF_Array::GetElementValue(FX_DWORD i) const {
+ if (i >= (FX_DWORD)m_Objects.GetSize())
+ return nullptr;
+ return m_Objects.GetAt(i)->GetDirect();
+}
+
+CFX_ByteString CPDF_Array::GetStringAt(FX_DWORD i) const {
+ if (i >= (FX_DWORD)m_Objects.GetSize())
+ return CFX_ByteString();
+ return m_Objects.GetAt(i)->GetString();
+}
+
+CFX_ByteStringC CPDF_Array::GetConstStringAt(FX_DWORD i) const {
+ if (i >= (FX_DWORD)m_Objects.GetSize())
+ return CFX_ByteStringC();
+ return m_Objects.GetAt(i)->GetConstString();
+}
+
+int CPDF_Array::GetIntegerAt(FX_DWORD i) const {
+ if (i >= (FX_DWORD)m_Objects.GetSize())
+ return 0;
+ return m_Objects.GetAt(i)->GetInteger();
+}
+
+FX_FLOAT CPDF_Array::GetNumberAt(FX_DWORD i) const {
+ if (i >= (FX_DWORD)m_Objects.GetSize())
+ return 0;
+ return m_Objects.GetAt(i)->GetNumber();
+}
+
+CPDF_Dictionary* CPDF_Array::GetDictAt(FX_DWORD i) const {
+ CPDF_Object* p = GetElementValue(i);
+ if (!p)
+ return NULL;
+ if (CPDF_Dictionary* pDict = p->AsDictionary())
+ return pDict;
+ if (CPDF_Stream* pStream = p->AsStream())
+ return pStream->GetDict();
+ return NULL;
+}
+
+CPDF_Stream* CPDF_Array::GetStreamAt(FX_DWORD i) const {
+ return ToStream(GetElementValue(i));
+}
+
+CPDF_Array* CPDF_Array::GetArrayAt(FX_DWORD i) const {
+ return ToArray(GetElementValue(i));
+}
+
+void CPDF_Array::RemoveAt(FX_DWORD i, int nCount) {
+ if (i >= (FX_DWORD)m_Objects.GetSize())
+ return;
+
+ if (nCount <= 0 || nCount > m_Objects.GetSize() - i)
+ return;
+
+ for (int j = 0; j < nCount; ++j) {
+ if (CPDF_Object* p = m_Objects.GetAt(i + j))
+ p->Release();
+ }
+ m_Objects.RemoveAt(i, nCount);
+}
+
+void CPDF_Array::SetAt(FX_DWORD i,
+ CPDF_Object* pObj,
+ CPDF_IndirectObjectHolder* pObjs) {
+ ASSERT(IsArray());
+ ASSERT(i < (FX_DWORD)m_Objects.GetSize());
+ if (i >= (FX_DWORD)m_Objects.GetSize())
+ return;
+ if (CPDF_Object* pOld = m_Objects.GetAt(i))
+ pOld->Release();
+ if (pObj->GetObjNum()) {
+ ASSERT(pObjs);
+ pObj = new CPDF_Reference(pObjs, pObj->GetObjNum());
+ }
+ m_Objects.SetAt(i, pObj);
+}
+
+void CPDF_Array::InsertAt(FX_DWORD index,
+ CPDF_Object* pObj,
+ CPDF_IndirectObjectHolder* pObjs) {
+ if (pObj->GetObjNum()) {
+ ASSERT(pObjs);
+ pObj = new CPDF_Reference(pObjs, pObj->GetObjNum());
+ }
+ m_Objects.InsertAt(index, pObj);
+}
+
+void CPDF_Array::Add(CPDF_Object* pObj, CPDF_IndirectObjectHolder* pObjs) {
+ if (pObj->GetObjNum()) {
+ ASSERT(pObjs);
+ pObj = new CPDF_Reference(pObjs, pObj->GetObjNum());
+ }
+ m_Objects.Add(pObj);
+}
+
+void CPDF_Array::AddName(const CFX_ByteString& str) {
+ ASSERT(IsArray());
+ Add(new CPDF_Name(str));
+}
+
+void CPDF_Array::AddString(const CFX_ByteString& str) {
+ ASSERT(IsArray());
+ Add(new CPDF_String(str, FALSE));
+}
+
+void CPDF_Array::AddInteger(int i) {
+ ASSERT(IsArray());
+ Add(new CPDF_Number(i));
+}
+
+void CPDF_Array::AddNumber(FX_FLOAT f) {
+ ASSERT(IsArray());
+ CPDF_Number* pNumber = new CPDF_Number(f);
+ Add(pNumber);
+}
+
+void CPDF_Array::AddReference(CPDF_IndirectObjectHolder* pDoc,
+ FX_DWORD objnum) {
+ ASSERT(IsArray());
+ Add(new CPDF_Reference(pDoc, objnum));
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_boolean.cpp b/core/fpdfapi/fpdf_parser/cpdf_boolean.cpp
new file mode 100644
index 0000000000..75f2203954
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_boolean.cpp
@@ -0,0 +1,45 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/include/fpdfapi/cpdf_boolean.h"
+
+CPDF_Boolean::CPDF_Boolean() : m_bValue(false) {}
+
+CPDF_Boolean::CPDF_Boolean(FX_BOOL value) : m_bValue(value) {}
+
+CPDF_Boolean::~CPDF_Boolean() {}
+
+CPDF_Object::Type CPDF_Boolean::GetType() const {
+ return BOOLEAN;
+}
+
+CPDF_Object* CPDF_Boolean::Clone(FX_BOOL bDirect) const {
+ return new CPDF_Boolean(m_bValue);
+}
+
+CFX_ByteString CPDF_Boolean::GetString() const {
+ return m_bValue ? "true" : "false";
+}
+
+int CPDF_Boolean::GetInteger() const {
+ return m_bValue;
+}
+
+void CPDF_Boolean::SetString(const CFX_ByteString& str) {
+ m_bValue = (str == "true");
+}
+
+bool CPDF_Boolean::IsBoolean() const {
+ return true;
+}
+
+CPDF_Boolean* CPDF_Boolean::AsBoolean() {
+ return this;
+}
+
+const CPDF_Boolean* CPDF_Boolean::AsBoolean() const {
+ return this;
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_data_avail.cpp b/core/fpdfapi/fpdf_parser/cpdf_data_avail.cpp
new file mode 100644
index 0000000000..93916cba8b
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_data_avail.cpp
@@ -0,0 +1,1841 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_parser/cpdf_data_avail.h"
+#include "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h"
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_document.h"
+#include "core/include/fpdfapi/cpdf_name.h"
+#include "core/include/fpdfapi/cpdf_number.h"
+#include "core/include/fpdfapi/cpdf_reference.h"
+#include "core/include/fpdfapi/cpdf_stream.h"
+#include "core/include/fxcrt/fx_ext.h"
+#include "core/include/fxcrt/fx_safe_types.h"
+#include "third_party/base/stl_util.h"
+
+IPDF_DataAvail::IPDF_DataAvail(IPDF_DataAvail::FileAvail* pFileAvail,
+ IFX_FileRead* pFileRead)
+ : m_pFileAvail(pFileAvail), m_pFileRead(pFileRead) {}
+
+IPDF_DataAvail::~IPDF_DataAvail() {}
+
+IPDF_DataAvail::FileAvail::~FileAvail() {}
+
+IPDF_DataAvail::DownloadHints::~DownloadHints() {}
+
+// static
+IPDF_DataAvail* IPDF_DataAvail::Create(IPDF_DataAvail::FileAvail* pFileAvail,
+ IFX_FileRead* pFileRead) {
+ return new CPDF_DataAvail(pFileAvail, pFileRead, TRUE);
+}
+
+// static
+int CPDF_DataAvail::s_CurrentDataAvailRecursionDepth = 0;
+
+CPDF_DataAvail::CPDF_DataAvail(IPDF_DataAvail::FileAvail* pFileAvail,
+ IFX_FileRead* pFileRead,
+ FX_BOOL bSupportHintTable)
+ : IPDF_DataAvail(pFileAvail, pFileRead) {
+ m_Pos = 0;
+ m_dwFileLen = 0;
+ if (m_pFileRead) {
+ m_dwFileLen = (FX_DWORD)m_pFileRead->GetSize();
+ }
+ m_dwCurrentOffset = 0;
+ m_dwXRefOffset = 0;
+ m_bufferOffset = 0;
+ m_dwFirstPageNo = 0;
+ m_bufferSize = 0;
+ m_PagesObjNum = 0;
+ m_dwCurrentXRefSteam = 0;
+ m_dwAcroFormObjNum = 0;
+ m_dwInfoObjNum = 0;
+ m_pDocument = 0;
+ m_dwEncryptObjNum = 0;
+ m_dwPrevXRefOffset = 0;
+ m_dwLastXRefOffset = 0;
+ m_bDocAvail = FALSE;
+ m_bMainXRefLoadTried = FALSE;
+ m_bDocAvail = FALSE;
+ m_bLinearized = FALSE;
+ m_bPagesLoad = FALSE;
+ m_bPagesTreeLoad = FALSE;
+ m_bMainXRefLoadedOK = FALSE;
+ m_bAnnotsLoad = FALSE;
+ m_bHaveAcroForm = FALSE;
+ m_bAcroFormLoad = FALSE;
+ m_bPageLoadedOK = FALSE;
+ m_bNeedDownLoadResource = FALSE;
+ m_bLinearizedFormParamLoad = FALSE;
+ m_pLinearized = NULL;
+ m_pRoot = NULL;
+ m_pTrailer = NULL;
+ m_pCurrentParser = NULL;
+ m_pAcroForm = NULL;
+ m_pPageDict = NULL;
+ m_pPageResource = NULL;
+ m_docStatus = PDF_DATAAVAIL_HEADER;
+ m_parser.m_bOwnFileRead = false;
+ m_bTotalLoadPageTree = FALSE;
+ m_bCurPageDictLoadOK = FALSE;
+ m_bLinearedDataOK = FALSE;
+ m_bSupportHintTable = bSupportHintTable;
+}
+CPDF_DataAvail::~CPDF_DataAvail() {
+ if (m_pLinearized)
+ m_pLinearized->Release();
+
+ if (m_pRoot)
+ m_pRoot->Release();
+
+ if (m_pTrailer)
+ m_pTrailer->Release();
+
+ int iSize = m_arrayAcroforms.GetSize();
+ for (int i = 0; i < iSize; ++i)
+ m_arrayAcroforms.GetAt(i)->Release();
+}
+
+void CPDF_DataAvail::SetDocument(CPDF_Document* pDoc) {
+ m_pDocument = pDoc;
+}
+
+FX_DWORD CPDF_DataAvail::GetObjectSize(FX_DWORD objnum, FX_FILESIZE& offset) {
+ CPDF_Parser* pParser = m_pDocument->GetParser();
+ if (!pParser || !pParser->IsValidObjectNumber(objnum))
+ return 0;
+
+ if (pParser->GetObjectType(objnum) == 2)
+ objnum = pParser->GetObjectPositionOrZero(objnum);
+
+ if (pParser->GetObjectType(objnum) != 1 &&
+ pParser->GetObjectType(objnum) != 255) {
+ return 0;
+ }
+
+ offset = pParser->GetObjectPositionOrZero(objnum);
+ if (offset == 0)
+ return 0;
+
+ auto it = pParser->m_SortedOffset.find(offset);
+ if (it == pParser->m_SortedOffset.end() ||
+ ++it == pParser->m_SortedOffset.end()) {
+ return 0;
+ }
+ return *it - offset;
+}
+
+FX_BOOL CPDF_DataAvail::IsObjectsAvail(
+ CFX_ArrayTemplate<CPDF_Object*>& obj_array,
+ FX_BOOL bParsePage,
+ IPDF_DataAvail::DownloadHints* pHints,
+ CFX_ArrayTemplate<CPDF_Object*>& ret_array) {
+ if (!obj_array.GetSize())
+ return TRUE;
+
+ FX_DWORD count = 0;
+ CFX_ArrayTemplate<CPDF_Object*> new_obj_array;
+ int32_t i = 0;
+ for (i = 0; i < obj_array.GetSize(); i++) {
+ CPDF_Object* pObj = obj_array[i];
+ if (!pObj)
+ continue;
+
+ int32_t type = pObj->GetType();
+ switch (type) {
+ case CPDF_Object::ARRAY: {
+ CPDF_Array* pArray = pObj->GetArray();
+ for (FX_DWORD k = 0; k < pArray->GetCount(); ++k)
+ new_obj_array.Add(pArray->GetElement(k));
+ } break;
+ case CPDF_Object::STREAM:
+ pObj = pObj->GetDict();
+ case CPDF_Object::DICTIONARY: {
+ CPDF_Dictionary* pDict = pObj->GetDict();
+ if (pDict && pDict->GetStringBy("Type") == "Page" && !bParsePage)
+ continue;
+
+ for (const auto& it : *pDict) {
+ const CFX_ByteString& key = it.first;
+ CPDF_Object* value = it.second;
+ if (key != "Parent")
+ new_obj_array.Add(value);
+ }
+ } break;
+ case CPDF_Object::REFERENCE: {
+ CPDF_Reference* pRef = pObj->AsReference();
+ FX_DWORD dwNum = pRef->GetRefObjNum();
+
+ FX_FILESIZE offset;
+ FX_DWORD size = GetObjectSize(dwNum, offset);
+ if (size == 0 || offset < 0 || offset >= m_dwFileLen)
+ break;
+
+ if (!IsDataAvail(offset, size, pHints)) {
+ ret_array.Add(pObj);
+ count++;
+ } else if (!pdfium::ContainsKey(m_ObjectSet, dwNum)) {
+ m_ObjectSet.insert(dwNum);
+ CPDF_Object* pReferred =
+ m_pDocument->GetIndirectObject(pRef->GetRefObjNum());
+ if (pReferred)
+ new_obj_array.Add(pReferred);
+ }
+ } break;
+ }
+ }
+
+ if (count > 0) {
+ int32_t iSize = new_obj_array.GetSize();
+ for (i = 0; i < iSize; ++i) {
+ CPDF_Object* pObj = new_obj_array[i];
+ if (CPDF_Reference* pRef = pObj->AsReference()) {
+ FX_DWORD dwNum = pRef->GetRefObjNum();
+ if (!pdfium::ContainsKey(m_ObjectSet, dwNum))
+ ret_array.Add(pObj);
+ } else {
+ ret_array.Add(pObj);
+ }
+ }
+ return FALSE;
+ }
+
+ obj_array.RemoveAll();
+ obj_array.Append(new_obj_array);
+ return IsObjectsAvail(obj_array, FALSE, pHints, ret_array);
+}
+
+IPDF_DataAvail::DocAvailStatus CPDF_DataAvail::IsDocAvail(
+ IPDF_DataAvail::DownloadHints* pHints) {
+ if (!m_dwFileLen && m_pFileRead) {
+ m_dwFileLen = (FX_DWORD)m_pFileRead->GetSize();
+ if (!m_dwFileLen)
+ return DataError;
+ }
+
+ while (!m_bDocAvail) {
+ if (!CheckDocStatus(pHints))
+ return DataNotAvailable;
+ }
+
+ return DataAvailable;
+}
+
+FX_BOOL CPDF_DataAvail::CheckAcroFormSubObject(
+ IPDF_DataAvail::DownloadHints* pHints) {
+ if (!m_objs_array.GetSize()) {
+ m_objs_array.RemoveAll();
+ m_ObjectSet.clear();
+ CFX_ArrayTemplate<CPDF_Object*> obj_array;
+ obj_array.Append(m_arrayAcroforms);
+ FX_BOOL bRet = IsObjectsAvail(obj_array, FALSE, pHints, m_objs_array);
+ if (bRet)
+ m_objs_array.RemoveAll();
+ return bRet;
+ }
+
+ CFX_ArrayTemplate<CPDF_Object*> new_objs_array;
+ FX_BOOL bRet = IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array);
+ if (bRet) {
+ int32_t iSize = m_arrayAcroforms.GetSize();
+ for (int32_t i = 0; i < iSize; ++i) {
+ m_arrayAcroforms.GetAt(i)->Release();
+ }
+ m_arrayAcroforms.RemoveAll();
+ } else {
+ m_objs_array.RemoveAll();
+ m_objs_array.Append(new_objs_array);
+ }
+ return bRet;
+}
+
+FX_BOOL CPDF_DataAvail::CheckAcroForm(IPDF_DataAvail::DownloadHints* pHints) {
+ FX_BOOL bExist = FALSE;
+ m_pAcroForm = GetObject(m_dwAcroFormObjNum, pHints, &bExist);
+ if (!bExist) {
+ m_docStatus = PDF_DATAAVAIL_PAGETREE;
+ return TRUE;
+ }
+
+ if (!m_pAcroForm) {
+ if (m_docStatus == PDF_DATAAVAIL_ERROR) {
+ m_docStatus = PDF_DATAAVAIL_LOADALLFILE;
+ return TRUE;
+ }
+ return FALSE;
+ }
+
+ m_arrayAcroforms.Add(m_pAcroForm);
+ m_docStatus = PDF_DATAAVAIL_PAGETREE;
+ return TRUE;
+}
+
+FX_BOOL CPDF_DataAvail::CheckDocStatus(IPDF_DataAvail::DownloadHints* pHints) {
+ switch (m_docStatus) {
+ case PDF_DATAAVAIL_HEADER:
+ return CheckHeader(pHints);
+ case PDF_DATAAVAIL_FIRSTPAGE:
+ case PDF_DATAAVAIL_FIRSTPAGE_PREPARE:
+ return CheckFirstPage(pHints);
+ case PDF_DATAAVAIL_HINTTABLE:
+ return CheckHintTables(pHints);
+ case PDF_DATAAVAIL_END:
+ return CheckEnd(pHints);
+ case PDF_DATAAVAIL_CROSSREF:
+ return CheckCrossRef(pHints);
+ case PDF_DATAAVAIL_CROSSREF_ITEM:
+ return CheckCrossRefItem(pHints);
+ case PDF_DATAAVAIL_CROSSREF_STREAM:
+ return CheckAllCrossRefStream(pHints);
+ case PDF_DATAAVAIL_TRAILER:
+ return CheckTrailer(pHints);
+ case PDF_DATAAVAIL_TRAILER_APPEND:
+ return CheckTrailerAppend(pHints);
+ case PDF_DATAAVAIL_LOADALLCROSSREF:
+ return LoadAllXref(pHints);
+ case PDF_DATAAVAIL_LOADALLFILE:
+ return LoadAllFile(pHints);
+ case PDF_DATAAVAIL_ROOT:
+ return CheckRoot(pHints);
+ case PDF_DATAAVAIL_INFO:
+ return CheckInfo(pHints);
+ case PDF_DATAAVAIL_ACROFORM:
+ return CheckAcroForm(pHints);
+ case PDF_DATAAVAIL_PAGETREE:
+ if (m_bTotalLoadPageTree)
+ return CheckPages(pHints);
+ return LoadDocPages(pHints);
+ case PDF_DATAAVAIL_PAGE:
+ if (m_bTotalLoadPageTree)
+ return CheckPage(pHints);
+ m_docStatus = PDF_DATAAVAIL_PAGE_LATERLOAD;
+ return TRUE;
+ case PDF_DATAAVAIL_ERROR:
+ return LoadAllFile(pHints);
+ case PDF_DATAAVAIL_PAGE_LATERLOAD:
+ m_docStatus = PDF_DATAAVAIL_PAGE;
+ default:
+ m_bDocAvail = TRUE;
+ return TRUE;
+ }
+}
+
+FX_BOOL CPDF_DataAvail::CheckPageStatus(IPDF_DataAvail::DownloadHints* pHints) {
+ switch (m_docStatus) {
+ case PDF_DATAAVAIL_PAGETREE:
+ return CheckPages(pHints);
+ case PDF_DATAAVAIL_PAGE:
+ return CheckPage(pHints);
+ case PDF_DATAAVAIL_ERROR:
+ return LoadAllFile(pHints);
+ default:
+ m_bPagesTreeLoad = TRUE;
+ m_bPagesLoad = TRUE;
+ return TRUE;
+ }
+}
+
+FX_BOOL CPDF_DataAvail::LoadAllFile(IPDF_DataAvail::DownloadHints* pHints) {
+ if (m_pFileAvail->IsDataAvail(0, (FX_DWORD)m_dwFileLen)) {
+ m_docStatus = PDF_DATAAVAIL_DONE;
+ return TRUE;
+ }
+
+ pHints->AddSegment(0, (FX_DWORD)m_dwFileLen);
+ return FALSE;
+}
+
+FX_BOOL CPDF_DataAvail::LoadAllXref(IPDF_DataAvail::DownloadHints* pHints) {
+ m_parser.m_pSyntax->InitParser(m_pFileRead, (FX_DWORD)m_dwHeaderOffset);
+ m_parser.m_bOwnFileRead = false;
+ if (!m_parser.LoadAllCrossRefV4(m_dwLastXRefOffset) &&
+ !m_parser.LoadAllCrossRefV5(m_dwLastXRefOffset)) {
+ m_docStatus = PDF_DATAAVAIL_LOADALLFILE;
+ return FALSE;
+ }
+
+ m_dwRootObjNum = m_parser.GetRootObjNum();
+ m_dwInfoObjNum = m_parser.GetInfoObjNum();
+ m_pCurrentParser = &m_parser;
+ m_docStatus = PDF_DATAAVAIL_ROOT;
+ return TRUE;
+}
+
+CPDF_Object* CPDF_DataAvail::GetObject(FX_DWORD objnum,
+ IPDF_DataAvail::DownloadHints* pHints,
+ FX_BOOL* pExistInFile) {
+ CPDF_Object* pRet = nullptr;
+ FX_DWORD size = 0;
+ FX_FILESIZE offset = 0;
+ CPDF_Parser* pParser = nullptr;
+
+ if (pExistInFile)
+ *pExistInFile = TRUE;
+
+ if (m_pDocument) {
+ size = GetObjectSize(objnum, offset);
+ pParser = m_pDocument->GetParser();
+ } else {
+ size = (FX_DWORD)m_parser.GetObjectSize(objnum);
+ offset = m_parser.GetObjectOffset(objnum);
+ pParser = &m_parser;
+ }
+
+ if (!IsDataAvail(offset, size, pHints))
+ return nullptr;
+
+ if (pParser)
+ pRet = pParser->ParseIndirectObject(nullptr, objnum);
+
+ if (!pRet && pExistInFile)
+ *pExistInFile = FALSE;
+
+ return pRet;
+}
+
+FX_BOOL CPDF_DataAvail::CheckInfo(IPDF_DataAvail::DownloadHints* pHints) {
+ FX_BOOL bExist = FALSE;
+ CPDF_Object* pInfo = GetObject(m_dwInfoObjNum, pHints, &bExist);
+ if (!bExist) {
+ m_docStatus =
+ (m_bHaveAcroForm ? PDF_DATAAVAIL_ACROFORM : PDF_DATAAVAIL_PAGETREE);
+ return TRUE;
+ }
+
+ if (!pInfo) {
+ if (m_docStatus == PDF_DATAAVAIL_ERROR) {
+ m_docStatus = PDF_DATAAVAIL_LOADALLFILE;
+ return TRUE;
+ }
+
+ if (m_Pos == m_dwFileLen)
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ if (pInfo)
+ pInfo->Release();
+
+ m_docStatus =
+ (m_bHaveAcroForm ? PDF_DATAAVAIL_ACROFORM : PDF_DATAAVAIL_PAGETREE);
+
+ return TRUE;
+}
+
+FX_BOOL CPDF_DataAvail::CheckRoot(IPDF_DataAvail::DownloadHints* pHints) {
+ FX_BOOL bExist = FALSE;
+ m_pRoot = GetObject(m_dwRootObjNum, pHints, &bExist);
+ if (!bExist) {
+ m_docStatus = PDF_DATAAVAIL_LOADALLFILE;
+ return TRUE;
+ }
+
+ if (!m_pRoot) {
+ if (m_docStatus == PDF_DATAAVAIL_ERROR) {
+ m_docStatus = PDF_DATAAVAIL_LOADALLFILE;
+ return TRUE;
+ }
+ return FALSE;
+ }
+
+ CPDF_Dictionary* pDict = m_pRoot->GetDict();
+ if (!pDict) {
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ CPDF_Reference* pRef = ToReference(pDict->GetElement("Pages"));
+ if (!pRef) {
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ m_PagesObjNum = pRef->GetRefObjNum();
+ CPDF_Reference* pAcroFormRef =
+ ToReference(m_pRoot->GetDict()->GetElement("AcroForm"));
+ if (pAcroFormRef) {
+ m_bHaveAcroForm = TRUE;
+ m_dwAcroFormObjNum = pAcroFormRef->GetRefObjNum();
+ }
+
+ if (m_dwInfoObjNum) {
+ m_docStatus = PDF_DATAAVAIL_INFO;
+ } else {
+ m_docStatus =
+ m_bHaveAcroForm ? PDF_DATAAVAIL_ACROFORM : PDF_DATAAVAIL_PAGETREE;
+ }
+ return TRUE;
+}
+
+FX_BOOL CPDF_DataAvail::PreparePageItem() {
+ CPDF_Dictionary* pRoot = m_pDocument->GetRoot();
+ CPDF_Reference* pRef =
+ ToReference(pRoot ? pRoot->GetElement("Pages") : nullptr);
+ if (!pRef) {
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ m_PagesObjNum = pRef->GetRefObjNum();
+ m_pCurrentParser = m_pDocument->GetParser();
+ m_docStatus = PDF_DATAAVAIL_PAGETREE;
+ return TRUE;
+}
+
+bool CPDF_DataAvail::IsFirstCheck(int iPage) {
+ return m_pageMapCheckState.insert(iPage).second;
+}
+
+void CPDF_DataAvail::ResetFirstCheck(int iPage) {
+ m_pageMapCheckState.erase(iPage);
+}
+
+FX_BOOL CPDF_DataAvail::CheckPage(IPDF_DataAvail::DownloadHints* pHints) {
+ FX_DWORD iPageObjs = m_PageObjList.GetSize();
+ CFX_DWordArray UnavailObjList;
+ for (FX_DWORD i = 0; i < iPageObjs; ++i) {
+ FX_DWORD dwPageObjNum = m_PageObjList.GetAt(i);
+ FX_BOOL bExist = FALSE;
+ CPDF_Object* pObj = GetObject(dwPageObjNum, pHints, &bExist);
+ if (!pObj) {
+ if (bExist)
+ UnavailObjList.Add(dwPageObjNum);
+ continue;
+ }
+
+ if (pObj->IsArray()) {
+ CPDF_Array* pArray = pObj->GetArray();
+ if (pArray) {
+ int32_t iSize = pArray->GetCount();
+ for (int32_t j = 0; j < iSize; ++j) {
+ if (CPDF_Reference* pRef = ToReference(pArray->GetElement(j)))
+ UnavailObjList.Add(pRef->GetRefObjNum());
+ }
+ }
+ }
+
+ if (!pObj->IsDictionary()) {
+ pObj->Release();
+ continue;
+ }
+
+ CFX_ByteString type = pObj->GetDict()->GetStringBy("Type");
+ if (type == "Pages") {
+ m_PagesArray.Add(pObj);
+ continue;
+ }
+ pObj->Release();
+ }
+
+ m_PageObjList.RemoveAll();
+ if (UnavailObjList.GetSize()) {
+ m_PageObjList.Append(UnavailObjList);
+ return FALSE;
+ }
+
+ FX_DWORD iPages = m_PagesArray.GetSize();
+ for (FX_DWORD i = 0; i < iPages; i++) {
+ CPDF_Object* pPages = m_PagesArray.GetAt(i);
+ if (!pPages)
+ continue;
+
+ if (!GetPageKids(m_pCurrentParser, pPages)) {
+ pPages->Release();
+ while (++i < iPages) {
+ pPages = m_PagesArray.GetAt(i);
+ pPages->Release();
+ }
+ m_PagesArray.RemoveAll();
+
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+ pPages->Release();
+ }
+
+ m_PagesArray.RemoveAll();
+ if (!m_PageObjList.GetSize())
+ m_docStatus = PDF_DATAAVAIL_DONE;
+ return TRUE;
+}
+
+FX_BOOL CPDF_DataAvail::GetPageKids(CPDF_Parser* pParser, CPDF_Object* pPages) {
+ if (!pParser) {
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ CPDF_Dictionary* pDict = pPages->GetDict();
+ CPDF_Object* pKids = pDict ? pDict->GetElement("Kids") : NULL;
+ if (!pKids)
+ return TRUE;
+
+ switch (pKids->GetType()) {
+ case CPDF_Object::REFERENCE:
+ m_PageObjList.Add(pKids->AsReference()->GetRefObjNum());
+ break;
+ case CPDF_Object::ARRAY: {
+ CPDF_Array* pKidsArray = pKids->AsArray();
+ for (FX_DWORD i = 0; i < pKidsArray->GetCount(); ++i) {
+ if (CPDF_Reference* pRef = ToReference(pKidsArray->GetElement(i)))
+ m_PageObjList.Add(pRef->GetRefObjNum());
+ }
+ } break;
+ default:
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+ return TRUE;
+}
+
+FX_BOOL CPDF_DataAvail::CheckPages(IPDF_DataAvail::DownloadHints* pHints) {
+ FX_BOOL bExist = FALSE;
+ CPDF_Object* pPages = GetObject(m_PagesObjNum, pHints, &bExist);
+ if (!bExist) {
+ m_docStatus = PDF_DATAAVAIL_LOADALLFILE;
+ return TRUE;
+ }
+
+ if (!pPages) {
+ if (m_docStatus == PDF_DATAAVAIL_ERROR) {
+ m_docStatus = PDF_DATAAVAIL_LOADALLFILE;
+ return TRUE;
+ }
+ return FALSE;
+ }
+
+ if (!GetPageKids(m_pCurrentParser, pPages)) {
+ pPages->Release();
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ pPages->Release();
+ m_docStatus = PDF_DATAAVAIL_PAGE;
+ return TRUE;
+}
+
+FX_BOOL CPDF_DataAvail::CheckHeader(IPDF_DataAvail::DownloadHints* pHints) {
+ FX_DWORD req_size = 1024;
+ if ((FX_FILESIZE)req_size > m_dwFileLen)
+ req_size = (FX_DWORD)m_dwFileLen;
+
+ if (m_pFileAvail->IsDataAvail(0, req_size)) {
+ uint8_t buffer[1024];
+ m_pFileRead->ReadBlock(buffer, 0, req_size);
+
+ if (IsLinearizedFile(buffer, req_size)) {
+ m_docStatus = PDF_DATAAVAIL_FIRSTPAGE;
+ } else {
+ if (m_docStatus == PDF_DATAAVAIL_ERROR)
+ return FALSE;
+ m_docStatus = PDF_DATAAVAIL_END;
+ }
+ return TRUE;
+ }
+
+ pHints->AddSegment(0, req_size);
+ return FALSE;
+}
+
+FX_BOOL CPDF_DataAvail::CheckFirstPage(IPDF_DataAvail::DownloadHints* pHints) {
+ CPDF_Dictionary* pDict = m_pLinearized->GetDict();
+ CPDF_Object* pEndOffSet = pDict ? pDict->GetElement("E") : NULL;
+ if (!pEndOffSet) {
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ CPDF_Object* pXRefOffset = pDict ? pDict->GetElement("T") : NULL;
+ if (!pXRefOffset) {
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ CPDF_Object* pFileLen = pDict ? pDict->GetElement("L") : NULL;
+ if (!pFileLen) {
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ FX_BOOL bNeedDownLoad = FALSE;
+ if (pEndOffSet->IsNumber()) {
+ FX_DWORD dwEnd = pEndOffSet->GetInteger();
+ dwEnd += 512;
+ if ((FX_FILESIZE)dwEnd > m_dwFileLen)
+ dwEnd = (FX_DWORD)m_dwFileLen;
+
+ int32_t iStartPos = (int32_t)(m_dwFileLen > 1024 ? 1024 : m_dwFileLen);
+ int32_t iSize = dwEnd > 1024 ? dwEnd - 1024 : 0;
+ if (!m_pFileAvail->IsDataAvail(iStartPos, iSize)) {
+ pHints->AddSegment(iStartPos, iSize);
+ bNeedDownLoad = TRUE;
+ }
+ }
+
+ m_dwLastXRefOffset = 0;
+ FX_FILESIZE dwFileLen = 0;
+ if (pXRefOffset->IsNumber())
+ m_dwLastXRefOffset = pXRefOffset->GetInteger();
+
+ if (pFileLen->IsNumber())
+ dwFileLen = pFileLen->GetInteger();
+
+ if (!m_pFileAvail->IsDataAvail(m_dwLastXRefOffset,
+ (FX_DWORD)(dwFileLen - m_dwLastXRefOffset))) {
+ if (m_docStatus == PDF_DATAAVAIL_FIRSTPAGE) {
+ FX_DWORD dwSize = (FX_DWORD)(dwFileLen - m_dwLastXRefOffset);
+ FX_FILESIZE offset = m_dwLastXRefOffset;
+ if (dwSize < 512 && dwFileLen > 512) {
+ dwSize = 512;
+ offset = dwFileLen - 512;
+ }
+ pHints->AddSegment(offset, dwSize);
+ }
+ } else {
+ m_docStatus = PDF_DATAAVAIL_FIRSTPAGE_PREPARE;
+ }
+
+ if (bNeedDownLoad || m_docStatus != PDF_DATAAVAIL_FIRSTPAGE_PREPARE) {
+ m_docStatus = PDF_DATAAVAIL_FIRSTPAGE_PREPARE;
+ return FALSE;
+ }
+
+ m_docStatus =
+ m_bSupportHintTable ? PDF_DATAAVAIL_HINTTABLE : PDF_DATAAVAIL_DONE;
+ return TRUE;
+}
+
+FX_BOOL CPDF_DataAvail::IsDataAvail(FX_FILESIZE offset,
+ FX_DWORD size,
+ IPDF_DataAvail::DownloadHints* pHints) {
+ if (offset > m_dwFileLen)
+ return TRUE;
+
+ FX_SAFE_DWORD safeSize = pdfium::base::checked_cast<FX_DWORD>(offset);
+ safeSize += size;
+ safeSize += 512;
+ if (!safeSize.IsValid() || safeSize.ValueOrDie() > m_dwFileLen)
+ size = m_dwFileLen - offset;
+ else
+ size += 512;
+
+ if (!m_pFileAvail->IsDataAvail(offset, size)) {
+ pHints->AddSegment(offset, size);
+ return FALSE;
+ }
+ return TRUE;
+}
+
+FX_BOOL CPDF_DataAvail::CheckHintTables(IPDF_DataAvail::DownloadHints* pHints) {
+ CPDF_Dictionary* pDict = m_pLinearized->GetDict();
+ if (!pDict) {
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ if (!pDict->KeyExist("H") || !pDict->KeyExist("O") || !pDict->KeyExist("N")) {
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ int nPageCount = pDict->GetElementValue("N")->GetInteger();
+ if (nPageCount <= 1) {
+ m_docStatus = PDF_DATAAVAIL_DONE;
+ return TRUE;
+ }
+
+ CPDF_Array* pHintStreamRange = pDict->GetArrayBy("H");
+ FX_FILESIZE szHSStart =
+ pHintStreamRange->GetElementValue(0)
+ ? pHintStreamRange->GetElementValue(0)->GetInteger()
+ : 0;
+ FX_FILESIZE szHSLength =
+ pHintStreamRange->GetElementValue(1)
+ ? pHintStreamRange->GetElementValue(1)->GetInteger()
+ : 0;
+ if (szHSStart < 0 || szHSLength <= 0) {
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ if (!IsDataAvail(szHSStart, szHSLength, pHints))
+ return FALSE;
+
+ m_syntaxParser.InitParser(m_pFileRead, m_dwHeaderOffset);
+
+ std::unique_ptr<CPDF_HintTables> pHintTables(
+ new CPDF_HintTables(this, pDict));
+ std::unique_ptr<CPDF_Object, ReleaseDeleter<CPDF_Object>> pHintStream(
+ ParseIndirectObjectAt(szHSStart, 0));
+ CPDF_Stream* pStream = ToStream(pHintStream.get());
+ if (pStream && pHintTables->LoadHintStream(pStream))
+ m_pHintTables = std::move(pHintTables);
+
+ m_docStatus = PDF_DATAAVAIL_DONE;
+ return TRUE;
+}
+
+CPDF_Object* CPDF_DataAvail::ParseIndirectObjectAt(
+ FX_FILESIZE pos,
+ FX_DWORD objnum,
+ CPDF_IndirectObjectHolder* pObjList) {
+ FX_FILESIZE SavedPos = m_syntaxParser.SavePos();
+ m_syntaxParser.RestorePos(pos);
+
+ bool bIsNumber;
+ CFX_ByteString word = m_syntaxParser.GetNextWord(&bIsNumber);
+ if (!bIsNumber)
+ return nullptr;
+
+ FX_DWORD parser_objnum = FXSYS_atoui(word);
+ if (objnum && parser_objnum != objnum)
+ return nullptr;
+
+ word = m_syntaxParser.GetNextWord(&bIsNumber);
+ if (!bIsNumber)
+ return nullptr;
+
+ FX_DWORD gennum = FXSYS_atoui(word);
+ if (m_syntaxParser.GetKeyword() != "obj") {
+ m_syntaxParser.RestorePos(SavedPos);
+ return nullptr;
+ }
+
+ CPDF_Object* pObj =
+ m_syntaxParser.GetObject(pObjList, parser_objnum, gennum, true);
+ m_syntaxParser.RestorePos(SavedPos);
+ return pObj;
+}
+
+IPDF_DataAvail::DocLinearizationStatus CPDF_DataAvail::IsLinearizedPDF() {
+ FX_DWORD req_size = 1024;
+ if (!m_pFileAvail->IsDataAvail(0, req_size))
+ return LinearizationUnknown;
+
+ if (!m_pFileRead)
+ return NotLinearized;
+
+ FX_FILESIZE dwSize = m_pFileRead->GetSize();
+ if (dwSize < (FX_FILESIZE)req_size)
+ return LinearizationUnknown;
+
+ uint8_t buffer[1024];
+ m_pFileRead->ReadBlock(buffer, 0, req_size);
+ if (IsLinearizedFile(buffer, req_size))
+ return Linearized;
+
+ return NotLinearized;
+}
+FX_BOOL CPDF_DataAvail::IsLinearizedFile(uint8_t* pData, FX_DWORD dwLen) {
+ ScopedFileStream file(FX_CreateMemoryStream(pData, (size_t)dwLen, FALSE));
+
+ int32_t offset = GetHeaderOffset(file.get());
+ if (offset == -1) {
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ m_dwHeaderOffset = offset;
+ m_syntaxParser.InitParser(file.get(), offset);
+ m_syntaxParser.RestorePos(m_syntaxParser.m_HeaderOffset + 9);
+
+ bool bNumber;
+ CFX_ByteString wordObjNum = m_syntaxParser.GetNextWord(&bNumber);
+ if (!bNumber)
+ return FALSE;
+
+ FX_DWORD objnum = FXSYS_atoui(wordObjNum);
+ if (m_pLinearized) {
+ m_pLinearized->Release();
+ m_pLinearized = nullptr;
+ }
+
+ m_pLinearized =
+ ParseIndirectObjectAt(m_syntaxParser.m_HeaderOffset + 9, objnum);
+ if (!m_pLinearized)
+ return FALSE;
+
+ CPDF_Dictionary* pDict = m_pLinearized->GetDict();
+ if (pDict && pDict->GetElement("Linearized")) {
+ CPDF_Object* pLen = pDict->GetElement("L");
+ if (!pLen)
+ return FALSE;
+
+ if ((FX_FILESIZE)pLen->GetInteger() != m_pFileRead->GetSize())
+ return FALSE;
+
+ m_bLinearized = TRUE;
+
+ if (CPDF_Number* pNo = ToNumber(pDict->GetElement("P")))
+ m_dwFirstPageNo = pNo->GetInteger();
+
+ return TRUE;
+ }
+ return FALSE;
+}
+
+FX_BOOL CPDF_DataAvail::CheckEnd(IPDF_DataAvail::DownloadHints* pHints) {
+ FX_DWORD req_pos = (FX_DWORD)(m_dwFileLen > 1024 ? m_dwFileLen - 1024 : 0);
+ FX_DWORD dwSize = (FX_DWORD)(m_dwFileLen - req_pos);
+
+ if (m_pFileAvail->IsDataAvail(req_pos, dwSize)) {
+ uint8_t buffer[1024];
+ m_pFileRead->ReadBlock(buffer, req_pos, dwSize);
+
+ ScopedFileStream file(FX_CreateMemoryStream(buffer, (size_t)dwSize, FALSE));
+ m_syntaxParser.InitParser(file.get(), 0);
+ m_syntaxParser.RestorePos(dwSize - 1);
+
+ if (m_syntaxParser.SearchWord("startxref", TRUE, FALSE, dwSize)) {
+ m_syntaxParser.GetNextWord(nullptr);
+
+ bool bNumber;
+ CFX_ByteString xrefpos_str = m_syntaxParser.GetNextWord(&bNumber);
+ if (!bNumber) {
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ m_dwXRefOffset = (FX_FILESIZE)FXSYS_atoi64(xrefpos_str);
+ if (!m_dwXRefOffset || m_dwXRefOffset > m_dwFileLen) {
+ m_docStatus = PDF_DATAAVAIL_LOADALLFILE;
+ return TRUE;
+ }
+
+ m_dwLastXRefOffset = m_dwXRefOffset;
+ SetStartOffset(m_dwXRefOffset);
+ m_docStatus = PDF_DATAAVAIL_CROSSREF;
+ return TRUE;
+ }
+
+ m_docStatus = PDF_DATAAVAIL_LOADALLFILE;
+ return TRUE;
+ }
+
+ pHints->AddSegment(req_pos, dwSize);
+ return FALSE;
+}
+
+int32_t CPDF_DataAvail::CheckCrossRefStream(
+ IPDF_DataAvail::DownloadHints* pHints,
+ FX_FILESIZE& xref_offset) {
+ xref_offset = 0;
+ FX_DWORD req_size =
+ (FX_DWORD)(m_Pos + 512 > m_dwFileLen ? m_dwFileLen - m_Pos : 512);
+
+ if (m_pFileAvail->IsDataAvail(m_Pos, req_size)) {
+ int32_t iSize = (int32_t)(m_Pos + req_size - m_dwCurrentXRefSteam);
+ CFX_BinaryBuf buf(iSize);
+ uint8_t* pBuf = buf.GetBuffer();
+
+ m_pFileRead->ReadBlock(pBuf, m_dwCurrentXRefSteam, iSize);
+
+ ScopedFileStream file(FX_CreateMemoryStream(pBuf, (size_t)iSize, FALSE));
+ m_parser.m_pSyntax->InitParser(file.get(), 0);
+
+ bool bNumber;
+ CFX_ByteString objnum = m_parser.m_pSyntax->GetNextWord(&bNumber);
+ if (!bNumber)
+ return -1;
+
+ FX_DWORD objNum = FXSYS_atoui(objnum);
+ CPDF_Object* pObj = m_parser.ParseIndirectObjectAt(nullptr, 0, objNum);
+ if (!pObj) {
+ m_Pos += m_parser.m_pSyntax->SavePos();
+ return 0;
+ }
+
+ CPDF_Dictionary* pDict = pObj->GetDict();
+ CPDF_Name* pName = ToName(pDict ? pDict->GetElement("Type") : nullptr);
+ if (pName) {
+ if (pName->GetString() == "XRef") {
+ m_Pos += m_parser.m_pSyntax->SavePos();
+ xref_offset = pObj->GetDict()->GetIntegerBy("Prev");
+ pObj->Release();
+ return 1;
+ }
+ }
+ pObj->Release();
+ return -1;
+ }
+ pHints->AddSegment(m_Pos, req_size);
+ return 0;
+}
+
+inline void CPDF_DataAvail::SetStartOffset(FX_FILESIZE dwOffset) {
+ m_Pos = dwOffset;
+}
+
+FX_BOOL CPDF_DataAvail::GetNextToken(CFX_ByteString& token) {
+ uint8_t ch;
+ if (!GetNextChar(ch))
+ return FALSE;
+
+ while (1) {
+ while (PDFCharIsWhitespace(ch)) {
+ if (!GetNextChar(ch))
+ return FALSE;
+ }
+
+ if (ch != '%')
+ break;
+
+ while (1) {
+ if (!GetNextChar(ch))
+ return FALSE;
+ if (PDFCharIsLineEnding(ch))
+ break;
+ }
+ }
+
+ uint8_t buffer[256];
+ FX_DWORD index = 0;
+ if (PDFCharIsDelimiter(ch)) {
+ buffer[index++] = ch;
+ if (ch == '/') {
+ while (1) {
+ if (!GetNextChar(ch))
+ return FALSE;
+
+ if (!PDFCharIsOther(ch) && !PDFCharIsNumeric(ch)) {
+ m_Pos--;
+ CFX_ByteString ret(buffer, index);
+ token = ret;
+ return TRUE;
+ }
+
+ if (index < sizeof(buffer))
+ buffer[index++] = ch;
+ }
+ } else if (ch == '<') {
+ if (!GetNextChar(ch))
+ return FALSE;
+
+ if (ch == '<')
+ buffer[index++] = ch;
+ else
+ m_Pos--;
+ } else if (ch == '>') {
+ if (!GetNextChar(ch))
+ return FALSE;
+
+ if (ch == '>')
+ buffer[index++] = ch;
+ else
+ m_Pos--;
+ }
+
+ CFX_ByteString ret(buffer, index);
+ token = ret;
+ return TRUE;
+ }
+
+ while (1) {
+ if (index < sizeof(buffer))
+ buffer[index++] = ch;
+
+ if (!GetNextChar(ch))
+ return FALSE;
+
+ if (PDFCharIsDelimiter(ch) || PDFCharIsWhitespace(ch)) {
+ m_Pos--;
+ break;
+ }
+ }
+
+ token = CFX_ByteString(buffer, index);
+ return TRUE;
+}
+
+FX_BOOL CPDF_DataAvail::GetNextChar(uint8_t& ch) {
+ FX_FILESIZE pos = m_Pos;
+ if (pos >= m_dwFileLen)
+ return FALSE;
+
+ if (m_bufferOffset >= pos ||
+ (FX_FILESIZE)(m_bufferOffset + m_bufferSize) <= pos) {
+ FX_FILESIZE read_pos = pos;
+ FX_DWORD read_size = 512;
+ if ((FX_FILESIZE)read_size > m_dwFileLen)
+ read_size = (FX_DWORD)m_dwFileLen;
+
+ if ((FX_FILESIZE)(read_pos + read_size) > m_dwFileLen)
+ read_pos = m_dwFileLen - read_size;
+
+ if (!m_pFileRead->ReadBlock(m_bufferData, read_pos, read_size))
+ return FALSE;
+
+ m_bufferOffset = read_pos;
+ m_bufferSize = read_size;
+ }
+ ch = m_bufferData[pos - m_bufferOffset];
+ m_Pos++;
+ return TRUE;
+}
+
+FX_BOOL CPDF_DataAvail::CheckCrossRefItem(
+ IPDF_DataAvail::DownloadHints* pHints) {
+ int32_t iSize = 0;
+ CFX_ByteString token;
+ while (1) {
+ if (!GetNextToken(token)) {
+ iSize = (int32_t)(m_Pos + 512 > m_dwFileLen ? m_dwFileLen - m_Pos : 512);
+ pHints->AddSegment(m_Pos, iSize);
+ return FALSE;
+ }
+
+ if (token == "trailer") {
+ m_dwTrailerOffset = m_Pos;
+ m_docStatus = PDF_DATAAVAIL_TRAILER;
+ return TRUE;
+ }
+ }
+}
+
+FX_BOOL CPDF_DataAvail::CheckAllCrossRefStream(
+ IPDF_DataAvail::DownloadHints* pHints) {
+ FX_FILESIZE xref_offset = 0;
+
+ int32_t nRet = CheckCrossRefStream(pHints, xref_offset);
+ if (nRet == 1) {
+ if (!xref_offset) {
+ m_docStatus = PDF_DATAAVAIL_LOADALLCROSSREF;
+ } else {
+ m_dwCurrentXRefSteam = xref_offset;
+ m_Pos = xref_offset;
+ }
+ return TRUE;
+ }
+
+ if (nRet == -1)
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+}
+
+FX_BOOL CPDF_DataAvail::CheckCrossRef(IPDF_DataAvail::DownloadHints* pHints) {
+ int32_t iSize = 0;
+ CFX_ByteString token;
+ if (!GetNextToken(token)) {
+ iSize = (int32_t)(m_Pos + 512 > m_dwFileLen ? m_dwFileLen - m_Pos : 512);
+ pHints->AddSegment(m_Pos, iSize);
+ return FALSE;
+ }
+
+ if (token == "xref") {
+ while (1) {
+ if (!GetNextToken(token)) {
+ iSize =
+ (int32_t)(m_Pos + 512 > m_dwFileLen ? m_dwFileLen - m_Pos : 512);
+ pHints->AddSegment(m_Pos, iSize);
+ m_docStatus = PDF_DATAAVAIL_CROSSREF_ITEM;
+ return FALSE;
+ }
+
+ if (token == "trailer") {
+ m_dwTrailerOffset = m_Pos;
+ m_docStatus = PDF_DATAAVAIL_TRAILER;
+ return TRUE;
+ }
+ }
+ } else {
+ m_docStatus = PDF_DATAAVAIL_LOADALLFILE;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+FX_BOOL CPDF_DataAvail::CheckTrailerAppend(
+ IPDF_DataAvail::DownloadHints* pHints) {
+ if (m_Pos < m_dwFileLen) {
+ FX_FILESIZE dwAppendPos = m_Pos + m_syntaxParser.SavePos();
+ int32_t iSize = (int32_t)(
+ dwAppendPos + 512 > m_dwFileLen ? m_dwFileLen - dwAppendPos : 512);
+
+ if (!m_pFileAvail->IsDataAvail(dwAppendPos, iSize)) {
+ pHints->AddSegment(dwAppendPos, iSize);
+ return FALSE;
+ }
+ }
+
+ if (m_dwPrevXRefOffset) {
+ SetStartOffset(m_dwPrevXRefOffset);
+ m_docStatus = PDF_DATAAVAIL_CROSSREF;
+ } else {
+ m_docStatus = PDF_DATAAVAIL_LOADALLCROSSREF;
+ }
+ return TRUE;
+}
+
+FX_BOOL CPDF_DataAvail::CheckTrailer(IPDF_DataAvail::DownloadHints* pHints) {
+ int32_t iTrailerSize =
+ (int32_t)(m_Pos + 512 > m_dwFileLen ? m_dwFileLen - m_Pos : 512);
+ if (m_pFileAvail->IsDataAvail(m_Pos, iTrailerSize)) {
+ int32_t iSize = (int32_t)(m_Pos + iTrailerSize - m_dwTrailerOffset);
+ CFX_BinaryBuf buf(iSize);
+ uint8_t* pBuf = buf.GetBuffer();
+ if (!pBuf) {
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ if (!m_pFileRead->ReadBlock(pBuf, m_dwTrailerOffset, iSize))
+ return FALSE;
+
+ ScopedFileStream file(FX_CreateMemoryStream(pBuf, (size_t)iSize, FALSE));
+ m_syntaxParser.InitParser(file.get(), 0);
+
+ std::unique_ptr<CPDF_Object, ReleaseDeleter<CPDF_Object>> pTrailer(
+ m_syntaxParser.GetObject(nullptr, 0, 0, true));
+ if (!pTrailer) {
+ m_Pos += m_syntaxParser.SavePos();
+ pHints->AddSegment(m_Pos, iTrailerSize);
+ return FALSE;
+ }
+
+ if (!pTrailer->IsDictionary())
+ return FALSE;
+
+ CPDF_Dictionary* pTrailerDict = pTrailer->GetDict();
+ CPDF_Object* pEncrypt = pTrailerDict->GetElement("Encrypt");
+ if (ToReference(pEncrypt)) {
+ m_docStatus = PDF_DATAAVAIL_LOADALLFILE;
+ return TRUE;
+ }
+
+ FX_DWORD xrefpos = GetDirectInteger(pTrailerDict, "Prev");
+ if (xrefpos) {
+ m_dwPrevXRefOffset = GetDirectInteger(pTrailerDict, "XRefStm");
+ if (m_dwPrevXRefOffset) {
+ m_docStatus = PDF_DATAAVAIL_LOADALLFILE;
+ } else {
+ m_dwPrevXRefOffset = xrefpos;
+ if (m_dwPrevXRefOffset >= m_dwFileLen) {
+ m_docStatus = PDF_DATAAVAIL_LOADALLFILE;
+ } else {
+ SetStartOffset(m_dwPrevXRefOffset);
+ m_docStatus = PDF_DATAAVAIL_TRAILER_APPEND;
+ }
+ }
+ return TRUE;
+ }
+ m_dwPrevXRefOffset = 0;
+ m_docStatus = PDF_DATAAVAIL_TRAILER_APPEND;
+ return TRUE;
+ }
+ pHints->AddSegment(m_Pos, iTrailerSize);
+ return FALSE;
+}
+
+FX_BOOL CPDF_DataAvail::CheckPage(int32_t iPage,
+ IPDF_DataAvail::DownloadHints* pHints) {
+ while (TRUE) {
+ switch (m_docStatus) {
+ case PDF_DATAAVAIL_PAGETREE:
+ if (!LoadDocPages(pHints))
+ return FALSE;
+ break;
+ case PDF_DATAAVAIL_PAGE:
+ if (!LoadDocPage(iPage, pHints))
+ return FALSE;
+ break;
+ case PDF_DATAAVAIL_ERROR:
+ return LoadAllFile(pHints);
+ default:
+ m_bPagesTreeLoad = TRUE;
+ m_bPagesLoad = TRUE;
+ m_bCurPageDictLoadOK = TRUE;
+ m_docStatus = PDF_DATAAVAIL_PAGE;
+ return TRUE;
+ }
+ }
+}
+
+FX_BOOL CPDF_DataAvail::CheckArrayPageNode(
+ FX_DWORD dwPageNo,
+ CPDF_DataAvail::PageNode* pPageNode,
+ IPDF_DataAvail::DownloadHints* pHints) {
+ FX_BOOL bExist = FALSE;
+ CPDF_Object* pPages = GetObject(dwPageNo, pHints, &bExist);
+ if (!bExist) {
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ if (!pPages) {
+ if (m_docStatus == PDF_DATAAVAIL_ERROR) {
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+ return FALSE;
+ }
+
+ CPDF_Array* pArray = pPages->AsArray();
+ if (!pArray) {
+ pPages->Release();
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ pPageNode->m_type = PDF_PAGENODE_PAGES;
+ for (FX_DWORD i = 0; i < pArray->GetCount(); ++i) {
+ CPDF_Reference* pKid = ToReference(pArray->GetElement(i));
+ if (!pKid)
+ continue;
+
+ PageNode* pNode = new PageNode();
+ pPageNode->m_childNode.Add(pNode);
+ pNode->m_dwPageNo = pKid->GetRefObjNum();
+ }
+ pPages->Release();
+ return TRUE;
+}
+
+FX_BOOL CPDF_DataAvail::CheckUnkownPageNode(
+ FX_DWORD dwPageNo,
+ CPDF_DataAvail::PageNode* pPageNode,
+ IPDF_DataAvail::DownloadHints* pHints) {
+ FX_BOOL bExist = FALSE;
+ CPDF_Object* pPage = GetObject(dwPageNo, pHints, &bExist);
+ if (!bExist) {
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ if (!pPage) {
+ if (m_docStatus == PDF_DATAAVAIL_ERROR)
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ if (pPage->IsArray()) {
+ pPageNode->m_dwPageNo = dwPageNo;
+ pPageNode->m_type = PDF_PAGENODE_ARRAY;
+ pPage->Release();
+ return TRUE;
+ }
+
+ if (!pPage->IsDictionary()) {
+ pPage->Release();
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ pPageNode->m_dwPageNo = dwPageNo;
+ CPDF_Dictionary* pDict = pPage->GetDict();
+ CFX_ByteString type = pDict->GetStringBy("Type");
+ if (type == "Pages") {
+ pPageNode->m_type = PDF_PAGENODE_PAGES;
+ CPDF_Object* pKids = pDict->GetElement("Kids");
+ if (!pKids) {
+ m_docStatus = PDF_DATAAVAIL_PAGE;
+ return TRUE;
+ }
+
+ switch (pKids->GetType()) {
+ case CPDF_Object::REFERENCE: {
+ CPDF_Reference* pKid = pKids->AsReference();
+ PageNode* pNode = new PageNode();
+ pPageNode->m_childNode.Add(pNode);
+ pNode->m_dwPageNo = pKid->GetRefObjNum();
+ } break;
+ case CPDF_Object::ARRAY: {
+ CPDF_Array* pKidsArray = pKids->AsArray();
+ for (FX_DWORD i = 0; i < pKidsArray->GetCount(); ++i) {
+ CPDF_Reference* pKid = ToReference(pKidsArray->GetElement(i));
+ if (!pKid)
+ continue;
+
+ PageNode* pNode = new PageNode();
+ pPageNode->m_childNode.Add(pNode);
+ pNode->m_dwPageNo = pKid->GetRefObjNum();
+ }
+ } break;
+ default:
+ break;
+ }
+ } else if (type == "Page") {
+ pPageNode->m_type = PDF_PAGENODE_PAGE;
+ } else {
+ pPage->Release();
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+ pPage->Release();
+ return TRUE;
+}
+
+FX_BOOL CPDF_DataAvail::CheckPageNode(CPDF_DataAvail::PageNode& pageNodes,
+ int32_t iPage,
+ int32_t& iCount,
+ IPDF_DataAvail::DownloadHints* pHints,
+ int level) {
+ if (level >= kMaxPageRecursionDepth)
+ return FALSE;
+
+ int32_t iSize = pageNodes.m_childNode.GetSize();
+ if (iSize <= 0 || iPage >= iSize) {
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ for (int32_t i = 0; i < iSize; ++i) {
+ PageNode* pNode = pageNodes.m_childNode.GetAt(i);
+ if (!pNode)
+ continue;
+
+ switch (pNode->m_type) {
+ case PDF_PAGENODE_UNKNOWN:
+ if (!CheckUnkownPageNode(pNode->m_dwPageNo, pNode, pHints)) {
+ return FALSE;
+ }
+ --i;
+ break;
+ case PDF_PAGENODE_PAGE:
+ iCount++;
+ if (iPage == iCount && m_pDocument)
+ m_pDocument->m_PageList.SetAt(iPage, pNode->m_dwPageNo);
+ break;
+ case PDF_PAGENODE_PAGES:
+ if (!CheckPageNode(*pNode, iPage, iCount, pHints, level + 1))
+ return FALSE;
+ break;
+ case PDF_PAGENODE_ARRAY:
+ if (!CheckArrayPageNode(pNode->m_dwPageNo, pNode, pHints))
+ return FALSE;
+ --i;
+ break;
+ }
+
+ if (iPage == iCount) {
+ m_docStatus = PDF_DATAAVAIL_DONE;
+ return TRUE;
+ }
+ }
+ return TRUE;
+}
+
+FX_BOOL CPDF_DataAvail::LoadDocPage(int32_t iPage,
+ IPDF_DataAvail::DownloadHints* pHints) {
+ if (m_pDocument->GetPageCount() <= iPage ||
+ m_pDocument->m_PageList.GetAt(iPage)) {
+ m_docStatus = PDF_DATAAVAIL_DONE;
+ return TRUE;
+ }
+
+ if (m_pageNodes.m_type == PDF_PAGENODE_PAGE) {
+ if (iPage == 0) {
+ m_docStatus = PDF_DATAAVAIL_DONE;
+ return TRUE;
+ }
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return TRUE;
+ }
+ int32_t iCount = -1;
+ return CheckPageNode(m_pageNodes, iPage, iCount, pHints, 0);
+}
+
+FX_BOOL CPDF_DataAvail::CheckPageCount(IPDF_DataAvail::DownloadHints* pHints) {
+ FX_BOOL bExist = FALSE;
+ CPDF_Object* pPages = GetObject(m_PagesObjNum, pHints, &bExist);
+ if (!bExist) {
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ if (!pPages)
+ return FALSE;
+
+ CPDF_Dictionary* pPagesDict = pPages->GetDict();
+ if (!pPagesDict) {
+ pPages->Release();
+ m_docStatus = PDF_DATAAVAIL_ERROR;
+ return FALSE;
+ }
+
+ if (!pPagesDict->KeyExist("Kids")) {
+ pPages->Release();
+ return TRUE;
+ }
+
+ int count = pPagesDict->GetIntegerBy("Count");
+ if (count > 0) {
+ pPages->Release();
+ return TRUE;
+ }
+
+ pPages->Release();
+ return FALSE;
+}
+
+FX_BOOL CPDF_DataAvail::LoadDocPages(IPDF_DataAvail::DownloadHints* pHints) {
+ if (!CheckUnkownPageNode(m_PagesObjNum, &m_pageNodes, pHints))
+ return FALSE;
+
+ if (CheckPageCount(pHints)) {
+ m_docStatus = PDF_DATAAVAIL_PAGE;
+ return TRUE;
+ }
+
+ m_bTotalLoadPageTree = TRUE;
+ return FALSE;
+}
+
+FX_BOOL CPDF_DataAvail::LoadPages(IPDF_DataAvail::DownloadHints* pHints) {
+ while (!m_bPagesTreeLoad) {
+ if (!CheckPageStatus(pHints))
+ return FALSE;
+ }
+
+ if (m_bPagesLoad)
+ return TRUE;
+
+ m_pDocument->LoadPages();
+ return FALSE;
+}
+
+IPDF_DataAvail::DocAvailStatus CPDF_DataAvail::CheckLinearizedData(
+ IPDF_DataAvail::DownloadHints* pHints) {
+ if (m_bLinearedDataOK)
+ return DataAvailable;
+
+ if (!m_bMainXRefLoadTried) {
+ FX_SAFE_DWORD data_size = m_dwFileLen;
+ data_size -= m_dwLastXRefOffset;
+ if (!data_size.IsValid())
+ return DataError;
+
+ if (!m_pFileAvail->IsDataAvail(m_dwLastXRefOffset,
+ data_size.ValueOrDie())) {
+ pHints->AddSegment(m_dwLastXRefOffset, data_size.ValueOrDie());
+ return DataNotAvailable;
+ }
+
+ CPDF_Parser::Error eRet =
+ m_pDocument->GetParser()->LoadLinearizedMainXRefTable();
+ m_bMainXRefLoadTried = TRUE;
+ if (eRet != CPDF_Parser::SUCCESS)
+ return DataError;
+
+ if (!PreparePageItem())
+ return DataNotAvailable;
+
+ m_bMainXRefLoadedOK = TRUE;
+ m_bLinearedDataOK = TRUE;
+ }
+
+ return m_bLinearedDataOK ? DataAvailable : DataNotAvailable;
+}
+
+FX_BOOL CPDF_DataAvail::CheckPageAnnots(int32_t iPage,
+ IPDF_DataAvail::DownloadHints* pHints) {
+ if (!m_objs_array.GetSize()) {
+ m_objs_array.RemoveAll();
+ m_ObjectSet.clear();
+
+ CPDF_Dictionary* pPageDict = m_pDocument->GetPage(iPage);
+ if (!pPageDict)
+ return TRUE;
+
+ CPDF_Object* pAnnots = pPageDict->GetElement("Annots");
+ if (!pAnnots)
+ return TRUE;
+
+ CFX_ArrayTemplate<CPDF_Object*> obj_array;
+ obj_array.Add(pAnnots);
+
+ FX_BOOL bRet = IsObjectsAvail(obj_array, FALSE, pHints, m_objs_array);
+ if (bRet)
+ m_objs_array.RemoveAll();
+
+ return bRet;
+ }
+
+ CFX_ArrayTemplate<CPDF_Object*> new_objs_array;
+ FX_BOOL bRet = IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array);
+ m_objs_array.RemoveAll();
+ if (!bRet)
+ m_objs_array.Append(new_objs_array);
+
+ return bRet;
+}
+
+IPDF_DataAvail::DocAvailStatus CPDF_DataAvail::CheckLinearizedFirstPage(
+ int32_t iPage,
+ IPDF_DataAvail::DownloadHints* pHints) {
+ if (!m_bAnnotsLoad) {
+ if (!CheckPageAnnots(iPage, pHints))
+ return DataNotAvailable;
+ m_bAnnotsLoad = TRUE;
+ }
+
+ DocAvailStatus nRet = CheckLinearizedData(pHints);
+ if (nRet == DataAvailable)
+ m_bPageLoadedOK = FALSE;
+ return nRet;
+}
+
+FX_BOOL CPDF_DataAvail::HaveResourceAncestor(CPDF_Dictionary* pDict) {
+ CFX_AutoRestorer<int> restorer(&s_CurrentDataAvailRecursionDepth);
+ if (++s_CurrentDataAvailRecursionDepth > kMaxDataAvailRecursionDepth)
+ return FALSE;
+
+ CPDF_Object* pParent = pDict->GetElement("Parent");
+ if (!pParent)
+ return FALSE;
+
+ CPDF_Dictionary* pParentDict = pParent->GetDict();
+ if (!pParentDict)
+ return FALSE;
+
+ CPDF_Object* pRet = pParentDict->GetElement("Resources");
+ if (pRet) {
+ m_pPageResource = pRet;
+ return TRUE;
+ }
+
+ return HaveResourceAncestor(pParentDict);
+}
+
+IPDF_DataAvail::DocAvailStatus CPDF_DataAvail::IsPageAvail(
+ int32_t iPage,
+ IPDF_DataAvail::DownloadHints* pHints) {
+ if (!m_pDocument)
+ return DataError;
+
+ if (IsFirstCheck(iPage)) {
+ m_bCurPageDictLoadOK = FALSE;
+ m_bPageLoadedOK = FALSE;
+ m_bAnnotsLoad = FALSE;
+ m_bNeedDownLoadResource = FALSE;
+ m_objs_array.RemoveAll();
+ m_ObjectSet.clear();
+ }
+
+ if (pdfium::ContainsKey(m_pagesLoadState, iPage))
+ return DataAvailable;
+
+ if (m_bLinearized) {
+ if ((FX_DWORD)iPage == m_dwFirstPageNo) {
+ DocAvailStatus nRet = CheckLinearizedFirstPage(iPage, pHints);
+ if (nRet == DataAvailable)
+ m_pagesLoadState.insert(iPage);
+ return nRet;
+ }
+
+ DocAvailStatus nResult = CheckLinearizedData(pHints);
+ if (nResult != DataAvailable)
+ return nResult;
+
+ if (m_pHintTables) {
+ nResult = m_pHintTables->CheckPage(iPage, pHints);
+ if (nResult != DataAvailable)
+ return nResult;
+ m_pagesLoadState.insert(iPage);
+ return DataAvailable;
+ }
+
+ if (m_bMainXRefLoadedOK) {
+ if (m_bTotalLoadPageTree) {
+ if (!LoadPages(pHints))
+ return DataNotAvailable;
+ } else {
+ if (!m_bCurPageDictLoadOK && !CheckPage(iPage, pHints))
+ return DataNotAvailable;
+ }
+ } else {
+ if (!LoadAllFile(pHints))
+ return DataNotAvailable;
+ m_pDocument->GetParser()->RebuildCrossRef();
+ ResetFirstCheck(iPage);
+ return DataAvailable;
+ }
+ } else {
+ if (!m_bTotalLoadPageTree && !m_bCurPageDictLoadOK &&
+ !CheckPage(iPage, pHints)) {
+ return DataNotAvailable;
+ }
+ }
+
+ if (m_bHaveAcroForm && !m_bAcroFormLoad) {
+ if (!CheckAcroFormSubObject(pHints))
+ return DataNotAvailable;
+ m_bAcroFormLoad = TRUE;
+ }
+
+ if (!m_bPageLoadedOK) {
+ if (!m_objs_array.GetSize()) {
+ m_objs_array.RemoveAll();
+ m_ObjectSet.clear();
+
+ m_pPageDict = m_pDocument->GetPage(iPage);
+ if (!m_pPageDict) {
+ ResetFirstCheck(iPage);
+ return DataAvailable;
+ }
+
+ CFX_ArrayTemplate<CPDF_Object*> obj_array;
+ obj_array.Add(m_pPageDict);
+ FX_BOOL bRet = IsObjectsAvail(obj_array, TRUE, pHints, m_objs_array);
+ if (!bRet)
+ return DataNotAvailable;
+
+ m_objs_array.RemoveAll();
+ } else {
+ CFX_ArrayTemplate<CPDF_Object*> new_objs_array;
+ FX_BOOL bRet =
+ IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array);
+
+ m_objs_array.RemoveAll();
+ if (!bRet) {
+ m_objs_array.Append(new_objs_array);
+ return DataNotAvailable;
+ }
+ }
+ m_bPageLoadedOK = TRUE;
+ }
+
+ if (!m_bAnnotsLoad) {
+ if (!CheckPageAnnots(iPage, pHints))
+ return DataNotAvailable;
+ m_bAnnotsLoad = TRUE;
+ }
+
+ if (m_pPageDict && !m_bNeedDownLoadResource) {
+ m_pPageResource = m_pPageDict->GetElement("Resources");
+ if (!m_pPageResource)
+ m_bNeedDownLoadResource = HaveResourceAncestor(m_pPageDict);
+ else
+ m_bNeedDownLoadResource = TRUE;
+ }
+
+ if (m_bNeedDownLoadResource) {
+ FX_BOOL bRet = CheckResources(pHints);
+ if (!bRet)
+ return DataNotAvailable;
+ m_bNeedDownLoadResource = FALSE;
+ }
+
+ m_bPageLoadedOK = FALSE;
+ m_bAnnotsLoad = FALSE;
+ m_bCurPageDictLoadOK = FALSE;
+
+ ResetFirstCheck(iPage);
+ m_pagesLoadState.insert(iPage);
+ return DataAvailable;
+}
+
+FX_BOOL CPDF_DataAvail::CheckResources(IPDF_DataAvail::DownloadHints* pHints) {
+ if (!m_objs_array.GetSize()) {
+ m_objs_array.RemoveAll();
+ CFX_ArrayTemplate<CPDF_Object*> obj_array;
+ obj_array.Add(m_pPageResource);
+
+ FX_BOOL bRet = IsObjectsAvail(obj_array, TRUE, pHints, m_objs_array);
+ if (bRet)
+ m_objs_array.RemoveAll();
+ return bRet;
+ }
+
+ CFX_ArrayTemplate<CPDF_Object*> new_objs_array;
+ FX_BOOL bRet = IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array);
+ m_objs_array.RemoveAll();
+ if (!bRet)
+ m_objs_array.Append(new_objs_array);
+ return bRet;
+}
+
+void CPDF_DataAvail::GetLinearizedMainXRefInfo(FX_FILESIZE* pPos,
+ FX_DWORD* pSize) {
+ if (pPos)
+ *pPos = m_dwLastXRefOffset;
+ if (pSize)
+ *pSize = (FX_DWORD)(m_dwFileLen - m_dwLastXRefOffset);
+}
+
+int CPDF_DataAvail::GetPageCount() const {
+ if (m_pLinearized) {
+ CPDF_Dictionary* pDict = m_pLinearized->GetDict();
+ CPDF_Object* pObj = pDict ? pDict->GetElementValue("N") : nullptr;
+ return pObj ? pObj->GetInteger() : 0;
+ }
+ return m_pDocument ? m_pDocument->GetPageCount() : 0;
+}
+
+CPDF_Dictionary* CPDF_DataAvail::GetPage(int index) {
+ if (!m_pDocument || index < 0 || index >= GetPageCount())
+ return nullptr;
+
+ if (m_pLinearized) {
+ CPDF_Dictionary* pDict = m_pLinearized->GetDict();
+ CPDF_Object* pObj = pDict ? pDict->GetElementValue("P") : nullptr;
+
+ int pageNum = pObj ? pObj->GetInteger() : 0;
+ if (m_pHintTables && index != pageNum) {
+ FX_FILESIZE szPageStartPos = 0;
+ FX_FILESIZE szPageLength = 0;
+ FX_DWORD dwObjNum = 0;
+ FX_BOOL bPagePosGot = m_pHintTables->GetPagePos(index, szPageStartPos,
+ szPageLength, dwObjNum);
+ if (!bPagePosGot)
+ return nullptr;
+
+ m_syntaxParser.InitParser(m_pFileRead, (FX_DWORD)szPageStartPos);
+ CPDF_Object* pPageDict = ParseIndirectObjectAt(0, dwObjNum, m_pDocument);
+ if (!pPageDict)
+ return nullptr;
+
+ if (!m_pDocument->InsertIndirectObject(dwObjNum, pPageDict))
+ return nullptr;
+ return pPageDict->GetDict();
+ }
+ }
+ return m_pDocument->GetPage(index);
+}
+
+IPDF_DataAvail::DocFormStatus CPDF_DataAvail::IsFormAvail(
+ IPDF_DataAvail::DownloadHints* pHints) {
+ if (!m_pDocument)
+ return FormAvailable;
+
+ if (!m_bLinearizedFormParamLoad) {
+ CPDF_Dictionary* pRoot = m_pDocument->GetRoot();
+ if (!pRoot)
+ return FormAvailable;
+
+ CPDF_Object* pAcroForm = pRoot->GetElement("AcroForm");
+ if (!pAcroForm)
+ return FormNotExist;
+
+ DocAvailStatus nDocStatus = CheckLinearizedData(pHints);
+ if (nDocStatus == DataError)
+ return FormError;
+ if (nDocStatus == DataNotAvailable)
+ return FormNotAvailable;
+
+ if (!m_objs_array.GetSize())
+ m_objs_array.Add(pAcroForm->GetDict());
+ m_bLinearizedFormParamLoad = TRUE;
+ }
+
+ CFX_ArrayTemplate<CPDF_Object*> new_objs_array;
+ FX_BOOL bRet = IsObjectsAvail(m_objs_array, FALSE, pHints, new_objs_array);
+ m_objs_array.RemoveAll();
+ if (!bRet) {
+ m_objs_array.Append(new_objs_array);
+ return FormNotAvailable;
+ }
+ return FormAvailable;
+}
+
+CPDF_DataAvail::PageNode::PageNode() : m_type(PDF_PAGENODE_UNKNOWN) {}
+
+CPDF_DataAvail::PageNode::~PageNode() {
+ for (int32_t i = 0; i < m_childNode.GetSize(); ++i)
+ delete m_childNode[i];
+ m_childNode.RemoveAll();
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_data_avail.h b/core/fpdfapi/fpdf_parser/cpdf_data_avail.h
new file mode 100644
index 0000000000..2a6995914c
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_data_avail.h
@@ -0,0 +1,217 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_FPDFAPI_FPDF_PARSER_CPDF_DATA_AVAIL_H_
+#define CORE_FPDFAPI_FPDF_PARSER_CPDF_DATA_AVAIL_H_
+
+#include "core/fpdfapi/fpdf_parser/cpdf_hint_tables.h"
+#include "core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h"
+#include "core/include/fpdfapi/cpdf_parser.h"
+#include "core/include/fpdfapi/ipdf_data_avail.h"
+#include "core/include/fxcrt/fx_basic.h"
+
+class CPDF_Dictionary;
+class CPDF_IndirectObjectHolder;
+class CPDF_Parser;
+
+enum PDF_DATAAVAIL_STATUS {
+ PDF_DATAAVAIL_HEADER = 0,
+ PDF_DATAAVAIL_FIRSTPAGE,
+ PDF_DATAAVAIL_FIRSTPAGE_PREPARE,
+ PDF_DATAAVAIL_HINTTABLE,
+ PDF_DATAAVAIL_END,
+ PDF_DATAAVAIL_CROSSREF,
+ PDF_DATAAVAIL_CROSSREF_ITEM,
+ PDF_DATAAVAIL_CROSSREF_STREAM,
+ PDF_DATAAVAIL_TRAILER,
+ PDF_DATAAVAIL_LOADALLCROSSREF,
+ PDF_DATAAVAIL_ROOT,
+ PDF_DATAAVAIL_INFO,
+ PDF_DATAAVAIL_ACROFORM,
+ PDF_DATAAVAIL_ACROFORM_SUBOBJECT,
+ PDF_DATAAVAIL_PAGETREE,
+ PDF_DATAAVAIL_PAGE,
+ PDF_DATAAVAIL_PAGE_LATERLOAD,
+ PDF_DATAAVAIL_RESOURCES,
+ PDF_DATAAVAIL_DONE,
+ PDF_DATAAVAIL_ERROR,
+ PDF_DATAAVAIL_LOADALLFILE,
+ PDF_DATAAVAIL_TRAILER_APPEND
+};
+
+enum PDF_PAGENODE_TYPE {
+ PDF_PAGENODE_UNKNOWN = 0,
+ PDF_PAGENODE_PAGE,
+ PDF_PAGENODE_PAGES,
+ PDF_PAGENODE_ARRAY,
+};
+
+class CPDF_DataAvail final : public IPDF_DataAvail {
+ public:
+ CPDF_DataAvail(FileAvail* pFileAvail,
+ IFX_FileRead* pFileRead,
+ FX_BOOL bSupportHintTable);
+ ~CPDF_DataAvail() override;
+
+ // IPDF_DataAvail:
+ DocAvailStatus IsDocAvail(DownloadHints* pHints) override;
+ void SetDocument(CPDF_Document* pDoc) override;
+ DocAvailStatus IsPageAvail(int iPage, DownloadHints* pHints) override;
+ DocFormStatus IsFormAvail(DownloadHints* pHints) override;
+ DocLinearizationStatus IsLinearizedPDF() override;
+ FX_BOOL IsLinearized() override { return m_bLinearized; }
+ void GetLinearizedMainXRefInfo(FX_FILESIZE* pPos, FX_DWORD* pSize) override;
+
+ int GetPageCount() const;
+ CPDF_Dictionary* GetPage(int index);
+
+ friend class CPDF_HintTables;
+
+ protected:
+ class PageNode {
+ public:
+ PageNode();
+ ~PageNode();
+
+ PDF_PAGENODE_TYPE m_type;
+ FX_DWORD m_dwPageNo;
+ CFX_ArrayTemplate<PageNode*> m_childNode;
+ };
+
+ static const int kMaxDataAvailRecursionDepth = 64;
+ static int s_CurrentDataAvailRecursionDepth;
+ static const int kMaxPageRecursionDepth = 1024;
+
+ FX_DWORD GetObjectSize(FX_DWORD objnum, FX_FILESIZE& offset);
+ FX_BOOL IsObjectsAvail(CFX_ArrayTemplate<CPDF_Object*>& obj_array,
+ FX_BOOL bParsePage,
+ IPDF_DataAvail::DownloadHints* pHints,
+ CFX_ArrayTemplate<CPDF_Object*>& ret_array);
+ FX_BOOL CheckDocStatus(IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL CheckHeader(IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL CheckFirstPage(IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL CheckHintTables(IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL CheckEnd(IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL CheckCrossRef(IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL CheckCrossRefItem(IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL CheckTrailer(IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL CheckRoot(IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL CheckInfo(IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL CheckPages(IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL CheckPage(IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL CheckResources(IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL CheckAnnots(IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL CheckAcroForm(IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL CheckAcroFormSubObject(IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL CheckTrailerAppend(IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL CheckPageStatus(IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL CheckAllCrossRefStream(IPDF_DataAvail::DownloadHints* pHints);
+
+ int32_t CheckCrossRefStream(IPDF_DataAvail::DownloadHints* pHints,
+ FX_FILESIZE& xref_offset);
+ FX_BOOL IsLinearizedFile(uint8_t* pData, FX_DWORD dwLen);
+ void SetStartOffset(FX_FILESIZE dwOffset);
+ FX_BOOL GetNextToken(CFX_ByteString& token);
+ FX_BOOL GetNextChar(uint8_t& ch);
+ CPDF_Object* ParseIndirectObjectAt(
+ FX_FILESIZE pos,
+ FX_DWORD objnum,
+ CPDF_IndirectObjectHolder* pObjList = nullptr);
+ CPDF_Object* GetObject(FX_DWORD objnum,
+ IPDF_DataAvail::DownloadHints* pHints,
+ FX_BOOL* pExistInFile);
+ FX_BOOL GetPageKids(CPDF_Parser* pParser, CPDF_Object* pPages);
+ FX_BOOL PreparePageItem();
+ FX_BOOL LoadPages(IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL LoadAllXref(IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL LoadAllFile(IPDF_DataAvail::DownloadHints* pHints);
+ DocAvailStatus CheckLinearizedData(IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL CheckPageAnnots(int iPage, IPDF_DataAvail::DownloadHints* pHints);
+
+ DocAvailStatus CheckLinearizedFirstPage(
+ int iPage,
+ IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL HaveResourceAncestor(CPDF_Dictionary* pDict);
+ FX_BOOL CheckPage(int32_t iPage, IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL LoadDocPages(IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL LoadDocPage(int32_t iPage, IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL CheckPageNode(PageNode& pageNodes,
+ int32_t iPage,
+ int32_t& iCount,
+ IPDF_DataAvail::DownloadHints* pHints,
+ int level);
+ FX_BOOL CheckUnkownPageNode(FX_DWORD dwPageNo,
+ PageNode* pPageNode,
+ IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL CheckArrayPageNode(FX_DWORD dwPageNo,
+ PageNode* pPageNode,
+ IPDF_DataAvail::DownloadHints* pHints);
+ FX_BOOL CheckPageCount(IPDF_DataAvail::DownloadHints* pHints);
+ bool IsFirstCheck(int iPage);
+ void ResetFirstCheck(int iPage);
+ FX_BOOL IsDataAvail(FX_FILESIZE offset,
+ FX_DWORD size,
+ IPDF_DataAvail::DownloadHints* pHints);
+
+ CPDF_Parser m_parser;
+ CPDF_SyntaxParser m_syntaxParser;
+ CPDF_Object* m_pRoot;
+ FX_DWORD m_dwRootObjNum;
+ FX_DWORD m_dwInfoObjNum;
+ CPDF_Object* m_pLinearized;
+ CPDF_Object* m_pTrailer;
+ FX_BOOL m_bDocAvail;
+ FX_FILESIZE m_dwHeaderOffset;
+ FX_FILESIZE m_dwLastXRefOffset;
+ FX_FILESIZE m_dwXRefOffset;
+ FX_FILESIZE m_dwTrailerOffset;
+ FX_FILESIZE m_dwCurrentOffset;
+ PDF_DATAAVAIL_STATUS m_docStatus;
+ FX_FILESIZE m_dwFileLen;
+ CPDF_Document* m_pDocument;
+ std::set<FX_DWORD> m_ObjectSet;
+ CFX_ArrayTemplate<CPDF_Object*> m_objs_array;
+ FX_FILESIZE m_Pos;
+ FX_FILESIZE m_bufferOffset;
+ FX_DWORD m_bufferSize;
+ CFX_ByteString m_WordBuf;
+ uint8_t m_bufferData[512];
+ CFX_DWordArray m_XRefStreamList;
+ CFX_DWordArray m_PageObjList;
+ FX_DWORD m_PagesObjNum;
+ FX_BOOL m_bLinearized;
+ FX_DWORD m_dwFirstPageNo;
+ FX_BOOL m_bLinearedDataOK;
+ FX_BOOL m_bMainXRefLoadTried;
+ FX_BOOL m_bMainXRefLoadedOK;
+ FX_BOOL m_bPagesTreeLoad;
+ FX_BOOL m_bPagesLoad;
+ CPDF_Parser* m_pCurrentParser;
+ FX_FILESIZE m_dwCurrentXRefSteam;
+ FX_BOOL m_bAnnotsLoad;
+ FX_BOOL m_bHaveAcroForm;
+ FX_DWORD m_dwAcroFormObjNum;
+ FX_BOOL m_bAcroFormLoad;
+ CPDF_Object* m_pAcroForm;
+ CFX_ArrayTemplate<CPDF_Object*> m_arrayAcroforms;
+ CPDF_Dictionary* m_pPageDict;
+ CPDF_Object* m_pPageResource;
+ FX_BOOL m_bNeedDownLoadResource;
+ FX_BOOL m_bPageLoadedOK;
+ FX_BOOL m_bLinearizedFormParamLoad;
+ CFX_ArrayTemplate<CPDF_Object*> m_PagesArray;
+ FX_DWORD m_dwEncryptObjNum;
+ FX_FILESIZE m_dwPrevXRefOffset;
+ FX_BOOL m_bTotalLoadPageTree;
+ FX_BOOL m_bCurPageDictLoadOK;
+ PageNode m_pageNodes;
+ std::set<FX_DWORD> m_pageMapCheckState;
+ std::set<FX_DWORD> m_pagesLoadState;
+ std::unique_ptr<CPDF_HintTables> m_pHintTables;
+ FX_BOOL m_bSupportHintTable;
+};
+
+#endif // CORE_FPDFAPI_FPDF_PARSER_CPDF_DATA_AVAIL_H_
diff --git a/core/fpdfapi/fpdf_parser/cpdf_dictionary.cpp b/core/fpdfapi/fpdf_parser/cpdf_dictionary.cpp
new file mode 100644
index 0000000000..864cd59744
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_dictionary.cpp
@@ -0,0 +1,271 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_boolean.h"
+#include "core/include/fpdfapi/cpdf_name.h"
+#include "core/include/fpdfapi/cpdf_number.h"
+#include "core/include/fpdfapi/cpdf_reference.h"
+#include "core/include/fpdfapi/cpdf_stream.h"
+#include "core/include/fpdfapi/cpdf_string.h"
+#include "third_party/base/stl_util.h"
+
+CPDF_Dictionary::CPDF_Dictionary() {}
+
+CPDF_Dictionary::~CPDF_Dictionary() {
+ for (const auto& it : m_Map)
+ it.second->Release();
+}
+
+CPDF_Object::Type CPDF_Dictionary::GetType() const {
+ return DICTIONARY;
+}
+
+CPDF_Dictionary* CPDF_Dictionary::GetDict() const {
+ // The method should be made non-const if we want to not be const.
+ // See bug #234.
+ return const_cast<CPDF_Dictionary*>(this);
+}
+
+bool CPDF_Dictionary::IsDictionary() const {
+ return true;
+}
+
+CPDF_Dictionary* CPDF_Dictionary::AsDictionary() {
+ return this;
+}
+
+const CPDF_Dictionary* CPDF_Dictionary::AsDictionary() const {
+ return this;
+}
+
+CPDF_Object* CPDF_Dictionary::Clone(FX_BOOL bDirect) const {
+ CPDF_Dictionary* pCopy = new CPDF_Dictionary();
+ for (const auto& it : *this)
+ pCopy->m_Map.insert(std::make_pair(it.first, it.second->Clone(bDirect)));
+ return pCopy;
+}
+
+CPDF_Object* CPDF_Dictionary::GetElement(const CFX_ByteStringC& key) const {
+ auto it = m_Map.find(key);
+ if (it == m_Map.end())
+ return nullptr;
+ return it->second;
+}
+CPDF_Object* CPDF_Dictionary::GetElementValue(
+ const CFX_ByteStringC& key) const {
+ CPDF_Object* p = GetElement(key);
+ return p ? p->GetDirect() : nullptr;
+}
+
+CFX_ByteString CPDF_Dictionary::GetStringBy(const CFX_ByteStringC& key) const {
+ CPDF_Object* p = GetElement(key);
+ return p ? p->GetString() : CFX_ByteString();
+}
+
+CFX_ByteStringC CPDF_Dictionary::GetConstStringBy(
+ const CFX_ByteStringC& key) const {
+ CPDF_Object* p = GetElement(key);
+ return p ? p->GetConstString() : CFX_ByteStringC();
+}
+
+CFX_WideString CPDF_Dictionary::GetUnicodeTextBy(
+ const CFX_ByteStringC& key) const {
+ CPDF_Object* p = GetElement(key);
+ if (CPDF_Reference* pRef = ToReference(p))
+ p = pRef->GetDirect();
+ return p ? p->GetUnicodeText() : CFX_WideString();
+}
+
+CFX_ByteString CPDF_Dictionary::GetStringBy(const CFX_ByteStringC& key,
+ const CFX_ByteStringC& def) const {
+ CPDF_Object* p = GetElement(key);
+ return p ? p->GetString() : CFX_ByteString(def);
+}
+
+CFX_ByteStringC CPDF_Dictionary::GetConstStringBy(
+ const CFX_ByteStringC& key,
+ const CFX_ByteStringC& def) const {
+ CPDF_Object* p = GetElement(key);
+ return p ? p->GetConstString() : CFX_ByteStringC(def);
+}
+
+int CPDF_Dictionary::GetIntegerBy(const CFX_ByteStringC& key) const {
+ CPDF_Object* p = GetElement(key);
+ return p ? p->GetInteger() : 0;
+}
+
+int CPDF_Dictionary::GetIntegerBy(const CFX_ByteStringC& key, int def) const {
+ CPDF_Object* p = GetElement(key);
+ return p ? p->GetInteger() : def;
+}
+
+FX_FLOAT CPDF_Dictionary::GetNumberBy(const CFX_ByteStringC& key) const {
+ CPDF_Object* p = GetElement(key);
+ return p ? p->GetNumber() : 0;
+}
+
+FX_BOOL CPDF_Dictionary::GetBooleanBy(const CFX_ByteStringC& key,
+ FX_BOOL bDefault) const {
+ CPDF_Object* p = GetElement(key);
+ return ToBoolean(p) ? p->GetInteger() : bDefault;
+}
+
+CPDF_Dictionary* CPDF_Dictionary::GetDictBy(const CFX_ByteStringC& key) const {
+ CPDF_Object* p = GetElementValue(key);
+ if (!p)
+ return nullptr;
+ if (CPDF_Dictionary* pDict = p->AsDictionary())
+ return pDict;
+ if (CPDF_Stream* pStream = p->AsStream())
+ return pStream->GetDict();
+ return nullptr;
+}
+
+CPDF_Array* CPDF_Dictionary::GetArrayBy(const CFX_ByteStringC& key) const {
+ return ToArray(GetElementValue(key));
+}
+
+CPDF_Stream* CPDF_Dictionary::GetStreamBy(const CFX_ByteStringC& key) const {
+ return ToStream(GetElementValue(key));
+}
+
+CFX_FloatRect CPDF_Dictionary::GetRectBy(const CFX_ByteStringC& key) const {
+ CFX_FloatRect rect;
+ CPDF_Array* pArray = GetArrayBy(key);
+ if (pArray)
+ rect = pArray->GetRect();
+ return rect;
+}
+
+CFX_Matrix CPDF_Dictionary::GetMatrixBy(const CFX_ByteStringC& key) const {
+ CFX_Matrix matrix;
+ CPDF_Array* pArray = GetArrayBy(key);
+ if (pArray)
+ matrix = pArray->GetMatrix();
+ return matrix;
+}
+
+FX_BOOL CPDF_Dictionary::KeyExist(const CFX_ByteStringC& key) const {
+ return pdfium::ContainsKey(m_Map, key);
+}
+
+bool CPDF_Dictionary::IsSignatureDict() const {
+ CPDF_Object* pType = GetElementValue("Type");
+ if (!pType)
+ pType = GetElementValue("FT");
+ return pType && pType->GetString() == "Sig";
+}
+
+void CPDF_Dictionary::SetAt(const CFX_ByteStringC& key, CPDF_Object* pObj) {
+ ASSERT(IsDictionary());
+ // Avoid 2 constructions of CFX_ByteString.
+ CFX_ByteString key_bytestring = key;
+ auto it = m_Map.find(key_bytestring);
+ if (it == m_Map.end()) {
+ if (pObj)
+ m_Map.insert(std::make_pair(key_bytestring, pObj));
+ return;
+ }
+
+ if (it->second == pObj)
+ return;
+ it->second->Release();
+
+ if (pObj)
+ it->second = pObj;
+ else
+ m_Map.erase(it);
+}
+
+void CPDF_Dictionary::RemoveAt(const CFX_ByteStringC& key) {
+ auto it = m_Map.find(key);
+ if (it == m_Map.end())
+ return;
+
+ it->second->Release();
+ m_Map.erase(it);
+}
+
+void CPDF_Dictionary::ReplaceKey(const CFX_ByteStringC& oldkey,
+ const CFX_ByteStringC& newkey) {
+ auto old_it = m_Map.find(oldkey);
+ if (old_it == m_Map.end())
+ return;
+
+ // Avoid 2 constructions of CFX_ByteString.
+ CFX_ByteString newkey_bytestring = newkey;
+ auto new_it = m_Map.find(newkey_bytestring);
+ if (new_it == old_it)
+ return;
+
+ if (new_it != m_Map.end()) {
+ new_it->second->Release();
+ new_it->second = old_it->second;
+ } else {
+ m_Map.insert(std::make_pair(newkey_bytestring, old_it->second));
+ }
+ m_Map.erase(old_it);
+}
+
+void CPDF_Dictionary::SetAtInteger(const CFX_ByteStringC& key, int i) {
+ SetAt(key, new CPDF_Number(i));
+}
+
+void CPDF_Dictionary::SetAtName(const CFX_ByteStringC& key,
+ const CFX_ByteString& name) {
+ SetAt(key, new CPDF_Name(name));
+}
+
+void CPDF_Dictionary::SetAtString(const CFX_ByteStringC& key,
+ const CFX_ByteString& str) {
+ SetAt(key, new CPDF_String(str, FALSE));
+}
+
+void CPDF_Dictionary::SetAtReference(const CFX_ByteStringC& key,
+ CPDF_IndirectObjectHolder* pDoc,
+ FX_DWORD objnum) {
+ SetAt(key, new CPDF_Reference(pDoc, objnum));
+}
+
+void CPDF_Dictionary::AddReference(const CFX_ByteStringC& key,
+ CPDF_IndirectObjectHolder* pDoc,
+ FX_DWORD objnum) {
+ SetAt(key, new CPDF_Reference(pDoc, objnum));
+}
+
+void CPDF_Dictionary::SetAtNumber(const CFX_ByteStringC& key, FX_FLOAT f) {
+ CPDF_Number* pNumber = new CPDF_Number(f);
+ SetAt(key, pNumber);
+}
+
+void CPDF_Dictionary::SetAtBoolean(const CFX_ByteStringC& key, FX_BOOL bValue) {
+ SetAt(key, new CPDF_Boolean(bValue));
+}
+
+void CPDF_Dictionary::SetAtRect(const CFX_ByteStringC& key,
+ const CFX_FloatRect& rect) {
+ CPDF_Array* pArray = new CPDF_Array;
+ pArray->AddNumber(rect.left);
+ pArray->AddNumber(rect.bottom);
+ pArray->AddNumber(rect.right);
+ pArray->AddNumber(rect.top);
+ SetAt(key, pArray);
+}
+
+void CPDF_Dictionary::SetAtMatrix(const CFX_ByteStringC& key,
+ const CFX_Matrix& matrix) {
+ CPDF_Array* pArray = new CPDF_Array;
+ pArray->AddNumber(matrix.a);
+ pArray->AddNumber(matrix.b);
+ pArray->AddNumber(matrix.c);
+ pArray->AddNumber(matrix.d);
+ pArray->AddNumber(matrix.e);
+ pArray->AddNumber(matrix.f);
+ SetAt(key, pArray);
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_document.cpp b/core/fpdfapi/fpdf_parser/cpdf_document.cpp
new file mode 100644
index 0000000000..c6bdcddfbe
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_document.cpp
@@ -0,0 +1,354 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/include/fpdfapi/cpdf_document.h"
+
+#include <set>
+
+#include "core/fpdfapi/fpdf_render/render_int.h"
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_parser.h"
+#include "core/include/fpdfapi/cpdf_reference.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fxge/fx_font.h"
+#include "third_party/base/stl_util.h"
+
+namespace {
+
+int CountPages(CPDF_Dictionary* pPages,
+ std::set<CPDF_Dictionary*>* visited_pages) {
+ int count = pPages->GetIntegerBy("Count");
+ if (count > 0 && count < FPDF_PAGE_MAX_NUM) {
+ return count;
+ }
+ CPDF_Array* pKidList = pPages->GetArrayBy("Kids");
+ if (!pKidList) {
+ return 0;
+ }
+ count = 0;
+ for (FX_DWORD i = 0; i < pKidList->GetCount(); i++) {
+ CPDF_Dictionary* pKid = pKidList->GetDictAt(i);
+ if (!pKid || pdfium::ContainsKey(*visited_pages, pKid)) {
+ continue;
+ }
+ if (pKid->KeyExist("Kids")) {
+ // Use |visited_pages| to help detect circular references of pages.
+ pdfium::ScopedSetInsertion<CPDF_Dictionary*> local_add(visited_pages,
+ pKid);
+ count += CountPages(pKid, visited_pages);
+ } else {
+ // This page is a leaf node.
+ count++;
+ }
+ }
+ pPages->SetAtInteger("Count", count);
+ return count;
+}
+
+} // namespace
+
+CPDF_Document::CPDF_Document(CPDF_Parser* pParser)
+ : CPDF_IndirectObjectHolder(pParser) {
+ ASSERT(pParser);
+ m_pRootDict = NULL;
+ m_pInfoDict = NULL;
+ m_bLinearized = FALSE;
+ m_dwFirstPageNo = 0;
+ m_dwFirstPageObjNum = 0;
+ m_pDocPage = CPDF_ModuleMgr::Get()->GetPageModule()->CreateDocData(this);
+ m_pDocRender = CPDF_ModuleMgr::Get()->GetRenderModule()->CreateDocData(this);
+}
+CPDF_DocPageData* CPDF_Document::GetValidatePageData() {
+ if (m_pDocPage) {
+ return m_pDocPage;
+ }
+ m_pDocPage = CPDF_ModuleMgr::Get()->GetPageModule()->CreateDocData(this);
+ return m_pDocPage;
+}
+CPDF_DocRenderData* CPDF_Document::GetValidateRenderData() {
+ if (m_pDocRender) {
+ return m_pDocRender;
+ }
+ m_pDocRender = CPDF_ModuleMgr::Get()->GetRenderModule()->CreateDocData(this);
+ return m_pDocRender;
+}
+void CPDF_Document::LoadDoc() {
+ m_LastObjNum = m_pParser->GetLastObjNum();
+ CPDF_Object* pRootObj = GetIndirectObject(m_pParser->GetRootObjNum());
+ if (!pRootObj) {
+ return;
+ }
+ m_pRootDict = pRootObj->GetDict();
+ if (!m_pRootDict) {
+ return;
+ }
+ CPDF_Object* pInfoObj = GetIndirectObject(m_pParser->GetInfoObjNum());
+ if (pInfoObj) {
+ m_pInfoDict = pInfoObj->GetDict();
+ }
+ CPDF_Array* pIDArray = m_pParser->GetIDArray();
+ if (pIDArray) {
+ m_ID1 = pIDArray->GetStringAt(0);
+ m_ID2 = pIDArray->GetStringAt(1);
+ }
+ m_PageList.SetSize(RetrievePageCount());
+}
+void CPDF_Document::LoadAsynDoc(CPDF_Dictionary* pLinearized) {
+ m_bLinearized = TRUE;
+ m_LastObjNum = m_pParser->GetLastObjNum();
+ CPDF_Object* pIndirectObj = GetIndirectObject(m_pParser->GetRootObjNum());
+ m_pRootDict = pIndirectObj ? pIndirectObj->GetDict() : nullptr;
+ if (!m_pRootDict) {
+ return;
+ }
+ pIndirectObj = GetIndirectObject(m_pParser->GetInfoObjNum());
+ m_pInfoDict = pIndirectObj ? pIndirectObj->GetDict() : nullptr;
+ CPDF_Array* pIDArray = m_pParser->GetIDArray();
+ if (pIDArray) {
+ m_ID1 = pIDArray->GetStringAt(0);
+ m_ID2 = pIDArray->GetStringAt(1);
+ }
+ FX_DWORD dwPageCount = 0;
+ CPDF_Object* pCount = pLinearized->GetElement("N");
+ if (ToNumber(pCount))
+ dwPageCount = pCount->GetInteger();
+
+ m_PageList.SetSize(dwPageCount);
+ CPDF_Object* pNo = pLinearized->GetElement("P");
+ if (ToNumber(pNo))
+ m_dwFirstPageNo = pNo->GetInteger();
+
+ CPDF_Object* pObjNum = pLinearized->GetElement("O");
+ if (ToNumber(pObjNum))
+ m_dwFirstPageObjNum = pObjNum->GetInteger();
+}
+void CPDF_Document::LoadPages() {
+ m_PageList.SetSize(RetrievePageCount());
+}
+CPDF_Document::~CPDF_Document() {
+ if (m_pDocPage) {
+ CPDF_ModuleMgr::Get()->GetPageModule()->ReleaseDoc(this);
+ CPDF_ModuleMgr::Get()->GetPageModule()->ClearStockFont(this);
+ }
+ if (m_pDocRender) {
+ CPDF_ModuleMgr::Get()->GetRenderModule()->DestroyDocData(m_pDocRender);
+ }
+}
+#define FX_MAX_PAGE_LEVEL 1024
+CPDF_Dictionary* CPDF_Document::_FindPDFPage(CPDF_Dictionary* pPages,
+ int iPage,
+ int nPagesToGo,
+ int level) {
+ CPDF_Array* pKidList = pPages->GetArrayBy("Kids");
+ if (!pKidList) {
+ if (nPagesToGo == 0) {
+ return pPages;
+ }
+ return NULL;
+ }
+ if (level >= FX_MAX_PAGE_LEVEL) {
+ return NULL;
+ }
+ int nKids = pKidList->GetCount();
+ for (int i = 0; i < nKids; i++) {
+ CPDF_Dictionary* pKid = pKidList->GetDictAt(i);
+ if (!pKid) {
+ nPagesToGo--;
+ continue;
+ }
+ if (pKid == pPages) {
+ continue;
+ }
+ if (!pKid->KeyExist("Kids")) {
+ if (nPagesToGo == 0) {
+ return pKid;
+ }
+ m_PageList.SetAt(iPage - nPagesToGo, pKid->GetObjNum());
+ nPagesToGo--;
+ } else {
+ int nPages = pKid->GetIntegerBy("Count");
+ if (nPagesToGo < nPages) {
+ return _FindPDFPage(pKid, iPage, nPagesToGo, level + 1);
+ }
+ nPagesToGo -= nPages;
+ }
+ }
+ return NULL;
+}
+
+CPDF_Dictionary* CPDF_Document::GetPage(int iPage) {
+ if (iPage < 0 || iPage >= m_PageList.GetSize())
+ return nullptr;
+
+ if (m_bLinearized && (iPage == (int)m_dwFirstPageNo)) {
+ if (CPDF_Dictionary* pDict =
+ ToDictionary(GetIndirectObject(m_dwFirstPageObjNum))) {
+ return pDict;
+ }
+ }
+
+ int objnum = m_PageList.GetAt(iPage);
+ if (objnum) {
+ if (CPDF_Dictionary* pDict = ToDictionary(GetIndirectObject(objnum)))
+ return pDict;
+ }
+
+ CPDF_Dictionary* pRoot = GetRoot();
+ if (!pRoot)
+ return nullptr;
+
+ CPDF_Dictionary* pPages = pRoot->GetDictBy("Pages");
+ if (!pPages)
+ return nullptr;
+
+ CPDF_Dictionary* pPage = _FindPDFPage(pPages, iPage, iPage, 0);
+ if (!pPage)
+ return nullptr;
+
+ m_PageList.SetAt(iPage, pPage->GetObjNum());
+ return pPage;
+}
+
+int CPDF_Document::_FindPageIndex(CPDF_Dictionary* pNode,
+ FX_DWORD& skip_count,
+ FX_DWORD objnum,
+ int& index,
+ int level) {
+ if (pNode->KeyExist("Kids")) {
+ CPDF_Array* pKidList = pNode->GetArrayBy("Kids");
+ if (!pKidList) {
+ return -1;
+ }
+ if (level >= FX_MAX_PAGE_LEVEL) {
+ return -1;
+ }
+ FX_DWORD count = pNode->GetIntegerBy("Count");
+ if (count <= skip_count) {
+ skip_count -= count;
+ index += count;
+ return -1;
+ }
+ if (count && count == pKidList->GetCount()) {
+ for (FX_DWORD i = 0; i < count; i++) {
+ if (CPDF_Reference* pKid = ToReference(pKidList->GetElement(i))) {
+ if (pKid->GetRefObjNum() == objnum) {
+ m_PageList.SetAt(index + i, objnum);
+ return index + i;
+ }
+ }
+ }
+ }
+ for (FX_DWORD i = 0; i < pKidList->GetCount(); i++) {
+ CPDF_Dictionary* pKid = pKidList->GetDictAt(i);
+ if (!pKid) {
+ continue;
+ }
+ if (pKid == pNode) {
+ continue;
+ }
+ int found_index =
+ _FindPageIndex(pKid, skip_count, objnum, index, level + 1);
+ if (found_index >= 0) {
+ return found_index;
+ }
+ }
+ } else {
+ if (objnum == pNode->GetObjNum()) {
+ return index;
+ }
+ if (skip_count) {
+ skip_count--;
+ }
+ index++;
+ }
+ return -1;
+}
+int CPDF_Document::GetPageIndex(FX_DWORD objnum) {
+ FX_DWORD nPages = m_PageList.GetSize();
+ FX_DWORD skip_count = 0;
+ FX_BOOL bSkipped = FALSE;
+ for (FX_DWORD i = 0; i < nPages; i++) {
+ FX_DWORD objnum1 = m_PageList.GetAt(i);
+ if (objnum1 == objnum) {
+ return i;
+ }
+ if (!bSkipped && objnum1 == 0) {
+ skip_count = i;
+ bSkipped = TRUE;
+ }
+ }
+ CPDF_Dictionary* pRoot = GetRoot();
+ if (!pRoot) {
+ return -1;
+ }
+ CPDF_Dictionary* pPages = pRoot->GetDictBy("Pages");
+ if (!pPages) {
+ return -1;
+ }
+ int index = 0;
+ return _FindPageIndex(pPages, skip_count, objnum, index);
+}
+int CPDF_Document::GetPageCount() const {
+ return m_PageList.GetSize();
+}
+
+int CPDF_Document::RetrievePageCount() const {
+ CPDF_Dictionary* pRoot = GetRoot();
+ if (!pRoot) {
+ return 0;
+ }
+ CPDF_Dictionary* pPages = pRoot->GetDictBy("Pages");
+ if (!pPages) {
+ return 0;
+ }
+ if (!pPages->KeyExist("Kids")) {
+ return 1;
+ }
+ std::set<CPDF_Dictionary*> visited_pages;
+ visited_pages.insert(pPages);
+ return CountPages(pPages, &visited_pages);
+}
+
+FX_DWORD CPDF_Document::GetUserPermissions(FX_BOOL bCheckRevision) const {
+ if (!m_pParser) {
+ return (FX_DWORD)-1;
+ }
+ return m_pParser->GetPermissions(bCheckRevision);
+}
+
+FX_BOOL CPDF_Document::IsFormStream(FX_DWORD objnum, FX_BOOL& bForm) const {
+ auto it = m_IndirectObjs.find(objnum);
+ if (it != m_IndirectObjs.end()) {
+ CPDF_Stream* pStream = it->second->AsStream();
+ bForm = pStream && pStream->GetDict()->GetStringBy("Subtype") == "Form";
+ return TRUE;
+ }
+ if (!m_pParser) {
+ bForm = FALSE;
+ return TRUE;
+ }
+ return m_pParser->IsFormStream(objnum, bForm);
+}
+
+void CPDF_Document::ClearPageData() {
+ if (m_pDocPage)
+ CPDF_ModuleMgr::Get()->GetPageModule()->ClearDoc(this);
+}
+
+void CPDF_Document::ClearRenderData() {
+ if (m_pDocRender)
+ CPDF_ModuleMgr::Get()->GetRenderModule()->ClearDocData(m_pDocRender);
+}
+
+void CPDF_Document::ClearRenderFont() {
+ if (!m_pDocRender)
+ return;
+
+ CFX_FontCache* pCache = m_pDocRender->GetFontCache();
+ if (pCache)
+ pCache->FreeCache(FALSE);
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp b/core/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp
new file mode 100644
index 0000000000..012b152498
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_hint_tables.cpp
@@ -0,0 +1,469 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_parser/cpdf_hint_tables.h"
+
+#include "core/fpdfapi/fpdf_parser/cpdf_data_avail.h"
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_stream.h"
+#include "core/include/fxcrt/fx_safe_types.h"
+
+namespace {
+
+bool CanReadFromBitStream(const CFX_BitStream* hStream,
+ const FX_SAFE_DWORD& num_bits) {
+ return num_bits.IsValid() &&
+ hStream->BitsRemaining() >= num_bits.ValueOrDie();
+}
+
+} // namespace
+
+CPDF_HintTables::~CPDF_HintTables() {
+ m_dwDeltaNObjsArray.RemoveAll();
+ m_dwNSharedObjsArray.RemoveAll();
+ m_dwSharedObjNumArray.RemoveAll();
+ m_dwIdentifierArray.RemoveAll();
+}
+
+FX_DWORD CPDF_HintTables::GetItemLength(
+ int index,
+ const std::vector<FX_FILESIZE>& szArray) {
+ if (index < 0 || szArray.size() < 2 ||
+ static_cast<size_t>(index) > szArray.size() - 2 ||
+ szArray[index] > szArray[index + 1]) {
+ return 0;
+ }
+ return szArray[index + 1] - szArray[index];
+}
+
+FX_BOOL CPDF_HintTables::ReadPageHintTable(CFX_BitStream* hStream) {
+ if (!hStream || hStream->IsEOF())
+ return FALSE;
+
+ int nStreamOffset = ReadPrimaryHintStreamOffset();
+ int nStreamLen = ReadPrimaryHintStreamLength();
+ if (nStreamOffset < 0 || nStreamLen < 1)
+ return FALSE;
+
+ const FX_DWORD kHeaderSize = 288;
+ if (hStream->BitsRemaining() < kHeaderSize)
+ return FALSE;
+
+ // Item 1: The least number of objects in a page.
+ FX_DWORD dwObjLeastNum = hStream->GetBits(32);
+
+ // Item 2: The location of the first page's page object.
+ FX_DWORD dwFirstObjLoc = hStream->GetBits(32);
+ if (dwFirstObjLoc > nStreamOffset) {
+ FX_SAFE_DWORD safeLoc = pdfium::base::checked_cast<FX_DWORD>(nStreamLen);
+ safeLoc += dwFirstObjLoc;
+ if (!safeLoc.IsValid())
+ return FALSE;
+ m_szFirstPageObjOffset =
+ pdfium::base::checked_cast<FX_FILESIZE>(safeLoc.ValueOrDie());
+ } else {
+ m_szFirstPageObjOffset =
+ pdfium::base::checked_cast<FX_FILESIZE>(dwFirstObjLoc);
+ }
+
+ // Item 3: The number of bits needed to represent the difference
+ // between the greatest and least number of objects in a page.
+ FX_DWORD dwDeltaObjectsBits = hStream->GetBits(16);
+
+ // Item 4: The least length of a page in bytes.
+ FX_DWORD dwPageLeastLen = hStream->GetBits(32);
+
+ // Item 5: The number of bits needed to represent the difference
+ // between the greatest and least length of a page, in bytes.
+ FX_DWORD dwDeltaPageLenBits = hStream->GetBits(16);
+
+ // Skip Item 6, 7, 8, 9 total 96 bits.
+ hStream->SkipBits(96);
+
+ // Item 10: The number of bits needed to represent the greatest
+ // number of shared object references.
+ FX_DWORD dwSharedObjBits = hStream->GetBits(16);
+
+ // Item 11: The number of bits needed to represent the numerically
+ // greatest shared object identifier used by the pages.
+ FX_DWORD dwSharedIdBits = hStream->GetBits(16);
+
+ // Item 12: The number of bits needed to represent the numerator of
+ // the fractional position for each shared object reference. For each
+ // shared object referenced from a page, there is an indication of
+ // where in the page's content stream the object is first referenced.
+ FX_DWORD dwSharedNumeratorBits = hStream->GetBits(16);
+
+ // Item 13: Skip Item 13 which has 16 bits.
+ hStream->SkipBits(16);
+
+ CPDF_Object* pPageNum = m_pLinearizedDict->GetElementValue("N");
+ int nPages = pPageNum ? pPageNum->GetInteger() : 0;
+ if (nPages < 1)
+ return FALSE;
+
+ FX_SAFE_DWORD required_bits = dwDeltaObjectsBits;
+ required_bits *= pdfium::base::checked_cast<FX_DWORD>(nPages);
+ if (!CanReadFromBitStream(hStream, required_bits))
+ return FALSE;
+
+ for (int i = 0; i < nPages; ++i) {
+ FX_SAFE_DWORD safeDeltaObj = hStream->GetBits(dwDeltaObjectsBits);
+ safeDeltaObj += dwObjLeastNum;
+ if (!safeDeltaObj.IsValid())
+ return FALSE;
+ m_dwDeltaNObjsArray.Add(safeDeltaObj.ValueOrDie());
+ }
+ hStream->ByteAlign();
+
+ required_bits = dwDeltaPageLenBits;
+ required_bits *= pdfium::base::checked_cast<FX_DWORD>(nPages);
+ if (!CanReadFromBitStream(hStream, required_bits))
+ return FALSE;
+
+ CFX_DWordArray dwPageLenArray;
+ for (int i = 0; i < nPages; ++i) {
+ FX_SAFE_DWORD safePageLen = hStream->GetBits(dwDeltaPageLenBits);
+ safePageLen += dwPageLeastLen;
+ if (!safePageLen.IsValid())
+ return FALSE;
+ dwPageLenArray.Add(safePageLen.ValueOrDie());
+ }
+
+ CPDF_Object* pOffsetE = m_pLinearizedDict->GetElementValue("E");
+ int nOffsetE = pOffsetE ? pOffsetE->GetInteger() : -1;
+ if (nOffsetE < 0)
+ return FALSE;
+
+ CPDF_Object* pFirstPageNum = m_pLinearizedDict->GetElementValue("P");
+ int nFirstPageNum = pFirstPageNum ? pFirstPageNum->GetInteger() : 0;
+ for (int i = 0; i < nPages; ++i) {
+ if (i == nFirstPageNum) {
+ m_szPageOffsetArray.push_back(m_szFirstPageObjOffset);
+ } else if (i == nFirstPageNum + 1) {
+ if (i == 1) {
+ m_szPageOffsetArray.push_back(nOffsetE);
+ } else {
+ m_szPageOffsetArray.push_back(m_szPageOffsetArray[i - 2] +
+ dwPageLenArray[i - 2]);
+ }
+ } else {
+ if (i == 0) {
+ m_szPageOffsetArray.push_back(nOffsetE);
+ } else {
+ m_szPageOffsetArray.push_back(m_szPageOffsetArray[i - 1] +
+ dwPageLenArray[i - 1]);
+ }
+ }
+ }
+
+ if (nPages > 0) {
+ m_szPageOffsetArray.push_back(m_szPageOffsetArray[nPages - 1] +
+ dwPageLenArray[nPages - 1]);
+ }
+ hStream->ByteAlign();
+
+ // Number of shared objects.
+ required_bits = dwSharedObjBits;
+ required_bits *= pdfium::base::checked_cast<FX_DWORD>(nPages);
+ if (!CanReadFromBitStream(hStream, required_bits))
+ return FALSE;
+
+ for (int i = 0; i < nPages; i++)
+ m_dwNSharedObjsArray.Add(hStream->GetBits(dwSharedObjBits));
+ hStream->ByteAlign();
+
+ // Array of identifiers, size = nshared_objects.
+ for (int i = 0; i < nPages; i++) {
+ required_bits = dwSharedIdBits;
+ required_bits *= m_dwNSharedObjsArray[i];
+ if (!CanReadFromBitStream(hStream, required_bits))
+ return FALSE;
+
+ for (int j = 0; j < m_dwNSharedObjsArray[i]; j++)
+ m_dwIdentifierArray.Add(hStream->GetBits(dwSharedIdBits));
+ }
+ hStream->ByteAlign();
+
+ for (int i = 0; i < nPages; i++) {
+ FX_SAFE_DWORD safeSize = m_dwNSharedObjsArray[i];
+ safeSize *= dwSharedNumeratorBits;
+ if (!CanReadFromBitStream(hStream, safeSize))
+ return FALSE;
+
+ hStream->SkipBits(safeSize.ValueOrDie());
+ }
+ hStream->ByteAlign();
+
+ FX_SAFE_DWORD safeTotalPageLen = pdfium::base::checked_cast<FX_DWORD>(nPages);
+ safeTotalPageLen *= dwDeltaPageLenBits;
+ if (!CanReadFromBitStream(hStream, safeTotalPageLen))
+ return FALSE;
+
+ hStream->SkipBits(safeTotalPageLen.ValueOrDie());
+ hStream->ByteAlign();
+ return TRUE;
+}
+
+FX_BOOL CPDF_HintTables::ReadSharedObjHintTable(CFX_BitStream* hStream,
+ FX_DWORD offset) {
+ if (!hStream || hStream->IsEOF())
+ return FALSE;
+
+ int nStreamOffset = ReadPrimaryHintStreamOffset();
+ int nStreamLen = ReadPrimaryHintStreamLength();
+ if (nStreamOffset < 0 || nStreamLen < 1)
+ return FALSE;
+
+ FX_SAFE_DWORD bit_offset = offset;
+ bit_offset *= 8;
+ if (!bit_offset.IsValid() || hStream->GetPos() > bit_offset.ValueOrDie())
+ return FALSE;
+ hStream->SkipBits(bit_offset.ValueOrDie() - hStream->GetPos());
+
+ const FX_DWORD kHeaderSize = 192;
+ if (hStream->BitsRemaining() < kHeaderSize)
+ return FALSE;
+
+ // Item 1: The object number of the first object in the shared objects
+ // section.
+ FX_DWORD dwFirstSharedObjNum = hStream->GetBits(32);
+
+ // Item 2: The location of the first object in the shared objects section.
+ FX_DWORD dwFirstSharedObjLoc = hStream->GetBits(32);
+ if (dwFirstSharedObjLoc > nStreamOffset)
+ dwFirstSharedObjLoc += nStreamLen;
+
+ // Item 3: The number of shared object entries for the first page.
+ m_nFirstPageSharedObjs = hStream->GetBits(32);
+
+ // Item 4: The number of shared object entries for the shared objects
+ // section, including the number of shared object entries for the first page.
+ FX_DWORD dwSharedObjTotal = hStream->GetBits(32);
+
+ // Item 5: The number of bits needed to represent the greatest number of
+ // objects in a shared object group. Skipped.
+ hStream->SkipBits(16);
+
+ // Item 6: The least length of a shared object group in bytes.
+ FX_DWORD dwGroupLeastLen = hStream->GetBits(32);
+
+ // Item 7: The number of bits needed to represent the difference between the
+ // greatest and least length of a shared object group, in bytes.
+ FX_DWORD dwDeltaGroupLen = hStream->GetBits(16);
+ CPDF_Object* pFirstPageObj = m_pLinearizedDict->GetElementValue("O");
+ int nFirstPageObjNum = pFirstPageObj ? pFirstPageObj->GetInteger() : -1;
+ if (nFirstPageObjNum < 0)
+ return FALSE;
+
+ FX_DWORD dwPrevObjLen = 0;
+ FX_DWORD dwCurObjLen = 0;
+ FX_SAFE_DWORD required_bits = dwSharedObjTotal;
+ required_bits *= dwDeltaGroupLen;
+ if (!CanReadFromBitStream(hStream, required_bits))
+ return FALSE;
+
+ for (FX_DWORD i = 0; i < dwSharedObjTotal; ++i) {
+ dwPrevObjLen = dwCurObjLen;
+ FX_SAFE_DWORD safeObjLen = hStream->GetBits(dwDeltaGroupLen);
+ safeObjLen += dwGroupLeastLen;
+ if (!safeObjLen.IsValid())
+ return FALSE;
+
+ dwCurObjLen = safeObjLen.ValueOrDie();
+ if (i < m_nFirstPageSharedObjs) {
+ m_dwSharedObjNumArray.Add(nFirstPageObjNum + i);
+ if (i == 0)
+ m_szSharedObjOffsetArray.push_back(m_szFirstPageObjOffset);
+ } else {
+ FX_SAFE_DWORD safeObjNum = dwFirstSharedObjNum;
+ safeObjNum += i - m_nFirstPageSharedObjs;
+ if (!safeObjNum.IsValid())
+ return FALSE;
+
+ m_dwSharedObjNumArray.Add(safeObjNum.ValueOrDie());
+ if (i == m_nFirstPageSharedObjs) {
+ m_szSharedObjOffsetArray.push_back(
+ pdfium::base::checked_cast<int32_t>(dwFirstSharedObjLoc));
+ }
+ }
+
+ if (i != 0 && i != m_nFirstPageSharedObjs) {
+ FX_SAFE_INT32 safeLoc = pdfium::base::checked_cast<int32_t>(dwPrevObjLen);
+ safeLoc += m_szSharedObjOffsetArray[i - 1];
+ if (!safeLoc.IsValid())
+ return FALSE;
+
+ m_szSharedObjOffsetArray.push_back(safeLoc.ValueOrDie());
+ }
+ }
+
+ if (dwSharedObjTotal > 0) {
+ FX_SAFE_INT32 safeLoc = pdfium::base::checked_cast<int32_t>(dwCurObjLen);
+ safeLoc += m_szSharedObjOffsetArray[dwSharedObjTotal - 1];
+ if (!safeLoc.IsValid())
+ return FALSE;
+
+ m_szSharedObjOffsetArray.push_back(safeLoc.ValueOrDie());
+ }
+
+ hStream->ByteAlign();
+ if (hStream->BitsRemaining() < dwSharedObjTotal)
+ return FALSE;
+
+ hStream->SkipBits(dwSharedObjTotal);
+ hStream->ByteAlign();
+ return TRUE;
+}
+
+FX_BOOL CPDF_HintTables::GetPagePos(int index,
+ FX_FILESIZE& szPageStartPos,
+ FX_FILESIZE& szPageLength,
+ FX_DWORD& dwObjNum) {
+ if (!m_pLinearizedDict)
+ return FALSE;
+
+ szPageStartPos = m_szPageOffsetArray[index];
+ szPageLength = GetItemLength(index, m_szPageOffsetArray);
+
+ CPDF_Object* pFirstPageNum = m_pLinearizedDict->GetElementValue("P");
+ int nFirstPageNum = pFirstPageNum ? pFirstPageNum->GetInteger() : 0;
+
+ CPDF_Object* pFirstPageObjNum = m_pLinearizedDict->GetElementValue("O");
+ if (!pFirstPageObjNum)
+ return FALSE;
+
+ int nFirstPageObjNum = pFirstPageObjNum->GetInteger();
+ if (index == nFirstPageNum) {
+ dwObjNum = nFirstPageObjNum;
+ return TRUE;
+ }
+
+ // The object number of remaining pages starts from 1.
+ dwObjNum = 1;
+ for (int i = 0; i < index; ++i) {
+ if (i == nFirstPageNum)
+ continue;
+ dwObjNum += m_dwDeltaNObjsArray[i];
+ }
+ return TRUE;
+}
+
+IPDF_DataAvail::DocAvailStatus CPDF_HintTables::CheckPage(
+ int index,
+ IPDF_DataAvail::DownloadHints* pHints) {
+ if (!m_pLinearizedDict || !pHints)
+ return IPDF_DataAvail::DataError;
+
+ CPDF_Object* pFirstAvailPage = m_pLinearizedDict->GetElementValue("P");
+ int nFirstAvailPage = pFirstAvailPage ? pFirstAvailPage->GetInteger() : 0;
+ if (index == nFirstAvailPage)
+ return IPDF_DataAvail::DataAvailable;
+
+ FX_DWORD dwLength = GetItemLength(index, m_szPageOffsetArray);
+ // If two pages have the same offset, it should be treated as an error.
+ if (!dwLength)
+ return IPDF_DataAvail::DataError;
+
+ if (!m_pDataAvail->IsDataAvail(m_szPageOffsetArray[index], dwLength, pHints))
+ return IPDF_DataAvail::DataNotAvailable;
+
+ // Download data of shared objects in the page.
+ FX_DWORD offset = 0;
+ for (int i = 0; i < index; ++i)
+ offset += m_dwNSharedObjsArray[i];
+
+ CPDF_Object* pFirstPageObj = m_pLinearizedDict->GetElementValue("O");
+ int nFirstPageObjNum = pFirstPageObj ? pFirstPageObj->GetInteger() : -1;
+ if (nFirstPageObjNum < 0)
+ return IPDF_DataAvail::DataError;
+
+ FX_DWORD dwIndex = 0;
+ FX_DWORD dwObjNum = 0;
+ for (int j = 0; j < m_dwNSharedObjsArray[index]; ++j) {
+ dwIndex = m_dwIdentifierArray[offset + j];
+ if (dwIndex >= m_dwSharedObjNumArray.GetSize())
+ return IPDF_DataAvail::DataNotAvailable;
+
+ dwObjNum = m_dwSharedObjNumArray[dwIndex];
+ if (dwObjNum >= nFirstPageObjNum &&
+ dwObjNum < nFirstPageObjNum + m_nFirstPageSharedObjs) {
+ continue;
+ }
+
+ dwLength = GetItemLength(dwIndex, m_szSharedObjOffsetArray);
+ // If two objects have the same offset, it should be treated as an error.
+ if (!dwLength)
+ return IPDF_DataAvail::DataError;
+
+ if (!m_pDataAvail->IsDataAvail(m_szSharedObjOffsetArray[dwIndex], dwLength,
+ pHints)) {
+ return IPDF_DataAvail::DataNotAvailable;
+ }
+ }
+ return IPDF_DataAvail::DataAvailable;
+}
+
+FX_BOOL CPDF_HintTables::LoadHintStream(CPDF_Stream* pHintStream) {
+ if (!pHintStream || !m_pLinearizedDict)
+ return FALSE;
+
+ CPDF_Dictionary* pDict = pHintStream->GetDict();
+ CPDF_Object* pOffset = pDict ? pDict->GetElement("S") : nullptr;
+ if (!pOffset || !pOffset->IsNumber())
+ return FALSE;
+
+ int shared_hint_table_offset = pOffset->GetInteger();
+ CPDF_StreamAcc acc;
+ acc.LoadAllData(pHintStream);
+
+ FX_DWORD size = acc.GetSize();
+ // The header section of page offset hint table is 36 bytes.
+ // The header section of shared object hint table is 24 bytes.
+ // Hint table has at least 60 bytes.
+ const FX_DWORD MIN_STREAM_LEN = 60;
+ if (size < MIN_STREAM_LEN || shared_hint_table_offset <= 0 ||
+ size < shared_hint_table_offset) {
+ return FALSE;
+ }
+
+ CFX_BitStream bs;
+ bs.Init(acc.GetData(), size);
+ return ReadPageHintTable(&bs) &&
+ ReadSharedObjHintTable(&bs, pdfium::base::checked_cast<FX_DWORD>(
+ shared_hint_table_offset));
+}
+
+int CPDF_HintTables::ReadPrimaryHintStreamOffset() const {
+ if (!m_pLinearizedDict)
+ return -1;
+
+ CPDF_Array* pRange = m_pLinearizedDict->GetArrayBy("H");
+ if (!pRange)
+ return -1;
+
+ CPDF_Object* pStreamOffset = pRange->GetElementValue(0);
+ if (!pStreamOffset)
+ return -1;
+
+ return pStreamOffset->GetInteger();
+}
+
+int CPDF_HintTables::ReadPrimaryHintStreamLength() const {
+ if (!m_pLinearizedDict)
+ return -1;
+
+ CPDF_Array* pRange = m_pLinearizedDict->GetArrayBy("H");
+ if (!pRange)
+ return -1;
+
+ CPDF_Object* pStreamLen = pRange->GetElementValue(1);
+ if (!pStreamLen)
+ return -1;
+
+ return pStreamLen->GetInteger();
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_hint_tables.h b/core/fpdfapi/fpdf_parser/cpdf_hint_tables.h
new file mode 100644
index 0000000000..a9a89b48bf
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_hint_tables.h
@@ -0,0 +1,62 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_FPDFAPI_FPDF_PARSER_CPDF_HINT_TABLES_H_
+#define CORE_FPDFAPI_FPDF_PARSER_CPDF_HINT_TABLES_H_
+
+#include <vector>
+
+#include "core/include/fpdfapi/ipdf_data_avail.h"
+#include "core/include/fxcrt/fx_basic.h"
+#include "core/include/fxcrt/fx_stream.h"
+
+class CFX_BitStream;
+class CPDF_DataAvail;
+class CPDF_Dictionary;
+class CPDF_Stream;
+
+class CPDF_HintTables {
+ public:
+ CPDF_HintTables(CPDF_DataAvail* pDataAvail, CPDF_Dictionary* pLinearized)
+ : m_pLinearizedDict(pLinearized),
+ m_pDataAvail(pDataAvail),
+ m_nFirstPageSharedObjs(0),
+ m_szFirstPageObjOffset(0) {}
+ ~CPDF_HintTables();
+
+ FX_BOOL GetPagePos(int index,
+ FX_FILESIZE& szPageStartPos,
+ FX_FILESIZE& szPageLength,
+ FX_DWORD& dwObjNum);
+
+ IPDF_DataAvail::DocAvailStatus CheckPage(
+ int index,
+ IPDF_DataAvail::DownloadHints* pHints);
+
+ FX_BOOL LoadHintStream(CPDF_Stream* pHintStream);
+
+ protected:
+ FX_BOOL ReadPageHintTable(CFX_BitStream* hStream);
+ FX_BOOL ReadSharedObjHintTable(CFX_BitStream* hStream, FX_DWORD offset);
+ FX_DWORD GetItemLength(int index, const std::vector<FX_FILESIZE>& szArray);
+
+ private:
+ int ReadPrimaryHintStreamOffset() const;
+ int ReadPrimaryHintStreamLength() const;
+
+ CPDF_Dictionary* m_pLinearizedDict;
+ CPDF_DataAvail* m_pDataAvail;
+ FX_DWORD m_nFirstPageSharedObjs;
+ FX_FILESIZE m_szFirstPageObjOffset;
+ CFX_DWordArray m_dwDeltaNObjsArray;
+ CFX_DWordArray m_dwNSharedObjsArray;
+ CFX_DWordArray m_dwSharedObjNumArray;
+ CFX_DWordArray m_dwIdentifierArray;
+ std::vector<FX_FILESIZE> m_szPageOffsetArray;
+ std::vector<FX_FILESIZE> m_szSharedObjOffsetArray;
+};
+
+#endif // CORE_FPDFAPI_FPDF_PARSER_CPDF_HINT_TABLES_H_
diff --git a/core/fpdfapi/fpdf_parser/cpdf_indirect_object_holder.cpp b/core/fpdfapi/fpdf_parser/cpdf_indirect_object_holder.cpp
new file mode 100644
index 0000000000..b1606f9857
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_indirect_object_holder.cpp
@@ -0,0 +1,80 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/include/fpdfapi/cpdf_indirect_object_holder.h"
+#include "core/include/fpdfapi/cpdf_object.h"
+#include "core/include/fpdfapi/cpdf_parser.h"
+
+CPDF_IndirectObjectHolder::CPDF_IndirectObjectHolder(CPDF_Parser* pParser)
+ : m_pParser(pParser), m_LastObjNum(0) {
+ if (pParser)
+ m_LastObjNum = m_pParser->GetLastObjNum();
+}
+
+CPDF_IndirectObjectHolder::~CPDF_IndirectObjectHolder() {
+ for (const auto& pair : m_IndirectObjs)
+ pair.second->Destroy();
+}
+
+CPDF_Object* CPDF_IndirectObjectHolder::GetIndirectObject(FX_DWORD objnum) {
+ if (objnum == 0)
+ return nullptr;
+
+ auto it = m_IndirectObjs.find(objnum);
+ if (it != m_IndirectObjs.end())
+ return it->second->GetObjNum() != -1 ? it->second : nullptr;
+
+ if (!m_pParser)
+ return nullptr;
+
+ CPDF_Object* pObj = m_pParser->ParseIndirectObject(this, objnum);
+ if (!pObj)
+ return nullptr;
+
+ pObj->m_ObjNum = objnum;
+ m_LastObjNum = std::max(m_LastObjNum, objnum);
+ if (m_IndirectObjs[objnum])
+ m_IndirectObjs[objnum]->Destroy();
+
+ m_IndirectObjs[objnum] = pObj;
+ return pObj;
+}
+
+FX_DWORD CPDF_IndirectObjectHolder::AddIndirectObject(CPDF_Object* pObj) {
+ if (pObj->m_ObjNum)
+ return pObj->m_ObjNum;
+
+ m_LastObjNum++;
+ m_IndirectObjs[m_LastObjNum] = pObj;
+ pObj->m_ObjNum = m_LastObjNum;
+ return m_LastObjNum;
+}
+
+void CPDF_IndirectObjectHolder::ReleaseIndirectObject(FX_DWORD objnum) {
+ auto it = m_IndirectObjs.find(objnum);
+ if (it == m_IndirectObjs.end() || it->second->GetObjNum() == -1)
+ return;
+ it->second->Destroy();
+ m_IndirectObjs.erase(it);
+}
+
+FX_BOOL CPDF_IndirectObjectHolder::InsertIndirectObject(FX_DWORD objnum,
+ CPDF_Object* pObj) {
+ if (!objnum || !pObj)
+ return FALSE;
+ auto it = m_IndirectObjs.find(objnum);
+ if (it != m_IndirectObjs.end()) {
+ if (pObj->GetGenNum() <= it->second->GetGenNum()) {
+ pObj->Destroy();
+ return FALSE;
+ }
+ it->second->Destroy();
+ }
+ pObj->m_ObjNum = objnum;
+ m_IndirectObjs[objnum] = pObj;
+ m_LastObjNum = std::max(m_LastObjNum, objnum);
+ return TRUE;
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_name.cpp b/core/fpdfapi/fpdf_parser/cpdf_name.cpp
new file mode 100644
index 0000000000..03d523db19
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_name.cpp
@@ -0,0 +1,53 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/include/fpdfapi/cpdf_name.h"
+
+#include "core/include/fpdfapi/fpdf_parser_decode.h"
+
+CPDF_Name::CPDF_Name(const CFX_ByteString& str) : m_Name(str) {}
+
+CPDF_Name::CPDF_Name(const CFX_ByteStringC& str) : m_Name(str) {}
+
+CPDF_Name::CPDF_Name(const FX_CHAR* str) : m_Name(str) {}
+
+CPDF_Name::~CPDF_Name() {}
+
+CPDF_Object::Type CPDF_Name::GetType() const {
+ return NAME;
+}
+
+CPDF_Object* CPDF_Name::Clone(FX_BOOL bDirect) const {
+ return new CPDF_Name(m_Name);
+}
+
+CFX_ByteString CPDF_Name::GetString() const {
+ return m_Name;
+}
+
+CFX_ByteStringC CPDF_Name::GetConstString() const {
+ return CFX_ByteStringC(m_Name);
+}
+
+void CPDF_Name::SetString(const CFX_ByteString& str) {
+ m_Name = str;
+}
+
+bool CPDF_Name::IsName() const {
+ return true;
+}
+
+CPDF_Name* CPDF_Name::AsName() {
+ return this;
+}
+
+const CPDF_Name* CPDF_Name::AsName() const {
+ return this;
+}
+
+CFX_WideString CPDF_Name::GetUnicodeText() const {
+ return PDF_DecodeText(m_Name);
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_null.cpp b/core/fpdfapi/fpdf_parser/cpdf_null.cpp
new file mode 100644
index 0000000000..c18449d08f
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_null.cpp
@@ -0,0 +1,17 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/include/fpdfapi/cpdf_null.h"
+
+CPDF_Null::CPDF_Null() {}
+
+CPDF_Object::Type CPDF_Null::GetType() const {
+ return NULLOBJ;
+}
+
+CPDF_Object* CPDF_Null::Clone(FX_BOOL bDirect) const {
+ return new CPDF_Null;
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_number.cpp b/core/fpdfapi/fpdf_parser/cpdf_number.cpp
new file mode 100644
index 0000000000..ddc7aa11a2
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_number.cpp
@@ -0,0 +1,56 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/include/fpdfapi/cpdf_number.h"
+
+CPDF_Number::CPDF_Number() : m_bInteger(TRUE), m_Integer(0) {}
+
+CPDF_Number::CPDF_Number(int value) : m_bInteger(TRUE), m_Integer(value) {}
+
+CPDF_Number::CPDF_Number(FX_FLOAT value) : m_bInteger(FALSE), m_Float(value) {}
+
+CPDF_Number::CPDF_Number(const CFX_ByteStringC& str) {
+ FX_atonum(str, m_bInteger, &m_Integer);
+}
+
+CPDF_Number::~CPDF_Number() {}
+
+CPDF_Object::Type CPDF_Number::GetType() const {
+ return NUMBER;
+}
+
+CPDF_Object* CPDF_Number::Clone(FX_BOOL bDirect) const {
+ return m_bInteger ? new CPDF_Number(m_Integer) : new CPDF_Number(m_Float);
+}
+
+FX_FLOAT CPDF_Number::GetNumber() const {
+ return m_bInteger ? static_cast<FX_FLOAT>(m_Integer) : m_Float;
+}
+
+int CPDF_Number::GetInteger() const {
+ return m_bInteger ? m_Integer : static_cast<int>(m_Float);
+}
+
+bool CPDF_Number::IsNumber() const {
+ return true;
+}
+
+CPDF_Number* CPDF_Number::AsNumber() {
+ return this;
+}
+
+const CPDF_Number* CPDF_Number::AsNumber() const {
+ return this;
+}
+
+void CPDF_Number::SetString(const CFX_ByteString& str) {
+ FX_atonum(str, m_bInteger, &m_Integer);
+}
+
+CFX_ByteString CPDF_Number::GetString() const {
+ return m_bInteger ? CFX_ByteString::FormatInteger(m_Integer, FXFORMAT_SIGNED)
+ : CFX_ByteString::FormatFloat(m_Float);
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_object.cpp b/core/fpdfapi/fpdf_parser/cpdf_object.cpp
new file mode 100644
index 0000000000..208bca8e6c
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_object.cpp
@@ -0,0 +1,158 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/include/fpdfapi/cpdf_object.h"
+
+#include <algorithm>
+
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_indirect_object_holder.h"
+#include "core/include/fpdfapi/cpdf_parser.h"
+#include "core/include/fpdfapi/fpdf_parser_decode.h"
+#include "core/include/fxcrt/fx_string.h"
+#include "third_party/base/stl_util.h"
+
+CPDF_Object::~CPDF_Object() {}
+
+CPDF_Object* CPDF_Object::GetDirect() const {
+ return const_cast<CPDF_Object*>(this);
+}
+
+void CPDF_Object::Release() {
+ if (m_ObjNum)
+ return;
+
+ Destroy();
+}
+
+CFX_ByteString CPDF_Object::GetString() const {
+ return CFX_ByteString();
+}
+
+CFX_ByteStringC CPDF_Object::GetConstString() const {
+ return CFX_ByteStringC();
+}
+
+CFX_WideString CPDF_Object::GetUnicodeText() const {
+ return CFX_WideString();
+}
+
+FX_FLOAT CPDF_Object::GetNumber() const {
+ return 0;
+}
+
+int CPDF_Object::GetInteger() const {
+ return 0;
+}
+
+CPDF_Dictionary* CPDF_Object::GetDict() const {
+ return nullptr;
+}
+
+CPDF_Array* CPDF_Object::GetArray() const {
+ return nullptr;
+}
+
+void CPDF_Object::SetString(const CFX_ByteString& str) {
+ ASSERT(FALSE);
+}
+
+bool CPDF_Object::IsArray() const {
+ return false;
+}
+
+bool CPDF_Object::IsBoolean() const {
+ return false;
+}
+
+bool CPDF_Object::IsDictionary() const {
+ return false;
+}
+
+bool CPDF_Object::IsName() const {
+ return false;
+}
+
+bool CPDF_Object::IsNumber() const {
+ return false;
+}
+
+bool CPDF_Object::IsReference() const {
+ return false;
+}
+
+bool CPDF_Object::IsStream() const {
+ return false;
+}
+
+bool CPDF_Object::IsString() const {
+ return false;
+}
+
+CPDF_Array* CPDF_Object::AsArray() {
+ return nullptr;
+}
+
+const CPDF_Array* CPDF_Object::AsArray() const {
+ return nullptr;
+}
+
+CPDF_Boolean* CPDF_Object::AsBoolean() {
+ return nullptr;
+}
+
+const CPDF_Boolean* CPDF_Object::AsBoolean() const {
+ return nullptr;
+}
+
+CPDF_Dictionary* CPDF_Object::AsDictionary() {
+ return nullptr;
+}
+
+const CPDF_Dictionary* CPDF_Object::AsDictionary() const {
+ return nullptr;
+}
+
+CPDF_Name* CPDF_Object::AsName() {
+ return nullptr;
+}
+
+const CPDF_Name* CPDF_Object::AsName() const {
+ return nullptr;
+}
+
+CPDF_Number* CPDF_Object::AsNumber() {
+ return nullptr;
+}
+
+const CPDF_Number* CPDF_Object::AsNumber() const {
+ return nullptr;
+}
+
+CPDF_Reference* CPDF_Object::AsReference() {
+ return nullptr;
+}
+
+const CPDF_Reference* CPDF_Object::AsReference() const {
+ return nullptr;
+}
+
+CPDF_Stream* CPDF_Object::AsStream() {
+ return nullptr;
+}
+
+const CPDF_Stream* CPDF_Object::AsStream() const {
+ return nullptr;
+}
+
+CPDF_String* CPDF_Object::AsString() {
+ return nullptr;
+}
+
+const CPDF_String* CPDF_Object::AsString() const {
+ return nullptr;
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp b/core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp
new file mode 100644
index 0000000000..971bdaf20e
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_object_unittest.cpp
@@ -0,0 +1,776 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_boolean.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_name.h"
+#include "core/include/fpdfapi/cpdf_null.h"
+#include "core/include/fpdfapi/cpdf_number.h"
+#include "core/include/fpdfapi/cpdf_reference.h"
+#include "core/include/fpdfapi/cpdf_stream.h"
+#include "core/include/fpdfapi/cpdf_string.h"
+
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "core/include/fpdfapi/cpdf_indirect_object_holder.h"
+#include "core/include/fxcrt/fx_basic.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+using ScopedArray = std::unique_ptr<CPDF_Array, ReleaseDeleter<CPDF_Array>>;
+
+void TestArrayAccessors(const CPDF_Array* arr,
+ size_t index,
+ const char* str_val,
+ const char* const_str_val,
+ int int_val,
+ float float_val,
+ CPDF_Array* arr_val,
+ CPDF_Dictionary* dict_val,
+ CPDF_Stream* stream_val) {
+ EXPECT_STREQ(str_val, arr->GetStringAt(index).c_str());
+ EXPECT_STREQ(const_str_val, arr->GetConstStringAt(index).GetCStr());
+ EXPECT_EQ(int_val, arr->GetIntegerAt(index));
+ EXPECT_EQ(float_val, arr->GetNumberAt(index));
+ EXPECT_EQ(float_val, arr->GetFloatAt(index));
+ EXPECT_EQ(arr_val, arr->GetArrayAt(index));
+ EXPECT_EQ(dict_val, arr->GetDictAt(index));
+ EXPECT_EQ(stream_val, arr->GetStreamAt(index));
+}
+
+} // namespace
+
+class PDFObjectsTest : public testing::Test {
+ public:
+ void SetUp() override {
+ // Initialize different kinds of objects.
+ // Boolean objects.
+ CPDF_Boolean* boolean_false_obj = new CPDF_Boolean(false);
+ CPDF_Boolean* boolean_true_obj = new CPDF_Boolean(true);
+ // Number objects.
+ CPDF_Number* number_int_obj = new CPDF_Number(1245);
+ CPDF_Number* number_float_obj = new CPDF_Number(9.00345f);
+ // String objects.
+ CPDF_String* str_reg_obj = new CPDF_String(L"A simple test");
+ CPDF_String* str_spec_obj = new CPDF_String(L"\t\n");
+ // Name object.
+ CPDF_Name* name_obj = new CPDF_Name("space");
+ // Array object.
+ m_ArrayObj = new CPDF_Array;
+ m_ArrayObj->InsertAt(0, new CPDF_Number(8902));
+ m_ArrayObj->InsertAt(1, new CPDF_Name("address"));
+ // Dictionary object.
+ m_DictObj = new CPDF_Dictionary;
+ m_DictObj->SetAt("bool", new CPDF_Boolean(false));
+ m_DictObj->SetAt("num", new CPDF_Number(0.23f));
+ // Stream object.
+ const char content[] = "abcdefghijklmnopqrstuvwxyz";
+ size_t buf_len = FX_ArraySize(content);
+ uint8_t* buf = reinterpret_cast<uint8_t*>(malloc(buf_len));
+ memcpy(buf, content, buf_len);
+ m_StreamDictObj = new CPDF_Dictionary;
+ m_StreamDictObj->SetAt("key1", new CPDF_String(L" test dict"));
+ m_StreamDictObj->SetAt("key2", new CPDF_Number(-1));
+ CPDF_Stream* stream_obj = new CPDF_Stream(buf, buf_len, m_StreamDictObj);
+ // Null Object.
+ CPDF_Null* null_obj = new CPDF_Null;
+ // All direct objects.
+ CPDF_Object* objs[] = {boolean_false_obj, boolean_true_obj, number_int_obj,
+ number_float_obj, str_reg_obj, str_spec_obj,
+ name_obj, m_ArrayObj, m_DictObj,
+ stream_obj, null_obj};
+ m_DirectObjTypes = {
+ CPDF_Object::BOOLEAN, CPDF_Object::BOOLEAN, CPDF_Object::NUMBER,
+ CPDF_Object::NUMBER, CPDF_Object::STRING, CPDF_Object::STRING,
+ CPDF_Object::NAME, CPDF_Object::ARRAY, CPDF_Object::DICTIONARY,
+ CPDF_Object::STREAM, CPDF_Object::NULLOBJ};
+ for (size_t i = 0; i < FX_ArraySize(objs); ++i)
+ m_DirectObjs.emplace_back(objs[i]);
+
+ // Indirect references to indirect objects.
+ m_ObjHolder.reset(new CPDF_IndirectObjectHolder(nullptr));
+ m_IndirectObjs = {boolean_true_obj, number_int_obj, str_spec_obj, name_obj,
+ m_ArrayObj, m_DictObj, stream_obj};
+ for (size_t i = 0; i < m_IndirectObjs.size(); ++i) {
+ m_ObjHolder->AddIndirectObject(m_IndirectObjs[i]);
+ m_RefObjs.emplace_back(new CPDF_Reference(
+ m_ObjHolder.get(), m_IndirectObjs[i]->GetObjNum()));
+ }
+ }
+
+ bool Equal(CPDF_Object* obj1, CPDF_Object* obj2) {
+ if (obj1 == obj2)
+ return true;
+ if (!obj1 || !obj2 || obj1->GetType() != obj2->GetType())
+ return false;
+ switch (obj1->GetType()) {
+ case CPDF_Object::BOOLEAN:
+ return obj1->GetInteger() == obj2->GetInteger();
+ case CPDF_Object::NUMBER:
+ return obj1->AsNumber()->IsInteger() == obj2->AsNumber()->IsInteger() &&
+ obj1->GetInteger() == obj2->GetInteger();
+ case CPDF_Object::STRING:
+ case CPDF_Object::NAME:
+ return obj1->GetString() == obj2->GetString();
+ case CPDF_Object::ARRAY: {
+ const CPDF_Array* array1 = obj1->AsArray();
+ const CPDF_Array* array2 = obj2->AsArray();
+ if (array1->GetCount() != array2->GetCount())
+ return false;
+ for (size_t i = 0; i < array1->GetCount(); ++i) {
+ if (!Equal(array1->GetElement(i), array2->GetElement(i)))
+ return false;
+ }
+ return true;
+ }
+ case CPDF_Object::DICTIONARY: {
+ const CPDF_Dictionary* dict1 = obj1->AsDictionary();
+ const CPDF_Dictionary* dict2 = obj2->AsDictionary();
+ if (dict1->GetCount() != dict2->GetCount())
+ return false;
+ for (CPDF_Dictionary::const_iterator it = dict1->begin();
+ it != dict1->end(); ++it) {
+ if (!Equal(it->second, dict2->GetElement(it->first)))
+ return false;
+ }
+ return true;
+ }
+ case CPDF_Object::NULLOBJ:
+ return true;
+ case CPDF_Object::STREAM: {
+ const CPDF_Stream* stream1 = obj1->AsStream();
+ const CPDF_Stream* stream2 = obj2->AsStream();
+ if (!stream1->GetDict() && !stream2->GetDict())
+ return true;
+ // Compare dictionaries.
+ if (!Equal(stream1->GetDict(), stream2->GetDict()))
+ return false;
+ // Compare sizes.
+ if (stream1->GetRawSize() != stream2->GetRawSize())
+ return false;
+ // Compare contents.
+ // Since this function is used for testing Clone(), only memory based
+ // streams need to be handled.
+ if (!stream1->IsMemoryBased() || !stream2->IsMemoryBased())
+ return false;
+ return FXSYS_memcmp(stream1->GetRawData(), stream2->GetRawData(),
+ stream1->GetRawSize()) == 0;
+ }
+ case CPDF_Object::REFERENCE:
+ return obj1->AsReference()->GetRefObjNum() ==
+ obj2->AsReference()->GetRefObjNum();
+ }
+ return false;
+ }
+
+ protected:
+ using ScopedObj = std::unique_ptr<CPDF_Object, ReleaseDeleter<CPDF_Object>>;
+
+ // m_ObjHolder needs to be declared first and destructed last since it also
+ // refers to some objects in m_DirectObjs.
+ std::unique_ptr<CPDF_IndirectObjectHolder> m_ObjHolder;
+ std::vector<ScopedObj> m_DirectObjs;
+ std::vector<int> m_DirectObjTypes;
+ std::vector<ScopedObj> m_RefObjs;
+ CPDF_Dictionary* m_DictObj;
+ CPDF_Dictionary* m_StreamDictObj;
+ CPDF_Array* m_ArrayObj;
+ std::vector<CPDF_Object*> m_IndirectObjs;
+};
+
+TEST_F(PDFObjectsTest, GetString) {
+ const char* direct_obj_results[] = {
+ "false", "true", "1245", "9.00345", "A simple test", "\t\n", "space",
+ "", "", "", ""};
+ // Check for direct objects.
+ for (size_t i = 0; i < m_DirectObjs.size(); ++i)
+ EXPECT_STREQ(direct_obj_results[i], m_DirectObjs[i]->GetString().c_str());
+
+ // Check indirect references.
+ const char* indirect_obj_results[] = {"true", "1245", "\t\n", "space",
+ "", "", ""};
+ for (size_t i = 0; i < m_RefObjs.size(); ++i) {
+ EXPECT_STREQ(indirect_obj_results[i], m_RefObjs[i]->GetString().c_str());
+ }
+}
+
+TEST_F(PDFObjectsTest, GetConstString) {
+ const char* direct_obj_results[] = {
+ nullptr, nullptr, nullptr, nullptr, "A simple test", "\t\n",
+ "space", nullptr, nullptr, nullptr, nullptr};
+ // Check for direct objects.
+ for (size_t i = 0; i < m_DirectObjs.size(); ++i) {
+ if (!direct_obj_results[i]) {
+ EXPECT_EQ(direct_obj_results[i],
+ m_DirectObjs[i]->GetConstString().GetCStr());
+ } else {
+ EXPECT_STREQ(direct_obj_results[i],
+ m_DirectObjs[i]->GetConstString().GetCStr());
+ }
+ }
+ // Check indirect references.
+ const char* indirect_obj_results[] = {nullptr, nullptr, "\t\n", "space",
+ nullptr, nullptr, nullptr};
+ for (size_t i = 0; i < m_RefObjs.size(); ++i) {
+ if (!indirect_obj_results[i]) {
+ EXPECT_EQ(nullptr, m_RefObjs[i]->GetConstString().GetCStr());
+ } else {
+ EXPECT_STREQ(indirect_obj_results[i],
+ m_RefObjs[i]->GetConstString().GetCStr());
+ }
+ }
+}
+
+TEST_F(PDFObjectsTest, GetUnicodeText) {
+ const wchar_t* direct_obj_results[] = {
+ L"", L"", L"", L"", L"A simple test",
+ L"\t\n", L"space", L"", L"", L"abcdefghijklmnopqrstuvwxyz",
+ L""};
+ // Check for direct objects.
+ for (size_t i = 0; i < m_DirectObjs.size(); ++i)
+ EXPECT_STREQ(direct_obj_results[i],
+ m_DirectObjs[i]->GetUnicodeText().c_str());
+
+ // Check indirect references.
+ for (const auto& it : m_RefObjs)
+ EXPECT_STREQ(L"", it->GetUnicodeText().c_str());
+}
+
+TEST_F(PDFObjectsTest, GetNumber) {
+ const FX_FLOAT direct_obj_results[] = {0, 0, 1245, 9.00345f, 0, 0,
+ 0, 0, 0, 0, 0};
+ // Check for direct objects.
+ for (size_t i = 0; i < m_DirectObjs.size(); ++i)
+ EXPECT_EQ(direct_obj_results[i], m_DirectObjs[i]->GetNumber());
+
+ // Check indirect references.
+ const FX_FLOAT indirect_obj_results[] = {0, 1245, 0, 0, 0, 0, 0};
+ for (size_t i = 0; i < m_RefObjs.size(); ++i)
+ EXPECT_EQ(indirect_obj_results[i], m_RefObjs[i]->GetNumber());
+}
+
+TEST_F(PDFObjectsTest, GetInteger) {
+ const int direct_obj_results[] = {0, 1, 1245, 9, 0, 0, 0, 0, 0, 0, 0};
+ // Check for direct objects.
+ for (size_t i = 0; i < m_DirectObjs.size(); ++i)
+ EXPECT_EQ(direct_obj_results[i], m_DirectObjs[i]->GetInteger());
+
+ // Check indirect references.
+ const int indirect_obj_results[] = {1, 1245, 0, 0, 0, 0, 0};
+ for (size_t i = 0; i < m_RefObjs.size(); ++i)
+ EXPECT_EQ(indirect_obj_results[i], m_RefObjs[i]->GetInteger());
+}
+
+TEST_F(PDFObjectsTest, GetDict) {
+ const CPDF_Dictionary* direct_obj_results[] = {
+ nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
+ nullptr, nullptr, m_DictObj, m_StreamDictObj, nullptr};
+ // Check for direct objects.
+ for (size_t i = 0; i < m_DirectObjs.size(); ++i)
+ EXPECT_EQ(direct_obj_results[i], m_DirectObjs[i]->GetDict());
+
+ // Check indirect references.
+ const CPDF_Dictionary* indirect_obj_results[] = {
+ nullptr, nullptr, nullptr, nullptr, nullptr, m_DictObj, m_StreamDictObj};
+ for (size_t i = 0; i < m_RefObjs.size(); ++i)
+ EXPECT_EQ(indirect_obj_results[i], m_RefObjs[i]->GetDict());
+}
+
+TEST_F(PDFObjectsTest, GetArray) {
+ const CPDF_Array* direct_obj_results[] = {
+ nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
+ nullptr, m_ArrayObj, nullptr, nullptr, nullptr};
+ // Check for direct objects.
+ for (size_t i = 0; i < m_DirectObjs.size(); ++i)
+ EXPECT_EQ(direct_obj_results[i], m_DirectObjs[i]->GetArray());
+
+ // Check indirect references.
+ for (const auto& it : m_RefObjs)
+ EXPECT_EQ(nullptr, it->GetArray());
+}
+
+TEST_F(PDFObjectsTest, Clone) {
+ // Check for direct objects.
+ for (size_t i = 0; i < m_DirectObjs.size(); ++i) {
+ ScopedObj obj(m_DirectObjs[i]->Clone());
+ EXPECT_TRUE(Equal(m_DirectObjs[i].get(), obj.get()));
+ }
+
+ // Check indirect references.
+ for (const auto& it : m_RefObjs) {
+ ScopedObj obj(it->Clone());
+ EXPECT_TRUE(Equal(it.get(), obj.get()));
+ }
+}
+
+TEST_F(PDFObjectsTest, GetType) {
+ // Check for direct objects.
+ for (size_t i = 0; i < m_DirectObjs.size(); ++i)
+ EXPECT_EQ(m_DirectObjTypes[i], m_DirectObjs[i]->GetType());
+
+ // Check indirect references.
+ for (const auto& it : m_RefObjs)
+ EXPECT_EQ(CPDF_Object::REFERENCE, it->GetType());
+}
+
+TEST_F(PDFObjectsTest, GetDirect) {
+ // Check for direct objects.
+ for (size_t i = 0; i < m_DirectObjs.size(); ++i)
+ EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->GetDirect());
+
+ // Check indirect references.
+ for (size_t i = 0; i < m_RefObjs.size(); ++i)
+ EXPECT_EQ(m_IndirectObjs[i], m_RefObjs[i]->GetDirect());
+}
+
+TEST_F(PDFObjectsTest, SetString) {
+ // Check for direct objects.
+ const char* const set_values[] = {"true", "fake", "3.125f", "097",
+ "changed", "", "NewName"};
+ const char* expected[] = {"true", "false", "3.125", "97",
+ "changed", "", "NewName"};
+ for (size_t i = 0; i < FX_ArraySize(set_values); ++i) {
+ m_DirectObjs[i]->SetString(set_values[i]);
+ EXPECT_STREQ(expected[i], m_DirectObjs[i]->GetString().c_str());
+ }
+}
+
+TEST_F(PDFObjectsTest, IsTypeAndAsType) {
+ // Check for direct objects.
+ for (size_t i = 0; i < m_DirectObjs.size(); ++i) {
+ if (m_DirectObjTypes[i] == CPDF_Object::ARRAY) {
+ EXPECT_TRUE(m_DirectObjs[i]->IsArray());
+ EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->AsArray());
+ } else {
+ EXPECT_FALSE(m_DirectObjs[i]->IsArray());
+ EXPECT_EQ(nullptr, m_DirectObjs[i]->AsArray());
+ }
+
+ if (m_DirectObjTypes[i] == CPDF_Object::BOOLEAN) {
+ EXPECT_TRUE(m_DirectObjs[i]->IsBoolean());
+ EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->AsBoolean());
+ } else {
+ EXPECT_FALSE(m_DirectObjs[i]->IsBoolean());
+ EXPECT_EQ(nullptr, m_DirectObjs[i]->AsBoolean());
+ }
+
+ if (m_DirectObjTypes[i] == CPDF_Object::NAME) {
+ EXPECT_TRUE(m_DirectObjs[i]->IsName());
+ EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->AsName());
+ } else {
+ EXPECT_FALSE(m_DirectObjs[i]->IsName());
+ EXPECT_EQ(nullptr, m_DirectObjs[i]->AsName());
+ }
+
+ if (m_DirectObjTypes[i] == CPDF_Object::NUMBER) {
+ EXPECT_TRUE(m_DirectObjs[i]->IsNumber());
+ EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->AsNumber());
+ } else {
+ EXPECT_FALSE(m_DirectObjs[i]->IsNumber());
+ EXPECT_EQ(nullptr, m_DirectObjs[i]->AsNumber());
+ }
+
+ if (m_DirectObjTypes[i] == CPDF_Object::STRING) {
+ EXPECT_TRUE(m_DirectObjs[i]->IsString());
+ EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->AsString());
+ } else {
+ EXPECT_FALSE(m_DirectObjs[i]->IsString());
+ EXPECT_EQ(nullptr, m_DirectObjs[i]->AsString());
+ }
+
+ if (m_DirectObjTypes[i] == CPDF_Object::DICTIONARY) {
+ EXPECT_TRUE(m_DirectObjs[i]->IsDictionary());
+ EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->AsDictionary());
+ } else {
+ EXPECT_FALSE(m_DirectObjs[i]->IsDictionary());
+ EXPECT_EQ(nullptr, m_DirectObjs[i]->AsDictionary());
+ }
+
+ if (m_DirectObjTypes[i] == CPDF_Object::STREAM) {
+ EXPECT_TRUE(m_DirectObjs[i]->IsStream());
+ EXPECT_EQ(m_DirectObjs[i].get(), m_DirectObjs[i]->AsStream());
+ } else {
+ EXPECT_FALSE(m_DirectObjs[i]->IsStream());
+ EXPECT_EQ(nullptr, m_DirectObjs[i]->AsStream());
+ }
+
+ EXPECT_FALSE(m_DirectObjs[i]->IsReference());
+ EXPECT_EQ(nullptr, m_DirectObjs[i]->AsReference());
+ }
+ // Check indirect references.
+ for (size_t i = 0; i < m_RefObjs.size(); ++i) {
+ EXPECT_TRUE(m_RefObjs[i]->IsReference());
+ EXPECT_EQ(m_RefObjs[i].get(), m_RefObjs[i]->AsReference());
+ }
+}
+
+TEST(PDFArrayTest, GetMatrix) {
+ float elems[][6] = {{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f},
+ {1, 2, 3, 4, 5, 6},
+ {2.3f, 4.05f, 3, -2, -3, 0.0f},
+ {0.05f, 0.1f, 0.56f, 0.67f, 1.34f, 99.9f}};
+ for (size_t i = 0; i < FX_ArraySize(elems); ++i) {
+ ScopedArray arr(new CPDF_Array);
+ CFX_Matrix matrix(elems[i][0], elems[i][1], elems[i][2], elems[i][3],
+ elems[i][4], elems[i][5]);
+ for (size_t j = 0; j < 6; ++j)
+ arr->AddNumber(elems[i][j]);
+ CFX_Matrix arr_matrix = arr->GetMatrix();
+ EXPECT_EQ(matrix.GetA(), arr_matrix.GetA());
+ EXPECT_EQ(matrix.GetB(), arr_matrix.GetB());
+ EXPECT_EQ(matrix.GetC(), arr_matrix.GetC());
+ EXPECT_EQ(matrix.GetD(), arr_matrix.GetD());
+ EXPECT_EQ(matrix.GetE(), arr_matrix.GetE());
+ EXPECT_EQ(matrix.GetF(), arr_matrix.GetF());
+ }
+}
+
+TEST(PDFArrayTest, GetRect) {
+ float elems[][4] = {{0.0f, 0.0f, 0.0f, 0.0f},
+ {1, 2, 5, 6},
+ {2.3f, 4.05f, -3, 0.0f},
+ {0.05f, 0.1f, 1.34f, 99.9f}};
+ for (size_t i = 0; i < FX_ArraySize(elems); ++i) {
+ ScopedArray arr(new CPDF_Array);
+ CFX_FloatRect rect(elems[i]);
+ for (size_t j = 0; j < 4; ++j)
+ arr->AddNumber(elems[i][j]);
+ CFX_FloatRect arr_rect = arr->GetRect();
+ EXPECT_EQ(rect.left, arr_rect.left);
+ EXPECT_EQ(rect.right, arr_rect.right);
+ EXPECT_EQ(rect.bottom, arr_rect.bottom);
+ EXPECT_EQ(rect.top, arr_rect.top);
+ }
+}
+
+TEST(PDFArrayTest, GetTypeAt) {
+ {
+ // Boolean array.
+ bool vals[] = {true, false, false, true, true};
+ ScopedArray arr(new CPDF_Array);
+ for (size_t i = 0; i < FX_ArraySize(vals); ++i)
+ arr->InsertAt(i, new CPDF_Boolean(vals[i]));
+ for (size_t i = 0; i < FX_ArraySize(vals); ++i) {
+ TestArrayAccessors(arr.get(), i, // Array and index.
+ vals[i] ? "true" : "false", // String value.
+ nullptr, // Const string value.
+ vals[i] ? 1 : 0, // Integer value.
+ 0, // Float value.
+ nullptr, // Array value.
+ nullptr, // Dictionary value.
+ nullptr); // Stream value.
+ }
+ }
+ {
+ // Integer array.
+ int vals[] = {10, 0, -345, 2089345456, -1000000000, 567, 93658767};
+ ScopedArray arr(new CPDF_Array);
+ for (size_t i = 0; i < FX_ArraySize(vals); ++i)
+ arr->InsertAt(i, new CPDF_Number(vals[i]));
+ for (size_t i = 0; i < FX_ArraySize(vals); ++i) {
+ char buf[33];
+ TestArrayAccessors(arr.get(), i, // Array and index.
+ FXSYS_itoa(vals[i], buf, 10), // String value.
+ nullptr, // Const string value.
+ vals[i], // Integer value.
+ vals[i], // Float value.
+ nullptr, // Array value.
+ nullptr, // Dictionary value.
+ nullptr); // Stream value.
+ }
+ }
+ {
+ // Float array.
+ float vals[] = {0.0f, 0, 10, 10.0f, 0.0345f,
+ 897.34f, -2.5f, -1.0f, -345.0f, -0.0f};
+ const char* expected_str[] = {"0", "0", "10", "10", "0.0345",
+ "897.34", "-2.5", "-1", "-345", "0"};
+ ScopedArray arr(new CPDF_Array);
+ for (size_t i = 0; i < FX_ArraySize(vals); ++i) {
+ arr->InsertAt(i, new CPDF_Number(vals[i]));
+ }
+ for (size_t i = 0; i < FX_ArraySize(vals); ++i) {
+ TestArrayAccessors(arr.get(), i, // Array and index.
+ expected_str[i], // String value.
+ nullptr, // Const string value.
+ vals[i], // Integer value.
+ vals[i], // Float value.
+ nullptr, // Array value.
+ nullptr, // Dictionary value.
+ nullptr); // Stream value.
+ }
+ }
+ {
+ // String and name array
+ const char* const vals[] = {"this", "adsde$%^", "\r\t", "\"012",
+ ".", "EYREW", "It is a joke :)"};
+ ScopedArray string_array(new CPDF_Array);
+ ScopedArray name_array(new CPDF_Array);
+ for (size_t i = 0; i < FX_ArraySize(vals); ++i) {
+ string_array->InsertAt(i, new CPDF_String(vals[i], false));
+ name_array->InsertAt(i, new CPDF_Name(vals[i]));
+ }
+ for (size_t i = 0; i < FX_ArraySize(vals); ++i) {
+ TestArrayAccessors(string_array.get(), i, // Array and index.
+ vals[i], // String value.
+ vals[i], // Const string value.
+ 0, // Integer value.
+ 0, // Float value.
+ nullptr, // Array value.
+ nullptr, // Dictionary value.
+ nullptr); // Stream value.
+ TestArrayAccessors(name_array.get(), i, // Array and index.
+ vals[i], // String value.
+ vals[i], // Const string value.
+ 0, // Integer value.
+ 0, // Float value.
+ nullptr, // Array value.
+ nullptr, // Dictionary value.
+ nullptr); // Stream value.
+ }
+ }
+ {
+ // Null element array.
+ ScopedArray arr(new CPDF_Array);
+ for (size_t i = 0; i < 3; ++i)
+ arr->InsertAt(i, new CPDF_Null);
+ for (size_t i = 0; i < 3; ++i) {
+ TestArrayAccessors(arr.get(), i, // Array and index.
+ "", // String value.
+ nullptr, // Const string value.
+ 0, // Integer value.
+ 0, // Float value.
+ nullptr, // Array value.
+ nullptr, // Dictionary value.
+ nullptr); // Stream value.
+ }
+ }
+ {
+ // Array of array.
+ CPDF_Array* vals[3];
+ ScopedArray arr(new CPDF_Array);
+ for (size_t i = 0; i < 3; ++i) {
+ vals[i] = new CPDF_Array;
+ for (size_t j = 0; j < 3; ++j) {
+ int value = j + 100;
+ vals[i]->InsertAt(i, new CPDF_Number(value));
+ }
+ arr->InsertAt(i, vals[i]);
+ }
+ for (size_t i = 0; i < 3; ++i) {
+ TestArrayAccessors(arr.get(), i, // Array and index.
+ "", // String value.
+ nullptr, // Const string value.
+ 0, // Integer value.
+ 0, // Float value.
+ vals[i], // Array value.
+ nullptr, // Dictionary value.
+ nullptr); // Stream value.
+ }
+ }
+ {
+ // Dictionary array.
+ CPDF_Dictionary* vals[3];
+ ScopedArray arr(new CPDF_Array);
+ for (size_t i = 0; i < 3; ++i) {
+ vals[i] = new CPDF_Dictionary;
+ for (size_t j = 0; j < 3; ++j) {
+ std::string key("key");
+ char buf[33];
+ key.append(FXSYS_itoa(j, buf, 10));
+ int value = j + 200;
+ vals[i]->SetAt(CFX_ByteStringC(key.c_str()), new CPDF_Number(value));
+ }
+ arr->InsertAt(i, vals[i]);
+ }
+ for (size_t i = 0; i < 3; ++i) {
+ TestArrayAccessors(arr.get(), i, // Array and index.
+ "", // String value.
+ nullptr, // Const string value.
+ 0, // Integer value.
+ 0, // Float value.
+ nullptr, // Array value.
+ vals[i], // Dictionary value.
+ nullptr); // Stream value.
+ }
+ }
+ {
+ // Stream array.
+ CPDF_Dictionary* vals[3];
+ CPDF_Stream* stream_vals[3];
+ ScopedArray arr(new CPDF_Array);
+ for (size_t i = 0; i < 3; ++i) {
+ vals[i] = new CPDF_Dictionary;
+ for (size_t j = 0; j < 3; ++j) {
+ std::string key("key");
+ char buf[33];
+ key.append(FXSYS_itoa(j, buf, 10));
+ int value = j + 200;
+ vals[i]->SetAt(CFX_ByteStringC(key.c_str()), new CPDF_Number(value));
+ }
+ uint8_t content[] = "content: this is a stream";
+ size_t data_size = FX_ArraySize(content);
+ uint8_t* data = reinterpret_cast<uint8_t*>(malloc(data_size));
+ memcpy(data, content, data_size);
+ stream_vals[i] = new CPDF_Stream(data, data_size, vals[i]);
+ arr->InsertAt(i, stream_vals[i]);
+ }
+ for (size_t i = 0; i < 3; ++i) {
+ TestArrayAccessors(arr.get(), i, // Array and index.
+ "", // String value.
+ nullptr, // Const string value.
+ 0, // Integer value.
+ 0, // Float value.
+ nullptr, // Array value.
+ vals[i], // Dictionary value.
+ stream_vals[i]); // Stream value.
+ }
+ }
+ {
+ // Mixed array.
+ ScopedArray arr(new CPDF_Array);
+ // Array arr will take ownership of all the objects inserted.
+ arr->InsertAt(0, new CPDF_Boolean(true));
+ arr->InsertAt(1, new CPDF_Boolean(false));
+ arr->InsertAt(2, new CPDF_Number(0));
+ arr->InsertAt(3, new CPDF_Number(-1234));
+ arr->InsertAt(4, new CPDF_Number(2345.0f));
+ arr->InsertAt(5, new CPDF_Number(0.05f));
+ arr->InsertAt(6, new CPDF_String("", false));
+ arr->InsertAt(7, new CPDF_String("It is a test!", false));
+ arr->InsertAt(8, new CPDF_Name("NAME"));
+ arr->InsertAt(9, new CPDF_Name("test"));
+ arr->InsertAt(10, new CPDF_Null());
+ CPDF_Array* arr_val = new CPDF_Array;
+ arr_val->AddNumber(1);
+ arr_val->AddNumber(2);
+ arr->InsertAt(11, arr_val);
+ CPDF_Dictionary* dict_val = new CPDF_Dictionary;
+ dict_val->SetAt("key1", new CPDF_String("Linda", false));
+ dict_val->SetAt("key2", new CPDF_String("Zoe", false));
+ arr->InsertAt(12, dict_val);
+ CPDF_Dictionary* stream_dict = new CPDF_Dictionary;
+ stream_dict->SetAt("key1", new CPDF_String("John", false));
+ stream_dict->SetAt("key2", new CPDF_String("King", false));
+ uint8_t data[] = "A stream for test";
+ // The data buffer will be owned by stream object, so it needs to be
+ // dynamically allocated.
+ size_t buf_size = sizeof(data);
+ uint8_t* buf = reinterpret_cast<uint8_t*>(malloc(buf_size));
+ memcpy(buf, data, buf_size);
+ CPDF_Stream* stream_val = new CPDF_Stream(buf, buf_size, stream_dict);
+ arr->InsertAt(13, stream_val);
+ const char* const expected_str[] = {
+ "true", "false", "0", "-1234", "2345", "0.05", "",
+ "It is a test!", "NAME", "test", "", "", "", ""};
+ const char* const expected_cstr[] = {
+ nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr,
+ "It is a test!", "NAME", "test", nullptr, nullptr, nullptr, nullptr};
+ const int expected_int[] = {1, 0, 0, -1234, 2345, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0};
+ const float expected_float[] = {0, 0, 0, -1234, 2345, 0.05f, 0,
+ 0, 0, 0, 0, 0, 0, 0};
+ for (size_t i = 0; i < arr->GetCount(); ++i) {
+ EXPECT_STREQ(expected_str[i], arr->GetStringAt(i).c_str());
+ EXPECT_STREQ(expected_cstr[i], arr->GetConstStringAt(i).GetCStr());
+ EXPECT_EQ(expected_int[i], arr->GetIntegerAt(i));
+ EXPECT_EQ(expected_float[i], arr->GetNumberAt(i));
+ EXPECT_EQ(expected_float[i], arr->GetFloatAt(i));
+ if (i == 11)
+ EXPECT_EQ(arr_val, arr->GetArrayAt(i));
+ else
+ EXPECT_EQ(nullptr, arr->GetArrayAt(i));
+ if (i == 13) {
+ EXPECT_EQ(stream_dict, arr->GetDictAt(i));
+ EXPECT_EQ(stream_val, arr->GetStreamAt(i));
+ } else {
+ EXPECT_EQ(nullptr, arr->GetStreamAt(i));
+ if (i == 12)
+ EXPECT_EQ(dict_val, arr->GetDictAt(i));
+ else
+ EXPECT_EQ(nullptr, arr->GetDictAt(i));
+ }
+ }
+ }
+}
+
+TEST(PDFArrayTest, AddNumber) {
+ float vals[] = {1.0f, -1.0f, 0, 0.456734f,
+ 12345.54321f, 0.5f, 1000, 0.000045f};
+ ScopedArray arr(new CPDF_Array);
+ for (size_t i = 0; i < FX_ArraySize(vals); ++i)
+ arr->AddNumber(vals[i]);
+ for (size_t i = 0; i < FX_ArraySize(vals); ++i) {
+ EXPECT_EQ(CPDF_Object::NUMBER, arr->GetElement(i)->GetType());
+ EXPECT_EQ(vals[i], arr->GetElement(i)->GetNumber());
+ }
+}
+
+TEST(PDFArrayTest, AddInteger) {
+ int vals[] = {0, 1, 934435456, 876, 10000, -1, -24354656, -100};
+ ScopedArray arr(new CPDF_Array);
+ for (size_t i = 0; i < FX_ArraySize(vals); ++i)
+ arr->AddInteger(vals[i]);
+ for (size_t i = 0; i < FX_ArraySize(vals); ++i) {
+ EXPECT_EQ(CPDF_Object::NUMBER, arr->GetElement(i)->GetType());
+ EXPECT_EQ(vals[i], arr->GetElement(i)->GetNumber());
+ }
+}
+
+TEST(PDFArrayTest, AddStringAndName) {
+ const char* vals[] = {"", "a", "ehjhRIOYTTFdfcdnv", "122323",
+ "$#%^&**", " ", "This is a test.\r\n"};
+ ScopedArray string_array(new CPDF_Array);
+ ScopedArray name_array(new CPDF_Array);
+ for (size_t i = 0; i < FX_ArraySize(vals); ++i) {
+ string_array->AddString(vals[i]);
+ name_array->AddName(vals[i]);
+ }
+ for (size_t i = 0; i < FX_ArraySize(vals); ++i) {
+ EXPECT_EQ(CPDF_Object::STRING, string_array->GetElement(i)->GetType());
+ EXPECT_STREQ(vals[i], string_array->GetElement(i)->GetString().c_str());
+ EXPECT_EQ(CPDF_Object::NAME, name_array->GetElement(i)->GetType());
+ EXPECT_STREQ(vals[i], name_array->GetElement(i)->GetString().c_str());
+ }
+}
+
+TEST(PDFArrayTest, AddReferenceAndGetElement) {
+ std::unique_ptr<CPDF_IndirectObjectHolder> holder(
+ new CPDF_IndirectObjectHolder(nullptr));
+ CPDF_Boolean* boolean_obj = new CPDF_Boolean(true);
+ CPDF_Number* int_obj = new CPDF_Number(-1234);
+ CPDF_Number* float_obj = new CPDF_Number(2345.089f);
+ CPDF_String* str_obj = new CPDF_String("Adsfdsf 343434 %&&*\n", false);
+ CPDF_Name* name_obj = new CPDF_Name("Title:");
+ CPDF_Null* null_obj = new CPDF_Null();
+ CPDF_Object* indirect_objs[] = {boolean_obj, int_obj, float_obj,
+ str_obj, name_obj, null_obj};
+ unsigned int obj_nums[] = {2, 4, 7, 2345, 799887, 1};
+ ScopedArray arr(new CPDF_Array);
+ ScopedArray arr1(new CPDF_Array);
+ // Create two arrays of references by different AddReference() APIs.
+ for (size_t i = 0; i < FX_ArraySize(indirect_objs); ++i) {
+ // All the indirect objects inserted will be owned by holder.
+ holder->InsertIndirectObject(obj_nums[i], indirect_objs[i]);
+ arr->AddReference(holder.get(), obj_nums[i]);
+ arr1->AddReference(holder.get(), indirect_objs[i]);
+ }
+ // Check indirect objects.
+ for (size_t i = 0; i < FX_ArraySize(obj_nums); ++i)
+ EXPECT_EQ(indirect_objs[i], holder->GetIndirectObject(obj_nums[i]));
+ // Check arrays.
+ EXPECT_EQ(arr->GetCount(), arr1->GetCount());
+ for (size_t i = 0; i < arr->GetCount(); ++i) {
+ EXPECT_EQ(CPDF_Object::REFERENCE, arr->GetElement(i)->GetType());
+ EXPECT_EQ(indirect_objs[i], arr->GetElement(i)->GetDirect());
+ EXPECT_EQ(indirect_objs[i], arr->GetElementValue(i));
+ EXPECT_EQ(CPDF_Object::REFERENCE, arr1->GetElement(i)->GetType());
+ EXPECT_EQ(indirect_objs[i], arr1->GetElement(i)->GetDirect());
+ EXPECT_EQ(indirect_objs[i], arr1->GetElementValue(i));
+ }
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_parser.cpp b/core/fpdfapi/fpdf_parser/cpdf_parser.cpp
new file mode 100644
index 0000000000..a39dbc031b
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_parser.cpp
@@ -0,0 +1,1652 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/include/fpdfapi/cpdf_parser.h"
+
+#include <vector>
+
+#include "core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h"
+#include "core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h"
+#include "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h"
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_document.h"
+#include "core/include/fpdfapi/cpdf_number.h"
+#include "core/include/fpdfapi/cpdf_reference.h"
+#include "core/include/fpdfapi/cpdf_stream.h"
+#include "core/include/fpdfapi/ipdf_crypto_handler.h"
+#include "core/include/fxcrt/fx_ext.h"
+#include "core/include/fxcrt/fx_safe_types.h"
+#include "third_party/base/stl_util.h"
+
+namespace {
+
+// A limit on the size of the xref table. Theoretical limits are higher, but
+// this may be large enough in practice.
+const int32_t kMaxXRefSize = 1048576;
+
+// A limit on the maximum object number in the xref table. Theoretical limits
+// are higher, but this may be large enough in practice.
+const FX_DWORD kMaxObjectNumber = 1048576;
+
+FX_DWORD GetVarInt(const uint8_t* p, int32_t n) {
+ FX_DWORD result = 0;
+ for (int32_t i = 0; i < n; ++i)
+ result = result * 256 + p[i];
+ return result;
+}
+
+int32_t GetStreamNCount(CPDF_StreamAcc* pObjStream) {
+ return pObjStream->GetDict()->GetIntegerBy("N");
+}
+
+int32_t GetStreamFirst(CPDF_StreamAcc* pObjStream) {
+ return pObjStream->GetDict()->GetIntegerBy("First");
+}
+
+} // namespace
+
+CPDF_Parser::CPDF_Parser()
+ : m_pDocument(nullptr),
+ m_bOwnFileRead(true),
+ m_FileVersion(0),
+ m_pTrailer(nullptr),
+ m_pEncryptDict(nullptr),
+ m_bVersionUpdated(false),
+ m_pLinearized(nullptr),
+ m_dwFirstPageNo(0),
+ m_dwXrefStartObjNum(0) {
+ m_pSyntax.reset(new CPDF_SyntaxParser);
+}
+
+CPDF_Parser::~CPDF_Parser() {
+ CloseParser();
+}
+
+FX_DWORD CPDF_Parser::GetLastObjNum() const {
+ return m_ObjectInfo.empty() ? 0 : m_ObjectInfo.rbegin()->first;
+}
+
+bool CPDF_Parser::IsValidObjectNumber(FX_DWORD objnum) const {
+ return !m_ObjectInfo.empty() && objnum <= m_ObjectInfo.rbegin()->first;
+}
+
+FX_FILESIZE CPDF_Parser::GetObjectPositionOrZero(FX_DWORD objnum) const {
+ auto it = m_ObjectInfo.find(objnum);
+ return it != m_ObjectInfo.end() ? it->second.pos : 0;
+}
+
+uint8_t CPDF_Parser::GetObjectType(FX_DWORD objnum) const {
+ ASSERT(IsValidObjectNumber(objnum));
+ auto it = m_ObjectInfo.find(objnum);
+ return it != m_ObjectInfo.end() ? it->second.type : 0;
+}
+
+uint16_t CPDF_Parser::GetObjectGenNum(FX_DWORD objnum) const {
+ ASSERT(IsValidObjectNumber(objnum));
+ auto it = m_ObjectInfo.find(objnum);
+ return it != m_ObjectInfo.end() ? it->second.gennum : 0;
+}
+
+bool CPDF_Parser::IsObjectFreeOrNull(FX_DWORD objnum) const {
+ uint8_t type = GetObjectType(objnum);
+ return type == 0 || type == 255;
+}
+
+void CPDF_Parser::SetEncryptDictionary(CPDF_Dictionary* pDict) {
+ m_pEncryptDict = pDict;
+}
+
+IPDF_CryptoHandler* CPDF_Parser::GetCryptoHandler() {
+ return m_pSyntax->m_pCryptoHandler.get();
+}
+
+IFX_FileRead* CPDF_Parser::GetFileAccess() const {
+ return m_pSyntax->m_pFileAccess;
+}
+
+void CPDF_Parser::ShrinkObjectMap(FX_DWORD objnum) {
+ if (objnum == 0) {
+ m_ObjectInfo.clear();
+ return;
+ }
+
+ auto it = m_ObjectInfo.lower_bound(objnum);
+ while (it != m_ObjectInfo.end()) {
+ auto saved_it = it++;
+ m_ObjectInfo.erase(saved_it);
+ }
+
+ if (!pdfium::ContainsKey(m_ObjectInfo, objnum - 1))
+ m_ObjectInfo[objnum - 1].pos = 0;
+}
+
+void CPDF_Parser::CloseParser() {
+ m_bVersionUpdated = false;
+ delete m_pDocument;
+ m_pDocument = nullptr;
+
+ if (m_pTrailer) {
+ m_pTrailer->Release();
+ m_pTrailer = nullptr;
+ }
+ ReleaseEncryptHandler();
+ SetEncryptDictionary(nullptr);
+
+ if (m_bOwnFileRead && m_pSyntax->m_pFileAccess) {
+ m_pSyntax->m_pFileAccess->Release();
+ m_pSyntax->m_pFileAccess = nullptr;
+ }
+
+ m_ObjectStreamMap.clear();
+ m_ObjCache.clear();
+ m_SortedOffset.clear();
+ m_ObjectInfo.clear();
+
+ int32_t iLen = m_Trailers.GetSize();
+ for (int32_t i = 0; i < iLen; ++i) {
+ if (CPDF_Dictionary* trailer = m_Trailers.GetAt(i))
+ trailer->Release();
+ }
+ m_Trailers.RemoveAll();
+
+ if (m_pLinearized) {
+ m_pLinearized->Release();
+ m_pLinearized = nullptr;
+ }
+}
+
+CPDF_Parser::Error CPDF_Parser::StartParse(IFX_FileRead* pFileAccess) {
+ CloseParser();
+
+ m_bXRefStream = FALSE;
+ m_LastXRefOffset = 0;
+ m_bOwnFileRead = true;
+
+ int32_t offset = GetHeaderOffset(pFileAccess);
+ if (offset == -1) {
+ if (pFileAccess)
+ pFileAccess->Release();
+ return FORMAT_ERROR;
+ }
+ m_pSyntax->InitParser(pFileAccess, offset);
+
+ uint8_t ch;
+ if (!m_pSyntax->GetCharAt(5, ch))
+ return FORMAT_ERROR;
+ if (std::isdigit(ch))
+ m_FileVersion = FXSYS_toDecimalDigit(static_cast<FX_WCHAR>(ch)) * 10;
+
+ if (!m_pSyntax->GetCharAt(7, ch))
+ return FORMAT_ERROR;
+ if (std::isdigit(ch))
+ m_FileVersion += FXSYS_toDecimalDigit(static_cast<FX_WCHAR>(ch));
+
+ if (m_pSyntax->m_FileLen < m_pSyntax->m_HeaderOffset + 9)
+ return FORMAT_ERROR;
+
+ m_pSyntax->RestorePos(m_pSyntax->m_FileLen - m_pSyntax->m_HeaderOffset - 9);
+ m_pDocument = new CPDF_Document(this);
+
+ FX_BOOL bXRefRebuilt = FALSE;
+ if (m_pSyntax->SearchWord("startxref", TRUE, FALSE, 4096)) {
+ m_SortedOffset.insert(m_pSyntax->SavePos());
+ m_pSyntax->GetKeyword();
+
+ bool bNumber;
+ CFX_ByteString xrefpos_str = m_pSyntax->GetNextWord(&bNumber);
+ if (!bNumber)
+ return FORMAT_ERROR;
+
+ m_LastXRefOffset = (FX_FILESIZE)FXSYS_atoi64(xrefpos_str);
+ if (!LoadAllCrossRefV4(m_LastXRefOffset) &&
+ !LoadAllCrossRefV5(m_LastXRefOffset)) {
+ if (!RebuildCrossRef())
+ return FORMAT_ERROR;
+
+ bXRefRebuilt = TRUE;
+ m_LastXRefOffset = 0;
+ }
+ } else {
+ if (!RebuildCrossRef())
+ return FORMAT_ERROR;
+
+ bXRefRebuilt = TRUE;
+ }
+ Error eRet = SetEncryptHandler();
+ if (eRet != SUCCESS)
+ return eRet;
+
+ m_pDocument->LoadDoc();
+ if (!m_pDocument->GetRoot() || m_pDocument->GetPageCount() == 0) {
+ if (bXRefRebuilt)
+ return FORMAT_ERROR;
+
+ ReleaseEncryptHandler();
+ if (!RebuildCrossRef())
+ return FORMAT_ERROR;
+
+ eRet = SetEncryptHandler();
+ if (eRet != SUCCESS)
+ return eRet;
+
+ m_pDocument->LoadDoc();
+ if (!m_pDocument->GetRoot())
+ return FORMAT_ERROR;
+ }
+ if (GetRootObjNum() == 0) {
+ ReleaseEncryptHandler();
+ if (!RebuildCrossRef() || GetRootObjNum() == 0)
+ return FORMAT_ERROR;
+
+ eRet = SetEncryptHandler();
+ if (eRet != SUCCESS)
+ return eRet;
+ }
+ if (m_pSecurityHandler && !m_pSecurityHandler->IsMetadataEncrypted()) {
+ CPDF_Reference* pMetadata =
+ ToReference(m_pDocument->GetRoot()->GetElement("Metadata"));
+ if (pMetadata)
+ m_pSyntax->m_MetadataObjnum = pMetadata->GetRefObjNum();
+ }
+ return SUCCESS;
+}
+CPDF_Parser::Error CPDF_Parser::SetEncryptHandler() {
+ ReleaseEncryptHandler();
+ SetEncryptDictionary(nullptr);
+
+ if (!m_pTrailer)
+ return FORMAT_ERROR;
+
+ CPDF_Object* pEncryptObj = m_pTrailer->GetElement("Encrypt");
+ if (pEncryptObj) {
+ if (CPDF_Dictionary* pEncryptDict = pEncryptObj->AsDictionary()) {
+ SetEncryptDictionary(pEncryptDict);
+ } else if (CPDF_Reference* pRef = pEncryptObj->AsReference()) {
+ pEncryptObj = m_pDocument->GetIndirectObject(pRef->GetRefObjNum());
+ if (pEncryptObj)
+ SetEncryptDictionary(pEncryptObj->GetDict());
+ }
+ }
+
+ if (m_pEncryptDict) {
+ CFX_ByteString filter = m_pEncryptDict->GetStringBy("Filter");
+ std::unique_ptr<IPDF_SecurityHandler> pSecurityHandler;
+ Error err = HANDLER_ERROR;
+ if (filter == "Standard") {
+ pSecurityHandler.reset(new CPDF_StandardSecurityHandler);
+ err = PASSWORD_ERROR;
+ }
+ if (!pSecurityHandler)
+ return HANDLER_ERROR;
+
+ if (!pSecurityHandler->OnInit(this, m_pEncryptDict))
+ return err;
+
+ m_pSecurityHandler = std::move(pSecurityHandler);
+ std::unique_ptr<IPDF_CryptoHandler> pCryptoHandler(
+ m_pSecurityHandler->CreateCryptoHandler());
+ if (!pCryptoHandler->Init(m_pEncryptDict, m_pSecurityHandler.get()))
+ return HANDLER_ERROR;
+ m_pSyntax->SetEncrypt(std::move(pCryptoHandler));
+ }
+ return SUCCESS;
+}
+
+void CPDF_Parser::ReleaseEncryptHandler() {
+ m_pSyntax->m_pCryptoHandler.reset();
+ m_pSecurityHandler.reset();
+}
+
+FX_FILESIZE CPDF_Parser::GetObjectOffset(FX_DWORD objnum) const {
+ if (!IsValidObjectNumber(objnum))
+ return 0;
+
+ if (GetObjectType(objnum) == 1)
+ return GetObjectPositionOrZero(objnum);
+
+ if (GetObjectType(objnum) == 2) {
+ FX_FILESIZE pos = GetObjectPositionOrZero(objnum);
+ return GetObjectPositionOrZero(pos);
+ }
+ return 0;
+}
+
+FX_BOOL CPDF_Parser::LoadAllCrossRefV4(FX_FILESIZE xrefpos) {
+ if (!LoadCrossRefV4(xrefpos, 0, TRUE))
+ return FALSE;
+
+ m_pTrailer = LoadTrailerV4();
+ if (!m_pTrailer)
+ return FALSE;
+
+ int32_t xrefsize = GetDirectInteger(m_pTrailer, "Size");
+ if (xrefsize > 0 && xrefsize <= kMaxXRefSize)
+ ShrinkObjectMap(xrefsize);
+
+ std::vector<FX_FILESIZE> CrossRefList;
+ std::vector<FX_FILESIZE> XRefStreamList;
+ std::set<FX_FILESIZE> seen_xrefpos;
+
+ CrossRefList.push_back(xrefpos);
+ XRefStreamList.push_back(GetDirectInteger(m_pTrailer, "XRefStm"));
+ seen_xrefpos.insert(xrefpos);
+
+ // When |m_pTrailer| doesn't have Prev entry or Prev entry value is not
+ // numerical, GetDirectInteger() returns 0. Loading will end.
+ xrefpos = GetDirectInteger(m_pTrailer, "Prev");
+ while (xrefpos) {
+ // Check for circular references.
+ if (pdfium::ContainsKey(seen_xrefpos, xrefpos))
+ return FALSE;
+
+ seen_xrefpos.insert(xrefpos);
+
+ // SLOW ...
+ CrossRefList.insert(CrossRefList.begin(), xrefpos);
+ LoadCrossRefV4(xrefpos, 0, TRUE);
+
+ std::unique_ptr<CPDF_Dictionary, ReleaseDeleter<CPDF_Dictionary>> pDict(
+ LoadTrailerV4());
+ if (!pDict)
+ return FALSE;
+
+ xrefpos = GetDirectInteger(pDict.get(), "Prev");
+
+ // SLOW ...
+ XRefStreamList.insert(XRefStreamList.begin(),
+ pDict->GetIntegerBy("XRefStm"));
+ m_Trailers.Add(pDict.release());
+ }
+
+ for (size_t i = 0; i < CrossRefList.size(); ++i) {
+ if (!LoadCrossRefV4(CrossRefList[i], XRefStreamList[i], FALSE))
+ return FALSE;
+ }
+ return TRUE;
+}
+
+FX_BOOL CPDF_Parser::LoadLinearizedAllCrossRefV4(FX_FILESIZE xrefpos,
+ FX_DWORD dwObjCount) {
+ if (!LoadLinearizedCrossRefV4(xrefpos, dwObjCount))
+ return FALSE;
+
+ m_pTrailer = LoadTrailerV4();
+ if (!m_pTrailer)
+ return FALSE;
+
+ int32_t xrefsize = GetDirectInteger(m_pTrailer, "Size");
+ if (xrefsize == 0)
+ return FALSE;
+
+ std::vector<FX_FILESIZE> CrossRefList;
+ std::vector<FX_FILESIZE> XRefStreamList;
+ std::set<FX_FILESIZE> seen_xrefpos;
+
+ CrossRefList.push_back(xrefpos);
+ XRefStreamList.push_back(GetDirectInteger(m_pTrailer, "XRefStm"));
+ seen_xrefpos.insert(xrefpos);
+
+ xrefpos = GetDirectInteger(m_pTrailer, "Prev");
+ while (xrefpos) {
+ // Check for circular references.
+ if (pdfium::ContainsKey(seen_xrefpos, xrefpos))
+ return FALSE;
+
+ seen_xrefpos.insert(xrefpos);
+
+ // SLOW ...
+ CrossRefList.insert(CrossRefList.begin(), xrefpos);
+ LoadCrossRefV4(xrefpos, 0, TRUE);
+
+ std::unique_ptr<CPDF_Dictionary, ReleaseDeleter<CPDF_Dictionary>> pDict(
+ LoadTrailerV4());
+ if (!pDict)
+ return FALSE;
+
+ xrefpos = GetDirectInteger(pDict.get(), "Prev");
+
+ // SLOW ...
+ XRefStreamList.insert(XRefStreamList.begin(),
+ pDict->GetIntegerBy("XRefStm"));
+ m_Trailers.Add(pDict.release());
+ }
+
+ for (size_t i = 1; i < CrossRefList.size(); ++i) {
+ if (!LoadCrossRefV4(CrossRefList[i], XRefStreamList[i], FALSE))
+ return FALSE;
+ }
+ return TRUE;
+}
+
+FX_BOOL CPDF_Parser::LoadLinearizedCrossRefV4(FX_FILESIZE pos,
+ FX_DWORD dwObjCount) {
+ FX_FILESIZE dwStartPos = pos - m_pSyntax->m_HeaderOffset;
+
+ m_pSyntax->RestorePos(dwStartPos);
+ m_SortedOffset.insert(pos);
+
+ FX_DWORD start_objnum = 0;
+ FX_DWORD count = dwObjCount;
+ FX_FILESIZE SavedPos = m_pSyntax->SavePos();
+
+ const int32_t recordsize = 20;
+ std::vector<char> buf(1024 * recordsize + 1);
+ buf[1024 * recordsize] = '\0';
+
+ int32_t nBlocks = count / 1024 + 1;
+ for (int32_t block = 0; block < nBlocks; block++) {
+ int32_t block_size = block == nBlocks - 1 ? count % 1024 : 1024;
+ FX_DWORD dwReadSize = block_size * recordsize;
+ if ((FX_FILESIZE)(dwStartPos + dwReadSize) > m_pSyntax->m_FileLen)
+ return FALSE;
+
+ if (!m_pSyntax->ReadBlock(reinterpret_cast<uint8_t*>(buf.data()),
+ dwReadSize)) {
+ return FALSE;
+ }
+
+ for (int32_t i = 0; i < block_size; i++) {
+ FX_DWORD objnum = start_objnum + block * 1024 + i;
+ char* pEntry = &buf[i * recordsize];
+ if (pEntry[17] == 'f') {
+ m_ObjectInfo[objnum].pos = 0;
+ m_ObjectInfo[objnum].type = 0;
+ } else {
+ int32_t offset = FXSYS_atoi(pEntry);
+ if (offset == 0) {
+ for (int32_t c = 0; c < 10; c++) {
+ if (!std::isdigit(pEntry[c]))
+ return FALSE;
+ }
+ }
+
+ m_ObjectInfo[objnum].pos = offset;
+ int32_t version = FXSYS_atoi(pEntry + 11);
+ if (version >= 1)
+ m_bVersionUpdated = true;
+
+ m_ObjectInfo[objnum].gennum = version;
+ if (m_ObjectInfo[objnum].pos < m_pSyntax->m_FileLen)
+ m_SortedOffset.insert(m_ObjectInfo[objnum].pos);
+
+ m_ObjectInfo[objnum].type = 1;
+ }
+ }
+ }
+ m_pSyntax->RestorePos(SavedPos + count * recordsize);
+ return TRUE;
+}
+
+bool CPDF_Parser::LoadCrossRefV4(FX_FILESIZE pos,
+ FX_FILESIZE streampos,
+ FX_BOOL bSkip) {
+ m_pSyntax->RestorePos(pos);
+ if (m_pSyntax->GetKeyword() != "xref")
+ return false;
+
+ m_SortedOffset.insert(pos);
+ if (streampos)
+ m_SortedOffset.insert(streampos);
+
+ while (1) {
+ FX_FILESIZE SavedPos = m_pSyntax->SavePos();
+ bool bIsNumber;
+ CFX_ByteString word = m_pSyntax->GetNextWord(&bIsNumber);
+ if (word.IsEmpty())
+ return false;
+
+ if (!bIsNumber) {
+ m_pSyntax->RestorePos(SavedPos);
+ break;
+ }
+
+ FX_DWORD start_objnum = FXSYS_atoui(word);
+ if (start_objnum >= kMaxObjectNumber)
+ return false;
+
+ FX_DWORD count = m_pSyntax->GetDirectNum();
+ m_pSyntax->ToNextWord();
+ SavedPos = m_pSyntax->SavePos();
+ const int32_t recordsize = 20;
+
+ m_dwXrefStartObjNum = start_objnum;
+ if (!bSkip) {
+ std::vector<char> buf(1024 * recordsize + 1);
+ buf[1024 * recordsize] = '\0';
+
+ int32_t nBlocks = count / 1024 + 1;
+ for (int32_t block = 0; block < nBlocks; block++) {
+ int32_t block_size = block == nBlocks - 1 ? count % 1024 : 1024;
+ m_pSyntax->ReadBlock(reinterpret_cast<uint8_t*>(buf.data()),
+ block_size * recordsize);
+
+ for (int32_t i = 0; i < block_size; i++) {
+ FX_DWORD objnum = start_objnum + block * 1024 + i;
+ char* pEntry = &buf[i * recordsize];
+ if (pEntry[17] == 'f') {
+ m_ObjectInfo[objnum].pos = 0;
+ m_ObjectInfo[objnum].type = 0;
+ } else {
+ FX_FILESIZE offset = (FX_FILESIZE)FXSYS_atoi64(pEntry);
+ if (offset == 0) {
+ for (int32_t c = 0; c < 10; c++) {
+ if (!std::isdigit(pEntry[c]))
+ return false;
+ }
+ }
+
+ m_ObjectInfo[objnum].pos = offset;
+ int32_t version = FXSYS_atoi(pEntry + 11);
+ if (version >= 1)
+ m_bVersionUpdated = true;
+
+ m_ObjectInfo[objnum].gennum = version;
+ if (m_ObjectInfo[objnum].pos < m_pSyntax->m_FileLen)
+ m_SortedOffset.insert(m_ObjectInfo[objnum].pos);
+
+ m_ObjectInfo[objnum].type = 1;
+ }
+ }
+ }
+ }
+ m_pSyntax->RestorePos(SavedPos + count * recordsize);
+ }
+ return !streampos || LoadCrossRefV5(&streampos, FALSE);
+}
+
+FX_BOOL CPDF_Parser::LoadAllCrossRefV5(FX_FILESIZE xrefpos) {
+ if (!LoadCrossRefV5(&xrefpos, TRUE))
+ return FALSE;
+
+ std::set<FX_FILESIZE> seen_xrefpos;
+ while (xrefpos) {
+ seen_xrefpos.insert(xrefpos);
+ if (!LoadCrossRefV5(&xrefpos, FALSE))
+ return FALSE;
+
+ // Check for circular references.
+ if (pdfium::ContainsKey(seen_xrefpos, xrefpos))
+ return FALSE;
+ }
+ m_ObjectStreamMap.clear();
+ m_bXRefStream = TRUE;
+ return TRUE;
+}
+
+FX_BOOL CPDF_Parser::RebuildCrossRef() {
+ m_ObjectInfo.clear();
+ m_SortedOffset.clear();
+ if (m_pTrailer) {
+ m_pTrailer->Release();
+ m_pTrailer = nullptr;
+ }
+
+ ParserState state = ParserState::kDefault;
+
+ int32_t inside_index = 0;
+ FX_DWORD objnum = 0;
+ FX_DWORD gennum = 0;
+ int32_t depth = 0;
+
+ const FX_DWORD kBufferSize = 4096;
+ std::vector<uint8_t> buffer(kBufferSize);
+
+ FX_FILESIZE pos = m_pSyntax->m_HeaderOffset;
+ FX_FILESIZE start_pos = 0;
+ FX_FILESIZE start_pos1 = 0;
+ FX_FILESIZE last_obj = -1;
+ FX_FILESIZE last_xref = -1;
+ FX_FILESIZE last_trailer = -1;
+
+ while (pos < m_pSyntax->m_FileLen) {
+ const FX_FILESIZE saved_pos = pos;
+ bool bOverFlow = false;
+ FX_DWORD size =
+ std::min((FX_DWORD)(m_pSyntax->m_FileLen - pos), kBufferSize);
+ if (!m_pSyntax->m_pFileAccess->ReadBlock(buffer.data(), pos, size))
+ break;
+
+ for (FX_DWORD i = 0; i < size; i++) {
+ uint8_t byte = buffer[i];
+ switch (state) {
+ case ParserState::kDefault:
+ if (PDFCharIsWhitespace(byte)) {
+ state = ParserState::kWhitespace;
+ } else if (std::isdigit(byte)) {
+ --i;
+ state = ParserState::kWhitespace;
+ } else if (byte == '%') {
+ inside_index = 0;
+ state = ParserState::kComment;
+ } else if (byte == '(') {
+ state = ParserState::kString;
+ depth = 1;
+ } else if (byte == '<') {
+ inside_index = 1;
+ state = ParserState::kHexString;
+ } else if (byte == '\\') {
+ state = ParserState::kEscapedString;
+ } else if (byte == 't') {
+ state = ParserState::kTrailer;
+ inside_index = 1;
+ }
+ break;
+
+ case ParserState::kWhitespace:
+ if (std::isdigit(byte)) {
+ start_pos = pos + i;
+ state = ParserState::kObjNum;
+ objnum = FXSYS_toDecimalDigit(static_cast<FX_WCHAR>(byte));
+ } else if (byte == 't') {
+ state = ParserState::kTrailer;
+ inside_index = 1;
+ } else if (byte == 'x') {
+ state = ParserState::kXref;
+ inside_index = 1;
+ } else if (!PDFCharIsWhitespace(byte)) {
+ --i;
+ state = ParserState::kDefault;
+ }
+ break;
+
+ case ParserState::kObjNum:
+ if (std::isdigit(byte)) {
+ objnum =
+ objnum * 10 + FXSYS_toDecimalDigit(static_cast<FX_WCHAR>(byte));
+ } else if (PDFCharIsWhitespace(byte)) {
+ state = ParserState::kPostObjNum;
+ } else {
+ --i;
+ state = ParserState::kEndObj;
+ inside_index = 0;
+ }
+ break;
+
+ case ParserState::kPostObjNum:
+ if (std::isdigit(byte)) {
+ start_pos1 = pos + i;
+ state = ParserState::kGenNum;
+ gennum = FXSYS_toDecimalDigit(static_cast<FX_WCHAR>(byte));
+ } else if (byte == 't') {
+ state = ParserState::kTrailer;
+ inside_index = 1;
+ } else if (!PDFCharIsWhitespace(byte)) {
+ --i;
+ state = ParserState::kDefault;
+ }
+ break;
+
+ case ParserState::kGenNum:
+ if (std::isdigit(byte)) {
+ gennum =
+ gennum * 10 + FXSYS_toDecimalDigit(static_cast<FX_WCHAR>(byte));
+ } else if (PDFCharIsWhitespace(byte)) {
+ state = ParserState::kPostGenNum;
+ } else {
+ --i;
+ state = ParserState::kDefault;
+ }
+ break;
+
+ case ParserState::kPostGenNum:
+ if (byte == 'o') {
+ state = ParserState::kBeginObj;
+ inside_index = 1;
+ } else if (std::isdigit(byte)) {
+ objnum = gennum;
+ gennum = FXSYS_toDecimalDigit(static_cast<FX_WCHAR>(byte));
+ start_pos = start_pos1;
+ start_pos1 = pos + i;
+ state = ParserState::kGenNum;
+ } else if (byte == 't') {
+ state = ParserState::kTrailer;
+ inside_index = 1;
+ } else if (!PDFCharIsWhitespace(byte)) {
+ --i;
+ state = ParserState::kDefault;
+ }
+ break;
+
+ case ParserState::kBeginObj:
+ switch (inside_index) {
+ case 1:
+ if (byte != 'b') {
+ --i;
+ state = ParserState::kDefault;
+ } else {
+ inside_index++;
+ }
+ break;
+ case 2:
+ if (byte != 'j') {
+ --i;
+ state = ParserState::kDefault;
+ } else {
+ inside_index++;
+ }
+ break;
+ case 3:
+ if (PDFCharIsWhitespace(byte) || PDFCharIsDelimiter(byte)) {
+ FX_FILESIZE obj_pos = start_pos - m_pSyntax->m_HeaderOffset;
+ m_SortedOffset.insert(obj_pos);
+ last_obj = start_pos;
+ FX_FILESIZE obj_end = 0;
+ CPDF_Object* pObject = ParseIndirectObjectAtByStrict(
+ m_pDocument, obj_pos, objnum, &obj_end);
+ if (CPDF_Stream* pStream = ToStream(pObject)) {
+ if (CPDF_Dictionary* pDict = pStream->GetDict()) {
+ if ((pDict->KeyExist("Type")) &&
+ (pDict->GetStringBy("Type") == "XRef" &&
+ pDict->KeyExist("Size"))) {
+ CPDF_Object* pRoot = pDict->GetElement("Root");
+ if (pRoot && pRoot->GetDict() &&
+ pRoot->GetDict()->GetElement("Pages")) {
+ if (m_pTrailer)
+ m_pTrailer->Release();
+ m_pTrailer = ToDictionary(pDict->Clone());
+ }
+ }
+ }
+ }
+
+ FX_FILESIZE offset = 0;
+ m_pSyntax->RestorePos(obj_pos);
+ offset = m_pSyntax->FindTag("obj", 0);
+ if (offset == -1)
+ offset = 0;
+ else
+ offset += 3;
+
+ FX_FILESIZE nLen = obj_end - obj_pos - offset;
+ if ((FX_DWORD)nLen > size - i) {
+ pos = obj_end + m_pSyntax->m_HeaderOffset;
+ bOverFlow = true;
+ } else {
+ i += (FX_DWORD)nLen;
+ }
+
+ if (!m_ObjectInfo.empty() && IsValidObjectNumber(objnum) &&
+ m_ObjectInfo[objnum].pos) {
+ if (pObject) {
+ FX_DWORD oldgen = GetObjectGenNum(objnum);
+ m_ObjectInfo[objnum].pos = obj_pos;
+ m_ObjectInfo[objnum].gennum = gennum;
+ if (oldgen != gennum)
+ m_bVersionUpdated = true;
+ }
+ } else {
+ m_ObjectInfo[objnum].pos = obj_pos;
+ m_ObjectInfo[objnum].type = 1;
+ m_ObjectInfo[objnum].gennum = gennum;
+ }
+
+ if (pObject)
+ pObject->Release();
+ }
+ --i;
+ state = ParserState::kDefault;
+ break;
+ }
+ break;
+
+ case ParserState::kTrailer:
+ if (inside_index == 7) {
+ if (PDFCharIsWhitespace(byte) || PDFCharIsDelimiter(byte)) {
+ last_trailer = pos + i - 7;
+ m_pSyntax->RestorePos(pos + i - m_pSyntax->m_HeaderOffset);
+
+ CPDF_Object* pObj = m_pSyntax->GetObject(m_pDocument, 0, 0, true);
+ if (pObj) {
+ if (!pObj->IsDictionary() && !pObj->AsStream()) {
+ pObj->Release();
+ } else {
+ CPDF_Stream* pStream = pObj->AsStream();
+ if (CPDF_Dictionary* pTrailer =
+ pStream ? pStream->GetDict() : pObj->AsDictionary()) {
+ if (m_pTrailer) {
+ CPDF_Object* pRoot = pTrailer->GetElement("Root");
+ CPDF_Reference* pRef = ToReference(pRoot);
+ if (!pRoot ||
+ (pRef && IsValidObjectNumber(pRef->GetRefObjNum()) &&
+ m_ObjectInfo[pRef->GetRefObjNum()].pos != 0)) {
+ auto it = pTrailer->begin();
+ while (it != pTrailer->end()) {
+ const CFX_ByteString& key = it->first;
+ CPDF_Object* pElement = it->second;
+ ++it;
+ FX_DWORD dwObjNum =
+ pElement ? pElement->GetObjNum() : 0;
+ if (dwObjNum) {
+ m_pTrailer->SetAtReference(key, m_pDocument,
+ dwObjNum);
+ } else {
+ m_pTrailer->SetAt(key, pElement->Clone());
+ }
+ }
+ }
+ pObj->Release();
+ } else {
+ if (pObj->IsStream()) {
+ m_pTrailer = ToDictionary(pTrailer->Clone());
+ pObj->Release();
+ } else {
+ m_pTrailer = pTrailer;
+ }
+
+ FX_FILESIZE dwSavePos = m_pSyntax->SavePos();
+ CFX_ByteString strWord = m_pSyntax->GetKeyword();
+ if (!strWord.Compare("startxref")) {
+ bool bNumber;
+ CFX_ByteString bsOffset =
+ m_pSyntax->GetNextWord(&bNumber);
+ if (bNumber)
+ m_LastXRefOffset = FXSYS_atoi(bsOffset);
+ }
+ m_pSyntax->RestorePos(dwSavePos);
+ }
+ } else {
+ pObj->Release();
+ }
+ }
+ }
+ }
+ --i;
+ state = ParserState::kDefault;
+ } else if (byte == "trailer"[inside_index]) {
+ inside_index++;
+ } else {
+ --i;
+ state = ParserState::kDefault;
+ }
+ break;
+
+ case ParserState::kXref:
+ if (inside_index == 4) {
+ last_xref = pos + i - 4;
+ state = ParserState::kWhitespace;
+ } else if (byte == "xref"[inside_index]) {
+ inside_index++;
+ } else {
+ --i;
+ state = ParserState::kDefault;
+ }
+ break;
+
+ case ParserState::kComment:
+ if (PDFCharIsLineEnding(byte))
+ state = ParserState::kDefault;
+ break;
+
+ case ParserState::kString:
+ if (byte == ')') {
+ if (depth > 0)
+ depth--;
+ } else if (byte == '(') {
+ depth++;
+ }
+
+ if (!depth)
+ state = ParserState::kDefault;
+ break;
+
+ case ParserState::kHexString:
+ if (byte == '>' || (byte == '<' && inside_index == 1))
+ state = ParserState::kDefault;
+ inside_index = 0;
+ break;
+
+ case ParserState::kEscapedString:
+ if (PDFCharIsDelimiter(byte) || PDFCharIsWhitespace(byte)) {
+ --i;
+ state = ParserState::kDefault;
+ }
+ break;
+
+ case ParserState::kEndObj:
+ if (PDFCharIsWhitespace(byte)) {
+ state = ParserState::kDefault;
+ } else if (byte == '%' || byte == '(' || byte == '<' ||
+ byte == '\\') {
+ state = ParserState::kDefault;
+ --i;
+ } else if (inside_index == 6) {
+ state = ParserState::kDefault;
+ --i;
+ } else if (byte == "endobj"[inside_index]) {
+ inside_index++;
+ }
+ break;
+ }
+
+ if (bOverFlow) {
+ size = 0;
+ break;
+ }
+ }
+ pos += size;
+
+ // If the position has not changed at all in a loop iteration, then break
+ // out to prevent infinite looping.
+ if (pos == saved_pos)
+ break;
+ }
+
+ if (last_xref != -1 && last_xref > last_obj)
+ last_trailer = last_xref;
+ else if (last_trailer == -1 || last_xref < last_obj)
+ last_trailer = m_pSyntax->m_FileLen;
+
+ m_SortedOffset.insert(last_trailer - m_pSyntax->m_HeaderOffset);
+ return m_pTrailer && !m_ObjectInfo.empty();
+}
+
+FX_BOOL CPDF_Parser::LoadCrossRefV5(FX_FILESIZE* pos, FX_BOOL bMainXRef) {
+ CPDF_Object* pObject = ParseIndirectObjectAt(m_pDocument, *pos, 0);
+ if (!pObject)
+ return FALSE;
+
+ if (m_pDocument) {
+ FX_BOOL bInserted = FALSE;
+ CPDF_Dictionary* pDict = m_pDocument->GetRoot();
+ if (!pDict || pDict->GetObjNum() != pObject->m_ObjNum) {
+ bInserted = m_pDocument->InsertIndirectObject(pObject->m_ObjNum, pObject);
+ } else {
+ if (pObject->IsStream())
+ pObject->Release();
+ }
+
+ if (!bInserted)
+ return FALSE;
+ }
+
+ CPDF_Stream* pStream = pObject->AsStream();
+ if (!pStream)
+ return FALSE;
+
+ *pos = pStream->GetDict()->GetIntegerBy("Prev");
+ int32_t size = pStream->GetDict()->GetIntegerBy("Size");
+ if (size < 0) {
+ pStream->Release();
+ return FALSE;
+ }
+
+ if (bMainXRef) {
+ m_pTrailer = ToDictionary(pStream->GetDict()->Clone());
+ ShrinkObjectMap(size);
+ for (auto& it : m_ObjectInfo)
+ it.second.type = 0;
+ } else {
+ m_Trailers.Add(ToDictionary(pStream->GetDict()->Clone()));
+ }
+
+ std::vector<std::pair<int32_t, int32_t>> arrIndex;
+ CPDF_Array* pArray = pStream->GetDict()->GetArrayBy("Index");
+ if (pArray) {
+ FX_DWORD nPairSize = pArray->GetCount() / 2;
+ for (FX_DWORD i = 0; i < nPairSize; i++) {
+ CPDF_Object* pStartNumObj = pArray->GetElement(i * 2);
+ CPDF_Object* pCountObj = pArray->GetElement(i * 2 + 1);
+
+ if (ToNumber(pStartNumObj) && ToNumber(pCountObj)) {
+ int nStartNum = pStartNumObj->GetInteger();
+ int nCount = pCountObj->GetInteger();
+ if (nStartNum >= 0 && nCount > 0)
+ arrIndex.push_back(std::make_pair(nStartNum, nCount));
+ }
+ }
+ }
+
+ if (arrIndex.size() == 0)
+ arrIndex.push_back(std::make_pair(0, size));
+
+ pArray = pStream->GetDict()->GetArrayBy("W");
+ if (!pArray) {
+ pStream->Release();
+ return FALSE;
+ }
+
+ CFX_DWordArray WidthArray;
+ FX_SAFE_DWORD dwAccWidth = 0;
+ for (FX_DWORD i = 0; i < pArray->GetCount(); i++) {
+ WidthArray.Add(pArray->GetIntegerAt(i));
+ dwAccWidth += WidthArray[i];
+ }
+
+ if (!dwAccWidth.IsValid() || WidthArray.GetSize() < 3) {
+ pStream->Release();
+ return FALSE;
+ }
+
+ FX_DWORD totalWidth = dwAccWidth.ValueOrDie();
+ CPDF_StreamAcc acc;
+ acc.LoadAllData(pStream);
+
+ const uint8_t* pData = acc.GetData();
+ FX_DWORD dwTotalSize = acc.GetSize();
+ FX_DWORD segindex = 0;
+ for (FX_DWORD i = 0; i < arrIndex.size(); i++) {
+ int32_t startnum = arrIndex[i].first;
+ if (startnum < 0)
+ continue;
+
+ m_dwXrefStartObjNum =
+ pdfium::base::checked_cast<FX_DWORD, int32_t>(startnum);
+ FX_DWORD count =
+ pdfium::base::checked_cast<FX_DWORD, int32_t>(arrIndex[i].second);
+ FX_SAFE_DWORD dwCaculatedSize = segindex;
+ dwCaculatedSize += count;
+ dwCaculatedSize *= totalWidth;
+ if (!dwCaculatedSize.IsValid() ||
+ dwCaculatedSize.ValueOrDie() > dwTotalSize) {
+ continue;
+ }
+
+ const uint8_t* segstart = pData + segindex * totalWidth;
+ FX_SAFE_DWORD dwMaxObjNum = startnum;
+ dwMaxObjNum += count;
+ FX_DWORD dwV5Size = m_ObjectInfo.empty() ? 0 : GetLastObjNum() + 1;
+ if (!dwMaxObjNum.IsValid() || dwMaxObjNum.ValueOrDie() > dwV5Size)
+ continue;
+
+ for (FX_DWORD j = 0; j < count; j++) {
+ int32_t type = 1;
+ const uint8_t* entrystart = segstart + j * totalWidth;
+ if (WidthArray[0])
+ type = GetVarInt(entrystart, WidthArray[0]);
+
+ if (GetObjectType(startnum + j) == 255) {
+ FX_FILESIZE offset =
+ GetVarInt(entrystart + WidthArray[0], WidthArray[1]);
+ m_ObjectInfo[startnum + j].pos = offset;
+ m_SortedOffset.insert(offset);
+ continue;
+ }
+
+ if (GetObjectType(startnum + j))
+ continue;
+
+ m_ObjectInfo[startnum + j].type = type;
+ if (type == 0) {
+ m_ObjectInfo[startnum + j].pos = 0;
+ } else {
+ FX_FILESIZE offset =
+ GetVarInt(entrystart + WidthArray[0], WidthArray[1]);
+ m_ObjectInfo[startnum + j].pos = offset;
+ if (type == 1) {
+ m_SortedOffset.insert(offset);
+ } else {
+ if (offset < 0 || !IsValidObjectNumber(offset)) {
+ pStream->Release();
+ return FALSE;
+ }
+ m_ObjectInfo[offset].type = 255;
+ }
+ }
+ }
+ segindex += count;
+ }
+ pStream->Release();
+ return TRUE;
+}
+
+CPDF_Array* CPDF_Parser::GetIDArray() {
+ CPDF_Object* pID = m_pTrailer ? m_pTrailer->GetElement("ID") : nullptr;
+ if (!pID)
+ return nullptr;
+
+ if (CPDF_Reference* pRef = pID->AsReference()) {
+ pID = ParseIndirectObject(nullptr, pRef->GetRefObjNum());
+ m_pTrailer->SetAt("ID", pID);
+ }
+ return ToArray(pID);
+}
+
+FX_DWORD CPDF_Parser::GetRootObjNum() {
+ CPDF_Reference* pRef =
+ ToReference(m_pTrailer ? m_pTrailer->GetElement("Root") : nullptr);
+ return pRef ? pRef->GetRefObjNum() : 0;
+}
+
+FX_DWORD CPDF_Parser::GetInfoObjNum() {
+ CPDF_Reference* pRef =
+ ToReference(m_pTrailer ? m_pTrailer->GetElement("Info") : nullptr);
+ return pRef ? pRef->GetRefObjNum() : 0;
+}
+
+FX_BOOL CPDF_Parser::IsFormStream(FX_DWORD objnum, FX_BOOL& bForm) {
+ bForm = FALSE;
+ if (!IsValidObjectNumber(objnum))
+ return TRUE;
+
+ if (GetObjectType(objnum) == 0)
+ return TRUE;
+
+ if (GetObjectType(objnum) == 2)
+ return TRUE;
+
+ FX_FILESIZE pos = m_ObjectInfo[objnum].pos;
+ auto it = m_SortedOffset.find(pos);
+ if (it == m_SortedOffset.end())
+ return TRUE;
+
+ if (++it == m_SortedOffset.end())
+ return FALSE;
+
+ FX_FILESIZE size = *it - pos;
+ FX_FILESIZE SavedPos = m_pSyntax->SavePos();
+ m_pSyntax->RestorePos(pos);
+
+ const char kFormStream[] = "/Form\0stream";
+ const CFX_ByteStringC kFormStreamStr(kFormStream, sizeof(kFormStream) - 1);
+ bForm = m_pSyntax->SearchMultiWord(kFormStreamStr, TRUE, size) == 0;
+ m_pSyntax->RestorePos(SavedPos);
+ return TRUE;
+}
+
+CPDF_Object* CPDF_Parser::ParseIndirectObject(
+ CPDF_IndirectObjectHolder* pObjList,
+ FX_DWORD objnum) {
+ if (!IsValidObjectNumber(objnum))
+ return nullptr;
+
+ // Prevent circular parsing the same object.
+ if (pdfium::ContainsKey(m_ParsingObjNums, objnum))
+ return nullptr;
+
+ pdfium::ScopedSetInsertion<FX_DWORD> local_insert(&m_ParsingObjNums, objnum);
+ if (GetObjectType(objnum) == 1 || GetObjectType(objnum) == 255) {
+ FX_FILESIZE pos = m_ObjectInfo[objnum].pos;
+ if (pos <= 0)
+ return nullptr;
+ return ParseIndirectObjectAt(pObjList, pos, objnum);
+ }
+ if (GetObjectType(objnum) != 2)
+ return nullptr;
+
+ CPDF_StreamAcc* pObjStream = GetObjectStream(m_ObjectInfo[objnum].pos);
+ if (!pObjStream)
+ return nullptr;
+
+ ScopedFileStream file(FX_CreateMemoryStream(
+ (uint8_t*)pObjStream->GetData(), (size_t)pObjStream->GetSize(), FALSE));
+ CPDF_SyntaxParser syntax;
+ syntax.InitParser(file.get(), 0);
+ const int32_t offset = GetStreamFirst(pObjStream);
+
+ // Read object numbers from |pObjStream| into a cache.
+ if (!pdfium::ContainsKey(m_ObjCache, pObjStream)) {
+ for (int32_t i = GetStreamNCount(pObjStream); i > 0; --i) {
+ FX_DWORD thisnum = syntax.GetDirectNum();
+ FX_DWORD thisoff = syntax.GetDirectNum();
+ m_ObjCache[pObjStream][thisnum] = thisoff;
+ }
+ }
+
+ const auto it = m_ObjCache[pObjStream].find(objnum);
+ if (it == m_ObjCache[pObjStream].end())
+ return nullptr;
+
+ syntax.RestorePos(offset + it->second);
+ return syntax.GetObject(pObjList, 0, 0, true);
+}
+
+CPDF_StreamAcc* CPDF_Parser::GetObjectStream(FX_DWORD objnum) {
+ auto it = m_ObjectStreamMap.find(objnum);
+ if (it != m_ObjectStreamMap.end())
+ return it->second.get();
+
+ if (!m_pDocument)
+ return nullptr;
+
+ const CPDF_Stream* pStream = ToStream(m_pDocument->GetIndirectObject(objnum));
+ if (!pStream)
+ return nullptr;
+
+ CPDF_StreamAcc* pStreamAcc = new CPDF_StreamAcc;
+ pStreamAcc->LoadAllData(pStream);
+ m_ObjectStreamMap[objnum].reset(pStreamAcc);
+ return pStreamAcc;
+}
+
+FX_FILESIZE CPDF_Parser::GetObjectSize(FX_DWORD objnum) const {
+ if (!IsValidObjectNumber(objnum))
+ return 0;
+
+ if (GetObjectType(objnum) == 2)
+ objnum = GetObjectPositionOrZero(objnum);
+
+ if (GetObjectType(objnum) != 1 && GetObjectType(objnum) != 255)
+ return 0;
+
+ FX_FILESIZE offset = GetObjectPositionOrZero(objnum);
+ if (offset == 0)
+ return 0;
+
+ auto it = m_SortedOffset.find(offset);
+ if (it == m_SortedOffset.end() || ++it == m_SortedOffset.end())
+ return 0;
+
+ return *it - offset;
+}
+
+void CPDF_Parser::GetIndirectBinary(FX_DWORD objnum,
+ uint8_t*& pBuffer,
+ FX_DWORD& size) {
+ pBuffer = nullptr;
+ size = 0;
+ if (!IsValidObjectNumber(objnum))
+ return;
+
+ if (GetObjectType(objnum) == 2) {
+ CPDF_StreamAcc* pObjStream = GetObjectStream(m_ObjectInfo[objnum].pos);
+ if (!pObjStream)
+ return;
+
+ int32_t offset = GetStreamFirst(pObjStream);
+ const uint8_t* pData = pObjStream->GetData();
+ FX_DWORD totalsize = pObjStream->GetSize();
+ ScopedFileStream file(
+ FX_CreateMemoryStream((uint8_t*)pData, (size_t)totalsize, FALSE));
+
+ CPDF_SyntaxParser syntax;
+ syntax.InitParser(file.get(), 0);
+ for (int i = GetStreamNCount(pObjStream); i > 0; --i) {
+ FX_DWORD thisnum = syntax.GetDirectNum();
+ FX_DWORD thisoff = syntax.GetDirectNum();
+ if (thisnum != objnum)
+ continue;
+
+ if (i == 1) {
+ size = totalsize - (thisoff + offset);
+ } else {
+ syntax.GetDirectNum(); // Skip nextnum.
+ FX_DWORD nextoff = syntax.GetDirectNum();
+ size = nextoff - thisoff;
+ }
+
+ pBuffer = FX_Alloc(uint8_t, size);
+ FXSYS_memcpy(pBuffer, pData + thisoff + offset, size);
+ return;
+ }
+ return;
+ }
+
+ if (GetObjectType(objnum) != 1)
+ return;
+
+ FX_FILESIZE pos = m_ObjectInfo[objnum].pos;
+ if (pos == 0)
+ return;
+
+ FX_FILESIZE SavedPos = m_pSyntax->SavePos();
+ m_pSyntax->RestorePos(pos);
+
+ bool bIsNumber;
+ CFX_ByteString word = m_pSyntax->GetNextWord(&bIsNumber);
+ if (!bIsNumber) {
+ m_pSyntax->RestorePos(SavedPos);
+ return;
+ }
+
+ FX_DWORD parser_objnum = FXSYS_atoui(word);
+ if (parser_objnum && parser_objnum != objnum) {
+ m_pSyntax->RestorePos(SavedPos);
+ return;
+ }
+
+ word = m_pSyntax->GetNextWord(&bIsNumber);
+ if (!bIsNumber) {
+ m_pSyntax->RestorePos(SavedPos);
+ return;
+ }
+
+ if (m_pSyntax->GetKeyword() != "obj") {
+ m_pSyntax->RestorePos(SavedPos);
+ return;
+ }
+
+ auto it = m_SortedOffset.find(pos);
+ if (it == m_SortedOffset.end() || ++it == m_SortedOffset.end()) {
+ m_pSyntax->RestorePos(SavedPos);
+ return;
+ }
+
+ FX_FILESIZE nextoff = *it;
+ FX_BOOL bNextOffValid = FALSE;
+ if (nextoff != pos) {
+ m_pSyntax->RestorePos(nextoff);
+ word = m_pSyntax->GetNextWord(&bIsNumber);
+ if (word == "xref") {
+ bNextOffValid = TRUE;
+ } else if (bIsNumber) {
+ word = m_pSyntax->GetNextWord(&bIsNumber);
+ if (bIsNumber && m_pSyntax->GetKeyword() == "obj") {
+ bNextOffValid = TRUE;
+ }
+ }
+ }
+
+ if (!bNextOffValid) {
+ m_pSyntax->RestorePos(pos);
+ while (1) {
+ if (m_pSyntax->GetKeyword() == "endobj")
+ break;
+
+ if (m_pSyntax->SavePos() == m_pSyntax->m_FileLen)
+ break;
+ }
+ nextoff = m_pSyntax->SavePos();
+ }
+
+ size = (FX_DWORD)(nextoff - pos);
+ pBuffer = FX_Alloc(uint8_t, size);
+ m_pSyntax->RestorePos(pos);
+ m_pSyntax->ReadBlock(pBuffer, size);
+ m_pSyntax->RestorePos(SavedPos);
+}
+
+CPDF_Object* CPDF_Parser::ParseIndirectObjectAt(
+ CPDF_IndirectObjectHolder* pObjList,
+ FX_FILESIZE pos,
+ FX_DWORD objnum) {
+ FX_FILESIZE SavedPos = m_pSyntax->SavePos();
+ m_pSyntax->RestorePos(pos);
+ bool bIsNumber;
+ CFX_ByteString word = m_pSyntax->GetNextWord(&bIsNumber);
+ if (!bIsNumber) {
+ m_pSyntax->RestorePos(SavedPos);
+ return nullptr;
+ }
+
+ FX_FILESIZE objOffset = m_pSyntax->SavePos();
+ objOffset -= word.GetLength();
+ FX_DWORD parser_objnum = FXSYS_atoui(word);
+ if (objnum && parser_objnum != objnum) {
+ m_pSyntax->RestorePos(SavedPos);
+ return nullptr;
+ }
+
+ word = m_pSyntax->GetNextWord(&bIsNumber);
+ if (!bIsNumber) {
+ m_pSyntax->RestorePos(SavedPos);
+ return nullptr;
+ }
+
+ FX_DWORD parser_gennum = FXSYS_atoui(word);
+ if (m_pSyntax->GetKeyword() != "obj") {
+ m_pSyntax->RestorePos(SavedPos);
+ return nullptr;
+ }
+
+ CPDF_Object* pObj =
+ m_pSyntax->GetObject(pObjList, objnum, parser_gennum, true);
+ m_pSyntax->SavePos();
+
+ CFX_ByteString bsWord = m_pSyntax->GetKeyword();
+ if (bsWord == "endobj")
+ m_pSyntax->SavePos();
+
+ m_pSyntax->RestorePos(SavedPos);
+ if (pObj) {
+ if (!objnum)
+ pObj->m_ObjNum = parser_objnum;
+ pObj->m_GenNum = parser_gennum;
+ }
+ return pObj;
+}
+
+CPDF_Object* CPDF_Parser::ParseIndirectObjectAtByStrict(
+ CPDF_IndirectObjectHolder* pObjList,
+ FX_FILESIZE pos,
+ FX_DWORD objnum,
+ FX_FILESIZE* pResultPos) {
+ FX_FILESIZE SavedPos = m_pSyntax->SavePos();
+ m_pSyntax->RestorePos(pos);
+
+ bool bIsNumber;
+ CFX_ByteString word = m_pSyntax->GetNextWord(&bIsNumber);
+ if (!bIsNumber) {
+ m_pSyntax->RestorePos(SavedPos);
+ return nullptr;
+ }
+
+ FX_DWORD parser_objnum = FXSYS_atoui(word);
+ if (objnum && parser_objnum != objnum) {
+ m_pSyntax->RestorePos(SavedPos);
+ return nullptr;
+ }
+
+ word = m_pSyntax->GetNextWord(&bIsNumber);
+ if (!bIsNumber) {
+ m_pSyntax->RestorePos(SavedPos);
+ return nullptr;
+ }
+
+ FX_DWORD gennum = FXSYS_atoui(word);
+ if (m_pSyntax->GetKeyword() != "obj") {
+ m_pSyntax->RestorePos(SavedPos);
+ return nullptr;
+ }
+
+ CPDF_Object* pObj = m_pSyntax->GetObjectByStrict(pObjList, objnum, gennum);
+ if (pResultPos)
+ *pResultPos = m_pSyntax->m_Pos;
+
+ m_pSyntax->RestorePos(SavedPos);
+ return pObj;
+}
+
+CPDF_Dictionary* CPDF_Parser::LoadTrailerV4() {
+ if (m_pSyntax->GetKeyword() != "trailer")
+ return nullptr;
+
+ std::unique_ptr<CPDF_Object, ReleaseDeleter<CPDF_Object>> pObj(
+ m_pSyntax->GetObject(m_pDocument, 0, 0, true));
+ if (!ToDictionary(pObj.get()))
+ return nullptr;
+ return pObj.release()->AsDictionary();
+}
+
+FX_DWORD CPDF_Parser::GetPermissions(FX_BOOL bCheckRevision) {
+ if (!m_pSecurityHandler)
+ return (FX_DWORD)-1;
+
+ FX_DWORD dwPermission = m_pSecurityHandler->GetPermissions();
+ if (m_pEncryptDict && m_pEncryptDict->GetStringBy("Filter") == "Standard") {
+ dwPermission &= 0xFFFFFFFC;
+ dwPermission |= 0xFFFFF0C0;
+ if (bCheckRevision && m_pEncryptDict->GetIntegerBy("R") == 2)
+ dwPermission &= 0xFFFFF0FF;
+ }
+ return dwPermission;
+}
+
+FX_BOOL CPDF_Parser::IsLinearizedFile(IFX_FileRead* pFileAccess,
+ FX_DWORD offset) {
+ m_pSyntax->InitParser(pFileAccess, offset);
+ m_pSyntax->RestorePos(m_pSyntax->m_HeaderOffset + 9);
+
+ FX_FILESIZE SavedPos = m_pSyntax->SavePos();
+ bool bIsNumber;
+ CFX_ByteString word = m_pSyntax->GetNextWord(&bIsNumber);
+ if (!bIsNumber)
+ return FALSE;
+
+ FX_DWORD objnum = FXSYS_atoui(word);
+ word = m_pSyntax->GetNextWord(&bIsNumber);
+ if (!bIsNumber)
+ return FALSE;
+
+ FX_DWORD gennum = FXSYS_atoui(word);
+ if (m_pSyntax->GetKeyword() != "obj") {
+ m_pSyntax->RestorePos(SavedPos);
+ return FALSE;
+ }
+
+ m_pLinearized = m_pSyntax->GetObject(nullptr, objnum, gennum, true);
+ if (!m_pLinearized)
+ return FALSE;
+
+ CPDF_Dictionary* pDict = m_pLinearized->GetDict();
+ if (pDict && pDict->GetElement("Linearized")) {
+ m_pSyntax->GetNextWord(nullptr);
+
+ CPDF_Object* pLen = pDict->GetElement("L");
+ if (!pLen) {
+ m_pLinearized->Release();
+ m_pLinearized = nullptr;
+ return FALSE;
+ }
+
+ if (pLen->GetInteger() != (int)pFileAccess->GetSize())
+ return FALSE;
+
+ if (CPDF_Number* pNo = ToNumber(pDict->GetElement("P")))
+ m_dwFirstPageNo = pNo->GetInteger();
+
+ if (CPDF_Number* pTable = ToNumber(pDict->GetElement("T")))
+ m_LastXRefOffset = pTable->GetInteger();
+
+ return TRUE;
+ }
+ m_pLinearized->Release();
+ m_pLinearized = nullptr;
+ return FALSE;
+}
+
+CPDF_Parser::Error CPDF_Parser::StartAsyncParse(IFX_FileRead* pFileAccess) {
+ CloseParser();
+ m_bXRefStream = FALSE;
+ m_LastXRefOffset = 0;
+ m_bOwnFileRead = true;
+
+ int32_t offset = GetHeaderOffset(pFileAccess);
+ if (offset == -1)
+ return FORMAT_ERROR;
+
+ if (!IsLinearizedFile(pFileAccess, offset)) {
+ m_pSyntax->m_pFileAccess = nullptr;
+ return StartParse(pFileAccess);
+ }
+
+ m_pDocument = new CPDF_Document(this);
+ FX_FILESIZE dwFirstXRefOffset = m_pSyntax->SavePos();
+
+ FX_BOOL bXRefRebuilt = FALSE;
+ FX_BOOL bLoadV4 = FALSE;
+ if (!(bLoadV4 = LoadCrossRefV4(dwFirstXRefOffset, 0, FALSE)) &&
+ !LoadCrossRefV5(&dwFirstXRefOffset, TRUE)) {
+ if (!RebuildCrossRef())
+ return FORMAT_ERROR;
+
+ bXRefRebuilt = TRUE;
+ m_LastXRefOffset = 0;
+ }
+
+ if (bLoadV4) {
+ m_pTrailer = LoadTrailerV4();
+ if (!m_pTrailer)
+ return SUCCESS;
+
+ int32_t xrefsize = GetDirectInteger(m_pTrailer, "Size");
+ if (xrefsize > 0)
+ ShrinkObjectMap(xrefsize);
+ }
+
+ Error eRet = SetEncryptHandler();
+ if (eRet != SUCCESS)
+ return eRet;
+
+ m_pDocument->LoadAsynDoc(m_pLinearized->GetDict());
+ if (!m_pDocument->GetRoot() || m_pDocument->GetPageCount() == 0) {
+ if (bXRefRebuilt)
+ return FORMAT_ERROR;
+
+ ReleaseEncryptHandler();
+ if (!RebuildCrossRef())
+ return FORMAT_ERROR;
+
+ eRet = SetEncryptHandler();
+ if (eRet != SUCCESS)
+ return eRet;
+
+ m_pDocument->LoadAsynDoc(m_pLinearized->GetDict());
+ if (!m_pDocument->GetRoot())
+ return FORMAT_ERROR;
+ }
+
+ if (GetRootObjNum() == 0) {
+ ReleaseEncryptHandler();
+ if (!RebuildCrossRef() || GetRootObjNum() == 0)
+ return FORMAT_ERROR;
+
+ eRet = SetEncryptHandler();
+ if (eRet != SUCCESS)
+ return eRet;
+ }
+
+ if (m_pSecurityHandler && m_pSecurityHandler->IsMetadataEncrypted()) {
+ if (CPDF_Reference* pMetadata =
+ ToReference(m_pDocument->GetRoot()->GetElement("Metadata")))
+ m_pSyntax->m_MetadataObjnum = pMetadata->GetRefObjNum();
+ }
+ return SUCCESS;
+}
+
+FX_BOOL CPDF_Parser::LoadLinearizedAllCrossRefV5(FX_FILESIZE xrefpos) {
+ if (!LoadCrossRefV5(&xrefpos, FALSE))
+ return FALSE;
+
+ std::set<FX_FILESIZE> seen_xrefpos;
+ while (xrefpos) {
+ seen_xrefpos.insert(xrefpos);
+ if (!LoadCrossRefV5(&xrefpos, FALSE))
+ return FALSE;
+
+ // Check for circular references.
+ if (pdfium::ContainsKey(seen_xrefpos, xrefpos))
+ return FALSE;
+ }
+ m_ObjectStreamMap.clear();
+ m_bXRefStream = TRUE;
+ return TRUE;
+}
+
+CPDF_Parser::Error CPDF_Parser::LoadLinearizedMainXRefTable() {
+ FX_DWORD dwSaveMetadataObjnum = m_pSyntax->m_MetadataObjnum;
+ m_pSyntax->m_MetadataObjnum = 0;
+ if (m_pTrailer) {
+ m_pTrailer->Release();
+ m_pTrailer = nullptr;
+ }
+
+ m_pSyntax->RestorePos(m_LastXRefOffset - m_pSyntax->m_HeaderOffset);
+ uint8_t ch = 0;
+ FX_DWORD dwCount = 0;
+ m_pSyntax->GetNextChar(ch);
+ while (PDFCharIsWhitespace(ch)) {
+ ++dwCount;
+ if (m_pSyntax->m_FileLen >=
+ (FX_FILESIZE)(m_pSyntax->SavePos() + m_pSyntax->m_HeaderOffset)) {
+ break;
+ }
+ m_pSyntax->GetNextChar(ch);
+ }
+ m_LastXRefOffset += dwCount;
+ m_ObjectStreamMap.clear();
+ m_ObjCache.clear();
+
+ if (!LoadLinearizedAllCrossRefV4(m_LastXRefOffset, m_dwXrefStartObjNum) &&
+ !LoadLinearizedAllCrossRefV5(m_LastXRefOffset)) {
+ m_LastXRefOffset = 0;
+ m_pSyntax->m_MetadataObjnum = dwSaveMetadataObjnum;
+ return FORMAT_ERROR;
+ }
+
+ m_pSyntax->m_MetadataObjnum = dwSaveMetadataObjnum;
+ return SUCCESS;
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_parser_embeddertest.cpp b/core/fpdfapi/fpdf_parser/cpdf_parser_embeddertest.cpp
new file mode 100644
index 0000000000..f427ec5d81
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_parser_embeddertest.cpp
@@ -0,0 +1,40 @@
+// Copyright 2015 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "testing/embedder_test.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+class CPDFParserEmbeddertest : public EmbedderTest {};
+
+TEST_F(CPDFParserEmbeddertest, LoadError_454695) {
+ // Test a dictionary with hex string instead of correct content.
+ // Verify that the defective pdf shouldn't be opened correctly.
+ EXPECT_FALSE(OpenDocument("bug_454695.pdf"));
+}
+
+TEST_F(CPDFParserEmbeddertest, Bug_481363) {
+ // Test colorspace object with malformed dictionary.
+ EXPECT_TRUE(OpenDocument("bug_481363.pdf"));
+ FPDF_PAGE page = LoadPage(0);
+ EXPECT_NE(nullptr, page);
+ UnloadPage(page);
+}
+
+TEST_F(CPDFParserEmbeddertest, Bug_544880) {
+ // Test self referencing /Pages object.
+ EXPECT_TRUE(OpenDocument("bug_544880.pdf"));
+ // Shouldn't crash. We don't check the return value here because we get the
+ // the count from the "/Count 1" in the testcase (at the time of writing)
+ // rather than the actual count (0).
+ (void)GetPageCount();
+}
+
+TEST_F(CPDFParserEmbeddertest, Feature_Linearized_Loading) {
+ EXPECT_TRUE(OpenDocument("feature_linearized_loading.pdf", true));
+}
+
+TEST_F(CPDFParserEmbeddertest, Bug_325) {
+ EXPECT_FALSE(OpenDocument("bug_325_a.pdf"));
+ EXPECT_FALSE(OpenDocument("bug_325_b.pdf"));
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_parser_unittest.cpp b/core/fpdfapi/fpdf_parser/cpdf_parser_unittest.cpp
new file mode 100644
index 0000000000..2d1dcd4b5c
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_parser_unittest.cpp
@@ -0,0 +1,202 @@
+// Copyright 2015 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <limits>
+#include <string>
+
+#include "core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h"
+#include "core/include/fpdfapi/cpdf_parser.h"
+#include "core/include/fxcrt/fx_ext.h"
+#include "core/include/fxcrt/fx_stream.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "testing/utils/path_service.h"
+
+// Provide a way to read test data from a buffer instead of a file.
+class CFX_TestBufferRead : public IFX_FileRead {
+ public:
+ CFX_TestBufferRead(const unsigned char* buffer_in, size_t buf_size)
+ : buffer_(buffer_in), total_size_(buf_size) {}
+
+ // IFX_Stream
+ void Release() override { delete this; }
+
+ // IFX_FileRead
+ FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override {
+ if (offset < 0 || offset + size > total_size_) {
+ return FALSE;
+ }
+
+ memcpy(buffer, buffer_ + offset, size);
+ return TRUE;
+ }
+ FX_FILESIZE GetSize() override { return (FX_FILESIZE)total_size_; };
+
+ protected:
+ const unsigned char* buffer_;
+ size_t total_size_;
+};
+
+// A wrapper class to help test member functions of CPDF_Parser.
+class CPDF_TestParser : public CPDF_Parser {
+ public:
+ CPDF_TestParser() {}
+ ~CPDF_TestParser() {}
+
+ // Setup reading from a file and initial states.
+ bool InitTestFromFile(const FX_CHAR* path) {
+ IFX_FileRead* pFileAccess = FX_CreateFileRead(path);
+ if (!pFileAccess)
+ return false;
+
+ // For the test file, the header is set at the beginning.
+ m_pSyntax->InitParser(pFileAccess, 0);
+ return true;
+ }
+
+ // Setup reading from a buffer and initial states.
+ bool InitTestFromBuffer(const unsigned char* buffer, size_t len) {
+ CFX_TestBufferRead* buffer_reader = new CFX_TestBufferRead(buffer, len);
+
+ // For the test file, the header is set at the beginning.
+ m_pSyntax->InitParser(buffer_reader, 0);
+ return true;
+ }
+
+ private:
+ // Add test cases here as private friend so that protected members in
+ // CPDF_Parser can be accessed by test cases.
+ // Need to access RebuildCrossRef.
+ FRIEND_TEST(cpdf_parser, RebuildCrossRefCorrectly);
+ FRIEND_TEST(cpdf_parser, RebuildCrossRefFailed);
+ // Need to access LoadCrossRefV4.
+ FRIEND_TEST(cpdf_parser, LoadCrossRefV4);
+};
+
+TEST(cpdf_parser, RebuildCrossRefCorrectly) {
+ CPDF_TestParser parser;
+ std::string test_file;
+ ASSERT_TRUE(PathService::GetTestFilePath("parser_rebuildxref_correct.pdf",
+ &test_file));
+ ASSERT_TRUE(parser.InitTestFromFile(test_file.c_str())) << test_file;
+
+ ASSERT_TRUE(parser.RebuildCrossRef());
+ const FX_FILESIZE offsets[] = {0, 15, 61, 154, 296, 374, 450};
+ const FX_WORD versions[] = {0, 0, 2, 4, 6, 8, 0};
+ for (size_t i = 0; i < FX_ArraySize(offsets); ++i)
+ EXPECT_EQ(offsets[i], parser.m_ObjectInfo[i].pos);
+ for (size_t i = 0; i < FX_ArraySize(versions); ++i)
+ EXPECT_EQ(versions[i], parser.m_ObjectInfo[i].gennum);
+}
+
+TEST(cpdf_parser, RebuildCrossRefFailed) {
+ CPDF_TestParser parser;
+ std::string test_file;
+ ASSERT_TRUE(PathService::GetTestFilePath(
+ "parser_rebuildxref_error_notrailer.pdf", &test_file));
+ ASSERT_TRUE(parser.InitTestFromFile(test_file.c_str())) << test_file;
+
+ ASSERT_FALSE(parser.RebuildCrossRef());
+}
+
+TEST(cpdf_parser, LoadCrossRefV4) {
+ {
+ const unsigned char xref_table[] =
+ "xref \n"
+ "0 6 \n"
+ "0000000003 65535 f \n"
+ "0000000017 00000 n \n"
+ "0000000081 00000 n \n"
+ "0000000000 00007 f \n"
+ "0000000331 00000 n \n"
+ "0000000409 00000 n \n"
+ "trail"; // Needed to end cross ref table reading.
+ CPDF_TestParser parser;
+ ASSERT_TRUE(
+ parser.InitTestFromBuffer(xref_table, FX_ArraySize(xref_table)));
+
+ ASSERT_TRUE(parser.LoadCrossRefV4(0, 0, FALSE));
+ const FX_FILESIZE offsets[] = {0, 17, 81, 0, 331, 409};
+ const uint8_t types[] = {0, 1, 1, 0, 1, 1};
+ for (size_t i = 0; i < FX_ArraySize(offsets); ++i) {
+ EXPECT_EQ(offsets[i], parser.m_ObjectInfo[i].pos);
+ EXPECT_EQ(types[i], parser.m_ObjectInfo[i].type);
+ }
+ }
+ {
+ const unsigned char xref_table[] =
+ "xref \n"
+ "0 1 \n"
+ "0000000000 65535 f \n"
+ "3 1 \n"
+ "0000025325 00000 n \n"
+ "8 2 \n"
+ "0000025518 00002 n \n"
+ "0000025635 00000 n \n"
+ "12 1 \n"
+ "0000025777 00000 n \n"
+ "trail"; // Needed to end cross ref table reading.
+ CPDF_TestParser parser;
+ ASSERT_TRUE(
+ parser.InitTestFromBuffer(xref_table, FX_ArraySize(xref_table)));
+
+ ASSERT_TRUE(parser.LoadCrossRefV4(0, 0, FALSE));
+ const FX_FILESIZE offsets[] = {0, 0, 0, 25325, 0, 0, 0,
+ 0, 25518, 25635, 0, 0, 25777};
+ const uint8_t types[] = {0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1};
+ for (size_t i = 0; i < FX_ArraySize(offsets); ++i) {
+ EXPECT_EQ(offsets[i], parser.m_ObjectInfo[i].pos);
+ EXPECT_EQ(types[i], parser.m_ObjectInfo[i].type);
+ }
+ }
+ {
+ const unsigned char xref_table[] =
+ "xref \n"
+ "0 1 \n"
+ "0000000000 65535 f \n"
+ "3 1 \n"
+ "0000025325 00000 n \n"
+ "8 2 \n"
+ "0000000000 65535 f \n"
+ "0000025635 00000 n \n"
+ "12 1 \n"
+ "0000025777 00000 n \n"
+ "trail"; // Needed to end cross ref table reading.
+ CPDF_TestParser parser;
+ ASSERT_TRUE(
+ parser.InitTestFromBuffer(xref_table, FX_ArraySize(xref_table)));
+
+ ASSERT_TRUE(parser.LoadCrossRefV4(0, 0, FALSE));
+ const FX_FILESIZE offsets[] = {0, 0, 0, 25325, 0, 0, 0,
+ 0, 0, 25635, 0, 0, 25777};
+ const uint8_t types[] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1};
+ for (size_t i = 0; i < FX_ArraySize(offsets); ++i) {
+ EXPECT_EQ(offsets[i], parser.m_ObjectInfo[i].pos);
+ EXPECT_EQ(types[i], parser.m_ObjectInfo[i].type);
+ }
+ }
+ {
+ const unsigned char xref_table[] =
+ "xref \n"
+ "0 7 \n"
+ "0000000002 65535 f \n"
+ "0000000023 00000 n \n"
+ "0000000003 65535 f \n"
+ "0000000004 65535 f \n"
+ "0000000000 65535 f \n"
+ "0000000045 00000 n \n"
+ "0000000179 00000 n \n"
+ "trail"; // Needed to end cross ref table reading.
+ CPDF_TestParser parser;
+ ASSERT_TRUE(
+ parser.InitTestFromBuffer(xref_table, FX_ArraySize(xref_table)));
+
+ ASSERT_TRUE(parser.LoadCrossRefV4(0, 0, FALSE));
+ const FX_FILESIZE offsets[] = {0, 23, 0, 0, 0, 45, 179};
+ const uint8_t types[] = {0, 1, 0, 0, 0, 1, 1};
+ for (size_t i = 0; i < FX_ArraySize(offsets); ++i) {
+ EXPECT_EQ(offsets[i], parser.m_ObjectInfo[i].pos);
+ EXPECT_EQ(types[i], parser.m_ObjectInfo[i].type);
+ }
+ }
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_reference.cpp b/core/fpdfapi/fpdf_parser/cpdf_reference.cpp
new file mode 100644
index 0000000000..4aede7d07a
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_reference.cpp
@@ -0,0 +1,72 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/include/fpdfapi/cpdf_reference.h"
+
+#include "core/include/fpdfapi/cpdf_indirect_object_holder.h"
+
+CPDF_Reference::CPDF_Reference(CPDF_IndirectObjectHolder* pDoc, int objnum)
+ : m_pObjList(pDoc), m_RefObjNum(objnum) {}
+
+CPDF_Reference::~CPDF_Reference() {}
+
+CPDF_Object::Type CPDF_Reference::GetType() const {
+ return REFERENCE;
+}
+
+CFX_ByteString CPDF_Reference::GetString() const {
+ CPDF_Object* obj = SafeGetDirect();
+ return obj ? obj->GetString() : CFX_ByteString();
+}
+
+CFX_ByteStringC CPDF_Reference::GetConstString() const {
+ CPDF_Object* obj = SafeGetDirect();
+ return obj ? obj->GetConstString() : CFX_ByteStringC();
+}
+
+FX_FLOAT CPDF_Reference::GetNumber() const {
+ CPDF_Object* obj = SafeGetDirect();
+ return obj ? obj->GetNumber() : 0;
+}
+
+int CPDF_Reference::GetInteger() const {
+ CPDF_Object* obj = SafeGetDirect();
+ return obj ? obj->GetInteger() : 0;
+}
+
+CPDF_Dictionary* CPDF_Reference::GetDict() const {
+ CPDF_Object* obj = SafeGetDirect();
+ return obj ? obj->GetDict() : nullptr;
+}
+
+bool CPDF_Reference::IsReference() const {
+ return true;
+}
+
+CPDF_Reference* CPDF_Reference::AsReference() {
+ return this;
+}
+
+const CPDF_Reference* CPDF_Reference::AsReference() const {
+ return this;
+}
+
+CPDF_Object* CPDF_Reference::Clone(FX_BOOL bDirect) const {
+ if (bDirect) {
+ auto* pDirect = GetDirect();
+ return pDirect ? pDirect->Clone(TRUE) : nullptr;
+ }
+ return new CPDF_Reference(m_pObjList, m_RefObjNum);
+}
+
+void CPDF_Reference::SetRef(CPDF_IndirectObjectHolder* pDoc, FX_DWORD objnum) {
+ m_pObjList = pDoc;
+ m_RefObjNum = objnum;
+}
+
+CPDF_Object* CPDF_Reference::GetDirect() const {
+ return m_pObjList ? m_pObjList->GetIndirectObject(m_RefObjNum) : nullptr;
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_simple_parser.cpp b/core/fpdfapi/fpdf_parser/cpdf_simple_parser.cpp
new file mode 100644
index 0000000000..90d4e0b5ab
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_simple_parser.cpp
@@ -0,0 +1,170 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/include/fpdfapi/cpdf_simple_parser.h"
+
+#include "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h"
+
+CPDF_SimpleParser::CPDF_SimpleParser(const uint8_t* pData, FX_DWORD dwSize)
+ : m_pData(pData), m_dwSize(dwSize), m_dwCurPos(0) {}
+
+CPDF_SimpleParser::CPDF_SimpleParser(const CFX_ByteStringC& str)
+ : m_pData(str.GetPtr()), m_dwSize(str.GetLength()), m_dwCurPos(0) {}
+
+void CPDF_SimpleParser::ParseWord(const uint8_t*& pStart, FX_DWORD& dwSize) {
+ pStart = nullptr;
+ dwSize = 0;
+ uint8_t ch;
+ while (1) {
+ if (m_dwSize <= m_dwCurPos)
+ return;
+ ch = m_pData[m_dwCurPos++];
+ while (PDFCharIsWhitespace(ch)) {
+ if (m_dwSize <= m_dwCurPos)
+ return;
+ ch = m_pData[m_dwCurPos++];
+ }
+
+ if (ch != '%')
+ break;
+
+ while (1) {
+ if (m_dwSize <= m_dwCurPos)
+ return;
+ ch = m_pData[m_dwCurPos++];
+ if (PDFCharIsLineEnding(ch))
+ break;
+ }
+ }
+
+ FX_DWORD start_pos = m_dwCurPos - 1;
+ pStart = m_pData + start_pos;
+ if (PDFCharIsDelimiter(ch)) {
+ if (ch == '/') {
+ while (1) {
+ if (m_dwSize <= m_dwCurPos)
+ return;
+ ch = m_pData[m_dwCurPos++];
+ if (!PDFCharIsOther(ch) && !PDFCharIsNumeric(ch)) {
+ m_dwCurPos--;
+ dwSize = m_dwCurPos - start_pos;
+ return;
+ }
+ }
+ } else {
+ dwSize = 1;
+ if (ch == '<') {
+ if (m_dwSize <= m_dwCurPos)
+ return;
+ ch = m_pData[m_dwCurPos++];
+ if (ch == '<')
+ dwSize = 2;
+ else
+ m_dwCurPos--;
+ } else if (ch == '>') {
+ if (m_dwSize <= m_dwCurPos)
+ return;
+ ch = m_pData[m_dwCurPos++];
+ if (ch == '>')
+ dwSize = 2;
+ else
+ m_dwCurPos--;
+ }
+ }
+ return;
+ }
+
+ dwSize = 1;
+ while (1) {
+ if (m_dwSize <= m_dwCurPos)
+ return;
+ ch = m_pData[m_dwCurPos++];
+
+ if (PDFCharIsDelimiter(ch) || PDFCharIsWhitespace(ch)) {
+ m_dwCurPos--;
+ break;
+ }
+ dwSize++;
+ }
+}
+
+CFX_ByteStringC CPDF_SimpleParser::GetWord() {
+ const uint8_t* pStart;
+ FX_DWORD dwSize;
+ ParseWord(pStart, dwSize);
+ if (dwSize == 1 && pStart[0] == '<') {
+ while (m_dwCurPos < m_dwSize && m_pData[m_dwCurPos] != '>') {
+ m_dwCurPos++;
+ }
+ if (m_dwCurPos < m_dwSize) {
+ m_dwCurPos++;
+ }
+ return CFX_ByteStringC(pStart,
+ (FX_STRSIZE)(m_dwCurPos - (pStart - m_pData)));
+ }
+ if (dwSize == 1 && pStart[0] == '(') {
+ int level = 1;
+ while (m_dwCurPos < m_dwSize) {
+ if (m_pData[m_dwCurPos] == ')') {
+ level--;
+ if (level == 0) {
+ break;
+ }
+ }
+ if (m_pData[m_dwCurPos] == '\\') {
+ if (m_dwSize <= m_dwCurPos) {
+ break;
+ }
+ m_dwCurPos++;
+ } else if (m_pData[m_dwCurPos] == '(') {
+ level++;
+ }
+ if (m_dwSize <= m_dwCurPos) {
+ break;
+ }
+ m_dwCurPos++;
+ }
+ if (m_dwCurPos < m_dwSize) {
+ m_dwCurPos++;
+ }
+ return CFX_ByteStringC(pStart,
+ (FX_STRSIZE)(m_dwCurPos - (pStart - m_pData)));
+ }
+ return CFX_ByteStringC(pStart, dwSize);
+}
+
+bool CPDF_SimpleParser::FindTagParamFromStart(const CFX_ByteStringC& token,
+ int nParams) {
+ nParams++;
+ FX_DWORD* pBuf = FX_Alloc(FX_DWORD, nParams);
+ int buf_index = 0;
+ int buf_count = 0;
+ m_dwCurPos = 0;
+ while (1) {
+ pBuf[buf_index++] = m_dwCurPos;
+ if (buf_index == nParams) {
+ buf_index = 0;
+ }
+ buf_count++;
+ if (buf_count > nParams) {
+ buf_count = nParams;
+ }
+ CFX_ByteStringC word = GetWord();
+ if (word.IsEmpty()) {
+ FX_Free(pBuf);
+ return false;
+ }
+ if (word == token) {
+ if (buf_count < nParams) {
+ continue;
+ }
+ m_dwCurPos = pBuf[buf_index];
+ FX_Free(pBuf);
+ return true;
+ }
+ }
+ return false;
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_simple_parser_unittest.cpp b/core/fpdfapi/fpdf_parser/cpdf_simple_parser_unittest.cpp
new file mode 100644
index 0000000000..a9acff4155
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_simple_parser_unittest.cpp
@@ -0,0 +1,96 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "core/include/fpdfapi/cpdf_simple_parser.h"
+
+#include <string>
+
+#include "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h"
+#include "core/include/fxcrt/fx_basic.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "testing/test_support.h"
+
+TEST(SimpleParserTest, GetWord) {
+ pdfium::StrFuncTestData test_data[] = {
+ // Empty src string.
+ STR_IN_OUT_CASE("", ""),
+ // Content with whitespaces only.
+ STR_IN_OUT_CASE(" \t \0 \n", ""),
+ // Content with comments only.
+ STR_IN_OUT_CASE("%this is a test case\r\n%2nd line", ""),
+ // Mixed whitespaces and comments.
+ STR_IN_OUT_CASE(" \t \0%try()%haha\n %another line \aa", ""),
+ // Name.
+ STR_IN_OUT_CASE(" /Tester ", "/Tester"),
+ // String.
+ STR_IN_OUT_CASE("\t(nice day)!\n ", "(nice day)"),
+ // String with nested braces.
+ STR_IN_OUT_CASE("\t(It is a (long) day)!\n ", "(It is a (long) day)"),
+ // String with escaped chars.
+ STR_IN_OUT_CASE("\t(It is a \\(long\\) day!)hi\n ",
+ "(It is a \\(long\\) day!)"),
+ // Hex string.
+ STR_IN_OUT_CASE(" \n<4545acdfedertt>abc ", "<4545acdfedertt>"),
+ STR_IN_OUT_CASE(" \n<4545a<ed>ertt>abc ", "<4545a<ed>"),
+ // Dictionary.
+ STR_IN_OUT_CASE("<</oc 234 /color 2 3 R>>", "<<"),
+ STR_IN_OUT_CASE("\t\t<< /abc>>", "<<"),
+ // Handling ending delimiters.
+ STR_IN_OUT_CASE("> little bear", ">"),
+ STR_IN_OUT_CASE(") another bear", ")"), STR_IN_OUT_CASE(">> end ", ">>"),
+ // No ending delimiters.
+ STR_IN_OUT_CASE("(sdfgfgbcv", "(sdfgfgbcv"),
+ // Regular cases.
+ STR_IN_OUT_CASE("apple pear", "apple"),
+ STR_IN_OUT_CASE(" pi=3.1415 ", "pi=3.1415"),
+ STR_IN_OUT_CASE(" p t x c ", "p"), STR_IN_OUT_CASE(" pt\0xc ", "pt"),
+ STR_IN_OUT_CASE(" $^&&*\t\0sdff ", "$^&&*"),
+ STR_IN_OUT_CASE("\n\r+3.5656 -11.0", "+3.5656"),
+ };
+ for (size_t i = 0; i < FX_ArraySize(test_data); ++i) {
+ const pdfium::StrFuncTestData& data = test_data[i];
+ CPDF_SimpleParser parser(data.input, data.input_size);
+ CFX_ByteStringC word = parser.GetWord();
+ EXPECT_EQ(std::string(reinterpret_cast<const char*>(data.expected),
+ data.expected_size),
+ std::string(word.GetCStr(), word.GetLength()))
+ << " for case " << i;
+ }
+}
+
+TEST(SimpleParserTest, FindTagParamFromStart) {
+ struct FindTagTestStruct {
+ const unsigned char* input;
+ unsigned int input_size;
+ const char* token;
+ int num_params;
+ bool result;
+ unsigned int result_pos;
+ } test_data[] = {
+ // Empty strings.
+ STR_IN_TEST_CASE("", "Tj", 1, false, 0),
+ STR_IN_TEST_CASE("", "", 1, false, 0),
+ // Empty token.
+ STR_IN_TEST_CASE(" T j", "", 1, false, 5),
+ // No parameter.
+ STR_IN_TEST_CASE("Tj", "Tj", 1, false, 2),
+ STR_IN_TEST_CASE("(Tj", "Tj", 1, false, 3),
+ // Partial token match.
+ STR_IN_TEST_CASE("\r12\t34 56 78Tj", "Tj", 1, false, 15),
+ // Regular cases with various parameters.
+ STR_IN_TEST_CASE("\r\0abd Tj", "Tj", 1, true, 0),
+ STR_IN_TEST_CASE("12 4 Tj 3 46 Tj", "Tj", 1, true, 2),
+ STR_IN_TEST_CASE("er^ 2 (34) (5667) Tj", "Tj", 2, true, 5),
+ STR_IN_TEST_CASE("<344> (232)\t343.4\n12 45 Tj", "Tj", 3, true, 11),
+ STR_IN_TEST_CASE("1 2 3 4 5 6 7 8 cm", "cm", 6, true, 3),
+ };
+ for (size_t i = 0; i < FX_ArraySize(test_data); ++i) {
+ const FindTagTestStruct& data = test_data[i];
+ CPDF_SimpleParser parser(data.input, data.input_size);
+ EXPECT_EQ(data.result,
+ parser.FindTagParamFromStart(data.token, data.num_params))
+ << " for case " << i;
+ EXPECT_EQ(data.result_pos, parser.GetCurPos()) << " for case " << i;
+ }
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp b/core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp
new file mode 100644
index 0000000000..b73238997c
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.cpp
@@ -0,0 +1,342 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h"
+
+#include <time.h>
+
+#include "core/include/fdrm/fx_crypt.h"
+#include "core/include/fpdfapi/cpdf_parser.h"
+#include "core/include/fpdfapi/cpdf_simple_parser.h"
+#include "core/include/fpdfapi/ipdf_security_handler.h"
+
+IPDF_CryptoHandler::~IPDF_CryptoHandler() {}
+
+void IPDF_CryptoHandler::Decrypt(FX_DWORD objnum,
+ FX_DWORD gennum,
+ CFX_ByteString& str) {
+ CFX_BinaryBuf dest_buf;
+ void* context = DecryptStart(objnum, gennum);
+ DecryptStream(context, (const uint8_t*)str, str.GetLength(), dest_buf);
+ DecryptFinish(context, dest_buf);
+ str = dest_buf;
+}
+
+void CPDF_StandardCryptoHandler::CryptBlock(FX_BOOL bEncrypt,
+ FX_DWORD objnum,
+ FX_DWORD gennum,
+ const uint8_t* src_buf,
+ FX_DWORD src_size,
+ uint8_t* dest_buf,
+ FX_DWORD& dest_size) {
+ if (m_Cipher == FXCIPHER_NONE) {
+ FXSYS_memcpy(dest_buf, src_buf, src_size);
+ return;
+ }
+ uint8_t realkey[16];
+ int realkeylen = 16;
+ if (m_Cipher != FXCIPHER_AES || m_KeyLen != 32) {
+ uint8_t key1[32];
+ FXSYS_memcpy(key1, m_EncryptKey, m_KeyLen);
+ key1[m_KeyLen + 0] = (uint8_t)objnum;
+ key1[m_KeyLen + 1] = (uint8_t)(objnum >> 8);
+ key1[m_KeyLen + 2] = (uint8_t)(objnum >> 16);
+ key1[m_KeyLen + 3] = (uint8_t)gennum;
+ key1[m_KeyLen + 4] = (uint8_t)(gennum >> 8);
+ FXSYS_memcpy(key1 + m_KeyLen, &objnum, 3);
+ FXSYS_memcpy(key1 + m_KeyLen + 3, &gennum, 2);
+ if (m_Cipher == FXCIPHER_AES) {
+ FXSYS_memcpy(key1 + m_KeyLen + 5, "sAlT", 4);
+ }
+ CRYPT_MD5Generate(
+ key1, m_Cipher == FXCIPHER_AES ? m_KeyLen + 9 : m_KeyLen + 5, realkey);
+ realkeylen = m_KeyLen + 5;
+ if (realkeylen > 16) {
+ realkeylen = 16;
+ }
+ }
+ if (m_Cipher == FXCIPHER_AES) {
+ CRYPT_AESSetKey(m_pAESContext, 16, m_KeyLen == 32 ? m_EncryptKey : realkey,
+ m_KeyLen, bEncrypt);
+ if (bEncrypt) {
+ uint8_t iv[16];
+ for (int i = 0; i < 16; i++) {
+ iv[i] = (uint8_t)rand();
+ }
+ CRYPT_AESSetIV(m_pAESContext, iv);
+ FXSYS_memcpy(dest_buf, iv, 16);
+ int nblocks = src_size / 16;
+ CRYPT_AESEncrypt(m_pAESContext, dest_buf + 16, src_buf, nblocks * 16);
+ uint8_t padding[16];
+ FXSYS_memcpy(padding, src_buf + nblocks * 16, src_size % 16);
+ FXSYS_memset(padding + src_size % 16, 16 - src_size % 16,
+ 16 - src_size % 16);
+ CRYPT_AESEncrypt(m_pAESContext, dest_buf + nblocks * 16 + 16, padding,
+ 16);
+ dest_size = 32 + nblocks * 16;
+ } else {
+ CRYPT_AESSetIV(m_pAESContext, src_buf);
+ CRYPT_AESDecrypt(m_pAESContext, dest_buf, src_buf + 16, src_size - 16);
+ dest_size = src_size - 16;
+ dest_size -= dest_buf[dest_size - 1];
+ }
+ } else {
+ ASSERT(dest_size == src_size);
+ if (dest_buf != src_buf) {
+ FXSYS_memcpy(dest_buf, src_buf, src_size);
+ }
+ CRYPT_ArcFourCryptBlock(dest_buf, dest_size, realkey, realkeylen);
+ }
+}
+
+struct AESCryptContext {
+ uint8_t m_Context[2048];
+ FX_BOOL m_bIV;
+ uint8_t m_Block[16];
+ FX_DWORD m_BlockOffset;
+};
+
+void* CPDF_StandardCryptoHandler::CryptStart(FX_DWORD objnum,
+ FX_DWORD gennum,
+ FX_BOOL bEncrypt) {
+ if (m_Cipher == FXCIPHER_NONE) {
+ return this;
+ }
+ if (m_Cipher == FXCIPHER_AES && m_KeyLen == 32) {
+ AESCryptContext* pContext = FX_Alloc(AESCryptContext, 1);
+ pContext->m_bIV = TRUE;
+ pContext->m_BlockOffset = 0;
+ CRYPT_AESSetKey(pContext->m_Context, 16, m_EncryptKey, 32, bEncrypt);
+ if (bEncrypt) {
+ for (int i = 0; i < 16; i++) {
+ pContext->m_Block[i] = (uint8_t)rand();
+ }
+ CRYPT_AESSetIV(pContext->m_Context, pContext->m_Block);
+ }
+ return pContext;
+ }
+ uint8_t key1[48];
+ FXSYS_memcpy(key1, m_EncryptKey, m_KeyLen);
+ FXSYS_memcpy(key1 + m_KeyLen, &objnum, 3);
+ FXSYS_memcpy(key1 + m_KeyLen + 3, &gennum, 2);
+ if (m_Cipher == FXCIPHER_AES) {
+ FXSYS_memcpy(key1 + m_KeyLen + 5, "sAlT", 4);
+ }
+ uint8_t realkey[16];
+ CRYPT_MD5Generate(
+ key1, m_Cipher == FXCIPHER_AES ? m_KeyLen + 9 : m_KeyLen + 5, realkey);
+ int realkeylen = m_KeyLen + 5;
+ if (realkeylen > 16) {
+ realkeylen = 16;
+ }
+ if (m_Cipher == FXCIPHER_AES) {
+ AESCryptContext* pContext = FX_Alloc(AESCryptContext, 1);
+ pContext->m_bIV = TRUE;
+ pContext->m_BlockOffset = 0;
+ CRYPT_AESSetKey(pContext->m_Context, 16, realkey, 16, bEncrypt);
+ if (bEncrypt) {
+ for (int i = 0; i < 16; i++) {
+ pContext->m_Block[i] = (uint8_t)rand();
+ }
+ CRYPT_AESSetIV(pContext->m_Context, pContext->m_Block);
+ }
+ return pContext;
+ }
+ void* pContext = FX_Alloc(uint8_t, 1040);
+ CRYPT_ArcFourSetup(pContext, realkey, realkeylen);
+ return pContext;
+}
+FX_BOOL CPDF_StandardCryptoHandler::CryptStream(void* context,
+ const uint8_t* src_buf,
+ FX_DWORD src_size,
+ CFX_BinaryBuf& dest_buf,
+ FX_BOOL bEncrypt) {
+ if (!context) {
+ return FALSE;
+ }
+ if (m_Cipher == FXCIPHER_NONE) {
+ dest_buf.AppendBlock(src_buf, src_size);
+ return TRUE;
+ }
+ if (m_Cipher == FXCIPHER_RC4) {
+ int old_size = dest_buf.GetSize();
+ dest_buf.AppendBlock(src_buf, src_size);
+ CRYPT_ArcFourCrypt(context, dest_buf.GetBuffer() + old_size, src_size);
+ return TRUE;
+ }
+ AESCryptContext* pContext = (AESCryptContext*)context;
+ if (pContext->m_bIV && bEncrypt) {
+ dest_buf.AppendBlock(pContext->m_Block, 16);
+ pContext->m_bIV = FALSE;
+ }
+ FX_DWORD src_off = 0;
+ FX_DWORD src_left = src_size;
+ while (1) {
+ FX_DWORD copy_size = 16 - pContext->m_BlockOffset;
+ if (copy_size > src_left) {
+ copy_size = src_left;
+ }
+ FXSYS_memcpy(pContext->m_Block + pContext->m_BlockOffset, src_buf + src_off,
+ copy_size);
+ src_off += copy_size;
+ src_left -= copy_size;
+ pContext->m_BlockOffset += copy_size;
+ if (pContext->m_BlockOffset == 16) {
+ if (!bEncrypt && pContext->m_bIV) {
+ CRYPT_AESSetIV(pContext->m_Context, pContext->m_Block);
+ pContext->m_bIV = FALSE;
+ pContext->m_BlockOffset = 0;
+ } else if (src_off < src_size) {
+ uint8_t block_buf[16];
+ if (bEncrypt) {
+ CRYPT_AESEncrypt(pContext->m_Context, block_buf, pContext->m_Block,
+ 16);
+ } else {
+ CRYPT_AESDecrypt(pContext->m_Context, block_buf, pContext->m_Block,
+ 16);
+ }
+ dest_buf.AppendBlock(block_buf, 16);
+ pContext->m_BlockOffset = 0;
+ }
+ }
+ if (!src_left) {
+ break;
+ }
+ }
+ return TRUE;
+}
+FX_BOOL CPDF_StandardCryptoHandler::CryptFinish(void* context,
+ CFX_BinaryBuf& dest_buf,
+ FX_BOOL bEncrypt) {
+ if (!context) {
+ return FALSE;
+ }
+ if (m_Cipher == FXCIPHER_NONE) {
+ return TRUE;
+ }
+ if (m_Cipher == FXCIPHER_RC4) {
+ FX_Free(context);
+ return TRUE;
+ }
+ AESCryptContext* pContext = (AESCryptContext*)context;
+ if (bEncrypt) {
+ uint8_t block_buf[16];
+ if (pContext->m_BlockOffset == 16) {
+ CRYPT_AESEncrypt(pContext->m_Context, block_buf, pContext->m_Block, 16);
+ dest_buf.AppendBlock(block_buf, 16);
+ pContext->m_BlockOffset = 0;
+ }
+ FXSYS_memset(pContext->m_Block + pContext->m_BlockOffset,
+ (uint8_t)(16 - pContext->m_BlockOffset),
+ 16 - pContext->m_BlockOffset);
+ CRYPT_AESEncrypt(pContext->m_Context, block_buf, pContext->m_Block, 16);
+ dest_buf.AppendBlock(block_buf, 16);
+ } else if (pContext->m_BlockOffset == 16) {
+ uint8_t block_buf[16];
+ CRYPT_AESDecrypt(pContext->m_Context, block_buf, pContext->m_Block, 16);
+ if (block_buf[15] <= 16) {
+ dest_buf.AppendBlock(block_buf, 16 - block_buf[15]);
+ }
+ }
+ FX_Free(pContext);
+ return TRUE;
+}
+void* CPDF_StandardCryptoHandler::DecryptStart(FX_DWORD objnum,
+ FX_DWORD gennum) {
+ return CryptStart(objnum, gennum, FALSE);
+}
+FX_DWORD CPDF_StandardCryptoHandler::DecryptGetSize(FX_DWORD src_size) {
+ return m_Cipher == FXCIPHER_AES ? src_size - 16 : src_size;
+}
+
+FX_BOOL CPDF_StandardCryptoHandler::Init(
+ CPDF_Dictionary* pEncryptDict,
+ IPDF_SecurityHandler* pSecurityHandler) {
+ const uint8_t* key;
+ if (!pSecurityHandler->GetCryptInfo(m_Cipher, key, m_KeyLen)) {
+ return FALSE;
+ }
+ if (m_KeyLen > 32 || m_KeyLen < 0) {
+ return FALSE;
+ }
+ if (m_Cipher != FXCIPHER_NONE) {
+ FXSYS_memcpy(m_EncryptKey, key, m_KeyLen);
+ }
+ if (m_Cipher == FXCIPHER_AES) {
+ m_pAESContext = FX_Alloc(uint8_t, 2048);
+ }
+ return TRUE;
+}
+
+FX_BOOL CPDF_StandardCryptoHandler::Init(int cipher,
+ const uint8_t* key,
+ int keylen) {
+ if (cipher == FXCIPHER_AES) {
+ switch (keylen) {
+ case 16:
+ case 24:
+ case 32:
+ break;
+ default:
+ return FALSE;
+ }
+ } else if (cipher == FXCIPHER_AES2) {
+ if (keylen != 32) {
+ return FALSE;
+ }
+ } else if (cipher == FXCIPHER_RC4) {
+ if (keylen < 5 || keylen > 16) {
+ return FALSE;
+ }
+ } else {
+ if (keylen > 32) {
+ keylen = 32;
+ }
+ }
+ m_Cipher = cipher;
+ m_KeyLen = keylen;
+ FXSYS_memcpy(m_EncryptKey, key, keylen);
+ if (m_Cipher == FXCIPHER_AES) {
+ m_pAESContext = FX_Alloc(uint8_t, 2048);
+ }
+ return TRUE;
+}
+FX_BOOL CPDF_StandardCryptoHandler::DecryptStream(void* context,
+ const uint8_t* src_buf,
+ FX_DWORD src_size,
+ CFX_BinaryBuf& dest_buf) {
+ return CryptStream(context, src_buf, src_size, dest_buf, FALSE);
+}
+FX_BOOL CPDF_StandardCryptoHandler::DecryptFinish(void* context,
+ CFX_BinaryBuf& dest_buf) {
+ return CryptFinish(context, dest_buf, FALSE);
+}
+FX_DWORD CPDF_StandardCryptoHandler::EncryptGetSize(FX_DWORD objnum,
+ FX_DWORD version,
+ const uint8_t* src_buf,
+ FX_DWORD src_size) {
+ if (m_Cipher == FXCIPHER_AES) {
+ return src_size + 32;
+ }
+ return src_size;
+}
+FX_BOOL CPDF_StandardCryptoHandler::EncryptContent(FX_DWORD objnum,
+ FX_DWORD gennum,
+ const uint8_t* src_buf,
+ FX_DWORD src_size,
+ uint8_t* dest_buf,
+ FX_DWORD& dest_size) {
+ CryptBlock(TRUE, objnum, gennum, src_buf, src_size, dest_buf, dest_size);
+ return TRUE;
+}
+CPDF_StandardCryptoHandler::CPDF_StandardCryptoHandler() {
+ m_pAESContext = NULL;
+ m_Cipher = FXCIPHER_NONE;
+ m_KeyLen = 0;
+}
+CPDF_StandardCryptoHandler::~CPDF_StandardCryptoHandler() {
+ FX_Free(m_pAESContext);
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h b/core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h
new file mode 100644
index 0000000000..28b7503f6e
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h
@@ -0,0 +1,64 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_FPDFAPI_FPDF_PARSER_CPDF_STANDARD_CRYPTO_HANDLER_H_
+#define CORE_FPDFAPI_FPDF_PARSER_CPDF_STANDARD_CRYPTO_HANDLER_H_
+
+#include "core/include/fpdfapi/ipdf_crypto_handler.h"
+
+class CPDF_StandardCryptoHandler : public IPDF_CryptoHandler {
+ public:
+ CPDF_StandardCryptoHandler();
+ ~CPDF_StandardCryptoHandler() override;
+
+ // IPDF_CryptoHandler
+ FX_BOOL Init(CPDF_Dictionary* pEncryptDict,
+ IPDF_SecurityHandler* pSecurityHandler) override;
+ FX_DWORD DecryptGetSize(FX_DWORD src_size) override;
+ void* DecryptStart(FX_DWORD objnum, FX_DWORD gennum) override;
+ FX_BOOL DecryptStream(void* context,
+ const uint8_t* src_buf,
+ FX_DWORD src_size,
+ CFX_BinaryBuf& dest_buf) override;
+ FX_BOOL DecryptFinish(void* context, CFX_BinaryBuf& dest_buf) override;
+ FX_DWORD EncryptGetSize(FX_DWORD objnum,
+ FX_DWORD version,
+ const uint8_t* src_buf,
+ FX_DWORD src_size) override;
+ FX_BOOL EncryptContent(FX_DWORD objnum,
+ FX_DWORD version,
+ const uint8_t* src_buf,
+ FX_DWORD src_size,
+ uint8_t* dest_buf,
+ FX_DWORD& dest_size) override;
+
+ FX_BOOL Init(int cipher, const uint8_t* key, int keylen);
+
+ protected:
+ virtual void CryptBlock(FX_BOOL bEncrypt,
+ FX_DWORD objnum,
+ FX_DWORD gennum,
+ const uint8_t* src_buf,
+ FX_DWORD src_size,
+ uint8_t* dest_buf,
+ FX_DWORD& dest_size);
+ virtual void* CryptStart(FX_DWORD objnum, FX_DWORD gennum, FX_BOOL bEncrypt);
+ virtual FX_BOOL CryptStream(void* context,
+ const uint8_t* src_buf,
+ FX_DWORD src_size,
+ CFX_BinaryBuf& dest_buf,
+ FX_BOOL bEncrypt);
+ virtual FX_BOOL CryptFinish(void* context,
+ CFX_BinaryBuf& dest_buf,
+ FX_BOOL bEncrypt);
+
+ uint8_t m_EncryptKey[32];
+ int m_KeyLen;
+ int m_Cipher;
+ uint8_t* m_pAESContext;
+};
+
+#endif // CORE_FPDFAPI_FPDF_PARSER_CPDF_STANDARD_CRYPTO_HANDLER_H_
diff --git a/core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp b/core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp
new file mode 100644
index 0000000000..e5eb4c8469
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.cpp
@@ -0,0 +1,714 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h"
+
+#include <time.h>
+
+#include "core/fpdfapi/fpdf_parser/cpdf_standard_crypto_handler.h"
+#include "core/include/fdrm/fx_crypt.h"
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_object.h"
+#include "core/include/fpdfapi/cpdf_parser.h"
+
+namespace {
+
+const uint8_t defpasscode[32] = {
+ 0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e,
+ 0x56, 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68,
+ 0x3e, 0x80, 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a};
+
+void CalcEncryptKey(CPDF_Dictionary* pEncrypt,
+ const uint8_t* password,
+ FX_DWORD pass_size,
+ uint8_t* key,
+ int keylen,
+ FX_BOOL bIgnoreMeta,
+ CPDF_Array* pIdArray) {
+ int revision = pEncrypt->GetIntegerBy("R");
+ uint8_t passcode[32];
+ for (FX_DWORD i = 0; i < 32; i++) {
+ passcode[i] = i < pass_size ? password[i] : defpasscode[i - pass_size];
+ }
+ uint8_t md5[100];
+ CRYPT_MD5Start(md5);
+ CRYPT_MD5Update(md5, passcode, 32);
+ CFX_ByteString okey = pEncrypt->GetStringBy("O");
+ CRYPT_MD5Update(md5, (uint8_t*)okey.c_str(), okey.GetLength());
+ FX_DWORD perm = pEncrypt->GetIntegerBy("P");
+ CRYPT_MD5Update(md5, (uint8_t*)&perm, 4);
+ if (pIdArray) {
+ CFX_ByteString id = pIdArray->GetStringAt(0);
+ CRYPT_MD5Update(md5, (uint8_t*)id.c_str(), id.GetLength());
+ }
+ if (!bIgnoreMeta && revision >= 3 &&
+ !pEncrypt->GetIntegerBy("EncryptMetadata", 1)) {
+ FX_DWORD tag = (FX_DWORD)-1;
+ CRYPT_MD5Update(md5, (uint8_t*)&tag, 4);
+ }
+ uint8_t digest[16];
+ CRYPT_MD5Finish(md5, digest);
+ FX_DWORD copy_len = keylen;
+ if (copy_len > sizeof(digest)) {
+ copy_len = sizeof(digest);
+ }
+ if (revision >= 3) {
+ for (int i = 0; i < 50; i++) {
+ CRYPT_MD5Generate(digest, copy_len, digest);
+ }
+ }
+ FXSYS_memset(key, 0, keylen);
+ FXSYS_memcpy(key, digest, copy_len);
+}
+
+} // namespace
+
+IPDF_SecurityHandler::~IPDF_SecurityHandler() {}
+
+CPDF_StandardSecurityHandler::CPDF_StandardSecurityHandler() {
+ m_Version = 0;
+ m_Revision = 0;
+ m_pParser = NULL;
+ m_pEncryptDict = NULL;
+ m_Permissions = 0;
+ m_Cipher = FXCIPHER_NONE;
+ m_KeyLen = 0;
+}
+
+CPDF_StandardSecurityHandler::~CPDF_StandardSecurityHandler() {}
+
+IPDF_CryptoHandler* CPDF_StandardSecurityHandler::CreateCryptoHandler() {
+ return new CPDF_StandardCryptoHandler;
+}
+
+FX_BOOL CPDF_StandardSecurityHandler::OnInit(CPDF_Parser* pParser,
+ CPDF_Dictionary* pEncryptDict) {
+ m_pParser = pParser;
+ if (!LoadDict(pEncryptDict)) {
+ return FALSE;
+ }
+ if (m_Cipher == FXCIPHER_NONE) {
+ return TRUE;
+ }
+ return CheckSecurity(m_KeyLen);
+}
+FX_BOOL CPDF_StandardSecurityHandler::CheckSecurity(int32_t key_len) {
+ CFX_ByteString password = m_pParser->GetPassword();
+ if (CheckPassword(password, password.GetLength(), TRUE, m_EncryptKey,
+ key_len)) {
+ if (password.IsEmpty()) {
+ if (!CheckPassword(password, password.GetLength(), FALSE, m_EncryptKey,
+ key_len)) {
+ return FALSE;
+ }
+ }
+ return TRUE;
+ }
+ return CheckPassword(password, password.GetLength(), FALSE, m_EncryptKey,
+ key_len);
+}
+FX_DWORD CPDF_StandardSecurityHandler::GetPermissions() {
+ return m_Permissions;
+}
+static FX_BOOL _LoadCryptInfo(CPDF_Dictionary* pEncryptDict,
+ const CFX_ByteStringC& name,
+ int& cipher,
+ int& keylen) {
+ int Version = pEncryptDict->GetIntegerBy("V");
+ cipher = FXCIPHER_RC4;
+ keylen = 0;
+ if (Version >= 4) {
+ CPDF_Dictionary* pCryptFilters = pEncryptDict->GetDictBy("CF");
+ if (!pCryptFilters) {
+ return FALSE;
+ }
+ if (name == "Identity") {
+ cipher = FXCIPHER_NONE;
+ } else {
+ CPDF_Dictionary* pDefFilter = pCryptFilters->GetDictBy(name);
+ if (!pDefFilter) {
+ return FALSE;
+ }
+ int nKeyBits = 0;
+ if (Version == 4) {
+ nKeyBits = pDefFilter->GetIntegerBy("Length", 0);
+ if (nKeyBits == 0) {
+ nKeyBits = pEncryptDict->GetIntegerBy("Length", 128);
+ }
+ } else {
+ nKeyBits = pEncryptDict->GetIntegerBy("Length", 256);
+ }
+ if (nKeyBits < 40) {
+ nKeyBits *= 8;
+ }
+ keylen = nKeyBits / 8;
+ CFX_ByteString cipher_name = pDefFilter->GetStringBy("CFM");
+ if (cipher_name == "AESV2" || cipher_name == "AESV3") {
+ cipher = FXCIPHER_AES;
+ }
+ }
+ } else {
+ keylen = Version > 1 ? pEncryptDict->GetIntegerBy("Length", 40) / 8 : 5;
+ }
+ if (keylen > 32 || keylen < 0) {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+FX_BOOL CPDF_StandardSecurityHandler::LoadDict(CPDF_Dictionary* pEncryptDict) {
+ m_pEncryptDict = pEncryptDict;
+ m_Version = pEncryptDict->GetIntegerBy("V");
+ m_Revision = pEncryptDict->GetIntegerBy("R");
+ m_Permissions = pEncryptDict->GetIntegerBy("P", -1);
+ if (m_Version < 4) {
+ return _LoadCryptInfo(pEncryptDict, CFX_ByteString(), m_Cipher, m_KeyLen);
+ }
+ CFX_ByteString stmf_name = pEncryptDict->GetStringBy("StmF");
+ CFX_ByteString strf_name = pEncryptDict->GetStringBy("StrF");
+ if (stmf_name != strf_name) {
+ return FALSE;
+ }
+ if (!_LoadCryptInfo(pEncryptDict, strf_name, m_Cipher, m_KeyLen)) {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+FX_BOOL CPDF_StandardSecurityHandler::LoadDict(CPDF_Dictionary* pEncryptDict,
+ FX_DWORD type,
+ int& cipher,
+ int& key_len) {
+ m_pEncryptDict = pEncryptDict;
+ m_Version = pEncryptDict->GetIntegerBy("V");
+ m_Revision = pEncryptDict->GetIntegerBy("R");
+ m_Permissions = pEncryptDict->GetIntegerBy("P", -1);
+ CFX_ByteString strf_name, stmf_name;
+ if (m_Version >= 4) {
+ stmf_name = pEncryptDict->GetStringBy("StmF");
+ strf_name = pEncryptDict->GetStringBy("StrF");
+ if (stmf_name != strf_name) {
+ return FALSE;
+ }
+ }
+ if (!_LoadCryptInfo(pEncryptDict, strf_name, cipher, key_len)) {
+ return FALSE;
+ }
+ m_Cipher = cipher;
+ m_KeyLen = key_len;
+ return TRUE;
+}
+
+FX_BOOL CPDF_StandardSecurityHandler::GetCryptInfo(int& cipher,
+ const uint8_t*& buffer,
+ int& keylen) {
+ cipher = m_Cipher;
+ buffer = m_EncryptKey;
+ keylen = m_KeyLen;
+ return TRUE;
+}
+#define FX_GET_32WORD(n, b, i) \
+ { \
+ (n) = (FX_DWORD)( \
+ ((uint64_t)(b)[(i)] << 24) | ((uint64_t)(b)[(i) + 1] << 16) | \
+ ((uint64_t)(b)[(i) + 2] << 8) | ((uint64_t)(b)[(i) + 3])); \
+ }
+int BigOrder64BitsMod3(uint8_t* data) {
+ uint64_t ret = 0;
+ for (int i = 0; i < 4; ++i) {
+ FX_DWORD value;
+ FX_GET_32WORD(value, data, 4 * i);
+ ret <<= 32;
+ ret |= value;
+ ret %= 3;
+ }
+ return (int)ret;
+}
+void Revision6_Hash(const uint8_t* password,
+ FX_DWORD size,
+ const uint8_t* salt,
+ const uint8_t* vector,
+ uint8_t* hash) {
+ int iBlockSize = 32;
+ uint8_t sha[128];
+ CRYPT_SHA256Start(sha);
+ CRYPT_SHA256Update(sha, password, size);
+ CRYPT_SHA256Update(sha, salt, 8);
+ if (vector) {
+ CRYPT_SHA256Update(sha, vector, 48);
+ }
+ uint8_t digest[32];
+ CRYPT_SHA256Finish(sha, digest);
+ CFX_ByteTextBuf buf;
+ uint8_t* input = digest;
+ uint8_t* key = input;
+ uint8_t* iv = input + 16;
+ uint8_t* E = buf.GetBuffer();
+ int iBufLen = buf.GetLength();
+ CFX_ByteTextBuf interDigest;
+ int i = 0;
+ uint8_t* aes = FX_Alloc(uint8_t, 2048);
+ while (i < 64 || i < E[iBufLen - 1] + 32) {
+ int iRoundSize = size + iBlockSize;
+ if (vector) {
+ iRoundSize += 48;
+ }
+ iBufLen = iRoundSize * 64;
+ buf.EstimateSize(iBufLen);
+ E = buf.GetBuffer();
+ CFX_ByteTextBuf content;
+ for (int j = 0; j < 64; ++j) {
+ content.AppendBlock(password, size);
+ content.AppendBlock(input, iBlockSize);
+ if (vector) {
+ content.AppendBlock(vector, 48);
+ }
+ }
+ CRYPT_AESSetKey(aes, 16, key, 16, TRUE);
+ CRYPT_AESSetIV(aes, iv);
+ CRYPT_AESEncrypt(aes, E, content.GetBuffer(), iBufLen);
+ int iHash = 0;
+ switch (BigOrder64BitsMod3(E)) {
+ case 0:
+ iHash = 0;
+ iBlockSize = 32;
+ break;
+ case 1:
+ iHash = 1;
+ iBlockSize = 48;
+ break;
+ default:
+ iHash = 2;
+ iBlockSize = 64;
+ break;
+ }
+ interDigest.EstimateSize(iBlockSize);
+ input = interDigest.GetBuffer();
+ if (iHash == 0) {
+ CRYPT_SHA256Generate(E, iBufLen, input);
+ } else if (iHash == 1) {
+ CRYPT_SHA384Generate(E, iBufLen, input);
+ } else if (iHash == 2) {
+ CRYPT_SHA512Generate(E, iBufLen, input);
+ }
+ key = input;
+ iv = input + 16;
+ ++i;
+ }
+ FX_Free(aes);
+ if (hash) {
+ FXSYS_memcpy(hash, input, 32);
+ }
+}
+FX_BOOL CPDF_StandardSecurityHandler::AES256_CheckPassword(
+ const uint8_t* password,
+ FX_DWORD size,
+ FX_BOOL bOwner,
+ uint8_t* key) {
+ CFX_ByteString okey =
+ m_pEncryptDict ? m_pEncryptDict->GetStringBy("O") : CFX_ByteString();
+ if (okey.GetLength() < 48) {
+ return FALSE;
+ }
+ CFX_ByteString ukey =
+ m_pEncryptDict ? m_pEncryptDict->GetStringBy("U") : CFX_ByteString();
+ if (ukey.GetLength() < 48) {
+ return FALSE;
+ }
+ const uint8_t* pkey = bOwner ? (const uint8_t*)okey : (const uint8_t*)ukey;
+ uint8_t sha[128];
+ uint8_t digest[32];
+ if (m_Revision >= 6) {
+ Revision6_Hash(password, size, (const uint8_t*)pkey + 32,
+ (bOwner ? (const uint8_t*)ukey : NULL), digest);
+ } else {
+ CRYPT_SHA256Start(sha);
+ CRYPT_SHA256Update(sha, password, size);
+ CRYPT_SHA256Update(sha, pkey + 32, 8);
+ if (bOwner) {
+ CRYPT_SHA256Update(sha, ukey, 48);
+ }
+ CRYPT_SHA256Finish(sha, digest);
+ }
+ if (FXSYS_memcmp(digest, pkey, 32) != 0) {
+ return FALSE;
+ }
+ if (!key) {
+ return TRUE;
+ }
+ if (m_Revision >= 6) {
+ Revision6_Hash(password, size, (const uint8_t*)pkey + 40,
+ (bOwner ? (const uint8_t*)ukey : NULL), digest);
+ } else {
+ CRYPT_SHA256Start(sha);
+ CRYPT_SHA256Update(sha, password, size);
+ CRYPT_SHA256Update(sha, pkey + 40, 8);
+ if (bOwner) {
+ CRYPT_SHA256Update(sha, ukey, 48);
+ }
+ CRYPT_SHA256Finish(sha, digest);
+ }
+ CFX_ByteString ekey = m_pEncryptDict
+ ? m_pEncryptDict->GetStringBy(bOwner ? "OE" : "UE")
+ : CFX_ByteString();
+ if (ekey.GetLength() < 32) {
+ return FALSE;
+ }
+ uint8_t* aes = FX_Alloc(uint8_t, 2048);
+ CRYPT_AESSetKey(aes, 16, digest, 32, FALSE);
+ uint8_t iv[16];
+ FXSYS_memset(iv, 0, 16);
+ CRYPT_AESSetIV(aes, iv);
+ CRYPT_AESDecrypt(aes, key, ekey, 32);
+ CRYPT_AESSetKey(aes, 16, key, 32, FALSE);
+ CRYPT_AESSetIV(aes, iv);
+ CFX_ByteString perms = m_pEncryptDict->GetStringBy("Perms");
+ if (perms.IsEmpty()) {
+ return FALSE;
+ }
+ uint8_t perms_buf[16];
+ FXSYS_memset(perms_buf, 0, sizeof(perms_buf));
+ FX_DWORD copy_len = sizeof(perms_buf);
+ if (copy_len > (FX_DWORD)perms.GetLength()) {
+ copy_len = perms.GetLength();
+ }
+ FXSYS_memcpy(perms_buf, (const uint8_t*)perms, copy_len);
+ uint8_t buf[16];
+ CRYPT_AESDecrypt(aes, buf, perms_buf, 16);
+ FX_Free(aes);
+ if (buf[9] != 'a' || buf[10] != 'd' || buf[11] != 'b') {
+ return FALSE;
+ }
+ if (FXDWORD_GET_LSBFIRST(buf) != m_Permissions) {
+ return FALSE;
+ }
+ if ((buf[8] == 'T' && !IsMetadataEncrypted()) ||
+ (buf[8] == 'F' && IsMetadataEncrypted())) {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+int CPDF_StandardSecurityHandler::CheckPassword(const uint8_t* password,
+ FX_DWORD size,
+ FX_BOOL bOwner,
+ uint8_t* key,
+ int32_t key_len) {
+ if (m_Revision >= 5) {
+ return AES256_CheckPassword(password, size, bOwner, key);
+ }
+ uint8_t keybuf[32];
+ if (!key) {
+ key = keybuf;
+ }
+ if (bOwner) {
+ return CheckOwnerPassword(password, size, key, key_len);
+ }
+ return CheckUserPassword(password, size, FALSE, key, key_len) ||
+ CheckUserPassword(password, size, TRUE, key, key_len);
+}
+FX_BOOL CPDF_StandardSecurityHandler::CheckUserPassword(
+ const uint8_t* password,
+ FX_DWORD pass_size,
+ FX_BOOL bIgnoreEncryptMeta,
+ uint8_t* key,
+ int32_t key_len) {
+ CalcEncryptKey(m_pEncryptDict, password, pass_size, key, key_len,
+ bIgnoreEncryptMeta, m_pParser->GetIDArray());
+ CFX_ByteString ukey =
+ m_pEncryptDict ? m_pEncryptDict->GetStringBy("U") : CFX_ByteString();
+ if (ukey.GetLength() < 16) {
+ return FALSE;
+ }
+ uint8_t ukeybuf[32];
+ if (m_Revision == 2) {
+ FXSYS_memcpy(ukeybuf, defpasscode, 32);
+ CRYPT_ArcFourCryptBlock(ukeybuf, 32, key, key_len);
+ } else {
+ uint8_t test[32], tmpkey[32];
+ FX_DWORD copy_len = sizeof(test);
+ if (copy_len > (FX_DWORD)ukey.GetLength()) {
+ copy_len = ukey.GetLength();
+ }
+ FXSYS_memset(test, 0, sizeof(test));
+ FXSYS_memset(tmpkey, 0, sizeof(tmpkey));
+ FXSYS_memcpy(test, ukey.c_str(), copy_len);
+ for (int i = 19; i >= 0; i--) {
+ for (int j = 0; j < key_len; j++) {
+ tmpkey[j] = key[j] ^ i;
+ }
+ CRYPT_ArcFourCryptBlock(test, 32, tmpkey, key_len);
+ }
+ uint8_t md5[100];
+ CRYPT_MD5Start(md5);
+ CRYPT_MD5Update(md5, defpasscode, 32);
+ CPDF_Array* pIdArray = m_pParser->GetIDArray();
+ if (pIdArray) {
+ CFX_ByteString id = pIdArray->GetStringAt(0);
+ CRYPT_MD5Update(md5, (uint8_t*)id.c_str(), id.GetLength());
+ }
+ CRYPT_MD5Finish(md5, ukeybuf);
+ return FXSYS_memcmp(test, ukeybuf, 16) == 0;
+ }
+ if (FXSYS_memcmp((void*)ukey.c_str(), ukeybuf, 16) == 0) {
+ return TRUE;
+ }
+ return FALSE;
+}
+CFX_ByteString CPDF_StandardSecurityHandler::GetUserPassword(
+ const uint8_t* owner_pass,
+ FX_DWORD pass_size,
+ int32_t key_len) {
+ CFX_ByteString okey = m_pEncryptDict->GetStringBy("O");
+ uint8_t passcode[32];
+ FX_DWORD i;
+ for (i = 0; i < 32; i++) {
+ passcode[i] = i < pass_size ? owner_pass[i] : defpasscode[i - pass_size];
+ }
+ uint8_t digest[16];
+ CRYPT_MD5Generate(passcode, 32, digest);
+ if (m_Revision >= 3) {
+ for (int i = 0; i < 50; i++) {
+ CRYPT_MD5Generate(digest, 16, digest);
+ }
+ }
+ uint8_t enckey[32];
+ FXSYS_memset(enckey, 0, sizeof(enckey));
+ FX_DWORD copy_len = key_len;
+ if (copy_len > sizeof(digest)) {
+ copy_len = sizeof(digest);
+ }
+ FXSYS_memcpy(enckey, digest, copy_len);
+ int okeylen = okey.GetLength();
+ if (okeylen > 32) {
+ okeylen = 32;
+ }
+ uint8_t okeybuf[64];
+ FXSYS_memset(okeybuf, 0, sizeof(okeybuf));
+ FXSYS_memcpy(okeybuf, okey.c_str(), okeylen);
+ if (m_Revision == 2) {
+ CRYPT_ArcFourCryptBlock(okeybuf, okeylen, enckey, key_len);
+ } else {
+ for (int i = 19; i >= 0; i--) {
+ uint8_t tempkey[32];
+ FXSYS_memset(tempkey, 0, sizeof(tempkey));
+ for (int j = 0; j < m_KeyLen; j++) {
+ tempkey[j] = enckey[j] ^ i;
+ }
+ CRYPT_ArcFourCryptBlock(okeybuf, okeylen, tempkey, key_len);
+ }
+ }
+ int len = 32;
+ while (len && defpasscode[len - 1] == okeybuf[len - 1]) {
+ len--;
+ }
+ return CFX_ByteString(okeybuf, len);
+}
+FX_BOOL CPDF_StandardSecurityHandler::CheckOwnerPassword(
+ const uint8_t* password,
+ FX_DWORD pass_size,
+ uint8_t* key,
+ int32_t key_len) {
+ CFX_ByteString user_pass = GetUserPassword(password, pass_size, key_len);
+ if (CheckUserPassword(user_pass, user_pass.GetLength(), FALSE, key,
+ key_len)) {
+ return TRUE;
+ }
+ return CheckUserPassword(user_pass, user_pass.GetLength(), TRUE, key,
+ key_len);
+}
+FX_BOOL CPDF_StandardSecurityHandler::IsMetadataEncrypted() {
+ return m_pEncryptDict->GetBooleanBy("EncryptMetadata", TRUE);
+}
+
+void CPDF_StandardSecurityHandler::OnCreate(CPDF_Dictionary* pEncryptDict,
+ CPDF_Array* pIdArray,
+ const uint8_t* user_pass,
+ FX_DWORD user_size,
+ const uint8_t* owner_pass,
+ FX_DWORD owner_size,
+ FX_BOOL bDefault,
+ FX_DWORD type) {
+ int cipher = 0, key_len = 0;
+ if (!LoadDict(pEncryptDict, type, cipher, key_len)) {
+ return;
+ }
+ if (bDefault && (!owner_pass || owner_size == 0)) {
+ owner_pass = user_pass;
+ owner_size = user_size;
+ }
+ if (m_Revision >= 5) {
+ int t = (int)time(NULL);
+ uint8_t sha[128];
+ CRYPT_SHA256Start(sha);
+ CRYPT_SHA256Update(sha, (uint8_t*)&t, sizeof t);
+ CRYPT_SHA256Update(sha, m_EncryptKey, 32);
+ CRYPT_SHA256Update(sha, (uint8_t*)"there", 5);
+ CRYPT_SHA256Finish(sha, m_EncryptKey);
+ AES256_SetPassword(pEncryptDict, user_pass, user_size, FALSE, m_EncryptKey);
+ if (bDefault) {
+ AES256_SetPassword(pEncryptDict, owner_pass, owner_size, TRUE,
+ m_EncryptKey);
+ AES256_SetPerms(pEncryptDict, m_Permissions,
+ pEncryptDict->GetBooleanBy("EncryptMetadata", TRUE),
+ m_EncryptKey);
+ }
+ return;
+ }
+ if (bDefault) {
+ uint8_t passcode[32];
+ FX_DWORD i;
+ for (i = 0; i < 32; i++) {
+ passcode[i] =
+ i < owner_size ? owner_pass[i] : defpasscode[i - owner_size];
+ }
+ uint8_t digest[16];
+ CRYPT_MD5Generate(passcode, 32, digest);
+ if (m_Revision >= 3) {
+ for (int i = 0; i < 50; i++) {
+ CRYPT_MD5Generate(digest, 16, digest);
+ }
+ }
+ uint8_t enckey[32];
+ FXSYS_memcpy(enckey, digest, key_len);
+ for (i = 0; i < 32; i++) {
+ passcode[i] = i < user_size ? user_pass[i] : defpasscode[i - user_size];
+ }
+ CRYPT_ArcFourCryptBlock(passcode, 32, enckey, key_len);
+ uint8_t tempkey[32];
+ if (m_Revision >= 3) {
+ for (i = 1; i <= 19; i++) {
+ for (int j = 0; j < key_len; j++) {
+ tempkey[j] = enckey[j] ^ (uint8_t)i;
+ }
+ CRYPT_ArcFourCryptBlock(passcode, 32, tempkey, key_len);
+ }
+ }
+ pEncryptDict->SetAtString("O", CFX_ByteString(passcode, 32));
+ }
+ CalcEncryptKey(m_pEncryptDict, (uint8_t*)user_pass, user_size, m_EncryptKey,
+ key_len, FALSE, pIdArray);
+ if (m_Revision < 3) {
+ uint8_t tempbuf[32];
+ FXSYS_memcpy(tempbuf, defpasscode, 32);
+ CRYPT_ArcFourCryptBlock(tempbuf, 32, m_EncryptKey, key_len);
+ pEncryptDict->SetAtString("U", CFX_ByteString(tempbuf, 32));
+ } else {
+ uint8_t md5[100];
+ CRYPT_MD5Start(md5);
+ CRYPT_MD5Update(md5, defpasscode, 32);
+ if (pIdArray) {
+ CFX_ByteString id = pIdArray->GetStringAt(0);
+ CRYPT_MD5Update(md5, (uint8_t*)id.c_str(), id.GetLength());
+ }
+ uint8_t digest[32];
+ CRYPT_MD5Finish(md5, digest);
+ CRYPT_ArcFourCryptBlock(digest, 16, m_EncryptKey, key_len);
+ uint8_t tempkey[32];
+ for (int i = 1; i <= 19; i++) {
+ for (int j = 0; j < key_len; j++) {
+ tempkey[j] = m_EncryptKey[j] ^ (uint8_t)i;
+ }
+ CRYPT_ArcFourCryptBlock(digest, 16, tempkey, key_len);
+ }
+ CRYPT_MD5Generate(digest, 16, digest + 16);
+ pEncryptDict->SetAtString("U", CFX_ByteString(digest, 32));
+ }
+}
+void CPDF_StandardSecurityHandler::OnCreate(CPDF_Dictionary* pEncryptDict,
+ CPDF_Array* pIdArray,
+ const uint8_t* user_pass,
+ FX_DWORD user_size,
+ const uint8_t* owner_pass,
+ FX_DWORD owner_size,
+ FX_DWORD type) {
+ OnCreate(pEncryptDict, pIdArray, user_pass, user_size, owner_pass, owner_size,
+ TRUE, type);
+}
+void CPDF_StandardSecurityHandler::OnCreate(CPDF_Dictionary* pEncryptDict,
+ CPDF_Array* pIdArray,
+ const uint8_t* user_pass,
+ FX_DWORD user_size,
+ FX_DWORD type) {
+ OnCreate(pEncryptDict, pIdArray, user_pass, user_size, NULL, 0, FALSE, type);
+}
+void CPDF_StandardSecurityHandler::AES256_SetPassword(
+ CPDF_Dictionary* pEncryptDict,
+ const uint8_t* password,
+ FX_DWORD size,
+ FX_BOOL bOwner,
+ const uint8_t* key) {
+ uint8_t sha[128];
+ CRYPT_SHA1Start(sha);
+ CRYPT_SHA1Update(sha, key, 32);
+ CRYPT_SHA1Update(sha, (uint8_t*)"hello", 5);
+ uint8_t digest[20];
+ CRYPT_SHA1Finish(sha, digest);
+ CFX_ByteString ukey = pEncryptDict->GetStringBy("U");
+ uint8_t digest1[48];
+ if (m_Revision >= 6) {
+ Revision6_Hash(password, size, digest,
+ (bOwner ? (const uint8_t*)ukey : NULL), digest1);
+ } else {
+ CRYPT_SHA256Start(sha);
+ CRYPT_SHA256Update(sha, password, size);
+ CRYPT_SHA256Update(sha, digest, 8);
+ if (bOwner) {
+ CRYPT_SHA256Update(sha, ukey, ukey.GetLength());
+ }
+ CRYPT_SHA256Finish(sha, digest1);
+ }
+ FXSYS_memcpy(digest1 + 32, digest, 16);
+ pEncryptDict->SetAtString(bOwner ? "O" : "U", CFX_ByteString(digest1, 48));
+ if (m_Revision >= 6) {
+ Revision6_Hash(password, size, digest + 8,
+ (bOwner ? (const uint8_t*)ukey : NULL), digest1);
+ } else {
+ CRYPT_SHA256Start(sha);
+ CRYPT_SHA256Update(sha, password, size);
+ CRYPT_SHA256Update(sha, digest + 8, 8);
+ if (bOwner) {
+ CRYPT_SHA256Update(sha, ukey, ukey.GetLength());
+ }
+ CRYPT_SHA256Finish(sha, digest1);
+ }
+ uint8_t* aes = FX_Alloc(uint8_t, 2048);
+ CRYPT_AESSetKey(aes, 16, digest1, 32, TRUE);
+ uint8_t iv[16];
+ FXSYS_memset(iv, 0, 16);
+ CRYPT_AESSetIV(aes, iv);
+ CRYPT_AESEncrypt(aes, digest1, key, 32);
+ FX_Free(aes);
+ pEncryptDict->SetAtString(bOwner ? "OE" : "UE", CFX_ByteString(digest1, 32));
+}
+void CPDF_StandardSecurityHandler::AES256_SetPerms(
+ CPDF_Dictionary* pEncryptDict,
+ FX_DWORD permissions,
+ FX_BOOL bEncryptMetadata,
+ const uint8_t* key) {
+ uint8_t buf[16];
+ buf[0] = (uint8_t)permissions;
+ buf[1] = (uint8_t)(permissions >> 8);
+ buf[2] = (uint8_t)(permissions >> 16);
+ buf[3] = (uint8_t)(permissions >> 24);
+ buf[4] = 0xff;
+ buf[5] = 0xff;
+ buf[6] = 0xff;
+ buf[7] = 0xff;
+ buf[8] = bEncryptMetadata ? 'T' : 'F';
+ buf[9] = 'a';
+ buf[10] = 'd';
+ buf[11] = 'b';
+ uint8_t* aes = FX_Alloc(uint8_t, 2048);
+ CRYPT_AESSetKey(aes, 16, key, 32, TRUE);
+ uint8_t iv[16], buf1[16];
+ FXSYS_memset(iv, 0, 16);
+ CRYPT_AESSetIV(aes, iv);
+ CRYPT_AESEncrypt(aes, buf1, buf, 16);
+ FX_Free(aes);
+ pEncryptDict->SetAtString("Perms", CFX_ByteString(buf1, 16));
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h b/core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h
new file mode 100644
index 0000000000..3341ec391c
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_standard_security_handler.h
@@ -0,0 +1,105 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_FPDFAPI_FPDF_PARSER_CPDF_STANDARD_SECURITY_HANDLER_H_
+#define CORE_FPDFAPI_FPDF_PARSER_CPDF_STANDARD_SECURITY_HANDLER_H_
+
+#include "core/include/fpdfapi/ipdf_security_handler.h"
+#include "core/include/fxcrt/fx_string.h"
+#include "core/include/fxcrt/fx_system.h"
+
+class CPDF_Array;
+
+#define PDF_ENCRYPT_CONTENT 0
+
+class CPDF_StandardSecurityHandler : public IPDF_SecurityHandler {
+ public:
+ CPDF_StandardSecurityHandler();
+ ~CPDF_StandardSecurityHandler() override;
+
+ // IPDF_SecurityHandler:
+ FX_BOOL OnInit(CPDF_Parser* pParser, CPDF_Dictionary* pEncryptDict) override;
+ FX_DWORD GetPermissions() override;
+ FX_BOOL GetCryptInfo(int& cipher,
+ const uint8_t*& buffer,
+ int& keylen) override;
+ FX_BOOL IsMetadataEncrypted() override;
+ IPDF_CryptoHandler* CreateCryptoHandler() override;
+
+ void OnCreate(CPDF_Dictionary* pEncryptDict,
+ CPDF_Array* pIdArray,
+ const uint8_t* user_pass,
+ FX_DWORD user_size,
+ const uint8_t* owner_pass,
+ FX_DWORD owner_size,
+ FX_DWORD type = PDF_ENCRYPT_CONTENT);
+
+ void OnCreate(CPDF_Dictionary* pEncryptDict,
+ CPDF_Array* pIdArray,
+ const uint8_t* user_pass,
+ FX_DWORD user_size,
+ FX_DWORD type = PDF_ENCRYPT_CONTENT);
+
+ CFX_ByteString GetUserPassword(const uint8_t* owner_pass,
+ FX_DWORD pass_size,
+ int32_t key_len);
+ int CheckPassword(const uint8_t* password,
+ FX_DWORD pass_size,
+ FX_BOOL bOwner,
+ uint8_t* key,
+ int key_len);
+
+ private:
+ FX_BOOL LoadDict(CPDF_Dictionary* pEncryptDict);
+ FX_BOOL LoadDict(CPDF_Dictionary* pEncryptDict,
+ FX_DWORD type,
+ int& cipher,
+ int& key_len);
+
+ FX_BOOL CheckUserPassword(const uint8_t* password,
+ FX_DWORD pass_size,
+ FX_BOOL bIgnoreEncryptMeta,
+ uint8_t* key,
+ int32_t key_len);
+
+ FX_BOOL CheckOwnerPassword(const uint8_t* password,
+ FX_DWORD pass_size,
+ uint8_t* key,
+ int32_t key_len);
+ FX_BOOL AES256_CheckPassword(const uint8_t* password,
+ FX_DWORD size,
+ FX_BOOL bOwner,
+ uint8_t* key);
+ void AES256_SetPassword(CPDF_Dictionary* pEncryptDict,
+ const uint8_t* password,
+ FX_DWORD size,
+ FX_BOOL bOwner,
+ const uint8_t* key);
+ void AES256_SetPerms(CPDF_Dictionary* pEncryptDict,
+ FX_DWORD permission,
+ FX_BOOL bEncryptMetadata,
+ const uint8_t* key);
+ void OnCreate(CPDF_Dictionary* pEncryptDict,
+ CPDF_Array* pIdArray,
+ const uint8_t* user_pass,
+ FX_DWORD user_size,
+ const uint8_t* owner_pass,
+ FX_DWORD owner_size,
+ FX_BOOL bDefault,
+ FX_DWORD type);
+ FX_BOOL CheckSecurity(int32_t key_len);
+
+ int m_Version;
+ int m_Revision;
+ CPDF_Parser* m_pParser;
+ CPDF_Dictionary* m_pEncryptDict;
+ FX_DWORD m_Permissions;
+ int m_Cipher;
+ uint8_t m_EncryptKey[32];
+ int m_KeyLen;
+};
+
+#endif // CORE_FPDFAPI_FPDF_PARSER_CPDF_STANDARD_SECURITY_HANDLER_H_
diff --git a/core/fpdfapi/fpdf_parser/cpdf_stream.cpp b/core/fpdfapi/fpdf_parser/cpdf_stream.cpp
new file mode 100644
index 0000000000..45c946ab5f
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_stream.cpp
@@ -0,0 +1,232 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/include/fpdfapi/cpdf_stream.h"
+
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/fpdf_parser_decode.h"
+
+CPDF_Stream::CPDF_Stream(uint8_t* pData, FX_DWORD size, CPDF_Dictionary* pDict)
+ : m_pDict(pDict),
+ m_dwSize(size),
+ m_GenNum(kMemoryBasedGenNum),
+ m_pDataBuf(pData) {}
+
+CPDF_Stream::~CPDF_Stream() {
+ if (IsMemoryBased())
+ FX_Free(m_pDataBuf);
+
+ if (m_pDict)
+ m_pDict->Release();
+}
+
+CPDF_Object::Type CPDF_Stream::GetType() const {
+ return STREAM;
+}
+
+CPDF_Dictionary* CPDF_Stream::GetDict() const {
+ return m_pDict;
+}
+
+bool CPDF_Stream::IsStream() const {
+ return true;
+}
+
+CPDF_Stream* CPDF_Stream::AsStream() {
+ return this;
+}
+
+const CPDF_Stream* CPDF_Stream::AsStream() const {
+ return this;
+}
+
+void CPDF_Stream::InitStreamInternal(CPDF_Dictionary* pDict) {
+ if (pDict) {
+ if (m_pDict)
+ m_pDict->Release();
+ m_pDict = pDict;
+ }
+ if (IsMemoryBased())
+ FX_Free(m_pDataBuf);
+
+ m_GenNum = 0;
+ m_pFile = nullptr;
+}
+
+void CPDF_Stream::InitStream(uint8_t* pData,
+ FX_DWORD size,
+ CPDF_Dictionary* pDict) {
+ InitStreamInternal(pDict);
+ m_GenNum = kMemoryBasedGenNum;
+ m_pDataBuf = FX_Alloc(uint8_t, size);
+ if (pData)
+ FXSYS_memcpy(m_pDataBuf, pData, size);
+
+ m_dwSize = size;
+ if (m_pDict)
+ m_pDict->SetAtInteger("Length", size);
+}
+
+CPDF_Object* CPDF_Stream::Clone(FX_BOOL bDirect) const {
+ CPDF_StreamAcc acc;
+ acc.LoadAllData(this, TRUE);
+ FX_DWORD streamSize = acc.GetSize();
+ CPDF_Dictionary* pDict = GetDict();
+ if (pDict)
+ pDict = ToDictionary(pDict->Clone(bDirect));
+
+ return new CPDF_Stream(acc.DetachData(), streamSize, pDict);
+}
+
+void CPDF_Stream::SetData(const uint8_t* pData,
+ FX_DWORD size,
+ FX_BOOL bCompressed,
+ FX_BOOL bKeepBuf) {
+ if (IsMemoryBased())
+ FX_Free(m_pDataBuf);
+ m_GenNum = kMemoryBasedGenNum;
+
+ if (bKeepBuf) {
+ m_pDataBuf = const_cast<uint8_t*>(pData);
+ } else {
+ m_pDataBuf = FX_Alloc(uint8_t, size);
+ if (pData) {
+ FXSYS_memcpy(m_pDataBuf, pData, size);
+ }
+ }
+ m_dwSize = size;
+ if (!m_pDict)
+ m_pDict = new CPDF_Dictionary;
+ m_pDict->SetAtInteger("Length", size);
+ if (!bCompressed) {
+ m_pDict->RemoveAt("Filter");
+ m_pDict->RemoveAt("DecodeParms");
+ }
+}
+
+FX_BOOL CPDF_Stream::ReadRawData(FX_FILESIZE offset,
+ uint8_t* buf,
+ FX_DWORD size) const {
+ if (!IsMemoryBased() && m_pFile)
+ return m_pFile->ReadBlock(buf, offset, size);
+
+ if (m_pDataBuf)
+ FXSYS_memcpy(buf, m_pDataBuf + offset, size);
+
+ return TRUE;
+}
+
+void CPDF_Stream::InitStreamFromFile(IFX_FileRead* pFile,
+ CPDF_Dictionary* pDict) {
+ InitStreamInternal(pDict);
+ m_pFile = pFile;
+ m_dwSize = (FX_DWORD)pFile->GetSize();
+ if (m_pDict)
+ m_pDict->SetAtInteger("Length", m_dwSize);
+}
+
+CFX_WideString CPDF_Stream::GetUnicodeText() const {
+ CPDF_StreamAcc stream;
+ stream.LoadAllData(this, FALSE);
+ return PDF_DecodeText(stream.GetData(), stream.GetSize());
+}
+
+CPDF_StreamAcc::CPDF_StreamAcc()
+ : m_pData(nullptr),
+ m_dwSize(0),
+ m_bNewBuf(FALSE),
+ m_pImageParam(nullptr),
+ m_pStream(nullptr),
+ m_pSrcData(nullptr) {}
+
+void CPDF_StreamAcc::LoadAllData(const CPDF_Stream* pStream,
+ FX_BOOL bRawAccess,
+ FX_DWORD estimated_size,
+ FX_BOOL bImageAcc) {
+ if (!pStream)
+ return;
+
+ m_pStream = pStream;
+ if (pStream->IsMemoryBased() &&
+ (!pStream->GetDict()->KeyExist("Filter") || bRawAccess)) {
+ m_dwSize = pStream->GetRawSize();
+ m_pData = pStream->GetRawData();
+ return;
+ }
+ uint8_t* pSrcData;
+ FX_DWORD dwSrcSize = pStream->GetRawSize();
+ if (dwSrcSize == 0)
+ return;
+
+ if (!pStream->IsMemoryBased()) {
+ pSrcData = m_pSrcData = FX_Alloc(uint8_t, dwSrcSize);
+ if (!pStream->ReadRawData(0, pSrcData, dwSrcSize))
+ return;
+ } else {
+ pSrcData = pStream->GetRawData();
+ }
+ uint8_t* pDecryptedData = pSrcData;
+ FX_DWORD dwDecryptedSize = dwSrcSize;
+ if (!pStream->GetDict()->KeyExist("Filter") || bRawAccess) {
+ m_pData = pDecryptedData;
+ m_dwSize = dwDecryptedSize;
+ } else {
+ FX_BOOL bRet = PDF_DataDecode(
+ pDecryptedData, dwDecryptedSize, m_pStream->GetDict(), m_pData,
+ m_dwSize, m_ImageDecoder, m_pImageParam, estimated_size, bImageAcc);
+ if (!bRet) {
+ m_pData = pDecryptedData;
+ m_dwSize = dwDecryptedSize;
+ }
+ }
+ if (pSrcData != pStream->GetRawData() && pSrcData != m_pData) {
+ FX_Free(pSrcData);
+ }
+ if (pDecryptedData != pSrcData && pDecryptedData != m_pData) {
+ FX_Free(pDecryptedData);
+ }
+ m_pSrcData = nullptr;
+ m_bNewBuf = m_pData != pStream->GetRawData();
+}
+
+CPDF_StreamAcc::~CPDF_StreamAcc() {
+ if (m_bNewBuf) {
+ FX_Free(m_pData);
+ }
+ FX_Free(m_pSrcData);
+}
+
+const uint8_t* CPDF_StreamAcc::GetData() const {
+ if (m_bNewBuf) {
+ return m_pData;
+ }
+ if (!m_pStream) {
+ return nullptr;
+ }
+ return m_pStream->GetRawData();
+}
+
+FX_DWORD CPDF_StreamAcc::GetSize() const {
+ if (m_bNewBuf) {
+ return m_dwSize;
+ }
+ if (!m_pStream) {
+ return 0;
+ }
+ return m_pStream->GetRawSize();
+}
+
+uint8_t* CPDF_StreamAcc::DetachData() {
+ if (m_bNewBuf) {
+ uint8_t* p = m_pData;
+ m_pData = nullptr;
+ m_dwSize = 0;
+ return p;
+ }
+ uint8_t* p = FX_Alloc(uint8_t, m_dwSize);
+ FXSYS_memcpy(p, m_pData, m_dwSize);
+ return p;
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_string.cpp b/core/fpdfapi/fpdf_parser/cpdf_string.cpp
new file mode 100644
index 0000000000..1d0bf0b829
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_string.cpp
@@ -0,0 +1,56 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/include/fpdfapi/cpdf_string.h"
+
+#include "core/include/fpdfapi/fpdf_parser_decode.h"
+
+CPDF_String::CPDF_String() : m_bHex(FALSE) {}
+
+CPDF_String::CPDF_String(const CFX_ByteString& str, FX_BOOL bHex)
+ : m_String(str), m_bHex(bHex) {}
+
+CPDF_String::CPDF_String(const CFX_WideString& str) : m_bHex(FALSE) {
+ m_String = PDF_EncodeText(str);
+}
+
+CPDF_String::~CPDF_String() {}
+
+CPDF_Object::Type CPDF_String::GetType() const {
+ return STRING;
+}
+
+CPDF_Object* CPDF_String::Clone(FX_BOOL bDirect) const {
+ return new CPDF_String(m_String, m_bHex);
+}
+
+CFX_ByteString CPDF_String::GetString() const {
+ return m_String;
+}
+
+CFX_ByteStringC CPDF_String::GetConstString() const {
+ return CFX_ByteStringC(m_String);
+}
+
+void CPDF_String::SetString(const CFX_ByteString& str) {
+ m_String = str;
+}
+
+bool CPDF_String::IsString() const {
+ return true;
+}
+
+CPDF_String* CPDF_String::AsString() {
+ return this;
+}
+
+const CPDF_String* CPDF_String::AsString() const {
+ return this;
+}
+
+CFX_WideString CPDF_String::GetUnicodeText() const {
+ return PDF_DecodeText(m_String);
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_syntax_parser.cpp b/core/fpdfapi/fpdf_parser/cpdf_syntax_parser.cpp
new file mode 100644
index 0000000000..62be48818b
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_syntax_parser.cpp
@@ -0,0 +1,990 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h"
+
+#include <vector>
+
+#include "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h"
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_boolean.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_name.h"
+#include "core/include/fpdfapi/cpdf_null.h"
+#include "core/include/fpdfapi/cpdf_number.h"
+#include "core/include/fpdfapi/cpdf_reference.h"
+#include "core/include/fpdfapi/cpdf_stream.h"
+#include "core/include/fpdfapi/cpdf_string.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_parser_decode.h"
+#include "core/include/fpdfapi/ipdf_crypto_handler.h"
+#include "core/include/fxcrt/fx_ext.h"
+#include "third_party/base/numerics/safe_math.h"
+
+namespace {
+
+struct SearchTagRecord {
+ const char* m_pTag;
+ FX_DWORD m_Len;
+ FX_DWORD m_Offset;
+};
+
+} // namespace
+
+// static
+int CPDF_SyntaxParser::s_CurrentRecursionDepth = 0;
+
+CPDF_SyntaxParser::CPDF_SyntaxParser()
+ : m_MetadataObjnum(0),
+ m_pFileAccess(nullptr),
+ m_pFileBuf(nullptr),
+ m_BufSize(CPDF_ModuleMgr::kFileBufSize) {}
+
+CPDF_SyntaxParser::~CPDF_SyntaxParser() {
+ FX_Free(m_pFileBuf);
+}
+
+FX_BOOL CPDF_SyntaxParser::GetCharAt(FX_FILESIZE pos, uint8_t& ch) {
+ CFX_AutoRestorer<FX_FILESIZE> save_pos(&m_Pos);
+ m_Pos = pos;
+ return GetNextChar(ch);
+}
+
+FX_BOOL CPDF_SyntaxParser::GetNextChar(uint8_t& ch) {
+ FX_FILESIZE pos = m_Pos + m_HeaderOffset;
+ if (pos >= m_FileLen)
+ return FALSE;
+
+ if (m_BufOffset >= pos || (FX_FILESIZE)(m_BufOffset + m_BufSize) <= pos) {
+ FX_FILESIZE read_pos = pos;
+ FX_DWORD read_size = m_BufSize;
+ if ((FX_FILESIZE)read_size > m_FileLen)
+ read_size = (FX_DWORD)m_FileLen;
+
+ if ((FX_FILESIZE)(read_pos + read_size) > m_FileLen) {
+ if (m_FileLen < (FX_FILESIZE)read_size) {
+ read_pos = 0;
+ read_size = (FX_DWORD)m_FileLen;
+ } else {
+ read_pos = m_FileLen - read_size;
+ }
+ }
+
+ if (!m_pFileAccess->ReadBlock(m_pFileBuf, read_pos, read_size))
+ return FALSE;
+
+ m_BufOffset = read_pos;
+ }
+ ch = m_pFileBuf[pos - m_BufOffset];
+ m_Pos++;
+ return TRUE;
+}
+
+FX_BOOL CPDF_SyntaxParser::GetCharAtBackward(FX_FILESIZE pos, uint8_t& ch) {
+ pos += m_HeaderOffset;
+ if (pos >= m_FileLen)
+ return FALSE;
+
+ if (m_BufOffset >= pos || (FX_FILESIZE)(m_BufOffset + m_BufSize) <= pos) {
+ FX_FILESIZE read_pos;
+ if (pos < (FX_FILESIZE)m_BufSize)
+ read_pos = 0;
+ else
+ read_pos = pos - m_BufSize + 1;
+
+ FX_DWORD read_size = m_BufSize;
+ if ((FX_FILESIZE)(read_pos + read_size) > m_FileLen) {
+ if (m_FileLen < (FX_FILESIZE)read_size) {
+ read_pos = 0;
+ read_size = (FX_DWORD)m_FileLen;
+ } else {
+ read_pos = m_FileLen - read_size;
+ }
+ }
+
+ if (!m_pFileAccess->ReadBlock(m_pFileBuf, read_pos, read_size))
+ return FALSE;
+
+ m_BufOffset = read_pos;
+ }
+ ch = m_pFileBuf[pos - m_BufOffset];
+ return TRUE;
+}
+
+FX_BOOL CPDF_SyntaxParser::ReadBlock(uint8_t* pBuf, FX_DWORD size) {
+ if (!m_pFileAccess->ReadBlock(pBuf, m_Pos + m_HeaderOffset, size))
+ return FALSE;
+ m_Pos += size;
+ return TRUE;
+}
+
+void CPDF_SyntaxParser::GetNextWordInternal(bool* bIsNumber) {
+ m_WordSize = 0;
+ if (bIsNumber)
+ *bIsNumber = true;
+
+ uint8_t ch;
+ if (!GetNextChar(ch))
+ return;
+
+ while (1) {
+ while (PDFCharIsWhitespace(ch)) {
+ if (!GetNextChar(ch))
+ return;
+ }
+
+ if (ch != '%')
+ break;
+
+ while (1) {
+ if (!GetNextChar(ch))
+ return;
+ if (PDFCharIsLineEnding(ch))
+ break;
+ }
+ }
+
+ if (PDFCharIsDelimiter(ch)) {
+ if (bIsNumber)
+ *bIsNumber = false;
+
+ m_WordBuffer[m_WordSize++] = ch;
+ if (ch == '/') {
+ while (1) {
+ if (!GetNextChar(ch))
+ return;
+
+ if (!PDFCharIsOther(ch) && !PDFCharIsNumeric(ch)) {
+ m_Pos--;
+ return;
+ }
+
+ if (m_WordSize < sizeof(m_WordBuffer) - 1)
+ m_WordBuffer[m_WordSize++] = ch;
+ }
+ } else if (ch == '<') {
+ if (!GetNextChar(ch))
+ return;
+
+ if (ch == '<')
+ m_WordBuffer[m_WordSize++] = ch;
+ else
+ m_Pos--;
+ } else if (ch == '>') {
+ if (!GetNextChar(ch))
+ return;
+
+ if (ch == '>')
+ m_WordBuffer[m_WordSize++] = ch;
+ else
+ m_Pos--;
+ }
+ return;
+ }
+
+ while (1) {
+ if (m_WordSize < sizeof(m_WordBuffer) - 1)
+ m_WordBuffer[m_WordSize++] = ch;
+
+ if (!PDFCharIsNumeric(ch)) {
+ if (bIsNumber)
+ *bIsNumber = false;
+ }
+
+ if (!GetNextChar(ch))
+ return;
+
+ if (PDFCharIsDelimiter(ch) || PDFCharIsWhitespace(ch)) {
+ m_Pos--;
+ break;
+ }
+ }
+}
+
+CFX_ByteString CPDF_SyntaxParser::ReadString() {
+ uint8_t ch;
+ if (!GetNextChar(ch))
+ return CFX_ByteString();
+
+ CFX_ByteTextBuf buf;
+ int32_t parlevel = 0;
+ int32_t status = 0;
+ int32_t iEscCode = 0;
+ while (1) {
+ switch (status) {
+ case 0:
+ if (ch == ')') {
+ if (parlevel == 0) {
+ return buf.GetByteString();
+ }
+ parlevel--;
+ buf.AppendChar(')');
+ } else if (ch == '(') {
+ parlevel++;
+ buf.AppendChar('(');
+ } else if (ch == '\\') {
+ status = 1;
+ } else {
+ buf.AppendChar(ch);
+ }
+ break;
+ case 1:
+ if (ch >= '0' && ch <= '7') {
+ iEscCode = FXSYS_toDecimalDigit(static_cast<FX_WCHAR>(ch));
+ status = 2;
+ break;
+ }
+
+ if (ch == 'n') {
+ buf.AppendChar('\n');
+ } else if (ch == 'r') {
+ buf.AppendChar('\r');
+ } else if (ch == 't') {
+ buf.AppendChar('\t');
+ } else if (ch == 'b') {
+ buf.AppendChar('\b');
+ } else if (ch == 'f') {
+ buf.AppendChar('\f');
+ } else if (ch == '\r') {
+ status = 4;
+ break;
+ } else if (ch != '\n') {
+ buf.AppendChar(ch);
+ }
+ status = 0;
+ break;
+ case 2:
+ if (ch >= '0' && ch <= '7') {
+ iEscCode =
+ iEscCode * 8 + FXSYS_toDecimalDigit(static_cast<FX_WCHAR>(ch));
+ status = 3;
+ } else {
+ buf.AppendChar(iEscCode);
+ status = 0;
+ continue;
+ }
+ break;
+ case 3:
+ if (ch >= '0' && ch <= '7') {
+ iEscCode =
+ iEscCode * 8 + FXSYS_toDecimalDigit(static_cast<FX_WCHAR>(ch));
+ buf.AppendChar(iEscCode);
+ status = 0;
+ } else {
+ buf.AppendChar(iEscCode);
+ status = 0;
+ continue;
+ }
+ break;
+ case 4:
+ status = 0;
+ if (ch != '\n')
+ continue;
+ break;
+ }
+
+ if (!GetNextChar(ch))
+ break;
+ }
+
+ GetNextChar(ch);
+ return buf.GetByteString();
+}
+
+CFX_ByteString CPDF_SyntaxParser::ReadHexString() {
+ uint8_t ch;
+ if (!GetNextChar(ch))
+ return CFX_ByteString();
+
+ CFX_ByteTextBuf buf;
+ bool bFirst = true;
+ uint8_t code = 0;
+ while (1) {
+ if (ch == '>')
+ break;
+
+ if (std::isxdigit(ch)) {
+ int val = FXSYS_toHexDigit(ch);
+ if (bFirst) {
+ code = val * 16;
+ } else {
+ code += val;
+ buf.AppendByte(code);
+ }
+ bFirst = !bFirst;
+ }
+
+ if (!GetNextChar(ch))
+ break;
+ }
+ if (!bFirst)
+ buf.AppendByte(code);
+
+ return buf.GetByteString();
+}
+
+void CPDF_SyntaxParser::ToNextLine() {
+ uint8_t ch;
+ while (GetNextChar(ch)) {
+ if (ch == '\n')
+ break;
+
+ if (ch == '\r') {
+ GetNextChar(ch);
+ if (ch != '\n')
+ --m_Pos;
+ break;
+ }
+ }
+}
+
+void CPDF_SyntaxParser::ToNextWord() {
+ uint8_t ch;
+ if (!GetNextChar(ch))
+ return;
+
+ while (1) {
+ while (PDFCharIsWhitespace(ch)) {
+ if (!GetNextChar(ch))
+ return;
+ }
+
+ if (ch != '%')
+ break;
+
+ while (1) {
+ if (!GetNextChar(ch))
+ return;
+ if (PDFCharIsLineEnding(ch))
+ break;
+ }
+ }
+ m_Pos--;
+}
+
+CFX_ByteString CPDF_SyntaxParser::GetNextWord(bool* bIsNumber) {
+ GetNextWordInternal(bIsNumber);
+ return CFX_ByteString((const FX_CHAR*)m_WordBuffer, m_WordSize);
+}
+
+CFX_ByteString CPDF_SyntaxParser::GetKeyword() {
+ return GetNextWord(nullptr);
+}
+
+CPDF_Object* CPDF_SyntaxParser::GetObject(CPDF_IndirectObjectHolder* pObjList,
+ FX_DWORD objnum,
+ FX_DWORD gennum,
+ FX_BOOL bDecrypt) {
+ CFX_AutoRestorer<int> restorer(&s_CurrentRecursionDepth);
+ if (++s_CurrentRecursionDepth > kParserMaxRecursionDepth)
+ return nullptr;
+
+ FX_FILESIZE SavedPos = m_Pos;
+ bool bIsNumber;
+ CFX_ByteString word = GetNextWord(&bIsNumber);
+ if (word.GetLength() == 0)
+ return nullptr;
+
+ if (bIsNumber) {
+ FX_FILESIZE SavedPos = m_Pos;
+ CFX_ByteString nextword = GetNextWord(&bIsNumber);
+ if (bIsNumber) {
+ CFX_ByteString nextword2 = GetNextWord(nullptr);
+ if (nextword2 == "R") {
+ FX_DWORD objnum = FXSYS_atoui(word);
+ return new CPDF_Reference(pObjList, objnum);
+ }
+ }
+ m_Pos = SavedPos;
+ return new CPDF_Number(word);
+ }
+
+ if (word == "true" || word == "false")
+ return new CPDF_Boolean(word == "true");
+
+ if (word == "null")
+ return new CPDF_Null;
+
+ if (word == "(") {
+ CFX_ByteString str = ReadString();
+ if (m_pCryptoHandler && bDecrypt)
+ m_pCryptoHandler->Decrypt(objnum, gennum, str);
+ return new CPDF_String(str, FALSE);
+ }
+
+ if (word == "<") {
+ CFX_ByteString str = ReadHexString();
+ if (m_pCryptoHandler && bDecrypt)
+ m_pCryptoHandler->Decrypt(objnum, gennum, str);
+
+ return new CPDF_String(str, TRUE);
+ }
+
+ if (word == "[") {
+ CPDF_Array* pArray = new CPDF_Array;
+ while (CPDF_Object* pObj = GetObject(pObjList, objnum, gennum, true))
+ pArray->Add(pObj);
+
+ return pArray;
+ }
+
+ if (word[0] == '/') {
+ return new CPDF_Name(
+ PDF_NameDecode(CFX_ByteStringC(m_WordBuffer + 1, m_WordSize - 1)));
+ }
+
+ if (word == "<<") {
+ int32_t nKeys = 0;
+ FX_FILESIZE dwSignValuePos = 0;
+
+ std::unique_ptr<CPDF_Dictionary, ReleaseDeleter<CPDF_Dictionary>> pDict(
+ new CPDF_Dictionary);
+ while (1) {
+ CFX_ByteString key = GetNextWord(nullptr);
+ if (key.IsEmpty())
+ return nullptr;
+
+ FX_FILESIZE SavedPos = m_Pos - key.GetLength();
+ if (key == ">>")
+ break;
+
+ if (key == "endobj") {
+ m_Pos = SavedPos;
+ break;
+ }
+
+ if (key[0] != '/')
+ continue;
+
+ ++nKeys;
+ key = PDF_NameDecode(key);
+ if (key.IsEmpty())
+ continue;
+
+ if (key == "/Contents")
+ dwSignValuePos = m_Pos;
+
+ CPDF_Object* pObj = GetObject(pObjList, objnum, gennum, true);
+ if (!pObj)
+ continue;
+
+ CFX_ByteStringC keyNoSlash(key.c_str() + 1, key.GetLength() - 1);
+ pDict->SetAt(keyNoSlash, pObj);
+ }
+
+ // Only when this is a signature dictionary and has contents, we reset the
+ // contents to the un-decrypted form.
+ if (pDict->IsSignatureDict() && dwSignValuePos) {
+ CFX_AutoRestorer<FX_FILESIZE> save_pos(&m_Pos);
+ m_Pos = dwSignValuePos;
+ pDict->SetAt("Contents", GetObject(pObjList, objnum, gennum, false));
+ }
+
+ FX_FILESIZE SavedPos = m_Pos;
+ CFX_ByteString nextword = GetNextWord(nullptr);
+ if (nextword != "stream") {
+ m_Pos = SavedPos;
+ return pDict.release();
+ }
+ return ReadStream(pDict.release(), objnum, gennum);
+ }
+
+ if (word == ">>")
+ m_Pos = SavedPos;
+
+ return nullptr;
+}
+
+CPDF_Object* CPDF_SyntaxParser::GetObjectByStrict(
+ CPDF_IndirectObjectHolder* pObjList,
+ FX_DWORD objnum,
+ FX_DWORD gennum) {
+ CFX_AutoRestorer<int> restorer(&s_CurrentRecursionDepth);
+ if (++s_CurrentRecursionDepth > kParserMaxRecursionDepth)
+ return nullptr;
+
+ FX_FILESIZE SavedPos = m_Pos;
+ bool bIsNumber;
+ CFX_ByteString word = GetNextWord(&bIsNumber);
+ if (word.GetLength() == 0)
+ return nullptr;
+
+ if (bIsNumber) {
+ FX_FILESIZE SavedPos = m_Pos;
+ CFX_ByteString nextword = GetNextWord(&bIsNumber);
+ if (bIsNumber) {
+ CFX_ByteString nextword2 = GetNextWord(nullptr);
+ if (nextword2 == "R")
+ return new CPDF_Reference(pObjList, FXSYS_atoui(word));
+ }
+ m_Pos = SavedPos;
+ return new CPDF_Number(word);
+ }
+
+ if (word == "true" || word == "false")
+ return new CPDF_Boolean(word == "true");
+
+ if (word == "null")
+ return new CPDF_Null;
+
+ if (word == "(") {
+ CFX_ByteString str = ReadString();
+ if (m_pCryptoHandler)
+ m_pCryptoHandler->Decrypt(objnum, gennum, str);
+ return new CPDF_String(str, FALSE);
+ }
+
+ if (word == "<") {
+ CFX_ByteString str = ReadHexString();
+ if (m_pCryptoHandler)
+ m_pCryptoHandler->Decrypt(objnum, gennum, str);
+ return new CPDF_String(str, TRUE);
+ }
+
+ if (word == "[") {
+ std::unique_ptr<CPDF_Array, ReleaseDeleter<CPDF_Array>> pArray(
+ new CPDF_Array);
+ while (CPDF_Object* pObj = GetObject(pObjList, objnum, gennum, true))
+ pArray->Add(pObj);
+
+ return m_WordBuffer[0] == ']' ? pArray.release() : nullptr;
+ }
+
+ if (word[0] == '/') {
+ return new CPDF_Name(
+ PDF_NameDecode(CFX_ByteStringC(m_WordBuffer + 1, m_WordSize - 1)));
+ }
+
+ if (word == "<<") {
+ std::unique_ptr<CPDF_Dictionary, ReleaseDeleter<CPDF_Dictionary>> pDict(
+ new CPDF_Dictionary);
+ while (1) {
+ FX_FILESIZE SavedPos = m_Pos;
+ CFX_ByteString key = GetNextWord(nullptr);
+ if (key.IsEmpty())
+ return nullptr;
+
+ if (key == ">>")
+ break;
+
+ if (key == "endobj") {
+ m_Pos = SavedPos;
+ break;
+ }
+
+ if (key[0] != '/')
+ continue;
+
+ key = PDF_NameDecode(key);
+ std::unique_ptr<CPDF_Object, ReleaseDeleter<CPDF_Object>> obj(
+ GetObject(pObjList, objnum, gennum, true));
+ if (!obj) {
+ uint8_t ch;
+ while (GetNextChar(ch) && ch != 0x0A && ch != 0x0D) {
+ continue;
+ }
+ return nullptr;
+ }
+
+ if (key.GetLength() > 1) {
+ pDict->SetAt(CFX_ByteStringC(key.c_str() + 1, key.GetLength() - 1),
+ obj.release());
+ }
+ }
+
+ FX_FILESIZE SavedPos = m_Pos;
+ CFX_ByteString nextword = GetNextWord(nullptr);
+ if (nextword != "stream") {
+ m_Pos = SavedPos;
+ return pDict.release();
+ }
+
+ return ReadStream(pDict.release(), objnum, gennum);
+ }
+
+ if (word == ">>")
+ m_Pos = SavedPos;
+
+ return nullptr;
+}
+
+unsigned int CPDF_SyntaxParser::ReadEOLMarkers(FX_FILESIZE pos) {
+ unsigned char byte1 = 0;
+ unsigned char byte2 = 0;
+
+ GetCharAt(pos, byte1);
+ GetCharAt(pos + 1, byte2);
+
+ if (byte1 == '\r' && byte2 == '\n')
+ return 2;
+
+ if (byte1 == '\r' || byte1 == '\n')
+ return 1;
+
+ return 0;
+}
+
+CPDF_Stream* CPDF_SyntaxParser::ReadStream(CPDF_Dictionary* pDict,
+ FX_DWORD objnum,
+ FX_DWORD gennum) {
+ CPDF_Object* pLenObj = pDict->GetElement("Length");
+ FX_FILESIZE len = -1;
+ CPDF_Reference* pLenObjRef = ToReference(pLenObj);
+
+ bool differingObjNum = !pLenObjRef || (pLenObjRef->GetObjList() &&
+ pLenObjRef->GetRefObjNum() != objnum);
+ if (pLenObj && differingObjNum)
+ len = pLenObj->GetInteger();
+
+ // Locate the start of stream.
+ ToNextLine();
+ FX_FILESIZE streamStartPos = m_Pos;
+
+ const CFX_ByteStringC kEndStreamStr("endstream");
+ const CFX_ByteStringC kEndObjStr("endobj");
+
+ IPDF_CryptoHandler* pCryptoHandler =
+ objnum == (FX_DWORD)m_MetadataObjnum ? nullptr : m_pCryptoHandler.get();
+ if (!pCryptoHandler) {
+ FX_BOOL bSearchForKeyword = TRUE;
+ if (len >= 0) {
+ pdfium::base::CheckedNumeric<FX_FILESIZE> pos = m_Pos;
+ pos += len;
+ if (pos.IsValid() && pos.ValueOrDie() < m_FileLen)
+ m_Pos = pos.ValueOrDie();
+
+ m_Pos += ReadEOLMarkers(m_Pos);
+ FXSYS_memset(m_WordBuffer, 0, kEndStreamStr.GetLength() + 1);
+ GetNextWordInternal(nullptr);
+ // Earlier version of PDF specification doesn't require EOL marker before
+ // 'endstream' keyword. If keyword 'endstream' follows the bytes in
+ // specified length, it signals the end of stream.
+ if (FXSYS_memcmp(m_WordBuffer, kEndStreamStr.GetPtr(),
+ kEndStreamStr.GetLength()) == 0) {
+ bSearchForKeyword = FALSE;
+ }
+ }
+
+ if (bSearchForKeyword) {
+ // If len is not available, len needs to be calculated
+ // by searching the keywords "endstream" or "endobj".
+ m_Pos = streamStartPos;
+ FX_FILESIZE endStreamOffset = 0;
+ while (endStreamOffset >= 0) {
+ endStreamOffset = FindTag(kEndStreamStr, 0);
+
+ // Can't find "endstream".
+ if (endStreamOffset < 0)
+ break;
+
+ // Stop searching when "endstream" is found.
+ if (IsWholeWord(m_Pos - kEndStreamStr.GetLength(), m_FileLen,
+ kEndStreamStr, TRUE)) {
+ endStreamOffset = m_Pos - streamStartPos - kEndStreamStr.GetLength();
+ break;
+ }
+ }
+
+ m_Pos = streamStartPos;
+ FX_FILESIZE endObjOffset = 0;
+ while (endObjOffset >= 0) {
+ endObjOffset = FindTag(kEndObjStr, 0);
+
+ // Can't find "endobj".
+ if (endObjOffset < 0)
+ break;
+
+ // Stop searching when "endobj" is found.
+ if (IsWholeWord(m_Pos - kEndObjStr.GetLength(), m_FileLen, kEndObjStr,
+ TRUE)) {
+ endObjOffset = m_Pos - streamStartPos - kEndObjStr.GetLength();
+ break;
+ }
+ }
+
+ // Can't find "endstream" or "endobj".
+ if (endStreamOffset < 0 && endObjOffset < 0) {
+ pDict->Release();
+ return nullptr;
+ }
+
+ if (endStreamOffset < 0 && endObjOffset >= 0) {
+ // Correct the position of end stream.
+ endStreamOffset = endObjOffset;
+ } else if (endStreamOffset >= 0 && endObjOffset < 0) {
+ // Correct the position of end obj.
+ endObjOffset = endStreamOffset;
+ } else if (endStreamOffset > endObjOffset) {
+ endStreamOffset = endObjOffset;
+ }
+
+ len = endStreamOffset;
+ int numMarkers = ReadEOLMarkers(streamStartPos + endStreamOffset - 2);
+ if (numMarkers == 2) {
+ len -= 2;
+ } else {
+ numMarkers = ReadEOLMarkers(streamStartPos + endStreamOffset - 1);
+ if (numMarkers == 1) {
+ len -= 1;
+ }
+ }
+
+ if (len < 0) {
+ pDict->Release();
+ return nullptr;
+ }
+ pDict->SetAtInteger("Length", len);
+ }
+ m_Pos = streamStartPos;
+ }
+
+ if (len < 0) {
+ pDict->Release();
+ return nullptr;
+ }
+
+ uint8_t* pData = nullptr;
+ if (len > 0) {
+ pData = FX_Alloc(uint8_t, len);
+ ReadBlock(pData, len);
+ if (pCryptoHandler) {
+ CFX_BinaryBuf dest_buf;
+ dest_buf.EstimateSize(pCryptoHandler->DecryptGetSize(len));
+
+ void* context = pCryptoHandler->DecryptStart(objnum, gennum);
+ pCryptoHandler->DecryptStream(context, pData, len, dest_buf);
+ pCryptoHandler->DecryptFinish(context, dest_buf);
+
+ FX_Free(pData);
+ pData = dest_buf.GetBuffer();
+ len = dest_buf.GetSize();
+ dest_buf.DetachBuffer();
+ }
+ }
+
+ CPDF_Stream* pStream = new CPDF_Stream(pData, len, pDict);
+ streamStartPos = m_Pos;
+ FXSYS_memset(m_WordBuffer, 0, kEndObjStr.GetLength() + 1);
+
+ GetNextWordInternal(nullptr);
+
+ int numMarkers = ReadEOLMarkers(m_Pos);
+ if (m_WordSize == static_cast<unsigned int>(kEndObjStr.GetLength()) &&
+ numMarkers != 0 &&
+ FXSYS_memcmp(m_WordBuffer, kEndObjStr.GetPtr(), kEndObjStr.GetLength()) ==
+ 0) {
+ m_Pos = streamStartPos;
+ }
+ return pStream;
+}
+
+void CPDF_SyntaxParser::InitParser(IFX_FileRead* pFileAccess,
+ FX_DWORD HeaderOffset) {
+ FX_Free(m_pFileBuf);
+
+ m_pFileBuf = FX_Alloc(uint8_t, m_BufSize);
+ m_HeaderOffset = HeaderOffset;
+ m_FileLen = pFileAccess->GetSize();
+ m_Pos = 0;
+ m_pFileAccess = pFileAccess;
+ m_BufOffset = 0;
+ pFileAccess->ReadBlock(
+ m_pFileBuf, 0,
+ (size_t)((FX_FILESIZE)m_BufSize > m_FileLen ? m_FileLen : m_BufSize));
+}
+
+uint32_t CPDF_SyntaxParser::GetDirectNum() {
+ bool bIsNumber;
+ GetNextWordInternal(&bIsNumber);
+ if (!bIsNumber)
+ return 0;
+
+ m_WordBuffer[m_WordSize] = 0;
+ return FXSYS_atoui(reinterpret_cast<const FX_CHAR*>(m_WordBuffer));
+}
+
+bool CPDF_SyntaxParser::IsWholeWord(FX_FILESIZE startpos,
+ FX_FILESIZE limit,
+ const CFX_ByteStringC& tag,
+ FX_BOOL checkKeyword) {
+ const FX_DWORD taglen = tag.GetLength();
+
+ bool bCheckLeft = !PDFCharIsDelimiter(tag[0]) && !PDFCharIsWhitespace(tag[0]);
+ bool bCheckRight = !PDFCharIsDelimiter(tag[taglen - 1]) &&
+ !PDFCharIsWhitespace(tag[taglen - 1]);
+
+ uint8_t ch;
+ if (bCheckRight && startpos + (int32_t)taglen <= limit &&
+ GetCharAt(startpos + (int32_t)taglen, ch)) {
+ if (PDFCharIsNumeric(ch) || PDFCharIsOther(ch) ||
+ (checkKeyword && PDFCharIsDelimiter(ch))) {
+ return false;
+ }
+ }
+
+ if (bCheckLeft && startpos > 0 && GetCharAt(startpos - 1, ch)) {
+ if (PDFCharIsNumeric(ch) || PDFCharIsOther(ch) ||
+ (checkKeyword && PDFCharIsDelimiter(ch))) {
+ return false;
+ }
+ }
+ return true;
+}
+
+// TODO(dsinclair): Split into a SearchWordForward and SearchWordBackwards
+// and drop the bool.
+FX_BOOL CPDF_SyntaxParser::SearchWord(const CFX_ByteStringC& tag,
+ FX_BOOL bWholeWord,
+ FX_BOOL bForward,
+ FX_FILESIZE limit) {
+ int32_t taglen = tag.GetLength();
+ if (taglen == 0)
+ return FALSE;
+
+ FX_FILESIZE pos = m_Pos;
+ int32_t offset = 0;
+ if (!bForward)
+ offset = taglen - 1;
+
+ const uint8_t* tag_data = tag.GetPtr();
+ uint8_t byte;
+ while (1) {
+ if (bForward) {
+ if (limit && pos >= m_Pos + limit)
+ return FALSE;
+
+ if (!GetCharAt(pos, byte))
+ return FALSE;
+
+ } else {
+ if (limit && pos <= m_Pos - limit)
+ return FALSE;
+
+ if (!GetCharAtBackward(pos, byte))
+ return FALSE;
+ }
+
+ if (byte == tag_data[offset]) {
+ if (bForward) {
+ offset++;
+ if (offset < taglen) {
+ pos++;
+ continue;
+ }
+ } else {
+ offset--;
+ if (offset >= 0) {
+ pos--;
+ continue;
+ }
+ }
+
+ FX_FILESIZE startpos = bForward ? pos - taglen + 1 : pos;
+ if (!bWholeWord || IsWholeWord(startpos, limit, tag, FALSE)) {
+ m_Pos = startpos;
+ return TRUE;
+ }
+ }
+
+ if (bForward) {
+ offset = byte == tag_data[0] ? 1 : 0;
+ pos++;
+ } else {
+ offset = byte == tag_data[taglen - 1] ? taglen - 2 : taglen - 1;
+ pos--;
+ }
+
+ if (pos < 0)
+ return FALSE;
+ }
+
+ return FALSE;
+}
+
+int32_t CPDF_SyntaxParser::SearchMultiWord(const CFX_ByteStringC& tags,
+ FX_BOOL bWholeWord,
+ FX_FILESIZE limit) {
+ int32_t ntags = 1;
+ for (int i = 0; i < tags.GetLength(); ++i) {
+ if (tags[i] == 0)
+ ++ntags;
+ }
+
+ std::vector<SearchTagRecord> patterns(ntags);
+ FX_DWORD start = 0;
+ FX_DWORD itag = 0;
+ FX_DWORD max_len = 0;
+ for (int i = 0; i <= tags.GetLength(); ++i) {
+ if (tags[i] == 0) {
+ FX_DWORD len = i - start;
+ max_len = std::max(len, max_len);
+ patterns[itag].m_pTag = tags.GetCStr() + start;
+ patterns[itag].m_Len = len;
+ patterns[itag].m_Offset = 0;
+ start = i + 1;
+ ++itag;
+ }
+ }
+
+ const FX_FILESIZE pos_limit = m_Pos + limit;
+ for (FX_FILESIZE pos = m_Pos; !limit || pos < pos_limit; ++pos) {
+ uint8_t byte;
+ if (!GetCharAt(pos, byte))
+ break;
+
+ for (int i = 0; i < ntags; ++i) {
+ SearchTagRecord& pat = patterns[i];
+ if (pat.m_pTag[pat.m_Offset] != byte) {
+ pat.m_Offset = (pat.m_pTag[0] == byte) ? 1 : 0;
+ continue;
+ }
+
+ ++pat.m_Offset;
+ if (pat.m_Offset != pat.m_Len)
+ continue;
+
+ if (!bWholeWord ||
+ IsWholeWord(pos - pat.m_Len, limit,
+ CFX_ByteStringC(pat.m_pTag, pat.m_Len), FALSE)) {
+ return i;
+ }
+
+ pat.m_Offset = (pat.m_pTag[0] == byte) ? 1 : 0;
+ }
+ }
+ return -1;
+}
+
+FX_FILESIZE CPDF_SyntaxParser::FindTag(const CFX_ByteStringC& tag,
+ FX_FILESIZE limit) {
+ int32_t taglen = tag.GetLength();
+ int32_t match = 0;
+ limit += m_Pos;
+ FX_FILESIZE startpos = m_Pos;
+
+ while (1) {
+ uint8_t ch;
+ if (!GetNextChar(ch))
+ return -1;
+
+ if (ch == tag[match]) {
+ match++;
+ if (match == taglen)
+ return m_Pos - startpos - taglen;
+ } else {
+ match = ch == tag[0] ? 1 : 0;
+ }
+
+ if (limit && m_Pos == limit)
+ return -1;
+ }
+ return -1;
+}
+
+void CPDF_SyntaxParser::SetEncrypt(
+ std::unique_ptr<IPDF_CryptoHandler> pCryptoHandler) {
+ m_pCryptoHandler = std::move(pCryptoHandler);
+}
diff --git a/core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h b/core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h
new file mode 100644
index 0000000000..842b35f8f2
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h
@@ -0,0 +1,96 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_FPDFAPI_FPDF_PARSER_CPDF_SYNTAX_PARSER_H_
+#define CORE_FPDFAPI_FPDF_PARSER_CPDF_SYNTAX_PARSER_H_
+
+#include <memory>
+
+#include "core/include/fxcrt/fx_basic.h"
+
+class CPDF_Dictionary;
+class CPDF_IndirectObjectHolder;
+class CPDF_Object;
+class CPDF_Stream;
+class IFX_FileRead;
+class IPDF_CryptoHandler;
+
+class CPDF_SyntaxParser {
+ public:
+ CPDF_SyntaxParser();
+ ~CPDF_SyntaxParser();
+
+ void InitParser(IFX_FileRead* pFileAccess, FX_DWORD HeaderOffset);
+
+ FX_FILESIZE SavePos() const { return m_Pos; }
+ void RestorePos(FX_FILESIZE pos) { m_Pos = pos; }
+
+ CPDF_Object* GetObject(CPDF_IndirectObjectHolder* pObjList,
+ FX_DWORD objnum,
+ FX_DWORD gennum,
+ FX_BOOL bDecrypt);
+ CPDF_Object* GetObjectByStrict(CPDF_IndirectObjectHolder* pObjList,
+ FX_DWORD objnum,
+ FX_DWORD gennum);
+ CFX_ByteString GetKeyword();
+
+ void ToNextLine();
+ void ToNextWord();
+
+ FX_BOOL SearchWord(const CFX_ByteStringC& word,
+ FX_BOOL bWholeWord,
+ FX_BOOL bForward,
+ FX_FILESIZE limit);
+ int SearchMultiWord(const CFX_ByteStringC& words,
+ FX_BOOL bWholeWord,
+ FX_FILESIZE limit);
+ FX_FILESIZE FindTag(const CFX_ByteStringC& tag, FX_FILESIZE limit);
+
+ void SetEncrypt(std::unique_ptr<IPDF_CryptoHandler> pCryptoHandler);
+
+ FX_BOOL ReadBlock(uint8_t* pBuf, FX_DWORD size);
+ FX_BOOL GetCharAt(FX_FILESIZE pos, uint8_t& ch);
+ CFX_ByteString GetNextWord(bool* bIsNumber);
+
+ private:
+ friend class CPDF_Parser;
+ friend class CPDF_DataAvail;
+ friend class cpdf_syntax_parser_ReadHexString_Test;
+
+ static const int kParserMaxRecursionDepth = 64;
+ static int s_CurrentRecursionDepth;
+
+ uint32_t GetDirectNum();
+
+ FX_BOOL GetNextChar(uint8_t& ch);
+ FX_BOOL GetCharAtBackward(FX_FILESIZE pos, uint8_t& ch);
+ void GetNextWordInternal(bool* bIsNumber);
+ bool IsWholeWord(FX_FILESIZE startpos,
+ FX_FILESIZE limit,
+ const CFX_ByteStringC& tag,
+ FX_BOOL checkKeyword);
+
+ CFX_ByteString ReadString();
+ CFX_ByteString ReadHexString();
+ unsigned int ReadEOLMarkers(FX_FILESIZE pos);
+ CPDF_Stream* ReadStream(CPDF_Dictionary* pDict,
+ FX_DWORD objnum,
+ FX_DWORD gennum);
+
+ FX_FILESIZE m_Pos;
+ int m_MetadataObjnum;
+ IFX_FileRead* m_pFileAccess;
+ FX_DWORD m_HeaderOffset;
+ FX_FILESIZE m_FileLen;
+ uint8_t* m_pFileBuf;
+ FX_DWORD m_BufSize;
+ FX_FILESIZE m_BufOffset;
+ std::unique_ptr<IPDF_CryptoHandler> m_pCryptoHandler;
+ uint8_t m_WordBuffer[257];
+ FX_DWORD m_WordSize;
+};
+
+#endif // CORE_FPDFAPI_FPDF_PARSER_CPDF_SYNTAX_PARSER_H_
diff --git a/core/fpdfapi/fpdf_parser/cpdf_syntax_parser_unittest.cpp b/core/fpdfapi/fpdf_parser/cpdf_syntax_parser_unittest.cpp
new file mode 100644
index 0000000000..f501c01715
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/cpdf_syntax_parser_unittest.cpp
@@ -0,0 +1,171 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <limits>
+#include <string>
+
+#include "core/fpdfapi/fpdf_parser/cpdf_syntax_parser.h"
+#include "core/include/fpdfapi/cpdf_parser.h"
+#include "core/include/fxcrt/fx_ext.h"
+#include "core/include/fxcrt/fx_stream.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "testing/utils/path_service.h"
+
+TEST(cpdf_syntax_parser, ReadHexString) {
+ {
+ // Empty string.
+ uint8_t data[] = "";
+ ScopedFileStream stream(FX_CreateMemoryStream(data, 0, FALSE));
+
+ CPDF_SyntaxParser parser;
+ parser.InitParser(stream.get(), 0);
+ EXPECT_EQ("", parser.ReadHexString());
+ EXPECT_EQ(0, parser.SavePos());
+ }
+
+ {
+ // Blank string.
+ uint8_t data[] = " ";
+ ScopedFileStream stream(FX_CreateMemoryStream(data, 2, FALSE));
+
+ CPDF_SyntaxParser parser;
+ parser.InitParser(stream.get(), 0);
+ EXPECT_EQ("", parser.ReadHexString());
+ EXPECT_EQ(2, parser.SavePos());
+ }
+
+ {
+ // Skips unknown characters.
+ uint8_t data[] = "z12b";
+ ScopedFileStream stream(FX_CreateMemoryStream(data, 4, FALSE));
+
+ CPDF_SyntaxParser parser;
+ parser.InitParser(stream.get(), 0);
+ EXPECT_EQ("\x12\xb0", parser.ReadHexString());
+ EXPECT_EQ(4, parser.SavePos());
+ }
+
+ {
+ // Skips unknown characters.
+ uint8_t data[] = "*<&*#$^&@1";
+ ScopedFileStream stream(FX_CreateMemoryStream(data, 10, FALSE));
+
+ CPDF_SyntaxParser parser;
+ parser.InitParser(stream.get(), 0);
+ EXPECT_EQ("\x10", parser.ReadHexString());
+ EXPECT_EQ(10, parser.SavePos());
+ }
+
+ {
+ // Skips unknown characters.
+ uint8_t data[] = "\x80zab";
+ ScopedFileStream stream(FX_CreateMemoryStream(data, 4, FALSE));
+
+ CPDF_SyntaxParser parser;
+ parser.InitParser(stream.get(), 0);
+ EXPECT_EQ("\xab", parser.ReadHexString());
+ EXPECT_EQ(4, parser.SavePos());
+ }
+
+ {
+ // Skips unknown characters.
+ uint8_t data[] = "\xffzab";
+ ScopedFileStream stream(FX_CreateMemoryStream(data, 4, FALSE));
+
+ CPDF_SyntaxParser parser;
+ parser.InitParser(stream.get(), 0);
+ EXPECT_EQ("\xab", parser.ReadHexString());
+ EXPECT_EQ(4, parser.SavePos());
+ }
+
+ {
+ // Regular conversion.
+ uint8_t data[] = "1A2b>abcd";
+ ScopedFileStream stream(FX_CreateMemoryStream(data, 9, FALSE));
+
+ CPDF_SyntaxParser parser;
+ parser.InitParser(stream.get(), 0);
+ EXPECT_EQ("\x1a\x2b", parser.ReadHexString());
+ EXPECT_EQ(5, parser.SavePos());
+ }
+
+ {
+ // Position out of bounds.
+ uint8_t data[] = "12ab>";
+ ScopedFileStream stream(FX_CreateMemoryStream(data, 5, FALSE));
+
+ CPDF_SyntaxParser parser;
+ parser.InitParser(stream.get(), 0);
+ parser.RestorePos(5);
+ EXPECT_EQ("", parser.ReadHexString());
+
+ parser.RestorePos(6);
+ EXPECT_EQ("", parser.ReadHexString());
+
+ parser.RestorePos(-1);
+ EXPECT_EQ("", parser.ReadHexString());
+
+ parser.RestorePos(std::numeric_limits<FX_FILESIZE>::max());
+ EXPECT_EQ("", parser.ReadHexString());
+
+ // Check string still parses when set to 0.
+ parser.RestorePos(0);
+ EXPECT_EQ("\x12\xab", parser.ReadHexString());
+ }
+
+ {
+ // Missing ending >.
+ uint8_t data[] = "1A2b";
+ ScopedFileStream stream(FX_CreateMemoryStream(data, 4, FALSE));
+
+ CPDF_SyntaxParser parser;
+ parser.InitParser(stream.get(), 0);
+ EXPECT_EQ("\x1a\x2b", parser.ReadHexString());
+ EXPECT_EQ(4, parser.SavePos());
+ }
+
+ {
+ // Missing ending >.
+ uint8_t data[] = "12abz";
+ ScopedFileStream stream(FX_CreateMemoryStream(data, 5, FALSE));
+
+ CPDF_SyntaxParser parser;
+ parser.InitParser(stream.get(), 0);
+ EXPECT_EQ("\x12\xab", parser.ReadHexString());
+ EXPECT_EQ(5, parser.SavePos());
+ }
+
+ {
+ // Uneven number of bytes.
+ uint8_t data[] = "1A2>asdf";
+ ScopedFileStream stream(FX_CreateMemoryStream(data, 8, FALSE));
+
+ CPDF_SyntaxParser parser;
+ parser.InitParser(stream.get(), 0);
+ EXPECT_EQ("\x1a\x20", parser.ReadHexString());
+ EXPECT_EQ(4, parser.SavePos());
+ }
+
+ {
+ // Uneven number of bytes.
+ uint8_t data[] = "1A2zasdf";
+ ScopedFileStream stream(FX_CreateMemoryStream(data, 8, FALSE));
+
+ CPDF_SyntaxParser parser;
+ parser.InitParser(stream.get(), 0);
+ EXPECT_EQ("\x1a\x2a\xdf", parser.ReadHexString());
+ EXPECT_EQ(8, parser.SavePos());
+ }
+
+ {
+ // Just ending character.
+ uint8_t data[] = ">";
+ ScopedFileStream stream(FX_CreateMemoryStream(data, 1, FALSE));
+
+ CPDF_SyntaxParser parser;
+ parser.InitParser(stream.get(), 0);
+ EXPECT_EQ("", parser.ReadHexString());
+ EXPECT_EQ(1, parser.SavePos());
+ }
+}
diff --git a/core/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp b/core/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp
new file mode 100644
index 0000000000..eeb365d0e6
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp
@@ -0,0 +1,592 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/include/fpdfapi/fpdf_parser_decode.h"
+
+#include <limits.h>
+#include <vector>
+
+#include "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h"
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fxcodec/fx_codec.h"
+#include "core/include/fxcrt/fx_ext.h"
+#include "third_party/base/stl_util.h"
+
+#define _STREAM_MAX_SIZE_ 20 * 1024 * 1024
+
+const FX_WORD PDFDocEncoding[256] = {
+ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008,
+ 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011,
+ 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x02d8, 0x02c7, 0x02c6,
+ 0x02d9, 0x02dd, 0x02db, 0x02da, 0x02dc, 0x0020, 0x0021, 0x0022, 0x0023,
+ 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c,
+ 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035,
+ 0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e,
+ 0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+ 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+ 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059,
+ 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062,
+ 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b,
+ 0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074,
+ 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d,
+ 0x007e, 0x0000, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x0192,
+ 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,
+ 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x0141, 0x0152, 0x0160, 0x0178,
+ 0x017d, 0x0131, 0x0142, 0x0153, 0x0161, 0x017e, 0x0000, 0x20ac, 0x00a1,
+ 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa,
+ 0x00ab, 0x00ac, 0x0000, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3,
+ 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc,
+ 0x00bd, 0x00be, 0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5,
+ 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce,
+ 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 0x00e0,
+ 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9,
+ 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2,
+ 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb,
+ 0x00fc, 0x00fd, 0x00fe, 0x00ff};
+
+FX_DWORD A85Decode(const uint8_t* src_buf,
+ FX_DWORD src_size,
+ uint8_t*& dest_buf,
+ FX_DWORD& dest_size) {
+ dest_size = 0;
+ dest_buf = nullptr;
+ if (src_size == 0)
+ return 0;
+
+ // Count legal characters and zeros.
+ FX_DWORD zcount = 0;
+ FX_DWORD pos = 0;
+ while (pos < src_size) {
+ uint8_t ch = src_buf[pos];
+ if (ch == 'z') {
+ zcount++;
+ } else if ((ch < '!' || ch > 'u') && !PDFCharIsLineEnding(ch) &&
+ ch != ' ' && ch != '\t') {
+ break;
+ }
+ pos++;
+ }
+ // No content to decode.
+ if (pos == 0)
+ return 0;
+
+ // Count the space needed to contain non-zero characters. The encoding ratio
+ // of Ascii85 is 4:5.
+ FX_DWORD space_for_non_zeroes = (pos - zcount) / 5 * 4 + 4;
+ if (zcount > (UINT_MAX - space_for_non_zeroes) / 4) {
+ return (FX_DWORD)-1;
+ }
+ dest_buf = FX_Alloc(uint8_t, zcount * 4 + space_for_non_zeroes);
+ size_t state = 0;
+ uint32_t res = 0;
+ pos = dest_size = 0;
+ while (pos < src_size) {
+ uint8_t ch = src_buf[pos++];
+ if (PDFCharIsLineEnding(ch) || ch == ' ' || ch == '\t')
+ continue;
+
+ if (ch == 'z') {
+ FXSYS_memset(dest_buf + dest_size, 0, 4);
+ state = 0;
+ res = 0;
+ dest_size += 4;
+ } else if (ch >= '!' && ch <= 'u') {
+ res = res * 85 + ch - 33;
+ state++;
+ if (state == 5) {
+ for (size_t i = 0; i < 4; i++) {
+ dest_buf[dest_size++] = (uint8_t)(res >> (3 - i) * 8);
+ }
+ state = 0;
+ res = 0;
+ }
+ } else {
+ // The end or illegal character.
+ break;
+ }
+ }
+ // Handle partial group.
+ if (state) {
+ for (size_t i = state; i < 5; i++)
+ res = res * 85 + 84;
+ for (size_t i = 0; i < state - 1; i++)
+ dest_buf[dest_size++] = (uint8_t)(res >> (3 - i) * 8);
+ }
+ if (pos < src_size && src_buf[pos] == '>')
+ pos++;
+ return pos;
+}
+
+FX_DWORD HexDecode(const uint8_t* src_buf,
+ FX_DWORD src_size,
+ uint8_t*& dest_buf,
+ FX_DWORD& dest_size) {
+ dest_size = 0;
+ if (src_size == 0) {
+ dest_buf = nullptr;
+ return 0;
+ }
+
+ FX_DWORD i = 0;
+ // Find the end of data.
+ while (i < src_size && src_buf[i] != '>')
+ i++;
+
+ dest_buf = FX_Alloc(uint8_t, i / 2 + 1);
+ bool bFirst = true;
+ for (i = 0; i < src_size; i++) {
+ uint8_t ch = src_buf[i];
+ if (PDFCharIsLineEnding(ch) || ch == ' ' || ch == '\t')
+ continue;
+
+ if (ch == '>') {
+ ++i;
+ break;
+ }
+ if (!std::isxdigit(ch))
+ continue;
+
+ int digit = FXSYS_toHexDigit(ch);
+ if (bFirst)
+ dest_buf[dest_size] = digit * 16;
+ else
+ dest_buf[dest_size++] += digit;
+
+ bFirst = !bFirst;
+ }
+ if (!bFirst)
+ dest_size++;
+ return i;
+}
+
+FX_DWORD RunLengthDecode(const uint8_t* src_buf,
+ FX_DWORD src_size,
+ uint8_t*& dest_buf,
+ FX_DWORD& dest_size) {
+ FX_DWORD i = 0;
+ FX_DWORD old;
+ dest_size = 0;
+ while (i < src_size) {
+ if (src_buf[i] < 128) {
+ old = dest_size;
+ dest_size += src_buf[i] + 1;
+ if (dest_size < old) {
+ return (FX_DWORD)-1;
+ }
+ i += src_buf[i] + 2;
+ } else if (src_buf[i] > 128) {
+ old = dest_size;
+ dest_size += 257 - src_buf[i];
+ if (dest_size < old) {
+ return (FX_DWORD)-1;
+ }
+ i += 2;
+ } else {
+ break;
+ }
+ }
+ if (dest_size >= _STREAM_MAX_SIZE_) {
+ return -1;
+ }
+ dest_buf = FX_Alloc(uint8_t, dest_size);
+ i = 0;
+ int dest_count = 0;
+ while (i < src_size) {
+ if (src_buf[i] < 128) {
+ FX_DWORD copy_len = src_buf[i] + 1;
+ FX_DWORD buf_left = src_size - i - 1;
+ if (buf_left < copy_len) {
+ FX_DWORD delta = copy_len - buf_left;
+ copy_len = buf_left;
+ FXSYS_memset(dest_buf + dest_count + copy_len, '\0', delta);
+ }
+ FXSYS_memcpy(dest_buf + dest_count, src_buf + i + 1, copy_len);
+ dest_count += src_buf[i] + 1;
+ i += src_buf[i] + 2;
+ } else if (src_buf[i] > 128) {
+ int fill = 0;
+ if (i < src_size - 1) {
+ fill = src_buf[i + 1];
+ }
+ FXSYS_memset(dest_buf + dest_count, fill, 257 - src_buf[i]);
+ dest_count += 257 - src_buf[i];
+ i += 2;
+ } else {
+ break;
+ }
+ }
+ FX_DWORD ret = i + 1;
+ if (ret > src_size) {
+ ret = src_size;
+ }
+ return ret;
+}
+
+ICodec_ScanlineDecoder* FPDFAPI_CreateFaxDecoder(
+ const uint8_t* src_buf,
+ FX_DWORD src_size,
+ int width,
+ int height,
+ const CPDF_Dictionary* pParams) {
+ int K = 0;
+ FX_BOOL EndOfLine = FALSE;
+ FX_BOOL ByteAlign = FALSE;
+ FX_BOOL BlackIs1 = FALSE;
+ int Columns = 1728;
+ int Rows = 0;
+ if (pParams) {
+ K = pParams->GetIntegerBy("K");
+ EndOfLine = pParams->GetIntegerBy("EndOfLine");
+ ByteAlign = pParams->GetIntegerBy("EncodedByteAlign");
+ BlackIs1 = pParams->GetIntegerBy("BlackIs1");
+ Columns = pParams->GetIntegerBy("Columns", 1728);
+ Rows = pParams->GetIntegerBy("Rows");
+ if (Rows > USHRT_MAX) {
+ Rows = 0;
+ }
+ if (Columns <= 0 || Rows < 0 || Columns > USHRT_MAX || Rows > USHRT_MAX) {
+ return nullptr;
+ }
+ }
+ return CPDF_ModuleMgr::Get()->GetFaxModule()->CreateDecoder(
+ src_buf, src_size, width, height, K, EndOfLine, ByteAlign, BlackIs1,
+ Columns, Rows);
+}
+
+static FX_BOOL CheckFlateDecodeParams(int Colors,
+ int BitsPerComponent,
+ int Columns) {
+ if (Columns < 0) {
+ return FALSE;
+ }
+ int check = Columns;
+ if (Colors < 0 || (check > 0 && Colors > INT_MAX / check)) {
+ return FALSE;
+ }
+ check *= Colors;
+ if (BitsPerComponent < 0 ||
+ (check > 0 && BitsPerComponent > INT_MAX / check)) {
+ return FALSE;
+ }
+ check *= BitsPerComponent;
+ if (check > INT_MAX - 7) {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+ICodec_ScanlineDecoder* FPDFAPI_CreateFlateDecoder(
+ const uint8_t* src_buf,
+ FX_DWORD src_size,
+ int width,
+ int height,
+ int nComps,
+ int bpc,
+ const CPDF_Dictionary* pParams) {
+ int predictor = 0;
+ int Colors = 0, BitsPerComponent = 0, Columns = 0;
+ if (pParams) {
+ predictor = pParams->GetIntegerBy("Predictor");
+ Colors = pParams->GetIntegerBy("Colors", 1);
+ BitsPerComponent = pParams->GetIntegerBy("BitsPerComponent", 8);
+ Columns = pParams->GetIntegerBy("Columns", 1);
+ if (!CheckFlateDecodeParams(Colors, BitsPerComponent, Columns)) {
+ return nullptr;
+ }
+ }
+ return CPDF_ModuleMgr::Get()->GetFlateModule()->CreateDecoder(
+ src_buf, src_size, width, height, nComps, bpc, predictor, Colors,
+ BitsPerComponent, Columns);
+}
+
+FX_DWORD FPDFAPI_FlateOrLZWDecode(FX_BOOL bLZW,
+ const uint8_t* src_buf,
+ FX_DWORD src_size,
+ CPDF_Dictionary* pParams,
+ FX_DWORD estimated_size,
+ uint8_t*& dest_buf,
+ FX_DWORD& dest_size) {
+ int predictor = 0;
+ FX_BOOL bEarlyChange = TRUE;
+ int Colors = 0, BitsPerComponent = 0, Columns = 0;
+ if (pParams) {
+ predictor = pParams->GetIntegerBy("Predictor");
+ bEarlyChange = pParams->GetIntegerBy("EarlyChange", 1);
+ Colors = pParams->GetIntegerBy("Colors", 1);
+ BitsPerComponent = pParams->GetIntegerBy("BitsPerComponent", 8);
+ Columns = pParams->GetIntegerBy("Columns", 1);
+ if (!CheckFlateDecodeParams(Colors, BitsPerComponent, Columns)) {
+ return (FX_DWORD)-1;
+ }
+ }
+ return CPDF_ModuleMgr::Get()->GetFlateModule()->FlateOrLZWDecode(
+ bLZW, src_buf, src_size, bEarlyChange, predictor, Colors,
+ BitsPerComponent, Columns, estimated_size, dest_buf, dest_size);
+}
+
+FX_BOOL PDF_DataDecode(const uint8_t* src_buf,
+ FX_DWORD src_size,
+ const CPDF_Dictionary* pDict,
+ uint8_t*& dest_buf,
+ FX_DWORD& dest_size,
+ CFX_ByteString& ImageEncoding,
+ CPDF_Dictionary*& pImageParms,
+ FX_DWORD last_estimated_size,
+ FX_BOOL bImageAcc) {
+ CPDF_Object* pDecoder = pDict ? pDict->GetElementValue("Filter") : nullptr;
+ if (!pDecoder || (!pDecoder->IsArray() && !pDecoder->IsName()))
+ return FALSE;
+
+ CPDF_Object* pParams =
+ pDict ? pDict->GetElementValue("DecodeParms") : nullptr;
+ std::vector<CFX_ByteString> DecoderList;
+ CFX_ArrayTemplate<CPDF_Object*> ParamList;
+ if (CPDF_Array* pDecoders = pDecoder->AsArray()) {
+ CPDF_Array* pParamsArray = ToArray(pParams);
+ if (!pParamsArray)
+ pParams = nullptr;
+
+ for (FX_DWORD i = 0; i < pDecoders->GetCount(); i++) {
+ DecoderList.push_back(pDecoders->GetConstStringAt(i));
+ ParamList.Add(pParams ? pParamsArray->GetDictAt(i) : nullptr);
+ }
+ } else {
+ DecoderList.push_back(pDecoder->GetConstString());
+ ParamList.Add(pParams ? pParams->GetDict() : nullptr);
+ }
+ uint8_t* last_buf = (uint8_t*)src_buf;
+ FX_DWORD last_size = src_size;
+ int nSize = pdfium::CollectionSize<int>(DecoderList);
+ for (int i = 0; i < nSize; i++) {
+ int estimated_size = i == nSize - 1 ? last_estimated_size : 0;
+ CFX_ByteString decoder = DecoderList[i];
+ // Use ToDictionary here because we can push nullptr into the ParamList.
+ CPDF_Dictionary* pParam = ToDictionary(ParamList[i]);
+ uint8_t* new_buf = nullptr;
+ FX_DWORD new_size = (FX_DWORD)-1;
+ int offset = -1;
+ if (decoder == "FlateDecode" || decoder == "Fl") {
+ if (bImageAcc && i == nSize - 1) {
+ ImageEncoding = "FlateDecode";
+ dest_buf = (uint8_t*)last_buf;
+ dest_size = last_size;
+ pImageParms = pParam;
+ return TRUE;
+ }
+ offset = FPDFAPI_FlateOrLZWDecode(FALSE, last_buf, last_size, pParam,
+ estimated_size, new_buf, new_size);
+ } else if (decoder == "LZWDecode" || decoder == "LZW") {
+ offset = FPDFAPI_FlateOrLZWDecode(TRUE, last_buf, last_size, pParam,
+ estimated_size, new_buf, new_size);
+ } else if (decoder == "ASCII85Decode" || decoder == "A85") {
+ offset = A85Decode(last_buf, last_size, new_buf, new_size);
+ } else if (decoder == "ASCIIHexDecode" || decoder == "AHx") {
+ offset = HexDecode(last_buf, last_size, new_buf, new_size);
+ } else if (decoder == "RunLengthDecode" || decoder == "RL") {
+ if (bImageAcc && i == nSize - 1) {
+ ImageEncoding = "RunLengthDecode";
+ dest_buf = (uint8_t*)last_buf;
+ dest_size = last_size;
+ pImageParms = pParam;
+ return TRUE;
+ }
+ offset = RunLengthDecode(last_buf, last_size, new_buf, new_size);
+ } else if (decoder == "Crypt") {
+ continue;
+ } else {
+ // If we get here, assume it's an image decoder.
+ if (decoder == "DCT") {
+ decoder = "DCTDecode";
+ } else if (decoder == "CCF") {
+ decoder = "CCITTFaxDecode";
+ }
+ ImageEncoding = decoder;
+ pImageParms = pParam;
+ dest_buf = (uint8_t*)last_buf;
+ dest_size = last_size;
+ if (CPDF_Array* pDecoders = pDecoder->AsArray())
+ pDecoders->RemoveAt(i + 1, pDecoders->GetCount() - i - 1);
+ return TRUE;
+ }
+ if (last_buf != src_buf) {
+ FX_Free(last_buf);
+ }
+ if (offset == -1) {
+ FX_Free(new_buf);
+ return FALSE;
+ }
+ last_buf = new_buf;
+ last_size = new_size;
+ }
+ ImageEncoding = "";
+ pImageParms = nullptr;
+ dest_buf = last_buf;
+ dest_size = last_size;
+ return TRUE;
+}
+
+CFX_WideString PDF_DecodeText(const uint8_t* src_data, FX_DWORD src_len) {
+ CFX_WideString result;
+ if (src_len >= 2 && ((src_data[0] == 0xfe && src_data[1] == 0xff) ||
+ (src_data[0] == 0xff && src_data[1] == 0xfe))) {
+ bool bBE = src_data[0] == 0xfe;
+ FX_DWORD max_chars = (src_len - 2) / 2;
+ if (!max_chars) {
+ return result;
+ }
+ if (src_data[0] == 0xff) {
+ bBE = !src_data[2];
+ }
+ FX_WCHAR* dest_buf = result.GetBuffer(max_chars);
+ const uint8_t* uni_str = src_data + 2;
+ int dest_pos = 0;
+ for (FX_DWORD i = 0; i < max_chars * 2; i += 2) {
+ FX_WORD unicode = bBE ? (uni_str[i] << 8 | uni_str[i + 1])
+ : (uni_str[i + 1] << 8 | uni_str[i]);
+ if (unicode == 0x1b) {
+ i += 2;
+ while (i < max_chars * 2) {
+ FX_WORD unicode = bBE ? (uni_str[i] << 8 | uni_str[i + 1])
+ : (uni_str[i + 1] << 8 | uni_str[i]);
+ i += 2;
+ if (unicode == 0x1b) {
+ break;
+ }
+ }
+ } else {
+ dest_buf[dest_pos++] = unicode;
+ }
+ }
+ result.ReleaseBuffer(dest_pos);
+ } else {
+ FX_WCHAR* dest_buf = result.GetBuffer(src_len);
+ for (FX_DWORD i = 0; i < src_len; i++)
+ dest_buf[i] = PDFDocEncoding[src_data[i]];
+ result.ReleaseBuffer(src_len);
+ }
+ return result;
+}
+
+CFX_WideString PDF_DecodeText(const CFX_ByteString& bstr) {
+ return PDF_DecodeText((const uint8_t*)bstr.c_str(), bstr.GetLength());
+}
+
+CFX_ByteString PDF_EncodeText(const FX_WCHAR* pString, int len) {
+ if (len == -1) {
+ len = FXSYS_wcslen(pString);
+ }
+ CFX_ByteString result;
+ FX_CHAR* dest_buf1 = result.GetBuffer(len);
+ int i;
+ for (i = 0; i < len; i++) {
+ int code;
+ for (code = 0; code < 256; code++)
+ if (PDFDocEncoding[code] == pString[i]) {
+ break;
+ }
+ if (code == 256) {
+ break;
+ }
+ dest_buf1[i] = code;
+ }
+ result.ReleaseBuffer(i);
+ if (i == len) {
+ return result;
+ }
+
+ if (len > INT_MAX / 2 - 1) {
+ result.ReleaseBuffer(0);
+ return result;
+ }
+
+ int encLen = len * 2 + 2;
+
+ uint8_t* dest_buf2 = (uint8_t*)result.GetBuffer(encLen);
+ dest_buf2[0] = 0xfe;
+ dest_buf2[1] = 0xff;
+ dest_buf2 += 2;
+ for (int i = 0; i < len; i++) {
+ *dest_buf2++ = pString[i] >> 8;
+ *dest_buf2++ = (uint8_t)pString[i];
+ }
+ result.ReleaseBuffer(encLen);
+ return result;
+}
+
+CFX_ByteString PDF_EncodeText(const CFX_WideString& str) {
+ return PDF_EncodeText(str.c_str(), str.GetLength());
+}
+
+CFX_ByteString PDF_EncodeString(const CFX_ByteString& src, FX_BOOL bHex) {
+ CFX_ByteTextBuf result;
+ int srclen = src.GetLength();
+ if (bHex) {
+ result.AppendChar('<');
+ for (int i = 0; i < srclen; i++) {
+ result.AppendChar("0123456789ABCDEF"[src[i] / 16]);
+ result.AppendChar("0123456789ABCDEF"[src[i] % 16]);
+ }
+ result.AppendChar('>');
+ return result.GetByteString();
+ }
+ result.AppendChar('(');
+ for (int i = 0; i < srclen; i++) {
+ uint8_t ch = src[i];
+ if (ch == ')' || ch == '\\' || ch == '(') {
+ result.AppendChar('\\');
+ } else if (ch == 0x0a) {
+ result << "\\n";
+ continue;
+ } else if (ch == 0x0d) {
+ result << "\\r";
+ continue;
+ }
+ result.AppendChar(ch);
+ }
+ result.AppendChar(')');
+ return result.GetByteString();
+}
+
+void FlateEncode(const uint8_t* src_buf,
+ FX_DWORD src_size,
+ uint8_t*& dest_buf,
+ FX_DWORD& dest_size) {
+ CCodec_ModuleMgr* pEncoders = CPDF_ModuleMgr::Get()->GetCodecModule();
+ if (pEncoders) {
+ pEncoders->GetFlateModule()->Encode(src_buf, src_size, dest_buf, dest_size);
+ }
+}
+
+void FlateEncode(const uint8_t* src_buf,
+ FX_DWORD src_size,
+ int predictor,
+ int Colors,
+ int BitsPerComponent,
+ int Columns,
+ uint8_t*& dest_buf,
+ FX_DWORD& dest_size) {
+ CCodec_ModuleMgr* pEncoders = CPDF_ModuleMgr::Get()->GetCodecModule();
+ if (pEncoders) {
+ pEncoders->GetFlateModule()->Encode(src_buf, src_size, predictor, Colors,
+ BitsPerComponent, Columns, dest_buf,
+ dest_size);
+ }
+}
+
+FX_DWORD FlateDecode(const uint8_t* src_buf,
+ FX_DWORD src_size,
+ uint8_t*& dest_buf,
+ FX_DWORD& dest_size) {
+ CCodec_ModuleMgr* pEncoders = CPDF_ModuleMgr::Get()->GetCodecModule();
+ if (pEncoders) {
+ return pEncoders->GetFlateModule()->FlateOrLZWDecode(
+ FALSE, src_buf, src_size, FALSE, 0, 0, 0, 0, 0, dest_buf, dest_size);
+ }
+ return 0;
+}
diff --git a/core/fpdfapi/fpdf_parser/fpdf_parser_decode_embeddertest.cpp b/core/fpdfapi/fpdf_parser/fpdf_parser_decode_embeddertest.cpp
new file mode 100644
index 0000000000..2412f4310c
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/fpdf_parser_decode_embeddertest.cpp
@@ -0,0 +1,117 @@
+// Copyright 2015 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "core/include/fpdfapi/fpdf_parser_decode.h"
+
+#include <cstring>
+#include <string>
+
+#include "core/include/fxcrt/fx_basic.h"
+#include "testing/embedder_test.h"
+#include "testing/fx_string_testhelpers.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "testing/test_support.h"
+
+class FPDFParserDecodeEmbeddertest : public EmbedderTest {};
+
+// NOTE: python's zlib.compress() and zlib.decompress() may be useful for
+// external validation of the FlateEncode/FlateDecode test cases.
+
+TEST_F(FPDFParserDecodeEmbeddertest, FlateEncode) {
+ pdfium::StrFuncTestData flate_encode_cases[] = {
+ STR_IN_OUT_CASE("", "\x78\x9c\x03\x00\x00\x00\x00\x01"),
+ STR_IN_OUT_CASE(" ", "\x78\x9c\x53\x00\x00\x00\x21\x00\x21"),
+ STR_IN_OUT_CASE("123", "\x78\x9c\x33\x34\x32\x06\x00\01\x2d\x00\x97"),
+ STR_IN_OUT_CASE("\x00\xff", "\x78\x9c\x63\xf8\x0f\x00\x01\x01\x01\x00"),
+ STR_IN_OUT_CASE(
+ "1 0 0 -1 29 763 cm\n0 0 555 735 re\nW n\nq\n0 0 555 734.394 re\n"
+ "W n\nq\n0.8009 0 0 0.8009 0 0 cm\n1 1 1 RG 1 1 1 rg\n/G0 gs\n"
+ "0 0 693 917 re\nf\nQ\nQ\n",
+ "\x78\x9c\x33\x54\x30\x00\x42\x5d\x43\x05\x23\x4b\x05\x73\x33\x63"
+ "\x85\xe4\x5c\x2e\x90\x80\xa9\xa9\xa9\x82\xb9\xb1\xa9\x42\x51\x2a"
+ "\x57\xb8\x42\x1e\x57\x21\x92\xa0\x89\x9e\xb1\xa5\x09\x92\x84\x9e"
+ "\x85\x81\x81\x25\xd8\x14\x24\x26\xd0\x18\x43\x05\x10\x0c\x72\x57"
+ "\x80\x30\x8a\xd2\xb9\xf4\xdd\x0d\x14\xd2\x8b\xc1\x46\x99\x59\x1a"
+ "\x2b\x58\x1a\x9a\x83\x8c\x49\xe3\x0a\x04\x42\x00\x37\x4c\x1b\x42"),
+ };
+
+ for (size_t i = 0; i < FX_ArraySize(flate_encode_cases); ++i) {
+ const pdfium::StrFuncTestData& data = flate_encode_cases[i];
+ unsigned char* result;
+ unsigned int result_size;
+ FlateEncode(data.input, data.input_size, result, result_size);
+ ASSERT_TRUE(result);
+ EXPECT_EQ(std::string((const char*)data.expected, data.expected_size),
+ std::string((const char*)result, result_size))
+ << " for case " << i;
+ FX_Free(result);
+ }
+}
+
+TEST_F(FPDFParserDecodeEmbeddertest, FlateDecode) {
+ pdfium::DecodeTestData flate_decode_cases[] = {
+ STR_IN_OUT_CASE("", "", 0),
+ STR_IN_OUT_CASE("preposterous nonsense", "", 2),
+ STR_IN_OUT_CASE("\x78\x9c\x03\x00\x00\x00\x00\x01", "", 8),
+ STR_IN_OUT_CASE("\x78\x9c\x53\x00\x00\x00\x21\x00\x21", " ", 9),
+ STR_IN_OUT_CASE("\x78\x9c\x33\x34\x32\x06\x00\01\x2d\x00\x97", "123", 11),
+ STR_IN_OUT_CASE("\x78\x9c\x63\xf8\x0f\x00\x01\x01\x01\x00", "\x00\xff",
+ 10),
+ STR_IN_OUT_CASE(
+ "\x78\x9c\x33\x54\x30\x00\x42\x5d\x43\x05\x23\x4b\x05\x73\x33\x63"
+ "\x85\xe4\x5c\x2e\x90\x80\xa9\xa9\xa9\x82\xb9\xb1\xa9\x42\x51\x2a"
+ "\x57\xb8\x42\x1e\x57\x21\x92\xa0\x89\x9e\xb1\xa5\x09\x92\x84\x9e"
+ "\x85\x81\x81\x25\xd8\x14\x24\x26\xd0\x18\x43\x05\x10\x0c\x72\x57"
+ "\x80\x30\x8a\xd2\xb9\xf4\xdd\x0d\x14\xd2\x8b\xc1\x46\x99\x59\x1a"
+ "\x2b\x58\x1a\x9a\x83\x8c\x49\xe3\x0a\x04\x42\x00\x37\x4c\x1b\x42",
+ "1 0 0 -1 29 763 cm\n0 0 555 735 re\nW n\nq\n0 0 555 734.394 re\n"
+ "W n\nq\n0.8009 0 0 0.8009 0 0 cm\n1 1 1 RG 1 1 1 rg\n/G0 gs\n"
+ "0 0 693 917 re\nf\nQ\nQ\n",
+ 96),
+ };
+
+ for (size_t i = 0; i < FX_ArraySize(flate_decode_cases); ++i) {
+ const pdfium::DecodeTestData& data = flate_decode_cases[i];
+ unsigned char* result;
+ unsigned int result_size;
+ EXPECT_EQ(data.processed_size,
+ FlateDecode(data.input, data.input_size, result, result_size))
+ << " for case " << i;
+ ASSERT_TRUE(result);
+ EXPECT_EQ(std::string((const char*)data.expected, data.expected_size),
+ std::string((const char*)result, result_size))
+ << " for case " << i;
+ FX_Free(result);
+ }
+}
+
+TEST_F(FPDFParserDecodeEmbeddertest, Bug_552046) {
+ // Tests specifying multiple image filters for a stream. Should not cause a
+ // crash when rendered.
+ EXPECT_TRUE(OpenDocument("bug_552046.pdf"));
+ FPDF_PAGE page = LoadPage(0);
+ FPDF_BITMAP bitmap = RenderPage(page);
+ FPDFBitmap_Destroy(bitmap);
+ UnloadPage(page);
+}
+
+TEST_F(FPDFParserDecodeEmbeddertest, Bug_555784) {
+ // Tests bad input to the run length decoder that caused a heap overflow.
+ // Should not cause a crash when rendered.
+ EXPECT_TRUE(OpenDocument("bug_555784.pdf"));
+ FPDF_PAGE page = LoadPage(0);
+ FPDF_BITMAP bitmap = RenderPage(page);
+ FPDFBitmap_Destroy(bitmap);
+ UnloadPage(page);
+}
+
+TEST_F(FPDFParserDecodeEmbeddertest, Bug_455199) {
+ // Tests object numbers with a value > 01000000.
+ // Should open successfully.
+ EXPECT_TRUE(OpenDocument("bug_455199.pdf"));
+ FPDF_PAGE page = LoadPage(0);
+ FPDF_BITMAP bitmap = RenderPage(page);
+ FPDFBitmap_Destroy(bitmap);
+ UnloadPage(page);
+}
diff --git a/core/fpdfapi/fpdf_parser/fpdf_parser_decode_unittest.cpp b/core/fpdfapi/fpdf_parser/fpdf_parser_decode_unittest.cpp
new file mode 100644
index 0000000000..e00759da7a
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/fpdf_parser_decode_unittest.cpp
@@ -0,0 +1,78 @@
+// Copyright 2015 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "core/include/fpdfapi/fpdf_parser_decode.h"
+
+#include "testing/gtest/include/gtest/gtest.h"
+#include "testing/test_support.h"
+
+TEST(fpdf_parser_decode, A85Decode) {
+ pdfium::DecodeTestData test_data[] = {
+ // Empty src string.
+ STR_IN_OUT_CASE("", "", 0),
+ // Empty content in src string.
+ STR_IN_OUT_CASE("~>", "", 0),
+ // Regular conversion.
+ STR_IN_OUT_CASE("FCfN8~>", "test", 7),
+ // End at the ending mark.
+ STR_IN_OUT_CASE("FCfN8~>FCfN8", "test", 7),
+ // Skip whitespaces.
+ STR_IN_OUT_CASE("\t F C\r\n \tf N 8 ~>", "test", 17),
+ // No ending mark.
+ STR_IN_OUT_CASE("@3B0)DJj_BF*)>@Gp#-s", "a funny story :)", 20),
+ // Non-multiple length.
+ STR_IN_OUT_CASE("12A", "2k", 3),
+ // Stop at unknown characters.
+ STR_IN_OUT_CASE("FCfN8FCfN8vw", "testtest", 11),
+ };
+ for (size_t i = 0; i < FX_ArraySize(test_data); ++i) {
+ pdfium::DecodeTestData* ptr = &test_data[i];
+ uint8_t* result = nullptr;
+ FX_DWORD result_size;
+ EXPECT_EQ(ptr->processed_size,
+ A85Decode(ptr->input, ptr->input_size, result, result_size))
+ << "for case " << i;
+ ASSERT_EQ(ptr->expected_size, result_size);
+ for (size_t j = 0; j < result_size; ++j) {
+ EXPECT_EQ(ptr->expected[j], result[j]) << "for case " << i << " char "
+ << j;
+ }
+ FX_Free(result);
+ }
+}
+
+TEST(fpdf_parser_decode, HexDecode) {
+ pdfium::DecodeTestData test_data[] = {
+ // Empty src string.
+ STR_IN_OUT_CASE("", "", 0),
+ // Empty content in src string.
+ STR_IN_OUT_CASE(">", "", 1),
+ // Only whitespaces in src string.
+ STR_IN_OUT_CASE("\t \r\n>", "", 7),
+ // Regular conversion.
+ STR_IN_OUT_CASE("12Ac>zzz", "\x12\xac", 5),
+ // Skip whitespaces.
+ STR_IN_OUT_CASE("12 Ac\t02\r\nBF>zzz>", "\x12\xac\x02\xbf", 13),
+ // Non-multiple length.
+ STR_IN_OUT_CASE("12A>zzz", "\x12\xa0", 4),
+ // Skips unknown characters.
+ STR_IN_OUT_CASE("12tk \tAc>zzz", "\x12\xac", 10),
+ // No ending mark.
+ STR_IN_OUT_CASE("12AcED3c3456", "\x12\xac\xed\x3c\x34\x56", 12),
+ };
+ for (size_t i = 0; i < FX_ArraySize(test_data); ++i) {
+ pdfium::DecodeTestData* ptr = &test_data[i];
+ uint8_t* result = nullptr;
+ FX_DWORD result_size;
+ EXPECT_EQ(ptr->processed_size,
+ HexDecode(ptr->input, ptr->input_size, result, result_size))
+ << "for case " << i;
+ ASSERT_EQ(ptr->expected_size, result_size);
+ for (size_t j = 0; j < result_size; ++j) {
+ EXPECT_EQ(ptr->expected[j], result[j]) << "for case " << i << " char "
+ << j;
+ }
+ FX_Free(result);
+ }
+}
diff --git a/core/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp b/core/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp
new file mode 100644
index 0000000000..1f0ab5f876
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/fpdf_parser_utility.cpp
@@ -0,0 +1,228 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_parser/fpdf_parser_utility.h"
+
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_number.h"
+#include "core/include/fpdfapi/cpdf_reference.h"
+#include "core/include/fpdfapi/cpdf_stream.h"
+#include "core/include/fpdfapi/cpdf_string.h"
+#include "core/include/fpdfapi/fpdf_parser_decode.h"
+#include "core/include/fxcrt/fx_ext.h"
+
+// Indexed by 8-bit character code, contains either:
+// 'W' - for whitespace: NUL, TAB, CR, LF, FF, SPACE, 0x80, 0xff
+// 'N' - for numeric: 0123456789+-.
+// 'D' - for delimiter: %()/<>[]{}
+// 'R' - otherwise.
+const char PDF_CharType[256] = {
+ // NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO
+ // SI
+ 'W', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'W', 'W', 'R', 'W', 'W', 'R',
+ 'R',
+
+ // DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS
+ // US
+ 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R',
+ 'R',
+
+ // SP ! " # $ % & ´ ( ) * + , - .
+ // /
+ 'W', 'R', 'R', 'R', 'R', 'D', 'R', 'R', 'D', 'D', 'R', 'N', 'R', 'N', 'N',
+ 'D',
+
+ // 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
+ 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'R', 'R', 'D', 'R', 'D',
+ 'R',
+
+ // @ A B C D E F G H I J K L M N O
+ 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R',
+ 'R',
+
+ // P Q R S T U V W X Y Z [ \ ] ^ _
+ 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'D', 'R', 'D', 'R',
+ 'R',
+
+ // ` a b c d e f g h i j k l m n o
+ 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R',
+ 'R',
+
+ // p q r s t u v w x y z { | } ~
+ // DEL
+ 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'D', 'R', 'D', 'R',
+ 'R',
+
+ 'W', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R',
+ 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R',
+ 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R',
+ 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R',
+ 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R',
+ 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R',
+ 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R',
+ 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R',
+ 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'W'};
+
+int32_t GetHeaderOffset(IFX_FileRead* pFile) {
+ // TODO(dsinclair): This is a complicated way of saying %PDF, simplify?
+ const FX_DWORD tag = FXDWORD_FROM_LSBFIRST(0x46445025);
+
+ const size_t kBufSize = 4;
+ uint8_t buf[kBufSize];
+ int32_t offset = 0;
+ while (offset <= 1024) {
+ if (!pFile->ReadBlock(buf, offset, kBufSize))
+ return -1;
+
+ if (*(FX_DWORD*)buf == tag)
+ return offset;
+
+ ++offset;
+ }
+ return -1;
+}
+
+int32_t GetDirectInteger(CPDF_Dictionary* pDict, const CFX_ByteStringC& key) {
+ CPDF_Number* pObj = ToNumber(pDict->GetElement(key));
+ return pObj ? pObj->GetInteger() : 0;
+}
+
+CFX_ByteString PDF_NameDecode(const CFX_ByteStringC& bstr) {
+ int size = bstr.GetLength();
+ const FX_CHAR* pSrc = bstr.GetCStr();
+ if (!FXSYS_memchr(pSrc, '#', size)) {
+ return bstr;
+ }
+ CFX_ByteString result;
+ FX_CHAR* pDestStart = result.GetBuffer(size);
+ FX_CHAR* pDest = pDestStart;
+ for (int i = 0; i < size; i++) {
+ if (pSrc[i] == '#' && i < size - 2) {
+ *pDest++ =
+ FXSYS_toHexDigit(pSrc[i + 1]) * 16 + FXSYS_toHexDigit(pSrc[i + 2]);
+ i += 2;
+ } else {
+ *pDest++ = pSrc[i];
+ }
+ }
+ result.ReleaseBuffer((FX_STRSIZE)(pDest - pDestStart));
+ return result;
+}
+
+CFX_ByteString PDF_NameDecode(const CFX_ByteString& orig) {
+ if (!FXSYS_memchr(orig.c_str(), '#', orig.GetLength())) {
+ return orig;
+ }
+ return PDF_NameDecode(CFX_ByteStringC(orig));
+}
+
+CFX_ByteString PDF_NameEncode(const CFX_ByteString& orig) {
+ uint8_t* src_buf = (uint8_t*)orig.c_str();
+ int src_len = orig.GetLength();
+ int dest_len = 0;
+ int i;
+ for (i = 0; i < src_len; i++) {
+ uint8_t ch = src_buf[i];
+ if (ch >= 0x80 || PDFCharIsWhitespace(ch) || ch == '#' ||
+ PDFCharIsDelimiter(ch)) {
+ dest_len += 3;
+ } else {
+ dest_len++;
+ }
+ }
+ if (dest_len == src_len)
+ return orig;
+
+ CFX_ByteString res;
+ FX_CHAR* dest_buf = res.GetBuffer(dest_len);
+ dest_len = 0;
+ for (i = 0; i < src_len; i++) {
+ uint8_t ch = src_buf[i];
+ if (ch >= 0x80 || PDFCharIsWhitespace(ch) || ch == '#' ||
+ PDFCharIsDelimiter(ch)) {
+ dest_buf[dest_len++] = '#';
+ dest_buf[dest_len++] = "0123456789ABCDEF"[ch / 16];
+ dest_buf[dest_len++] = "0123456789ABCDEF"[ch % 16];
+ } else {
+ dest_buf[dest_len++] = ch;
+ }
+ }
+ dest_buf[dest_len] = 0;
+ res.ReleaseBuffer();
+ return res;
+}
+
+CFX_ByteTextBuf& operator<<(CFX_ByteTextBuf& buf, const CPDF_Object* pObj) {
+ if (!pObj) {
+ buf << " null";
+ return buf;
+ }
+ switch (pObj->GetType()) {
+ case CPDF_Object::NULLOBJ:
+ buf << " null";
+ break;
+ case CPDF_Object::BOOLEAN:
+ case CPDF_Object::NUMBER:
+ buf << " " << pObj->GetString();
+ break;
+ case CPDF_Object::STRING:
+ buf << PDF_EncodeString(pObj->GetString(), pObj->AsString()->IsHex());
+ break;
+ case CPDF_Object::NAME: {
+ CFX_ByteString str = pObj->GetString();
+ buf << "/" << PDF_NameEncode(str);
+ break;
+ }
+ case CPDF_Object::REFERENCE: {
+ buf << " " << pObj->AsReference()->GetRefObjNum() << " 0 R ";
+ break;
+ }
+ case CPDF_Object::ARRAY: {
+ const CPDF_Array* p = pObj->AsArray();
+ buf << "[";
+ for (FX_DWORD i = 0; i < p->GetCount(); i++) {
+ CPDF_Object* pElement = p->GetElement(i);
+ if (pElement->GetObjNum()) {
+ buf << " " << pElement->GetObjNum() << " 0 R";
+ } else {
+ buf << pElement;
+ }
+ }
+ buf << "]";
+ break;
+ }
+ case CPDF_Object::DICTIONARY: {
+ const CPDF_Dictionary* p = pObj->AsDictionary();
+ buf << "<<";
+ for (const auto& it : *p) {
+ const CFX_ByteString& key = it.first;
+ CPDF_Object* pValue = it.second;
+ buf << "/" << PDF_NameEncode(key);
+ if (pValue && pValue->GetObjNum()) {
+ buf << " " << pValue->GetObjNum() << " 0 R ";
+ } else {
+ buf << pValue;
+ }
+ }
+ buf << ">>";
+ break;
+ }
+ case CPDF_Object::STREAM: {
+ const CPDF_Stream* p = pObj->AsStream();
+ buf << p->GetDict() << "stream\r\n";
+ CPDF_StreamAcc acc;
+ acc.LoadAllData(p, TRUE);
+ buf.AppendBlock(acc.GetData(), acc.GetSize());
+ buf << "\r\nendstream";
+ break;
+ }
+ default:
+ ASSERT(FALSE);
+ break;
+ }
+ return buf;
+}
diff --git a/core/fpdfapi/fpdf_parser/fpdf_parser_utility.h b/core/fpdfapi/fpdf_parser/fpdf_parser_utility.h
new file mode 100644
index 0000000000..d0410eec98
--- /dev/null
+++ b/core/fpdfapi/fpdf_parser/fpdf_parser_utility.h
@@ -0,0 +1,39 @@
+// Copyright 2016 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_FPDFAPI_FPDF_PARSER_FPDF_PARSER_UTILITY_H_
+#define CORE_FPDFAPI_FPDF_PARSER_FPDF_PARSER_UTILITY_H_
+
+#include "core/include/fxcrt/fx_string.h"
+#include "core/include/fxcrt/fx_system.h"
+
+class IFX_FileRead;
+class CPDF_Dictionary;
+
+// Use the accessors below instead of directly accessing PDF_CharType.
+extern const char PDF_CharType[256];
+
+inline bool PDFCharIsWhitespace(uint8_t c) {
+ return PDF_CharType[c] == 'W';
+}
+inline bool PDFCharIsNumeric(uint8_t c) {
+ return PDF_CharType[c] == 'N';
+}
+inline bool PDFCharIsDelimiter(uint8_t c) {
+ return PDF_CharType[c] == 'D';
+}
+inline bool PDFCharIsOther(uint8_t c) {
+ return PDF_CharType[c] == 'R';
+}
+
+inline bool PDFCharIsLineEnding(uint8_t c) {
+ return c == '\r' || c == '\n';
+}
+
+int32_t GetHeaderOffset(IFX_FileRead* pFile);
+int32_t GetDirectInteger(CPDF_Dictionary* pDict, const CFX_ByteStringC& key);
+
+#endif // CORE_FPDFAPI_FPDF_PARSER_FPDF_PARSER_UTILITY_H_
diff --git a/core/fpdfapi/fpdf_render/fpdf_render.cpp b/core/fpdfapi/fpdf_render/fpdf_render.cpp
new file mode 100644
index 0000000000..2b82ed4cc6
--- /dev/null
+++ b/core/fpdfapi/fpdf_render/fpdf_render.cpp
@@ -0,0 +1,1337 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_render/render_int.h"
+
+#include "core/fpdfapi/fpdf_page/pageint.h"
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_document.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_render.h"
+#include "core/include/fxge/fx_ge.h"
+
+CPDF_DocRenderData::CPDF_DocRenderData(CPDF_Document* pPDFDoc)
+ : m_pPDFDoc(pPDFDoc), m_pFontCache(new CFX_FontCache) {}
+
+CPDF_DocRenderData::~CPDF_DocRenderData() {
+ Clear(TRUE);
+}
+
+void CPDF_DocRenderData::Clear(FX_BOOL bRelease) {
+ for (auto it = m_Type3FaceMap.begin(); it != m_Type3FaceMap.end();) {
+ auto curr_it = it++;
+ CPDF_CountedObject<CPDF_Type3Cache>* cache = curr_it->second;
+ if (bRelease || cache->use_count() < 2) {
+ delete cache->get();
+ delete cache;
+ m_Type3FaceMap.erase(curr_it);
+ }
+ }
+
+ for (auto it = m_TransferFuncMap.begin(); it != m_TransferFuncMap.end();) {
+ auto curr_it = it++;
+ CPDF_CountedObject<CPDF_TransferFunc>* value = curr_it->second;
+ if (bRelease || value->use_count() < 2) {
+ delete value->get();
+ delete value;
+ m_TransferFuncMap.erase(curr_it);
+ }
+ }
+
+ if (m_pFontCache) {
+ if (bRelease) {
+ delete m_pFontCache;
+ m_pFontCache = NULL;
+ } else {
+ m_pFontCache->FreeCache(FALSE);
+ }
+ }
+}
+
+CPDF_Type3Cache* CPDF_DocRenderData::GetCachedType3(CPDF_Type3Font* pFont) {
+ CPDF_CountedObject<CPDF_Type3Cache>* pCache;
+ auto it = m_Type3FaceMap.find(pFont);
+ if (it == m_Type3FaceMap.end()) {
+ CPDF_Type3Cache* pType3 = new CPDF_Type3Cache(pFont);
+ pCache = new CPDF_CountedObject<CPDF_Type3Cache>(pType3);
+ m_Type3FaceMap[pFont] = pCache;
+ } else {
+ pCache = it->second;
+ }
+ return pCache->AddRef();
+}
+
+void CPDF_DocRenderData::ReleaseCachedType3(CPDF_Type3Font* pFont) {
+ auto it = m_Type3FaceMap.find(pFont);
+ if (it != m_Type3FaceMap.end())
+ it->second->RemoveRef();
+}
+
+class CPDF_RenderModule : public IPDF_RenderModule {
+ public:
+ CPDF_RenderModule() {}
+
+ private:
+ ~CPDF_RenderModule() override {}
+
+ CPDF_DocRenderData* CreateDocData(CPDF_Document* pDoc) override;
+ void DestroyDocData(CPDF_DocRenderData* p) override;
+ void ClearDocData(CPDF_DocRenderData* p) override;
+
+ CPDF_DocRenderData* GetRenderData() override { return &m_RenderData; }
+
+ CPDF_PageRenderCache* CreatePageCache(CPDF_Page* pPage) override {
+ return new CPDF_PageRenderCache(pPage);
+ }
+
+ void DestroyPageCache(CPDF_PageRenderCache* pCache) override;
+
+ CPDF_DocRenderData m_RenderData;
+};
+
+CPDF_DocRenderData* CPDF_RenderModule::CreateDocData(CPDF_Document* pDoc) {
+ return new CPDF_DocRenderData(pDoc);
+}
+void CPDF_RenderModule::DestroyDocData(CPDF_DocRenderData* pDocData) {
+ delete pDocData;
+}
+void CPDF_RenderModule::ClearDocData(CPDF_DocRenderData* p) {
+ if (p) {
+ p->Clear(FALSE);
+ }
+}
+void CPDF_RenderModule::DestroyPageCache(CPDF_PageRenderCache* pCache) {
+ delete pCache;
+}
+
+void CPDF_ModuleMgr::InitRenderModule() {
+ m_pRenderModule.reset(new CPDF_RenderModule);
+}
+
+CPDF_RenderOptions::CPDF_RenderOptions()
+ : m_ColorMode(RENDER_COLOR_NORMAL),
+ m_Flags(RENDER_CLEARTYPE),
+ m_Interpolation(0),
+ m_AddFlags(0),
+ m_pOCContext(NULL),
+ m_dwLimitCacheSize(1024 * 1024 * 100),
+ m_HalftoneLimit(-1) {}
+FX_ARGB CPDF_RenderOptions::TranslateColor(FX_ARGB argb) const {
+ if (m_ColorMode == RENDER_COLOR_NORMAL) {
+ return argb;
+ }
+ if (m_ColorMode == RENDER_COLOR_ALPHA) {
+ return argb;
+ }
+ int a, r, g, b;
+ ArgbDecode(argb, a, r, g, b);
+ int gray = FXRGB2GRAY(r, g, b);
+ if (m_ColorMode == RENDER_COLOR_TWOCOLOR) {
+ int color = (r - gray) * (r - gray) + (g - gray) * (g - gray) +
+ (b - gray) * (b - gray);
+ if (gray < 35 && color < 20) {
+ return ArgbEncode(a, m_ForeColor);
+ }
+ if (gray > 221 && color < 20) {
+ return ArgbEncode(a, m_BackColor);
+ }
+ return argb;
+ }
+ int fr = FXSYS_GetRValue(m_ForeColor);
+ int fg = FXSYS_GetGValue(m_ForeColor);
+ int fb = FXSYS_GetBValue(m_ForeColor);
+ int br = FXSYS_GetRValue(m_BackColor);
+ int bg = FXSYS_GetGValue(m_BackColor);
+ int bb = FXSYS_GetBValue(m_BackColor);
+ r = (br - fr) * gray / 255 + fr;
+ g = (bg - fg) * gray / 255 + fg;
+ b = (bb - fb) * gray / 255 + fb;
+ return ArgbEncode(a, r, g, b);
+}
+
+// static
+int CPDF_RenderStatus::s_CurrentRecursionDepth = 0;
+
+CPDF_RenderStatus::CPDF_RenderStatus()
+ : m_pFormResource(nullptr),
+ m_pPageResource(nullptr),
+ m_pContext(nullptr),
+ m_bStopped(FALSE),
+ m_pDevice(nullptr),
+ m_pCurObj(nullptr),
+ m_pStopObj(nullptr),
+ m_HalftoneLimit(0),
+ m_bPrint(FALSE),
+ m_Transparency(0),
+ m_DitherBits(0),
+ m_bDropObjects(FALSE),
+ m_bStdCS(FALSE),
+ m_GroupFamily(0),
+ m_bLoadMask(FALSE),
+ m_pType3Char(nullptr),
+ m_T3FillColor(0),
+ m_curBlend(FXDIB_BLEND_NORMAL) {}
+
+CPDF_RenderStatus::~CPDF_RenderStatus() {}
+
+FX_BOOL CPDF_RenderStatus::Initialize(CPDF_RenderContext* pContext,
+ CFX_RenderDevice* pDevice,
+ const CFX_Matrix* pDeviceMatrix,
+ const CPDF_PageObject* pStopObj,
+ const CPDF_RenderStatus* pParentState,
+ const CPDF_GraphicStates* pInitialStates,
+ const CPDF_RenderOptions* pOptions,
+ int transparency,
+ FX_BOOL bDropObjects,
+ CPDF_Dictionary* pFormResource,
+ FX_BOOL bStdCS,
+ CPDF_Type3Char* pType3Char,
+ FX_ARGB fill_color,
+ FX_DWORD GroupFamily,
+ FX_BOOL bLoadMask) {
+ m_pContext = pContext;
+ m_pDevice = pDevice;
+ m_DitherBits = pDevice->GetDeviceCaps(FXDC_DITHER_BITS);
+ m_bPrint = m_pDevice->GetDeviceClass() != FXDC_DISPLAY;
+ if (pDeviceMatrix) {
+ m_DeviceMatrix = *pDeviceMatrix;
+ }
+ m_pStopObj = pStopObj;
+ if (pOptions) {
+ m_Options = *pOptions;
+ }
+ m_bDropObjects = bDropObjects;
+ m_bStdCS = bStdCS;
+ m_T3FillColor = fill_color;
+ m_pType3Char = pType3Char;
+ m_GroupFamily = GroupFamily;
+ m_bLoadMask = bLoadMask;
+ m_pFormResource = pFormResource;
+ m_pPageResource = m_pContext->GetPageResources();
+ if (pInitialStates && !m_pType3Char) {
+ m_InitialStates.CopyStates(*pInitialStates);
+ if (pParentState) {
+ CPDF_ColorStateData* pColorData =
+ (CPDF_ColorStateData*)(const CPDF_ColorStateData*)
+ m_InitialStates.m_ColorState;
+ CPDF_ColorStateData* pParentData =
+ (CPDF_ColorStateData*)(const CPDF_ColorStateData*)
+ pParentState->m_InitialStates.m_ColorState;
+ if (!pColorData || pColorData->m_FillColor.IsNull()) {
+ CPDF_ColorStateData* pData = m_InitialStates.m_ColorState.GetModify();
+ pData->m_FillRGB = pParentData->m_FillRGB;
+ pData->m_FillColor.Copy(&pParentData->m_FillColor);
+ }
+ if (!pColorData || pColorData->m_StrokeColor.IsNull()) {
+ CPDF_ColorStateData* pData = m_InitialStates.m_ColorState.GetModify();
+ pData->m_StrokeRGB = pParentData->m_FillRGB;
+ pData->m_StrokeColor.Copy(&pParentData->m_StrokeColor);
+ }
+ }
+ } else {
+ m_InitialStates.DefaultStates();
+ }
+ m_pObjectRenderer.reset();
+ m_Transparency = transparency;
+ return TRUE;
+}
+void CPDF_RenderStatus::RenderObjectList(
+ const CPDF_PageObjectHolder* pObjectHolder,
+ const CFX_Matrix* pObj2Device) {
+ CFX_FloatRect clip_rect(m_pDevice->GetClipBox());
+ CFX_Matrix device2object;
+ device2object.SetReverse(*pObj2Device);
+ device2object.TransformRect(clip_rect);
+
+ for (const auto& pCurObj : *pObjectHolder->GetPageObjectList()) {
+ if (pCurObj.get() == m_pStopObj) {
+ m_bStopped = TRUE;
+ return;
+ }
+ if (!pCurObj)
+ continue;
+
+ if (pCurObj->m_Left > clip_rect.right ||
+ pCurObj->m_Right < clip_rect.left ||
+ pCurObj->m_Bottom > clip_rect.top ||
+ pCurObj->m_Top < clip_rect.bottom) {
+ continue;
+ }
+ RenderSingleObject(pCurObj.get(), pObj2Device);
+ if (m_bStopped)
+ return;
+ }
+}
+void CPDF_RenderStatus::RenderSingleObject(const CPDF_PageObject* pObj,
+ const CFX_Matrix* pObj2Device) {
+ CFX_AutoRestorer<int> restorer(&s_CurrentRecursionDepth);
+ if (++s_CurrentRecursionDepth > kRenderMaxRecursionDepth) {
+ return;
+ }
+ m_pCurObj = pObj;
+ if (m_Options.m_pOCContext && pObj->m_ContentMark.NotNull()) {
+ if (!m_Options.m_pOCContext->CheckObjectVisible(pObj)) {
+ return;
+ }
+ }
+ ProcessClipPath(pObj->m_ClipPath, pObj2Device);
+ if (ProcessTransparency(pObj, pObj2Device)) {
+ return;
+ }
+ ProcessObjectNoClip(pObj, pObj2Device);
+}
+
+FX_BOOL CPDF_RenderStatus::ContinueSingleObject(const CPDF_PageObject* pObj,
+ const CFX_Matrix* pObj2Device,
+ IFX_Pause* pPause) {
+ if (m_pObjectRenderer) {
+ if (m_pObjectRenderer->Continue(pPause))
+ return TRUE;
+
+ if (!m_pObjectRenderer->m_Result)
+ DrawObjWithBackground(pObj, pObj2Device);
+ m_pObjectRenderer.reset();
+ return FALSE;
+ }
+
+ m_pCurObj = pObj;
+ if (m_Options.m_pOCContext && pObj->m_ContentMark.NotNull() &&
+ !m_Options.m_pOCContext->CheckObjectVisible(pObj)) {
+ return FALSE;
+ }
+
+ ProcessClipPath(pObj->m_ClipPath, pObj2Device);
+ if (ProcessTransparency(pObj, pObj2Device))
+ return FALSE;
+
+ if (pObj->IsImage()) {
+ m_pObjectRenderer.reset(IPDF_ObjectRenderer::Create());
+ if (!m_pObjectRenderer->Start(this, pObj, pObj2Device, FALSE)) {
+ if (!m_pObjectRenderer->m_Result)
+ DrawObjWithBackground(pObj, pObj2Device);
+ m_pObjectRenderer.reset();
+ return FALSE;
+ }
+ return ContinueSingleObject(pObj, pObj2Device, pPause);
+ }
+
+ ProcessObjectNoClip(pObj, pObj2Device);
+ return FALSE;
+}
+
+IPDF_ObjectRenderer* IPDF_ObjectRenderer::Create() {
+ return new CPDF_ImageRenderer;
+}
+
+FX_BOOL CPDF_RenderStatus::GetObjectClippedRect(const CPDF_PageObject* pObj,
+ const CFX_Matrix* pObj2Device,
+ FX_BOOL bLogical,
+ FX_RECT& rect) const {
+ rect = pObj->GetBBox(pObj2Device);
+ FX_RECT rtClip = m_pDevice->GetClipBox();
+ if (!bLogical) {
+ CFX_Matrix dCTM = m_pDevice->GetCTM();
+ FX_FLOAT a = FXSYS_fabs(dCTM.a);
+ FX_FLOAT d = FXSYS_fabs(dCTM.d);
+ if (a != 1.0f || d != 1.0f) {
+ rect.right = rect.left + (int32_t)FXSYS_ceil((FX_FLOAT)rect.Width() * a);
+ rect.bottom = rect.top + (int32_t)FXSYS_ceil((FX_FLOAT)rect.Height() * d);
+ rtClip.right =
+ rtClip.left + (int32_t)FXSYS_ceil((FX_FLOAT)rtClip.Width() * a);
+ rtClip.bottom =
+ rtClip.top + (int32_t)FXSYS_ceil((FX_FLOAT)rtClip.Height() * d);
+ }
+ }
+ rect.Intersect(rtClip);
+ return rect.IsEmpty();
+}
+void CPDF_RenderStatus::DitherObjectArea(const CPDF_PageObject* pObj,
+ const CFX_Matrix* pObj2Device) {
+ CFX_DIBitmap* pBitmap = m_pDevice->GetBitmap();
+ if (!pBitmap) {
+ return;
+ }
+ FX_RECT rect;
+ if (GetObjectClippedRect(pObj, pObj2Device, FALSE, rect)) {
+ return;
+ }
+ if (m_DitherBits == 2) {
+ static FX_ARGB pal[4] = {0, 85, 170, 255};
+ pBitmap->DitherFS(pal, 4, &rect);
+ } else if (m_DitherBits == 3) {
+ static FX_ARGB pal[8] = {0, 36, 73, 109, 146, 182, 219, 255};
+ pBitmap->DitherFS(pal, 8, &rect);
+ } else if (m_DitherBits == 4) {
+ static FX_ARGB pal[16] = {0, 17, 34, 51, 68, 85, 102, 119,
+ 136, 153, 170, 187, 204, 221, 238, 255};
+ pBitmap->DitherFS(pal, 16, &rect);
+ }
+}
+void CPDF_RenderStatus::ProcessObjectNoClip(const CPDF_PageObject* pObj,
+ const CFX_Matrix* pObj2Device) {
+ FX_BOOL bRet = FALSE;
+ switch (pObj->GetType()) {
+ case CPDF_PageObject::TEXT:
+ bRet = ProcessText(pObj->AsText(), pObj2Device, NULL);
+ break;
+ case CPDF_PageObject::PATH:
+ bRet = ProcessPath(pObj->AsPath(), pObj2Device);
+ break;
+ case CPDF_PageObject::IMAGE:
+ bRet = ProcessImage(pObj->AsImage(), pObj2Device);
+ break;
+ case CPDF_PageObject::SHADING:
+ bRet = ProcessShading(pObj->AsShading(), pObj2Device);
+ break;
+ case CPDF_PageObject::FORM:
+ bRet = ProcessForm(pObj->AsForm(), pObj2Device);
+ break;
+ }
+ if (!bRet) {
+ DrawObjWithBackground(pObj, pObj2Device);
+ }
+}
+FX_BOOL CPDF_RenderStatus::DrawObjWithBlend(const CPDF_PageObject* pObj,
+ const CFX_Matrix* pObj2Device) {
+ FX_BOOL bRet = FALSE;
+ switch (pObj->GetType()) {
+ case CPDF_PageObject::PATH:
+ bRet = ProcessPath(pObj->AsPath(), pObj2Device);
+ break;
+ case CPDF_PageObject::IMAGE:
+ bRet = ProcessImage(pObj->AsImage(), pObj2Device);
+ break;
+ case CPDF_PageObject::FORM:
+ bRet = ProcessForm(pObj->AsForm(), pObj2Device);
+ break;
+ default:
+ break;
+ }
+ return bRet;
+}
+void CPDF_RenderStatus::GetScaledMatrix(CFX_Matrix& matrix) const {
+ CFX_Matrix dCTM = m_pDevice->GetCTM();
+ matrix.a *= FXSYS_fabs(dCTM.a);
+ matrix.d *= FXSYS_fabs(dCTM.d);
+}
+void CPDF_RenderStatus::DrawObjWithBackground(const CPDF_PageObject* pObj,
+ const CFX_Matrix* pObj2Device) {
+ FX_RECT rect;
+ if (GetObjectClippedRect(pObj, pObj2Device, FALSE, rect)) {
+ return;
+ }
+ int res = 300;
+ if (pObj->IsImage() &&
+ m_pDevice->GetDeviceCaps(FXDC_DEVICE_CLASS) == FXDC_PRINTER) {
+ res = 0;
+ }
+ CPDF_ScaledRenderBuffer buffer;
+ if (!buffer.Initialize(m_pContext, m_pDevice, rect, pObj, &m_Options, res)) {
+ return;
+ }
+ CFX_Matrix matrix = *pObj2Device;
+ matrix.Concat(*buffer.GetMatrix());
+ GetScaledMatrix(matrix);
+ CPDF_Dictionary* pFormResource = NULL;
+ if (pObj->IsForm()) {
+ const CPDF_FormObject* pFormObj = pObj->AsForm();
+ if (pFormObj->m_pForm && pFormObj->m_pForm->m_pFormDict) {
+ pFormResource = pFormObj->m_pForm->m_pFormDict->GetDictBy("Resources");
+ }
+ }
+ CPDF_RenderStatus status;
+ status.Initialize(m_pContext, buffer.GetDevice(), buffer.GetMatrix(), NULL,
+ NULL, NULL, &m_Options, m_Transparency, m_bDropObjects,
+ pFormResource);
+ status.RenderSingleObject(pObj, &matrix);
+ buffer.OutputToDevice();
+}
+FX_BOOL CPDF_RenderStatus::ProcessForm(const CPDF_FormObject* pFormObj,
+ const CFX_Matrix* pObj2Device) {
+ CPDF_Dictionary* pOC = pFormObj->m_pForm->m_pFormDict->GetDictBy("OC");
+ if (pOC && m_Options.m_pOCContext &&
+ !m_Options.m_pOCContext->CheckOCGVisible(pOC)) {
+ return TRUE;
+ }
+ CFX_Matrix matrix = pFormObj->m_FormMatrix;
+ matrix.Concat(*pObj2Device);
+ CPDF_Dictionary* pResources = NULL;
+ if (pFormObj->m_pForm && pFormObj->m_pForm->m_pFormDict) {
+ pResources = pFormObj->m_pForm->m_pFormDict->GetDictBy("Resources");
+ }
+ CPDF_RenderStatus status;
+ status.Initialize(m_pContext, m_pDevice, NULL, m_pStopObj, this, pFormObj,
+ &m_Options, m_Transparency, m_bDropObjects, pResources,
+ FALSE);
+ status.m_curBlend = m_curBlend;
+ m_pDevice->SaveState();
+ status.RenderObjectList(pFormObj->m_pForm, &matrix);
+ m_bStopped = status.m_bStopped;
+ m_pDevice->RestoreState();
+ return TRUE;
+}
+FX_BOOL IsAvailableMatrix(const CFX_Matrix& matrix) {
+ if (matrix.a == 0 || matrix.d == 0) {
+ return matrix.b != 0 && matrix.c != 0;
+ }
+ if (matrix.b == 0 || matrix.c == 0) {
+ return matrix.a != 0 && matrix.d != 0;
+ }
+ return TRUE;
+}
+FX_BOOL CPDF_RenderStatus::ProcessPath(const CPDF_PathObject* pPathObj,
+ const CFX_Matrix* pObj2Device) {
+ int FillType = pPathObj->m_FillType;
+ FX_BOOL bStroke = pPathObj->m_bStroke;
+ ProcessPathPattern(pPathObj, pObj2Device, FillType, bStroke);
+ if (FillType == 0 && !bStroke) {
+ return TRUE;
+ }
+ FX_DWORD fill_argb = 0;
+ if (FillType) {
+ fill_argb = GetFillArgb(pPathObj);
+ }
+ FX_DWORD stroke_argb = 0;
+ if (bStroke) {
+ stroke_argb = GetStrokeArgb(pPathObj);
+ }
+ CFX_Matrix path_matrix = pPathObj->m_Matrix;
+ path_matrix.Concat(*pObj2Device);
+ if (!IsAvailableMatrix(path_matrix)) {
+ return TRUE;
+ }
+ if (FillType && (m_Options.m_Flags & RENDER_RECT_AA)) {
+ FillType |= FXFILL_RECT_AA;
+ }
+ if (m_Options.m_Flags & RENDER_FILL_FULLCOVER) {
+ FillType |= FXFILL_FULLCOVER;
+ }
+ if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) {
+ FillType |= FXFILL_NOPATHSMOOTH;
+ }
+ if (bStroke) {
+ FillType |= FX_FILL_STROKE;
+ }
+ const CPDF_GeneralStateData* pGeneralData =
+ ((CPDF_PageObject*)pPathObj)->m_GeneralState;
+ if (pGeneralData && pGeneralData->m_StrokeAdjust) {
+ FillType |= FX_STROKE_ADJUST;
+ }
+ if (m_pType3Char) {
+ FillType |= FX_FILL_TEXT_MODE;
+ }
+ CFX_GraphStateData graphState(*pPathObj->m_GraphState);
+ if (m_Options.m_Flags & RENDER_THINLINE) {
+ graphState.m_LineWidth = 0;
+ }
+ return m_pDevice->DrawPath(pPathObj->m_Path, &path_matrix, &graphState,
+ fill_argb, stroke_argb, FillType, 0, NULL,
+ m_curBlend);
+}
+CPDF_TransferFunc* CPDF_RenderStatus::GetTransferFunc(CPDF_Object* pObj) const {
+ ASSERT(pObj);
+ CPDF_DocRenderData* pDocCache = m_pContext->GetDocument()->GetRenderData();
+ return pDocCache ? pDocCache->GetTransferFunc(pObj) : nullptr;
+}
+FX_ARGB CPDF_RenderStatus::GetFillArgb(const CPDF_PageObject* pObj,
+ FX_BOOL bType3) const {
+ CPDF_ColorStateData* pColorData =
+ (CPDF_ColorStateData*)(const CPDF_ColorStateData*)pObj->m_ColorState;
+ if (m_pType3Char && !bType3 &&
+ (!m_pType3Char->m_bColored ||
+ (m_pType3Char->m_bColored &&
+ (!pColorData || pColorData->m_FillColor.IsNull())))) {
+ return m_T3FillColor;
+ }
+ if (!pColorData || pColorData->m_FillColor.IsNull()) {
+ pColorData = (CPDF_ColorStateData*)(const CPDF_ColorStateData*)
+ m_InitialStates.m_ColorState;
+ }
+ FX_COLORREF rgb = pColorData->m_FillRGB;
+ if (rgb == (FX_DWORD)-1) {
+ return 0;
+ }
+ const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState;
+ int alpha;
+ if (pGeneralData) {
+ alpha = (int32_t)(pGeneralData->m_FillAlpha * 255);
+ if (pGeneralData->m_pTR) {
+ if (!pGeneralData->m_pTransferFunc) {
+ ((CPDF_GeneralStateData*)pGeneralData)->m_pTransferFunc =
+ GetTransferFunc(pGeneralData->m_pTR);
+ }
+ if (pGeneralData->m_pTransferFunc) {
+ rgb = pGeneralData->m_pTransferFunc->TranslateColor(rgb);
+ }
+ }
+ } else {
+ alpha = 255;
+ }
+ return m_Options.TranslateColor(ArgbEncode(alpha, rgb));
+}
+FX_ARGB CPDF_RenderStatus::GetStrokeArgb(const CPDF_PageObject* pObj) const {
+ CPDF_ColorStateData* pColorData =
+ (CPDF_ColorStateData*)(const CPDF_ColorStateData*)pObj->m_ColorState;
+ if (m_pType3Char && (!m_pType3Char->m_bColored ||
+ (m_pType3Char->m_bColored &&
+ (!pColorData || pColorData->m_StrokeColor.IsNull())))) {
+ return m_T3FillColor;
+ }
+ if (!pColorData || pColorData->m_StrokeColor.IsNull()) {
+ pColorData = (CPDF_ColorStateData*)(const CPDF_ColorStateData*)
+ m_InitialStates.m_ColorState;
+ }
+ FX_COLORREF rgb = pColorData->m_StrokeRGB;
+ if (rgb == (FX_DWORD)-1) {
+ return 0;
+ }
+ const CPDF_GeneralStateData* pGeneralData = pObj->m_GeneralState;
+ int alpha;
+ if (pGeneralData) {
+ alpha = (int32_t)(pGeneralData->m_StrokeAlpha * 255);
+ if (pGeneralData->m_pTR) {
+ if (!pGeneralData->m_pTransferFunc) {
+ ((CPDF_GeneralStateData*)pGeneralData)->m_pTransferFunc =
+ GetTransferFunc(pGeneralData->m_pTR);
+ }
+ if (pGeneralData->m_pTransferFunc) {
+ rgb = pGeneralData->m_pTransferFunc->TranslateColor(rgb);
+ }
+ }
+ } else {
+ alpha = 255;
+ }
+ return m_Options.TranslateColor(ArgbEncode(alpha, rgb));
+}
+void CPDF_RenderStatus::ProcessClipPath(CPDF_ClipPath ClipPath,
+ const CFX_Matrix* pObj2Device) {
+ if (ClipPath.IsNull()) {
+ if (!m_LastClipPath.IsNull()) {
+ m_pDevice->RestoreState(TRUE);
+ m_LastClipPath.SetNull();
+ }
+ return;
+ }
+ if (m_LastClipPath == ClipPath)
+ return;
+
+ m_LastClipPath = ClipPath;
+ m_pDevice->RestoreState(TRUE);
+ int nClipPath = ClipPath.GetPathCount();
+ for (int i = 0; i < nClipPath; ++i) {
+ const CFX_PathData* pPathData = ClipPath.GetPath(i);
+ if (!pPathData)
+ continue;
+
+ if (pPathData->GetPointCount() == 0) {
+ CFX_PathData EmptyPath;
+ EmptyPath.AppendRect(-1, -1, 0, 0);
+ int fill_mode = FXFILL_WINDING;
+ m_pDevice->SetClip_PathFill(&EmptyPath, nullptr, fill_mode);
+ } else {
+ int ClipType = ClipPath.GetClipType(i);
+ m_pDevice->SetClip_PathFill(pPathData, pObj2Device, ClipType);
+ }
+ }
+ int textcount = ClipPath.GetTextCount();
+ if (textcount == 0)
+ return;
+
+ if (m_pDevice->GetDeviceClass() == FXDC_DISPLAY &&
+ !(m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_SOFT_CLIP)) {
+ return;
+ }
+
+ std::unique_ptr<CFX_PathData> pTextClippingPath;
+ for (int i = 0; i < textcount; ++i) {
+ CPDF_TextObject* pText = ClipPath.GetText(i);
+ if (pText) {
+ if (!pTextClippingPath)
+ pTextClippingPath.reset(new CFX_PathData);
+ ProcessText(pText, pObj2Device, pTextClippingPath.get());
+ continue;
+ }
+
+ if (!pTextClippingPath)
+ continue;
+
+ int fill_mode = FXFILL_WINDING;
+ if (m_Options.m_Flags & RENDER_NOTEXTSMOOTH)
+ fill_mode |= FXFILL_NOPATHSMOOTH;
+ m_pDevice->SetClip_PathFill(pTextClippingPath.get(), nullptr, fill_mode);
+ pTextClippingPath.reset();
+ }
+}
+
+void CPDF_RenderStatus::DrawClipPath(CPDF_ClipPath ClipPath,
+ const CFX_Matrix* pObj2Device) {
+ if (ClipPath.IsNull()) {
+ return;
+ }
+ int fill_mode = 0;
+ if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) {
+ fill_mode |= FXFILL_NOPATHSMOOTH;
+ }
+ int nClipPath = ClipPath.GetPathCount();
+ int i;
+ for (i = 0; i < nClipPath; i++) {
+ const CFX_PathData* pPathData = ClipPath.GetPath(i);
+ if (!pPathData) {
+ continue;
+ }
+ CFX_GraphStateData stroke_state;
+ if (m_Options.m_Flags & RENDER_THINLINE) {
+ stroke_state.m_LineWidth = 0;
+ }
+ m_pDevice->DrawPath(pPathData, pObj2Device, &stroke_state, 0, 0xffff0000,
+ fill_mode);
+ }
+}
+FX_BOOL CPDF_RenderStatus::SelectClipPath(const CPDF_PathObject* pPathObj,
+ const CFX_Matrix* pObj2Device,
+ FX_BOOL bStroke) {
+ CFX_Matrix path_matrix = pPathObj->m_Matrix;
+ path_matrix.Concat(*pObj2Device);
+ if (bStroke) {
+ CFX_GraphStateData graphState(*pPathObj->m_GraphState);
+ if (m_Options.m_Flags & RENDER_THINLINE) {
+ graphState.m_LineWidth = 0;
+ }
+ return m_pDevice->SetClip_PathStroke(pPathObj->m_Path, &path_matrix,
+ &graphState);
+ }
+ int fill_mode = pPathObj->m_FillType;
+ if (m_Options.m_Flags & RENDER_NOPATHSMOOTH) {
+ fill_mode |= FXFILL_NOPATHSMOOTH;
+ }
+ return m_pDevice->SetClip_PathFill(pPathObj->m_Path, &path_matrix, fill_mode);
+}
+FX_BOOL CPDF_RenderStatus::ProcessTransparency(const CPDF_PageObject* pPageObj,
+ const CFX_Matrix* pObj2Device) {
+ const CPDF_GeneralStateData* pGeneralState = pPageObj->m_GeneralState;
+ int blend_type =
+ pGeneralState ? pGeneralState->m_BlendType : FXDIB_BLEND_NORMAL;
+ if (blend_type == FXDIB_BLEND_UNSUPPORTED) {
+ return TRUE;
+ }
+ CPDF_Dictionary* pSMaskDict =
+ pGeneralState ? ToDictionary(pGeneralState->m_pSoftMask) : NULL;
+ if (pSMaskDict) {
+ if (pPageObj->IsImage() &&
+ pPageObj->AsImage()->m_pImage->GetDict()->KeyExist("SMask")) {
+ pSMaskDict = NULL;
+ }
+ }
+ CPDF_Dictionary* pFormResource = NULL;
+ FX_FLOAT group_alpha = 1.0f;
+ int Transparency = m_Transparency;
+ FX_BOOL bGroupTransparent = FALSE;
+ if (pPageObj->IsForm()) {
+ const CPDF_FormObject* pFormObj = pPageObj->AsForm();
+ const CPDF_GeneralStateData* pStateData =
+ pFormObj->m_GeneralState.GetObject();
+ if (pStateData) {
+ group_alpha = pStateData->m_FillAlpha;
+ }
+ Transparency = pFormObj->m_pForm->m_Transparency;
+ bGroupTransparent = !!(Transparency & PDFTRANS_ISOLATED);
+ if (pFormObj->m_pForm->m_pFormDict) {
+ pFormResource = pFormObj->m_pForm->m_pFormDict->GetDictBy("Resources");
+ }
+ }
+ FX_BOOL bTextClip = FALSE;
+ if (pPageObj->m_ClipPath.NotNull() && pPageObj->m_ClipPath.GetTextCount() &&
+ m_pDevice->GetDeviceClass() == FXDC_DISPLAY &&
+ !(m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_SOFT_CLIP)) {
+ bTextClip = TRUE;
+ }
+ if ((m_Options.m_Flags & RENDER_OVERPRINT) && pPageObj->IsImage() &&
+ pGeneralState && pGeneralState->m_FillOP && pGeneralState->m_StrokeOP) {
+ CPDF_Document* pDocument = NULL;
+ CPDF_Page* pPage = NULL;
+ if (m_pContext->GetPageCache()) {
+ pPage = m_pContext->GetPageCache()->GetPage();
+ pDocument = pPage->m_pDocument;
+ } else {
+ pDocument = pPageObj->AsImage()->m_pImage->GetDocument();
+ }
+ CPDF_Dictionary* pPageResources = pPage ? pPage->m_pPageResources : NULL;
+ CPDF_Object* pCSObj =
+ pPageObj->AsImage()->m_pImage->GetStream()->GetDict()->GetElementValue(
+ "ColorSpace");
+ CPDF_ColorSpace* pColorSpace =
+ pDocument->LoadColorSpace(pCSObj, pPageResources);
+ if (pColorSpace) {
+ int format = pColorSpace->GetFamily();
+ if (format == PDFCS_DEVICECMYK || format == PDFCS_SEPARATION ||
+ format == PDFCS_DEVICEN) {
+ blend_type = FXDIB_BLEND_DARKEN;
+ }
+ pDocument->GetPageData()->ReleaseColorSpace(pCSObj);
+ }
+ }
+ if (!pSMaskDict && group_alpha == 1.0f && blend_type == FXDIB_BLEND_NORMAL &&
+ !bTextClip && !bGroupTransparent) {
+ return FALSE;
+ }
+ FX_BOOL isolated = Transparency & PDFTRANS_ISOLATED;
+ if (m_bPrint) {
+ FX_BOOL bRet = FALSE;
+ int rendCaps = m_pDevice->GetRenderCaps();
+ if (!((Transparency & PDFTRANS_ISOLATED) || pSMaskDict || bTextClip) &&
+ (rendCaps & FXRC_BLEND_MODE)) {
+ int oldBlend = m_curBlend;
+ m_curBlend = blend_type;
+ bRet = DrawObjWithBlend(pPageObj, pObj2Device);
+ m_curBlend = oldBlend;
+ }
+ if (!bRet) {
+ DrawObjWithBackground(pPageObj, pObj2Device);
+ }
+ return TRUE;
+ }
+ FX_RECT rect = pPageObj->GetBBox(pObj2Device);
+ rect.Intersect(m_pDevice->GetClipBox());
+ if (rect.IsEmpty()) {
+ return TRUE;
+ }
+ CFX_Matrix deviceCTM = m_pDevice->GetCTM();
+ FX_FLOAT scaleX = FXSYS_fabs(deviceCTM.a);
+ FX_FLOAT scaleY = FXSYS_fabs(deviceCTM.d);
+ int width = FXSYS_round((FX_FLOAT)rect.Width() * scaleX);
+ int height = FXSYS_round((FX_FLOAT)rect.Height() * scaleY);
+ CFX_FxgeDevice bitmap_device;
+ std::unique_ptr<CFX_DIBitmap> oriDevice;
+ if (!isolated && (m_pDevice->GetRenderCaps() & FXRC_GET_BITS)) {
+ oriDevice.reset(new CFX_DIBitmap);
+ if (!m_pDevice->CreateCompatibleBitmap(oriDevice.get(), width, height))
+ return TRUE;
+
+ m_pDevice->GetDIBits(oriDevice.get(), rect.left, rect.top);
+ }
+ if (!bitmap_device.Create(width, height, FXDIB_Argb, 0, oriDevice.get()))
+ return TRUE;
+
+ CFX_DIBitmap* bitmap = bitmap_device.GetBitmap();
+ bitmap->Clear(0);
+ CFX_Matrix new_matrix = *pObj2Device;
+ new_matrix.TranslateI(-rect.left, -rect.top);
+ new_matrix.Scale(scaleX, scaleY);
+ std::unique_ptr<CFX_DIBitmap> pTextMask;
+ if (bTextClip) {
+ pTextMask.reset(new CFX_DIBitmap);
+ if (!pTextMask->Create(width, height, FXDIB_8bppMask))
+ return TRUE;
+
+ pTextMask->Clear(0);
+ CFX_FxgeDevice text_device;
+ text_device.Attach(pTextMask.get());
+ for (FX_DWORD i = 0; i < pPageObj->m_ClipPath.GetTextCount(); i++) {
+ CPDF_TextObject* textobj = pPageObj->m_ClipPath.GetText(i);
+ if (!textobj) {
+ break;
+ }
+ CFX_Matrix text_matrix;
+ textobj->GetTextMatrix(&text_matrix);
+ CPDF_TextRenderer::DrawTextPath(
+ &text_device, textobj->m_nChars, textobj->m_pCharCodes,
+ textobj->m_pCharPos, textobj->m_TextState.GetFont(),
+ textobj->m_TextState.GetFontSize(), &text_matrix, &new_matrix,
+ textobj->m_GraphState, (FX_ARGB)-1, 0, NULL);
+ }
+ }
+ CPDF_RenderStatus bitmap_render;
+ bitmap_render.Initialize(m_pContext, &bitmap_device, NULL, m_pStopObj, NULL,
+ NULL, &m_Options, 0, m_bDropObjects, pFormResource,
+ TRUE);
+ bitmap_render.ProcessObjectNoClip(pPageObj, &new_matrix);
+ m_bStopped = bitmap_render.m_bStopped;
+ if (pSMaskDict) {
+ CFX_Matrix smask_matrix;
+ FXSYS_memcpy(&smask_matrix, pGeneralState->m_SMaskMatrix,
+ sizeof smask_matrix);
+ smask_matrix.Concat(*pObj2Device);
+ std::unique_ptr<CFX_DIBSource> pSMaskSource(
+ LoadSMask(pSMaskDict, &rect, &smask_matrix));
+ if (pSMaskSource)
+ bitmap->MultiplyAlpha(pSMaskSource.get());
+ }
+ if (pTextMask) {
+ bitmap->MultiplyAlpha(pTextMask.get());
+ pTextMask.reset();
+ }
+ if (Transparency & PDFTRANS_GROUP && group_alpha != 1.0f) {
+ bitmap->MultiplyAlpha((int32_t)(group_alpha * 255));
+ }
+ Transparency = m_Transparency;
+ if (pPageObj->IsForm()) {
+ Transparency |= PDFTRANS_GROUP;
+ }
+ CompositeDIBitmap(bitmap, rect.left, rect.top, 0, 255, blend_type,
+ Transparency);
+ return TRUE;
+}
+
+CFX_DIBitmap* CPDF_RenderStatus::GetBackdrop(const CPDF_PageObject* pObj,
+ const FX_RECT& rect,
+ int& left,
+ int& top,
+ FX_BOOL bBackAlphaRequired) {
+ FX_RECT bbox = rect;
+ bbox.Intersect(m_pDevice->GetClipBox());
+ left = bbox.left;
+ top = bbox.top;
+ CFX_Matrix deviceCTM = m_pDevice->GetCTM();
+ FX_FLOAT scaleX = FXSYS_fabs(deviceCTM.a);
+ FX_FLOAT scaleY = FXSYS_fabs(deviceCTM.d);
+ int width = FXSYS_round(bbox.Width() * scaleX);
+ int height = FXSYS_round(bbox.Height() * scaleY);
+ std::unique_ptr<CFX_DIBitmap> pBackdrop(new CFX_DIBitmap);
+ if (bBackAlphaRequired && !m_bDropObjects)
+ pBackdrop->Create(width, height, FXDIB_Argb);
+ else
+ m_pDevice->CreateCompatibleBitmap(pBackdrop.get(), width, height);
+
+ if (!pBackdrop->GetBuffer())
+ return nullptr;
+
+ FX_BOOL bNeedDraw;
+ if (pBackdrop->HasAlpha())
+ bNeedDraw = !(m_pDevice->GetRenderCaps() & FXRC_ALPHA_OUTPUT);
+ else
+ bNeedDraw = !(m_pDevice->GetRenderCaps() & FXRC_GET_BITS);
+
+ if (!bNeedDraw) {
+ m_pDevice->GetDIBits(pBackdrop.get(), left, top);
+ return pBackdrop.release();
+ }
+
+ CFX_Matrix FinalMatrix = m_DeviceMatrix;
+ FinalMatrix.TranslateI(-left, -top);
+ FinalMatrix.Scale(scaleX, scaleY);
+ pBackdrop->Clear(pBackdrop->HasAlpha() ? 0 : 0xffffffff);
+ CFX_FxgeDevice device;
+ device.Attach(pBackdrop.get());
+ m_pContext->Render(&device, pObj, &m_Options, &FinalMatrix);
+ return pBackdrop.release();
+}
+
+void CPDF_RenderContext::GetBackground(CFX_DIBitmap* pBuffer,
+ const CPDF_PageObject* pObj,
+ const CPDF_RenderOptions* pOptions,
+ CFX_Matrix* pFinalMatrix) {
+ CFX_FxgeDevice device;
+ device.Attach(pBuffer);
+
+ FX_RECT rect(0, 0, device.GetWidth(), device.GetHeight());
+ device.FillRect(&rect, 0xffffffff);
+ Render(&device, pObj, pOptions, pFinalMatrix);
+}
+CPDF_GraphicStates* CPDF_RenderStatus::CloneObjStates(
+ const CPDF_GraphicStates* pSrcStates,
+ FX_BOOL bStroke) {
+ if (!pSrcStates) {
+ return NULL;
+ }
+ CPDF_GraphicStates* pStates = new CPDF_GraphicStates;
+ pStates->CopyStates(*pSrcStates);
+ CPDF_Color* pObjColor = bStroke ? pSrcStates->m_ColorState.GetStrokeColor()
+ : pSrcStates->m_ColorState.GetFillColor();
+ if (!pObjColor->IsNull()) {
+ CPDF_ColorStateData* pColorData = pStates->m_ColorState.GetModify();
+ pColorData->m_FillRGB =
+ bStroke ? pSrcStates->m_ColorState.GetObject()->m_StrokeRGB
+ : pSrcStates->m_ColorState.GetObject()->m_FillRGB;
+ pColorData->m_StrokeRGB = pColorData->m_FillRGB;
+ }
+ return pStates;
+}
+
+CPDF_RenderContext::CPDF_RenderContext(CPDF_Page* pPage)
+ : m_pDocument(pPage->m_pDocument),
+ m_pPageResources(pPage->m_pPageResources),
+ m_pPageCache(pPage->GetRenderCache()),
+ m_bFirstLayer(TRUE) {}
+
+CPDF_RenderContext::CPDF_RenderContext(CPDF_Document* pDoc,
+ CPDF_PageRenderCache* pPageCache)
+ : m_pDocument(pDoc),
+ m_pPageResources(nullptr),
+ m_pPageCache(pPageCache),
+ m_bFirstLayer(TRUE) {}
+
+CPDF_RenderContext::~CPDF_RenderContext() {}
+
+void CPDF_RenderContext::AppendLayer(CPDF_PageObjectHolder* pObjectHolder,
+ const CFX_Matrix* pObject2Device) {
+ Layer* pLayer = m_Layers.AddSpace();
+ pLayer->m_pObjectHolder = pObjectHolder;
+ if (pObject2Device) {
+ pLayer->m_Matrix = *pObject2Device;
+ } else {
+ pLayer->m_Matrix.SetIdentity();
+ }
+}
+void CPDF_RenderContext::Render(CFX_RenderDevice* pDevice,
+ const CPDF_RenderOptions* pOptions,
+ const CFX_Matrix* pLastMatrix) {
+ Render(pDevice, NULL, pOptions, pLastMatrix);
+}
+void CPDF_RenderContext::Render(CFX_RenderDevice* pDevice,
+ const CPDF_PageObject* pStopObj,
+ const CPDF_RenderOptions* pOptions,
+ const CFX_Matrix* pLastMatrix) {
+ int count = m_Layers.GetSize();
+ for (int j = 0; j < count; j++) {
+ pDevice->SaveState();
+ Layer* pLayer = m_Layers.GetDataPtr(j);
+ if (pLastMatrix) {
+ CFX_Matrix FinalMatrix = pLayer->m_Matrix;
+ FinalMatrix.Concat(*pLastMatrix);
+ CPDF_RenderStatus status;
+ status.Initialize(this, pDevice, pLastMatrix, pStopObj, NULL, NULL,
+ pOptions, pLayer->m_pObjectHolder->m_Transparency,
+ FALSE, NULL);
+ status.RenderObjectList(pLayer->m_pObjectHolder, &FinalMatrix);
+ if (status.m_Options.m_Flags & RENDER_LIMITEDIMAGECACHE) {
+ m_pPageCache->CacheOptimization(status.m_Options.m_dwLimitCacheSize);
+ }
+ if (status.m_bStopped) {
+ pDevice->RestoreState();
+ break;
+ }
+ } else {
+ CPDF_RenderStatus status;
+ status.Initialize(this, pDevice, NULL, pStopObj, NULL, NULL, pOptions,
+ pLayer->m_pObjectHolder->m_Transparency, FALSE, NULL);
+ status.RenderObjectList(pLayer->m_pObjectHolder, &pLayer->m_Matrix);
+ if (status.m_Options.m_Flags & RENDER_LIMITEDIMAGECACHE) {
+ m_pPageCache->CacheOptimization(status.m_Options.m_dwLimitCacheSize);
+ }
+ if (status.m_bStopped) {
+ pDevice->RestoreState();
+ break;
+ }
+ }
+ pDevice->RestoreState();
+ }
+}
+
+CPDF_ProgressiveRenderer::CPDF_ProgressiveRenderer(
+ CPDF_RenderContext* pContext,
+ CFX_RenderDevice* pDevice,
+ const CPDF_RenderOptions* pOptions)
+ : m_Status(Ready),
+ m_pContext(pContext),
+ m_pDevice(pDevice),
+ m_pOptions(pOptions),
+ m_LayerIndex(0),
+ m_pCurrentLayer(nullptr) {}
+
+CPDF_ProgressiveRenderer::~CPDF_ProgressiveRenderer() {
+ if (m_pRenderStatus)
+ m_pDevice->RestoreState();
+}
+
+void CPDF_ProgressiveRenderer::Start(IFX_Pause* pPause) {
+ if (!m_pContext || !m_pDevice || m_Status != Ready) {
+ m_Status = Failed;
+ return;
+ }
+ m_Status = ToBeContinued;
+ Continue(pPause);
+}
+
+void CPDF_ProgressiveRenderer::Continue(IFX_Pause* pPause) {
+ while (m_Status == ToBeContinued) {
+ if (!m_pCurrentLayer) {
+ if (m_LayerIndex >= m_pContext->CountLayers()) {
+ m_Status = Done;
+ return;
+ }
+ m_pCurrentLayer = m_pContext->GetLayer(m_LayerIndex);
+ m_LastObjectRendered =
+ m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()->end();
+ m_pRenderStatus.reset(new CPDF_RenderStatus());
+ m_pRenderStatus->Initialize(
+ m_pContext, m_pDevice, NULL, NULL, NULL, NULL, m_pOptions,
+ m_pCurrentLayer->m_pObjectHolder->m_Transparency, FALSE, NULL);
+ m_pDevice->SaveState();
+ m_ClipRect = CFX_FloatRect(m_pDevice->GetClipBox());
+ CFX_Matrix device2object;
+ device2object.SetReverse(m_pCurrentLayer->m_Matrix);
+ device2object.TransformRect(m_ClipRect);
+ }
+ CPDF_PageObjectList::iterator iter;
+ CPDF_PageObjectList::iterator iterEnd =
+ m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()->end();
+ if (m_LastObjectRendered != iterEnd) {
+ iter = m_LastObjectRendered;
+ ++iter;
+ } else {
+ iter = m_pCurrentLayer->m_pObjectHolder->GetPageObjectList()->begin();
+ }
+ int nObjsToGo = kStepLimit;
+ while (iter != iterEnd) {
+ CPDF_PageObject* pCurObj = iter->get();
+ if (pCurObj && pCurObj->m_Left <= m_ClipRect.right &&
+ pCurObj->m_Right >= m_ClipRect.left &&
+ pCurObj->m_Bottom <= m_ClipRect.top &&
+ pCurObj->m_Top >= m_ClipRect.bottom) {
+ if (m_pRenderStatus->ContinueSingleObject(
+ pCurObj, &m_pCurrentLayer->m_Matrix, pPause)) {
+ return;
+ }
+ if (pCurObj->IsImage() &&
+ m_pRenderStatus->m_Options.m_Flags & RENDER_LIMITEDIMAGECACHE) {
+ m_pContext->GetPageCache()->CacheOptimization(
+ m_pRenderStatus->m_Options.m_dwLimitCacheSize);
+ }
+ if (pCurObj->IsForm() || pCurObj->IsShading()) {
+ nObjsToGo = 0;
+ } else {
+ --nObjsToGo;
+ }
+ }
+ m_LastObjectRendered = iter;
+ if (nObjsToGo == 0) {
+ if (pPause && pPause->NeedToPauseNow())
+ return;
+ nObjsToGo = kStepLimit;
+ }
+ ++iter;
+ }
+ if (m_pCurrentLayer->m_pObjectHolder->IsParsed()) {
+ m_pRenderStatus.reset();
+ m_pDevice->RestoreState();
+ m_pCurrentLayer = nullptr;
+ m_LayerIndex++;
+ if (pPause && pPause->NeedToPauseNow()) {
+ return;
+ }
+ } else {
+ m_pCurrentLayer->m_pObjectHolder->ContinueParse(pPause);
+ if (!m_pCurrentLayer->m_pObjectHolder->IsParsed())
+ return;
+ }
+ }
+}
+
+CPDF_TransferFunc* CPDF_DocRenderData::GetTransferFunc(CPDF_Object* pObj) {
+ if (!pObj)
+ return nullptr;
+
+ auto it = m_TransferFuncMap.find(pObj);
+ if (it != m_TransferFuncMap.end()) {
+ CPDF_CountedObject<CPDF_TransferFunc>* pTransferCounter = it->second;
+ return pTransferCounter->AddRef();
+ }
+
+ std::unique_ptr<CPDF_Function> pFuncs[3];
+ FX_BOOL bUniTransfer = TRUE;
+ FX_BOOL bIdentity = TRUE;
+ if (CPDF_Array* pArray = pObj->AsArray()) {
+ bUniTransfer = FALSE;
+ if (pArray->GetCount() < 3)
+ return nullptr;
+
+ for (FX_DWORD i = 0; i < 3; ++i) {
+ pFuncs[2 - i].reset(CPDF_Function::Load(pArray->GetElementValue(i)));
+ if (!pFuncs[2 - i])
+ return nullptr;
+ }
+ } else {
+ pFuncs[0].reset(CPDF_Function::Load(pObj));
+ if (!pFuncs[0])
+ return nullptr;
+ }
+ CPDF_TransferFunc* pTransfer = new CPDF_TransferFunc(m_pPDFDoc);
+ CPDF_CountedObject<CPDF_TransferFunc>* pTransferCounter =
+ new CPDF_CountedObject<CPDF_TransferFunc>(pTransfer);
+ m_TransferFuncMap[pObj] = pTransferCounter;
+ static const int kMaxOutputs = 16;
+ FX_FLOAT output[kMaxOutputs];
+ FXSYS_memset(output, 0, sizeof(output));
+ FX_FLOAT input;
+ int noutput;
+ for (int v = 0; v < 256; ++v) {
+ input = (FX_FLOAT)v / 255.0f;
+ if (bUniTransfer) {
+ if (pFuncs[0] && pFuncs[0]->CountOutputs() <= kMaxOutputs)
+ pFuncs[0]->Call(&input, 1, output, noutput);
+ int o = FXSYS_round(output[0] * 255);
+ if (o != v)
+ bIdentity = FALSE;
+ for (int i = 0; i < 3; ++i) {
+ pTransfer->m_Samples[i * 256 + v] = o;
+ }
+ } else {
+ for (int i = 0; i < 3; ++i) {
+ if (pFuncs[i] && pFuncs[i]->CountOutputs() <= kMaxOutputs) {
+ pFuncs[i]->Call(&input, 1, output, noutput);
+ int o = FXSYS_round(output[0] * 255);
+ if (o != v)
+ bIdentity = FALSE;
+ pTransfer->m_Samples[i * 256 + v] = o;
+ } else {
+ pTransfer->m_Samples[i * 256 + v] = v;
+ }
+ }
+ }
+ }
+
+ pTransfer->m_bIdentity = bIdentity;
+ return pTransferCounter->AddRef();
+}
+
+void CPDF_DocRenderData::ReleaseTransferFunc(CPDF_Object* pObj) {
+ auto it = m_TransferFuncMap.find(pObj);
+ if (it != m_TransferFuncMap.end())
+ it->second->RemoveRef();
+}
+
+CPDF_DeviceBuffer::CPDF_DeviceBuffer()
+ : m_pDevice(nullptr), m_pContext(nullptr), m_pObject(nullptr) {}
+
+CPDF_DeviceBuffer::~CPDF_DeviceBuffer() {}
+
+FX_BOOL CPDF_DeviceBuffer::Initialize(CPDF_RenderContext* pContext,
+ CFX_RenderDevice* pDevice,
+ FX_RECT* pRect,
+ const CPDF_PageObject* pObj,
+ int max_dpi) {
+ m_pDevice = pDevice;
+ m_pContext = pContext;
+ m_Rect = *pRect;
+ m_pObject = pObj;
+ m_Matrix.TranslateI(-pRect->left, -pRect->top);
+#if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_
+ int horz_size = pDevice->GetDeviceCaps(FXDC_HORZ_SIZE);
+ int vert_size = pDevice->GetDeviceCaps(FXDC_VERT_SIZE);
+ if (horz_size && vert_size && max_dpi) {
+ int dpih =
+ pDevice->GetDeviceCaps(FXDC_PIXEL_WIDTH) * 254 / (horz_size * 10);
+ int dpiv =
+ pDevice->GetDeviceCaps(FXDC_PIXEL_HEIGHT) * 254 / (vert_size * 10);
+ if (dpih > max_dpi) {
+ m_Matrix.Scale((FX_FLOAT)(max_dpi) / dpih, 1.0f);
+ }
+ if (dpiv > max_dpi) {
+ m_Matrix.Scale(1.0f, (FX_FLOAT)(max_dpi) / (FX_FLOAT)dpiv);
+ }
+ }
+#endif
+ CFX_Matrix ctm = m_pDevice->GetCTM();
+ FX_FLOAT fScaleX = FXSYS_fabs(ctm.a);
+ FX_FLOAT fScaleY = FXSYS_fabs(ctm.d);
+ m_Matrix.Concat(fScaleX, 0, 0, fScaleY, 0, 0);
+ CFX_FloatRect rect(*pRect);
+ m_Matrix.TransformRect(rect);
+ FX_RECT bitmap_rect = rect.GetOutterRect();
+ m_pBitmap.reset(new CFX_DIBitmap);
+ m_pBitmap->Create(bitmap_rect.Width(), bitmap_rect.Height(), FXDIB_Argb);
+ return TRUE;
+}
+void CPDF_DeviceBuffer::OutputToDevice() {
+ if (m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_GET_BITS) {
+ if (m_Matrix.a == 1.0f && m_Matrix.d == 1.0f) {
+ m_pDevice->SetDIBits(m_pBitmap.get(), m_Rect.left, m_Rect.top);
+ } else {
+ m_pDevice->StretchDIBits(m_pBitmap.get(), m_Rect.left, m_Rect.top,
+ m_Rect.Width(), m_Rect.Height());
+ }
+ } else {
+ CFX_DIBitmap buffer;
+ m_pDevice->CreateCompatibleBitmap(&buffer, m_pBitmap->GetWidth(),
+ m_pBitmap->GetHeight());
+ m_pContext->GetBackground(&buffer, m_pObject, NULL, &m_Matrix);
+ buffer.CompositeBitmap(0, 0, buffer.GetWidth(), buffer.GetHeight(),
+ m_pBitmap.get(), 0, 0);
+ m_pDevice->StretchDIBits(&buffer, m_Rect.left, m_Rect.top, m_Rect.Width(),
+ m_Rect.Height());
+ }
+}
+
+CPDF_ScaledRenderBuffer::CPDF_ScaledRenderBuffer() {}
+
+CPDF_ScaledRenderBuffer::~CPDF_ScaledRenderBuffer() {}
+
+#define _FPDFAPI_IMAGESIZE_LIMIT_ (30 * 1024 * 1024)
+FX_BOOL CPDF_ScaledRenderBuffer::Initialize(CPDF_RenderContext* pContext,
+ CFX_RenderDevice* pDevice,
+ const FX_RECT& pRect,
+ const CPDF_PageObject* pObj,
+ const CPDF_RenderOptions* pOptions,
+ int max_dpi) {
+ m_pDevice = pDevice;
+ if (m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_GET_BITS) {
+ return TRUE;
+ }
+ m_pContext = pContext;
+ m_Rect = pRect;
+ m_pObject = pObj;
+ m_Matrix.TranslateI(-pRect.left, -pRect.top);
+ int horz_size = pDevice->GetDeviceCaps(FXDC_HORZ_SIZE);
+ int vert_size = pDevice->GetDeviceCaps(FXDC_VERT_SIZE);
+ if (horz_size && vert_size && max_dpi) {
+ int dpih =
+ pDevice->GetDeviceCaps(FXDC_PIXEL_WIDTH) * 254 / (horz_size * 10);
+ int dpiv =
+ pDevice->GetDeviceCaps(FXDC_PIXEL_HEIGHT) * 254 / (vert_size * 10);
+ if (dpih > max_dpi) {
+ m_Matrix.Scale((FX_FLOAT)(max_dpi) / dpih, 1.0f);
+ }
+ if (dpiv > max_dpi) {
+ m_Matrix.Scale(1.0f, (FX_FLOAT)(max_dpi) / (FX_FLOAT)dpiv);
+ }
+ }
+ m_pBitmapDevice.reset(new CFX_FxgeDevice);
+ FXDIB_Format dibFormat = FXDIB_Rgb;
+ int32_t bpp = 24;
+ if (m_pDevice->GetDeviceCaps(FXDC_RENDER_CAPS) & FXRC_ALPHA_OUTPUT) {
+ dibFormat = FXDIB_Argb;
+ bpp = 32;
+ }
+ while (1) {
+ CFX_FloatRect rect(pRect);
+ m_Matrix.TransformRect(rect);
+ FX_RECT bitmap_rect = rect.GetOutterRect();
+ int32_t iWidth = bitmap_rect.Width();
+ int32_t iHeight = bitmap_rect.Height();
+ int32_t iPitch = (iWidth * bpp + 31) / 32 * 4;
+ if (iWidth * iHeight < 1)
+ return FALSE;
+
+ if (iPitch * iHeight <= _FPDFAPI_IMAGESIZE_LIMIT_ &&
+ m_pBitmapDevice->Create(iWidth, iHeight, dibFormat)) {
+ break;
+ }
+ m_Matrix.Scale(0.5f, 0.5f);
+ }
+ m_pContext->GetBackground(m_pBitmapDevice->GetBitmap(), m_pObject, pOptions,
+ &m_Matrix);
+ return TRUE;
+}
+void CPDF_ScaledRenderBuffer::OutputToDevice() {
+ if (m_pBitmapDevice) {
+ m_pDevice->StretchDIBits(m_pBitmapDevice->GetBitmap(), m_Rect.left,
+ m_Rect.top, m_Rect.Width(), m_Rect.Height());
+ }
+}
+FX_BOOL IPDF_OCContext::CheckObjectVisible(const CPDF_PageObject* pObj) {
+ const CPDF_ContentMarkData* pData = pObj->m_ContentMark;
+ int nItems = pData->CountItems();
+ for (int i = 0; i < nItems; i++) {
+ const CPDF_ContentMarkItem& item = pData->GetItem(i);
+ if (item.GetName() == "OC" &&
+ item.GetParamType() == CPDF_ContentMarkItem::PropertiesDict &&
+ !CheckOCGVisible(item.GetParam())) {
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
diff --git a/core/fpdfapi/fpdf_render/fpdf_render_cache.cpp b/core/fpdfapi/fpdf_render/fpdf_render_cache.cpp
new file mode 100644
index 0000000000..f5ab7e0da5
--- /dev/null
+++ b/core/fpdfapi/fpdf_render/fpdf_render_cache.cpp
@@ -0,0 +1,334 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_render/render_int.h"
+
+#include "core/fpdfapi/fpdf_page/pageint.h"
+#include "core/include/fpdfapi/cpdf_document.h"
+#include "core/include/fpdfapi/fpdf_pageobj.h"
+#include "core/include/fpdfapi/fpdf_render.h"
+#include "core/include/fxge/fx_ge.h"
+
+struct CACHEINFO {
+ FX_DWORD time;
+ CPDF_Stream* pStream;
+};
+
+extern "C" {
+static int compare(const void* data1, const void* data2) {
+ return ((CACHEINFO*)data1)->time - ((CACHEINFO*)data2)->time;
+}
+} // extern "C"
+
+CPDF_PageRenderCache::~CPDF_PageRenderCache() {
+ for (const auto& it : m_ImageCache)
+ delete it.second;
+}
+void CPDF_PageRenderCache::CacheOptimization(int32_t dwLimitCacheSize) {
+ if (m_nCacheSize <= (FX_DWORD)dwLimitCacheSize)
+ return;
+
+ size_t nCount = m_ImageCache.size();
+ CACHEINFO* pCACHEINFO = FX_Alloc(CACHEINFO, nCount);
+ size_t i = 0;
+ for (const auto& it : m_ImageCache) {
+ pCACHEINFO[i].time = it.second->GetTimeCount();
+ pCACHEINFO[i++].pStream = it.second->GetStream();
+ }
+ FXSYS_qsort(pCACHEINFO, nCount, sizeof(CACHEINFO), compare);
+ FX_DWORD nTimeCount = m_nTimeCount;
+
+ // Check if time value is about to roll over and reset all entries.
+ // The comparision is legal because FX_DWORD is an unsigned type.
+ if (nTimeCount + 1 < nTimeCount) {
+ for (i = 0; i < nCount; i++)
+ m_ImageCache[pCACHEINFO[i].pStream]->m_dwTimeCount = i;
+ m_nTimeCount = nCount;
+ }
+
+ i = 0;
+ while (i + 15 < nCount)
+ ClearImageCacheEntry(pCACHEINFO[i++].pStream);
+
+ while (i < nCount && m_nCacheSize > (FX_DWORD)dwLimitCacheSize)
+ ClearImageCacheEntry(pCACHEINFO[i++].pStream);
+
+ FX_Free(pCACHEINFO);
+}
+void CPDF_PageRenderCache::ClearImageCacheEntry(CPDF_Stream* pStream) {
+ auto it = m_ImageCache.find(pStream);
+ if (it == m_ImageCache.end())
+ return;
+
+ m_nCacheSize -= it->second->EstimateSize();
+ delete it->second;
+ m_ImageCache.erase(it);
+}
+FX_DWORD CPDF_PageRenderCache::EstimateSize() {
+ FX_DWORD dwSize = 0;
+ for (const auto& it : m_ImageCache)
+ dwSize += it.second->EstimateSize();
+
+ m_nCacheSize = dwSize;
+ return dwSize;
+}
+void CPDF_PageRenderCache::GetCachedBitmap(CPDF_Stream* pStream,
+ CFX_DIBSource*& pBitmap,
+ CFX_DIBSource*& pMask,
+ FX_DWORD& MatteColor,
+ FX_BOOL bStdCS,
+ FX_DWORD GroupFamily,
+ FX_BOOL bLoadMask,
+ CPDF_RenderStatus* pRenderStatus,
+ int32_t downsampleWidth,
+ int32_t downsampleHeight) {
+ CPDF_ImageCacheEntry* pEntry;
+ const auto it = m_ImageCache.find(pStream);
+ FX_BOOL bFound = it != m_ImageCache.end();
+ if (bFound)
+ pEntry = it->second;
+ else
+ pEntry = new CPDF_ImageCacheEntry(m_pPage->m_pDocument, pStream);
+
+ m_nTimeCount++;
+ FX_BOOL bAlreadyCached = pEntry->GetCachedBitmap(
+ pBitmap, pMask, MatteColor, m_pPage->m_pPageResources, bStdCS,
+ GroupFamily, bLoadMask, pRenderStatus, downsampleWidth, downsampleHeight);
+
+ if (!bFound)
+ m_ImageCache[pStream] = pEntry;
+
+ if (!bAlreadyCached)
+ m_nCacheSize += pEntry->EstimateSize();
+}
+FX_BOOL CPDF_PageRenderCache::StartGetCachedBitmap(
+ CPDF_Stream* pStream,
+ FX_BOOL bStdCS,
+ FX_DWORD GroupFamily,
+ FX_BOOL bLoadMask,
+ CPDF_RenderStatus* pRenderStatus,
+ int32_t downsampleWidth,
+ int32_t downsampleHeight) {
+ const auto it = m_ImageCache.find(pStream);
+ m_bCurFindCache = it != m_ImageCache.end();
+ if (m_bCurFindCache) {
+ m_pCurImageCacheEntry = it->second;
+ } else {
+ m_pCurImageCacheEntry =
+ new CPDF_ImageCacheEntry(m_pPage->m_pDocument, pStream);
+ }
+ int ret = m_pCurImageCacheEntry->StartGetCachedBitmap(
+ pRenderStatus->m_pFormResource, m_pPage->m_pPageResources, bStdCS,
+ GroupFamily, bLoadMask, pRenderStatus, downsampleWidth, downsampleHeight);
+ if (ret == 2)
+ return TRUE;
+
+ m_nTimeCount++;
+ if (!m_bCurFindCache)
+ m_ImageCache[pStream] = m_pCurImageCacheEntry;
+
+ if (!ret)
+ m_nCacheSize += m_pCurImageCacheEntry->EstimateSize();
+
+ return FALSE;
+}
+FX_BOOL CPDF_PageRenderCache::Continue(IFX_Pause* pPause) {
+ int ret = m_pCurImageCacheEntry->Continue(pPause);
+ if (ret == 2)
+ return TRUE;
+ m_nTimeCount++;
+ if (!m_bCurFindCache)
+ m_ImageCache[m_pCurImageCacheEntry->GetStream()] = m_pCurImageCacheEntry;
+ if (!ret)
+ m_nCacheSize += m_pCurImageCacheEntry->EstimateSize();
+ return FALSE;
+}
+void CPDF_PageRenderCache::ResetBitmap(CPDF_Stream* pStream,
+ const CFX_DIBitmap* pBitmap) {
+ CPDF_ImageCacheEntry* pEntry;
+ const auto it = m_ImageCache.find(pStream);
+ if (it == m_ImageCache.end()) {
+ if (!pBitmap)
+ return;
+ pEntry = new CPDF_ImageCacheEntry(m_pPage->m_pDocument, pStream);
+ m_ImageCache[pStream] = pEntry;
+ } else {
+ pEntry = it->second;
+ }
+ m_nCacheSize -= pEntry->EstimateSize();
+ pEntry->Reset(pBitmap);
+ m_nCacheSize += pEntry->EstimateSize();
+}
+CPDF_ImageCacheEntry::CPDF_ImageCacheEntry(CPDF_Document* pDoc,
+ CPDF_Stream* pStream)
+ : m_dwTimeCount(0),
+ m_pCurBitmap(NULL),
+ m_pCurMask(NULL),
+ m_MatteColor(0),
+ m_pRenderStatus(NULL),
+ m_pDocument(pDoc),
+ m_pStream(pStream),
+ m_pCachedBitmap(NULL),
+ m_pCachedMask(NULL),
+ m_dwCacheSize(0) {}
+CPDF_ImageCacheEntry::~CPDF_ImageCacheEntry() {
+ delete m_pCachedBitmap;
+ delete m_pCachedMask;
+}
+void CPDF_ImageCacheEntry::Reset(const CFX_DIBitmap* pBitmap) {
+ delete m_pCachedBitmap;
+ m_pCachedBitmap = NULL;
+ if (pBitmap) {
+ m_pCachedBitmap = pBitmap->Clone();
+ }
+ CalcSize();
+}
+void CPDF_PageRenderCache::ClearImageData() {
+ for (const auto& it : m_ImageCache)
+ it.second->ClearImageData();
+}
+void CPDF_ImageCacheEntry::ClearImageData() {
+ if (m_pCachedBitmap && !m_pCachedBitmap->GetBuffer()) {
+ ((CPDF_DIBSource*)m_pCachedBitmap)->ClearImageData();
+ }
+}
+static FX_DWORD FPDF_ImageCache_EstimateImageSize(const CFX_DIBSource* pDIB) {
+ return pDIB && pDIB->GetBuffer()
+ ? (FX_DWORD)pDIB->GetHeight() * pDIB->GetPitch() +
+ (FX_DWORD)pDIB->GetPaletteSize() * 4
+ : 0;
+}
+FX_BOOL CPDF_ImageCacheEntry::GetCachedBitmap(CFX_DIBSource*& pBitmap,
+ CFX_DIBSource*& pMask,
+ FX_DWORD& MatteColor,
+ CPDF_Dictionary* pPageResources,
+ FX_BOOL bStdCS,
+ FX_DWORD GroupFamily,
+ FX_BOOL bLoadMask,
+ CPDF_RenderStatus* pRenderStatus,
+ int32_t downsampleWidth,
+ int32_t downsampleHeight) {
+ if (m_pCachedBitmap) {
+ pBitmap = m_pCachedBitmap;
+ pMask = m_pCachedMask;
+ MatteColor = m_MatteColor;
+ return TRUE;
+ }
+ if (!pRenderStatus) {
+ return FALSE;
+ }
+ CPDF_RenderContext* pContext = pRenderStatus->GetContext();
+ CPDF_PageRenderCache* pPageRenderCache = pContext->GetPageCache();
+ m_dwTimeCount = pPageRenderCache->GetTimeCount();
+ CPDF_DIBSource* pSrc = new CPDF_DIBSource;
+ CPDF_DIBSource* pMaskSrc = NULL;
+ if (!pSrc->Load(m_pDocument, m_pStream, &pMaskSrc, &MatteColor,
+ pRenderStatus->m_pFormResource, pPageResources, bStdCS,
+ GroupFamily, bLoadMask)) {
+ delete pSrc;
+ pBitmap = NULL;
+ return FALSE;
+ }
+ m_MatteColor = MatteColor;
+ if (pSrc->GetPitch() * pSrc->GetHeight() < FPDF_HUGE_IMAGE_SIZE) {
+ m_pCachedBitmap = pSrc->Clone();
+ delete pSrc;
+ } else {
+ m_pCachedBitmap = pSrc;
+ }
+ if (pMaskSrc) {
+ m_pCachedMask = pMaskSrc->Clone();
+ delete pMaskSrc;
+ }
+
+ pBitmap = m_pCachedBitmap;
+ pMask = m_pCachedMask;
+ CalcSize();
+ return FALSE;
+}
+CFX_DIBSource* CPDF_ImageCacheEntry::DetachBitmap() {
+ CFX_DIBSource* pDIBSource = m_pCurBitmap;
+ m_pCurBitmap = NULL;
+ return pDIBSource;
+}
+CFX_DIBSource* CPDF_ImageCacheEntry::DetachMask() {
+ CFX_DIBSource* pDIBSource = m_pCurMask;
+ m_pCurMask = NULL;
+ return pDIBSource;
+}
+int CPDF_ImageCacheEntry::StartGetCachedBitmap(CPDF_Dictionary* pFormResources,
+ CPDF_Dictionary* pPageResources,
+ FX_BOOL bStdCS,
+ FX_DWORD GroupFamily,
+ FX_BOOL bLoadMask,
+ CPDF_RenderStatus* pRenderStatus,
+ int32_t downsampleWidth,
+ int32_t downsampleHeight) {
+ if (m_pCachedBitmap) {
+ m_pCurBitmap = m_pCachedBitmap;
+ m_pCurMask = m_pCachedMask;
+ return 1;
+ }
+ if (!pRenderStatus) {
+ return 0;
+ }
+ m_pRenderStatus = pRenderStatus;
+ m_pCurBitmap = new CPDF_DIBSource;
+ int ret =
+ ((CPDF_DIBSource*)m_pCurBitmap)
+ ->StartLoadDIBSource(m_pDocument, m_pStream, TRUE, pFormResources,
+ pPageResources, bStdCS, GroupFamily, bLoadMask);
+ if (ret == 2) {
+ return ret;
+ }
+ if (!ret) {
+ delete m_pCurBitmap;
+ m_pCurBitmap = NULL;
+ return 0;
+ }
+ ContinueGetCachedBitmap();
+ return 0;
+}
+void CPDF_ImageCacheEntry::ContinueGetCachedBitmap() {
+ m_MatteColor = ((CPDF_DIBSource*)m_pCurBitmap)->GetMatteColor();
+ m_pCurMask = ((CPDF_DIBSource*)m_pCurBitmap)->DetachMask();
+ CPDF_RenderContext* pContext = m_pRenderStatus->GetContext();
+ CPDF_PageRenderCache* pPageRenderCache = pContext->GetPageCache();
+ m_dwTimeCount = pPageRenderCache->GetTimeCount();
+ if (m_pCurBitmap->GetPitch() * m_pCurBitmap->GetHeight() <
+ FPDF_HUGE_IMAGE_SIZE) {
+ m_pCachedBitmap = m_pCurBitmap->Clone();
+ delete m_pCurBitmap;
+ m_pCurBitmap = NULL;
+ } else {
+ m_pCachedBitmap = m_pCurBitmap;
+ }
+ if (m_pCurMask) {
+ m_pCachedMask = m_pCurMask->Clone();
+ delete m_pCurMask;
+ m_pCurMask = NULL;
+ }
+ m_pCurBitmap = m_pCachedBitmap;
+ m_pCurMask = m_pCachedMask;
+ CalcSize();
+}
+int CPDF_ImageCacheEntry::Continue(IFX_Pause* pPause) {
+ int ret = ((CPDF_DIBSource*)m_pCurBitmap)->ContinueLoadDIBSource(pPause);
+ if (ret == 2) {
+ return ret;
+ }
+ if (!ret) {
+ delete m_pCurBitmap;
+ m_pCurBitmap = NULL;
+ return 0;
+ }
+ ContinueGetCachedBitmap();
+ return 0;
+}
+void CPDF_ImageCacheEntry::CalcSize() {
+ m_dwCacheSize = FPDF_ImageCache_EstimateImageSize(m_pCachedBitmap) +
+ FPDF_ImageCache_EstimateImageSize(m_pCachedMask);
+}
diff --git a/core/fpdfapi/fpdf_render/fpdf_render_image.cpp b/core/fpdfapi/fpdf_render/fpdf_render_image.cpp
new file mode 100644
index 0000000000..6c235a0258
--- /dev/null
+++ b/core/fpdfapi/fpdf_render/fpdf_render_image.cpp
@@ -0,0 +1,998 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_render/render_int.h"
+
+#include <utility>
+#include <vector>
+
+#include "core/fpdfapi/fpdf_page/pageint.h"
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_document.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_pageobj.h"
+#include "core/include/fpdfapi/fpdf_render.h"
+#include "core/include/fxcodec/fx_codec.h"
+#include "core/include/fxcrt/fx_safe_types.h"
+#include "core/include/fxge/fx_ge.h"
+
+FX_BOOL CPDF_RenderStatus::ProcessImage(const CPDF_ImageObject* pImageObj,
+ const CFX_Matrix* pObj2Device) {
+ CPDF_ImageRenderer render;
+ if (render.Start(this, pImageObj, pObj2Device, m_bStdCS, m_curBlend)) {
+ render.Continue(NULL);
+ }
+ return render.m_Result;
+}
+void CPDF_RenderStatus::CompositeDIBitmap(CFX_DIBitmap* pDIBitmap,
+ int left,
+ int top,
+ FX_ARGB mask_argb,
+ int bitmap_alpha,
+ int blend_mode,
+ int Transparency) {
+ if (!pDIBitmap) {
+ return;
+ }
+ FX_BOOL bIsolated = Transparency & PDFTRANS_ISOLATED;
+ FX_BOOL bGroup = Transparency & PDFTRANS_GROUP;
+ if (blend_mode == FXDIB_BLEND_NORMAL) {
+ if (!pDIBitmap->IsAlphaMask()) {
+ if (bitmap_alpha < 255) {
+ pDIBitmap->MultiplyAlpha(bitmap_alpha);
+ }
+ if (m_pDevice->SetDIBits(pDIBitmap, left, top)) {
+ return;
+ }
+ } else {
+ FX_DWORD fill_argb = m_Options.TranslateColor(mask_argb);
+ if (bitmap_alpha < 255) {
+ ((uint8_t*)&fill_argb)[3] =
+ ((uint8_t*)&fill_argb)[3] * bitmap_alpha / 255;
+ }
+ if (m_pDevice->SetBitMask(pDIBitmap, left, top, fill_argb)) {
+ return;
+ }
+ }
+ }
+ FX_BOOL bBackAlphaRequired = blend_mode && bIsolated && !m_bDropObjects;
+ FX_BOOL bGetBackGround =
+ ((m_pDevice->GetRenderCaps() & FXRC_ALPHA_OUTPUT)) ||
+ (!(m_pDevice->GetRenderCaps() & FXRC_ALPHA_OUTPUT) &&
+ (m_pDevice->GetRenderCaps() & FXRC_GET_BITS) && !bBackAlphaRequired);
+ if (bGetBackGround) {
+ if (bIsolated || !bGroup) {
+ if (pDIBitmap->IsAlphaMask()) {
+ return;
+ }
+ m_pDevice->SetDIBits(pDIBitmap, left, top, blend_mode);
+ } else {
+ FX_RECT rect(left, top, left + pDIBitmap->GetWidth(),
+ top + pDIBitmap->GetHeight());
+ rect.Intersect(m_pDevice->GetClipBox());
+ CFX_DIBitmap* pClone = NULL;
+ FX_BOOL bClone = FALSE;
+ if (m_pDevice->GetBackDrop() && m_pDevice->GetBitmap()) {
+ bClone = TRUE;
+ pClone = m_pDevice->GetBackDrop()->Clone(&rect);
+ CFX_DIBitmap* pForeBitmap = m_pDevice->GetBitmap();
+ pClone->CompositeBitmap(0, 0, pClone->GetWidth(), pClone->GetHeight(),
+ pForeBitmap, rect.left, rect.top);
+ left = left >= 0 ? 0 : left;
+ top = top >= 0 ? 0 : top;
+ if (!pDIBitmap->IsAlphaMask())
+ pClone->CompositeBitmap(0, 0, pClone->GetWidth(), pClone->GetHeight(),
+ pDIBitmap, left, top, blend_mode);
+ else
+ pClone->CompositeMask(0, 0, pClone->GetWidth(), pClone->GetHeight(),
+ pDIBitmap, mask_argb, left, top, blend_mode);
+ } else {
+ pClone = pDIBitmap;
+ }
+ if (m_pDevice->GetBackDrop()) {
+ m_pDevice->SetDIBits(pClone, rect.left, rect.top);
+ } else {
+ if (pDIBitmap->IsAlphaMask()) {
+ return;
+ }
+ m_pDevice->SetDIBits(pDIBitmap, rect.left, rect.top, blend_mode);
+ }
+ if (bClone) {
+ delete pClone;
+ }
+ }
+ return;
+ }
+ int back_left, back_top;
+ FX_RECT rect(left, top, left + pDIBitmap->GetWidth(),
+ top + pDIBitmap->GetHeight());
+ std::unique_ptr<CFX_DIBitmap> pBackdrop(
+ GetBackdrop(m_pCurObj, rect, back_left, back_top,
+ blend_mode > FXDIB_BLEND_NORMAL && bIsolated));
+ if (!pBackdrop)
+ return;
+
+ if (!pDIBitmap->IsAlphaMask()) {
+ pBackdrop->CompositeBitmap(left - back_left, top - back_top,
+ pDIBitmap->GetWidth(), pDIBitmap->GetHeight(),
+ pDIBitmap, 0, 0, blend_mode);
+ } else {
+ pBackdrop->CompositeMask(left - back_left, top - back_top,
+ pDIBitmap->GetWidth(), pDIBitmap->GetHeight(),
+ pDIBitmap, mask_argb, 0, 0, blend_mode);
+ }
+
+ std::unique_ptr<CFX_DIBitmap> pBackdrop1(new CFX_DIBitmap);
+ pBackdrop1->Create(pBackdrop->GetWidth(), pBackdrop->GetHeight(),
+ FXDIB_Rgb32);
+ pBackdrop1->Clear((FX_DWORD)-1);
+ pBackdrop1->CompositeBitmap(0, 0, pBackdrop->GetWidth(),
+ pBackdrop->GetHeight(), pBackdrop.get(), 0, 0);
+ pBackdrop = std::move(pBackdrop1);
+ m_pDevice->SetDIBits(pBackdrop.get(), back_left, back_top);
+}
+
+CPDF_TransferFunc::CPDF_TransferFunc(CPDF_Document* pDoc) : m_pPDFDoc(pDoc) {}
+
+FX_COLORREF CPDF_TransferFunc::TranslateColor(FX_COLORREF rgb) const {
+ return FXSYS_RGB(m_Samples[FXSYS_GetRValue(rgb)],
+ m_Samples[256 + FXSYS_GetGValue(rgb)],
+ m_Samples[512 + FXSYS_GetBValue(rgb)]);
+}
+
+CFX_DIBSource* CPDF_TransferFunc::TranslateImage(const CFX_DIBSource* pSrc,
+ FX_BOOL bAutoDropSrc) {
+ CPDF_DIBTransferFunc* pDest = new CPDF_DIBTransferFunc(this);
+ pDest->LoadSrc(pSrc, bAutoDropSrc);
+ return pDest;
+}
+
+CPDF_DIBTransferFunc::~CPDF_DIBTransferFunc() {}
+
+FXDIB_Format CPDF_DIBTransferFunc::GetDestFormat() {
+ if (m_pSrc->IsAlphaMask()) {
+ return FXDIB_8bppMask;
+ }
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+ return (m_pSrc->HasAlpha()) ? FXDIB_Argb : FXDIB_Rgb32;
+#else
+ return (m_pSrc->HasAlpha()) ? FXDIB_Argb : FXDIB_Rgb;
+#endif
+}
+CPDF_DIBTransferFunc::CPDF_DIBTransferFunc(
+ const CPDF_TransferFunc* pTransferFunc) {
+ m_RampR = pTransferFunc->m_Samples;
+ m_RampG = &pTransferFunc->m_Samples[256];
+ m_RampB = &pTransferFunc->m_Samples[512];
+}
+void CPDF_DIBTransferFunc::TranslateScanline(uint8_t* dest_buf,
+ const uint8_t* src_buf) const {
+ int i;
+ FX_BOOL bSkip = FALSE;
+ switch (m_pSrc->GetFormat()) {
+ case FXDIB_1bppRgb: {
+ int r0 = m_RampR[0], g0 = m_RampG[0], b0 = m_RampB[0];
+ int r1 = m_RampR[255], g1 = m_RampG[255], b1 = m_RampB[255];
+ for (i = 0; i < m_Width; i++) {
+ if (src_buf[i / 8] & (1 << (7 - i % 8))) {
+ *dest_buf++ = b1;
+ *dest_buf++ = g1;
+ *dest_buf++ = r1;
+ } else {
+ *dest_buf++ = b0;
+ *dest_buf++ = g0;
+ *dest_buf++ = r0;
+ }
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+ dest_buf++;
+#endif
+ }
+ break;
+ }
+ case FXDIB_1bppMask: {
+ int m0 = m_RampR[0], m1 = m_RampR[255];
+ for (i = 0; i < m_Width; i++) {
+ if (src_buf[i / 8] & (1 << (7 - i % 8))) {
+ *dest_buf++ = m1;
+ } else {
+ *dest_buf++ = m0;
+ }
+ }
+ break;
+ }
+ case FXDIB_8bppRgb: {
+ FX_ARGB* pPal = m_pSrc->GetPalette();
+ for (i = 0; i < m_Width; i++) {
+ if (pPal) {
+ FX_ARGB src_argb = pPal[*src_buf];
+ *dest_buf++ = m_RampB[FXARGB_R(src_argb)];
+ *dest_buf++ = m_RampG[FXARGB_G(src_argb)];
+ *dest_buf++ = m_RampR[FXARGB_B(src_argb)];
+ } else {
+ FX_DWORD src_byte = *src_buf;
+ *dest_buf++ = m_RampB[src_byte];
+ *dest_buf++ = m_RampG[src_byte];
+ *dest_buf++ = m_RampR[src_byte];
+ }
+ src_buf++;
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+ dest_buf++;
+#endif
+ }
+ break;
+ }
+ case FXDIB_8bppMask:
+ for (i = 0; i < m_Width; i++) {
+ *dest_buf++ = m_RampR[*(src_buf++)];
+ }
+ break;
+ case FXDIB_Rgb:
+ for (i = 0; i < m_Width; i++) {
+ *dest_buf++ = m_RampB[*(src_buf++)];
+ *dest_buf++ = m_RampG[*(src_buf++)];
+ *dest_buf++ = m_RampR[*(src_buf++)];
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+ dest_buf++;
+#endif
+ }
+ break;
+ case FXDIB_Rgb32:
+ bSkip = TRUE;
+ case FXDIB_Argb:
+ for (i = 0; i < m_Width; i++) {
+ *dest_buf++ = m_RampB[*(src_buf++)];
+ *dest_buf++ = m_RampG[*(src_buf++)];
+ *dest_buf++ = m_RampR[*(src_buf++)];
+ if (!bSkip) {
+ *dest_buf++ = *src_buf;
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+ } else {
+ dest_buf++;
+#endif
+ }
+ src_buf++;
+ }
+ break;
+ default:
+ break;
+ }
+}
+void CPDF_DIBTransferFunc::TranslateDownSamples(uint8_t* dest_buf,
+ const uint8_t* src_buf,
+ int pixels,
+ int Bpp) const {
+ if (Bpp == 8) {
+ for (int i = 0; i < pixels; i++) {
+ *dest_buf++ = m_RampR[*(src_buf++)];
+ }
+ } else if (Bpp == 24) {
+ for (int i = 0; i < pixels; i++) {
+ *dest_buf++ = m_RampB[*(src_buf++)];
+ *dest_buf++ = m_RampG[*(src_buf++)];
+ *dest_buf++ = m_RampR[*(src_buf++)];
+ }
+ } else {
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+ if (!m_pSrc->HasAlpha()) {
+ for (int i = 0; i < pixels; i++) {
+ *dest_buf++ = m_RampB[*(src_buf++)];
+ *dest_buf++ = m_RampG[*(src_buf++)];
+ *dest_buf++ = m_RampR[*(src_buf++)];
+ dest_buf++;
+ src_buf++;
+ }
+ } else {
+#endif
+ for (int i = 0; i < pixels; i++) {
+ *dest_buf++ = m_RampB[*(src_buf++)];
+ *dest_buf++ = m_RampG[*(src_buf++)];
+ *dest_buf++ = m_RampR[*(src_buf++)];
+ *dest_buf++ = *(src_buf++);
+ }
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+ }
+#endif
+ }
+}
+CPDF_ImageRenderer::CPDF_ImageRenderer() {
+ m_pRenderStatus = NULL;
+ m_pImageObject = NULL;
+ m_Result = TRUE;
+ m_Status = 0;
+ m_pTransformer = NULL;
+ m_DeviceHandle = NULL;
+ m_LoadHandle = NULL;
+ m_pClone = NULL;
+ m_bStdCS = FALSE;
+ m_bPatternColor = FALSE;
+ m_BlendType = FXDIB_BLEND_NORMAL;
+ m_pPattern = NULL;
+ m_pObj2Device = NULL;
+}
+CPDF_ImageRenderer::~CPDF_ImageRenderer() {
+ delete m_pTransformer;
+ if (m_DeviceHandle) {
+ m_pRenderStatus->m_pDevice->CancelDIBits(m_DeviceHandle);
+ }
+ delete m_LoadHandle;
+ delete m_pClone;
+}
+FX_BOOL CPDF_ImageRenderer::StartLoadDIBSource() {
+ CFX_FloatRect image_rect_f = m_ImageMatrix.GetUnitRect();
+ FX_RECT image_rect = image_rect_f.GetOutterRect();
+ int dest_width = image_rect.Width();
+ int dest_height = image_rect.Height();
+ if (m_ImageMatrix.a < 0) {
+ dest_width = -dest_width;
+ }
+ if (m_ImageMatrix.d > 0) {
+ dest_height = -dest_height;
+ }
+ if (m_Loader.Start(m_pImageObject,
+ m_pRenderStatus->m_pContext->GetPageCache(), m_LoadHandle,
+ m_bStdCS, m_pRenderStatus->m_GroupFamily,
+ m_pRenderStatus->m_bLoadMask, m_pRenderStatus, dest_width,
+ dest_height)) {
+ if (m_LoadHandle) {
+ m_Status = 4;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+FX_BOOL CPDF_ImageRenderer::StartRenderDIBSource() {
+ if (!m_Loader.m_pBitmap) {
+ return FALSE;
+ }
+ m_BitmapAlpha = 255;
+ const CPDF_GeneralStateData* pGeneralState = m_pImageObject->m_GeneralState;
+ if (pGeneralState) {
+ m_BitmapAlpha = FXSYS_round(pGeneralState->m_FillAlpha * 255);
+ }
+ m_pDIBSource = m_Loader.m_pBitmap;
+ if (m_pRenderStatus->m_Options.m_ColorMode == RENDER_COLOR_ALPHA &&
+ !m_Loader.m_pMask) {
+ return StartBitmapAlpha();
+ }
+ if (pGeneralState && pGeneralState->m_pTR) {
+ if (!pGeneralState->m_pTransferFunc) {
+ ((CPDF_GeneralStateData*)pGeneralState)->m_pTransferFunc =
+ m_pRenderStatus->GetTransferFunc(pGeneralState->m_pTR);
+ }
+ if (pGeneralState->m_pTransferFunc &&
+ !pGeneralState->m_pTransferFunc->m_bIdentity) {
+ m_pDIBSource = m_Loader.m_pBitmap =
+ pGeneralState->m_pTransferFunc->TranslateImage(m_Loader.m_pBitmap,
+ !m_Loader.m_bCached);
+ if (m_Loader.m_bCached && m_Loader.m_pMask) {
+ m_Loader.m_pMask = m_Loader.m_pMask->Clone();
+ }
+ m_Loader.m_bCached = FALSE;
+ }
+ }
+ m_FillArgb = 0;
+ m_bPatternColor = FALSE;
+ m_pPattern = NULL;
+ if (m_pDIBSource->IsAlphaMask()) {
+ CPDF_Color* pColor = m_pImageObject->m_ColorState.GetFillColor();
+ if (pColor && pColor->IsPattern()) {
+ m_pPattern = pColor->GetPattern();
+ if (m_pPattern) {
+ m_bPatternColor = TRUE;
+ }
+ }
+ m_FillArgb = m_pRenderStatus->GetFillArgb(m_pImageObject);
+ } else if (m_pRenderStatus->m_Options.m_ColorMode == RENDER_COLOR_GRAY) {
+ m_pClone = m_pDIBSource->Clone();
+ m_pClone->ConvertColorScale(m_pRenderStatus->m_Options.m_BackColor,
+ m_pRenderStatus->m_Options.m_ForeColor);
+ m_pDIBSource = m_pClone;
+ }
+ m_Flags = 0;
+ if (m_pRenderStatus->m_Options.m_Flags & RENDER_FORCE_DOWNSAMPLE) {
+ m_Flags |= RENDER_FORCE_DOWNSAMPLE;
+ } else if (m_pRenderStatus->m_Options.m_Flags & RENDER_FORCE_HALFTONE) {
+ m_Flags |= RENDER_FORCE_HALFTONE;
+ }
+ if (m_pRenderStatus->m_pDevice->GetDeviceClass() != FXDC_DISPLAY) {
+ CPDF_Object* pFilters =
+ m_pImageObject->m_pImage->GetStream()->GetDict()->GetElementValue(
+ "Filter");
+ if (pFilters) {
+ if (pFilters->IsName()) {
+ CFX_ByteStringC bsDecodeType = pFilters->GetConstString();
+ if (bsDecodeType == "DCTDecode" || bsDecodeType == "JPXDecode") {
+ m_Flags |= FXRENDER_IMAGE_LOSSY;
+ }
+ } else if (CPDF_Array* pArray = pFilters->AsArray()) {
+ for (FX_DWORD i = 0; i < pArray->GetCount(); i++) {
+ CFX_ByteStringC bsDecodeType = pArray->GetConstStringAt(i);
+ if (bsDecodeType == "DCTDecode" || bsDecodeType == "JPXDecode") {
+ m_Flags |= FXRENDER_IMAGE_LOSSY;
+ break;
+ }
+ }
+ }
+ }
+ }
+ if (m_pRenderStatus->m_Options.m_Flags & RENDER_NOIMAGESMOOTH) {
+ m_Flags |= FXDIB_NOSMOOTH;
+ } else if (m_pImageObject->m_pImage->IsInterpol()) {
+ m_Flags |= FXDIB_INTERPOL;
+ }
+ if (m_Loader.m_pMask) {
+ return DrawMaskedImage();
+ }
+ if (m_bPatternColor) {
+ return DrawPatternImage(m_pObj2Device);
+ }
+ if (m_BitmapAlpha == 255 && pGeneralState && pGeneralState->m_FillOP &&
+ pGeneralState->m_OPMode == 0 &&
+ pGeneralState->m_BlendType == FXDIB_BLEND_NORMAL &&
+ pGeneralState->m_StrokeAlpha == 1 && pGeneralState->m_FillAlpha == 1) {
+ CPDF_Document* pDocument = NULL;
+ CPDF_Page* pPage = NULL;
+ if (m_pRenderStatus->m_pContext->GetPageCache()) {
+ pPage = m_pRenderStatus->m_pContext->GetPageCache()->GetPage();
+ pDocument = pPage->m_pDocument;
+ } else {
+ pDocument = m_pImageObject->m_pImage->GetDocument();
+ }
+ CPDF_Dictionary* pPageResources = pPage ? pPage->m_pPageResources : NULL;
+ CPDF_Object* pCSObj =
+ m_pImageObject->m_pImage->GetStream()->GetDict()->GetElementValue(
+ "ColorSpace");
+ CPDF_ColorSpace* pColorSpace =
+ pDocument->LoadColorSpace(pCSObj, pPageResources);
+ if (pColorSpace) {
+ int format = pColorSpace->GetFamily();
+ if (format == PDFCS_DEVICECMYK || format == PDFCS_SEPARATION ||
+ format == PDFCS_DEVICEN) {
+ m_BlendType = FXDIB_BLEND_DARKEN;
+ }
+ pDocument->GetPageData()->ReleaseColorSpace(pCSObj);
+ }
+ }
+ return StartDIBSource();
+}
+FX_BOOL CPDF_ImageRenderer::Start(CPDF_RenderStatus* pStatus,
+ const CPDF_PageObject* pObj,
+ const CFX_Matrix* pObj2Device,
+ FX_BOOL bStdCS,
+ int blendType) {
+ m_pRenderStatus = pStatus;
+ m_bStdCS = bStdCS;
+ m_pImageObject = pObj->AsImage();
+ m_BlendType = blendType;
+ m_pObj2Device = pObj2Device;
+ CPDF_Dictionary* pOC = m_pImageObject->m_pImage->GetOC();
+ if (pOC && m_pRenderStatus->m_Options.m_pOCContext &&
+ !m_pRenderStatus->m_Options.m_pOCContext->CheckOCGVisible(pOC)) {
+ return FALSE;
+ }
+ m_ImageMatrix = m_pImageObject->m_Matrix;
+ m_ImageMatrix.Concat(*pObj2Device);
+ if (StartLoadDIBSource()) {
+ return TRUE;
+ }
+ return StartRenderDIBSource();
+}
+FX_BOOL CPDF_ImageRenderer::Start(CPDF_RenderStatus* pStatus,
+ const CFX_DIBSource* pDIBSource,
+ FX_ARGB bitmap_argb,
+ int bitmap_alpha,
+ const CFX_Matrix* pImage2Device,
+ FX_DWORD flags,
+ FX_BOOL bStdCS,
+ int blendType) {
+ m_pRenderStatus = pStatus;
+ m_pDIBSource = pDIBSource;
+ m_FillArgb = bitmap_argb;
+ m_BitmapAlpha = bitmap_alpha;
+ m_ImageMatrix = *pImage2Device;
+ m_Flags = flags;
+ m_bStdCS = bStdCS;
+ m_BlendType = blendType;
+ return StartDIBSource();
+}
+FX_BOOL CPDF_ImageRenderer::DrawPatternImage(const CFX_Matrix* pObj2Device) {
+ if (m_pRenderStatus->m_bPrint &&
+ !(m_pRenderStatus->m_pDevice->GetRenderCaps() & FXRC_BLEND_MODE)) {
+ m_Result = FALSE;
+ return FALSE;
+ }
+ FX_RECT rect = m_ImageMatrix.GetUnitRect().GetOutterRect();
+ rect.Intersect(m_pRenderStatus->m_pDevice->GetClipBox());
+ if (rect.IsEmpty()) {
+ return FALSE;
+ }
+ CFX_Matrix new_matrix = m_ImageMatrix;
+ new_matrix.TranslateI(-rect.left, -rect.top);
+ int width = rect.Width();
+ int height = rect.Height();
+ CFX_FxgeDevice bitmap_device1;
+ if (!bitmap_device1.Create(rect.Width(), rect.Height(), FXDIB_Rgb32)) {
+ return TRUE;
+ }
+ bitmap_device1.GetBitmap()->Clear(0xffffff);
+ {
+ CPDF_RenderStatus bitmap_render;
+ bitmap_render.Initialize(m_pRenderStatus->m_pContext, &bitmap_device1, NULL,
+ NULL, NULL, NULL, &m_pRenderStatus->m_Options, 0,
+ m_pRenderStatus->m_bDropObjects, NULL, TRUE);
+ CFX_Matrix patternDevice = *pObj2Device;
+ patternDevice.Translate((FX_FLOAT)-rect.left, (FX_FLOAT)-rect.top);
+ if (m_pPattern->m_PatternType == CPDF_Pattern::TILING) {
+ bitmap_render.DrawTilingPattern(
+ static_cast<CPDF_TilingPattern*>(m_pPattern), m_pImageObject,
+ &patternDevice, FALSE);
+ } else {
+ bitmap_render.DrawShadingPattern(
+ static_cast<CPDF_ShadingPattern*>(m_pPattern), m_pImageObject,
+ &patternDevice, FALSE);
+ }
+ }
+ {
+ CFX_FxgeDevice bitmap_device2;
+ if (!bitmap_device2.Create(rect.Width(), rect.Height(), FXDIB_8bppRgb)) {
+ return TRUE;
+ }
+ bitmap_device2.GetBitmap()->Clear(0);
+ CPDF_RenderStatus bitmap_render;
+ bitmap_render.Initialize(m_pRenderStatus->m_pContext, &bitmap_device2, NULL,
+ NULL, NULL, NULL, NULL, 0,
+ m_pRenderStatus->m_bDropObjects, NULL, TRUE);
+ CPDF_ImageRenderer image_render;
+ if (image_render.Start(&bitmap_render, m_pDIBSource, 0xffffffff, 255,
+ &new_matrix, m_Flags, TRUE)) {
+ image_render.Continue(NULL);
+ }
+ if (m_Loader.m_MatteColor != 0xffffffff) {
+ int matte_r = FXARGB_R(m_Loader.m_MatteColor);
+ int matte_g = FXARGB_G(m_Loader.m_MatteColor);
+ int matte_b = FXARGB_B(m_Loader.m_MatteColor);
+ for (int row = 0; row < height; row++) {
+ uint8_t* dest_scan =
+ (uint8_t*)bitmap_device1.GetBitmap()->GetScanline(row);
+ const uint8_t* mask_scan = bitmap_device2.GetBitmap()->GetScanline(row);
+ for (int col = 0; col < width; col++) {
+ int alpha = *mask_scan++;
+ if (alpha) {
+ int orig = (*dest_scan - matte_b) * 255 / alpha + matte_b;
+ if (orig < 0) {
+ orig = 0;
+ } else if (orig > 255) {
+ orig = 255;
+ }
+ *dest_scan++ = orig;
+ orig = (*dest_scan - matte_g) * 255 / alpha + matte_g;
+ if (orig < 0) {
+ orig = 0;
+ } else if (orig > 255) {
+ orig = 255;
+ }
+ *dest_scan++ = orig;
+ orig = (*dest_scan - matte_r) * 255 / alpha + matte_r;
+ if (orig < 0) {
+ orig = 0;
+ } else if (orig > 255) {
+ orig = 255;
+ }
+ *dest_scan++ = orig;
+ dest_scan++;
+ } else {
+ dest_scan += 4;
+ }
+ }
+ }
+ }
+ bitmap_device2.GetBitmap()->ConvertFormat(FXDIB_8bppMask);
+ bitmap_device1.GetBitmap()->MultiplyAlpha(bitmap_device2.GetBitmap());
+ bitmap_device1.GetBitmap()->MultiplyAlpha(255);
+ }
+ m_pRenderStatus->m_pDevice->SetDIBits(bitmap_device1.GetBitmap(), rect.left,
+ rect.top, m_BlendType);
+ return FALSE;
+}
+FX_BOOL CPDF_ImageRenderer::DrawMaskedImage() {
+ if (m_pRenderStatus->m_bPrint &&
+ !(m_pRenderStatus->m_pDevice->GetRenderCaps() & FXRC_BLEND_MODE)) {
+ m_Result = FALSE;
+ return FALSE;
+ }
+ FX_RECT rect = m_ImageMatrix.GetUnitRect().GetOutterRect();
+ rect.Intersect(m_pRenderStatus->m_pDevice->GetClipBox());
+ if (rect.IsEmpty()) {
+ return FALSE;
+ }
+ CFX_Matrix new_matrix = m_ImageMatrix;
+ new_matrix.TranslateI(-rect.left, -rect.top);
+ int width = rect.Width();
+ int height = rect.Height();
+ CFX_FxgeDevice bitmap_device1;
+ if (!bitmap_device1.Create(width, height, FXDIB_Rgb32)) {
+ return TRUE;
+ }
+ bitmap_device1.GetBitmap()->Clear(0xffffff);
+ {
+ CPDF_RenderStatus bitmap_render;
+ bitmap_render.Initialize(m_pRenderStatus->m_pContext, &bitmap_device1, NULL,
+ NULL, NULL, NULL, NULL, 0,
+ m_pRenderStatus->m_bDropObjects, NULL, TRUE);
+ CPDF_ImageRenderer image_render;
+ if (image_render.Start(&bitmap_render, m_pDIBSource, 0, 255, &new_matrix,
+ m_Flags, TRUE)) {
+ image_render.Continue(NULL);
+ }
+ }
+ {
+ CFX_FxgeDevice bitmap_device2;
+ if (!bitmap_device2.Create(width, height, FXDIB_8bppRgb)) {
+ return TRUE;
+ }
+ bitmap_device2.GetBitmap()->Clear(0);
+ CPDF_RenderStatus bitmap_render;
+ bitmap_render.Initialize(m_pRenderStatus->m_pContext, &bitmap_device2, NULL,
+ NULL, NULL, NULL, NULL, 0,
+ m_pRenderStatus->m_bDropObjects, NULL, TRUE);
+ CPDF_ImageRenderer image_render;
+ if (image_render.Start(&bitmap_render, m_Loader.m_pMask, 0xffffffff, 255,
+ &new_matrix, m_Flags, TRUE)) {
+ image_render.Continue(NULL);
+ }
+ if (m_Loader.m_MatteColor != 0xffffffff) {
+ int matte_r = FXARGB_R(m_Loader.m_MatteColor);
+ int matte_g = FXARGB_G(m_Loader.m_MatteColor);
+ int matte_b = FXARGB_B(m_Loader.m_MatteColor);
+ for (int row = 0; row < height; row++) {
+ uint8_t* dest_scan =
+ (uint8_t*)bitmap_device1.GetBitmap()->GetScanline(row);
+ const uint8_t* mask_scan = bitmap_device2.GetBitmap()->GetScanline(row);
+ for (int col = 0; col < width; col++) {
+ int alpha = *mask_scan++;
+ if (alpha) {
+ int orig = (*dest_scan - matte_b) * 255 / alpha + matte_b;
+ if (orig < 0) {
+ orig = 0;
+ } else if (orig > 255) {
+ orig = 255;
+ }
+ *dest_scan++ = orig;
+ orig = (*dest_scan - matte_g) * 255 / alpha + matte_g;
+ if (orig < 0) {
+ orig = 0;
+ } else if (orig > 255) {
+ orig = 255;
+ }
+ *dest_scan++ = orig;
+ orig = (*dest_scan - matte_r) * 255 / alpha + matte_r;
+ if (orig < 0) {
+ orig = 0;
+ } else if (orig > 255) {
+ orig = 255;
+ }
+ *dest_scan++ = orig;
+ dest_scan++;
+ } else {
+ dest_scan += 4;
+ }
+ }
+ }
+ }
+ bitmap_device2.GetBitmap()->ConvertFormat(FXDIB_8bppMask);
+ bitmap_device1.GetBitmap()->MultiplyAlpha(bitmap_device2.GetBitmap());
+ if (m_BitmapAlpha < 255) {
+ bitmap_device1.GetBitmap()->MultiplyAlpha(m_BitmapAlpha);
+ }
+ }
+ m_pRenderStatus->m_pDevice->SetDIBits(bitmap_device1.GetBitmap(), rect.left,
+ rect.top, m_BlendType);
+ return FALSE;
+}
+FX_BOOL CPDF_ImageRenderer::StartDIBSource() {
+ if (!(m_Flags & RENDER_FORCE_DOWNSAMPLE) && m_pDIBSource->GetBPP() > 1) {
+ int image_size = m_pDIBSource->GetBPP() / 8 * m_pDIBSource->GetWidth() *
+ m_pDIBSource->GetHeight();
+ if (image_size > FPDF_HUGE_IMAGE_SIZE &&
+ !(m_Flags & RENDER_FORCE_HALFTONE)) {
+ m_Flags |= RENDER_FORCE_DOWNSAMPLE;
+ }
+ }
+ if (m_pRenderStatus->m_pDevice->StartDIBits(
+ m_pDIBSource, m_BitmapAlpha, m_FillArgb, &m_ImageMatrix, m_Flags,
+ m_DeviceHandle, 0, NULL, m_BlendType)) {
+ if (m_DeviceHandle) {
+ m_Status = 3;
+ return TRUE;
+ }
+ return FALSE;
+ }
+ CFX_FloatRect image_rect_f = m_ImageMatrix.GetUnitRect();
+ FX_RECT image_rect = image_rect_f.GetOutterRect();
+ int dest_width = image_rect.Width();
+ int dest_height = image_rect.Height();
+ if ((FXSYS_fabs(m_ImageMatrix.b) >= 0.5f || m_ImageMatrix.a == 0) ||
+ (FXSYS_fabs(m_ImageMatrix.c) >= 0.5f || m_ImageMatrix.d == 0)) {
+ if (m_pRenderStatus->m_bPrint &&
+ !(m_pRenderStatus->m_pDevice->GetRenderCaps() & FXRC_BLEND_MODE)) {
+ m_Result = FALSE;
+ return FALSE;
+ }
+ FX_RECT clip_box = m_pRenderStatus->m_pDevice->GetClipBox();
+ clip_box.Intersect(image_rect);
+ m_Status = 2;
+ m_pTransformer = new CFX_ImageTransformer;
+ m_pTransformer->Start(m_pDIBSource, &m_ImageMatrix, m_Flags, &clip_box);
+ return TRUE;
+ }
+ if (m_ImageMatrix.a < 0) {
+ dest_width = -dest_width;
+ }
+ if (m_ImageMatrix.d > 0) {
+ dest_height = -dest_height;
+ }
+ int dest_left, dest_top;
+ dest_left = dest_width > 0 ? image_rect.left : image_rect.right;
+ dest_top = dest_height > 0 ? image_rect.top : image_rect.bottom;
+ if (m_pDIBSource->IsOpaqueImage() && m_BitmapAlpha == 255) {
+ if (m_pRenderStatus->m_pDevice->StretchDIBits(
+ m_pDIBSource, dest_left, dest_top, dest_width, dest_height, m_Flags,
+ NULL, m_BlendType)) {
+ return FALSE;
+ }
+ }
+ if (m_pDIBSource->IsAlphaMask()) {
+ if (m_BitmapAlpha != 255) {
+ m_FillArgb = FXARGB_MUL_ALPHA(m_FillArgb, m_BitmapAlpha);
+ }
+ if (m_pRenderStatus->m_pDevice->StretchBitMask(
+ m_pDIBSource, dest_left, dest_top, dest_width, dest_height,
+ m_FillArgb, m_Flags)) {
+ return FALSE;
+ }
+ }
+ if (m_pRenderStatus->m_bPrint &&
+ !(m_pRenderStatus->m_pDevice->GetRenderCaps() & FXRC_BLEND_MODE)) {
+ m_Result = FALSE;
+ return TRUE;
+ }
+ FX_RECT clip_box = m_pRenderStatus->m_pDevice->GetClipBox();
+ FX_RECT dest_rect = clip_box;
+ dest_rect.Intersect(image_rect);
+ FX_RECT dest_clip(
+ dest_rect.left - image_rect.left, dest_rect.top - image_rect.top,
+ dest_rect.right - image_rect.left, dest_rect.bottom - image_rect.top);
+ std::unique_ptr<CFX_DIBitmap> pStretched(
+ m_pDIBSource->StretchTo(dest_width, dest_height, m_Flags, &dest_clip));
+ if (pStretched) {
+ m_pRenderStatus->CompositeDIBitmap(pStretched.get(), dest_rect.left,
+ dest_rect.top, m_FillArgb, m_BitmapAlpha,
+ m_BlendType, FALSE);
+ }
+ return FALSE;
+}
+FX_BOOL CPDF_ImageRenderer::StartBitmapAlpha() {
+ if (m_pDIBSource->IsOpaqueImage()) {
+ CFX_PathData path;
+ path.AppendRect(0, 0, 1, 1);
+ path.Transform(&m_ImageMatrix);
+ FX_DWORD fill_color =
+ ArgbEncode(0xff, m_BitmapAlpha, m_BitmapAlpha, m_BitmapAlpha);
+ m_pRenderStatus->m_pDevice->DrawPath(&path, NULL, NULL, fill_color, 0,
+ FXFILL_WINDING);
+ } else {
+ const CFX_DIBSource* pAlphaMask = m_pDIBSource->IsAlphaMask()
+ ? m_pDIBSource
+ : m_pDIBSource->GetAlphaMask();
+ if (FXSYS_fabs(m_ImageMatrix.b) >= 0.5f ||
+ FXSYS_fabs(m_ImageMatrix.c) >= 0.5f) {
+ int left, top;
+ std::unique_ptr<CFX_DIBitmap> pTransformed(
+ pAlphaMask->TransformTo(&m_ImageMatrix, left, top));
+ if (!pTransformed)
+ return TRUE;
+
+ m_pRenderStatus->m_pDevice->SetBitMask(
+ pTransformed.get(), left, top,
+ ArgbEncode(0xff, m_BitmapAlpha, m_BitmapAlpha, m_BitmapAlpha));
+ } else {
+ CFX_FloatRect image_rect_f = m_ImageMatrix.GetUnitRect();
+ FX_RECT image_rect = image_rect_f.GetOutterRect();
+ int dest_width =
+ m_ImageMatrix.a > 0 ? image_rect.Width() : -image_rect.Width();
+ int dest_height =
+ m_ImageMatrix.d > 0 ? -image_rect.Height() : image_rect.Height();
+ int left = dest_width > 0 ? image_rect.left : image_rect.right;
+ int top = dest_height > 0 ? image_rect.top : image_rect.bottom;
+ m_pRenderStatus->m_pDevice->StretchBitMask(
+ pAlphaMask, left, top, dest_width, dest_height,
+ ArgbEncode(0xff, m_BitmapAlpha, m_BitmapAlpha, m_BitmapAlpha));
+ }
+ if (m_pDIBSource != pAlphaMask) {
+ delete pAlphaMask;
+ }
+ }
+ return FALSE;
+}
+FX_BOOL CPDF_ImageRenderer::Continue(IFX_Pause* pPause) {
+ if (m_Status == 2) {
+ if (m_pTransformer->Continue(pPause)) {
+ return TRUE;
+ }
+ CFX_DIBitmap* pBitmap = m_pTransformer->m_Storer.Detach();
+ if (!pBitmap) {
+ return FALSE;
+ }
+ if (pBitmap->IsAlphaMask()) {
+ if (m_BitmapAlpha != 255) {
+ m_FillArgb = FXARGB_MUL_ALPHA(m_FillArgb, m_BitmapAlpha);
+ }
+ m_Result = m_pRenderStatus->m_pDevice->SetBitMask(
+ pBitmap, m_pTransformer->m_ResultLeft, m_pTransformer->m_ResultTop,
+ m_FillArgb);
+ } else {
+ if (m_BitmapAlpha != 255) {
+ pBitmap->MultiplyAlpha(m_BitmapAlpha);
+ }
+ m_Result = m_pRenderStatus->m_pDevice->SetDIBits(
+ pBitmap, m_pTransformer->m_ResultLeft, m_pTransformer->m_ResultTop,
+ m_BlendType);
+ }
+ delete pBitmap;
+ return FALSE;
+ }
+ if (m_Status == 3) {
+ return m_pRenderStatus->m_pDevice->ContinueDIBits(m_DeviceHandle, pPause);
+ }
+ if (m_Status == 4) {
+ if (m_Loader.Continue(m_LoadHandle, pPause)) {
+ return TRUE;
+ }
+ if (StartRenderDIBSource()) {
+ return Continue(pPause);
+ }
+ }
+ return FALSE;
+}
+ICodec_ScanlineDecoder* FPDFAPI_CreateFlateDecoder(
+ const uint8_t* src_buf,
+ FX_DWORD src_size,
+ int width,
+ int height,
+ int nComps,
+ int bpc,
+ const CPDF_Dictionary* pParams);
+CFX_DIBitmap* CPDF_RenderStatus::LoadSMask(CPDF_Dictionary* pSMaskDict,
+ FX_RECT* pClipRect,
+ const CFX_Matrix* pMatrix) {
+ if (!pSMaskDict) {
+ return NULL;
+ }
+ int width = pClipRect->right - pClipRect->left;
+ int height = pClipRect->bottom - pClipRect->top;
+ FX_BOOL bLuminosity = FALSE;
+ bLuminosity = pSMaskDict->GetConstStringBy("S") != "Alpha";
+ CPDF_Stream* pGroup = pSMaskDict->GetStreamBy("G");
+ if (!pGroup) {
+ return NULL;
+ }
+ std::unique_ptr<CPDF_Function> pFunc;
+ CPDF_Object* pFuncObj = pSMaskDict->GetElementValue("TR");
+ if (pFuncObj && (pFuncObj->IsDictionary() || pFuncObj->IsStream()))
+ pFunc.reset(CPDF_Function::Load(pFuncObj));
+
+ CFX_Matrix matrix = *pMatrix;
+ matrix.TranslateI(-pClipRect->left, -pClipRect->top);
+ CPDF_Form form(m_pContext->GetDocument(), m_pContext->GetPageResources(),
+ pGroup);
+ form.ParseContent(NULL, NULL, NULL, NULL);
+ CFX_FxgeDevice bitmap_device;
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+ if (!bitmap_device.Create(width, height,
+ bLuminosity ? FXDIB_Rgb32 : FXDIB_8bppMask)) {
+ return NULL;
+ }
+#else
+ if (!bitmap_device.Create(width, height,
+ bLuminosity ? FXDIB_Rgb : FXDIB_8bppMask)) {
+ return NULL;
+ }
+#endif
+ CFX_DIBitmap& bitmap = *bitmap_device.GetBitmap();
+ CPDF_Object* pCSObj = NULL;
+ CPDF_ColorSpace* pCS = NULL;
+ if (bLuminosity) {
+ CPDF_Array* pBC = pSMaskDict->GetArrayBy("BC");
+ FX_ARGB back_color = 0xff000000;
+ if (pBC) {
+ CPDF_Dictionary* pDict = pGroup->GetDict();
+ if (pDict && pDict->GetDictBy("Group"))
+ pCSObj = pDict->GetDictBy("Group")->GetElementValue("CS");
+ else
+ pCSObj = NULL;
+ pCS = m_pContext->GetDocument()->LoadColorSpace(pCSObj);
+ if (pCS) {
+ FX_FLOAT R, G, B;
+ FX_DWORD comps = 8;
+ if (pCS->CountComponents() > comps) {
+ comps = pCS->CountComponents();
+ }
+ CFX_FixedBufGrow<FX_FLOAT, 8> float_array(comps);
+ FX_FLOAT* pFloats = float_array;
+ FX_SAFE_DWORD num_floats = comps;
+ num_floats *= sizeof(FX_FLOAT);
+ if (!num_floats.IsValid()) {
+ return NULL;
+ }
+ FXSYS_memset(pFloats, 0, num_floats.ValueOrDie());
+ int count = pBC->GetCount() > 8 ? 8 : pBC->GetCount();
+ for (int i = 0; i < count; i++) {
+ pFloats[i] = pBC->GetNumberAt(i);
+ }
+ pCS->GetRGB(pFloats, R, G, B);
+ back_color = 0xff000000 | ((int32_t)(R * 255) << 16) |
+ ((int32_t)(G * 255) << 8) | (int32_t)(B * 255);
+ m_pContext->GetDocument()->GetPageData()->ReleaseColorSpace(pCSObj);
+ }
+ }
+ bitmap.Clear(back_color);
+ } else {
+ bitmap.Clear(0);
+ }
+ CPDF_Dictionary* pFormResource = NULL;
+ if (form.m_pFormDict) {
+ pFormResource = form.m_pFormDict->GetDictBy("Resources");
+ }
+ CPDF_RenderOptions options;
+ options.m_ColorMode = bLuminosity ? RENDER_COLOR_NORMAL : RENDER_COLOR_ALPHA;
+ CPDF_RenderStatus status;
+ status.Initialize(m_pContext, &bitmap_device, NULL, NULL, NULL, NULL,
+ &options, 0, m_bDropObjects, pFormResource, TRUE, NULL, 0,
+ pCS ? pCS->GetFamily() : 0, bLuminosity);
+ status.RenderObjectList(&form, &matrix);
+ std::unique_ptr<CFX_DIBitmap> pMask(new CFX_DIBitmap);
+ if (!pMask->Create(width, height, FXDIB_8bppMask))
+ return nullptr;
+
+ uint8_t* dest_buf = pMask->GetBuffer();
+ int dest_pitch = pMask->GetPitch();
+ uint8_t* src_buf = bitmap.GetBuffer();
+ int src_pitch = bitmap.GetPitch();
+ std::vector<uint8_t> transfers(256);
+ if (pFunc) {
+ CFX_FixedBufGrow<FX_FLOAT, 16> results(pFunc->CountOutputs());
+ for (int i = 0; i < 256; i++) {
+ FX_FLOAT input = (FX_FLOAT)i / 255.0f;
+ int nresult;
+ pFunc->Call(&input, 1, results, nresult);
+ transfers[i] = FXSYS_round(results[0] * 255);
+ }
+ } else {
+ for (int i = 0; i < 256; i++) {
+ transfers[i] = i;
+ }
+ }
+ if (bLuminosity) {
+ int Bpp = bitmap.GetBPP() / 8;
+ for (int row = 0; row < height; row++) {
+ uint8_t* dest_pos = dest_buf + row * dest_pitch;
+ uint8_t* src_pos = src_buf + row * src_pitch;
+ for (int col = 0; col < width; col++) {
+ *dest_pos++ = transfers[FXRGB2GRAY(src_pos[2], src_pos[1], *src_pos)];
+ src_pos += Bpp;
+ }
+ }
+ } else if (pFunc) {
+ int size = dest_pitch * height;
+ for (int i = 0; i < size; i++) {
+ dest_buf[i] = transfers[src_buf[i]];
+ }
+ } else {
+ FXSYS_memcpy(dest_buf, src_buf, dest_pitch * height);
+ }
+ return pMask.release();
+}
diff --git a/core/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp b/core/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp
new file mode 100644
index 0000000000..f1a06c4fc7
--- /dev/null
+++ b/core/fpdfapi/fpdf_render/fpdf_render_loadimage.cpp
@@ -0,0 +1,1654 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_render/render_int.h"
+
+#include <algorithm>
+#include <memory>
+#include <vector>
+
+#include "core/fpdfapi/fpdf_page/pageint.h"
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_document.h"
+#include "core/include/fpdfapi/fpdf_module.h"
+#include "core/include/fpdfapi/fpdf_pageobj.h"
+#include "core/include/fpdfapi/fpdf_render.h"
+#include "core/include/fxcodec/fx_codec.h"
+#include "core/include/fxcrt/fx_safe_types.h"
+#include "core/include/fxge/fx_ge.h"
+
+namespace {
+
+unsigned int GetBits8(const uint8_t* pData, uint64_t bitpos, size_t nbits) {
+ ASSERT(nbits == 1 || nbits == 2 || nbits == 4 || nbits == 8 || nbits == 16);
+ ASSERT((bitpos & (nbits - 1)) == 0);
+ unsigned int byte = pData[bitpos / 8];
+ if (nbits == 8) {
+ return byte;
+ } else if (nbits == 16) {
+ return byte * 256 + pData[bitpos / 8 + 1];
+ }
+
+ return (byte >> (8 - nbits - (bitpos % 8))) & ((1 << nbits) - 1);
+}
+
+FX_SAFE_DWORD CalculatePitch8(FX_DWORD bpc, FX_DWORD components, int width) {
+ FX_SAFE_DWORD pitch = bpc;
+ pitch *= components;
+ pitch *= width;
+ pitch += 7;
+ pitch /= 8;
+ return pitch;
+}
+
+FX_SAFE_DWORD CalculatePitch32(int bpp, int width) {
+ FX_SAFE_DWORD pitch = bpp;
+ pitch *= width;
+ pitch += 31;
+ pitch /= 32; // quantized to number of 32-bit words.
+ pitch *= 4; // and then back to bytes, (not just /8 in one step).
+ return pitch;
+}
+
+bool IsAllowedBPCValue(int bpc) {
+ return bpc == 1 || bpc == 2 || bpc == 4 || bpc == 8 || bpc == 16;
+}
+
+template <typename T>
+T ClampValue(T value, T max_value) {
+ value = std::min(value, max_value);
+ value = std::max<T>(0, value);
+ return value;
+}
+
+// Wrapper class to use with std::unique_ptr for CJPX_Decoder.
+class JpxBitMapContext {
+ public:
+ explicit JpxBitMapContext(ICodec_JpxModule* jpx_module)
+ : jpx_module_(jpx_module), decoder_(nullptr) {}
+
+ ~JpxBitMapContext() { jpx_module_->DestroyDecoder(decoder_); }
+
+ // Takes ownership of |decoder|.
+ void set_decoder(CJPX_Decoder* decoder) { decoder_ = decoder; }
+
+ CJPX_Decoder* decoder() { return decoder_; }
+
+ private:
+ ICodec_JpxModule* const jpx_module_; // Weak pointer.
+ CJPX_Decoder* decoder_; // Decoder, owned.
+
+ // Disallow evil constructors
+ JpxBitMapContext(const JpxBitMapContext&);
+ void operator=(const JpxBitMapContext&);
+};
+
+const int kMaxImageDimension = 0x01FFFF;
+
+} // namespace
+
+CFX_DIBSource* CPDF_Image::LoadDIBSource(CFX_DIBSource** ppMask,
+ FX_DWORD* pMatteColor,
+ FX_BOOL bStdCS,
+ FX_DWORD GroupFamily,
+ FX_BOOL bLoadMask) const {
+ std::unique_ptr<CPDF_DIBSource> source(new CPDF_DIBSource);
+ if (source->Load(m_pDocument, m_pStream,
+ reinterpret_cast<CPDF_DIBSource**>(ppMask), pMatteColor,
+ nullptr, nullptr, bStdCS, GroupFamily, bLoadMask)) {
+ return source.release();
+ }
+ return nullptr;
+}
+
+CFX_DIBSource* CPDF_Image::DetachBitmap() {
+ CFX_DIBSource* pBitmap = m_pDIBSource;
+ m_pDIBSource = nullptr;
+ return pBitmap;
+}
+
+CFX_DIBSource* CPDF_Image::DetachMask() {
+ CFX_DIBSource* pBitmap = m_pMask;
+ m_pMask = nullptr;
+ return pBitmap;
+}
+
+FX_BOOL CPDF_Image::StartLoadDIBSource(CPDF_Dictionary* pFormResource,
+ CPDF_Dictionary* pPageResource,
+ FX_BOOL bStdCS,
+ FX_DWORD GroupFamily,
+ FX_BOOL bLoadMask) {
+ std::unique_ptr<CPDF_DIBSource> source(new CPDF_DIBSource);
+ int ret =
+ source->StartLoadDIBSource(m_pDocument, m_pStream, TRUE, pFormResource,
+ pPageResource, bStdCS, GroupFamily, bLoadMask);
+ if (ret == 2) {
+ m_pDIBSource = source.release();
+ return TRUE;
+ }
+ if (!ret) {
+ m_pDIBSource = nullptr;
+ return FALSE;
+ }
+ m_pMask = source->DetachMask();
+ m_MatteColor = source->GetMatteColor();
+ m_pDIBSource = source.release();
+ return FALSE;
+}
+
+FX_BOOL CPDF_Image::Continue(IFX_Pause* pPause) {
+ CPDF_DIBSource* pSource = static_cast<CPDF_DIBSource*>(m_pDIBSource);
+ int ret = pSource->ContinueLoadDIBSource(pPause);
+ if (ret == 2) {
+ return TRUE;
+ }
+ if (!ret) {
+ delete m_pDIBSource;
+ m_pDIBSource = nullptr;
+ return FALSE;
+ }
+ m_pMask = pSource->DetachMask();
+ m_MatteColor = pSource->GetMatteColor();
+ return FALSE;
+}
+
+CPDF_DIBSource::CPDF_DIBSource()
+ : m_pDocument(nullptr),
+ m_pStream(nullptr),
+ m_pDict(nullptr),
+ m_pColorSpace(nullptr),
+ m_Family(0),
+ m_bpc(0),
+ m_bpc_orig(0),
+ m_nComponents(0),
+ m_GroupFamily(0),
+ m_MatteColor(0),
+ m_bLoadMask(FALSE),
+ m_bDefaultDecode(TRUE),
+ m_bImageMask(FALSE),
+ m_bDoBpcCheck(TRUE),
+ m_bColorKey(FALSE),
+ m_bHasMask(FALSE),
+ m_bStdCS(FALSE),
+ m_pCompData(nullptr),
+ m_pLineBuf(nullptr),
+ m_pMaskedLine(nullptr),
+ m_pJbig2Context(nullptr),
+ m_pMask(nullptr),
+ m_pMaskStream(nullptr),
+ m_Status(0) {}
+
+CPDF_DIBSource::~CPDF_DIBSource() {
+ FX_Free(m_pMaskedLine);
+ FX_Free(m_pLineBuf);
+ m_pCachedBitmap.reset();
+ FX_Free(m_pCompData);
+ CPDF_ColorSpace* pCS = m_pColorSpace;
+ if (pCS && m_pDocument) {
+ m_pDocument->GetPageData()->ReleaseColorSpace(pCS->GetArray());
+ }
+ if (m_pJbig2Context) {
+ ICodec_Jbig2Module* pJbig2Module = CPDF_ModuleMgr::Get()->GetJbig2Module();
+ pJbig2Module->DestroyJbig2Context(m_pJbig2Context);
+ }
+}
+
+CFX_DIBitmap* CPDF_DIBSource::GetBitmap() const {
+ return m_pCachedBitmap ? m_pCachedBitmap.get() : Clone();
+}
+
+void CPDF_DIBSource::ReleaseBitmap(CFX_DIBitmap* pBitmap) const {
+ if (pBitmap && pBitmap != m_pCachedBitmap.get()) {
+ delete pBitmap;
+ }
+}
+
+FX_BOOL CPDF_DIBSource::Load(CPDF_Document* pDoc,
+ const CPDF_Stream* pStream,
+ CPDF_DIBSource** ppMask,
+ FX_DWORD* pMatteColor,
+ CPDF_Dictionary* pFormResources,
+ CPDF_Dictionary* pPageResources,
+ FX_BOOL bStdCS,
+ FX_DWORD GroupFamily,
+ FX_BOOL bLoadMask) {
+ if (!pStream) {
+ return FALSE;
+ }
+ m_pDocument = pDoc;
+ m_pDict = pStream->GetDict();
+ if (!m_pDict) {
+ return FALSE;
+ }
+ m_pStream = pStream;
+ m_Width = m_pDict->GetIntegerBy("Width");
+ m_Height = m_pDict->GetIntegerBy("Height");
+ if (m_Width <= 0 || m_Height <= 0 || m_Width > kMaxImageDimension ||
+ m_Height > kMaxImageDimension) {
+ return FALSE;
+ }
+ m_GroupFamily = GroupFamily;
+ m_bLoadMask = bLoadMask;
+ if (!LoadColorInfo(m_pStream->GetObjNum() != 0 ? nullptr : pFormResources,
+ pPageResources)) {
+ return FALSE;
+ }
+ if (m_bDoBpcCheck && (m_bpc == 0 || m_nComponents == 0)) {
+ return FALSE;
+ }
+ FX_SAFE_DWORD src_size =
+ CalculatePitch8(m_bpc, m_nComponents, m_Width) * m_Height;
+ if (!src_size.IsValid()) {
+ return FALSE;
+ }
+ m_pStreamAcc.reset(new CPDF_StreamAcc);
+ m_pStreamAcc->LoadAllData(pStream, FALSE, src_size.ValueOrDie(), TRUE);
+ if (m_pStreamAcc->GetSize() == 0 || !m_pStreamAcc->GetData()) {
+ return FALSE;
+ }
+ if (!CreateDecoder()) {
+ return FALSE;
+ }
+ if (m_bImageMask) {
+ m_bpp = 1;
+ m_bpc = 1;
+ m_nComponents = 1;
+ m_AlphaFlag = 1;
+ } else if (m_bpc * m_nComponents == 1) {
+ m_bpp = 1;
+ } else if (m_bpc * m_nComponents <= 8) {
+ m_bpp = 8;
+ } else {
+ m_bpp = 24;
+ }
+ FX_SAFE_DWORD pitch = CalculatePitch32(m_bpp, m_Width);
+ if (!pitch.IsValid()) {
+ return FALSE;
+ }
+ m_pLineBuf = FX_Alloc(uint8_t, pitch.ValueOrDie());
+ if (m_pColorSpace && bStdCS) {
+ m_pColorSpace->EnableStdConversion(TRUE);
+ }
+ LoadPalette();
+ if (m_bColorKey) {
+ m_bpp = 32;
+ m_AlphaFlag = 2;
+ pitch = CalculatePitch32(m_bpp, m_Width);
+ if (!pitch.IsValid()) {
+ return FALSE;
+ }
+ m_pMaskedLine = FX_Alloc(uint8_t, pitch.ValueOrDie());
+ }
+ m_Pitch = pitch.ValueOrDie();
+ if (ppMask) {
+ *ppMask = LoadMask(*pMatteColor);
+ }
+ if (m_pColorSpace && bStdCS) {
+ m_pColorSpace->EnableStdConversion(FALSE);
+ }
+ return TRUE;
+}
+
+int CPDF_DIBSource::ContinueToLoadMask() {
+ if (m_bImageMask) {
+ m_bpp = 1;
+ m_bpc = 1;
+ m_nComponents = 1;
+ m_AlphaFlag = 1;
+ } else if (m_bpc * m_nComponents == 1) {
+ m_bpp = 1;
+ } else if (m_bpc * m_nComponents <= 8) {
+ m_bpp = 8;
+ } else {
+ m_bpp = 24;
+ }
+ if (!m_bpc || !m_nComponents) {
+ return 0;
+ }
+ FX_SAFE_DWORD pitch = CalculatePitch32(m_bpp, m_Width);
+ if (!pitch.IsValid()) {
+ return 0;
+ }
+ m_pLineBuf = FX_Alloc(uint8_t, pitch.ValueOrDie());
+ if (m_pColorSpace && m_bStdCS) {
+ m_pColorSpace->EnableStdConversion(TRUE);
+ }
+ LoadPalette();
+ if (m_bColorKey) {
+ m_bpp = 32;
+ m_AlphaFlag = 2;
+ pitch = CalculatePitch32(m_bpp, m_Width);
+ if (!pitch.IsValid()) {
+ return 0;
+ }
+ m_pMaskedLine = FX_Alloc(uint8_t, pitch.ValueOrDie());
+ }
+ m_Pitch = pitch.ValueOrDie();
+ return 1;
+}
+
+int CPDF_DIBSource::StartLoadDIBSource(CPDF_Document* pDoc,
+ const CPDF_Stream* pStream,
+ FX_BOOL bHasMask,
+ CPDF_Dictionary* pFormResources,
+ CPDF_Dictionary* pPageResources,
+ FX_BOOL bStdCS,
+ FX_DWORD GroupFamily,
+ FX_BOOL bLoadMask) {
+ if (!pStream) {
+ return 0;
+ }
+ m_pDocument = pDoc;
+ m_pDict = pStream->GetDict();
+ m_pStream = pStream;
+ m_bStdCS = bStdCS;
+ m_bHasMask = bHasMask;
+ m_Width = m_pDict->GetIntegerBy("Width");
+ m_Height = m_pDict->GetIntegerBy("Height");
+ if (m_Width <= 0 || m_Height <= 0 || m_Width > kMaxImageDimension ||
+ m_Height > kMaxImageDimension) {
+ return 0;
+ }
+ m_GroupFamily = GroupFamily;
+ m_bLoadMask = bLoadMask;
+ if (!LoadColorInfo(m_pStream->GetObjNum() != 0 ? nullptr : pFormResources,
+ pPageResources)) {
+ return 0;
+ }
+ if (m_bDoBpcCheck && (m_bpc == 0 || m_nComponents == 0)) {
+ return 0;
+ }
+ FX_SAFE_DWORD src_size =
+ CalculatePitch8(m_bpc, m_nComponents, m_Width) * m_Height;
+ if (!src_size.IsValid()) {
+ return 0;
+ }
+ m_pStreamAcc.reset(new CPDF_StreamAcc);
+ m_pStreamAcc->LoadAllData(pStream, FALSE, src_size.ValueOrDie(), TRUE);
+ if (m_pStreamAcc->GetSize() == 0 || !m_pStreamAcc->GetData()) {
+ return 0;
+ }
+ int ret = CreateDecoder();
+ if (!ret)
+ return ret;
+
+ if (ret != 1) {
+ if (!ContinueToLoadMask()) {
+ return 0;
+ }
+ if (m_bHasMask) {
+ StratLoadMask();
+ }
+ return ret;
+ }
+ if (!ContinueToLoadMask()) {
+ return 0;
+ }
+ if (m_bHasMask) {
+ ret = StratLoadMask();
+ }
+ if (ret == 2) {
+ return ret;
+ }
+ if (m_pColorSpace && m_bStdCS) {
+ m_pColorSpace->EnableStdConversion(FALSE);
+ }
+ return ret;
+}
+
+int CPDF_DIBSource::ContinueLoadDIBSource(IFX_Pause* pPause) {
+ FXCODEC_STATUS ret;
+ if (m_Status == 1) {
+ const CFX_ByteString& decoder = m_pStreamAcc->GetImageDecoder();
+ if (decoder == "JPXDecode") {
+ return 0;
+ }
+ ICodec_Jbig2Module* pJbig2Module = CPDF_ModuleMgr::Get()->GetJbig2Module();
+ if (!m_pJbig2Context) {
+ m_pJbig2Context = pJbig2Module->CreateJbig2Context();
+ if (m_pStreamAcc->GetImageParam()) {
+ CPDF_Stream* pGlobals =
+ m_pStreamAcc->GetImageParam()->GetStreamBy("JBIG2Globals");
+ if (pGlobals) {
+ m_pGlobalStream.reset(new CPDF_StreamAcc);
+ m_pGlobalStream->LoadAllData(pGlobals, FALSE);
+ }
+ }
+ ret = pJbig2Module->StartDecode(
+ m_pJbig2Context, m_pDocument, m_Width, m_Height, m_pStreamAcc.get(),
+ m_pGlobalStream.get(), m_pCachedBitmap->GetBuffer(),
+ m_pCachedBitmap->GetPitch(), pPause);
+ if (ret < 0) {
+ m_pCachedBitmap.reset();
+ m_pGlobalStream.reset();
+ pJbig2Module->DestroyJbig2Context(m_pJbig2Context);
+ m_pJbig2Context = nullptr;
+ return 0;
+ }
+ if (ret == FXCODEC_STATUS_DECODE_TOBECONTINUE) {
+ return 2;
+ }
+ int ret1 = 1;
+ if (m_bHasMask) {
+ ret1 = ContinueLoadMaskDIB(pPause);
+ m_Status = 2;
+ }
+ if (ret1 == 2) {
+ return ret1;
+ }
+ if (m_pColorSpace && m_bStdCS) {
+ m_pColorSpace->EnableStdConversion(FALSE);
+ }
+ return ret1;
+ }
+ FXCODEC_STATUS ret = pJbig2Module->ContinueDecode(m_pJbig2Context, pPause);
+ if (ret < 0) {
+ m_pCachedBitmap.reset();
+ m_pGlobalStream.reset();
+ pJbig2Module->DestroyJbig2Context(m_pJbig2Context);
+ m_pJbig2Context = nullptr;
+ return 0;
+ }
+ if (ret == FXCODEC_STATUS_DECODE_TOBECONTINUE) {
+ return 2;
+ }
+ int ret1 = 1;
+ if (m_bHasMask) {
+ ret1 = ContinueLoadMaskDIB(pPause);
+ m_Status = 2;
+ }
+ if (ret1 == 2) {
+ return ret1;
+ }
+ if (m_pColorSpace && m_bStdCS) {
+ m_pColorSpace->EnableStdConversion(FALSE);
+ }
+ return ret1;
+ }
+ if (m_Status == 2) {
+ return ContinueLoadMaskDIB(pPause);
+ }
+ return 0;
+}
+
+bool CPDF_DIBSource::LoadColorInfo(const CPDF_Dictionary* pFormResources,
+ const CPDF_Dictionary* pPageResources) {
+ m_bpc_orig = m_pDict->GetIntegerBy("BitsPerComponent");
+ if (m_pDict->GetIntegerBy("ImageMask"))
+ m_bImageMask = TRUE;
+
+ if (m_bImageMask || !m_pDict->KeyExist("ColorSpace")) {
+ if (!m_bImageMask) {
+ CPDF_Object* pFilter = m_pDict->GetElementValue("Filter");
+ if (pFilter) {
+ CFX_ByteString filter;
+ if (pFilter->IsName()) {
+ filter = pFilter->GetString();
+ } else if (CPDF_Array* pArray = pFilter->AsArray()) {
+ filter = pArray->GetStringAt(pArray->GetCount() - 1);
+ }
+
+ if (filter == "JPXDecode") {
+ m_bDoBpcCheck = FALSE;
+ return true;
+ }
+ }
+ }
+ m_bImageMask = TRUE;
+ m_bpc = m_nComponents = 1;
+ CPDF_Array* pDecode = m_pDict->GetArrayBy("Decode");
+ m_bDefaultDecode = !pDecode || !pDecode->GetIntegerAt(0);
+ return true;
+ }
+
+ CPDF_Object* pCSObj = m_pDict->GetElementValue("ColorSpace");
+ if (!pCSObj)
+ return false;
+
+ CPDF_DocPageData* pDocPageData = m_pDocument->GetPageData();
+ if (pFormResources)
+ m_pColorSpace = pDocPageData->GetColorSpace(pCSObj, pFormResources);
+ if (!m_pColorSpace)
+ m_pColorSpace = pDocPageData->GetColorSpace(pCSObj, pPageResources);
+ if (!m_pColorSpace)
+ return false;
+
+ m_Family = m_pColorSpace->GetFamily();
+ m_nComponents = m_pColorSpace->CountComponents();
+ if (m_Family == PDFCS_ICCBASED && pCSObj->IsName()) {
+ CFX_ByteString cs = pCSObj->GetString();
+ if (cs == "DeviceGray") {
+ m_nComponents = 1;
+ } else if (cs == "DeviceRGB") {
+ m_nComponents = 3;
+ } else if (cs == "DeviceCMYK") {
+ m_nComponents = 4;
+ }
+ }
+ ValidateDictParam();
+ m_pCompData = GetDecodeAndMaskArray(m_bDefaultDecode, m_bColorKey);
+ return !!m_pCompData;
+}
+
+DIB_COMP_DATA* CPDF_DIBSource::GetDecodeAndMaskArray(FX_BOOL& bDefaultDecode,
+ FX_BOOL& bColorKey) {
+ if (!m_pColorSpace) {
+ return nullptr;
+ }
+ DIB_COMP_DATA* pCompData = FX_Alloc(DIB_COMP_DATA, m_nComponents);
+ int max_data = (1 << m_bpc) - 1;
+ CPDF_Array* pDecode = m_pDict->GetArrayBy("Decode");
+ if (pDecode) {
+ for (FX_DWORD i = 0; i < m_nComponents; i++) {
+ pCompData[i].m_DecodeMin = pDecode->GetNumberAt(i * 2);
+ FX_FLOAT max = pDecode->GetNumberAt(i * 2 + 1);
+ pCompData[i].m_DecodeStep = (max - pCompData[i].m_DecodeMin) / max_data;
+ FX_FLOAT def_value;
+ FX_FLOAT def_min;
+ FX_FLOAT def_max;
+ m_pColorSpace->GetDefaultValue(i, def_value, def_min, def_max);
+ if (m_Family == PDFCS_INDEXED) {
+ def_max = max_data;
+ }
+ if (def_min != pCompData[i].m_DecodeMin || def_max != max) {
+ bDefaultDecode = FALSE;
+ }
+ }
+ } else {
+ for (FX_DWORD i = 0; i < m_nComponents; i++) {
+ FX_FLOAT def_value;
+ m_pColorSpace->GetDefaultValue(i, def_value, pCompData[i].m_DecodeMin,
+ pCompData[i].m_DecodeStep);
+ if (m_Family == PDFCS_INDEXED) {
+ pCompData[i].m_DecodeStep = max_data;
+ }
+ pCompData[i].m_DecodeStep =
+ (pCompData[i].m_DecodeStep - pCompData[i].m_DecodeMin) / max_data;
+ }
+ }
+ if (!m_pDict->KeyExist("SMask")) {
+ CPDF_Object* pMask = m_pDict->GetElementValue("Mask");
+ if (!pMask) {
+ return pCompData;
+ }
+ if (CPDF_Array* pArray = pMask->AsArray()) {
+ if (pArray->GetCount() >= m_nComponents * 2) {
+ for (FX_DWORD i = 0; i < m_nComponents; i++) {
+ int min_num = pArray->GetIntegerAt(i * 2);
+ int max_num = pArray->GetIntegerAt(i * 2 + 1);
+ pCompData[i].m_ColorKeyMin = std::max(min_num, 0);
+ pCompData[i].m_ColorKeyMax = std::min(max_num, max_data);
+ }
+ }
+ bColorKey = TRUE;
+ }
+ }
+ return pCompData;
+}
+
+ICodec_ScanlineDecoder* FPDFAPI_CreateFaxDecoder(
+ const uint8_t* src_buf,
+ FX_DWORD src_size,
+ int width,
+ int height,
+ const CPDF_Dictionary* pParams);
+
+ICodec_ScanlineDecoder* FPDFAPI_CreateFlateDecoder(
+ const uint8_t* src_buf,
+ FX_DWORD src_size,
+ int width,
+ int height,
+ int nComps,
+ int bpc,
+ const CPDF_Dictionary* pParams);
+
+int CPDF_DIBSource::CreateDecoder() {
+ const CFX_ByteString& decoder = m_pStreamAcc->GetImageDecoder();
+ if (decoder.IsEmpty()) {
+ return 1;
+ }
+ if (m_bDoBpcCheck && m_bpc == 0) {
+ return 0;
+ }
+ const uint8_t* src_data = m_pStreamAcc->GetData();
+ FX_DWORD src_size = m_pStreamAcc->GetSize();
+ const CPDF_Dictionary* pParams = m_pStreamAcc->GetImageParam();
+ if (decoder == "CCITTFaxDecode") {
+ m_pDecoder.reset(FPDFAPI_CreateFaxDecoder(src_data, src_size, m_Width,
+ m_Height, pParams));
+ } else if (decoder == "DCTDecode") {
+ m_pDecoder.reset(CPDF_ModuleMgr::Get()->GetJpegModule()->CreateDecoder(
+ src_data, src_size, m_Width, m_Height, m_nComponents,
+ pParams ? pParams->GetIntegerBy("ColorTransform", 1) : 1));
+ if (!m_pDecoder) {
+ FX_BOOL bTransform = FALSE;
+ int comps;
+ int bpc;
+ ICodec_JpegModule* pJpegModule = CPDF_ModuleMgr::Get()->GetJpegModule();
+ if (pJpegModule->LoadInfo(src_data, src_size, m_Width, m_Height, comps,
+ bpc, bTransform)) {
+ if (m_nComponents != static_cast<FX_DWORD>(comps)) {
+ FX_Free(m_pCompData);
+ m_nComponents = static_cast<FX_DWORD>(comps);
+ if (m_Family == PDFCS_LAB && m_nComponents != 3) {
+ m_pCompData = nullptr;
+ return 0;
+ }
+ m_pCompData = GetDecodeAndMaskArray(m_bDefaultDecode, m_bColorKey);
+ if (!m_pCompData) {
+ return 0;
+ }
+ }
+ m_bpc = bpc;
+ m_pDecoder.reset(CPDF_ModuleMgr::Get()->GetJpegModule()->CreateDecoder(
+ src_data, src_size, m_Width, m_Height, m_nComponents, bTransform));
+ }
+ }
+ } else if (decoder == "FlateDecode") {
+ m_pDecoder.reset(FPDFAPI_CreateFlateDecoder(
+ src_data, src_size, m_Width, m_Height, m_nComponents, m_bpc, pParams));
+ } else if (decoder == "JPXDecode") {
+ LoadJpxBitmap();
+ return m_pCachedBitmap ? 1 : 0;
+ } else if (decoder == "JBIG2Decode") {
+ m_pCachedBitmap.reset(new CFX_DIBitmap);
+ if (!m_pCachedBitmap->Create(
+ m_Width, m_Height, m_bImageMask ? FXDIB_1bppMask : FXDIB_1bppRgb)) {
+ m_pCachedBitmap.reset();
+ return 0;
+ }
+ m_Status = 1;
+ return 2;
+ } else if (decoder == "RunLengthDecode") {
+ m_pDecoder.reset(CPDF_ModuleMgr::Get()
+ ->GetCodecModule()
+ ->GetBasicModule()
+ ->CreateRunLengthDecoder(src_data, src_size, m_Width,
+ m_Height, m_nComponents,
+ m_bpc));
+ }
+ if (!m_pDecoder)
+ return 0;
+
+ FX_SAFE_DWORD requested_pitch =
+ CalculatePitch8(m_bpc, m_nComponents, m_Width);
+ if (!requested_pitch.IsValid()) {
+ return 0;
+ }
+ FX_SAFE_DWORD provided_pitch = CalculatePitch8(
+ m_pDecoder->GetBPC(), m_pDecoder->CountComps(), m_pDecoder->GetWidth());
+ if (!provided_pitch.IsValid()) {
+ return 0;
+ }
+ if (provided_pitch.ValueOrDie() < requested_pitch.ValueOrDie()) {
+ return 0;
+ }
+ return 1;
+}
+
+void CPDF_DIBSource::LoadJpxBitmap() {
+ ICodec_JpxModule* pJpxModule = CPDF_ModuleMgr::Get()->GetJpxModule();
+ if (!pJpxModule)
+ return;
+
+ std::unique_ptr<JpxBitMapContext> context(new JpxBitMapContext(pJpxModule));
+ context->set_decoder(pJpxModule->CreateDecoder(
+ m_pStreamAcc->GetData(), m_pStreamAcc->GetSize(), m_pColorSpace));
+ if (!context->decoder())
+ return;
+
+ FX_DWORD width = 0;
+ FX_DWORD height = 0;
+ FX_DWORD components = 0;
+ pJpxModule->GetImageInfo(context->decoder(), &width, &height, &components);
+ if (static_cast<int>(width) < m_Width || static_cast<int>(height) < m_Height)
+ return;
+
+ FX_BOOL bSwapRGB = FALSE;
+ if (m_pColorSpace) {
+ if (components != m_pColorSpace->CountComponents())
+ return;
+
+ if (m_pColorSpace == CPDF_ColorSpace::GetStockCS(PDFCS_DEVICERGB)) {
+ bSwapRGB = TRUE;
+ m_pColorSpace = nullptr;
+ }
+ } else {
+ if (components == 3) {
+ bSwapRGB = TRUE;
+ } else if (components == 4) {
+ m_pColorSpace = CPDF_ColorSpace::GetStockCS(PDFCS_DEVICECMYK);
+ }
+ m_nComponents = components;
+ }
+
+ FXDIB_Format format;
+ if (components == 1) {
+ format = FXDIB_8bppRgb;
+ } else if (components <= 3) {
+ format = FXDIB_Rgb;
+ } else if (components == 4) {
+ format = FXDIB_Rgb32;
+ } else {
+ width = (width * components + 2) / 3;
+ format = FXDIB_Rgb;
+ }
+
+ m_pCachedBitmap.reset(new CFX_DIBitmap);
+ if (!m_pCachedBitmap->Create(width, height, format)) {
+ m_pCachedBitmap.reset();
+ return;
+ }
+ m_pCachedBitmap->Clear(0xFFFFFFFF);
+ std::vector<uint8_t> output_offsets(components);
+ for (FX_DWORD i = 0; i < components; ++i)
+ output_offsets[i] = i;
+ if (bSwapRGB) {
+ output_offsets[0] = 2;
+ output_offsets[2] = 0;
+ }
+ if (!pJpxModule->Decode(context->decoder(), m_pCachedBitmap->GetBuffer(),
+ m_pCachedBitmap->GetPitch(), output_offsets)) {
+ m_pCachedBitmap.reset();
+ return;
+ }
+ if (m_pColorSpace && m_pColorSpace->GetFamily() == PDFCS_INDEXED &&
+ m_bpc < 8) {
+ int scale = 8 - m_bpc;
+ for (FX_DWORD row = 0; row < height; ++row) {
+ uint8_t* scanline =
+ const_cast<uint8_t*>(m_pCachedBitmap->GetScanline(row));
+ for (FX_DWORD col = 0; col < width; ++col) {
+ *scanline = (*scanline) >> scale;
+ ++scanline;
+ }
+ }
+ }
+ m_bpc = 8;
+}
+
+CPDF_DIBSource* CPDF_DIBSource::LoadMask(FX_DWORD& MatteColor) {
+ MatteColor = 0xFFFFFFFF;
+ CPDF_Stream* pSoftMask = m_pDict->GetStreamBy("SMask");
+ if (pSoftMask) {
+ CPDF_Array* pMatte = pSoftMask->GetDict()->GetArrayBy("Matte");
+ if (pMatte && m_pColorSpace &&
+ m_pColorSpace->CountComponents() <= m_nComponents) {
+ std::vector<FX_FLOAT> colors(m_nComponents);
+ for (FX_DWORD i = 0; i < m_nComponents; i++) {
+ colors[i] = pMatte->GetFloatAt(i);
+ }
+ FX_FLOAT R, G, B;
+ m_pColorSpace->GetRGB(colors.data(), R, G, B);
+ MatteColor = FXARGB_MAKE(0, FXSYS_round(R * 255), FXSYS_round(G * 255),
+ FXSYS_round(B * 255));
+ }
+ return LoadMaskDIB(pSoftMask);
+ }
+
+ if (CPDF_Stream* pStream = ToStream(m_pDict->GetElementValue("Mask")))
+ return LoadMaskDIB(pStream);
+
+ return nullptr;
+}
+
+int CPDF_DIBSource::StratLoadMask() {
+ m_MatteColor = 0XFFFFFFFF;
+ m_pMaskStream = m_pDict->GetStreamBy("SMask");
+ if (m_pMaskStream) {
+ CPDF_Array* pMatte = m_pMaskStream->GetDict()->GetArrayBy("Matte");
+ if (pMatte && m_pColorSpace &&
+ m_pColorSpace->CountComponents() <= m_nComponents) {
+ FX_FLOAT R, G, B;
+ std::vector<FX_FLOAT> colors(m_nComponents);
+ for (FX_DWORD i = 0; i < m_nComponents; i++) {
+ colors[i] = pMatte->GetFloatAt(i);
+ }
+ m_pColorSpace->GetRGB(colors.data(), R, G, B);
+ m_MatteColor = FXARGB_MAKE(0, FXSYS_round(R * 255), FXSYS_round(G * 255),
+ FXSYS_round(B * 255));
+ }
+ return StartLoadMaskDIB();
+ }
+
+ m_pMaskStream = ToStream(m_pDict->GetElementValue("Mask"));
+ return m_pMaskStream ? StartLoadMaskDIB() : 1;
+}
+
+int CPDF_DIBSource::ContinueLoadMaskDIB(IFX_Pause* pPause) {
+ if (!m_pMask) {
+ return 1;
+ }
+ int ret = m_pMask->ContinueLoadDIBSource(pPause);
+ if (ret == 2) {
+ return ret;
+ }
+ if (m_pColorSpace && m_bStdCS) {
+ m_pColorSpace->EnableStdConversion(FALSE);
+ }
+ if (!ret) {
+ delete m_pMask;
+ m_pMask = nullptr;
+ return ret;
+ }
+ return 1;
+}
+
+CPDF_DIBSource* CPDF_DIBSource::DetachMask() {
+ CPDF_DIBSource* pDIBSource = m_pMask;
+ m_pMask = nullptr;
+ return pDIBSource;
+}
+
+CPDF_DIBSource* CPDF_DIBSource::LoadMaskDIB(CPDF_Stream* pMask) {
+ CPDF_DIBSource* pMaskSource = new CPDF_DIBSource;
+ if (!pMaskSource->Load(m_pDocument, pMask, nullptr, nullptr, nullptr, nullptr,
+ TRUE)) {
+ delete pMaskSource;
+ return nullptr;
+ }
+ return pMaskSource;
+}
+
+int CPDF_DIBSource::StartLoadMaskDIB() {
+ m_pMask = new CPDF_DIBSource;
+ int ret = m_pMask->StartLoadDIBSource(m_pDocument, m_pMaskStream, FALSE,
+ nullptr, nullptr, TRUE);
+ if (ret == 2) {
+ if (m_Status == 0)
+ m_Status = 2;
+ return 2;
+ }
+ if (!ret) {
+ delete m_pMask;
+ m_pMask = nullptr;
+ return 1;
+ }
+ return 1;
+}
+
+void CPDF_DIBSource::LoadPalette() {
+ if (m_bpc == 0) {
+ return;
+ }
+ if (m_bpc * m_nComponents > 8) {
+ return;
+ }
+ if (!m_pColorSpace) {
+ return;
+ }
+ if (m_bpc * m_nComponents == 1) {
+ if (m_bDefaultDecode &&
+ (m_Family == PDFCS_DEVICEGRAY || m_Family == PDFCS_DEVICERGB)) {
+ return;
+ }
+ if (m_pColorSpace->CountComponents() > 3) {
+ return;
+ }
+ FX_FLOAT color_values[3];
+ color_values[0] = m_pCompData[0].m_DecodeMin;
+ color_values[1] = color_values[2] = color_values[0];
+ FX_FLOAT R = 0.0f, G = 0.0f, B = 0.0f;
+ m_pColorSpace->GetRGB(color_values, R, G, B);
+ FX_ARGB argb0 = ArgbEncode(255, FXSYS_round(R * 255), FXSYS_round(G * 255),
+ FXSYS_round(B * 255));
+ color_values[0] += m_pCompData[0].m_DecodeStep;
+ color_values[1] += m_pCompData[0].m_DecodeStep;
+ color_values[2] += m_pCompData[0].m_DecodeStep;
+ m_pColorSpace->GetRGB(color_values, R, G, B);
+ FX_ARGB argb1 = ArgbEncode(255, FXSYS_round(R * 255), FXSYS_round(G * 255),
+ FXSYS_round(B * 255));
+ if (argb0 != 0xFF000000 || argb1 != 0xFFFFFFFF) {
+ SetPaletteArgb(0, argb0);
+ SetPaletteArgb(1, argb1);
+ }
+ return;
+ }
+ if (m_pColorSpace == CPDF_ColorSpace::GetStockCS(PDFCS_DEVICEGRAY) &&
+ m_bpc == 8 && m_bDefaultDecode) {
+ } else {
+ int palette_count = 1 << (m_bpc * m_nComponents);
+ CFX_FixedBufGrow<FX_FLOAT, 16> color_values(m_nComponents);
+ FX_FLOAT* color_value = color_values;
+ for (int i = 0; i < palette_count; i++) {
+ int color_data = i;
+ for (FX_DWORD j = 0; j < m_nComponents; j++) {
+ int encoded_component = color_data % (1 << m_bpc);
+ color_data /= 1 << m_bpc;
+ color_value[j] = m_pCompData[j].m_DecodeMin +
+ m_pCompData[j].m_DecodeStep * encoded_component;
+ }
+ FX_FLOAT R = 0, G = 0, B = 0;
+ if (m_nComponents == 1 && m_Family == PDFCS_ICCBASED &&
+ m_pColorSpace->CountComponents() > 1) {
+ int nComponents = m_pColorSpace->CountComponents();
+ std::vector<FX_FLOAT> temp_buf(nComponents);
+ for (int i = 0; i < nComponents; i++) {
+ temp_buf[i] = *color_value;
+ }
+ m_pColorSpace->GetRGB(temp_buf.data(), R, G, B);
+ } else {
+ m_pColorSpace->GetRGB(color_value, R, G, B);
+ }
+ SetPaletteArgb(i, ArgbEncode(255, FXSYS_round(R * 255),
+ FXSYS_round(G * 255), FXSYS_round(B * 255)));
+ }
+ }
+}
+
+void CPDF_DIBSource::ValidateDictParam() {
+ m_bpc = m_bpc_orig;
+ CPDF_Object* pFilter = m_pDict->GetElementValue("Filter");
+ if (pFilter) {
+ if (pFilter->IsName()) {
+ CFX_ByteString filter = pFilter->GetString();
+ if (filter == "CCITTFaxDecode" || filter == "JBIG2Decode") {
+ m_bpc = 1;
+ m_nComponents = 1;
+ } else if (filter == "RunLengthDecode") {
+ if (m_bpc != 1) {
+ m_bpc = 8;
+ }
+ } else if (filter == "DCTDecode") {
+ m_bpc = 8;
+ }
+ } else if (CPDF_Array* pArray = pFilter->AsArray()) {
+ CFX_ByteString filter = pArray->GetStringAt(pArray->GetCount() - 1);
+ if (filter == "CCITTFaxDecode" || filter == "JBIG2Decode") {
+ m_bpc = 1;
+ m_nComponents = 1;
+ } else if (filter == "DCTDecode") {
+ // Previously, filter == "RunLengthDecode" was checked in the "if"
+ // statement as well, but too many documents don't conform to it.
+ m_bpc = 8;
+ }
+ }
+ }
+
+ if (!IsAllowedBPCValue(m_bpc))
+ m_bpc = 0;
+}
+
+void CPDF_DIBSource::TranslateScanline24bpp(uint8_t* dest_scan,
+ const uint8_t* src_scan) const {
+ if (m_bpc == 0) {
+ return;
+ }
+ unsigned int max_data = (1 << m_bpc) - 1;
+ if (m_bDefaultDecode) {
+ if (m_Family == PDFCS_DEVICERGB || m_Family == PDFCS_CALRGB) {
+ const uint8_t* src_pos = src_scan;
+ switch (m_bpc) {
+ case 16:
+ for (int col = 0; col < m_Width; col++) {
+ *dest_scan++ = src_pos[4];
+ *dest_scan++ = src_pos[2];
+ *dest_scan++ = *src_pos;
+ src_pos += 6;
+ }
+ break;
+ case 8:
+ for (int column = 0; column < m_Width; column++) {
+ *dest_scan++ = src_pos[2];
+ *dest_scan++ = src_pos[1];
+ *dest_scan++ = *src_pos;
+ src_pos += 3;
+ }
+ break;
+ default:
+ uint64_t src_bit_pos = 0;
+ size_t dest_byte_pos = 0;
+ for (int column = 0; column < m_Width; column++) {
+ unsigned int R = GetBits8(src_scan, src_bit_pos, m_bpc);
+ src_bit_pos += m_bpc;
+ unsigned int G = GetBits8(src_scan, src_bit_pos, m_bpc);
+ src_bit_pos += m_bpc;
+ unsigned int B = GetBits8(src_scan, src_bit_pos, m_bpc);
+ src_bit_pos += m_bpc;
+ R = std::min(R, max_data);
+ G = std::min(G, max_data);
+ B = std::min(B, max_data);
+ dest_scan[dest_byte_pos] = B * 255 / max_data;
+ dest_scan[dest_byte_pos + 1] = G * 255 / max_data;
+ dest_scan[dest_byte_pos + 2] = R * 255 / max_data;
+ dest_byte_pos += 3;
+ }
+ break;
+ }
+ return;
+ }
+ if (m_bpc == 8) {
+ if (m_nComponents == m_pColorSpace->CountComponents())
+ m_pColorSpace->TranslateImageLine(dest_scan, src_scan, m_Width, m_Width,
+ m_Height, TransMask());
+ return;
+ }
+ }
+ CFX_FixedBufGrow<FX_FLOAT, 16> color_values1(m_nComponents);
+ FX_FLOAT* color_values = color_values1;
+ FX_FLOAT R = 0.0f, G = 0.0f, B = 0.0f;
+ if (m_bpc == 8) {
+ uint64_t src_byte_pos = 0;
+ size_t dest_byte_pos = 0;
+ for (int column = 0; column < m_Width; column++) {
+ for (FX_DWORD color = 0; color < m_nComponents; color++) {
+ uint8_t data = src_scan[src_byte_pos++];
+ color_values[color] = m_pCompData[color].m_DecodeMin +
+ m_pCompData[color].m_DecodeStep * data;
+ }
+ if (TransMask()) {
+ FX_FLOAT k = 1.0f - color_values[3];
+ R = (1.0f - color_values[0]) * k;
+ G = (1.0f - color_values[1]) * k;
+ B = (1.0f - color_values[2]) * k;
+ } else {
+ m_pColorSpace->GetRGB(color_values, R, G, B);
+ }
+ R = ClampValue(R, 1.0f);
+ G = ClampValue(G, 1.0f);
+ B = ClampValue(B, 1.0f);
+ dest_scan[dest_byte_pos] = static_cast<uint8_t>(B * 255);
+ dest_scan[dest_byte_pos + 1] = static_cast<uint8_t>(G * 255);
+ dest_scan[dest_byte_pos + 2] = static_cast<uint8_t>(R * 255);
+ dest_byte_pos += 3;
+ }
+ } else {
+ uint64_t src_bit_pos = 0;
+ size_t dest_byte_pos = 0;
+ for (int column = 0; column < m_Width; column++) {
+ for (FX_DWORD color = 0; color < m_nComponents; color++) {
+ unsigned int data = GetBits8(src_scan, src_bit_pos, m_bpc);
+ color_values[color] = m_pCompData[color].m_DecodeMin +
+ m_pCompData[color].m_DecodeStep * data;
+ src_bit_pos += m_bpc;
+ }
+ if (TransMask()) {
+ FX_FLOAT k = 1.0f - color_values[3];
+ R = (1.0f - color_values[0]) * k;
+ G = (1.0f - color_values[1]) * k;
+ B = (1.0f - color_values[2]) * k;
+ } else {
+ m_pColorSpace->GetRGB(color_values, R, G, B);
+ }
+ R = ClampValue(R, 1.0f);
+ G = ClampValue(G, 1.0f);
+ B = ClampValue(B, 1.0f);
+ dest_scan[dest_byte_pos] = static_cast<uint8_t>(B * 255);
+ dest_scan[dest_byte_pos + 1] = static_cast<uint8_t>(G * 255);
+ dest_scan[dest_byte_pos + 2] = static_cast<uint8_t>(R * 255);
+ dest_byte_pos += 3;
+ }
+ }
+}
+
+uint8_t* CPDF_DIBSource::GetBuffer() const {
+ return m_pCachedBitmap ? m_pCachedBitmap->GetBuffer() : nullptr;
+}
+
+const uint8_t* CPDF_DIBSource::GetScanline(int line) const {
+ if (m_bpc == 0) {
+ return nullptr;
+ }
+ FX_SAFE_DWORD src_pitch = CalculatePitch8(m_bpc, m_nComponents, m_Width);
+ if (!src_pitch.IsValid())
+ return nullptr;
+ FX_DWORD src_pitch_value = src_pitch.ValueOrDie();
+ const uint8_t* pSrcLine = nullptr;
+ if (m_pCachedBitmap && src_pitch_value <= m_pCachedBitmap->GetPitch()) {
+ if (line >= m_pCachedBitmap->GetHeight()) {
+ line = m_pCachedBitmap->GetHeight() - 1;
+ }
+ pSrcLine = m_pCachedBitmap->GetScanline(line);
+ } else if (m_pDecoder) {
+ pSrcLine = m_pDecoder->GetScanline(line);
+ } else {
+ if (m_pStreamAcc->GetSize() >= (line + 1) * src_pitch_value) {
+ pSrcLine = m_pStreamAcc->GetData() + line * src_pitch_value;
+ }
+ }
+ if (!pSrcLine) {
+ uint8_t* pLineBuf = m_pMaskedLine ? m_pMaskedLine : m_pLineBuf;
+ FXSYS_memset(pLineBuf, 0xFF, m_Pitch);
+ return pLineBuf;
+ }
+ if (m_bpc * m_nComponents == 1) {
+ if (m_bImageMask && m_bDefaultDecode) {
+ for (FX_DWORD i = 0; i < src_pitch_value; i++) {
+ m_pLineBuf[i] = ~pSrcLine[i];
+ }
+ } else if (m_bColorKey) {
+ FX_DWORD reset_argb, set_argb;
+ reset_argb = m_pPalette ? m_pPalette[0] : 0xFF000000;
+ set_argb = m_pPalette ? m_pPalette[1] : 0xFFFFFFFF;
+ if (m_pCompData[0].m_ColorKeyMin == 0) {
+ reset_argb = 0;
+ }
+ if (m_pCompData[0].m_ColorKeyMax == 1) {
+ set_argb = 0;
+ }
+ set_argb = FXARGB_TODIB(set_argb);
+ reset_argb = FXARGB_TODIB(reset_argb);
+ FX_DWORD* dest_scan = reinterpret_cast<FX_DWORD*>(m_pMaskedLine);
+ for (int col = 0; col < m_Width; col++) {
+ if (pSrcLine[col / 8] & (1 << (7 - col % 8))) {
+ *dest_scan = set_argb;
+ } else {
+ *dest_scan = reset_argb;
+ }
+ dest_scan++;
+ }
+ return m_pMaskedLine;
+ } else {
+ FXSYS_memcpy(m_pLineBuf, pSrcLine, src_pitch_value);
+ }
+ return m_pLineBuf;
+ }
+ if (m_bpc * m_nComponents <= 8) {
+ if (m_bpc == 8) {
+ FXSYS_memcpy(m_pLineBuf, pSrcLine, src_pitch_value);
+ } else {
+ uint64_t src_bit_pos = 0;
+ for (int col = 0; col < m_Width; col++) {
+ unsigned int color_index = 0;
+ for (FX_DWORD color = 0; color < m_nComponents; color++) {
+ unsigned int data = GetBits8(pSrcLine, src_bit_pos, m_bpc);
+ color_index |= data << (color * m_bpc);
+ src_bit_pos += m_bpc;
+ }
+ m_pLineBuf[col] = color_index;
+ }
+ }
+ if (m_bColorKey) {
+ uint8_t* pDestPixel = m_pMaskedLine;
+ const uint8_t* pSrcPixel = m_pLineBuf;
+ for (int col = 0; col < m_Width; col++) {
+ uint8_t index = *pSrcPixel++;
+ if (m_pPalette) {
+ *pDestPixel++ = FXARGB_B(m_pPalette[index]);
+ *pDestPixel++ = FXARGB_G(m_pPalette[index]);
+ *pDestPixel++ = FXARGB_R(m_pPalette[index]);
+ } else {
+ *pDestPixel++ = index;
+ *pDestPixel++ = index;
+ *pDestPixel++ = index;
+ }
+ *pDestPixel = (index < m_pCompData[0].m_ColorKeyMin ||
+ index > m_pCompData[0].m_ColorKeyMax)
+ ? 0xFF
+ : 0;
+ pDestPixel++;
+ }
+ return m_pMaskedLine;
+ }
+ return m_pLineBuf;
+ }
+ if (m_bColorKey) {
+ if (m_nComponents == 3 && m_bpc == 8) {
+ uint8_t* alpha_channel = m_pMaskedLine + 3;
+ for (int col = 0; col < m_Width; col++) {
+ const uint8_t* pPixel = pSrcLine + col * 3;
+ alpha_channel[col * 4] = (pPixel[0] < m_pCompData[0].m_ColorKeyMin ||
+ pPixel[0] > m_pCompData[0].m_ColorKeyMax ||
+ pPixel[1] < m_pCompData[1].m_ColorKeyMin ||
+ pPixel[1] > m_pCompData[1].m_ColorKeyMax ||
+ pPixel[2] < m_pCompData[2].m_ColorKeyMin ||
+ pPixel[2] > m_pCompData[2].m_ColorKeyMax)
+ ? 0xFF
+ : 0;
+ }
+ } else {
+ FXSYS_memset(m_pMaskedLine, 0xFF, m_Pitch);
+ }
+ }
+ if (m_pColorSpace) {
+ TranslateScanline24bpp(m_pLineBuf, pSrcLine);
+ pSrcLine = m_pLineBuf;
+ }
+ if (m_bColorKey) {
+ const uint8_t* pSrcPixel = pSrcLine;
+ uint8_t* pDestPixel = m_pMaskedLine;
+ for (int col = 0; col < m_Width; col++) {
+ *pDestPixel++ = *pSrcPixel++;
+ *pDestPixel++ = *pSrcPixel++;
+ *pDestPixel++ = *pSrcPixel++;
+ pDestPixel++;
+ }
+ return m_pMaskedLine;
+ }
+ return pSrcLine;
+}
+
+FX_BOOL CPDF_DIBSource::SkipToScanline(int line, IFX_Pause* pPause) const {
+ return m_pDecoder && m_pDecoder->SkipToScanline(line, pPause);
+}
+
+void CPDF_DIBSource::DownSampleScanline(int line,
+ uint8_t* dest_scan,
+ int dest_bpp,
+ int dest_width,
+ FX_BOOL bFlipX,
+ int clip_left,
+ int clip_width) const {
+ if (line < 0 || !dest_scan || dest_bpp <= 0 || dest_width <= 0 ||
+ clip_left < 0 || clip_width <= 0) {
+ return;
+ }
+
+ FX_DWORD src_width = m_Width;
+ FX_SAFE_DWORD pitch = CalculatePitch8(m_bpc, m_nComponents, m_Width);
+ if (!pitch.IsValid())
+ return;
+
+ const uint8_t* pSrcLine = nullptr;
+ if (m_pCachedBitmap) {
+ pSrcLine = m_pCachedBitmap->GetScanline(line);
+ } else if (m_pDecoder) {
+ pSrcLine = m_pDecoder->GetScanline(line);
+ } else {
+ FX_DWORD src_pitch = pitch.ValueOrDie();
+ pitch *= (line + 1);
+ if (!pitch.IsValid()) {
+ return;
+ }
+
+ if (m_pStreamAcc->GetSize() >= pitch.ValueOrDie()) {
+ pSrcLine = m_pStreamAcc->GetData() + line * src_pitch;
+ }
+ }
+ int orig_Bpp = m_bpc * m_nComponents / 8;
+ int dest_Bpp = dest_bpp / 8;
+ if (!pSrcLine) {
+ FXSYS_memset(dest_scan, 0xFF, dest_Bpp * clip_width);
+ return;
+ }
+
+ FX_SAFE_INT32 max_src_x = clip_left;
+ max_src_x += clip_width - 1;
+ max_src_x *= src_width;
+ max_src_x /= dest_width;
+ if (!max_src_x.IsValid())
+ return;
+
+ if (m_bpc * m_nComponents == 1) {
+ DownSampleScanline1Bit(orig_Bpp, dest_Bpp, src_width, pSrcLine, dest_scan,
+ dest_width, bFlipX, clip_left, clip_width);
+ } else if (m_bpc * m_nComponents <= 8) {
+ DownSampleScanline8Bit(orig_Bpp, dest_Bpp, src_width, pSrcLine, dest_scan,
+ dest_width, bFlipX, clip_left, clip_width);
+ } else {
+ DownSampleScanline32Bit(orig_Bpp, dest_Bpp, src_width, pSrcLine, dest_scan,
+ dest_width, bFlipX, clip_left, clip_width);
+ }
+}
+
+void CPDF_DIBSource::DownSampleScanline1Bit(int orig_Bpp,
+ int dest_Bpp,
+ FX_DWORD src_width,
+ const uint8_t* pSrcLine,
+ uint8_t* dest_scan,
+ int dest_width,
+ FX_BOOL bFlipX,
+ int clip_left,
+ int clip_width) const {
+ FX_DWORD set_argb = (FX_DWORD)-1;
+ FX_DWORD reset_argb = 0;
+ if (m_bImageMask) {
+ if (m_bDefaultDecode) {
+ set_argb = 0;
+ reset_argb = (FX_DWORD)-1;
+ }
+ } else if (m_bColorKey) {
+ reset_argb = m_pPalette ? m_pPalette[0] : 0xFF000000;
+ set_argb = m_pPalette ? m_pPalette[1] : 0xFFFFFFFF;
+ if (m_pCompData[0].m_ColorKeyMin == 0) {
+ reset_argb = 0;
+ }
+ if (m_pCompData[0].m_ColorKeyMax == 1) {
+ set_argb = 0;
+ }
+ set_argb = FXARGB_TODIB(set_argb);
+ reset_argb = FXARGB_TODIB(reset_argb);
+ FX_DWORD* dest_scan_dword = reinterpret_cast<FX_DWORD*>(dest_scan);
+ for (int i = 0; i < clip_width; i++) {
+ FX_DWORD src_x = (clip_left + i) * src_width / dest_width;
+ if (bFlipX) {
+ src_x = src_width - src_x - 1;
+ }
+ src_x %= src_width;
+ if (pSrcLine[src_x / 8] & (1 << (7 - src_x % 8))) {
+ dest_scan_dword[i] = set_argb;
+ } else {
+ dest_scan_dword[i] = reset_argb;
+ }
+ }
+ return;
+ } else {
+ if (dest_Bpp == 1) {
+ } else if (m_pPalette) {
+ reset_argb = m_pPalette[0];
+ set_argb = m_pPalette[1];
+ }
+ }
+ for (int i = 0; i < clip_width; i++) {
+ FX_DWORD src_x = (clip_left + i) * src_width / dest_width;
+ if (bFlipX) {
+ src_x = src_width - src_x - 1;
+ }
+ src_x %= src_width;
+ int dest_pos = i * dest_Bpp;
+ if (pSrcLine[src_x / 8] & (1 << (7 - src_x % 8))) {
+ if (dest_Bpp == 1) {
+ dest_scan[dest_pos] = static_cast<uint8_t>(set_argb);
+ } else if (dest_Bpp == 3) {
+ dest_scan[dest_pos] = FXARGB_B(set_argb);
+ dest_scan[dest_pos + 1] = FXARGB_G(set_argb);
+ dest_scan[dest_pos + 2] = FXARGB_R(set_argb);
+ } else {
+ *reinterpret_cast<FX_DWORD*>(dest_scan + dest_pos) = set_argb;
+ }
+ } else {
+ if (dest_Bpp == 1) {
+ dest_scan[dest_pos] = static_cast<uint8_t>(reset_argb);
+ } else if (dest_Bpp == 3) {
+ dest_scan[dest_pos] = FXARGB_B(reset_argb);
+ dest_scan[dest_pos + 1] = FXARGB_G(reset_argb);
+ dest_scan[dest_pos + 2] = FXARGB_R(reset_argb);
+ } else {
+ *reinterpret_cast<FX_DWORD*>(dest_scan + dest_pos) = reset_argb;
+ }
+ }
+ }
+}
+
+void CPDF_DIBSource::DownSampleScanline8Bit(int orig_Bpp,
+ int dest_Bpp,
+ FX_DWORD src_width,
+ const uint8_t* pSrcLine,
+ uint8_t* dest_scan,
+ int dest_width,
+ FX_BOOL bFlipX,
+ int clip_left,
+ int clip_width) const {
+ if (m_bpc < 8) {
+ uint64_t src_bit_pos = 0;
+ for (FX_DWORD col = 0; col < src_width; col++) {
+ unsigned int color_index = 0;
+ for (FX_DWORD color = 0; color < m_nComponents; color++) {
+ unsigned int data = GetBits8(pSrcLine, src_bit_pos, m_bpc);
+ color_index |= data << (color * m_bpc);
+ src_bit_pos += m_bpc;
+ }
+ m_pLineBuf[col] = color_index;
+ }
+ pSrcLine = m_pLineBuf;
+ }
+ if (m_bColorKey) {
+ for (int i = 0; i < clip_width; i++) {
+ FX_DWORD src_x = (clip_left + i) * src_width / dest_width;
+ if (bFlipX) {
+ src_x = src_width - src_x - 1;
+ }
+ src_x %= src_width;
+ uint8_t* pDestPixel = dest_scan + i * 4;
+ uint8_t index = pSrcLine[src_x];
+ if (m_pPalette) {
+ *pDestPixel++ = FXARGB_B(m_pPalette[index]);
+ *pDestPixel++ = FXARGB_G(m_pPalette[index]);
+ *pDestPixel++ = FXARGB_R(m_pPalette[index]);
+ } else {
+ *pDestPixel++ = index;
+ *pDestPixel++ = index;
+ *pDestPixel++ = index;
+ }
+ *pDestPixel = (index < m_pCompData[0].m_ColorKeyMin ||
+ index > m_pCompData[0].m_ColorKeyMax)
+ ? 0xFF
+ : 0;
+ }
+ return;
+ }
+ for (int i = 0; i < clip_width; i++) {
+ FX_DWORD src_x = (clip_left + i) * src_width / dest_width;
+ if (bFlipX) {
+ src_x = src_width - src_x - 1;
+ }
+ src_x %= src_width;
+ uint8_t index = pSrcLine[src_x];
+ if (dest_Bpp == 1) {
+ dest_scan[i] = index;
+ } else {
+ int dest_pos = i * dest_Bpp;
+ FX_ARGB argb = m_pPalette[index];
+ dest_scan[dest_pos] = FXARGB_B(argb);
+ dest_scan[dest_pos + 1] = FXARGB_G(argb);
+ dest_scan[dest_pos + 2] = FXARGB_R(argb);
+ }
+ }
+}
+
+void CPDF_DIBSource::DownSampleScanline32Bit(int orig_Bpp,
+ int dest_Bpp,
+ FX_DWORD src_width,
+ const uint8_t* pSrcLine,
+ uint8_t* dest_scan,
+ int dest_width,
+ FX_BOOL bFlipX,
+ int clip_left,
+ int clip_width) const {
+ // last_src_x used to store the last seen src_x position which should be
+ // in [0, src_width). Set the initial value to be an invalid src_x value.
+ FX_DWORD last_src_x = src_width;
+ FX_ARGB last_argb = FXARGB_MAKE(0xFF, 0xFF, 0xFF, 0xFF);
+ FX_FLOAT unit_To8Bpc = 255.0f / ((1 << m_bpc) - 1);
+ for (int i = 0; i < clip_width; i++) {
+ int dest_x = clip_left + i;
+ FX_DWORD src_x = (bFlipX ? (dest_width - dest_x - 1) : dest_x) *
+ (int64_t)src_width / dest_width;
+ src_x %= src_width;
+
+ uint8_t* pDestPixel = dest_scan + i * dest_Bpp;
+ FX_ARGB argb;
+ if (src_x == last_src_x) {
+ argb = last_argb;
+ } else {
+ CFX_FixedBufGrow<uint8_t, 128> extracted_components(m_nComponents);
+ const uint8_t* pSrcPixel = nullptr;
+ if (m_bpc % 8 != 0) {
+ // No need to check for 32-bit overflow, as |src_x| is bounded by
+ // |src_width| and DownSampleScanline() already checked for overflow
+ // with the pitch calculation.
+ size_t num_bits = src_x * m_bpc * m_nComponents;
+ uint64_t src_bit_pos = num_bits % 8;
+ pSrcPixel = pSrcLine + num_bits / 8;
+ for (FX_DWORD j = 0; j < m_nComponents; ++j) {
+ extracted_components[j] = static_cast<uint8_t>(
+ GetBits8(pSrcPixel, src_bit_pos, m_bpc) * unit_To8Bpc);
+ src_bit_pos += m_bpc;
+ }
+ pSrcPixel = extracted_components;
+ } else {
+ pSrcPixel = pSrcLine + src_x * orig_Bpp;
+ if (m_bpc == 16) {
+ for (FX_DWORD j = 0; j < m_nComponents; ++j)
+ extracted_components[j] = pSrcPixel[j * 2];
+ pSrcPixel = extracted_components;
+ }
+ }
+
+ if (m_pColorSpace) {
+ uint8_t color[4];
+ const FX_BOOL bTransMask = TransMask();
+ if (m_bDefaultDecode) {
+ m_pColorSpace->TranslateImageLine(color, pSrcPixel, 1, 0, 0,
+ bTransMask);
+ } else {
+ for (FX_DWORD j = 0; j < m_nComponents; ++j) {
+ FX_FLOAT component_value =
+ static_cast<FX_FLOAT>(extracted_components[j]);
+ int color_value = static_cast<int>(
+ (m_pCompData[j].m_DecodeMin +
+ m_pCompData[j].m_DecodeStep * component_value) *
+ 255.0f +
+ 0.5f);
+ extracted_components[j] =
+ color_value > 255 ? 255 : (color_value < 0 ? 0 : color_value);
+ }
+ m_pColorSpace->TranslateImageLine(color, extracted_components, 1, 0,
+ 0, bTransMask);
+ }
+ argb = FXARGB_MAKE(0xFF, color[2], color[1], color[0]);
+ } else {
+ argb = FXARGB_MAKE(0xFF, pSrcPixel[2], pSrcPixel[1], pSrcPixel[0]);
+ }
+ if (m_bColorKey) {
+ int alpha = 0xFF;
+ if (m_nComponents == 3 && m_bpc == 8) {
+ alpha = (pSrcPixel[0] < m_pCompData[0].m_ColorKeyMin ||
+ pSrcPixel[0] > m_pCompData[0].m_ColorKeyMax ||
+ pSrcPixel[1] < m_pCompData[1].m_ColorKeyMin ||
+ pSrcPixel[1] > m_pCompData[1].m_ColorKeyMax ||
+ pSrcPixel[2] < m_pCompData[2].m_ColorKeyMin ||
+ pSrcPixel[2] > m_pCompData[2].m_ColorKeyMax)
+ ? 0xFF
+ : 0;
+ }
+ argb &= 0xFFFFFF;
+ argb |= alpha << 24;
+ }
+ last_src_x = src_x;
+ last_argb = argb;
+ }
+ if (dest_Bpp == 4) {
+ *reinterpret_cast<FX_DWORD*>(pDestPixel) = FXARGB_TODIB(argb);
+ } else {
+ *pDestPixel++ = FXARGB_B(argb);
+ *pDestPixel++ = FXARGB_G(argb);
+ *pDestPixel = FXARGB_R(argb);
+ }
+ }
+}
+
+FX_BOOL CPDF_DIBSource::TransMask() const {
+ return m_bLoadMask && m_GroupFamily == PDFCS_DEVICECMYK &&
+ m_Family == PDFCS_DEVICECMYK;
+}
+
+void CPDF_DIBSource::SetDownSampleSize(int dest_width, int dest_height) {
+ if (m_pDecoder) {
+ m_pDecoder->DownScale(dest_width, dest_height);
+ m_Width = m_pDecoder->GetWidth();
+ m_Height = m_pDecoder->GetHeight();
+ }
+}
+
+void CPDF_DIBSource::ClearImageData() {
+ if (m_pDecoder) {
+ m_pDecoder->ClearImageData();
+ }
+}
+
+CPDF_ImageLoaderHandle::CPDF_ImageLoaderHandle() {
+ m_pImageLoader = nullptr;
+ m_pCache = nullptr;
+ m_pImage = nullptr;
+}
+
+CPDF_ImageLoaderHandle::~CPDF_ImageLoaderHandle() {}
+
+FX_BOOL CPDF_ImageLoaderHandle::Start(CPDF_ImageLoader* pImageLoader,
+ const CPDF_ImageObject* pImage,
+ CPDF_PageRenderCache* pCache,
+ FX_BOOL bStdCS,
+ FX_DWORD GroupFamily,
+ FX_BOOL bLoadMask,
+ CPDF_RenderStatus* pRenderStatus,
+ int32_t nDownsampleWidth,
+ int32_t nDownsampleHeight) {
+ m_pImageLoader = pImageLoader;
+ m_pCache = pCache;
+ m_pImage = const_cast<CPDF_ImageObject*>(pImage);
+ m_nDownsampleWidth = nDownsampleWidth;
+ m_nDownsampleHeight = nDownsampleHeight;
+ FX_BOOL ret;
+ if (pCache) {
+ ret = pCache->StartGetCachedBitmap(pImage->m_pImage->GetStream(), bStdCS,
+ GroupFamily, bLoadMask, pRenderStatus,
+ m_nDownsampleWidth, m_nDownsampleHeight);
+ if (!ret) {
+ m_pImageLoader->m_bCached = TRUE;
+ m_pImageLoader->m_pBitmap =
+ pCache->GetCurImageCacheEntry()->DetachBitmap();
+ m_pImageLoader->m_pMask = pCache->GetCurImageCacheEntry()->DetachMask();
+ m_pImageLoader->m_MatteColor =
+ pCache->GetCurImageCacheEntry()->m_MatteColor;
+ }
+ } else {
+ ret = pImage->m_pImage->StartLoadDIBSource(pRenderStatus->m_pFormResource,
+ pRenderStatus->m_pPageResource,
+ bStdCS, GroupFamily, bLoadMask);
+ if (!ret) {
+ m_pImageLoader->m_bCached = FALSE;
+ m_pImageLoader->m_pBitmap = m_pImage->m_pImage->DetachBitmap();
+ m_pImageLoader->m_pMask = m_pImage->m_pImage->DetachMask();
+ m_pImageLoader->m_MatteColor = m_pImage->m_pImage->m_MatteColor;
+ }
+ }
+ return ret;
+}
+
+FX_BOOL CPDF_ImageLoaderHandle::Continue(IFX_Pause* pPause) {
+ FX_BOOL ret;
+ if (m_pCache) {
+ ret = m_pCache->Continue(pPause);
+ if (!ret) {
+ m_pImageLoader->m_bCached = TRUE;
+ m_pImageLoader->m_pBitmap =
+ m_pCache->GetCurImageCacheEntry()->DetachBitmap();
+ m_pImageLoader->m_pMask = m_pCache->GetCurImageCacheEntry()->DetachMask();
+ m_pImageLoader->m_MatteColor =
+ m_pCache->GetCurImageCacheEntry()->m_MatteColor;
+ }
+ } else {
+ ret = m_pImage->m_pImage->Continue(pPause);
+ if (!ret) {
+ m_pImageLoader->m_bCached = FALSE;
+ m_pImageLoader->m_pBitmap = m_pImage->m_pImage->DetachBitmap();
+ m_pImageLoader->m_pMask = m_pImage->m_pImage->DetachMask();
+ m_pImageLoader->m_MatteColor = m_pImage->m_pImage->m_MatteColor;
+ }
+ }
+ return ret;
+}
+
+FX_BOOL CPDF_ImageLoader::Start(const CPDF_ImageObject* pImage,
+ CPDF_PageRenderCache* pCache,
+ CPDF_ImageLoaderHandle*& LoadHandle,
+ FX_BOOL bStdCS,
+ FX_DWORD GroupFamily,
+ FX_BOOL bLoadMask,
+ CPDF_RenderStatus* pRenderStatus,
+ int32_t nDownsampleWidth,
+ int32_t nDownsampleHeight) {
+ m_nDownsampleWidth = nDownsampleWidth;
+ m_nDownsampleHeight = nDownsampleHeight;
+ LoadHandle = new CPDF_ImageLoaderHandle;
+ return LoadHandle->Start(this, pImage, pCache, bStdCS, GroupFamily, bLoadMask,
+ pRenderStatus, m_nDownsampleWidth,
+ m_nDownsampleHeight);
+}
+
+FX_BOOL CPDF_ImageLoader::Continue(CPDF_ImageLoaderHandle* LoadHandle,
+ IFX_Pause* pPause) {
+ return LoadHandle->Continue(pPause);
+}
+
+CPDF_ImageLoader::~CPDF_ImageLoader() {
+ if (!m_bCached) {
+ delete m_pBitmap;
+ delete m_pMask;
+ }
+}
diff --git a/core/fpdfapi/fpdf_render/fpdf_render_loadimage_embeddertest.cpp b/core/fpdfapi/fpdf_render/fpdf_render_loadimage_embeddertest.cpp
new file mode 100644
index 0000000000..427abb8e37
--- /dev/null
+++ b/core/fpdfapi/fpdf_render/fpdf_render_loadimage_embeddertest.cpp
@@ -0,0 +1,29 @@
+// Copyright 2015 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "testing/embedder_test.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+class FPDFRenderLoadImageEmbeddertest : public EmbedderTest {};
+
+TEST_F(FPDFRenderLoadImageEmbeddertest, Bug_554151) {
+ // Test scanline downsampling with a BitsPerComponent of 4.
+ // Should not crash.
+ EXPECT_TRUE(OpenDocument("bug_554151.pdf"));
+ FPDF_PAGE page = LoadPage(0);
+ EXPECT_NE(nullptr, page);
+ FPDF_BITMAP bitmap = RenderPage(page);
+ FPDFBitmap_Destroy(bitmap);
+ UnloadPage(page);
+}
+
+TEST_F(FPDFRenderLoadImageEmbeddertest, Bug_557223) {
+ // Should not crash
+ EXPECT_TRUE(OpenDocument("bug_557223.pdf"));
+ FPDF_PAGE page = LoadPage(0);
+ EXPECT_NE(nullptr, page);
+ FPDF_BITMAP bitmap = RenderPage(page);
+ FPDFBitmap_Destroy(bitmap);
+ UnloadPage(page);
+}
diff --git a/core/fpdfapi/fpdf_render/fpdf_render_pattern.cpp b/core/fpdfapi/fpdf_render/fpdf_render_pattern.cpp
new file mode 100644
index 0000000000..5ad8db1646
--- /dev/null
+++ b/core/fpdfapi/fpdf_render/fpdf_render_pattern.cpp
@@ -0,0 +1,1207 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_render/render_int.h"
+
+#include "core/fpdfapi/fpdf_page/pageint.h"
+#include "core/include/fpdfapi/cpdf_array.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/fpdf_pageobj.h"
+#include "core/include/fpdfapi/fpdf_render.h"
+#include "core/include/fxge/fx_ge.h"
+
+#define SHADING_STEPS 256
+static void DrawAxialShading(CFX_DIBitmap* pBitmap,
+ CFX_Matrix* pObject2Bitmap,
+ CPDF_Dictionary* pDict,
+ CPDF_Function** pFuncs,
+ int nFuncs,
+ CPDF_ColorSpace* pCS,
+ int alpha) {
+ ASSERT(pBitmap->GetFormat() == FXDIB_Argb);
+ CPDF_Array* pCoords = pDict->GetArrayBy("Coords");
+ if (!pCoords) {
+ return;
+ }
+ FX_FLOAT start_x = pCoords->GetNumberAt(0);
+ FX_FLOAT start_y = pCoords->GetNumberAt(1);
+ FX_FLOAT end_x = pCoords->GetNumberAt(2);
+ FX_FLOAT end_y = pCoords->GetNumberAt(3);
+ FX_FLOAT t_min = 0, t_max = 1.0f;
+ CPDF_Array* pArray = pDict->GetArrayBy("Domain");
+ if (pArray) {
+ t_min = pArray->GetNumberAt(0);
+ t_max = pArray->GetNumberAt(1);
+ }
+ FX_BOOL bStartExtend = FALSE, bEndExtend = FALSE;
+ pArray = pDict->GetArrayBy("Extend");
+ if (pArray) {
+ bStartExtend = pArray->GetIntegerAt(0);
+ bEndExtend = pArray->GetIntegerAt(1);
+ }
+ int width = pBitmap->GetWidth();
+ int height = pBitmap->GetHeight();
+ FX_FLOAT x_span = end_x - start_x;
+ FX_FLOAT y_span = end_y - start_y;
+ FX_FLOAT axis_len_square = (x_span * x_span) + (y_span * y_span);
+ CFX_Matrix matrix;
+ matrix.SetReverse(*pObject2Bitmap);
+ int total_results = 0;
+ for (int j = 0; j < nFuncs; j++) {
+ if (pFuncs[j]) {
+ total_results += pFuncs[j]->CountOutputs();
+ }
+ }
+ if (pCS->CountComponents() > total_results) {
+ total_results = pCS->CountComponents();
+ }
+ CFX_FixedBufGrow<FX_FLOAT, 16> result_array(total_results);
+ FX_FLOAT* pResults = result_array;
+ FXSYS_memset(pResults, 0, total_results * sizeof(FX_FLOAT));
+ FX_DWORD rgb_array[SHADING_STEPS];
+ for (int i = 0; i < SHADING_STEPS; i++) {
+ FX_FLOAT input = (t_max - t_min) * i / SHADING_STEPS + t_min;
+ int offset = 0;
+ for (int j = 0; j < nFuncs; j++) {
+ if (pFuncs[j]) {
+ int nresults = 0;
+ if (pFuncs[j]->Call(&input, 1, pResults + offset, nresults)) {
+ offset += nresults;
+ }
+ }
+ }
+ FX_FLOAT R = 0.0f, G = 0.0f, B = 0.0f;
+ pCS->GetRGB(pResults, R, G, B);
+ rgb_array[i] =
+ FXARGB_TODIB(FXARGB_MAKE(alpha, FXSYS_round(R * 255),
+ FXSYS_round(G * 255), FXSYS_round(B * 255)));
+ }
+ int pitch = pBitmap->GetPitch();
+ for (int row = 0; row < height; row++) {
+ FX_DWORD* dib_buf = (FX_DWORD*)(pBitmap->GetBuffer() + row * pitch);
+ for (int column = 0; column < width; column++) {
+ FX_FLOAT x = (FX_FLOAT)column, y = (FX_FLOAT)row;
+ matrix.Transform(x, y);
+ FX_FLOAT scale = (((x - start_x) * x_span) + ((y - start_y) * y_span)) /
+ axis_len_square;
+ int index = (int32_t)(scale * (SHADING_STEPS - 1));
+ if (index < 0) {
+ if (!bStartExtend) {
+ continue;
+ }
+ index = 0;
+ } else if (index >= SHADING_STEPS) {
+ if (!bEndExtend) {
+ continue;
+ }
+ index = SHADING_STEPS - 1;
+ }
+ dib_buf[column] = rgb_array[index];
+ }
+ }
+}
+static void DrawRadialShading(CFX_DIBitmap* pBitmap,
+ CFX_Matrix* pObject2Bitmap,
+ CPDF_Dictionary* pDict,
+ CPDF_Function** pFuncs,
+ int nFuncs,
+ CPDF_ColorSpace* pCS,
+ int alpha) {
+ ASSERT(pBitmap->GetFormat() == FXDIB_Argb);
+ CPDF_Array* pCoords = pDict->GetArrayBy("Coords");
+ if (!pCoords) {
+ return;
+ }
+ FX_FLOAT start_x = pCoords->GetNumberAt(0);
+ FX_FLOAT start_y = pCoords->GetNumberAt(1);
+ FX_FLOAT start_r = pCoords->GetNumberAt(2);
+ FX_FLOAT end_x = pCoords->GetNumberAt(3);
+ FX_FLOAT end_y = pCoords->GetNumberAt(4);
+ FX_FLOAT end_r = pCoords->GetNumberAt(5);
+ CFX_Matrix matrix;
+ matrix.SetReverse(*pObject2Bitmap);
+ FX_FLOAT t_min = 0, t_max = 1.0f;
+ CPDF_Array* pArray = pDict->GetArrayBy("Domain");
+ if (pArray) {
+ t_min = pArray->GetNumberAt(0);
+ t_max = pArray->GetNumberAt(1);
+ }
+ FX_BOOL bStartExtend = FALSE, bEndExtend = FALSE;
+ pArray = pDict->GetArrayBy("Extend");
+ if (pArray) {
+ bStartExtend = pArray->GetIntegerAt(0);
+ bEndExtend = pArray->GetIntegerAt(1);
+ }
+ int total_results = 0;
+ for (int j = 0; j < nFuncs; j++) {
+ if (pFuncs[j]) {
+ total_results += pFuncs[j]->CountOutputs();
+ }
+ }
+ if (pCS->CountComponents() > total_results) {
+ total_results = pCS->CountComponents();
+ }
+ CFX_FixedBufGrow<FX_FLOAT, 16> result_array(total_results);
+ FX_FLOAT* pResults = result_array;
+ FXSYS_memset(pResults, 0, total_results * sizeof(FX_FLOAT));
+ FX_DWORD rgb_array[SHADING_STEPS];
+ for (int i = 0; i < SHADING_STEPS; i++) {
+ FX_FLOAT input = (t_max - t_min) * i / SHADING_STEPS + t_min;
+ int offset = 0;
+ for (int j = 0; j < nFuncs; j++) {
+ if (pFuncs[j]) {
+ int nresults;
+ if (pFuncs[j]->Call(&input, 1, pResults + offset, nresults)) {
+ offset += nresults;
+ }
+ }
+ }
+ FX_FLOAT R = 0.0f, G = 0.0f, B = 0.0f;
+ pCS->GetRGB(pResults, R, G, B);
+ rgb_array[i] =
+ FXARGB_TODIB(FXARGB_MAKE(alpha, FXSYS_round(R * 255),
+ FXSYS_round(G * 255), FXSYS_round(B * 255)));
+ }
+ FX_FLOAT a = ((start_x - end_x) * (start_x - end_x)) +
+ ((start_y - end_y) * (start_y - end_y)) -
+ ((start_r - end_r) * (start_r - end_r));
+ int width = pBitmap->GetWidth();
+ int height = pBitmap->GetHeight();
+ int pitch = pBitmap->GetPitch();
+ FX_BOOL bDecreasing = FALSE;
+ if (start_r > end_r) {
+ int length = (int)FXSYS_sqrt((((start_x - end_x) * (start_x - end_x)) +
+ ((start_y - end_y) * (start_y - end_y))));
+ if (length < start_r - end_r) {
+ bDecreasing = TRUE;
+ }
+ }
+ for (int row = 0; row < height; row++) {
+ FX_DWORD* dib_buf = (FX_DWORD*)(pBitmap->GetBuffer() + row * pitch);
+ for (int column = 0; column < width; column++) {
+ FX_FLOAT x = (FX_FLOAT)column, y = (FX_FLOAT)row;
+ matrix.Transform(x, y);
+ FX_FLOAT b = -2 * (((x - start_x) * (end_x - start_x)) +
+ ((y - start_y) * (end_y - start_y)) +
+ (start_r * (end_r - start_r)));
+ FX_FLOAT c = ((x - start_x) * (x - start_x)) +
+ ((y - start_y) * (y - start_y)) - (start_r * start_r);
+ FX_FLOAT s;
+ if (a == 0) {
+ s = -c / b;
+ } else {
+ FX_FLOAT b2_4ac = (b * b) - 4 * (a * c);
+ if (b2_4ac < 0) {
+ continue;
+ }
+ FX_FLOAT root = FXSYS_sqrt(b2_4ac);
+ FX_FLOAT s1, s2;
+ if (a > 0) {
+ s1 = (-b - root) / (2 * a);
+ s2 = (-b + root) / (2 * a);
+ } else {
+ s2 = (-b - root) / (2 * a);
+ s1 = (-b + root) / (2 * a);
+ }
+ if (bDecreasing) {
+ if (s1 >= 0 || bStartExtend) {
+ s = s1;
+ } else {
+ s = s2;
+ }
+ } else {
+ if (s2 <= 1.0f || bEndExtend) {
+ s = s2;
+ } else {
+ s = s1;
+ }
+ }
+ if ((start_r + s * (end_r - start_r)) < 0) {
+ continue;
+ }
+ }
+ int index = (int32_t)(s * (SHADING_STEPS - 1));
+ if (index < 0) {
+ if (!bStartExtend) {
+ continue;
+ }
+ index = 0;
+ }
+ if (index >= SHADING_STEPS) {
+ if (!bEndExtend) {
+ continue;
+ }
+ index = SHADING_STEPS - 1;
+ }
+ dib_buf[column] = rgb_array[index];
+ }
+ }
+}
+static void DrawFuncShading(CFX_DIBitmap* pBitmap,
+ CFX_Matrix* pObject2Bitmap,
+ CPDF_Dictionary* pDict,
+ CPDF_Function** pFuncs,
+ int nFuncs,
+ CPDF_ColorSpace* pCS,
+ int alpha) {
+ ASSERT(pBitmap->GetFormat() == FXDIB_Argb);
+ CPDF_Array* pDomain = pDict->GetArrayBy("Domain");
+ FX_FLOAT xmin = 0, ymin = 0, xmax = 1.0f, ymax = 1.0f;
+ if (pDomain) {
+ xmin = pDomain->GetNumberAt(0);
+ xmax = pDomain->GetNumberAt(1);
+ ymin = pDomain->GetNumberAt(2);
+ ymax = pDomain->GetNumberAt(3);
+ }
+ CFX_Matrix mtDomain2Target = pDict->GetMatrixBy("Matrix");
+ CFX_Matrix matrix, reverse_matrix;
+ matrix.SetReverse(*pObject2Bitmap);
+ reverse_matrix.SetReverse(mtDomain2Target);
+ matrix.Concat(reverse_matrix);
+ int width = pBitmap->GetWidth();
+ int height = pBitmap->GetHeight();
+ int pitch = pBitmap->GetPitch();
+ int total_results = 0;
+ for (int j = 0; j < nFuncs; j++) {
+ if (pFuncs[j]) {
+ total_results += pFuncs[j]->CountOutputs();
+ }
+ }
+ if (pCS->CountComponents() > total_results) {
+ total_results = pCS->CountComponents();
+ }
+ CFX_FixedBufGrow<FX_FLOAT, 16> result_array(total_results);
+ FX_FLOAT* pResults = result_array;
+ FXSYS_memset(pResults, 0, total_results * sizeof(FX_FLOAT));
+ for (int row = 0; row < height; row++) {
+ FX_DWORD* dib_buf = (FX_DWORD*)(pBitmap->GetBuffer() + row * pitch);
+ for (int column = 0; column < width; column++) {
+ FX_FLOAT x = (FX_FLOAT)column, y = (FX_FLOAT)row;
+ matrix.Transform(x, y);
+ if (x < xmin || x > xmax || y < ymin || y > ymax) {
+ continue;
+ }
+ FX_FLOAT input[2];
+ int offset = 0;
+ input[0] = x;
+ input[1] = y;
+ for (int j = 0; j < nFuncs; j++) {
+ if (pFuncs[j]) {
+ int nresults;
+ if (pFuncs[j]->Call(input, 2, pResults + offset, nresults)) {
+ offset += nresults;
+ }
+ }
+ }
+ FX_FLOAT R = 0.0f, G = 0.0f, B = 0.0f;
+ pCS->GetRGB(pResults, R, G, B);
+ dib_buf[column] = FXARGB_TODIB(FXARGB_MAKE(
+ alpha, (int32_t)(R * 255), (int32_t)(G * 255), (int32_t)(B * 255)));
+ }
+ }
+}
+FX_BOOL _GetScanlineIntersect(int y,
+ FX_FLOAT x1,
+ FX_FLOAT y1,
+ FX_FLOAT x2,
+ FX_FLOAT y2,
+ FX_FLOAT& x) {
+ if (y1 == y2) {
+ return FALSE;
+ }
+ if (y1 < y2) {
+ if (y < y1 || y > y2) {
+ return FALSE;
+ }
+ } else {
+ if (y < y2 || y > y1) {
+ return FALSE;
+ }
+ }
+ x = x1 + ((x2 - x1) * (y - y1) / (y2 - y1));
+ return TRUE;
+}
+static void DrawGouraud(CFX_DIBitmap* pBitmap,
+ int alpha,
+ CPDF_MeshVertex triangle[3]) {
+ FX_FLOAT min_y = triangle[0].y, max_y = triangle[0].y;
+ for (int i = 1; i < 3; i++) {
+ if (min_y > triangle[i].y) {
+ min_y = triangle[i].y;
+ }
+ if (max_y < triangle[i].y) {
+ max_y = triangle[i].y;
+ }
+ }
+ if (min_y == max_y) {
+ return;
+ }
+ int min_yi = (int)FXSYS_floor(min_y), max_yi = (int)FXSYS_ceil(max_y);
+ if (min_yi < 0) {
+ min_yi = 0;
+ }
+ if (max_yi >= pBitmap->GetHeight()) {
+ max_yi = pBitmap->GetHeight() - 1;
+ }
+ for (int y = min_yi; y <= max_yi; y++) {
+ int nIntersects = 0;
+ FX_FLOAT inter_x[3], r[3], g[3], b[3];
+ for (int i = 0; i < 3; i++) {
+ CPDF_MeshVertex& vertex1 = triangle[i];
+ CPDF_MeshVertex& vertex2 = triangle[(i + 1) % 3];
+ FX_BOOL bIntersect = _GetScanlineIntersect(
+ y, vertex1.x, vertex1.y, vertex2.x, vertex2.y, inter_x[nIntersects]);
+ if (!bIntersect) {
+ continue;
+ }
+
+ FX_FLOAT y_dist = (y - vertex1.y) / (vertex2.y - vertex1.y);
+ r[nIntersects] = vertex1.r + ((vertex2.r - vertex1.r) * y_dist);
+ g[nIntersects] = vertex1.g + ((vertex2.g - vertex1.g) * y_dist);
+ b[nIntersects] = vertex1.b + ((vertex2.b - vertex1.b) * y_dist);
+ nIntersects++;
+ }
+ if (nIntersects != 2) {
+ continue;
+ }
+ int min_x, max_x, start_index, end_index;
+ if (inter_x[0] < inter_x[1]) {
+ min_x = (int)FXSYS_floor(inter_x[0]);
+ max_x = (int)FXSYS_ceil(inter_x[1]);
+ start_index = 0;
+ end_index = 1;
+ } else {
+ min_x = (int)FXSYS_floor(inter_x[1]);
+ max_x = (int)FXSYS_ceil(inter_x[0]);
+ start_index = 1;
+ end_index = 0;
+ }
+ int start_x = min_x, end_x = max_x;
+ if (start_x < 0) {
+ start_x = 0;
+ }
+ if (end_x > pBitmap->GetWidth()) {
+ end_x = pBitmap->GetWidth();
+ }
+ uint8_t* dib_buf =
+ pBitmap->GetBuffer() + y * pBitmap->GetPitch() + start_x * 4;
+ FX_FLOAT r_unit = (r[end_index] - r[start_index]) / (max_x - min_x);
+ FX_FLOAT g_unit = (g[end_index] - g[start_index]) / (max_x - min_x);
+ FX_FLOAT b_unit = (b[end_index] - b[start_index]) / (max_x - min_x);
+ FX_FLOAT R = r[start_index] + (start_x - min_x) * r_unit;
+ FX_FLOAT G = g[start_index] + (start_x - min_x) * g_unit;
+ FX_FLOAT B = b[start_index] + (start_x - min_x) * b_unit;
+ for (int x = start_x; x < end_x; x++) {
+ R += r_unit;
+ G += g_unit;
+ B += b_unit;
+ FXARGB_SETDIB(dib_buf,
+ FXARGB_MAKE(alpha, (int32_t)(R * 255), (int32_t)(G * 255),
+ (int32_t)(B * 255)));
+ dib_buf += 4;
+ }
+ }
+}
+static void DrawFreeGouraudShading(CFX_DIBitmap* pBitmap,
+ CFX_Matrix* pObject2Bitmap,
+ CPDF_Stream* pShadingStream,
+ CPDF_Function** pFuncs,
+ int nFuncs,
+ CPDF_ColorSpace* pCS,
+ int alpha) {
+ ASSERT(pBitmap->GetFormat() == FXDIB_Argb);
+
+ CPDF_MeshStream stream;
+ if (!stream.Load(pShadingStream, pFuncs, nFuncs, pCS))
+ return;
+
+ CPDF_MeshVertex triangle[3];
+ FXSYS_memset(triangle, 0, sizeof(triangle));
+
+ while (!stream.m_BitStream.IsEOF()) {
+ CPDF_MeshVertex vertex;
+ FX_DWORD flag = stream.GetVertex(vertex, pObject2Bitmap);
+ if (flag == 0) {
+ triangle[0] = vertex;
+ for (int j = 1; j < 3; j++) {
+ stream.GetVertex(triangle[j], pObject2Bitmap);
+ }
+ } else {
+ if (flag == 1) {
+ triangle[0] = triangle[1];
+ }
+ triangle[1] = triangle[2];
+ triangle[2] = vertex;
+ }
+ DrawGouraud(pBitmap, alpha, triangle);
+ }
+}
+static void DrawLatticeGouraudShading(CFX_DIBitmap* pBitmap,
+ CFX_Matrix* pObject2Bitmap,
+ CPDF_Stream* pShadingStream,
+ CPDF_Function** pFuncs,
+ int nFuncs,
+ CPDF_ColorSpace* pCS,
+ int alpha) {
+ ASSERT(pBitmap->GetFormat() == FXDIB_Argb);
+
+ int row_verts = pShadingStream->GetDict()->GetIntegerBy("VerticesPerRow");
+ if (row_verts < 2)
+ return;
+
+ CPDF_MeshStream stream;
+ if (!stream.Load(pShadingStream, pFuncs, nFuncs, pCS))
+ return;
+
+ CPDF_MeshVertex* vertex = FX_Alloc2D(CPDF_MeshVertex, row_verts, 2);
+ if (!stream.GetVertexRow(vertex, row_verts, pObject2Bitmap)) {
+ FX_Free(vertex);
+ return;
+ }
+ int last_index = 0;
+ while (1) {
+ CPDF_MeshVertex* last_row = vertex + last_index * row_verts;
+ CPDF_MeshVertex* this_row = vertex + (1 - last_index) * row_verts;
+ if (!stream.GetVertexRow(this_row, row_verts, pObject2Bitmap)) {
+ FX_Free(vertex);
+ return;
+ }
+ CPDF_MeshVertex triangle[3];
+ for (int i = 1; i < row_verts; i++) {
+ triangle[0] = last_row[i];
+ triangle[1] = this_row[i - 1];
+ triangle[2] = last_row[i - 1];
+ DrawGouraud(pBitmap, alpha, triangle);
+ triangle[2] = this_row[i];
+ DrawGouraud(pBitmap, alpha, triangle);
+ }
+ last_index = 1 - last_index;
+ }
+ FX_Free(vertex);
+}
+struct Coon_BezierCoeff {
+ float a, b, c, d;
+ void FromPoints(float p0, float p1, float p2, float p3) {
+ a = -p0 + 3 * p1 - 3 * p2 + p3;
+ b = 3 * p0 - 6 * p1 + 3 * p2;
+ c = -3 * p0 + 3 * p1;
+ d = p0;
+ }
+ Coon_BezierCoeff first_half() {
+ Coon_BezierCoeff result;
+ result.a = a / 8;
+ result.b = b / 4;
+ result.c = c / 2;
+ result.d = d;
+ return result;
+ }
+ Coon_BezierCoeff second_half() {
+ Coon_BezierCoeff result;
+ result.a = a / 8;
+ result.b = 3 * a / 8 + b / 4;
+ result.c = 3 * a / 8 + b / 2 + c / 2;
+ result.d = a / 8 + b / 4 + c / 2 + d;
+ return result;
+ }
+ void GetPoints(float p[4]) {
+ p[0] = d;
+ p[1] = c / 3 + p[0];
+ p[2] = b / 3 - p[0] + 2 * p[1];
+ p[3] = a + p[0] - 3 * p[1] + 3 * p[2];
+ }
+ void GetPointsReverse(float p[4]) {
+ p[3] = d;
+ p[2] = c / 3 + p[3];
+ p[1] = b / 3 - p[3] + 2 * p[2];
+ p[0] = a + p[3] - 3 * p[2] + 3 * p[1];
+ }
+ void BezierInterpol(Coon_BezierCoeff& C1,
+ Coon_BezierCoeff& C2,
+ Coon_BezierCoeff& D1,
+ Coon_BezierCoeff& D2) {
+ a = (D1.a + D2.a) / 2;
+ b = (D1.b + D2.b) / 2;
+ c = (D1.c + D2.c) / 2 - (C1.a / 8 + C1.b / 4 + C1.c / 2) +
+ (C2.a / 8 + C2.b / 4) + (-C1.d + D2.d) / 2 - (C2.a + C2.b) / 2;
+ d = C1.a / 8 + C1.b / 4 + C1.c / 2 + C1.d;
+ }
+ float Distance() {
+ float dis = a + b + c;
+ return dis < 0 ? -dis : dis;
+ }
+};
+struct Coon_Bezier {
+ Coon_BezierCoeff x, y;
+ void FromPoints(float x0,
+ float y0,
+ float x1,
+ float y1,
+ float x2,
+ float y2,
+ float x3,
+ float y3) {
+ x.FromPoints(x0, x1, x2, x3);
+ y.FromPoints(y0, y1, y2, y3);
+ }
+ Coon_Bezier first_half() {
+ Coon_Bezier result;
+ result.x = x.first_half();
+ result.y = y.first_half();
+ return result;
+ }
+ Coon_Bezier second_half() {
+ Coon_Bezier result;
+ result.x = x.second_half();
+ result.y = y.second_half();
+ return result;
+ }
+ void BezierInterpol(Coon_Bezier& C1,
+ Coon_Bezier& C2,
+ Coon_Bezier& D1,
+ Coon_Bezier& D2) {
+ x.BezierInterpol(C1.x, C2.x, D1.x, D2.x);
+ y.BezierInterpol(C1.y, C2.y, D1.y, D2.y);
+ }
+ void GetPoints(FX_PATHPOINT* pPoints) {
+ float p[4];
+ int i;
+ x.GetPoints(p);
+ for (i = 0; i < 4; i++) {
+ pPoints[i].m_PointX = p[i];
+ }
+ y.GetPoints(p);
+ for (i = 0; i < 4; i++) {
+ pPoints[i].m_PointY = p[i];
+ }
+ }
+ void GetPointsReverse(FX_PATHPOINT* pPoints) {
+ float p[4];
+ int i;
+ x.GetPointsReverse(p);
+ for (i = 0; i < 4; i++) {
+ pPoints[i].m_PointX = p[i];
+ }
+ y.GetPointsReverse(p);
+ for (i = 0; i < 4; i++) {
+ pPoints[i].m_PointY = p[i];
+ }
+ }
+ float Distance() { return x.Distance() + y.Distance(); }
+};
+static int _BiInterpol(int c0,
+ int c1,
+ int c2,
+ int c3,
+ int x,
+ int y,
+ int x_scale,
+ int y_scale) {
+ int x1 = c0 + (c3 - c0) * x / x_scale;
+ int x2 = c1 + (c2 - c1) * x / x_scale;
+ return x1 + (x2 - x1) * y / y_scale;
+}
+struct Coon_Color {
+ Coon_Color() { FXSYS_memset(comp, 0, sizeof(int) * 3); }
+ int comp[3];
+ void BiInterpol(Coon_Color colors[4],
+ int x,
+ int y,
+ int x_scale,
+ int y_scale) {
+ for (int i = 0; i < 3; i++)
+ comp[i] =
+ _BiInterpol(colors[0].comp[i], colors[1].comp[i], colors[2].comp[i],
+ colors[3].comp[i], x, y, x_scale, y_scale);
+ }
+ int Distance(Coon_Color& o) {
+ int max, diff;
+ max = FXSYS_abs(comp[0] - o.comp[0]);
+ diff = FXSYS_abs(comp[1] - o.comp[1]);
+ if (max < diff) {
+ max = diff;
+ }
+ diff = FXSYS_abs(comp[2] - o.comp[2]);
+ if (max < diff) {
+ max = diff;
+ }
+ return max;
+ }
+};
+struct CPDF_PatchDrawer {
+ Coon_Color patch_colors[4];
+ int max_delta;
+ CFX_PathData path;
+ CFX_RenderDevice* pDevice;
+ int fill_mode;
+ int alpha;
+ void Draw(int x_scale,
+ int y_scale,
+ int left,
+ int bottom,
+ Coon_Bezier C1,
+ Coon_Bezier C2,
+ Coon_Bezier D1,
+ Coon_Bezier D2) {
+ FX_BOOL bSmall = C1.Distance() < 2 && C2.Distance() < 2 &&
+ D1.Distance() < 2 && D2.Distance() < 2;
+ Coon_Color div_colors[4];
+ int d_bottom, d_left, d_top, d_right;
+ div_colors[0].BiInterpol(patch_colors, left, bottom, x_scale, y_scale);
+ if (!bSmall) {
+ div_colors[1].BiInterpol(patch_colors, left, bottom + 1, x_scale,
+ y_scale);
+ div_colors[2].BiInterpol(patch_colors, left + 1, bottom + 1, x_scale,
+ y_scale);
+ div_colors[3].BiInterpol(patch_colors, left + 1, bottom, x_scale,
+ y_scale);
+ d_bottom = div_colors[3].Distance(div_colors[0]);
+ d_left = div_colors[1].Distance(div_colors[0]);
+ d_top = div_colors[1].Distance(div_colors[2]);
+ d_right = div_colors[2].Distance(div_colors[3]);
+ }
+#define COONCOLOR_THRESHOLD 4
+ if (bSmall ||
+ (d_bottom < COONCOLOR_THRESHOLD && d_left < COONCOLOR_THRESHOLD &&
+ d_top < COONCOLOR_THRESHOLD && d_right < COONCOLOR_THRESHOLD)) {
+ FX_PATHPOINT* pPoints = path.GetPoints();
+ C1.GetPoints(pPoints);
+ D2.GetPoints(pPoints + 3);
+ C2.GetPointsReverse(pPoints + 6);
+ D1.GetPointsReverse(pPoints + 9);
+ int fillFlags = FXFILL_WINDING | FXFILL_FULLCOVER;
+ if (fill_mode & RENDER_NOPATHSMOOTH) {
+ fillFlags |= FXFILL_NOPATHSMOOTH;
+ }
+ pDevice->DrawPath(
+ &path, NULL, NULL,
+ FXARGB_MAKE(alpha, div_colors[0].comp[0], div_colors[0].comp[1],
+ div_colors[0].comp[2]),
+ 0, fillFlags);
+ } else {
+ if (d_bottom < COONCOLOR_THRESHOLD && d_top < COONCOLOR_THRESHOLD) {
+ Coon_Bezier m1;
+ m1.BezierInterpol(D1, D2, C1, C2);
+ y_scale *= 2;
+ bottom *= 2;
+ Draw(x_scale, y_scale, left, bottom, C1, m1, D1.first_half(),
+ D2.first_half());
+ Draw(x_scale, y_scale, left, bottom + 1, m1, C2, D1.second_half(),
+ D2.second_half());
+ } else if (d_left < COONCOLOR_THRESHOLD &&
+ d_right < COONCOLOR_THRESHOLD) {
+ Coon_Bezier m2;
+ m2.BezierInterpol(C1, C2, D1, D2);
+ x_scale *= 2;
+ left *= 2;
+ Draw(x_scale, y_scale, left, bottom, C1.first_half(), C2.first_half(),
+ D1, m2);
+ Draw(x_scale, y_scale, left + 1, bottom, C1.second_half(),
+ C2.second_half(), m2, D2);
+ } else {
+ Coon_Bezier m1, m2;
+ m1.BezierInterpol(D1, D2, C1, C2);
+ m2.BezierInterpol(C1, C2, D1, D2);
+ Coon_Bezier m1f = m1.first_half();
+ Coon_Bezier m1s = m1.second_half();
+ Coon_Bezier m2f = m2.first_half();
+ Coon_Bezier m2s = m2.second_half();
+ x_scale *= 2;
+ y_scale *= 2;
+ left *= 2;
+ bottom *= 2;
+ Draw(x_scale, y_scale, left, bottom, C1.first_half(), m1f,
+ D1.first_half(), m2f);
+ Draw(x_scale, y_scale, left, bottom + 1, m1f, C2.first_half(),
+ D1.second_half(), m2s);
+ Draw(x_scale, y_scale, left + 1, bottom, C1.second_half(), m1s, m2f,
+ D2.first_half());
+ Draw(x_scale, y_scale, left + 1, bottom + 1, m1s, C2.second_half(), m2s,
+ D2.second_half());
+ }
+ }
+ }
+};
+
+bool _CheckCoonTensorPara(const CPDF_MeshStream& stream) {
+ bool bCoorBits = (stream.m_nCoordBits == 1 || stream.m_nCoordBits == 2 ||
+ stream.m_nCoordBits == 4 || stream.m_nCoordBits == 8 ||
+ stream.m_nCoordBits == 12 || stream.m_nCoordBits == 16 ||
+ stream.m_nCoordBits == 24 || stream.m_nCoordBits == 32);
+
+ bool bCompBits = (stream.m_nCompBits == 1 || stream.m_nCompBits == 2 ||
+ stream.m_nCompBits == 4 || stream.m_nCompBits == 8 ||
+ stream.m_nCompBits == 12 || stream.m_nCompBits == 16);
+
+ bool bFlagBits = (stream.m_nFlagBits == 2 || stream.m_nFlagBits == 4 ||
+ stream.m_nFlagBits == 8);
+
+ return bCoorBits && bCompBits && bFlagBits;
+}
+
+static void DrawCoonPatchMeshes(FX_BOOL bTensor,
+ CFX_DIBitmap* pBitmap,
+ CFX_Matrix* pObject2Bitmap,
+ CPDF_Stream* pShadingStream,
+ CPDF_Function** pFuncs,
+ int nFuncs,
+ CPDF_ColorSpace* pCS,
+ int fill_mode,
+ int alpha) {
+ ASSERT(pBitmap->GetFormat() == FXDIB_Argb);
+
+ CFX_FxgeDevice device;
+ device.Attach(pBitmap);
+ CPDF_MeshStream stream;
+ if (!stream.Load(pShadingStream, pFuncs, nFuncs, pCS))
+ return;
+ if (!_CheckCoonTensorPara(stream))
+ return;
+
+ CPDF_PatchDrawer patch;
+ patch.alpha = alpha;
+ patch.pDevice = &device;
+ patch.fill_mode = fill_mode;
+ patch.path.SetPointCount(13);
+ FX_PATHPOINT* pPoints = patch.path.GetPoints();
+ pPoints[0].m_Flag = FXPT_MOVETO;
+ for (int i = 1; i < 13; i++) {
+ pPoints[i].m_Flag = FXPT_BEZIERTO;
+ }
+ CFX_PointF coords[16];
+ int point_count = bTensor ? 16 : 12;
+ while (!stream.m_BitStream.IsEOF()) {
+ FX_DWORD flag = stream.GetFlag();
+ int iStartPoint = 0, iStartColor = 0, i = 0;
+ if (flag) {
+ iStartPoint = 4;
+ iStartColor = 2;
+ CFX_PointF tempCoords[4];
+ for (i = 0; i < 4; i++) {
+ tempCoords[i] = coords[(flag * 3 + i) % 12];
+ }
+ FXSYS_memcpy(coords, tempCoords, sizeof(tempCoords));
+ Coon_Color tempColors[2];
+ tempColors[0] = patch.patch_colors[flag];
+ tempColors[1] = patch.patch_colors[(flag + 1) % 4];
+ FXSYS_memcpy(patch.patch_colors, tempColors, sizeof(Coon_Color) * 2);
+ }
+ for (i = iStartPoint; i < point_count; i++) {
+ stream.GetCoords(coords[i].x, coords[i].y);
+ pObject2Bitmap->Transform(coords[i].x, coords[i].y);
+ }
+ for (i = iStartColor; i < 4; i++) {
+ FX_FLOAT r = 0.0f, g = 0.0f, b = 0.0f;
+ stream.GetColor(r, g, b);
+ patch.patch_colors[i].comp[0] = (int32_t)(r * 255);
+ patch.patch_colors[i].comp[1] = (int32_t)(g * 255);
+ patch.patch_colors[i].comp[2] = (int32_t)(b * 255);
+ }
+ CFX_FloatRect bbox = CFX_FloatRect::GetBBox(coords, point_count);
+ if (bbox.right <= 0 || bbox.left >= (FX_FLOAT)pBitmap->GetWidth() ||
+ bbox.top <= 0 || bbox.bottom >= (FX_FLOAT)pBitmap->GetHeight()) {
+ continue;
+ }
+ Coon_Bezier C1, C2, D1, D2;
+ C1.FromPoints(coords[0].x, coords[0].y, coords[11].x, coords[11].y,
+ coords[10].x, coords[10].y, coords[9].x, coords[9].y);
+ C2.FromPoints(coords[3].x, coords[3].y, coords[4].x, coords[4].y,
+ coords[5].x, coords[5].y, coords[6].x, coords[6].y);
+ D1.FromPoints(coords[0].x, coords[0].y, coords[1].x, coords[1].y,
+ coords[2].x, coords[2].y, coords[3].x, coords[3].y);
+ D2.FromPoints(coords[9].x, coords[9].y, coords[8].x, coords[8].y,
+ coords[7].x, coords[7].y, coords[6].x, coords[6].y);
+ patch.Draw(1, 1, 0, 0, C1, C2, D1, D2);
+ }
+}
+void CPDF_RenderStatus::DrawShading(CPDF_ShadingPattern* pPattern,
+ CFX_Matrix* pMatrix,
+ FX_RECT& clip_rect,
+ int alpha,
+ FX_BOOL bAlphaMode) {
+ CPDF_Function** pFuncs = pPattern->m_pFunctions;
+ int nFuncs = pPattern->m_nFuncs;
+ CPDF_Dictionary* pDict = pPattern->m_pShadingObj->GetDict();
+ CPDF_ColorSpace* pColorSpace = pPattern->m_pCS;
+ if (!pColorSpace) {
+ return;
+ }
+ FX_ARGB background = 0;
+ if (!pPattern->m_bShadingObj &&
+ pPattern->m_pShadingObj->GetDict()->KeyExist("Background")) {
+ CPDF_Array* pBackColor =
+ pPattern->m_pShadingObj->GetDict()->GetArrayBy("Background");
+ if (pBackColor &&
+ pBackColor->GetCount() >= pColorSpace->CountComponents()) {
+ CFX_FixedBufGrow<FX_FLOAT, 16> comps(pColorSpace->CountComponents());
+ for (int i = 0; i < pColorSpace->CountComponents(); i++) {
+ comps[i] = pBackColor->GetNumberAt(i);
+ }
+ FX_FLOAT R = 0.0f, G = 0.0f, B = 0.0f;
+ pColorSpace->GetRGB(comps, R, G, B);
+ background = ArgbEncode(255, (int32_t)(R * 255), (int32_t)(G * 255),
+ (int32_t)(B * 255));
+ }
+ }
+ if (pDict->KeyExist("BBox")) {
+ CFX_FloatRect rect = pDict->GetRectBy("BBox");
+ rect.Transform(pMatrix);
+ clip_rect.Intersect(rect.GetOutterRect());
+ }
+ CPDF_DeviceBuffer buffer;
+ buffer.Initialize(m_pContext, m_pDevice, &clip_rect, m_pCurObj, 150);
+ CFX_Matrix FinalMatrix = *pMatrix;
+ FinalMatrix.Concat(*buffer.GetMatrix());
+ CFX_DIBitmap* pBitmap = buffer.GetBitmap();
+ if (!pBitmap->GetBuffer()) {
+ return;
+ }
+ pBitmap->Clear(background);
+ int fill_mode = m_Options.m_Flags;
+ switch (pPattern->m_ShadingType) {
+ case kInvalidShading:
+ case kMaxShading:
+ return;
+ case kFunctionBasedShading:
+ DrawFuncShading(pBitmap, &FinalMatrix, pDict, pFuncs, nFuncs, pColorSpace,
+ alpha);
+ break;
+ case kAxialShading:
+ DrawAxialShading(pBitmap, &FinalMatrix, pDict, pFuncs, nFuncs,
+ pColorSpace, alpha);
+ break;
+ case kRadialShading:
+ DrawRadialShading(pBitmap, &FinalMatrix, pDict, pFuncs, nFuncs,
+ pColorSpace, alpha);
+ break;
+ case kFreeFormGouraudTriangleMeshShading: {
+ DrawFreeGouraudShading(pBitmap, &FinalMatrix,
+ ToStream(pPattern->m_pShadingObj), pFuncs, nFuncs,
+ pColorSpace, alpha);
+ } break;
+ case kLatticeFormGouraudTriangleMeshShading: {
+ DrawLatticeGouraudShading(pBitmap, &FinalMatrix,
+ ToStream(pPattern->m_pShadingObj), pFuncs,
+ nFuncs, pColorSpace, alpha);
+ } break;
+ case kCoonsPatchMeshShading:
+ case kTensorProductPatchMeshShading: {
+ DrawCoonPatchMeshes(
+ pPattern->m_ShadingType == kTensorProductPatchMeshShading, pBitmap,
+ &FinalMatrix, ToStream(pPattern->m_pShadingObj), pFuncs, nFuncs,
+ pColorSpace, fill_mode, alpha);
+ } break;
+ }
+ if (bAlphaMode) {
+ pBitmap->LoadChannel(FXDIB_Red, pBitmap, FXDIB_Alpha);
+ }
+ if (m_Options.m_ColorMode == RENDER_COLOR_GRAY) {
+ pBitmap->ConvertColorScale(m_Options.m_ForeColor, m_Options.m_BackColor);
+ }
+ buffer.OutputToDevice();
+}
+void CPDF_RenderStatus::DrawShadingPattern(CPDF_ShadingPattern* pattern,
+ const CPDF_PageObject* pPageObj,
+ const CFX_Matrix* pObj2Device,
+ FX_BOOL bStroke) {
+ if (!pattern->Load()) {
+ return;
+ }
+ m_pDevice->SaveState();
+ if (pPageObj->IsPath()) {
+ if (!SelectClipPath(pPageObj->AsPath(), pObj2Device, bStroke)) {
+ m_pDevice->RestoreState();
+ return;
+ }
+ } else if (pPageObj->IsImage()) {
+ m_pDevice->SetClip_Rect(pPageObj->GetBBox(pObj2Device));
+ } else {
+ return;
+ }
+ FX_RECT rect;
+ if (GetObjectClippedRect(pPageObj, pObj2Device, FALSE, rect)) {
+ m_pDevice->RestoreState();
+ return;
+ }
+ CFX_Matrix matrix = pattern->m_Pattern2Form;
+ matrix.Concat(*pObj2Device);
+ GetScaledMatrix(matrix);
+ int alpha = pPageObj->m_GeneralState.GetAlpha(bStroke);
+ DrawShading(pattern, &matrix, rect, alpha,
+ m_Options.m_ColorMode == RENDER_COLOR_ALPHA);
+ m_pDevice->RestoreState();
+}
+FX_BOOL CPDF_RenderStatus::ProcessShading(const CPDF_ShadingObject* pShadingObj,
+ const CFX_Matrix* pObj2Device) {
+ FX_RECT rect = pShadingObj->GetBBox(pObj2Device);
+ FX_RECT clip_box = m_pDevice->GetClipBox();
+ rect.Intersect(clip_box);
+ if (rect.IsEmpty()) {
+ return TRUE;
+ }
+ CFX_Matrix matrix = pShadingObj->m_Matrix;
+ matrix.Concat(*pObj2Device);
+ DrawShading(pShadingObj->m_pShading, &matrix, rect,
+ pShadingObj->m_GeneralState.GetAlpha(FALSE),
+ m_Options.m_ColorMode == RENDER_COLOR_ALPHA);
+ return TRUE;
+}
+static CFX_DIBitmap* DrawPatternBitmap(CPDF_Document* pDoc,
+ CPDF_PageRenderCache* pCache,
+ CPDF_TilingPattern* pPattern,
+ const CFX_Matrix* pObject2Device,
+ int width,
+ int height,
+ int flags) {
+ CFX_DIBitmap* pBitmap = new CFX_DIBitmap;
+ if (!pBitmap->Create(width, height,
+ pPattern->m_bColored ? FXDIB_Argb : FXDIB_8bppMask)) {
+ delete pBitmap;
+ return NULL;
+ }
+ CFX_FxgeDevice bitmap_device;
+ bitmap_device.Attach(pBitmap);
+ pBitmap->Clear(0);
+ CFX_FloatRect cell_bbox = pPattern->m_BBox;
+ pPattern->m_Pattern2Form.TransformRect(cell_bbox);
+ pObject2Device->TransformRect(cell_bbox);
+ CFX_FloatRect bitmap_rect(0.0f, 0.0f, (FX_FLOAT)width, (FX_FLOAT)height);
+ CFX_Matrix mtAdjust;
+ mtAdjust.MatchRect(bitmap_rect, cell_bbox);
+ CFX_Matrix mtPattern2Bitmap = *pObject2Device;
+ mtPattern2Bitmap.Concat(mtAdjust);
+ CPDF_RenderOptions options;
+ if (!pPattern->m_bColored) {
+ options.m_ColorMode = RENDER_COLOR_ALPHA;
+ }
+ flags |= RENDER_FORCE_HALFTONE;
+ options.m_Flags = flags;
+ CPDF_RenderContext context(pDoc, pCache);
+ context.AppendLayer(pPattern->m_pForm, &mtPattern2Bitmap);
+ context.Render(&bitmap_device, &options, nullptr);
+ return pBitmap;
+}
+void CPDF_RenderStatus::DrawTilingPattern(CPDF_TilingPattern* pPattern,
+ const CPDF_PageObject* pPageObj,
+ const CFX_Matrix* pObj2Device,
+ FX_BOOL bStroke) {
+ if (!pPattern->Load()) {
+ return;
+ }
+ m_pDevice->SaveState();
+ if (pPageObj->IsPath()) {
+ if (!SelectClipPath(pPageObj->AsPath(), pObj2Device, bStroke)) {
+ m_pDevice->RestoreState();
+ return;
+ }
+ } else if (pPageObj->IsImage()) {
+ m_pDevice->SetClip_Rect(pPageObj->GetBBox(pObj2Device));
+ } else {
+ return;
+ }
+ FX_RECT clip_box = m_pDevice->GetClipBox();
+ if (clip_box.IsEmpty()) {
+ m_pDevice->RestoreState();
+ return;
+ }
+ CFX_Matrix dCTM = m_pDevice->GetCTM();
+ FX_FLOAT sa = FXSYS_fabs(dCTM.a);
+ FX_FLOAT sd = FXSYS_fabs(dCTM.d);
+ clip_box.right = clip_box.left + (int32_t)FXSYS_ceil(clip_box.Width() * sa);
+ clip_box.bottom = clip_box.top + (int32_t)FXSYS_ceil(clip_box.Height() * sd);
+ CFX_Matrix mtPattern2Device = pPattern->m_Pattern2Form;
+ mtPattern2Device.Concat(*pObj2Device);
+ GetScaledMatrix(mtPattern2Device);
+ FX_BOOL bAligned = FALSE;
+ if (pPattern->m_BBox.left == 0 && pPattern->m_BBox.bottom == 0 &&
+ pPattern->m_BBox.right == pPattern->m_XStep &&
+ pPattern->m_BBox.top == pPattern->m_YStep &&
+ (mtPattern2Device.IsScaled() || mtPattern2Device.Is90Rotated())) {
+ bAligned = TRUE;
+ }
+ CFX_FloatRect cell_bbox = pPattern->m_BBox;
+ mtPattern2Device.TransformRect(cell_bbox);
+ int width = (int)FXSYS_ceil(cell_bbox.Width());
+ int height = (int)FXSYS_ceil(cell_bbox.Height());
+ if (width == 0) {
+ width = 1;
+ }
+ if (height == 0) {
+ height = 1;
+ }
+ int min_col, max_col, min_row, max_row;
+ CFX_Matrix mtDevice2Pattern;
+ mtDevice2Pattern.SetReverse(mtPattern2Device);
+ CFX_FloatRect clip_box_p(clip_box);
+ clip_box_p.Transform(&mtDevice2Pattern);
+
+ min_col = (int)FXSYS_ceil((clip_box_p.left - pPattern->m_BBox.right) /
+ pPattern->m_XStep);
+ max_col = (int)FXSYS_floor((clip_box_p.right - pPattern->m_BBox.left) /
+ pPattern->m_XStep);
+ min_row = (int)FXSYS_ceil((clip_box_p.bottom - pPattern->m_BBox.top) /
+ pPattern->m_YStep);
+ max_row = (int)FXSYS_floor((clip_box_p.top - pPattern->m_BBox.bottom) /
+ pPattern->m_YStep);
+
+ if (width > clip_box.Width() || height > clip_box.Height() ||
+ width * height > clip_box.Width() * clip_box.Height()) {
+ CPDF_GraphicStates* pStates = NULL;
+ if (!pPattern->m_bColored) {
+ pStates = CloneObjStates(pPageObj, bStroke);
+ }
+ CPDF_Dictionary* pFormResource = NULL;
+ if (pPattern->m_pForm->m_pFormDict) {
+ pFormResource = pPattern->m_pForm->m_pFormDict->GetDictBy("Resources");
+ }
+ for (int col = min_col; col <= max_col; col++)
+ for (int row = min_row; row <= max_row; row++) {
+ FX_FLOAT orig_x, orig_y;
+ orig_x = col * pPattern->m_XStep;
+ orig_y = row * pPattern->m_YStep;
+ mtPattern2Device.Transform(orig_x, orig_y);
+ CFX_Matrix matrix = *pObj2Device;
+ matrix.Translate(orig_x - mtPattern2Device.e,
+ orig_y - mtPattern2Device.f);
+ m_pDevice->SaveState();
+ CPDF_RenderStatus status;
+ status.Initialize(m_pContext, m_pDevice, NULL, NULL, this, pStates,
+ &m_Options, pPattern->m_pForm->m_Transparency,
+ m_bDropObjects, pFormResource);
+ status.RenderObjectList(pPattern->m_pForm, &matrix);
+ m_pDevice->RestoreState();
+ }
+ m_pDevice->RestoreState();
+ delete pStates;
+ return;
+ }
+ if (bAligned) {
+ int orig_x = FXSYS_round(mtPattern2Device.e);
+ int orig_y = FXSYS_round(mtPattern2Device.f);
+ min_col = (clip_box.left - orig_x) / width;
+ if (clip_box.left < orig_x) {
+ min_col--;
+ }
+ max_col = (clip_box.right - orig_x) / width;
+ if (clip_box.right <= orig_x) {
+ max_col--;
+ }
+ min_row = (clip_box.top - orig_y) / height;
+ if (clip_box.top < orig_y) {
+ min_row--;
+ }
+ max_row = (clip_box.bottom - orig_y) / height;
+ if (clip_box.bottom <= orig_y) {
+ max_row--;
+ }
+ }
+ FX_FLOAT left_offset = cell_bbox.left - mtPattern2Device.e;
+ FX_FLOAT top_offset = cell_bbox.bottom - mtPattern2Device.f;
+ CFX_DIBitmap* pPatternBitmap = NULL;
+ if (width * height < 16) {
+ CFX_DIBitmap* pEnlargedBitmap =
+ DrawPatternBitmap(m_pContext->GetDocument(), m_pContext->GetPageCache(),
+ pPattern, pObj2Device, 8, 8, m_Options.m_Flags);
+ pPatternBitmap = pEnlargedBitmap->StretchTo(width, height);
+ delete pEnlargedBitmap;
+ } else {
+ pPatternBitmap = DrawPatternBitmap(
+ m_pContext->GetDocument(), m_pContext->GetPageCache(), pPattern,
+ pObj2Device, width, height, m_Options.m_Flags);
+ }
+ if (!pPatternBitmap) {
+ m_pDevice->RestoreState();
+ return;
+ }
+ if (m_Options.m_ColorMode == RENDER_COLOR_GRAY) {
+ pPatternBitmap->ConvertColorScale(m_Options.m_ForeColor,
+ m_Options.m_BackColor);
+ }
+ FX_ARGB fill_argb = GetFillArgb(pPageObj);
+ int clip_width = clip_box.right - clip_box.left;
+ int clip_height = clip_box.bottom - clip_box.top;
+ CFX_DIBitmap screen;
+ if (!screen.Create(clip_width, clip_height, FXDIB_Argb)) {
+ return;
+ }
+ screen.Clear(0);
+ FX_DWORD* src_buf = (FX_DWORD*)pPatternBitmap->GetBuffer();
+ for (int col = min_col; col <= max_col; col++) {
+ for (int row = min_row; row <= max_row; row++) {
+ int start_x, start_y;
+ if (bAligned) {
+ start_x = FXSYS_round(mtPattern2Device.e) + col * width - clip_box.left;
+ start_y = FXSYS_round(mtPattern2Device.f) + row * height - clip_box.top;
+ } else {
+ FX_FLOAT orig_x = col * pPattern->m_XStep;
+ FX_FLOAT orig_y = row * pPattern->m_YStep;
+ mtPattern2Device.Transform(orig_x, orig_y);
+ start_x = FXSYS_round(orig_x + left_offset) - clip_box.left;
+ start_y = FXSYS_round(orig_y + top_offset) - clip_box.top;
+ }
+ if (width == 1 && height == 1) {
+ if (start_x < 0 || start_x >= clip_box.Width() || start_y < 0 ||
+ start_y >= clip_box.Height()) {
+ continue;
+ }
+ FX_DWORD* dest_buf =
+ (FX_DWORD*)(screen.GetBuffer() + screen.GetPitch() * start_y +
+ start_x * 4);
+ if (pPattern->m_bColored) {
+ *dest_buf = *src_buf;
+ } else {
+ *dest_buf = (*(uint8_t*)src_buf << 24) | (fill_argb & 0xffffff);
+ }
+ } else {
+ if (pPattern->m_bColored) {
+ screen.CompositeBitmap(start_x, start_y, width, height,
+ pPatternBitmap, 0, 0);
+ } else {
+ screen.CompositeMask(start_x, start_y, width, height, pPatternBitmap,
+ fill_argb, 0, 0);
+ }
+ }
+ }
+ }
+ CompositeDIBitmap(&screen, clip_box.left, clip_box.top, 0, 255,
+ FXDIB_BLEND_NORMAL, FALSE);
+ m_pDevice->RestoreState();
+ delete pPatternBitmap;
+}
+void CPDF_RenderStatus::DrawPathWithPattern(const CPDF_PathObject* pPathObj,
+ const CFX_Matrix* pObj2Device,
+ CPDF_Color* pColor,
+ FX_BOOL bStroke) {
+ CPDF_Pattern* pattern = pColor->GetPattern();
+ if (!pattern) {
+ return;
+ }
+ if (pattern->m_PatternType == CPDF_Pattern::TILING) {
+ DrawTilingPattern(static_cast<CPDF_TilingPattern*>(pattern), pPathObj,
+ pObj2Device, bStroke);
+ } else {
+ DrawShadingPattern(static_cast<CPDF_ShadingPattern*>(pattern), pPathObj,
+ pObj2Device, bStroke);
+ }
+}
+void CPDF_RenderStatus::ProcessPathPattern(const CPDF_PathObject* pPathObj,
+ const CFX_Matrix* pObj2Device,
+ int& filltype,
+ FX_BOOL& bStroke) {
+ if (filltype) {
+ CPDF_Color& FillColor = *pPathObj->m_ColorState.GetFillColor();
+ if (FillColor.m_pCS && FillColor.m_pCS->GetFamily() == PDFCS_PATTERN) {
+ DrawPathWithPattern(pPathObj, pObj2Device, &FillColor, FALSE);
+ filltype = 0;
+ }
+ }
+ if (bStroke) {
+ CPDF_Color& StrokeColor = *pPathObj->m_ColorState.GetStrokeColor();
+ if (StrokeColor.m_pCS && StrokeColor.m_pCS->GetFamily() == PDFCS_PATTERN) {
+ DrawPathWithPattern(pPathObj, pObj2Device, &StrokeColor, TRUE);
+ bStroke = FALSE;
+ }
+ }
+}
diff --git a/core/fpdfapi/fpdf_render/fpdf_render_pattern_embeddertest.cpp b/core/fpdfapi/fpdf_render/fpdf_render_pattern_embeddertest.cpp
new file mode 100644
index 0000000000..176c923372
--- /dev/null
+++ b/core/fpdfapi/fpdf_render/fpdf_render_pattern_embeddertest.cpp
@@ -0,0 +1,17 @@
+// Copyright 2015 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "testing/embedder_test.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+class FPDFRenderPatternEmbeddertest : public EmbedderTest {};
+
+TEST_F(FPDFRenderPatternEmbeddertest, LoadError_547706) {
+ // Test shading where object is a dictionary instead of a stream.
+ EXPECT_TRUE(OpenDocument("bug_547706.pdf"));
+ FPDF_PAGE page = LoadPage(0);
+ FPDF_BITMAP bitmap = RenderPage(page);
+ FPDFBitmap_Destroy(bitmap);
+ UnloadPage(page);
+}
diff --git a/core/fpdfapi/fpdf_render/fpdf_render_text.cpp b/core/fpdfapi/fpdf_render/fpdf_render_text.cpp
new file mode 100644
index 0000000000..24b77ed368
--- /dev/null
+++ b/core/fpdfapi/fpdf_render/fpdf_render_text.cpp
@@ -0,0 +1,787 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fpdfapi/fpdf_render/render_int.h"
+
+#include "core/fpdfapi/fpdf_page/pageint.h"
+#include "core/include/fpdfapi/cpdf_dictionary.h"
+#include "core/include/fpdfapi/cpdf_document.h"
+#include "core/include/fpdfapi/fpdf_pageobj.h"
+#include "core/include/fpdfapi/fpdf_render.h"
+#include "core/include/fxge/fx_ge.h"
+
+CPDF_Type3Cache::~CPDF_Type3Cache() {
+ for (const auto& pair : m_SizeMap) {
+ delete pair.second;
+ }
+ m_SizeMap.clear();
+}
+CFX_GlyphBitmap* CPDF_Type3Cache::LoadGlyph(FX_DWORD charcode,
+ const CFX_Matrix* pMatrix,
+ FX_FLOAT retinaScaleX,
+ FX_FLOAT retinaScaleY) {
+ _CPDF_UniqueKeyGen keygen;
+ keygen.Generate(
+ 4, FXSYS_round(pMatrix->a * 10000), FXSYS_round(pMatrix->b * 10000),
+ FXSYS_round(pMatrix->c * 10000), FXSYS_round(pMatrix->d * 10000));
+ CFX_ByteStringC FaceGlyphsKey(keygen.m_Key, keygen.m_KeyLen);
+ CPDF_Type3Glyphs* pSizeCache;
+ auto it = m_SizeMap.find(FaceGlyphsKey);
+ if (it == m_SizeMap.end()) {
+ pSizeCache = new CPDF_Type3Glyphs;
+ m_SizeMap[FaceGlyphsKey] = pSizeCache;
+ } else {
+ pSizeCache = it->second;
+ }
+ auto it2 = pSizeCache->m_GlyphMap.find(charcode);
+ if (it2 != pSizeCache->m_GlyphMap.end())
+ return it2->second;
+
+ CFX_GlyphBitmap* pGlyphBitmap =
+ RenderGlyph(pSizeCache, charcode, pMatrix, retinaScaleX, retinaScaleY);
+ pSizeCache->m_GlyphMap[charcode] = pGlyphBitmap;
+ return pGlyphBitmap;
+}
+CPDF_Type3Glyphs::~CPDF_Type3Glyphs() {
+ for (const auto& pair : m_GlyphMap)
+ delete pair.second;
+}
+static int _AdjustBlue(FX_FLOAT pos, int& count, int blues[]) {
+ FX_FLOAT min_distance = 1000000.0f * 1.0f;
+ int closest_pos = -1;
+ for (int i = 0; i < count; i++) {
+ FX_FLOAT distance = (FX_FLOAT)FXSYS_fabs(pos - (FX_FLOAT)blues[i]);
+ if (distance < 1.0f * 80.0f / 100.0f && distance < min_distance) {
+ min_distance = distance;
+ closest_pos = i;
+ }
+ }
+ if (closest_pos >= 0) {
+ return blues[closest_pos];
+ }
+ int new_pos = FXSYS_round(pos);
+ if (count == TYPE3_MAX_BLUES) {
+ return new_pos;
+ }
+ blues[count++] = new_pos;
+ return new_pos;
+}
+void CPDF_Type3Glyphs::AdjustBlue(FX_FLOAT top,
+ FX_FLOAT bottom,
+ int& top_line,
+ int& bottom_line) {
+ top_line = _AdjustBlue(top, m_TopBlueCount, m_TopBlue);
+ bottom_line = _AdjustBlue(bottom, m_BottomBlueCount, m_BottomBlue);
+}
+
+static FX_BOOL _IsScanLine1bpp(uint8_t* pBuf, int width) {
+ int size = width / 8;
+ for (int i = 0; i < size; i++) {
+ if (pBuf[i])
+ return TRUE;
+ }
+ return (width % 8) && (pBuf[width / 8] & (0xff << (8 - width % 8)));
+}
+
+static FX_BOOL _IsScanLine8bpp(uint8_t* pBuf, int width) {
+ for (int i = 0; i < width; i++) {
+ if (pBuf[i] > 0x40)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static int _DetectFirstLastScan(const CFX_DIBitmap* pBitmap, FX_BOOL bFirst) {
+ int height = pBitmap->GetHeight(), pitch = pBitmap->GetPitch(),
+ width = pBitmap->GetWidth();
+ int bpp = pBitmap->GetBPP();
+ if (bpp > 8) {
+ width *= bpp / 8;
+ }
+ uint8_t* pBuf = pBitmap->GetBuffer();
+ int line = bFirst ? 0 : height - 1;
+ int line_step = bFirst ? 1 : -1;
+ int line_end = bFirst ? height : -1;
+ while (line != line_end) {
+ if (bpp == 1) {
+ if (_IsScanLine1bpp(pBuf + line * pitch, width)) {
+ return line;
+ }
+ } else {
+ if (_IsScanLine8bpp(pBuf + line * pitch, width)) {
+ return line;
+ }
+ }
+ line += line_step;
+ }
+ return -1;
+}
+CFX_GlyphBitmap* CPDF_Type3Cache::RenderGlyph(CPDF_Type3Glyphs* pSize,
+ FX_DWORD charcode,
+ const CFX_Matrix* pMatrix,
+ FX_FLOAT retinaScaleX,
+ FX_FLOAT retinaScaleY) {
+ const CPDF_Type3Char* pChar = m_pFont->LoadChar(charcode);
+ if (!pChar || !pChar->m_pBitmap)
+ return nullptr;
+
+ CFX_DIBitmap* pBitmap = pChar->m_pBitmap;
+ CFX_Matrix image_matrix, text_matrix;
+ image_matrix = pChar->m_ImageMatrix;
+ text_matrix.Set(pMatrix->a, pMatrix->b, pMatrix->c, pMatrix->d, 0, 0);
+ image_matrix.Concat(text_matrix);
+ CFX_DIBitmap* pResBitmap = NULL;
+ int left, top;
+ if (FXSYS_fabs(image_matrix.b) < FXSYS_fabs(image_matrix.a) / 100 &&
+ FXSYS_fabs(image_matrix.c) < FXSYS_fabs(image_matrix.d) / 100) {
+ int top_line, bottom_line;
+ top_line = _DetectFirstLastScan(pBitmap, TRUE);
+ bottom_line = _DetectFirstLastScan(pBitmap, FALSE);
+ if (top_line == 0 && bottom_line == pBitmap->GetHeight() - 1) {
+ FX_FLOAT top_y = image_matrix.d + image_matrix.f;
+ FX_FLOAT bottom_y = image_matrix.f;
+ FX_BOOL bFlipped = top_y > bottom_y;
+ if (bFlipped) {
+ FX_FLOAT temp = top_y;
+ top_y = bottom_y;
+ bottom_y = temp;
+ }
+ pSize->AdjustBlue(top_y, bottom_y, top_line, bottom_line);
+ pResBitmap = pBitmap->StretchTo(
+ (int)(FXSYS_round(image_matrix.a) * retinaScaleX),
+ (int)((bFlipped ? top_line - bottom_line : bottom_line - top_line) *
+ retinaScaleY));
+ top = top_line;
+ if (image_matrix.a < 0) {
+ image_matrix.Scale(retinaScaleX, retinaScaleY);
+ left = FXSYS_round(image_matrix.e + image_matrix.a);
+ } else {
+ left = FXSYS_round(image_matrix.e);
+ }
+ } else {
+ }
+ }
+ if (!pResBitmap) {
+ image_matrix.Scale(retinaScaleX, retinaScaleY);
+ pResBitmap = pBitmap->TransformTo(&image_matrix, left, top);
+ }
+ if (!pResBitmap) {
+ return NULL;
+ }
+ CFX_GlyphBitmap* pGlyph = new CFX_GlyphBitmap;
+ pGlyph->m_Left = left;
+ pGlyph->m_Top = -top;
+ pGlyph->m_Bitmap.TakeOver(pResBitmap);
+ delete pResBitmap;
+ return pGlyph;
+}
+void _CPDF_UniqueKeyGen::Generate(int count, ...) {
+ va_list argList;
+ va_start(argList, count);
+ for (int i = 0; i < count; i++) {
+ int p = va_arg(argList, int);
+ ((FX_DWORD*)m_Key)[i] = p;
+ }
+ va_end(argList);
+ m_KeyLen = count * sizeof(FX_DWORD);
+}
+FX_BOOL CPDF_RenderStatus::ProcessText(const CPDF_TextObject* textobj,
+ const CFX_Matrix* pObj2Device,
+ CFX_PathData* pClippingPath) {
+ if (textobj->m_nChars == 0) {
+ return TRUE;
+ }
+ int text_render_mode = textobj->m_TextState.GetObject()->m_TextMode;
+ if (text_render_mode == 3) {
+ return TRUE;
+ }
+ CPDF_Font* pFont = textobj->m_TextState.GetFont();
+ if (pFont->IsType3Font()) {
+ return ProcessType3Text(textobj, pObj2Device);
+ }
+ FX_BOOL bFill = FALSE, bStroke = FALSE, bClip = FALSE;
+ if (pClippingPath) {
+ bClip = TRUE;
+ } else {
+ switch (text_render_mode) {
+ case 0:
+ case 4:
+ bFill = TRUE;
+ break;
+ case 1:
+ case 5:
+ if (!pFont->GetFace() &&
+ !(pFont->GetSubstFont()->m_SubstFlags & FXFONT_SUBST_GLYPHPATH)) {
+ bFill = TRUE;
+ } else {
+ bStroke = TRUE;
+ }
+ break;
+ case 2:
+ case 6:
+ if (!pFont->GetFace() &&
+ !(pFont->GetSubstFont()->m_SubstFlags & FXFONT_SUBST_GLYPHPATH)) {
+ bFill = TRUE;
+ } else {
+ bFill = bStroke = TRUE;
+ }
+ break;
+ case 3:
+ case 7:
+ return TRUE;
+ default:
+ bFill = TRUE;
+ }
+ }
+ FX_ARGB stroke_argb = 0, fill_argb = 0;
+ FX_BOOL bPattern = FALSE;
+ if (bStroke) {
+ if (textobj->m_ColorState.GetStrokeColor()->IsPattern()) {
+ bPattern = TRUE;
+ } else {
+ stroke_argb = GetStrokeArgb(textobj);
+ }
+ }
+ if (bFill) {
+ if (textobj->m_ColorState.GetFillColor()->IsPattern()) {
+ bPattern = TRUE;
+ } else {
+ fill_argb = GetFillArgb(textobj);
+ }
+ }
+ CFX_Matrix text_matrix;
+ textobj->GetTextMatrix(&text_matrix);
+ if (IsAvailableMatrix(text_matrix) == FALSE) {
+ return TRUE;
+ }
+ FX_FLOAT font_size = textobj->m_TextState.GetFontSize();
+ if (bPattern) {
+ DrawTextPathWithPattern(textobj, pObj2Device, pFont, font_size,
+ &text_matrix, bFill, bStroke);
+ return TRUE;
+ }
+ if (bClip || bStroke) {
+ const CFX_Matrix* pDeviceMatrix = pObj2Device;
+ CFX_Matrix device_matrix;
+ if (bStroke) {
+ const FX_FLOAT* pCTM = textobj->m_TextState.GetObject()->m_CTM;
+ if (pCTM[0] != 1.0f || pCTM[3] != 1.0f) {
+ CFX_Matrix ctm(pCTM[0], pCTM[1], pCTM[2], pCTM[3], 0, 0);
+ text_matrix.ConcatInverse(ctm);
+ device_matrix.Copy(ctm);
+ device_matrix.Concat(*pObj2Device);
+ pDeviceMatrix = &device_matrix;
+ }
+ }
+ int flag = 0;
+ if (bStroke && bFill) {
+ flag |= FX_FILL_STROKE;
+ flag |= FX_STROKE_TEXT_MODE;
+ }
+ const CPDF_GeneralStateData* pGeneralData =
+ ((CPDF_PageObject*)textobj)->m_GeneralState;
+ if (pGeneralData && pGeneralData->m_StrokeAdjust) {
+ flag |= FX_STROKE_ADJUST;
+ }
+ if (m_Options.m_Flags & RENDER_NOTEXTSMOOTH) {
+ flag |= FXFILL_NOPATHSMOOTH;
+ }
+ return CPDF_TextRenderer::DrawTextPath(
+ m_pDevice, textobj->m_nChars, textobj->m_pCharCodes,
+ textobj->m_pCharPos, pFont, font_size, &text_matrix, pDeviceMatrix,
+ textobj->m_GraphState, fill_argb, stroke_argb, pClippingPath, flag);
+ }
+ text_matrix.Concat(*pObj2Device);
+ return CPDF_TextRenderer::DrawNormalText(
+ m_pDevice, textobj->m_nChars, textobj->m_pCharCodes, textobj->m_pCharPos,
+ pFont, font_size, &text_matrix, fill_argb, &m_Options);
+}
+CPDF_Type3Cache* CPDF_RenderStatus::GetCachedType3(CPDF_Type3Font* pFont) {
+ if (!pFont->m_pDocument) {
+ return NULL;
+ }
+ pFont->m_pDocument->GetPageData()->GetFont(pFont->GetFontDict(), FALSE);
+ return pFont->m_pDocument->GetRenderData()->GetCachedType3(pFont);
+}
+static void ReleaseCachedType3(CPDF_Type3Font* pFont) {
+ if (!pFont->m_pDocument) {
+ return;
+ }
+ pFont->m_pDocument->GetRenderData()->ReleaseCachedType3(pFont);
+ pFont->m_pDocument->GetPageData()->ReleaseFont(pFont->GetFontDict());
+}
+FX_BOOL CPDF_Type3Char::LoadBitmap(CPDF_RenderContext* pContext) {
+ if (m_pBitmap || !m_pForm) {
+ return TRUE;
+ }
+ if (m_pForm->GetPageObjectList()->size() == 1 && !m_bColored) {
+ auto& pPageObj = m_pForm->GetPageObjectList()->front();
+ if (pPageObj->IsImage()) {
+ m_ImageMatrix = pPageObj->AsImage()->m_Matrix;
+ const CFX_DIBSource* pSource =
+ pPageObj->AsImage()->m_pImage->LoadDIBSource();
+ if (pSource) {
+ m_pBitmap = pSource->Clone();
+ delete pSource;
+ }
+ delete m_pForm;
+ m_pForm = NULL;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+class CPDF_RefType3Cache {
+ public:
+ CPDF_RefType3Cache(CPDF_Type3Font* pType3Font) {
+ m_dwCount = 0;
+ m_pType3Font = pType3Font;
+ }
+ ~CPDF_RefType3Cache() {
+ while (m_dwCount--) {
+ ReleaseCachedType3(m_pType3Font);
+ }
+ }
+ FX_DWORD m_dwCount;
+ CPDF_Type3Font* m_pType3Font;
+};
+FX_BOOL CPDF_RenderStatus::ProcessType3Text(const CPDF_TextObject* textobj,
+ const CFX_Matrix* pObj2Device) {
+ CPDF_Type3Font* pType3Font = textobj->m_TextState.GetFont()->AsType3Font();
+ for (int j = 0; j < m_Type3FontCache.GetSize(); j++) {
+ if (m_Type3FontCache.GetAt(j) == pType3Font)
+ return TRUE;
+ }
+ CFX_Matrix dCTM = m_pDevice->GetCTM();
+ FX_FLOAT sa = FXSYS_fabs(dCTM.a);
+ FX_FLOAT sd = FXSYS_fabs(dCTM.d);
+ CFX_Matrix text_matrix;
+ textobj->GetTextMatrix(&text_matrix);
+ CFX_Matrix char_matrix = pType3Font->GetFontMatrix();
+ FX_FLOAT font_size = textobj->m_TextState.GetFontSize();
+ char_matrix.Scale(font_size, font_size);
+ FX_ARGB fill_argb = GetFillArgb(textobj, TRUE);
+ int fill_alpha = FXARGB_A(fill_argb);
+ int device_class = m_pDevice->GetDeviceClass();
+ FXTEXT_GLYPHPOS* pGlyphAndPos = NULL;
+ if (device_class == FXDC_DISPLAY) {
+ pGlyphAndPos = FX_Alloc(FXTEXT_GLYPHPOS, textobj->m_nChars);
+ } else if (fill_alpha < 255) {
+ return FALSE;
+ }
+ CPDF_RefType3Cache refTypeCache(pType3Font);
+ FX_DWORD* pChars = textobj->m_pCharCodes;
+ if (textobj->m_nChars == 1) {
+ pChars = (FX_DWORD*)(&textobj->m_pCharCodes);
+ }
+ for (int iChar = 0; iChar < textobj->m_nChars; iChar++) {
+ FX_DWORD charcode = pChars[iChar];
+ if (charcode == (FX_DWORD)-1) {
+ continue;
+ }
+ CPDF_Type3Char* pType3Char = pType3Font->LoadChar(charcode);
+ if (!pType3Char) {
+ continue;
+ }
+ CFX_Matrix matrix = char_matrix;
+ matrix.e += iChar ? textobj->m_pCharPos[iChar - 1] : 0;
+ matrix.Concat(text_matrix);
+ matrix.Concat(*pObj2Device);
+ if (!pType3Char->LoadBitmap(m_pContext)) {
+ if (pGlyphAndPos) {
+ for (int i = 0; i < iChar; i++) {
+ FXTEXT_GLYPHPOS& glyph = pGlyphAndPos[i];
+ if (!glyph.m_pGlyph) {
+ continue;
+ }
+ m_pDevice->SetBitMask(&glyph.m_pGlyph->m_Bitmap,
+ glyph.m_OriginX + glyph.m_pGlyph->m_Left,
+ glyph.m_OriginY - glyph.m_pGlyph->m_Top,
+ fill_argb);
+ }
+ FX_Free(pGlyphAndPos);
+ pGlyphAndPos = NULL;
+ }
+ CPDF_GraphicStates* pStates = CloneObjStates(textobj, FALSE);
+ CPDF_RenderOptions Options = m_Options;
+ Options.m_Flags |= RENDER_FORCE_HALFTONE | RENDER_RECT_AA;
+ Options.m_Flags &= ~RENDER_FORCE_DOWNSAMPLE;
+ CPDF_Dictionary* pFormResource = NULL;
+ if (pType3Char->m_pForm && pType3Char->m_pForm->m_pFormDict) {
+ pFormResource =
+ pType3Char->m_pForm->m_pFormDict->GetDictBy("Resources");
+ }
+ if (fill_alpha == 255) {
+ CPDF_RenderStatus status;
+ status.Initialize(m_pContext, m_pDevice, NULL, NULL, this, pStates,
+ &Options, pType3Char->m_pForm->m_Transparency,
+ m_bDropObjects, pFormResource, FALSE, pType3Char,
+ fill_argb);
+ status.m_Type3FontCache.Append(m_Type3FontCache);
+ status.m_Type3FontCache.Add(pType3Font);
+ m_pDevice->SaveState();
+ status.RenderObjectList(pType3Char->m_pForm, &matrix);
+ m_pDevice->RestoreState();
+ } else {
+ CFX_FloatRect rect_f = pType3Char->m_pForm->CalcBoundingBox();
+ rect_f.Transform(&matrix);
+ FX_RECT rect = rect_f.GetOutterRect();
+ CFX_FxgeDevice bitmap_device;
+ if (!bitmap_device.Create((int)(rect.Width() * sa),
+ (int)(rect.Height() * sd), FXDIB_Argb)) {
+ return TRUE;
+ }
+ bitmap_device.GetBitmap()->Clear(0);
+ CPDF_RenderStatus status;
+ status.Initialize(m_pContext, &bitmap_device, NULL, NULL, this, pStates,
+ &Options, pType3Char->m_pForm->m_Transparency,
+ m_bDropObjects, pFormResource, FALSE, pType3Char,
+ fill_argb);
+ status.m_Type3FontCache.Append(m_Type3FontCache);
+ status.m_Type3FontCache.Add(pType3Font);
+ matrix.TranslateI(-rect.left, -rect.top);
+ matrix.Scale(sa, sd);
+ status.RenderObjectList(pType3Char->m_pForm, &matrix);
+ m_pDevice->SetDIBits(bitmap_device.GetBitmap(), rect.left, rect.top);
+ }
+ delete pStates;
+ } else if (pType3Char->m_pBitmap) {
+ if (device_class == FXDC_DISPLAY) {
+ CPDF_Type3Cache* pCache = GetCachedType3(pType3Font);
+ refTypeCache.m_dwCount++;
+ CFX_GlyphBitmap* pBitmap = pCache->LoadGlyph(charcode, &matrix, sa, sd);
+ if (!pBitmap) {
+ continue;
+ }
+ int origin_x = FXSYS_round(matrix.e);
+ int origin_y = FXSYS_round(matrix.f);
+ if (pGlyphAndPos) {
+ pGlyphAndPos[iChar].m_pGlyph = pBitmap;
+ pGlyphAndPos[iChar].m_OriginX = origin_x;
+ pGlyphAndPos[iChar].m_OriginY = origin_y;
+ } else {
+ m_pDevice->SetBitMask(&pBitmap->m_Bitmap, origin_x + pBitmap->m_Left,
+ origin_y - pBitmap->m_Top, fill_argb);
+ }
+ } else {
+ CFX_Matrix image_matrix = pType3Char->m_ImageMatrix;
+ image_matrix.Concat(matrix);
+ CPDF_ImageRenderer renderer;
+ if (renderer.Start(this, pType3Char->m_pBitmap, fill_argb, 255,
+ &image_matrix, 0, FALSE)) {
+ renderer.Continue(NULL);
+ }
+ if (!renderer.m_Result) {
+ return FALSE;
+ }
+ }
+ }
+ }
+ if (pGlyphAndPos) {
+ FX_RECT rect =
+ FXGE_GetGlyphsBBox(pGlyphAndPos, textobj->m_nChars, 0, sa, sd);
+ CFX_DIBitmap bitmap;
+ if (!bitmap.Create((int)(rect.Width() * sa), (int)(rect.Height() * sd),
+ FXDIB_8bppMask)) {
+ FX_Free(pGlyphAndPos);
+ return TRUE;
+ }
+ bitmap.Clear(0);
+ for (int iChar = 0; iChar < textobj->m_nChars; iChar++) {
+ FXTEXT_GLYPHPOS& glyph = pGlyphAndPos[iChar];
+ if (!glyph.m_pGlyph) {
+ continue;
+ }
+ bitmap.TransferBitmap(
+ (int)((glyph.m_OriginX + glyph.m_pGlyph->m_Left - rect.left) * sa),
+ (int)((glyph.m_OriginY - glyph.m_pGlyph->m_Top - rect.top) * sd),
+ glyph.m_pGlyph->m_Bitmap.GetWidth(),
+ glyph.m_pGlyph->m_Bitmap.GetHeight(), &glyph.m_pGlyph->m_Bitmap, 0,
+ 0);
+ }
+ m_pDevice->SetBitMask(&bitmap, rect.left, rect.top, fill_argb);
+ FX_Free(pGlyphAndPos);
+ }
+ return TRUE;
+}
+class CPDF_CharPosList {
+ public:
+ CPDF_CharPosList();
+ ~CPDF_CharPosList();
+ void Load(int nChars,
+ FX_DWORD* pCharCodes,
+ FX_FLOAT* pCharPos,
+ CPDF_Font* pFont,
+ FX_FLOAT font_size);
+ FXTEXT_CHARPOS* m_pCharPos;
+ FX_DWORD m_nChars;
+};
+
+CPDF_CharPosList::CPDF_CharPosList() {
+ m_pCharPos = NULL;
+}
+CPDF_CharPosList::~CPDF_CharPosList() {
+ FX_Free(m_pCharPos);
+}
+void CPDF_CharPosList::Load(int nChars,
+ FX_DWORD* pCharCodes,
+ FX_FLOAT* pCharPos,
+ CPDF_Font* pFont,
+ FX_FLOAT FontSize) {
+ m_pCharPos = FX_Alloc(FXTEXT_CHARPOS, nChars);
+ m_nChars = 0;
+ CPDF_CIDFont* pCIDFont = pFont->AsCIDFont();
+ FX_BOOL bVertWriting = pCIDFont && pCIDFont->IsVertWriting();
+ for (int iChar = 0; iChar < nChars; iChar++) {
+ FX_DWORD CharCode =
+ nChars == 1 ? (FX_DWORD)(uintptr_t)pCharCodes : pCharCodes[iChar];
+ if (CharCode == (FX_DWORD)-1) {
+ continue;
+ }
+ FX_BOOL bVert = FALSE;
+ FXTEXT_CHARPOS& charpos = m_pCharPos[m_nChars++];
+ if (pCIDFont) {
+ charpos.m_bFontStyle = pCIDFont->IsFontStyleFromCharCode(CharCode);
+ }
+ charpos.m_GlyphIndex = pFont->GlyphFromCharCode(CharCode, &bVert);
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
+ charpos.m_ExtGID = pFont->GlyphFromCharCodeExt(CharCode);
+#endif
+ if (!pFont->IsEmbedded() && !pFont->IsCIDFont()) {
+ charpos.m_FontCharWidth = pFont->GetCharWidthF(CharCode);
+ } else {
+ charpos.m_FontCharWidth = 0;
+ }
+ charpos.m_OriginX = iChar ? pCharPos[iChar - 1] : 0;
+ charpos.m_OriginY = 0;
+ charpos.m_bGlyphAdjust = FALSE;
+ if (!pCIDFont) {
+ continue;
+ }
+ FX_WORD CID = pCIDFont->CIDFromCharCode(CharCode);
+ if (bVertWriting) {
+ charpos.m_OriginY = charpos.m_OriginX;
+ charpos.m_OriginX = 0;
+ short vx, vy;
+ pCIDFont->GetVertOrigin(CID, vx, vy);
+ charpos.m_OriginX -= FontSize * vx / 1000;
+ charpos.m_OriginY -= FontSize * vy / 1000;
+ }
+ const uint8_t* pTransform = pCIDFont->GetCIDTransform(CID);
+ if (pTransform && !bVert) {
+ charpos.m_AdjustMatrix[0] = pCIDFont->CIDTransformToFloat(pTransform[0]);
+ charpos.m_AdjustMatrix[2] = pCIDFont->CIDTransformToFloat(pTransform[2]);
+ charpos.m_AdjustMatrix[1] = pCIDFont->CIDTransformToFloat(pTransform[1]);
+ charpos.m_AdjustMatrix[3] = pCIDFont->CIDTransformToFloat(pTransform[3]);
+ charpos.m_OriginX +=
+ pCIDFont->CIDTransformToFloat(pTransform[4]) * FontSize;
+ charpos.m_OriginY +=
+ pCIDFont->CIDTransformToFloat(pTransform[5]) * FontSize;
+ charpos.m_bGlyphAdjust = TRUE;
+ }
+ }
+}
+FX_BOOL CPDF_TextRenderer::DrawTextPath(CFX_RenderDevice* pDevice,
+ int nChars,
+ FX_DWORD* pCharCodes,
+ FX_FLOAT* pCharPos,
+ CPDF_Font* pFont,
+ FX_FLOAT font_size,
+ const CFX_Matrix* pText2User,
+ const CFX_Matrix* pUser2Device,
+ const CFX_GraphStateData* pGraphState,
+ FX_ARGB fill_argb,
+ FX_ARGB stroke_argb,
+ CFX_PathData* pClippingPath,
+ int nFlag) {
+ CFX_FontCache* pCache =
+ pFont->m_pDocument ? pFont->m_pDocument->GetRenderData()->GetFontCache()
+ : NULL;
+ CPDF_CharPosList CharPosList;
+ CharPosList.Load(nChars, pCharCodes, pCharPos, pFont, font_size);
+ return pDevice->DrawTextPath(CharPosList.m_nChars, CharPosList.m_pCharPos,
+ &pFont->m_Font, pCache, font_size, pText2User,
+ pUser2Device, pGraphState, fill_argb,
+ stroke_argb, pClippingPath, nFlag);
+}
+void CPDF_TextRenderer::DrawTextString(CFX_RenderDevice* pDevice,
+ int left,
+ int top,
+ CPDF_Font* pFont,
+ int height,
+ const CFX_ByteString& str,
+ FX_ARGB argb) {
+ FX_RECT font_bbox;
+ pFont->GetFontBBox(font_bbox);
+ FX_FLOAT font_size =
+ (FX_FLOAT)height * 1000.0f / (FX_FLOAT)(font_bbox.top - font_bbox.bottom);
+ FX_FLOAT origin_x = (FX_FLOAT)left;
+ FX_FLOAT origin_y =
+ (FX_FLOAT)top + font_size * (FX_FLOAT)font_bbox.top / 1000.0f;
+ CFX_Matrix matrix(1.0f, 0, 0, -1.0f, 0, 0);
+ DrawTextString(pDevice, origin_x, origin_y, pFont, font_size, &matrix, str,
+ argb);
+}
+void CPDF_TextRenderer::DrawTextString(CFX_RenderDevice* pDevice,
+ FX_FLOAT origin_x,
+ FX_FLOAT origin_y,
+ CPDF_Font* pFont,
+ FX_FLOAT font_size,
+ const CFX_Matrix* pMatrix,
+ const CFX_ByteString& str,
+ FX_ARGB fill_argb,
+ FX_ARGB stroke_argb,
+ const CFX_GraphStateData* pGraphState,
+ const CPDF_RenderOptions* pOptions) {
+ int nChars = pFont->CountChar(str, str.GetLength());
+ if (nChars == 0) {
+ return;
+ }
+ FX_DWORD charcode;
+ int offset = 0;
+ FX_DWORD* pCharCodes;
+ FX_FLOAT* pCharPos;
+ if (nChars == 1) {
+ charcode = pFont->GetNextChar(str, str.GetLength(), offset);
+ pCharCodes = (FX_DWORD*)(uintptr_t)charcode;
+ pCharPos = NULL;
+ } else {
+ pCharCodes = FX_Alloc(FX_DWORD, nChars);
+ pCharPos = FX_Alloc(FX_FLOAT, nChars - 1);
+ FX_FLOAT cur_pos = 0;
+ for (int i = 0; i < nChars; i++) {
+ pCharCodes[i] = pFont->GetNextChar(str, str.GetLength(), offset);
+ if (i) {
+ pCharPos[i - 1] = cur_pos;
+ }
+ cur_pos += pFont->GetCharWidthF(pCharCodes[i]) * font_size / 1000;
+ }
+ }
+ CFX_Matrix matrix;
+ if (pMatrix)
+ matrix = *pMatrix;
+
+ matrix.e = origin_x;
+ matrix.f = origin_y;
+
+ if (!pFont->IsType3Font()) {
+ if (stroke_argb == 0) {
+ DrawNormalText(pDevice, nChars, pCharCodes, pCharPos, pFont, font_size,
+ &matrix, fill_argb, pOptions);
+ } else {
+ DrawTextPath(pDevice, nChars, pCharCodes, pCharPos, pFont, font_size,
+ &matrix, NULL, pGraphState, fill_argb, stroke_argb, NULL);
+ }
+ }
+
+ if (nChars > 1) {
+ FX_Free(pCharCodes);
+ FX_Free(pCharPos);
+ }
+}
+FX_BOOL CPDF_TextRenderer::DrawNormalText(CFX_RenderDevice* pDevice,
+ int nChars,
+ FX_DWORD* pCharCodes,
+ FX_FLOAT* pCharPos,
+ CPDF_Font* pFont,
+ FX_FLOAT font_size,
+ const CFX_Matrix* pText2Device,
+ FX_ARGB fill_argb,
+ const CPDF_RenderOptions* pOptions) {
+ CFX_FontCache* pCache =
+ pFont->m_pDocument ? pFont->m_pDocument->GetRenderData()->GetFontCache()
+ : NULL;
+ CPDF_CharPosList CharPosList;
+ CharPosList.Load(nChars, pCharCodes, pCharPos, pFont, font_size);
+ int FXGE_flags = 0;
+ if (pOptions) {
+ FX_DWORD dwFlags = pOptions->m_Flags;
+ if (dwFlags & RENDER_CLEARTYPE) {
+ FXGE_flags |= FXTEXT_CLEARTYPE;
+ if (dwFlags & RENDER_BGR_STRIPE) {
+ FXGE_flags |= FXTEXT_BGR_STRIPE;
+ }
+ }
+ if (dwFlags & RENDER_NOTEXTSMOOTH) {
+ FXGE_flags |= FXTEXT_NOSMOOTH;
+ }
+ if (dwFlags & RENDER_PRINTGRAPHICTEXT) {
+ FXGE_flags |= FXTEXT_PRINTGRAPHICTEXT;
+ }
+ if (dwFlags & RENDER_NO_NATIVETEXT) {
+ FXGE_flags |= FXTEXT_NO_NATIVETEXT;
+ }
+ if (dwFlags & RENDER_PRINTIMAGETEXT) {
+ FXGE_flags |= FXTEXT_PRINTIMAGETEXT;
+ }
+ } else {
+ FXGE_flags = FXTEXT_CLEARTYPE;
+ }
+ if (pFont->IsCIDFont()) {
+ FXGE_flags |= FXFONT_CIDFONT;
+ }
+ return pDevice->DrawNormalText(CharPosList.m_nChars, CharPosList.m_pCharPos,
+ &pFont->m_Font, pCache, font_size,
+ pText2Device, fill_argb, FXGE_flags);
+}
+void CPDF_RenderStatus::DrawTextPathWithPattern(const CPDF_TextObject* textobj,
+ const CFX_Matrix* pObj2Device,
+ CPDF_Font* pFont,
+ FX_FLOAT font_size,
+ const CFX_Matrix* pTextMatrix,
+ FX_BOOL bFill,
+ FX_BOOL bStroke) {
+ if (!bStroke) {
+ CPDF_PathObject path;
+ CPDF_TextObject* pCopy = textobj->Clone();
+ path.m_bStroke = FALSE;
+ path.m_FillType = FXFILL_WINDING;
+ path.m_ClipPath.AppendTexts(&pCopy, 1);
+ path.m_ColorState = textobj->m_ColorState;
+ path.m_Path.New()->AppendRect(textobj->m_Left, textobj->m_Bottom,
+ textobj->m_Right, textobj->m_Top);
+ path.m_Left = textobj->m_Left;
+ path.m_Bottom = textobj->m_Bottom;
+ path.m_Right = textobj->m_Right;
+ path.m_Top = textobj->m_Top;
+ RenderSingleObject(&path, pObj2Device);
+ return;
+ }
+ CFX_FontCache* pCache;
+ if (pFont->m_pDocument) {
+ pCache = pFont->m_pDocument->GetRenderData()->GetFontCache();
+ } else {
+ pCache = CFX_GEModule::Get()->GetFontCache();
+ }
+ CFX_FaceCache* pFaceCache = pCache->GetCachedFace(&pFont->m_Font);
+ FX_FONTCACHE_DEFINE(pCache, &pFont->m_Font);
+ CPDF_CharPosList CharPosList;
+ CharPosList.Load(textobj->m_nChars, textobj->m_pCharCodes,
+ textobj->m_pCharPos, pFont, font_size);
+ for (FX_DWORD i = 0; i < CharPosList.m_nChars; i++) {
+ FXTEXT_CHARPOS& charpos = CharPosList.m_pCharPos[i];
+ const CFX_PathData* pPath = pFaceCache->LoadGlyphPath(
+ &pFont->m_Font, charpos.m_GlyphIndex, charpos.m_FontCharWidth);
+ if (!pPath) {
+ continue;
+ }
+ CPDF_PathObject path;
+ path.m_GraphState = textobj->m_GraphState;
+ path.m_ColorState = textobj->m_ColorState;
+ CFX_Matrix matrix;
+ if (charpos.m_bGlyphAdjust)
+ matrix.Set(charpos.m_AdjustMatrix[0], charpos.m_AdjustMatrix[1],
+ charpos.m_AdjustMatrix[2], charpos.m_AdjustMatrix[3], 0, 0);
+ matrix.Concat(font_size, 0, 0, font_size, charpos.m_OriginX,
+ charpos.m_OriginY);
+ path.m_Path.New()->Append(pPath, &matrix);
+ path.m_Matrix = *pTextMatrix;
+ path.m_bStroke = bStroke;
+ path.m_FillType = bFill ? FXFILL_WINDING : 0;
+ path.CalcBoundingBox();
+ ProcessPath(&path, pObj2Device);
+ }
+}
diff --git a/core/fpdfapi/fpdf_render/render_int.h b/core/fpdfapi/fpdf_render/render_int.h
new file mode 100644
index 0000000000..c15612466c
--- /dev/null
+++ b/core/fpdfapi/fpdf_render/render_int.h
@@ -0,0 +1,619 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef CORE_FPDFAPI_FPDF_RENDER_RENDER_INT_H_
+#define CORE_FPDFAPI_FPDF_RENDER_RENDER_INT_H_
+
+#include <map>
+#include <memory>
+
+#include "core/include/fpdfapi/fpdf_pageobj.h"
+#include "core/include/fpdfapi/fpdf_render.h"
+
+class CFX_GlyphBitmap;
+class CFX_ImageTransformer;
+class CPDF_ImageCacheEntry;
+class CPDF_ImageLoaderHandle;
+class ICodec_ScanlineDecoder;
+
+#define TYPE3_MAX_BLUES 16
+
+class CPDF_Type3Glyphs {
+ public:
+ CPDF_Type3Glyphs() : m_TopBlueCount(0), m_BottomBlueCount(0) {}
+ ~CPDF_Type3Glyphs();
+ void AdjustBlue(FX_FLOAT top,
+ FX_FLOAT bottom,
+ int& top_line,
+ int& bottom_line);
+
+ std::map<FX_DWORD, CFX_GlyphBitmap*> m_GlyphMap;
+ int m_TopBlue[TYPE3_MAX_BLUES];
+ int m_BottomBlue[TYPE3_MAX_BLUES];
+ int m_TopBlueCount;
+ int m_BottomBlueCount;
+};
+class CPDF_Type3Cache {
+ public:
+ explicit CPDF_Type3Cache(CPDF_Type3Font* pFont) : m_pFont(pFont) {}
+ ~CPDF_Type3Cache();
+
+ CFX_GlyphBitmap* LoadGlyph(FX_DWORD charcode,
+ const CFX_Matrix* pMatrix,
+ FX_FLOAT retinaScaleX = 1.0f,
+ FX_FLOAT retinaScaleY = 1.0f);
+
+ protected:
+ CFX_GlyphBitmap* RenderGlyph(CPDF_Type3Glyphs* pSize,
+ FX_DWORD charcode,
+ const CFX_Matrix* pMatrix,
+ FX_FLOAT retinaScaleX = 1.0f,
+ FX_FLOAT retinaScaleY = 1.0f);
+ CPDF_Type3Font* const m_pFont;
+ std::map<CFX_ByteString, CPDF_Type3Glyphs*> m_SizeMap;
+};
+
+class CPDF_TransferFunc {
+ public:
+ explicit CPDF_TransferFunc(CPDF_Document* pDoc);
+
+ FX_COLORREF TranslateColor(FX_COLORREF src) const;
+ CFX_DIBSource* TranslateImage(const CFX_DIBSource* pSrc,
+ FX_BOOL bAutoDropSrc);
+
+ CPDF_Document* const m_pPDFDoc;
+ FX_BOOL m_bIdentity;
+ uint8_t m_Samples[256 * 3];
+};
+
+class CPDF_DocRenderData {
+ public:
+ CPDF_DocRenderData(CPDF_Document* pPDFDoc = NULL);
+ ~CPDF_DocRenderData();
+ CPDF_Type3Cache* GetCachedType3(CPDF_Type3Font* pFont);
+ CPDF_TransferFunc* GetTransferFunc(CPDF_Object* pObj);
+ CFX_FontCache* GetFontCache() { return m_pFontCache; }
+ void Clear(FX_BOOL bRelease = FALSE);
+ void ReleaseCachedType3(CPDF_Type3Font* pFont);
+ void ReleaseTransferFunc(CPDF_Object* pObj);
+
+ private:
+ using CPDF_Type3CacheMap =
+ std::map<CPDF_Font*, CPDF_CountedObject<CPDF_Type3Cache>*>;
+ using CPDF_TransferFuncMap =
+ std::map<CPDF_Object*, CPDF_CountedObject<CPDF_TransferFunc>*>;
+
+ CPDF_Document* m_pPDFDoc;
+ CFX_FontCache* m_pFontCache;
+ CPDF_Type3CacheMap m_Type3FaceMap;
+ CPDF_TransferFuncMap m_TransferFuncMap;
+};
+
+class IPDF_ObjectRenderer {
+ public:
+ static IPDF_ObjectRenderer* Create();
+ virtual ~IPDF_ObjectRenderer() {}
+ virtual FX_BOOL Start(CPDF_RenderStatus* pRenderStatus,
+ const CPDF_PageObject* pObj,
+ const CFX_Matrix* pObj2Device,
+ FX_BOOL bStdCS,
+ int blendType = FXDIB_BLEND_NORMAL) = 0;
+ virtual FX_BOOL Continue(IFX_Pause* pPause) = 0;
+ FX_BOOL m_Result;
+};
+
+class CPDF_RenderStatus {
+ public:
+ CPDF_RenderStatus();
+ ~CPDF_RenderStatus();
+ FX_BOOL Initialize(class CPDF_RenderContext* pContext,
+ CFX_RenderDevice* pDevice,
+ const CFX_Matrix* pDeviceMatrix,
+ const CPDF_PageObject* pStopObj,
+ const CPDF_RenderStatus* pParentStatus,
+ const CPDF_GraphicStates* pInitialStates,
+ const CPDF_RenderOptions* pOptions,
+ int transparency,
+ FX_BOOL bDropObjects,
+ CPDF_Dictionary* pFormResource = NULL,
+ FX_BOOL bStdCS = FALSE,
+ CPDF_Type3Char* pType3Char = NULL,
+ FX_ARGB fill_color = 0,
+ FX_DWORD GroupFamily = 0,
+ FX_BOOL bLoadMask = FALSE);
+ void RenderObjectList(const CPDF_PageObjectHolder* pObjectHolder,
+ const CFX_Matrix* pObj2Device);
+ void RenderSingleObject(const CPDF_PageObject* pObj,
+ const CFX_Matrix* pObj2Device);
+ FX_BOOL ContinueSingleObject(const CPDF_PageObject* pObj,
+ const CFX_Matrix* pObj2Device,
+ IFX_Pause* pPause);
+ CPDF_RenderContext* GetContext() { return m_pContext; }
+
+ CPDF_RenderOptions m_Options;
+ CPDF_Dictionary* m_pFormResource;
+ CPDF_Dictionary* m_pPageResource;
+ CFX_ArrayTemplate<CPDF_Type3Font*> m_Type3FontCache;
+
+ protected:
+ friend class CPDF_ImageRenderer;
+ friend class CPDF_RenderContext;
+ void ProcessClipPath(CPDF_ClipPath ClipPath, const CFX_Matrix* pObj2Device);
+ void DrawClipPath(CPDF_ClipPath ClipPath, const CFX_Matrix* pObj2Device);
+ FX_BOOL ProcessTransparency(const CPDF_PageObject* PageObj,
+ const CFX_Matrix* pObj2Device);
+ void ProcessObjectNoClip(const CPDF_PageObject* PageObj,
+ const CFX_Matrix* pObj2Device);
+ void DrawObjWithBackground(const CPDF_PageObject* pObj,
+ const CFX_Matrix* pObj2Device);
+ FX_BOOL DrawObjWithBlend(const CPDF_PageObject* pObj,
+ const CFX_Matrix* pObj2Device);
+ FX_BOOL ProcessPath(const CPDF_PathObject* pPathObj,
+ const CFX_Matrix* pObj2Device);
+ void ProcessPathPattern(const CPDF_PathObject* pPathObj,
+ const CFX_Matrix* pObj2Device,
+ int& filltype,
+ FX_BOOL& bStroke);
+ void DrawPathWithPattern(const CPDF_PathObject* pPathObj,
+ const CFX_Matrix* pObj2Device,
+ CPDF_Color* pColor,
+ FX_BOOL bStroke);
+ void DrawTilingPattern(CPDF_TilingPattern* pPattern,
+ const CPDF_PageObject* pPageObj,
+ const CFX_Matrix* pObj2Device,
+ FX_BOOL bStroke);
+ void DrawShadingPattern(CPDF_ShadingPattern* pPattern,
+ const CPDF_PageObject* pPageObj,
+ const CFX_Matrix* pObj2Device,
+ FX_BOOL bStroke);
+ FX_BOOL SelectClipPath(const CPDF_PathObject* pPathObj,
+ const CFX_Matrix* pObj2Device,
+ FX_BOOL bStroke);
+ FX_BOOL ProcessImage(const CPDF_ImageObject* pImageObj,
+ const CFX_Matrix* pObj2Device);
+ FX_BOOL OutputBitmapAlpha(CPDF_ImageObject* pImageObj,
+ const CFX_Matrix* pImage2Device);
+ FX_BOOL OutputImage(CPDF_ImageObject* pImageObj,
+ const CFX_Matrix* pImage2Device);
+ FX_BOOL OutputDIBSource(const CFX_DIBSource* pOutputBitmap,
+ FX_ARGB fill_argb,
+ int bitmap_alpha,
+ const CFX_Matrix* pImage2Device,
+ CPDF_ImageCacheEntry* pImageCache,
+ FX_DWORD flags);
+ void CompositeDIBitmap(CFX_DIBitmap* pDIBitmap,
+ int left,
+ int top,
+ FX_ARGB mask_argb,
+ int bitmap_alpha,
+ int blend_mode,
+ int bIsolated);
+ FX_BOOL ProcessShading(const CPDF_ShadingObject* pShadingObj,
+ const CFX_Matrix* pObj2Device);
+ void DrawShading(CPDF_ShadingPattern* pPattern,
+ CFX_Matrix* pMatrix,
+ FX_RECT& clip_rect,
+ int alpha,
+ FX_BOOL bAlphaMode);
+ FX_BOOL ProcessType3Text(const CPDF_TextObject* textobj,
+ const CFX_Matrix* pObj2Device);
+ FX_BOOL ProcessText(const CPDF_TextObject* textobj,
+ const CFX_Matrix* pObj2Device,
+ CFX_PathData* pClippingPath);
+ void DrawTextPathWithPattern(const CPDF_TextObject* textobj,
+ const CFX_Matrix* pObj2Device,
+ CPDF_Font* pFont,
+ FX_FLOAT font_size,
+ const CFX_Matrix* pTextMatrix,
+ FX_BOOL bFill,
+ FX_BOOL bStroke);
+ FX_BOOL ProcessForm(const CPDF_FormObject* pFormObj,
+ const CFX_Matrix* pObj2Device);
+ CFX_DIBitmap* GetBackdrop(const CPDF_PageObject* pObj,
+ const FX_RECT& rect,
+ int& left,
+ int& top,
+ FX_BOOL bBackAlphaRequired);
+ CFX_DIBitmap* LoadSMask(CPDF_Dictionary* pSMaskDict,
+ FX_RECT* pClipRect,
+ const CFX_Matrix* pMatrix);
+ void Init(CPDF_RenderContext* pParent);
+ static class CPDF_Type3Cache* GetCachedType3(CPDF_Type3Font* pFont);
+ static CPDF_GraphicStates* CloneObjStates(const CPDF_GraphicStates* pPathObj,
+ FX_BOOL bStroke);
+ CPDF_TransferFunc* GetTransferFunc(CPDF_Object* pObject) const;
+ FX_ARGB GetFillArgb(const CPDF_PageObject* pObj,
+ FX_BOOL bType3 = FALSE) const;
+ FX_ARGB GetStrokeArgb(const CPDF_PageObject* pObj) const;
+ CPDF_RenderContext* m_pContext;
+ FX_BOOL m_bStopped;
+ void DitherObjectArea(const CPDF_PageObject* pObj,
+ const CFX_Matrix* pObj2Device);
+ FX_BOOL GetObjectClippedRect(const CPDF_PageObject* pObj,
+ const CFX_Matrix* pObj2Device,
+ FX_BOOL bLogical,
+ FX_RECT& rect) const;
+ void GetScaledMatrix(CFX_Matrix& matrix) const;
+
+ protected:
+ static const int kRenderMaxRecursionDepth = 64;
+ static int s_CurrentRecursionDepth;
+
+ CFX_RenderDevice* m_pDevice;
+ CFX_Matrix m_DeviceMatrix;
+ CPDF_ClipPath m_LastClipPath;
+ const CPDF_PageObject* m_pCurObj;
+ const CPDF_PageObject* m_pStopObj;
+ CPDF_GraphicStates m_InitialStates;
+ int m_HalftoneLimit;
+ std::unique_ptr<IPDF_ObjectRenderer> m_pObjectRenderer;
+ FX_BOOL m_bPrint;
+ int m_Transparency;
+ int m_DitherBits;
+ FX_BOOL m_bDropObjects;
+ FX_BOOL m_bStdCS;
+ FX_DWORD m_GroupFamily;
+ FX_BOOL m_bLoadMask;
+ CPDF_Type3Char* m_pType3Char;
+ FX_ARGB m_T3FillColor;
+ int m_curBlend;
+};
+class CPDF_ImageLoader {
+ public:
+ CPDF_ImageLoader()
+ : m_pBitmap(nullptr),
+ m_pMask(nullptr),
+ m_MatteColor(0),
+ m_bCached(FALSE),
+ m_nDownsampleWidth(0),
+ m_nDownsampleHeight(0) {}
+ ~CPDF_ImageLoader();
+
+ FX_BOOL Start(const CPDF_ImageObject* pImage,
+ CPDF_PageRenderCache* pCache,
+ CPDF_ImageLoaderHandle*& LoadHandle,
+ FX_BOOL bStdCS = FALSE,
+ FX_DWORD GroupFamily = 0,
+ FX_BOOL bLoadMask = FALSE,
+ CPDF_RenderStatus* pRenderStatus = NULL,
+ int32_t nDownsampleWidth = 0,
+ int32_t nDownsampleHeight = 0);
+ FX_BOOL Continue(CPDF_ImageLoaderHandle* LoadHandle, IFX_Pause* pPause);
+
+ CFX_DIBSource* m_pBitmap;
+ CFX_DIBSource* m_pMask;
+ FX_DWORD m_MatteColor;
+ FX_BOOL m_bCached;
+
+ protected:
+ int32_t m_nDownsampleWidth;
+ int32_t m_nDownsampleHeight;
+};
+class CPDF_ImageLoaderHandle {
+ public:
+ CPDF_ImageLoaderHandle();
+ ~CPDF_ImageLoaderHandle();
+
+ FX_BOOL Start(CPDF_ImageLoader* pImageLoader,
+ const CPDF_ImageObject* pImage,
+ CPDF_PageRenderCache* pCache,
+ FX_BOOL bStdCS = FALSE,
+ FX_DWORD GroupFamily = 0,
+ FX_BOOL bLoadMask = FALSE,
+ CPDF_RenderStatus* pRenderStatus = NULL,
+ int32_t nDownsampleWidth = 0,
+ int32_t nDownsampleHeight = 0);
+ FX_BOOL Continue(IFX_Pause* pPause);
+
+ protected:
+ CPDF_ImageLoader* m_pImageLoader;
+ CPDF_PageRenderCache* m_pCache;
+ CPDF_ImageObject* m_pImage;
+ int32_t m_nDownsampleWidth;
+ int32_t m_nDownsampleHeight;
+};
+
+class CPDF_ImageRenderer : public IPDF_ObjectRenderer {
+ public:
+ CPDF_ImageRenderer();
+ ~CPDF_ImageRenderer() override;
+
+ // IPDF_ObjectRenderer
+ FX_BOOL Start(CPDF_RenderStatus* pStatus,
+ const CPDF_PageObject* pObj,
+ const CFX_Matrix* pObj2Device,
+ FX_BOOL bStdCS,
+ int blendType = FXDIB_BLEND_NORMAL) override;
+ FX_BOOL Continue(IFX_Pause* pPause) override;
+
+ FX_BOOL Start(CPDF_RenderStatus* pStatus,
+ const CFX_DIBSource* pDIBSource,
+ FX_ARGB bitmap_argb,
+ int bitmap_alpha,
+ const CFX_Matrix* pImage2Device,
+ FX_DWORD flags,
+ FX_BOOL bStdCS,
+ int blendType = FXDIB_BLEND_NORMAL);
+
+ protected:
+ CPDF_RenderStatus* m_pRenderStatus;
+ const CPDF_ImageObject* m_pImageObject;
+ int m_Status;
+ const CFX_Matrix* m_pObj2Device;
+ CFX_Matrix m_ImageMatrix;
+ CPDF_ImageLoader m_Loader;
+ const CFX_DIBSource* m_pDIBSource;
+ CFX_DIBitmap* m_pClone;
+ int m_BitmapAlpha;
+ FX_BOOL m_bPatternColor;
+ CPDF_Pattern* m_pPattern;
+ FX_ARGB m_FillArgb;
+ FX_DWORD m_Flags;
+ CFX_ImageTransformer* m_pTransformer;
+ void* m_DeviceHandle;
+ CPDF_ImageLoaderHandle* m_LoadHandle;
+ FX_BOOL m_bStdCS;
+ int m_BlendType;
+ FX_BOOL StartBitmapAlpha();
+ FX_BOOL StartDIBSource();
+ FX_BOOL StartRenderDIBSource();
+ FX_BOOL StartLoadDIBSource();
+ FX_BOOL DrawMaskedImage();
+ FX_BOOL DrawPatternImage(const CFX_Matrix* pObj2Device);
+};
+
+class CPDF_ScaledRenderBuffer {
+ public:
+ CPDF_ScaledRenderBuffer();
+ ~CPDF_ScaledRenderBuffer();
+
+ FX_BOOL Initialize(CPDF_RenderContext* pContext,
+ CFX_RenderDevice* pDevice,
+ const FX_RECT& pRect,
+ const CPDF_PageObject* pObj,
+ const CPDF_RenderOptions* pOptions = NULL,
+ int max_dpi = 0);
+ CFX_RenderDevice* GetDevice() {
+ return m_pBitmapDevice ? m_pBitmapDevice.get() : m_pDevice;
+ }
+ CFX_Matrix* GetMatrix() { return &m_Matrix; }
+ void OutputToDevice();
+
+ private:
+ CFX_RenderDevice* m_pDevice;
+ CPDF_RenderContext* m_pContext;
+ FX_RECT m_Rect;
+ const CPDF_PageObject* m_pObject;
+ std::unique_ptr<CFX_FxgeDevice> m_pBitmapDevice;
+ CFX_Matrix m_Matrix;
+};
+
+class CPDF_DeviceBuffer {
+ public:
+ CPDF_DeviceBuffer();
+ ~CPDF_DeviceBuffer();
+ FX_BOOL Initialize(CPDF_RenderContext* pContext,
+ CFX_RenderDevice* pDevice,
+ FX_RECT* pRect,
+ const CPDF_PageObject* pObj,
+ int max_dpi = 0);
+ void OutputToDevice();
+ CFX_DIBitmap* GetBitmap() const { return m_pBitmap.get(); }
+ const CFX_Matrix* GetMatrix() const { return &m_Matrix; }
+
+ private:
+ CFX_RenderDevice* m_pDevice;
+ CPDF_RenderContext* m_pContext;
+ FX_RECT m_Rect;
+ const CPDF_PageObject* m_pObject;
+ std::unique_ptr<CFX_DIBitmap> m_pBitmap;
+ CFX_Matrix m_Matrix;
+};
+
+class CPDF_ImageCacheEntry {
+ public:
+ CPDF_ImageCacheEntry(CPDF_Document* pDoc, CPDF_Stream* pStream);
+ ~CPDF_ImageCacheEntry();
+ void ClearImageData();
+ void Reset(const CFX_DIBitmap* pBitmap);
+ FX_BOOL GetCachedBitmap(CFX_DIBSource*& pBitmap,
+ CFX_DIBSource*& pMask,
+ FX_DWORD& MatteColor,
+ CPDF_Dictionary* pPageResources,
+ FX_BOOL bStdCS = FALSE,
+ FX_DWORD GroupFamily = 0,
+ FX_BOOL bLoadMask = FALSE,
+ CPDF_RenderStatus* pRenderStatus = NULL,
+ int32_t downsampleWidth = 0,
+ int32_t downsampleHeight = 0);
+ FX_DWORD EstimateSize() const { return m_dwCacheSize; }
+ FX_DWORD GetTimeCount() const { return m_dwTimeCount; }
+ CPDF_Stream* GetStream() const { return m_pStream; }
+ void SetTimeCount(FX_DWORD dwTimeCount) { m_dwTimeCount = dwTimeCount; }
+ int m_dwTimeCount;
+
+ public:
+ int StartGetCachedBitmap(CPDF_Dictionary* pFormResources,
+ CPDF_Dictionary* pPageResources,
+ FX_BOOL bStdCS = FALSE,
+ FX_DWORD GroupFamily = 0,
+ FX_BOOL bLoadMask = FALSE,
+ CPDF_RenderStatus* pRenderStatus = NULL,
+ int32_t downsampleWidth = 0,
+ int32_t downsampleHeight = 0);
+ int Continue(IFX_Pause* pPause);
+ CFX_DIBSource* DetachBitmap();
+ CFX_DIBSource* DetachMask();
+ CFX_DIBSource* m_pCurBitmap;
+ CFX_DIBSource* m_pCurMask;
+ FX_DWORD m_MatteColor;
+ CPDF_RenderStatus* m_pRenderStatus;
+
+ protected:
+ void ContinueGetCachedBitmap();
+
+ CPDF_Document* m_pDocument;
+ CPDF_Stream* m_pStream;
+ CFX_DIBSource* m_pCachedBitmap;
+ CFX_DIBSource* m_pCachedMask;
+ FX_DWORD m_dwCacheSize;
+ void CalcSize();
+};
+typedef struct {
+ FX_FLOAT m_DecodeMin;
+ FX_FLOAT m_DecodeStep;
+ int m_ColorKeyMin;
+ int m_ColorKeyMax;
+} DIB_COMP_DATA;
+
+class CPDF_DIBSource : public CFX_DIBSource {
+ public:
+ CPDF_DIBSource();
+ ~CPDF_DIBSource() override;
+
+ FX_BOOL Load(CPDF_Document* pDoc,
+ const CPDF_Stream* pStream,
+ CPDF_DIBSource** ppMask,
+ FX_DWORD* pMatteColor,
+ CPDF_Dictionary* pFormResources,
+ CPDF_Dictionary* pPageResources,
+ FX_BOOL bStdCS = FALSE,
+ FX_DWORD GroupFamily = 0,
+ FX_BOOL bLoadMask = FALSE);
+
+ // CFX_DIBSource
+ FX_BOOL SkipToScanline(int line, IFX_Pause* pPause) const override;
+ uint8_t* GetBuffer() const override;
+ const uint8_t* GetScanline(int line) const override;
+ void DownSampleScanline(int line,
+ uint8_t* dest_scan,
+ int dest_bpp,
+ int dest_width,
+ FX_BOOL bFlipX,
+ int clip_left,
+ int clip_width) const override;
+ void SetDownSampleSize(int dest_width, int dest_height) override;
+
+ CFX_DIBitmap* GetBitmap() const;
+ void ReleaseBitmap(CFX_DIBitmap* pBitmap) const;
+ void ClearImageData();
+ FX_DWORD GetMatteColor() const { return m_MatteColor; }
+
+ int StartLoadDIBSource(CPDF_Document* pDoc,
+ const CPDF_Stream* pStream,
+ FX_BOOL bHasMask,
+ CPDF_Dictionary* pFormResources,
+ CPDF_Dictionary* pPageResources,
+ FX_BOOL bStdCS = FALSE,
+ FX_DWORD GroupFamily = 0,
+ FX_BOOL bLoadMask = FALSE);
+ int ContinueLoadDIBSource(IFX_Pause* pPause);
+ int StratLoadMask();
+ int StartLoadMaskDIB();
+ int ContinueLoadMaskDIB(IFX_Pause* pPause);
+ int ContinueToLoadMask();
+ CPDF_DIBSource* DetachMask();
+
+ private:
+ bool LoadColorInfo(const CPDF_Dictionary* pFormResources,
+ const CPDF_Dictionary* pPageResources);
+ DIB_COMP_DATA* GetDecodeAndMaskArray(FX_BOOL& bDefaultDecode,
+ FX_BOOL& bColorKey);
+ CPDF_DIBSource* LoadMask(FX_DWORD& MatteColor);
+ CPDF_DIBSource* LoadMaskDIB(CPDF_Stream* pMask);
+ void LoadJpxBitmap();
+ void LoadPalette();
+ int CreateDecoder();
+ void TranslateScanline24bpp(uint8_t* dest_scan,
+ const uint8_t* src_scan) const;
+ void ValidateDictParam();
+ void DownSampleScanline1Bit(int orig_Bpp,
+ int dest_Bpp,
+ FX_DWORD src_width,
+ const uint8_t* pSrcLine,
+ uint8_t* dest_scan,
+ int dest_width,
+ FX_BOOL bFlipX,
+ int clip_left,
+ int clip_width) const;
+ void DownSampleScanline8Bit(int orig_Bpp,
+ int dest_Bpp,
+ FX_DWORD src_width,
+ const uint8_t* pSrcLine,
+ uint8_t* dest_scan,
+ int dest_width,
+ FX_BOOL bFlipX,
+ int clip_left,
+ int clip_width) const;
+ void DownSampleScanline32Bit(int orig_Bpp,
+ int dest_Bpp,
+ FX_DWORD src_width,
+ const uint8_t* pSrcLine,
+ uint8_t* dest_scan,
+ int dest_width,
+ FX_BOOL bFlipX,
+ int clip_left,
+ int clip_width) const;
+ FX_BOOL TransMask() const;
+
+ CPDF_Document* m_pDocument;
+ const CPDF_Stream* m_pStream;
+ std::unique_ptr<CPDF_StreamAcc> m_pStreamAcc;
+ const CPDF_Dictionary* m_pDict;
+ CPDF_ColorSpace* m_pColorSpace;
+ FX_DWORD m_Family;
+ FX_DWORD m_bpc;
+ FX_DWORD m_bpc_orig;
+ FX_DWORD m_nComponents;
+ FX_DWORD m_GroupFamily;
+ FX_DWORD m_MatteColor;
+ FX_BOOL m_bLoadMask;
+ FX_BOOL m_bDefaultDecode;
+ FX_BOOL m_bImageMask;
+ FX_BOOL m_bDoBpcCheck;
+ FX_BOOL m_bColorKey;
+ FX_BOOL m_bHasMask;
+ FX_BOOL m_bStdCS;
+ DIB_COMP_DATA* m_pCompData;
+ uint8_t* m_pLineBuf;
+ uint8_t* m_pMaskedLine;
+ std::unique_ptr<CFX_DIBitmap> m_pCachedBitmap;
+ std::unique_ptr<ICodec_ScanlineDecoder> m_pDecoder;
+ void* m_pJbig2Context;
+ CPDF_DIBSource* m_pMask;
+ std::unique_ptr<CPDF_StreamAcc> m_pGlobalStream;
+ CPDF_Stream* m_pMaskStream;
+ int m_Status;
+};
+
+#define FPDF_HUGE_IMAGE_SIZE 60000000
+class CPDF_DIBTransferFunc : public CFX_FilteredDIB {
+ public:
+ CPDF_DIBTransferFunc(const CPDF_TransferFunc* pTransferFunc);
+ ~CPDF_DIBTransferFunc() override;
+
+ // CFX_FilteredDIB
+ FXDIB_Format GetDestFormat() override;
+ FX_ARGB* GetDestPalette() override { return NULL; }
+ void TranslateScanline(uint8_t* dest_buf,
+ const uint8_t* src_buf) const override;
+ void TranslateDownSamples(uint8_t* dest_buf,
+ const uint8_t* src_buf,
+ int pixels,
+ int Bpp) const override;
+
+ const uint8_t* m_RampR;
+ const uint8_t* m_RampG;
+ const uint8_t* m_RampB;
+};
+
+struct _CPDF_UniqueKeyGen {
+ void Generate(int count, ...);
+ FX_CHAR m_Key[128];
+ int m_KeyLen;
+};
+
+#endif // CORE_FPDFAPI_FPDF_RENDER_RENDER_INT_H_