aboutsummaryrefslogtreecommitdiff
path: root/lib/unicode/prop
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-04-28 06:15:55 +0200
committerThomas Voss <mail@thomasvoss.com> 2024-04-28 06:15:55 +0200
commit4ea2dd117e656f950c41f9954bd593c313e34ee2 (patch)
treed239c3426240bb886f129bccf901b0fc970c6073 /lib/unicode/prop
parent50787ecf06854f99eaf4b966abd11d23554bd221 (diff)
Implement boolean props using 2-stage lookup
Diffstat (limited to 'lib/unicode/prop')
-rw-r--r--lib/unicode/prop/uprop_is_ahex.c113
-rw-r--r--lib/unicode/prop/uprop_is_alpha.c1670
-rw-r--r--lib/unicode/prop/uprop_is_bidi_c.c177
-rw-r--r--lib/unicode/prop/uprop_is_bidi_m.c363
-rw-r--r--lib/unicode/prop/uprop_is_cased.c588
-rw-r--r--lib/unicode/prop/uprop_is_ci.c1255
-rw-r--r--lib/unicode/prop/uprop_is_cwcf.c1012
-rw-r--r--lib/unicode/prop/uprop_is_cwcm.c528
-rw-r--r--lib/unicode/prop/uprop_is_cwkcf.c1370
-rw-r--r--lib/unicode/prop/uprop_is_cwl.c992
-rw-r--r--lib/unicode/prop/uprop_is_cwt.c1020
-rw-r--r--lib/unicode/prop/uprop_is_cwu.c1025
-rw-r--r--lib/unicode/prop/uprop_is_dash.c360
-rw-r--r--lib/unicode/prop/uprop_is_dep.c221
-rw-r--r--lib/unicode/prop/uprop_is_di.c362
-rw-r--r--lib/unicode/prop/uprop_is_dia.c945
-rw-r--r--lib/unicode/prop/uprop_is_ebase.c245
-rw-r--r--lib/unicode/prop/uprop_is_ecomp.c225
-rw-r--r--lib/unicode/prop/uprop_is_emod.c206
-rw-r--r--lib/unicode/prop/uprop_is_emoji.c536
-rw-r--r--lib/unicode/prop/uprop_is_epres.c318
-rw-r--r--lib/unicode/prop/uprop_is_ext.c418
-rw-r--r--lib/unicode/prop/uprop_is_extpict.c458
-rw-r--r--lib/unicode/prop/uprop_is_gr_base.c1859
-rw-r--r--lib/unicode/prop/uprop_is_gr_ext.c1142
-rw-r--r--lib/unicode/prop/uprop_is_hex.c181
-rw-r--r--lib/unicode/prop/uprop_is_id_compat_math_continue.c210
-rw-r--r--lib/unicode/prop/uprop_is_id_compat_math_start.c186
-rw-r--r--lib/unicode/prop/uprop_is_idc.c1711
-rw-r--r--lib/unicode/prop/uprop_is_ideo.c386
-rw-r--r--lib/unicode/prop/uprop_is_ids.c1583
-rw-r--r--lib/unicode/prop/uprop_is_idsb.c176
-rw-r--r--lib/unicode/prop/uprop_is_incb.c931
-rw-r--r--lib/unicode/prop/uprop_is_loe.c188
-rw-r--r--lib/unicode/prop/uprop_is_lower.c1099
-rw-r--r--lib/unicode/prop/uprop_is_math.c499
-rw-r--r--lib/unicode/prop/uprop_is_pat_syn.c347
-rw-r--r--lib/unicode/prop/uprop_is_pat_ws.c180
-rw-r--r--lib/unicode/prop/uprop_is_pcm.c188
-rw-r--r--lib/unicode/prop/uprop_is_qmark.c211
-rw-r--r--lib/unicode/prop/uprop_is_radical.c116
-rw-r--r--lib/unicode/prop/uprop_is_sd.c283
-rw-r--r--lib/unicode/prop/uprop_is_sterm.c548
-rw-r--r--lib/unicode/prop/uprop_is_term.c805
-rw-r--r--lib/unicode/prop/uprop_is_uideo.c350
-rw-r--r--lib/unicode/prop/uprop_is_upper.c1070
-rw-r--r--lib/unicode/prop/uprop_is_vs.c185
-rw-r--r--lib/unicode/prop/uprop_is_wspace.c200
-rw-r--r--lib/unicode/prop/uprop_is_xidc.c1720
-rw-r--r--lib/unicode/prop/uprop_is_xids.c1592
50 files changed, 20192 insertions, 12161 deletions
diff --git a/lib/unicode/prop/uprop_is_ahex.c b/lib/unicode/prop/uprop_is_ahex.c
index 81465b1..da6fafe 100644
--- a/lib/unicode/prop/uprop_is_ahex.c
+++ b/lib/unicode/prop/uprop_is_ahex.c
@@ -1,21 +1,116 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
+static constexpr uint8_t stage1[] = {
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+};
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
- 0x7E, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static constexpr unsigned char stage2[][128] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
+ 0x7E, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
bool
uprop_is_ahex(rune ch)
{
- return ch <= LATIN1_MAX && TESTBIT(bs, ch);
+ return TESTBIT(stage2[stage1[ch / 1024]], ch % 1024);
}
diff --git a/lib/unicode/prop/uprop_is_alpha.c b/lib/unicode/prop/uprop_is_alpha.c
index 6fcd435..dcaceb4 100644
--- a/lib/unicode/prop/uprop_is_alpha.c
+++ b/lib/unicode/prop/uprop_is_alpha.c
@@ -1,754 +1,942 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xFE, 0xFF, 0xFF, 0x07, 0xFE, 0xFF, 0xFF, 0x07,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x04,
- 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 2, 2, 2, 3, 4, 5, 2, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 2, 2, 31, 32, 33, 34, 35, 2, 2, 2, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 2, 50, 2, 2, 51, 52,
+ 53, 54, 55, 56, 57, 57, 57, 57, 57, 58, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 2, 59, 60, 61, 62, 57, 57, 57,
+ 63, 64, 65, 66, 57, 57, 57, 57, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 67, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 68, 2, 2, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 81,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 2, 2, 82, 83, 84, 85, 2, 2, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 57, 57, 95, 96, 97, 2, 98, 99, 100, 2, 2, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 57, 57, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 57, 124, 125, 57, 126, 127, 128, 129, 57,
+ 130, 131, 132, 133, 134, 135, 57, 57, 136, 137, 138, 139, 57, 140, 141, 142,
+ 2, 2, 2, 2, 2, 2, 2, 143, 144, 2, 145, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 146,
+ 2, 2, 2, 2, 2, 2, 2, 2, 147, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 2, 2, 2, 2, 148, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 2, 2, 2, 2, 149, 150, 151, 152, 57, 57, 57, 57, 153, 57, 154, 155,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 156,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 157, 56, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 158,
+ 2, 2, 159, 2, 2, 160, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 161, 162, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 163, 164, 165, 2, 2, 166, 167, 168,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 169, 57,
+ 170, 171, 172, 57, 57, 173, 57, 57, 57, 174, 57, 57, 57, 57, 57, 175,
+ 2, 176, 177, 57, 57, 57, 57, 57, 57, 57, 57, 57, 178, 179, 57, 57,
+ 57, 57, 180, 181, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 182, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 183, 2,
+ 184, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 185, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 186, 2, 2, 2, 2, 187, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 2, 2, 2, 2, 188, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 189, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 190, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000100), RUNE_C(0x0002C1)},
- {RUNE_C(0x0002C6), RUNE_C(0x0002D1)},
- {RUNE_C(0x0002E0), RUNE_C(0x0002E4)},
- {RUNE_C(0x0002EC), RUNE_C(0x0002EC)},
- {RUNE_C(0x0002EE), RUNE_C(0x0002EE)},
- {RUNE_C(0x000345), RUNE_C(0x000345)},
- {RUNE_C(0x000370), RUNE_C(0x000374)},
- {RUNE_C(0x000376), RUNE_C(0x000377)},
- {RUNE_C(0x00037A), RUNE_C(0x00037D)},
- {RUNE_C(0x00037F), RUNE_C(0x00037F)},
- {RUNE_C(0x000386), RUNE_C(0x000386)},
- {RUNE_C(0x000388), RUNE_C(0x00038A)},
- {RUNE_C(0x00038C), RUNE_C(0x00038C)},
- {RUNE_C(0x00038E), RUNE_C(0x0003A1)},
- {RUNE_C(0x0003A3), RUNE_C(0x0003F5)},
- {RUNE_C(0x0003F7), RUNE_C(0x000481)},
- {RUNE_C(0x00048A), RUNE_C(0x00052F)},
- {RUNE_C(0x000531), RUNE_C(0x000556)},
- {RUNE_C(0x000559), RUNE_C(0x000559)},
- {RUNE_C(0x000560), RUNE_C(0x000588)},
- {RUNE_C(0x0005B0), RUNE_C(0x0005BD)},
- {RUNE_C(0x0005BF), RUNE_C(0x0005BF)},
- {RUNE_C(0x0005C1), RUNE_C(0x0005C2)},
- {RUNE_C(0x0005C4), RUNE_C(0x0005C5)},
- {RUNE_C(0x0005C7), RUNE_C(0x0005C7)},
- {RUNE_C(0x0005D0), RUNE_C(0x0005EA)},
- {RUNE_C(0x0005EF), RUNE_C(0x0005F2)},
- {RUNE_C(0x000610), RUNE_C(0x00061A)},
- {RUNE_C(0x000620), RUNE_C(0x000657)},
- {RUNE_C(0x000659), RUNE_C(0x00065F)},
- {RUNE_C(0x00066E), RUNE_C(0x0006D3)},
- {RUNE_C(0x0006D5), RUNE_C(0x0006DC)},
- {RUNE_C(0x0006E1), RUNE_C(0x0006E8)},
- {RUNE_C(0x0006ED), RUNE_C(0x0006EF)},
- {RUNE_C(0x0006FA), RUNE_C(0x0006FC)},
- {RUNE_C(0x0006FF), RUNE_C(0x0006FF)},
- {RUNE_C(0x000710), RUNE_C(0x00073F)},
- {RUNE_C(0x00074D), RUNE_C(0x0007B1)},
- {RUNE_C(0x0007CA), RUNE_C(0x0007EA)},
- {RUNE_C(0x0007F4), RUNE_C(0x0007F5)},
- {RUNE_C(0x0007FA), RUNE_C(0x0007FA)},
- {RUNE_C(0x000800), RUNE_C(0x000817)},
- {RUNE_C(0x00081A), RUNE_C(0x00082C)},
- {RUNE_C(0x000840), RUNE_C(0x000858)},
- {RUNE_C(0x000860), RUNE_C(0x00086A)},
- {RUNE_C(0x000870), RUNE_C(0x000887)},
- {RUNE_C(0x000889), RUNE_C(0x00088E)},
- {RUNE_C(0x0008A0), RUNE_C(0x0008C9)},
- {RUNE_C(0x0008D4), RUNE_C(0x0008DF)},
- {RUNE_C(0x0008E3), RUNE_C(0x0008E9)},
- {RUNE_C(0x0008F0), RUNE_C(0x00093B)},
- {RUNE_C(0x00093D), RUNE_C(0x00094C)},
- {RUNE_C(0x00094E), RUNE_C(0x000950)},
- {RUNE_C(0x000955), RUNE_C(0x000963)},
- {RUNE_C(0x000971), RUNE_C(0x000983)},
- {RUNE_C(0x000985), RUNE_C(0x00098C)},
- {RUNE_C(0x00098F), RUNE_C(0x000990)},
- {RUNE_C(0x000993), RUNE_C(0x0009A8)},
- {RUNE_C(0x0009AA), RUNE_C(0x0009B0)},
- {RUNE_C(0x0009B2), RUNE_C(0x0009B2)},
- {RUNE_C(0x0009B6), RUNE_C(0x0009B9)},
- {RUNE_C(0x0009BD), RUNE_C(0x0009C4)},
- {RUNE_C(0x0009C7), RUNE_C(0x0009C8)},
- {RUNE_C(0x0009CB), RUNE_C(0x0009CC)},
- {RUNE_C(0x0009CE), RUNE_C(0x0009CE)},
- {RUNE_C(0x0009D7), RUNE_C(0x0009D7)},
- {RUNE_C(0x0009DC), RUNE_C(0x0009DD)},
- {RUNE_C(0x0009DF), RUNE_C(0x0009E3)},
- {RUNE_C(0x0009F0), RUNE_C(0x0009F1)},
- {RUNE_C(0x0009FC), RUNE_C(0x0009FC)},
- {RUNE_C(0x000A01), RUNE_C(0x000A03)},
- {RUNE_C(0x000A05), RUNE_C(0x000A0A)},
- {RUNE_C(0x000A0F), RUNE_C(0x000A10)},
- {RUNE_C(0x000A13), RUNE_C(0x000A28)},
- {RUNE_C(0x000A2A), RUNE_C(0x000A30)},
- {RUNE_C(0x000A32), RUNE_C(0x000A33)},
- {RUNE_C(0x000A35), RUNE_C(0x000A36)},
- {RUNE_C(0x000A38), RUNE_C(0x000A39)},
- {RUNE_C(0x000A3E), RUNE_C(0x000A42)},
- {RUNE_C(0x000A47), RUNE_C(0x000A48)},
- {RUNE_C(0x000A4B), RUNE_C(0x000A4C)},
- {RUNE_C(0x000A51), RUNE_C(0x000A51)},
- {RUNE_C(0x000A59), RUNE_C(0x000A5C)},
- {RUNE_C(0x000A5E), RUNE_C(0x000A5E)},
- {RUNE_C(0x000A70), RUNE_C(0x000A75)},
- {RUNE_C(0x000A81), RUNE_C(0x000A83)},
- {RUNE_C(0x000A85), RUNE_C(0x000A8D)},
- {RUNE_C(0x000A8F), RUNE_C(0x000A91)},
- {RUNE_C(0x000A93), RUNE_C(0x000AA8)},
- {RUNE_C(0x000AAA), RUNE_C(0x000AB0)},
- {RUNE_C(0x000AB2), RUNE_C(0x000AB3)},
- {RUNE_C(0x000AB5), RUNE_C(0x000AB9)},
- {RUNE_C(0x000ABD), RUNE_C(0x000AC5)},
- {RUNE_C(0x000AC7), RUNE_C(0x000AC9)},
- {RUNE_C(0x000ACB), RUNE_C(0x000ACC)},
- {RUNE_C(0x000AD0), RUNE_C(0x000AD0)},
- {RUNE_C(0x000AE0), RUNE_C(0x000AE3)},
- {RUNE_C(0x000AF9), RUNE_C(0x000AFC)},
- {RUNE_C(0x000B01), RUNE_C(0x000B03)},
- {RUNE_C(0x000B05), RUNE_C(0x000B0C)},
- {RUNE_C(0x000B0F), RUNE_C(0x000B10)},
- {RUNE_C(0x000B13), RUNE_C(0x000B28)},
- {RUNE_C(0x000B2A), RUNE_C(0x000B30)},
- {RUNE_C(0x000B32), RUNE_C(0x000B33)},
- {RUNE_C(0x000B35), RUNE_C(0x000B39)},
- {RUNE_C(0x000B3D), RUNE_C(0x000B44)},
- {RUNE_C(0x000B47), RUNE_C(0x000B48)},
- {RUNE_C(0x000B4B), RUNE_C(0x000B4C)},
- {RUNE_C(0x000B56), RUNE_C(0x000B57)},
- {RUNE_C(0x000B5C), RUNE_C(0x000B5D)},
- {RUNE_C(0x000B5F), RUNE_C(0x000B63)},
- {RUNE_C(0x000B71), RUNE_C(0x000B71)},
- {RUNE_C(0x000B82), RUNE_C(0x000B83)},
- {RUNE_C(0x000B85), RUNE_C(0x000B8A)},
- {RUNE_C(0x000B8E), RUNE_C(0x000B90)},
- {RUNE_C(0x000B92), RUNE_C(0x000B95)},
- {RUNE_C(0x000B99), RUNE_C(0x000B9A)},
- {RUNE_C(0x000B9C), RUNE_C(0x000B9C)},
- {RUNE_C(0x000B9E), RUNE_C(0x000B9F)},
- {RUNE_C(0x000BA3), RUNE_C(0x000BA4)},
- {RUNE_C(0x000BA8), RUNE_C(0x000BAA)},
- {RUNE_C(0x000BAE), RUNE_C(0x000BB9)},
- {RUNE_C(0x000BBE), RUNE_C(0x000BC2)},
- {RUNE_C(0x000BC6), RUNE_C(0x000BC8)},
- {RUNE_C(0x000BCA), RUNE_C(0x000BCC)},
- {RUNE_C(0x000BD0), RUNE_C(0x000BD0)},
- {RUNE_C(0x000BD7), RUNE_C(0x000BD7)},
- {RUNE_C(0x000C00), RUNE_C(0x000C0C)},
- {RUNE_C(0x000C0E), RUNE_C(0x000C10)},
- {RUNE_C(0x000C12), RUNE_C(0x000C28)},
- {RUNE_C(0x000C2A), RUNE_C(0x000C39)},
- {RUNE_C(0x000C3D), RUNE_C(0x000C44)},
- {RUNE_C(0x000C46), RUNE_C(0x000C48)},
- {RUNE_C(0x000C4A), RUNE_C(0x000C4C)},
- {RUNE_C(0x000C55), RUNE_C(0x000C56)},
- {RUNE_C(0x000C58), RUNE_C(0x000C5A)},
- {RUNE_C(0x000C5D), RUNE_C(0x000C5D)},
- {RUNE_C(0x000C60), RUNE_C(0x000C63)},
- {RUNE_C(0x000C80), RUNE_C(0x000C83)},
- {RUNE_C(0x000C85), RUNE_C(0x000C8C)},
- {RUNE_C(0x000C8E), RUNE_C(0x000C90)},
- {RUNE_C(0x000C92), RUNE_C(0x000CA8)},
- {RUNE_C(0x000CAA), RUNE_C(0x000CB3)},
- {RUNE_C(0x000CB5), RUNE_C(0x000CB9)},
- {RUNE_C(0x000CBD), RUNE_C(0x000CC4)},
- {RUNE_C(0x000CC6), RUNE_C(0x000CC8)},
- {RUNE_C(0x000CCA), RUNE_C(0x000CCC)},
- {RUNE_C(0x000CD5), RUNE_C(0x000CD6)},
- {RUNE_C(0x000CDD), RUNE_C(0x000CDE)},
- {RUNE_C(0x000CE0), RUNE_C(0x000CE3)},
- {RUNE_C(0x000CF1), RUNE_C(0x000CF3)},
- {RUNE_C(0x000D00), RUNE_C(0x000D0C)},
- {RUNE_C(0x000D0E), RUNE_C(0x000D10)},
- {RUNE_C(0x000D12), RUNE_C(0x000D3A)},
- {RUNE_C(0x000D3D), RUNE_C(0x000D44)},
- {RUNE_C(0x000D46), RUNE_C(0x000D48)},
- {RUNE_C(0x000D4A), RUNE_C(0x000D4C)},
- {RUNE_C(0x000D4E), RUNE_C(0x000D4E)},
- {RUNE_C(0x000D54), RUNE_C(0x000D57)},
- {RUNE_C(0x000D5F), RUNE_C(0x000D63)},
- {RUNE_C(0x000D7A), RUNE_C(0x000D7F)},
- {RUNE_C(0x000D81), RUNE_C(0x000D83)},
- {RUNE_C(0x000D85), RUNE_C(0x000D96)},
- {RUNE_C(0x000D9A), RUNE_C(0x000DB1)},
- {RUNE_C(0x000DB3), RUNE_C(0x000DBB)},
- {RUNE_C(0x000DBD), RUNE_C(0x000DBD)},
- {RUNE_C(0x000DC0), RUNE_C(0x000DC6)},
- {RUNE_C(0x000DCF), RUNE_C(0x000DD4)},
- {RUNE_C(0x000DD6), RUNE_C(0x000DD6)},
- {RUNE_C(0x000DD8), RUNE_C(0x000DDF)},
- {RUNE_C(0x000DF2), RUNE_C(0x000DF3)},
- {RUNE_C(0x000E01), RUNE_C(0x000E3A)},
- {RUNE_C(0x000E40), RUNE_C(0x000E46)},
- {RUNE_C(0x000E4D), RUNE_C(0x000E4D)},
- {RUNE_C(0x000E81), RUNE_C(0x000E82)},
- {RUNE_C(0x000E84), RUNE_C(0x000E84)},
- {RUNE_C(0x000E86), RUNE_C(0x000E8A)},
- {RUNE_C(0x000E8C), RUNE_C(0x000EA3)},
- {RUNE_C(0x000EA5), RUNE_C(0x000EA5)},
- {RUNE_C(0x000EA7), RUNE_C(0x000EB9)},
- {RUNE_C(0x000EBB), RUNE_C(0x000EBD)},
- {RUNE_C(0x000EC0), RUNE_C(0x000EC4)},
- {RUNE_C(0x000EC6), RUNE_C(0x000EC6)},
- {RUNE_C(0x000ECD), RUNE_C(0x000ECD)},
- {RUNE_C(0x000EDC), RUNE_C(0x000EDF)},
- {RUNE_C(0x000F00), RUNE_C(0x000F00)},
- {RUNE_C(0x000F40), RUNE_C(0x000F47)},
- {RUNE_C(0x000F49), RUNE_C(0x000F6C)},
- {RUNE_C(0x000F71), RUNE_C(0x000F83)},
- {RUNE_C(0x000F88), RUNE_C(0x000F97)},
- {RUNE_C(0x000F99), RUNE_C(0x000FBC)},
- {RUNE_C(0x001000), RUNE_C(0x001036)},
- {RUNE_C(0x001038), RUNE_C(0x001038)},
- {RUNE_C(0x00103B), RUNE_C(0x00103F)},
- {RUNE_C(0x001050), RUNE_C(0x00108F)},
- {RUNE_C(0x00109A), RUNE_C(0x00109D)},
- {RUNE_C(0x0010A0), RUNE_C(0x0010C5)},
- {RUNE_C(0x0010C7), RUNE_C(0x0010C7)},
- {RUNE_C(0x0010CD), RUNE_C(0x0010CD)},
- {RUNE_C(0x0010D0), RUNE_C(0x0010FA)},
- {RUNE_C(0x0010FC), RUNE_C(0x001248)},
- {RUNE_C(0x00124A), RUNE_C(0x00124D)},
- {RUNE_C(0x001250), RUNE_C(0x001256)},
- {RUNE_C(0x001258), RUNE_C(0x001258)},
- {RUNE_C(0x00125A), RUNE_C(0x00125D)},
- {RUNE_C(0x001260), RUNE_C(0x001288)},
- {RUNE_C(0x00128A), RUNE_C(0x00128D)},
- {RUNE_C(0x001290), RUNE_C(0x0012B0)},
- {RUNE_C(0x0012B2), RUNE_C(0x0012B5)},
- {RUNE_C(0x0012B8), RUNE_C(0x0012BE)},
- {RUNE_C(0x0012C0), RUNE_C(0x0012C0)},
- {RUNE_C(0x0012C2), RUNE_C(0x0012C5)},
- {RUNE_C(0x0012C8), RUNE_C(0x0012D6)},
- {RUNE_C(0x0012D8), RUNE_C(0x001310)},
- {RUNE_C(0x001312), RUNE_C(0x001315)},
- {RUNE_C(0x001318), RUNE_C(0x00135A)},
- {RUNE_C(0x001380), RUNE_C(0x00138F)},
- {RUNE_C(0x0013A0), RUNE_C(0x0013F5)},
- {RUNE_C(0x0013F8), RUNE_C(0x0013FD)},
- {RUNE_C(0x001401), RUNE_C(0x00166C)},
- {RUNE_C(0x00166F), RUNE_C(0x00167F)},
- {RUNE_C(0x001681), RUNE_C(0x00169A)},
- {RUNE_C(0x0016A0), RUNE_C(0x0016EA)},
- {RUNE_C(0x0016EE), RUNE_C(0x0016F8)},
- {RUNE_C(0x001700), RUNE_C(0x001713)},
- {RUNE_C(0x00171F), RUNE_C(0x001733)},
- {RUNE_C(0x001740), RUNE_C(0x001753)},
- {RUNE_C(0x001760), RUNE_C(0x00176C)},
- {RUNE_C(0x00176E), RUNE_C(0x001770)},
- {RUNE_C(0x001772), RUNE_C(0x001773)},
- {RUNE_C(0x001780), RUNE_C(0x0017B3)},
- {RUNE_C(0x0017B6), RUNE_C(0x0017C8)},
- {RUNE_C(0x0017D7), RUNE_C(0x0017D7)},
- {RUNE_C(0x0017DC), RUNE_C(0x0017DC)},
- {RUNE_C(0x001820), RUNE_C(0x001878)},
- {RUNE_C(0x001880), RUNE_C(0x0018AA)},
- {RUNE_C(0x0018B0), RUNE_C(0x0018F5)},
- {RUNE_C(0x001900), RUNE_C(0x00191E)},
- {RUNE_C(0x001920), RUNE_C(0x00192B)},
- {RUNE_C(0x001930), RUNE_C(0x001938)},
- {RUNE_C(0x001950), RUNE_C(0x00196D)},
- {RUNE_C(0x001970), RUNE_C(0x001974)},
- {RUNE_C(0x001980), RUNE_C(0x0019AB)},
- {RUNE_C(0x0019B0), RUNE_C(0x0019C9)},
- {RUNE_C(0x001A00), RUNE_C(0x001A1B)},
- {RUNE_C(0x001A20), RUNE_C(0x001A5E)},
- {RUNE_C(0x001A61), RUNE_C(0x001A74)},
- {RUNE_C(0x001AA7), RUNE_C(0x001AA7)},
- {RUNE_C(0x001ABF), RUNE_C(0x001AC0)},
- {RUNE_C(0x001ACC), RUNE_C(0x001ACE)},
- {RUNE_C(0x001B00), RUNE_C(0x001B33)},
- {RUNE_C(0x001B35), RUNE_C(0x001B43)},
- {RUNE_C(0x001B45), RUNE_C(0x001B4C)},
- {RUNE_C(0x001B80), RUNE_C(0x001BA9)},
- {RUNE_C(0x001BAC), RUNE_C(0x001BAF)},
- {RUNE_C(0x001BBA), RUNE_C(0x001BE5)},
- {RUNE_C(0x001BE7), RUNE_C(0x001BF1)},
- {RUNE_C(0x001C00), RUNE_C(0x001C36)},
- {RUNE_C(0x001C4D), RUNE_C(0x001C4F)},
- {RUNE_C(0x001C5A), RUNE_C(0x001C7D)},
- {RUNE_C(0x001C80), RUNE_C(0x001C88)},
- {RUNE_C(0x001C90), RUNE_C(0x001CBA)},
- {RUNE_C(0x001CBD), RUNE_C(0x001CBF)},
- {RUNE_C(0x001CE9), RUNE_C(0x001CEC)},
- {RUNE_C(0x001CEE), RUNE_C(0x001CF3)},
- {RUNE_C(0x001CF5), RUNE_C(0x001CF6)},
- {RUNE_C(0x001CFA), RUNE_C(0x001CFA)},
- {RUNE_C(0x001D00), RUNE_C(0x001DBF)},
- {RUNE_C(0x001DE7), RUNE_C(0x001DF4)},
- {RUNE_C(0x001E00), RUNE_C(0x001F15)},
- {RUNE_C(0x001F18), RUNE_C(0x001F1D)},
- {RUNE_C(0x001F20), RUNE_C(0x001F45)},
- {RUNE_C(0x001F48), RUNE_C(0x001F4D)},
- {RUNE_C(0x001F50), RUNE_C(0x001F57)},
- {RUNE_C(0x001F59), RUNE_C(0x001F59)},
- {RUNE_C(0x001F5B), RUNE_C(0x001F5B)},
- {RUNE_C(0x001F5D), RUNE_C(0x001F5D)},
- {RUNE_C(0x001F5F), RUNE_C(0x001F7D)},
- {RUNE_C(0x001F80), RUNE_C(0x001FB4)},
- {RUNE_C(0x001FB6), RUNE_C(0x001FBC)},
- {RUNE_C(0x001FBE), RUNE_C(0x001FBE)},
- {RUNE_C(0x001FC2), RUNE_C(0x001FC4)},
- {RUNE_C(0x001FC6), RUNE_C(0x001FCC)},
- {RUNE_C(0x001FD0), RUNE_C(0x001FD3)},
- {RUNE_C(0x001FD6), RUNE_C(0x001FDB)},
- {RUNE_C(0x001FE0), RUNE_C(0x001FEC)},
- {RUNE_C(0x001FF2), RUNE_C(0x001FF4)},
- {RUNE_C(0x001FF6), RUNE_C(0x001FFC)},
- {RUNE_C(0x002071), RUNE_C(0x002071)},
- {RUNE_C(0x00207F), RUNE_C(0x00207F)},
- {RUNE_C(0x002090), RUNE_C(0x00209C)},
- {RUNE_C(0x002102), RUNE_C(0x002102)},
- {RUNE_C(0x002107), RUNE_C(0x002107)},
- {RUNE_C(0x00210A), RUNE_C(0x002113)},
- {RUNE_C(0x002115), RUNE_C(0x002115)},
- {RUNE_C(0x002119), RUNE_C(0x00211D)},
- {RUNE_C(0x002124), RUNE_C(0x002124)},
- {RUNE_C(0x002126), RUNE_C(0x002126)},
- {RUNE_C(0x002128), RUNE_C(0x002128)},
- {RUNE_C(0x00212A), RUNE_C(0x00212D)},
- {RUNE_C(0x00212F), RUNE_C(0x002139)},
- {RUNE_C(0x00213C), RUNE_C(0x00213F)},
- {RUNE_C(0x002145), RUNE_C(0x002149)},
- {RUNE_C(0x00214E), RUNE_C(0x00214E)},
- {RUNE_C(0x002160), RUNE_C(0x002188)},
- {RUNE_C(0x0024B6), RUNE_C(0x0024E9)},
- {RUNE_C(0x002C00), RUNE_C(0x002CE4)},
- {RUNE_C(0x002CEB), RUNE_C(0x002CEE)},
- {RUNE_C(0x002CF2), RUNE_C(0x002CF3)},
- {RUNE_C(0x002D00), RUNE_C(0x002D25)},
- {RUNE_C(0x002D27), RUNE_C(0x002D27)},
- {RUNE_C(0x002D2D), RUNE_C(0x002D2D)},
- {RUNE_C(0x002D30), RUNE_C(0x002D67)},
- {RUNE_C(0x002D6F), RUNE_C(0x002D6F)},
- {RUNE_C(0x002D80), RUNE_C(0x002D96)},
- {RUNE_C(0x002DA0), RUNE_C(0x002DA6)},
- {RUNE_C(0x002DA8), RUNE_C(0x002DAE)},
- {RUNE_C(0x002DB0), RUNE_C(0x002DB6)},
- {RUNE_C(0x002DB8), RUNE_C(0x002DBE)},
- {RUNE_C(0x002DC0), RUNE_C(0x002DC6)},
- {RUNE_C(0x002DC8), RUNE_C(0x002DCE)},
- {RUNE_C(0x002DD0), RUNE_C(0x002DD6)},
- {RUNE_C(0x002DD8), RUNE_C(0x002DDE)},
- {RUNE_C(0x002DE0), RUNE_C(0x002DFF)},
- {RUNE_C(0x002E2F), RUNE_C(0x002E2F)},
- {RUNE_C(0x003005), RUNE_C(0x003007)},
- {RUNE_C(0x003021), RUNE_C(0x003029)},
- {RUNE_C(0x003031), RUNE_C(0x003035)},
- {RUNE_C(0x003038), RUNE_C(0x00303C)},
- {RUNE_C(0x003041), RUNE_C(0x003096)},
- {RUNE_C(0x00309D), RUNE_C(0x00309F)},
- {RUNE_C(0x0030A1), RUNE_C(0x0030FA)},
- {RUNE_C(0x0030FC), RUNE_C(0x0030FF)},
- {RUNE_C(0x003105), RUNE_C(0x00312F)},
- {RUNE_C(0x003131), RUNE_C(0x00318E)},
- {RUNE_C(0x0031A0), RUNE_C(0x0031BF)},
- {RUNE_C(0x0031F0), RUNE_C(0x0031FF)},
- {RUNE_C(0x003400), RUNE_C(0x004DBF)},
- {RUNE_C(0x004E00), RUNE_C(0x00A48C)},
- {RUNE_C(0x00A4D0), RUNE_C(0x00A4FD)},
- {RUNE_C(0x00A500), RUNE_C(0x00A60C)},
- {RUNE_C(0x00A610), RUNE_C(0x00A61F)},
- {RUNE_C(0x00A62A), RUNE_C(0x00A62B)},
- {RUNE_C(0x00A640), RUNE_C(0x00A66E)},
- {RUNE_C(0x00A674), RUNE_C(0x00A67B)},
- {RUNE_C(0x00A67F), RUNE_C(0x00A6EF)},
- {RUNE_C(0x00A717), RUNE_C(0x00A71F)},
- {RUNE_C(0x00A722), RUNE_C(0x00A788)},
- {RUNE_C(0x00A78B), RUNE_C(0x00A7CA)},
- {RUNE_C(0x00A7D0), RUNE_C(0x00A7D1)},
- {RUNE_C(0x00A7D3), RUNE_C(0x00A7D3)},
- {RUNE_C(0x00A7D5), RUNE_C(0x00A7D9)},
- {RUNE_C(0x00A7F2), RUNE_C(0x00A805)},
- {RUNE_C(0x00A807), RUNE_C(0x00A827)},
- {RUNE_C(0x00A840), RUNE_C(0x00A873)},
- {RUNE_C(0x00A880), RUNE_C(0x00A8C3)},
- {RUNE_C(0x00A8C5), RUNE_C(0x00A8C5)},
- {RUNE_C(0x00A8F2), RUNE_C(0x00A8F7)},
- {RUNE_C(0x00A8FB), RUNE_C(0x00A8FB)},
- {RUNE_C(0x00A8FD), RUNE_C(0x00A8FF)},
- {RUNE_C(0x00A90A), RUNE_C(0x00A92A)},
- {RUNE_C(0x00A930), RUNE_C(0x00A952)},
- {RUNE_C(0x00A960), RUNE_C(0x00A97C)},
- {RUNE_C(0x00A980), RUNE_C(0x00A9B2)},
- {RUNE_C(0x00A9B4), RUNE_C(0x00A9BF)},
- {RUNE_C(0x00A9CF), RUNE_C(0x00A9CF)},
- {RUNE_C(0x00A9E0), RUNE_C(0x00A9EF)},
- {RUNE_C(0x00A9FA), RUNE_C(0x00A9FE)},
- {RUNE_C(0x00AA00), RUNE_C(0x00AA36)},
- {RUNE_C(0x00AA40), RUNE_C(0x00AA4D)},
- {RUNE_C(0x00AA60), RUNE_C(0x00AA76)},
- {RUNE_C(0x00AA7A), RUNE_C(0x00AABE)},
- {RUNE_C(0x00AAC0), RUNE_C(0x00AAC0)},
- {RUNE_C(0x00AAC2), RUNE_C(0x00AAC2)},
- {RUNE_C(0x00AADB), RUNE_C(0x00AADD)},
- {RUNE_C(0x00AAE0), RUNE_C(0x00AAEF)},
- {RUNE_C(0x00AAF2), RUNE_C(0x00AAF5)},
- {RUNE_C(0x00AB01), RUNE_C(0x00AB06)},
- {RUNE_C(0x00AB09), RUNE_C(0x00AB0E)},
- {RUNE_C(0x00AB11), RUNE_C(0x00AB16)},
- {RUNE_C(0x00AB20), RUNE_C(0x00AB26)},
- {RUNE_C(0x00AB28), RUNE_C(0x00AB2E)},
- {RUNE_C(0x00AB30), RUNE_C(0x00AB5A)},
- {RUNE_C(0x00AB5C), RUNE_C(0x00AB69)},
- {RUNE_C(0x00AB70), RUNE_C(0x00ABEA)},
- {RUNE_C(0x00AC00), RUNE_C(0x00D7A3)},
- {RUNE_C(0x00D7B0), RUNE_C(0x00D7C6)},
- {RUNE_C(0x00D7CB), RUNE_C(0x00D7FB)},
- {RUNE_C(0x00F900), RUNE_C(0x00FA6D)},
- {RUNE_C(0x00FA70), RUNE_C(0x00FAD9)},
- {RUNE_C(0x00FB00), RUNE_C(0x00FB06)},
- {RUNE_C(0x00FB13), RUNE_C(0x00FB17)},
- {RUNE_C(0x00FB1D), RUNE_C(0x00FB28)},
- {RUNE_C(0x00FB2A), RUNE_C(0x00FB36)},
- {RUNE_C(0x00FB38), RUNE_C(0x00FB3C)},
- {RUNE_C(0x00FB3E), RUNE_C(0x00FB3E)},
- {RUNE_C(0x00FB40), RUNE_C(0x00FB41)},
- {RUNE_C(0x00FB43), RUNE_C(0x00FB44)},
- {RUNE_C(0x00FB46), RUNE_C(0x00FBB1)},
- {RUNE_C(0x00FBD3), RUNE_C(0x00FD3D)},
- {RUNE_C(0x00FD50), RUNE_C(0x00FD8F)},
- {RUNE_C(0x00FD92), RUNE_C(0x00FDC7)},
- {RUNE_C(0x00FDF0), RUNE_C(0x00FDFB)},
- {RUNE_C(0x00FE70), RUNE_C(0x00FE74)},
- {RUNE_C(0x00FE76), RUNE_C(0x00FEFC)},
- {RUNE_C(0x00FF21), RUNE_C(0x00FF3A)},
- {RUNE_C(0x00FF41), RUNE_C(0x00FF5A)},
- {RUNE_C(0x00FF66), RUNE_C(0x00FFBE)},
- {RUNE_C(0x00FFC2), RUNE_C(0x00FFC7)},
- {RUNE_C(0x00FFCA), RUNE_C(0x00FFCF)},
- {RUNE_C(0x00FFD2), RUNE_C(0x00FFD7)},
- {RUNE_C(0x00FFDA), RUNE_C(0x00FFDC)},
- {RUNE_C(0x010000), RUNE_C(0x01000B)},
- {RUNE_C(0x01000D), RUNE_C(0x010026)},
- {RUNE_C(0x010028), RUNE_C(0x01003A)},
- {RUNE_C(0x01003C), RUNE_C(0x01003D)},
- {RUNE_C(0x01003F), RUNE_C(0x01004D)},
- {RUNE_C(0x010050), RUNE_C(0x01005D)},
- {RUNE_C(0x010080), RUNE_C(0x0100FA)},
- {RUNE_C(0x010140), RUNE_C(0x010174)},
- {RUNE_C(0x010280), RUNE_C(0x01029C)},
- {RUNE_C(0x0102A0), RUNE_C(0x0102D0)},
- {RUNE_C(0x010300), RUNE_C(0x01031F)},
- {RUNE_C(0x01032D), RUNE_C(0x01034A)},
- {RUNE_C(0x010350), RUNE_C(0x01037A)},
- {RUNE_C(0x010380), RUNE_C(0x01039D)},
- {RUNE_C(0x0103A0), RUNE_C(0x0103C3)},
- {RUNE_C(0x0103C8), RUNE_C(0x0103CF)},
- {RUNE_C(0x0103D1), RUNE_C(0x0103D5)},
- {RUNE_C(0x010400), RUNE_C(0x01049D)},
- {RUNE_C(0x0104B0), RUNE_C(0x0104D3)},
- {RUNE_C(0x0104D8), RUNE_C(0x0104FB)},
- {RUNE_C(0x010500), RUNE_C(0x010527)},
- {RUNE_C(0x010530), RUNE_C(0x010563)},
- {RUNE_C(0x010570), RUNE_C(0x01057A)},
- {RUNE_C(0x01057C), RUNE_C(0x01058A)},
- {RUNE_C(0x01058C), RUNE_C(0x010592)},
- {RUNE_C(0x010594), RUNE_C(0x010595)},
- {RUNE_C(0x010597), RUNE_C(0x0105A1)},
- {RUNE_C(0x0105A3), RUNE_C(0x0105B1)},
- {RUNE_C(0x0105B3), RUNE_C(0x0105B9)},
- {RUNE_C(0x0105BB), RUNE_C(0x0105BC)},
- {RUNE_C(0x010600), RUNE_C(0x010736)},
- {RUNE_C(0x010740), RUNE_C(0x010755)},
- {RUNE_C(0x010760), RUNE_C(0x010767)},
- {RUNE_C(0x010780), RUNE_C(0x010785)},
- {RUNE_C(0x010787), RUNE_C(0x0107B0)},
- {RUNE_C(0x0107B2), RUNE_C(0x0107BA)},
- {RUNE_C(0x010800), RUNE_C(0x010805)},
- {RUNE_C(0x010808), RUNE_C(0x010808)},
- {RUNE_C(0x01080A), RUNE_C(0x010835)},
- {RUNE_C(0x010837), RUNE_C(0x010838)},
- {RUNE_C(0x01083C), RUNE_C(0x01083C)},
- {RUNE_C(0x01083F), RUNE_C(0x010855)},
- {RUNE_C(0x010860), RUNE_C(0x010876)},
- {RUNE_C(0x010880), RUNE_C(0x01089E)},
- {RUNE_C(0x0108E0), RUNE_C(0x0108F2)},
- {RUNE_C(0x0108F4), RUNE_C(0x0108F5)},
- {RUNE_C(0x010900), RUNE_C(0x010915)},
- {RUNE_C(0x010920), RUNE_C(0x010939)},
- {RUNE_C(0x010980), RUNE_C(0x0109B7)},
- {RUNE_C(0x0109BE), RUNE_C(0x0109BF)},
- {RUNE_C(0x010A00), RUNE_C(0x010A03)},
- {RUNE_C(0x010A05), RUNE_C(0x010A06)},
- {RUNE_C(0x010A0C), RUNE_C(0x010A13)},
- {RUNE_C(0x010A15), RUNE_C(0x010A17)},
- {RUNE_C(0x010A19), RUNE_C(0x010A35)},
- {RUNE_C(0x010A60), RUNE_C(0x010A7C)},
- {RUNE_C(0x010A80), RUNE_C(0x010A9C)},
- {RUNE_C(0x010AC0), RUNE_C(0x010AC7)},
- {RUNE_C(0x010AC9), RUNE_C(0x010AE4)},
- {RUNE_C(0x010B00), RUNE_C(0x010B35)},
- {RUNE_C(0x010B40), RUNE_C(0x010B55)},
- {RUNE_C(0x010B60), RUNE_C(0x010B72)},
- {RUNE_C(0x010B80), RUNE_C(0x010B91)},
- {RUNE_C(0x010C00), RUNE_C(0x010C48)},
- {RUNE_C(0x010C80), RUNE_C(0x010CB2)},
- {RUNE_C(0x010CC0), RUNE_C(0x010CF2)},
- {RUNE_C(0x010D00), RUNE_C(0x010D27)},
- {RUNE_C(0x010E80), RUNE_C(0x010EA9)},
- {RUNE_C(0x010EAB), RUNE_C(0x010EAC)},
- {RUNE_C(0x010EB0), RUNE_C(0x010EB1)},
- {RUNE_C(0x010F00), RUNE_C(0x010F1C)},
- {RUNE_C(0x010F27), RUNE_C(0x010F27)},
- {RUNE_C(0x010F30), RUNE_C(0x010F45)},
- {RUNE_C(0x010F70), RUNE_C(0x010F81)},
- {RUNE_C(0x010FB0), RUNE_C(0x010FC4)},
- {RUNE_C(0x010FE0), RUNE_C(0x010FF6)},
- {RUNE_C(0x011000), RUNE_C(0x011045)},
- {RUNE_C(0x011071), RUNE_C(0x011075)},
- {RUNE_C(0x011080), RUNE_C(0x0110B8)},
- {RUNE_C(0x0110C2), RUNE_C(0x0110C2)},
- {RUNE_C(0x0110D0), RUNE_C(0x0110E8)},
- {RUNE_C(0x011100), RUNE_C(0x011132)},
- {RUNE_C(0x011144), RUNE_C(0x011147)},
- {RUNE_C(0x011150), RUNE_C(0x011172)},
- {RUNE_C(0x011176), RUNE_C(0x011176)},
- {RUNE_C(0x011180), RUNE_C(0x0111BF)},
- {RUNE_C(0x0111C1), RUNE_C(0x0111C4)},
- {RUNE_C(0x0111CE), RUNE_C(0x0111CF)},
- {RUNE_C(0x0111DA), RUNE_C(0x0111DA)},
- {RUNE_C(0x0111DC), RUNE_C(0x0111DC)},
- {RUNE_C(0x011200), RUNE_C(0x011211)},
- {RUNE_C(0x011213), RUNE_C(0x011234)},
- {RUNE_C(0x011237), RUNE_C(0x011237)},
- {RUNE_C(0x01123E), RUNE_C(0x011241)},
- {RUNE_C(0x011280), RUNE_C(0x011286)},
- {RUNE_C(0x011288), RUNE_C(0x011288)},
- {RUNE_C(0x01128A), RUNE_C(0x01128D)},
- {RUNE_C(0x01128F), RUNE_C(0x01129D)},
- {RUNE_C(0x01129F), RUNE_C(0x0112A8)},
- {RUNE_C(0x0112B0), RUNE_C(0x0112E8)},
- {RUNE_C(0x011300), RUNE_C(0x011303)},
- {RUNE_C(0x011305), RUNE_C(0x01130C)},
- {RUNE_C(0x01130F), RUNE_C(0x011310)},
- {RUNE_C(0x011313), RUNE_C(0x011328)},
- {RUNE_C(0x01132A), RUNE_C(0x011330)},
- {RUNE_C(0x011332), RUNE_C(0x011333)},
- {RUNE_C(0x011335), RUNE_C(0x011339)},
- {RUNE_C(0x01133D), RUNE_C(0x011344)},
- {RUNE_C(0x011347), RUNE_C(0x011348)},
- {RUNE_C(0x01134B), RUNE_C(0x01134C)},
- {RUNE_C(0x011350), RUNE_C(0x011350)},
- {RUNE_C(0x011357), RUNE_C(0x011357)},
- {RUNE_C(0x01135D), RUNE_C(0x011363)},
- {RUNE_C(0x011400), RUNE_C(0x011441)},
- {RUNE_C(0x011443), RUNE_C(0x011445)},
- {RUNE_C(0x011447), RUNE_C(0x01144A)},
- {RUNE_C(0x01145F), RUNE_C(0x011461)},
- {RUNE_C(0x011480), RUNE_C(0x0114C1)},
- {RUNE_C(0x0114C4), RUNE_C(0x0114C5)},
- {RUNE_C(0x0114C7), RUNE_C(0x0114C7)},
- {RUNE_C(0x011580), RUNE_C(0x0115B5)},
- {RUNE_C(0x0115B8), RUNE_C(0x0115BE)},
- {RUNE_C(0x0115D8), RUNE_C(0x0115DD)},
- {RUNE_C(0x011600), RUNE_C(0x01163E)},
- {RUNE_C(0x011640), RUNE_C(0x011640)},
- {RUNE_C(0x011644), RUNE_C(0x011644)},
- {RUNE_C(0x011680), RUNE_C(0x0116B5)},
- {RUNE_C(0x0116B8), RUNE_C(0x0116B8)},
- {RUNE_C(0x011700), RUNE_C(0x01171A)},
- {RUNE_C(0x01171D), RUNE_C(0x01172A)},
- {RUNE_C(0x011740), RUNE_C(0x011746)},
- {RUNE_C(0x011800), RUNE_C(0x011838)},
- {RUNE_C(0x0118A0), RUNE_C(0x0118DF)},
- {RUNE_C(0x0118FF), RUNE_C(0x011906)},
- {RUNE_C(0x011909), RUNE_C(0x011909)},
- {RUNE_C(0x01190C), RUNE_C(0x011913)},
- {RUNE_C(0x011915), RUNE_C(0x011916)},
- {RUNE_C(0x011918), RUNE_C(0x011935)},
- {RUNE_C(0x011937), RUNE_C(0x011938)},
- {RUNE_C(0x01193B), RUNE_C(0x01193C)},
- {RUNE_C(0x01193F), RUNE_C(0x011942)},
- {RUNE_C(0x0119A0), RUNE_C(0x0119A7)},
- {RUNE_C(0x0119AA), RUNE_C(0x0119D7)},
- {RUNE_C(0x0119DA), RUNE_C(0x0119DF)},
- {RUNE_C(0x0119E1), RUNE_C(0x0119E1)},
- {RUNE_C(0x0119E3), RUNE_C(0x0119E4)},
- {RUNE_C(0x011A00), RUNE_C(0x011A32)},
- {RUNE_C(0x011A35), RUNE_C(0x011A3E)},
- {RUNE_C(0x011A50), RUNE_C(0x011A97)},
- {RUNE_C(0x011A9D), RUNE_C(0x011A9D)},
- {RUNE_C(0x011AB0), RUNE_C(0x011AF8)},
- {RUNE_C(0x011C00), RUNE_C(0x011C08)},
- {RUNE_C(0x011C0A), RUNE_C(0x011C36)},
- {RUNE_C(0x011C38), RUNE_C(0x011C3E)},
- {RUNE_C(0x011C40), RUNE_C(0x011C40)},
- {RUNE_C(0x011C72), RUNE_C(0x011C8F)},
- {RUNE_C(0x011C92), RUNE_C(0x011CA7)},
- {RUNE_C(0x011CA9), RUNE_C(0x011CB6)},
- {RUNE_C(0x011D00), RUNE_C(0x011D06)},
- {RUNE_C(0x011D08), RUNE_C(0x011D09)},
- {RUNE_C(0x011D0B), RUNE_C(0x011D36)},
- {RUNE_C(0x011D3A), RUNE_C(0x011D3A)},
- {RUNE_C(0x011D3C), RUNE_C(0x011D3D)},
- {RUNE_C(0x011D3F), RUNE_C(0x011D41)},
- {RUNE_C(0x011D43), RUNE_C(0x011D43)},
- {RUNE_C(0x011D46), RUNE_C(0x011D47)},
- {RUNE_C(0x011D60), RUNE_C(0x011D65)},
- {RUNE_C(0x011D67), RUNE_C(0x011D68)},
- {RUNE_C(0x011D6A), RUNE_C(0x011D8E)},
- {RUNE_C(0x011D90), RUNE_C(0x011D91)},
- {RUNE_C(0x011D93), RUNE_C(0x011D96)},
- {RUNE_C(0x011D98), RUNE_C(0x011D98)},
- {RUNE_C(0x011EE0), RUNE_C(0x011EF6)},
- {RUNE_C(0x011F00), RUNE_C(0x011F10)},
- {RUNE_C(0x011F12), RUNE_C(0x011F3A)},
- {RUNE_C(0x011F3E), RUNE_C(0x011F40)},
- {RUNE_C(0x011FB0), RUNE_C(0x011FB0)},
- {RUNE_C(0x012000), RUNE_C(0x012399)},
- {RUNE_C(0x012400), RUNE_C(0x01246E)},
- {RUNE_C(0x012480), RUNE_C(0x012543)},
- {RUNE_C(0x012F90), RUNE_C(0x012FF0)},
- {RUNE_C(0x013000), RUNE_C(0x01342F)},
- {RUNE_C(0x013441), RUNE_C(0x013446)},
- {RUNE_C(0x014400), RUNE_C(0x014646)},
- {RUNE_C(0x016800), RUNE_C(0x016A38)},
- {RUNE_C(0x016A40), RUNE_C(0x016A5E)},
- {RUNE_C(0x016A70), RUNE_C(0x016ABE)},
- {RUNE_C(0x016AD0), RUNE_C(0x016AED)},
- {RUNE_C(0x016B00), RUNE_C(0x016B2F)},
- {RUNE_C(0x016B40), RUNE_C(0x016B43)},
- {RUNE_C(0x016B63), RUNE_C(0x016B77)},
- {RUNE_C(0x016B7D), RUNE_C(0x016B8F)},
- {RUNE_C(0x016E40), RUNE_C(0x016E7F)},
- {RUNE_C(0x016F00), RUNE_C(0x016F4A)},
- {RUNE_C(0x016F4F), RUNE_C(0x016F87)},
- {RUNE_C(0x016F8F), RUNE_C(0x016F9F)},
- {RUNE_C(0x016FE0), RUNE_C(0x016FE1)},
- {RUNE_C(0x016FE3), RUNE_C(0x016FE3)},
- {RUNE_C(0x016FF0), RUNE_C(0x016FF1)},
- {RUNE_C(0x017000), RUNE_C(0x0187F7)},
- {RUNE_C(0x018800), RUNE_C(0x018CD5)},
- {RUNE_C(0x018D00), RUNE_C(0x018D08)},
- {RUNE_C(0x01AFF0), RUNE_C(0x01AFF3)},
- {RUNE_C(0x01AFF5), RUNE_C(0x01AFFB)},
- {RUNE_C(0x01AFFD), RUNE_C(0x01AFFE)},
- {RUNE_C(0x01B000), RUNE_C(0x01B122)},
- {RUNE_C(0x01B132), RUNE_C(0x01B132)},
- {RUNE_C(0x01B150), RUNE_C(0x01B152)},
- {RUNE_C(0x01B155), RUNE_C(0x01B155)},
- {RUNE_C(0x01B164), RUNE_C(0x01B167)},
- {RUNE_C(0x01B170), RUNE_C(0x01B2FB)},
- {RUNE_C(0x01BC00), RUNE_C(0x01BC6A)},
- {RUNE_C(0x01BC70), RUNE_C(0x01BC7C)},
- {RUNE_C(0x01BC80), RUNE_C(0x01BC88)},
- {RUNE_C(0x01BC90), RUNE_C(0x01BC99)},
- {RUNE_C(0x01BC9E), RUNE_C(0x01BC9E)},
- {RUNE_C(0x01D400), RUNE_C(0x01D454)},
- {RUNE_C(0x01D456), RUNE_C(0x01D49C)},
- {RUNE_C(0x01D49E), RUNE_C(0x01D49F)},
- {RUNE_C(0x01D4A2), RUNE_C(0x01D4A2)},
- {RUNE_C(0x01D4A5), RUNE_C(0x01D4A6)},
- {RUNE_C(0x01D4A9), RUNE_C(0x01D4AC)},
- {RUNE_C(0x01D4AE), RUNE_C(0x01D4B9)},
- {RUNE_C(0x01D4BB), RUNE_C(0x01D4BB)},
- {RUNE_C(0x01D4BD), RUNE_C(0x01D4C3)},
- {RUNE_C(0x01D4C5), RUNE_C(0x01D505)},
- {RUNE_C(0x01D507), RUNE_C(0x01D50A)},
- {RUNE_C(0x01D50D), RUNE_C(0x01D514)},
- {RUNE_C(0x01D516), RUNE_C(0x01D51C)},
- {RUNE_C(0x01D51E), RUNE_C(0x01D539)},
- {RUNE_C(0x01D53B), RUNE_C(0x01D53E)},
- {RUNE_C(0x01D540), RUNE_C(0x01D544)},
- {RUNE_C(0x01D546), RUNE_C(0x01D546)},
- {RUNE_C(0x01D54A), RUNE_C(0x01D550)},
- {RUNE_C(0x01D552), RUNE_C(0x01D6A5)},
- {RUNE_C(0x01D6A8), RUNE_C(0x01D6C0)},
- {RUNE_C(0x01D6C2), RUNE_C(0x01D6DA)},
- {RUNE_C(0x01D6DC), RUNE_C(0x01D6FA)},
- {RUNE_C(0x01D6FC), RUNE_C(0x01D714)},
- {RUNE_C(0x01D716), RUNE_C(0x01D734)},
- {RUNE_C(0x01D736), RUNE_C(0x01D74E)},
- {RUNE_C(0x01D750), RUNE_C(0x01D76E)},
- {RUNE_C(0x01D770), RUNE_C(0x01D788)},
- {RUNE_C(0x01D78A), RUNE_C(0x01D7A8)},
- {RUNE_C(0x01D7AA), RUNE_C(0x01D7C2)},
- {RUNE_C(0x01D7C4), RUNE_C(0x01D7CB)},
- {RUNE_C(0x01DF00), RUNE_C(0x01DF1E)},
- {RUNE_C(0x01DF25), RUNE_C(0x01DF2A)},
- {RUNE_C(0x01E000), RUNE_C(0x01E006)},
- {RUNE_C(0x01E008), RUNE_C(0x01E018)},
- {RUNE_C(0x01E01B), RUNE_C(0x01E021)},
- {RUNE_C(0x01E023), RUNE_C(0x01E024)},
- {RUNE_C(0x01E026), RUNE_C(0x01E02A)},
- {RUNE_C(0x01E030), RUNE_C(0x01E06D)},
- {RUNE_C(0x01E08F), RUNE_C(0x01E08F)},
- {RUNE_C(0x01E100), RUNE_C(0x01E12C)},
- {RUNE_C(0x01E137), RUNE_C(0x01E13D)},
- {RUNE_C(0x01E14E), RUNE_C(0x01E14E)},
- {RUNE_C(0x01E290), RUNE_C(0x01E2AD)},
- {RUNE_C(0x01E2C0), RUNE_C(0x01E2EB)},
- {RUNE_C(0x01E4D0), RUNE_C(0x01E4EB)},
- {RUNE_C(0x01E7E0), RUNE_C(0x01E7E6)},
- {RUNE_C(0x01E7E8), RUNE_C(0x01E7EB)},
- {RUNE_C(0x01E7ED), RUNE_C(0x01E7EE)},
- {RUNE_C(0x01E7F0), RUNE_C(0x01E7FE)},
- {RUNE_C(0x01E800), RUNE_C(0x01E8C4)},
- {RUNE_C(0x01E900), RUNE_C(0x01E943)},
- {RUNE_C(0x01E947), RUNE_C(0x01E947)},
- {RUNE_C(0x01E94B), RUNE_C(0x01E94B)},
- {RUNE_C(0x01EE00), RUNE_C(0x01EE03)},
- {RUNE_C(0x01EE05), RUNE_C(0x01EE1F)},
- {RUNE_C(0x01EE21), RUNE_C(0x01EE22)},
- {RUNE_C(0x01EE24), RUNE_C(0x01EE24)},
- {RUNE_C(0x01EE27), RUNE_C(0x01EE27)},
- {RUNE_C(0x01EE29), RUNE_C(0x01EE32)},
- {RUNE_C(0x01EE34), RUNE_C(0x01EE37)},
- {RUNE_C(0x01EE39), RUNE_C(0x01EE39)},
- {RUNE_C(0x01EE3B), RUNE_C(0x01EE3B)},
- {RUNE_C(0x01EE42), RUNE_C(0x01EE42)},
- {RUNE_C(0x01EE47), RUNE_C(0x01EE47)},
- {RUNE_C(0x01EE49), RUNE_C(0x01EE49)},
- {RUNE_C(0x01EE4B), RUNE_C(0x01EE4B)},
- {RUNE_C(0x01EE4D), RUNE_C(0x01EE4F)},
- {RUNE_C(0x01EE51), RUNE_C(0x01EE52)},
- {RUNE_C(0x01EE54), RUNE_C(0x01EE54)},
- {RUNE_C(0x01EE57), RUNE_C(0x01EE57)},
- {RUNE_C(0x01EE59), RUNE_C(0x01EE59)},
- {RUNE_C(0x01EE5B), RUNE_C(0x01EE5B)},
- {RUNE_C(0x01EE5D), RUNE_C(0x01EE5D)},
- {RUNE_C(0x01EE5F), RUNE_C(0x01EE5F)},
- {RUNE_C(0x01EE61), RUNE_C(0x01EE62)},
- {RUNE_C(0x01EE64), RUNE_C(0x01EE64)},
- {RUNE_C(0x01EE67), RUNE_C(0x01EE6A)},
- {RUNE_C(0x01EE6C), RUNE_C(0x01EE72)},
- {RUNE_C(0x01EE74), RUNE_C(0x01EE77)},
- {RUNE_C(0x01EE79), RUNE_C(0x01EE7C)},
- {RUNE_C(0x01EE7E), RUNE_C(0x01EE7E)},
- {RUNE_C(0x01EE80), RUNE_C(0x01EE89)},
- {RUNE_C(0x01EE8B), RUNE_C(0x01EE9B)},
- {RUNE_C(0x01EEA1), RUNE_C(0x01EEA3)},
- {RUNE_C(0x01EEA5), RUNE_C(0x01EEA9)},
- {RUNE_C(0x01EEAB), RUNE_C(0x01EEBB)},
- {RUNE_C(0x01F130), RUNE_C(0x01F149)},
- {RUNE_C(0x01F150), RUNE_C(0x01F169)},
- {RUNE_C(0x01F170), RUNE_C(0x01F189)},
- {RUNE_C(0x020000), RUNE_C(0x02A6DF)},
- {RUNE_C(0x02A700), RUNE_C(0x02B739)},
- {RUNE_C(0x02B740), RUNE_C(0x02B81D)},
- {RUNE_C(0x02B820), RUNE_C(0x02CEA1)},
- {RUNE_C(0x02CEB0), RUNE_C(0x02EBE0)},
- {RUNE_C(0x02EBF0), RUNE_C(0x02EE5D)},
- {RUNE_C(0x02F800), RUNE_C(0x02FA1D)},
- {RUNE_C(0x030000), RUNE_C(0x03134A)},
- {RUNE_C(0x031350), RUNE_C(0x0323AF)},
+static constexpr unsigned char stage2[][16] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFE, 0xFF, 0xFF, 0x07, 0xFE, 0xFF, 0xFF, 0x07},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x04,
+ 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xC3, 0xFF, 0x03, 0x00, 0x1F, 0x50, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0xBC},
+ {0x40, 0xD7, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF},
+ {0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
+ 0xFF, 0xFF, 0x7F, 0x02, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xBF,
+ 0xB6, 0x00, 0xFF, 0xFF, 0xFF, 0x87, 0x07, 0x00},
+ {0x00, 0x00, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0xC0, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xEF, 0x1F, 0xFE, 0xE1, 0x00, 0x9C},
+ {0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00,
+ 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x07, 0x30, 0x04},
+ {0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0x1F, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0x07, 0xFF, 0xFF},
+ {0xFF, 0x7E, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x03, 0xF0, 0xFF, 0xF8, 0x03, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF,
+ 0xFF, 0xDF, 0xE1, 0xFF, 0x0F, 0x00, 0xFE, 0xFF},
+ {0xEF, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xC5, 0xE3,
+ 0x9F, 0x59, 0x80, 0xB0, 0x0F, 0x00, 0x03, 0x10},
+ {0xEE, 0x87, 0xF9, 0xFF, 0xFF, 0xFD, 0x6D, 0xC3,
+ 0x87, 0x19, 0x02, 0x5E, 0x00, 0x00, 0x3F, 0x00},
+ {0xEE, 0xBF, 0xFB, 0xFF, 0xFF, 0xFD, 0xED, 0xE3,
+ 0xBF, 0x1B, 0x01, 0x00, 0x0F, 0x00, 0x00, 0x1E},
+ {0xEE, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xED, 0xE3,
+ 0x9F, 0x19, 0xC0, 0xB0, 0x0F, 0x00, 0x02, 0x00},
+ {0xEC, 0xC7, 0x3D, 0xD6, 0x18, 0xC7, 0xFF, 0xC3,
+ 0xC7, 0x1D, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xDF, 0xFD, 0xFF, 0xFF, 0xFD, 0xFF, 0xE3,
+ 0xDF, 0x1D, 0x60, 0x27, 0x0F, 0x00, 0x00, 0x00},
+ {0xEF, 0xDF, 0xFD, 0xFF, 0xFF, 0xFD, 0xEF, 0xE3,
+ 0xDF, 0x1D, 0x60, 0x60, 0x0F, 0x00, 0x0E, 0x00},
+ {0xFF, 0xDF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7,
+ 0xDF, 0x5D, 0xF0, 0x80, 0x0F, 0x00, 0x00, 0xFC},
+ {0xEE, 0xFF, 0x7F, 0xFC, 0xFF, 0xFF, 0xFB, 0x2F,
+ 0x7F, 0x80, 0x5F, 0xFF, 0x00, 0x00, 0x0C, 0x00},
+ {0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07,
+ 0x7F, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xD6, 0xF7, 0xFF, 0xFF, 0xAF, 0xFF, 0xFF, 0x3B,
+ 0x5F, 0x20, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00},
+ {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x1F, 0xFE, 0xFF},
+ {0x0F, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x1F,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF9,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0x00, 0x3C, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xBF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x3D, 0x7F, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x7F,
+ 0x3D, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x3F},
+ {0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF},
+ {0xFE, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xFF, 0x01},
+ {0xFF, 0xFF, 0x0F, 0x80, 0xFF, 0xFF, 0x0F, 0x00,
+ 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xDF, 0x0D, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF,
+ 0xFF, 0x01, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0x0F, 0xFF, 0x01,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF,
+ 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0x1F, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80,
+ 0x01, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF,
+ 0xEF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x00, 0xFC,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0x03, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00,
+ 0x00, 0xE0, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x3F},
+ {0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0x6F, 0x04},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x1F, 0x00},
+ {0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x3F, 0x3F, 0xFF, 0xAA, 0xFF, 0xFF, 0xFF, 0x3F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x5F,
+ 0xDC, 0x1F, 0xCF, 0x0F, 0xFF, 0x1F, 0xDC, 0x1F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80},
+ {0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x84, 0xFC, 0x2F, 0x3E, 0x50, 0xBD, 0xFF, 0xF3,
+ 0xE0, 0x43, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x78, 0x0C, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x20, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00},
+ {0xFF, 0xFF, 0x7F, 0x00, 0x7F, 0x7F, 0x7F, 0x7F,
+ 0x7F, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xE0, 0x00, 0x00, 0x00, 0xFE, 0x03, 0x3E, 0x1F,
+ 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0x7F, 0xE0, 0xFE, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7},
+ {0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F},
+ {0xFF, 0x1F, 0xFF, 0xFF, 0x00, 0x0C, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF0, 0x8F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00},
+ {0x00, 0x00, 0x80, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xEB, 0x03, 0x00, 0x00, 0xFC, 0xFF},
+ {0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xE8},
+ {0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0x1F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF,
+ 0x00, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x7C},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00,
+ 0xFF, 0x3F, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xFC},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
+ 0x05, 0x00, 0x00, 0x38, 0xFF, 0xFF, 0x3C, 0x00},
+ {0x7E, 0x7E, 0x7E, 0x00, 0x7F, 0x7F, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0x03, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xFF,
+ 0x7F, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0x00, 0xF8, 0xE0, 0xFF, 0xFD, 0x7F, 0x5F,
+ 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00,
+ 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F},
+ {0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x07,
+ 0xFE, 0xFF, 0xFF, 0x07, 0xC0, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
+ 0xFC, 0xFC, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xEF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xB7,
+ 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xE0, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x0F, 0xFF, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xF7},
+ {0xFF, 0xF7, 0xB7, 0xFF, 0xFB, 0xFF, 0xFB, 0x1B,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00,
+ 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0x00, 0x00, 0x00},
+ {0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x3F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x91,
+ 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF, 0x7F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x37, 0x00},
+ {0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF, 0xFF, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x6F, 0xF0, 0xEF, 0xFE, 0xFF, 0xFF, 0x3F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x1F},
+ {0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFE, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00,
+ 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF, 0x07, 0x00},
+ {0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x1F, 0x80, 0x00, 0xFF, 0xFF,
+ 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF},
+ {0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0x1F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
+ 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
+ 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x47, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x1E, 0xC0, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0x9F, 0xC0,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0xBD, 0xFF, 0xBF, 0xFF, 0x01, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00},
+ {0xEF, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xED, 0xE3,
+ 0x9F, 0x19, 0x81, 0xE0, 0x0F, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xBB, 0x07, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xB3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x7F,
+ 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
+ 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0x07, 0x00, 0x00,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80},
+ {0x7F, 0xF2, 0x6F, 0xFF, 0xFF, 0xFF, 0xBF, 0x99,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFC, 0x1A, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x7F,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0x20, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01},
+ {0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF},
+ {0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFE, 0x7F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xB4,
+ 0xCB, 0x00, 0x00, 0x00, 0xBF, 0xFD, 0xFF, 0xFF},
+ {0xFF, 0x7F, 0x7B, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00},
+ {0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
+ 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x0F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xE0},
+ {0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x03, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x6F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x04, 0x00,
+ 0x00, 0x00, 0x27, 0x00, 0xF0, 0x00, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0x1F},
+ {0xFF, 0x01, 0xFF, 0x43, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xDF, 0x64, 0xDE, 0xFF, 0xEB,
+ 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xBF, 0xE7, 0xDF, 0xDF, 0xFF, 0xFF, 0xFF, 0x7B,
+ 0x5F, 0xFC, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF,
+ 0xFD, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xF7},
+ {0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF,
+ 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF},
+ {0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF,
+ 0xF7, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x7F, 0xE0, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0xFF, 0xFF, 0xF9, 0xDB, 0x07, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00},
+ {0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x80, 0x3F,
+ 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x7F, 0x6F, 0xFF, 0x7F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x8F, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xEF, 0xFF, 0xFF, 0xFF, 0x96, 0xFE, 0xF7, 0x0A,
+ 0x84, 0xEA, 0x96, 0xAA, 0x96, 0xF7, 0xF7, 0x5E},
+ {0xFF, 0xFB, 0xFF, 0x0F, 0xEE, 0xFB, 0xFF, 0x0F,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF},
+ {0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_alpha(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 128]], ch % 128);
}
diff --git a/lib/unicode/prop/uprop_is_bidi_c.c b/lib/unicode/prop/uprop_is_bidi_c.c
index 409c20e..d803370 100644
--- a/lib/unicode/prop/uprop_is_bidi_c.c
+++ b/lib/unicode/prop/uprop_is_bidi_c.c
@@ -1,25 +1,176 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x00061C), RUNE_C(0x00061C)},
- {RUNE_C(0x00200E), RUNE_C(0x00200F)},
- {RUNE_C(0x00202A), RUNE_C(0x00202E)},
- {RUNE_C(0x002066), RUNE_C(0x002069)},
+static constexpr uint8_t stage1[] = {
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
+static constexpr unsigned char stage2[][64] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0xC0, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+};
bool
uprop_is_bidi_c(rune ch)
{
- return mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 512]], ch % 512);
}
diff --git a/lib/unicode/prop/uprop_is_bidi_m.c b/lib/unicode/prop/uprop_is_bidi_m.c
index 9ffd897..6ecf829 100644
--- a/lib/unicode/prop/uprop_is_bidi_m.c
+++ b/lib/unicode/prop/uprop_is_bidi_m.c
@@ -1,133 +1,256 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x50,
- 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x28,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 1,
+ 4, 5, 1, 6, 7, 8, 1, 9, 10, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000F3A), RUNE_C(0x000F3D)},
- {RUNE_C(0x00169B), RUNE_C(0x00169C)},
- {RUNE_C(0x002039), RUNE_C(0x00203A)},
- {RUNE_C(0x002045), RUNE_C(0x002046)},
- {RUNE_C(0x00207D), RUNE_C(0x00207E)},
- {RUNE_C(0x00208D), RUNE_C(0x00208E)},
- {RUNE_C(0x002140), RUNE_C(0x002140)},
- {RUNE_C(0x002201), RUNE_C(0x002204)},
- {RUNE_C(0x002208), RUNE_C(0x00220D)},
- {RUNE_C(0x002211), RUNE_C(0x002211)},
- {RUNE_C(0x002215), RUNE_C(0x002216)},
- {RUNE_C(0x00221A), RUNE_C(0x00221D)},
- {RUNE_C(0x00221F), RUNE_C(0x002222)},
- {RUNE_C(0x002224), RUNE_C(0x002224)},
- {RUNE_C(0x002226), RUNE_C(0x002226)},
- {RUNE_C(0x00222B), RUNE_C(0x002233)},
- {RUNE_C(0x002239), RUNE_C(0x002239)},
- {RUNE_C(0x00223B), RUNE_C(0x00224C)},
- {RUNE_C(0x002252), RUNE_C(0x002255)},
- {RUNE_C(0x00225F), RUNE_C(0x002260)},
- {RUNE_C(0x002262), RUNE_C(0x002262)},
- {RUNE_C(0x002264), RUNE_C(0x00226B)},
- {RUNE_C(0x00226E), RUNE_C(0x00228C)},
- {RUNE_C(0x00228F), RUNE_C(0x002292)},
- {RUNE_C(0x002298), RUNE_C(0x002298)},
- {RUNE_C(0x0022A2), RUNE_C(0x0022A3)},
- {RUNE_C(0x0022A6), RUNE_C(0x0022B8)},
- {RUNE_C(0x0022BE), RUNE_C(0x0022BF)},
- {RUNE_C(0x0022C9), RUNE_C(0x0022CD)},
- {RUNE_C(0x0022D0), RUNE_C(0x0022D1)},
- {RUNE_C(0x0022D6), RUNE_C(0x0022ED)},
- {RUNE_C(0x0022F0), RUNE_C(0x0022FF)},
- {RUNE_C(0x002308), RUNE_C(0x00230B)},
- {RUNE_C(0x002320), RUNE_C(0x002321)},
- {RUNE_C(0x002329), RUNE_C(0x00232A)},
- {RUNE_C(0x002768), RUNE_C(0x002775)},
- {RUNE_C(0x0027C0), RUNE_C(0x0027C0)},
- {RUNE_C(0x0027C3), RUNE_C(0x0027C6)},
- {RUNE_C(0x0027C8), RUNE_C(0x0027C9)},
- {RUNE_C(0x0027CB), RUNE_C(0x0027CD)},
- {RUNE_C(0x0027D3), RUNE_C(0x0027D6)},
- {RUNE_C(0x0027DC), RUNE_C(0x0027DE)},
- {RUNE_C(0x0027E2), RUNE_C(0x0027EF)},
- {RUNE_C(0x002983), RUNE_C(0x002998)},
- {RUNE_C(0x00299B), RUNE_C(0x0029A0)},
- {RUNE_C(0x0029A2), RUNE_C(0x0029AF)},
- {RUNE_C(0x0029B8), RUNE_C(0x0029B8)},
- {RUNE_C(0x0029C0), RUNE_C(0x0029C5)},
- {RUNE_C(0x0029C9), RUNE_C(0x0029C9)},
- {RUNE_C(0x0029CE), RUNE_C(0x0029D2)},
- {RUNE_C(0x0029D4), RUNE_C(0x0029D5)},
- {RUNE_C(0x0029D8), RUNE_C(0x0029DC)},
- {RUNE_C(0x0029E1), RUNE_C(0x0029E1)},
- {RUNE_C(0x0029E3), RUNE_C(0x0029E5)},
- {RUNE_C(0x0029E8), RUNE_C(0x0029E9)},
- {RUNE_C(0x0029F4), RUNE_C(0x0029F9)},
- {RUNE_C(0x0029FC), RUNE_C(0x0029FD)},
- {RUNE_C(0x002A0A), RUNE_C(0x002A1C)},
- {RUNE_C(0x002A1E), RUNE_C(0x002A21)},
- {RUNE_C(0x002A24), RUNE_C(0x002A24)},
- {RUNE_C(0x002A26), RUNE_C(0x002A26)},
- {RUNE_C(0x002A29), RUNE_C(0x002A29)},
- {RUNE_C(0x002A2B), RUNE_C(0x002A2E)},
- {RUNE_C(0x002A34), RUNE_C(0x002A35)},
- {RUNE_C(0x002A3C), RUNE_C(0x002A3E)},
- {RUNE_C(0x002A57), RUNE_C(0x002A58)},
- {RUNE_C(0x002A64), RUNE_C(0x002A65)},
- {RUNE_C(0x002A6A), RUNE_C(0x002A6D)},
- {RUNE_C(0x002A6F), RUNE_C(0x002A70)},
- {RUNE_C(0x002A73), RUNE_C(0x002A74)},
- {RUNE_C(0x002A79), RUNE_C(0x002AA3)},
- {RUNE_C(0x002AA6), RUNE_C(0x002AAD)},
- {RUNE_C(0x002AAF), RUNE_C(0x002AD6)},
- {RUNE_C(0x002ADC), RUNE_C(0x002ADC)},
- {RUNE_C(0x002ADE), RUNE_C(0x002ADE)},
- {RUNE_C(0x002AE2), RUNE_C(0x002AE6)},
- {RUNE_C(0x002AEC), RUNE_C(0x002AEE)},
- {RUNE_C(0x002AF3), RUNE_C(0x002AF3)},
- {RUNE_C(0x002AF7), RUNE_C(0x002AFB)},
- {RUNE_C(0x002AFD), RUNE_C(0x002AFD)},
- {RUNE_C(0x002BFE), RUNE_C(0x002BFE)},
- {RUNE_C(0x002E02), RUNE_C(0x002E05)},
- {RUNE_C(0x002E09), RUNE_C(0x002E0A)},
- {RUNE_C(0x002E0C), RUNE_C(0x002E0D)},
- {RUNE_C(0x002E1C), RUNE_C(0x002E1D)},
- {RUNE_C(0x002E20), RUNE_C(0x002E29)},
- {RUNE_C(0x002E55), RUNE_C(0x002E5C)},
- {RUNE_C(0x003008), RUNE_C(0x003011)},
- {RUNE_C(0x003014), RUNE_C(0x00301B)},
- {RUNE_C(0x00FE59), RUNE_C(0x00FE5E)},
- {RUNE_C(0x00FE64), RUNE_C(0x00FE65)},
- {RUNE_C(0x00FF08), RUNE_C(0x00FF09)},
- {RUNE_C(0x00FF1C), RUNE_C(0x00FF1C)},
- {RUNE_C(0x00FF1E), RUNE_C(0x00FF1E)},
- {RUNE_C(0x00FF3B), RUNE_C(0x00FF3B)},
- {RUNE_C(0x00FF3D), RUNE_C(0x00FF3D)},
- {RUNE_C(0x00FF5B), RUNE_C(0x00FF5B)},
- {RUNE_C(0x00FF5D), RUNE_C(0x00FF5D)},
- {RUNE_C(0x00FF5F), RUNE_C(0x00FF60)},
- {RUNE_C(0x00FF62), RUNE_C(0x00FF63)},
- {RUNE_C(0x01D6DB), RUNE_C(0x01D6DB)},
- {RUNE_C(0x01D715), RUNE_C(0x01D715)},
- {RUNE_C(0x01D74F), RUNE_C(0x01D74F)},
- {RUNE_C(0x01D789), RUNE_C(0x01D789)},
- {RUNE_C(0x01D7C3), RUNE_C(0x01D7C3)},
+static constexpr unsigned char stage2[][64] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x50,
+ 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x28,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
+ 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
+ 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x1E, 0x3F, 0x62, 0xBC, 0x57, 0xF8, 0x0F, 0xFA,
+ 0xFF, 0x1F, 0x3C, 0x80, 0xF5, 0xCF, 0xFF, 0xFF,
+ 0xFF, 0x9F, 0x07, 0x01, 0xCC, 0xFF, 0xFF, 0xC1,
+ 0x00, 0x3E, 0xC3, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF,
+ 0x00, 0x0F, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x79, 0x3B, 0x78, 0x70, 0xFC, 0xFF, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xF8, 0xFF, 0xFF, 0xF9, 0xFD, 0xFF, 0x00, 0x01,
+ 0x3F, 0xC2, 0x37, 0x1F, 0x3A, 0x03, 0xF0, 0x33},
+ {0x00, 0xFC, 0xFF, 0xDF, 0x53, 0x7A, 0x30, 0x70,
+ 0x00, 0x00, 0x80, 0x01, 0x30, 0xBC, 0x19, 0xFE,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xBF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x7F, 0x50, 0x7C, 0x70, 0x88, 0x2F,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40},
+ {0x3C, 0x36, 0x00, 0x30, 0xFF, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0xE0, 0x1F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0xFF, 0xF3, 0x0F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x7E, 0x30, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x03, 0x00, 0x50, 0x00, 0x00, 0x00, 0x28,
+ 0x00, 0x00, 0x00, 0xA8, 0x0D, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_bidi_m(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 512]], ch % 512);
}
diff --git a/lib/unicode/prop/uprop_is_cased.c b/lib/unicode/prop/uprop_is_cased.c
index 59a5b8d..4c36acd 100644
--- a/lib/unicode/prop/uprop_is_cased.c
+++ b/lib/unicode/prop/uprop_is_cased.c
@@ -1,178 +1,436 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xFE, 0xFF, 0xFF, 0x07, 0xFE, 0xFF, 0xFF, 0x07,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x04,
- 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 7, 6, 6, 8, 6, 6, 6, 6, 6, 6, 6, 6, 9, 10, 11, 12,
+ 13, 14, 6, 6, 15, 6, 6, 6, 6, 6, 6, 6, 16, 17, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 18, 19, 6, 6, 6, 20, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 21, 6, 6, 6, 22,
+ 6, 6, 6, 6, 23, 24, 6, 25, 6, 6, 6, 6, 26, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 27, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 28, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 29, 30, 31, 32, 6, 6, 6, 6, 6, 6, 6, 33,
+ 34, 6, 6, 6, 6, 6, 6, 6, 6, 35, 6, 6, 6, 6, 6, 6,
+ 6, 36, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000100), RUNE_C(0x0001BA)},
- {RUNE_C(0x0001BC), RUNE_C(0x0001BF)},
- {RUNE_C(0x0001C4), RUNE_C(0x000293)},
- {RUNE_C(0x000295), RUNE_C(0x0002B8)},
- {RUNE_C(0x0002C0), RUNE_C(0x0002C1)},
- {RUNE_C(0x0002E0), RUNE_C(0x0002E4)},
- {RUNE_C(0x000345), RUNE_C(0x000345)},
- {RUNE_C(0x000370), RUNE_C(0x000373)},
- {RUNE_C(0x000376), RUNE_C(0x000377)},
- {RUNE_C(0x00037A), RUNE_C(0x00037D)},
- {RUNE_C(0x00037F), RUNE_C(0x00037F)},
- {RUNE_C(0x000386), RUNE_C(0x000386)},
- {RUNE_C(0x000388), RUNE_C(0x00038A)},
- {RUNE_C(0x00038C), RUNE_C(0x00038C)},
- {RUNE_C(0x00038E), RUNE_C(0x0003A1)},
- {RUNE_C(0x0003A3), RUNE_C(0x0003F5)},
- {RUNE_C(0x0003F7), RUNE_C(0x000481)},
- {RUNE_C(0x00048A), RUNE_C(0x00052F)},
- {RUNE_C(0x000531), RUNE_C(0x000556)},
- {RUNE_C(0x000560), RUNE_C(0x000588)},
- {RUNE_C(0x0010A0), RUNE_C(0x0010C5)},
- {RUNE_C(0x0010C7), RUNE_C(0x0010C7)},
- {RUNE_C(0x0010CD), RUNE_C(0x0010CD)},
- {RUNE_C(0x0010D0), RUNE_C(0x0010FA)},
- {RUNE_C(0x0010FC), RUNE_C(0x0010FF)},
- {RUNE_C(0x0013A0), RUNE_C(0x0013F5)},
- {RUNE_C(0x0013F8), RUNE_C(0x0013FD)},
- {RUNE_C(0x001C80), RUNE_C(0x001C88)},
- {RUNE_C(0x001C90), RUNE_C(0x001CBA)},
- {RUNE_C(0x001CBD), RUNE_C(0x001CBF)},
- {RUNE_C(0x001D00), RUNE_C(0x001DBF)},
- {RUNE_C(0x001E00), RUNE_C(0x001F15)},
- {RUNE_C(0x001F18), RUNE_C(0x001F1D)},
- {RUNE_C(0x001F20), RUNE_C(0x001F45)},
- {RUNE_C(0x001F48), RUNE_C(0x001F4D)},
- {RUNE_C(0x001F50), RUNE_C(0x001F57)},
- {RUNE_C(0x001F59), RUNE_C(0x001F59)},
- {RUNE_C(0x001F5B), RUNE_C(0x001F5B)},
- {RUNE_C(0x001F5D), RUNE_C(0x001F5D)},
- {RUNE_C(0x001F5F), RUNE_C(0x001F7D)},
- {RUNE_C(0x001F80), RUNE_C(0x001FB4)},
- {RUNE_C(0x001FB6), RUNE_C(0x001FBC)},
- {RUNE_C(0x001FBE), RUNE_C(0x001FBE)},
- {RUNE_C(0x001FC2), RUNE_C(0x001FC4)},
- {RUNE_C(0x001FC6), RUNE_C(0x001FCC)},
- {RUNE_C(0x001FD0), RUNE_C(0x001FD3)},
- {RUNE_C(0x001FD6), RUNE_C(0x001FDB)},
- {RUNE_C(0x001FE0), RUNE_C(0x001FEC)},
- {RUNE_C(0x001FF2), RUNE_C(0x001FF4)},
- {RUNE_C(0x001FF6), RUNE_C(0x001FFC)},
- {RUNE_C(0x002071), RUNE_C(0x002071)},
- {RUNE_C(0x00207F), RUNE_C(0x00207F)},
- {RUNE_C(0x002090), RUNE_C(0x00209C)},
- {RUNE_C(0x002102), RUNE_C(0x002102)},
- {RUNE_C(0x002107), RUNE_C(0x002107)},
- {RUNE_C(0x00210A), RUNE_C(0x002113)},
- {RUNE_C(0x002115), RUNE_C(0x002115)},
- {RUNE_C(0x002119), RUNE_C(0x00211D)},
- {RUNE_C(0x002124), RUNE_C(0x002124)},
- {RUNE_C(0x002126), RUNE_C(0x002126)},
- {RUNE_C(0x002128), RUNE_C(0x002128)},
- {RUNE_C(0x00212A), RUNE_C(0x00212D)},
- {RUNE_C(0x00212F), RUNE_C(0x002134)},
- {RUNE_C(0x002139), RUNE_C(0x002139)},
- {RUNE_C(0x00213C), RUNE_C(0x00213F)},
- {RUNE_C(0x002145), RUNE_C(0x002149)},
- {RUNE_C(0x00214E), RUNE_C(0x00214E)},
- {RUNE_C(0x002160), RUNE_C(0x00217F)},
- {RUNE_C(0x002183), RUNE_C(0x002184)},
- {RUNE_C(0x0024B6), RUNE_C(0x0024E9)},
- {RUNE_C(0x002C00), RUNE_C(0x002CE4)},
- {RUNE_C(0x002CEB), RUNE_C(0x002CEE)},
- {RUNE_C(0x002CF2), RUNE_C(0x002CF3)},
- {RUNE_C(0x002D00), RUNE_C(0x002D25)},
- {RUNE_C(0x002D27), RUNE_C(0x002D27)},
- {RUNE_C(0x002D2D), RUNE_C(0x002D2D)},
- {RUNE_C(0x00A640), RUNE_C(0x00A66D)},
- {RUNE_C(0x00A680), RUNE_C(0x00A69D)},
- {RUNE_C(0x00A722), RUNE_C(0x00A787)},
- {RUNE_C(0x00A78B), RUNE_C(0x00A78E)},
- {RUNE_C(0x00A790), RUNE_C(0x00A7CA)},
- {RUNE_C(0x00A7D0), RUNE_C(0x00A7D1)},
- {RUNE_C(0x00A7D3), RUNE_C(0x00A7D3)},
- {RUNE_C(0x00A7D5), RUNE_C(0x00A7D9)},
- {RUNE_C(0x00A7F2), RUNE_C(0x00A7F6)},
- {RUNE_C(0x00A7F8), RUNE_C(0x00A7FA)},
- {RUNE_C(0x00AB30), RUNE_C(0x00AB5A)},
- {RUNE_C(0x00AB5C), RUNE_C(0x00AB69)},
- {RUNE_C(0x00AB70), RUNE_C(0x00ABBF)},
- {RUNE_C(0x00FB00), RUNE_C(0x00FB06)},
- {RUNE_C(0x00FB13), RUNE_C(0x00FB17)},
- {RUNE_C(0x00FF21), RUNE_C(0x00FF3A)},
- {RUNE_C(0x00FF41), RUNE_C(0x00FF5A)},
- {RUNE_C(0x010400), RUNE_C(0x01044F)},
- {RUNE_C(0x0104B0), RUNE_C(0x0104D3)},
- {RUNE_C(0x0104D8), RUNE_C(0x0104FB)},
- {RUNE_C(0x010570), RUNE_C(0x01057A)},
- {RUNE_C(0x01057C), RUNE_C(0x01058A)},
- {RUNE_C(0x01058C), RUNE_C(0x010592)},
- {RUNE_C(0x010594), RUNE_C(0x010595)},
- {RUNE_C(0x010597), RUNE_C(0x0105A1)},
- {RUNE_C(0x0105A3), RUNE_C(0x0105B1)},
- {RUNE_C(0x0105B3), RUNE_C(0x0105B9)},
- {RUNE_C(0x0105BB), RUNE_C(0x0105BC)},
- {RUNE_C(0x010780), RUNE_C(0x010780)},
- {RUNE_C(0x010783), RUNE_C(0x010785)},
- {RUNE_C(0x010787), RUNE_C(0x0107B0)},
- {RUNE_C(0x0107B2), RUNE_C(0x0107BA)},
- {RUNE_C(0x010C80), RUNE_C(0x010CB2)},
- {RUNE_C(0x010CC0), RUNE_C(0x010CF2)},
- {RUNE_C(0x0118A0), RUNE_C(0x0118DF)},
- {RUNE_C(0x016E40), RUNE_C(0x016E7F)},
- {RUNE_C(0x01D400), RUNE_C(0x01D454)},
- {RUNE_C(0x01D456), RUNE_C(0x01D49C)},
- {RUNE_C(0x01D49E), RUNE_C(0x01D49F)},
- {RUNE_C(0x01D4A2), RUNE_C(0x01D4A2)},
- {RUNE_C(0x01D4A5), RUNE_C(0x01D4A6)},
- {RUNE_C(0x01D4A9), RUNE_C(0x01D4AC)},
- {RUNE_C(0x01D4AE), RUNE_C(0x01D4B9)},
- {RUNE_C(0x01D4BB), RUNE_C(0x01D4BB)},
- {RUNE_C(0x01D4BD), RUNE_C(0x01D4C3)},
- {RUNE_C(0x01D4C5), RUNE_C(0x01D505)},
- {RUNE_C(0x01D507), RUNE_C(0x01D50A)},
- {RUNE_C(0x01D50D), RUNE_C(0x01D514)},
- {RUNE_C(0x01D516), RUNE_C(0x01D51C)},
- {RUNE_C(0x01D51E), RUNE_C(0x01D539)},
- {RUNE_C(0x01D53B), RUNE_C(0x01D53E)},
- {RUNE_C(0x01D540), RUNE_C(0x01D544)},
- {RUNE_C(0x01D546), RUNE_C(0x01D546)},
- {RUNE_C(0x01D54A), RUNE_C(0x01D550)},
- {RUNE_C(0x01D552), RUNE_C(0x01D6A5)},
- {RUNE_C(0x01D6A8), RUNE_C(0x01D6C0)},
- {RUNE_C(0x01D6C2), RUNE_C(0x01D6DA)},
- {RUNE_C(0x01D6DC), RUNE_C(0x01D6FA)},
- {RUNE_C(0x01D6FC), RUNE_C(0x01D714)},
- {RUNE_C(0x01D716), RUNE_C(0x01D734)},
- {RUNE_C(0x01D736), RUNE_C(0x01D74E)},
- {RUNE_C(0x01D750), RUNE_C(0x01D76E)},
- {RUNE_C(0x01D770), RUNE_C(0x01D788)},
- {RUNE_C(0x01D78A), RUNE_C(0x01D7A8)},
- {RUNE_C(0x01D7AA), RUNE_C(0x01D7C2)},
- {RUNE_C(0x01D7C4), RUNE_C(0x01D7CB)},
- {RUNE_C(0x01DF00), RUNE_C(0x01DF09)},
- {RUNE_C(0x01DF0B), RUNE_C(0x01DF1E)},
- {RUNE_C(0x01DF25), RUNE_C(0x01DF2A)},
- {RUNE_C(0x01E030), RUNE_C(0x01E06D)},
- {RUNE_C(0x01E900), RUNE_C(0x01E943)},
- {RUNE_C(0x01F130), RUNE_C(0x01F149)},
- {RUNE_C(0x01F150), RUNE_C(0x01F169)},
- {RUNE_C(0x01F170), RUNE_C(0x01F189)},
+static constexpr unsigned char stage2[][32] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFE, 0xFF, 0xFF, 0x07, 0xFE, 0xFF, 0xFF, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x04,
+ 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7,
+ 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
+ 0x03, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCF, 0xBC,
+ 0x40, 0xD7, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
+ 0xFF, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xBF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x3F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x3F, 0x3F, 0xFF, 0xAA, 0xFF, 0xFF, 0xFF, 0x3F,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x5F,
+ 0xDC, 0x1F, 0xCF, 0x0F, 0xFF, 0x1F, 0xDC, 0x1F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80,
+ 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x84, 0xFC, 0x2F, 0x3E, 0x50, 0xBD, 0x1F, 0xF2,
+ 0xE0, 0x43, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x78, 0x0C, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x20, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xEB, 0x03, 0x00, 0x00, 0x7C, 0x07},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0x03, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x07,
+ 0xFE, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF7,
+ 0xFF, 0xF7, 0xB7, 0xFF, 0xFB, 0xFF, 0xFB, 0x1B,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xDF, 0x64, 0xDE, 0xFF, 0xEB,
+ 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xBF, 0xE7, 0xDF, 0xDF, 0xFF, 0xFF, 0xFF, 0x7B,
+ 0x5F, 0xFC, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF,
+ 0xFD, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xF7},
+ {0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF,
+ 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF,
+ 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF,
+ 0xF7, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFB, 0xFF, 0x7F, 0xE0, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF,
+ 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_cased(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 256]], ch % 256);
}
diff --git a/lib/unicode/prop/uprop_is_ci.c b/lib/unicode/prop/uprop_is_ci.c
index 33eff8d..ebe10c9 100644
--- a/lib/unicode/prop/uprop_is_ci.c
+++ b/lib/unicode/prop/uprop_is_ci.c
@@ -1,455 +1,826 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x04,
- 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x90, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 2, 2, 2, 3, 4, 5, 2, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 2, 2, 2, 2, 31, 2, 2, 2, 2, 2, 2, 2, 32, 33,
+ 34, 35, 36, 2, 37, 38, 39, 40, 41, 42, 43, 44, 2, 2, 2, 45,
+ 46, 47, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 48, 49, 50, 51, 52, 2, 2, 2,
+ 53, 54, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 55, 2, 2, 2, 2, 2, 2, 2, 2, 56, 2, 2, 57, 58, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 69, 70, 2, 2, 2, 2, 71, 72, 73, 74,
+ 2, 2, 2, 75, 2, 76, 77, 2, 2, 2, 2, 2, 2, 2, 2, 78,
+ 2, 2, 2, 2, 79, 80, 2, 2, 2, 2, 81, 2, 2, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 2, 92, 93, 2, 94, 95, 96, 97, 2,
+ 98, 2, 99, 100, 101, 102, 2, 2, 103, 104, 105, 106, 2, 107, 108, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 109, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 110, 111, 2, 2, 2, 2, 2, 2, 2, 112, 113,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 114,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 115, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 116, 2,
+ 2, 2, 117, 118, 119, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 120, 121, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 122, 123, 124, 2, 2, 125, 2, 2, 2, 126, 2, 2, 2, 2, 2, 2,
+ 2, 127, 128, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 129, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 130, 2, 131, 132, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x0002B0), RUNE_C(0x00036F)},
- {RUNE_C(0x000374), RUNE_C(0x000375)},
- {RUNE_C(0x00037A), RUNE_C(0x00037A)},
- {RUNE_C(0x000384), RUNE_C(0x000385)},
- {RUNE_C(0x000387), RUNE_C(0x000387)},
- {RUNE_C(0x000483), RUNE_C(0x000489)},
- {RUNE_C(0x000559), RUNE_C(0x000559)},
- {RUNE_C(0x00055F), RUNE_C(0x00055F)},
- {RUNE_C(0x000591), RUNE_C(0x0005BD)},
- {RUNE_C(0x0005BF), RUNE_C(0x0005BF)},
- {RUNE_C(0x0005C1), RUNE_C(0x0005C2)},
- {RUNE_C(0x0005C4), RUNE_C(0x0005C5)},
- {RUNE_C(0x0005C7), RUNE_C(0x0005C7)},
- {RUNE_C(0x0005F4), RUNE_C(0x0005F4)},
- {RUNE_C(0x000600), RUNE_C(0x000605)},
- {RUNE_C(0x000610), RUNE_C(0x00061A)},
- {RUNE_C(0x00061C), RUNE_C(0x00061C)},
- {RUNE_C(0x000640), RUNE_C(0x000640)},
- {RUNE_C(0x00064B), RUNE_C(0x00065F)},
- {RUNE_C(0x000670), RUNE_C(0x000670)},
- {RUNE_C(0x0006D6), RUNE_C(0x0006DD)},
- {RUNE_C(0x0006DF), RUNE_C(0x0006E8)},
- {RUNE_C(0x0006EA), RUNE_C(0x0006ED)},
- {RUNE_C(0x00070F), RUNE_C(0x00070F)},
- {RUNE_C(0x000711), RUNE_C(0x000711)},
- {RUNE_C(0x000730), RUNE_C(0x00074A)},
- {RUNE_C(0x0007A6), RUNE_C(0x0007B0)},
- {RUNE_C(0x0007EB), RUNE_C(0x0007F5)},
- {RUNE_C(0x0007FA), RUNE_C(0x0007FA)},
- {RUNE_C(0x0007FD), RUNE_C(0x0007FD)},
- {RUNE_C(0x000816), RUNE_C(0x00082D)},
- {RUNE_C(0x000859), RUNE_C(0x00085B)},
- {RUNE_C(0x000888), RUNE_C(0x000888)},
- {RUNE_C(0x000890), RUNE_C(0x000891)},
- {RUNE_C(0x000898), RUNE_C(0x00089F)},
- {RUNE_C(0x0008C9), RUNE_C(0x000902)},
- {RUNE_C(0x00093A), RUNE_C(0x00093A)},
- {RUNE_C(0x00093C), RUNE_C(0x00093C)},
- {RUNE_C(0x000941), RUNE_C(0x000948)},
- {RUNE_C(0x00094D), RUNE_C(0x00094D)},
- {RUNE_C(0x000951), RUNE_C(0x000957)},
- {RUNE_C(0x000962), RUNE_C(0x000963)},
- {RUNE_C(0x000971), RUNE_C(0x000971)},
- {RUNE_C(0x000981), RUNE_C(0x000981)},
- {RUNE_C(0x0009BC), RUNE_C(0x0009BC)},
- {RUNE_C(0x0009C1), RUNE_C(0x0009C4)},
- {RUNE_C(0x0009CD), RUNE_C(0x0009CD)},
- {RUNE_C(0x0009E2), RUNE_C(0x0009E3)},
- {RUNE_C(0x0009FE), RUNE_C(0x0009FE)},
- {RUNE_C(0x000A01), RUNE_C(0x000A02)},
- {RUNE_C(0x000A3C), RUNE_C(0x000A3C)},
- {RUNE_C(0x000A41), RUNE_C(0x000A42)},
- {RUNE_C(0x000A47), RUNE_C(0x000A48)},
- {RUNE_C(0x000A4B), RUNE_C(0x000A4D)},
- {RUNE_C(0x000A51), RUNE_C(0x000A51)},
- {RUNE_C(0x000A70), RUNE_C(0x000A71)},
- {RUNE_C(0x000A75), RUNE_C(0x000A75)},
- {RUNE_C(0x000A81), RUNE_C(0x000A82)},
- {RUNE_C(0x000ABC), RUNE_C(0x000ABC)},
- {RUNE_C(0x000AC1), RUNE_C(0x000AC5)},
- {RUNE_C(0x000AC7), RUNE_C(0x000AC8)},
- {RUNE_C(0x000ACD), RUNE_C(0x000ACD)},
- {RUNE_C(0x000AE2), RUNE_C(0x000AE3)},
- {RUNE_C(0x000AFA), RUNE_C(0x000AFF)},
- {RUNE_C(0x000B01), RUNE_C(0x000B01)},
- {RUNE_C(0x000B3C), RUNE_C(0x000B3C)},
- {RUNE_C(0x000B3F), RUNE_C(0x000B3F)},
- {RUNE_C(0x000B41), RUNE_C(0x000B44)},
- {RUNE_C(0x000B4D), RUNE_C(0x000B4D)},
- {RUNE_C(0x000B55), RUNE_C(0x000B56)},
- {RUNE_C(0x000B62), RUNE_C(0x000B63)},
- {RUNE_C(0x000B82), RUNE_C(0x000B82)},
- {RUNE_C(0x000BC0), RUNE_C(0x000BC0)},
- {RUNE_C(0x000BCD), RUNE_C(0x000BCD)},
- {RUNE_C(0x000C00), RUNE_C(0x000C00)},
- {RUNE_C(0x000C04), RUNE_C(0x000C04)},
- {RUNE_C(0x000C3C), RUNE_C(0x000C3C)},
- {RUNE_C(0x000C3E), RUNE_C(0x000C40)},
- {RUNE_C(0x000C46), RUNE_C(0x000C48)},
- {RUNE_C(0x000C4A), RUNE_C(0x000C4D)},
- {RUNE_C(0x000C55), RUNE_C(0x000C56)},
- {RUNE_C(0x000C62), RUNE_C(0x000C63)},
- {RUNE_C(0x000C81), RUNE_C(0x000C81)},
- {RUNE_C(0x000CBC), RUNE_C(0x000CBC)},
- {RUNE_C(0x000CBF), RUNE_C(0x000CBF)},
- {RUNE_C(0x000CC6), RUNE_C(0x000CC6)},
- {RUNE_C(0x000CCC), RUNE_C(0x000CCD)},
- {RUNE_C(0x000CE2), RUNE_C(0x000CE3)},
- {RUNE_C(0x000D00), RUNE_C(0x000D01)},
- {RUNE_C(0x000D3B), RUNE_C(0x000D3C)},
- {RUNE_C(0x000D41), RUNE_C(0x000D44)},
- {RUNE_C(0x000D4D), RUNE_C(0x000D4D)},
- {RUNE_C(0x000D62), RUNE_C(0x000D63)},
- {RUNE_C(0x000D81), RUNE_C(0x000D81)},
- {RUNE_C(0x000DCA), RUNE_C(0x000DCA)},
- {RUNE_C(0x000DD2), RUNE_C(0x000DD4)},
- {RUNE_C(0x000DD6), RUNE_C(0x000DD6)},
- {RUNE_C(0x000E31), RUNE_C(0x000E31)},
- {RUNE_C(0x000E34), RUNE_C(0x000E3A)},
- {RUNE_C(0x000E46), RUNE_C(0x000E4E)},
- {RUNE_C(0x000EB1), RUNE_C(0x000EB1)},
- {RUNE_C(0x000EB4), RUNE_C(0x000EBC)},
- {RUNE_C(0x000EC6), RUNE_C(0x000EC6)},
- {RUNE_C(0x000EC8), RUNE_C(0x000ECE)},
- {RUNE_C(0x000F18), RUNE_C(0x000F19)},
- {RUNE_C(0x000F35), RUNE_C(0x000F35)},
- {RUNE_C(0x000F37), RUNE_C(0x000F37)},
- {RUNE_C(0x000F39), RUNE_C(0x000F39)},
- {RUNE_C(0x000F71), RUNE_C(0x000F7E)},
- {RUNE_C(0x000F80), RUNE_C(0x000F84)},
- {RUNE_C(0x000F86), RUNE_C(0x000F87)},
- {RUNE_C(0x000F8D), RUNE_C(0x000F97)},
- {RUNE_C(0x000F99), RUNE_C(0x000FBC)},
- {RUNE_C(0x000FC6), RUNE_C(0x000FC6)},
- {RUNE_C(0x00102D), RUNE_C(0x001030)},
- {RUNE_C(0x001032), RUNE_C(0x001037)},
- {RUNE_C(0x001039), RUNE_C(0x00103A)},
- {RUNE_C(0x00103D), RUNE_C(0x00103E)},
- {RUNE_C(0x001058), RUNE_C(0x001059)},
- {RUNE_C(0x00105E), RUNE_C(0x001060)},
- {RUNE_C(0x001071), RUNE_C(0x001074)},
- {RUNE_C(0x001082), RUNE_C(0x001082)},
- {RUNE_C(0x001085), RUNE_C(0x001086)},
- {RUNE_C(0x00108D), RUNE_C(0x00108D)},
- {RUNE_C(0x00109D), RUNE_C(0x00109D)},
- {RUNE_C(0x0010FC), RUNE_C(0x0010FC)},
- {RUNE_C(0x00135D), RUNE_C(0x00135F)},
- {RUNE_C(0x001712), RUNE_C(0x001714)},
- {RUNE_C(0x001732), RUNE_C(0x001733)},
- {RUNE_C(0x001752), RUNE_C(0x001753)},
- {RUNE_C(0x001772), RUNE_C(0x001773)},
- {RUNE_C(0x0017B4), RUNE_C(0x0017B5)},
- {RUNE_C(0x0017B7), RUNE_C(0x0017BD)},
- {RUNE_C(0x0017C6), RUNE_C(0x0017C6)},
- {RUNE_C(0x0017C9), RUNE_C(0x0017D3)},
- {RUNE_C(0x0017D7), RUNE_C(0x0017D7)},
- {RUNE_C(0x0017DD), RUNE_C(0x0017DD)},
- {RUNE_C(0x00180B), RUNE_C(0x00180F)},
- {RUNE_C(0x001843), RUNE_C(0x001843)},
- {RUNE_C(0x001885), RUNE_C(0x001886)},
- {RUNE_C(0x0018A9), RUNE_C(0x0018A9)},
- {RUNE_C(0x001920), RUNE_C(0x001922)},
- {RUNE_C(0x001927), RUNE_C(0x001928)},
- {RUNE_C(0x001932), RUNE_C(0x001932)},
- {RUNE_C(0x001939), RUNE_C(0x00193B)},
- {RUNE_C(0x001A17), RUNE_C(0x001A18)},
- {RUNE_C(0x001A1B), RUNE_C(0x001A1B)},
- {RUNE_C(0x001A56), RUNE_C(0x001A56)},
- {RUNE_C(0x001A58), RUNE_C(0x001A5E)},
- {RUNE_C(0x001A60), RUNE_C(0x001A60)},
- {RUNE_C(0x001A62), RUNE_C(0x001A62)},
- {RUNE_C(0x001A65), RUNE_C(0x001A6C)},
- {RUNE_C(0x001A73), RUNE_C(0x001A7C)},
- {RUNE_C(0x001A7F), RUNE_C(0x001A7F)},
- {RUNE_C(0x001AA7), RUNE_C(0x001AA7)},
- {RUNE_C(0x001AB0), RUNE_C(0x001ACE)},
- {RUNE_C(0x001B00), RUNE_C(0x001B03)},
- {RUNE_C(0x001B34), RUNE_C(0x001B34)},
- {RUNE_C(0x001B36), RUNE_C(0x001B3A)},
- {RUNE_C(0x001B3C), RUNE_C(0x001B3C)},
- {RUNE_C(0x001B42), RUNE_C(0x001B42)},
- {RUNE_C(0x001B6B), RUNE_C(0x001B73)},
- {RUNE_C(0x001B80), RUNE_C(0x001B81)},
- {RUNE_C(0x001BA2), RUNE_C(0x001BA5)},
- {RUNE_C(0x001BA8), RUNE_C(0x001BA9)},
- {RUNE_C(0x001BAB), RUNE_C(0x001BAD)},
- {RUNE_C(0x001BE6), RUNE_C(0x001BE6)},
- {RUNE_C(0x001BE8), RUNE_C(0x001BE9)},
- {RUNE_C(0x001BED), RUNE_C(0x001BED)},
- {RUNE_C(0x001BEF), RUNE_C(0x001BF1)},
- {RUNE_C(0x001C2C), RUNE_C(0x001C33)},
- {RUNE_C(0x001C36), RUNE_C(0x001C37)},
- {RUNE_C(0x001C78), RUNE_C(0x001C7D)},
- {RUNE_C(0x001CD0), RUNE_C(0x001CD2)},
- {RUNE_C(0x001CD4), RUNE_C(0x001CE0)},
- {RUNE_C(0x001CE2), RUNE_C(0x001CE8)},
- {RUNE_C(0x001CED), RUNE_C(0x001CED)},
- {RUNE_C(0x001CF4), RUNE_C(0x001CF4)},
- {RUNE_C(0x001CF8), RUNE_C(0x001CF9)},
- {RUNE_C(0x001D2C), RUNE_C(0x001D6A)},
- {RUNE_C(0x001D78), RUNE_C(0x001D78)},
- {RUNE_C(0x001D9B), RUNE_C(0x001DFF)},
- {RUNE_C(0x001FBD), RUNE_C(0x001FBD)},
- {RUNE_C(0x001FBF), RUNE_C(0x001FC1)},
- {RUNE_C(0x001FCD), RUNE_C(0x001FCF)},
- {RUNE_C(0x001FDD), RUNE_C(0x001FDF)},
- {RUNE_C(0x001FED), RUNE_C(0x001FEF)},
- {RUNE_C(0x001FFD), RUNE_C(0x001FFE)},
- {RUNE_C(0x00200B), RUNE_C(0x00200F)},
- {RUNE_C(0x002018), RUNE_C(0x002019)},
- {RUNE_C(0x002024), RUNE_C(0x002024)},
- {RUNE_C(0x002027), RUNE_C(0x002027)},
- {RUNE_C(0x00202A), RUNE_C(0x00202E)},
- {RUNE_C(0x002060), RUNE_C(0x002064)},
- {RUNE_C(0x002066), RUNE_C(0x00206F)},
- {RUNE_C(0x002071), RUNE_C(0x002071)},
- {RUNE_C(0x00207F), RUNE_C(0x00207F)},
- {RUNE_C(0x002090), RUNE_C(0x00209C)},
- {RUNE_C(0x0020D0), RUNE_C(0x0020F0)},
- {RUNE_C(0x002C7C), RUNE_C(0x002C7D)},
- {RUNE_C(0x002CEF), RUNE_C(0x002CF1)},
- {RUNE_C(0x002D6F), RUNE_C(0x002D6F)},
- {RUNE_C(0x002D7F), RUNE_C(0x002D7F)},
- {RUNE_C(0x002DE0), RUNE_C(0x002DFF)},
- {RUNE_C(0x002E2F), RUNE_C(0x002E2F)},
- {RUNE_C(0x003005), RUNE_C(0x003005)},
- {RUNE_C(0x00302A), RUNE_C(0x00302D)},
- {RUNE_C(0x003031), RUNE_C(0x003035)},
- {RUNE_C(0x00303B), RUNE_C(0x00303B)},
- {RUNE_C(0x003099), RUNE_C(0x00309E)},
- {RUNE_C(0x0030FC), RUNE_C(0x0030FE)},
- {RUNE_C(0x00A015), RUNE_C(0x00A015)},
- {RUNE_C(0x00A4F8), RUNE_C(0x00A4FD)},
- {RUNE_C(0x00A60C), RUNE_C(0x00A60C)},
- {RUNE_C(0x00A66F), RUNE_C(0x00A672)},
- {RUNE_C(0x00A674), RUNE_C(0x00A67D)},
- {RUNE_C(0x00A67F), RUNE_C(0x00A67F)},
- {RUNE_C(0x00A69C), RUNE_C(0x00A69F)},
- {RUNE_C(0x00A6F0), RUNE_C(0x00A6F1)},
- {RUNE_C(0x00A700), RUNE_C(0x00A721)},
- {RUNE_C(0x00A770), RUNE_C(0x00A770)},
- {RUNE_C(0x00A788), RUNE_C(0x00A78A)},
- {RUNE_C(0x00A7F2), RUNE_C(0x00A7F4)},
- {RUNE_C(0x00A7F8), RUNE_C(0x00A7F9)},
- {RUNE_C(0x00A802), RUNE_C(0x00A802)},
- {RUNE_C(0x00A806), RUNE_C(0x00A806)},
- {RUNE_C(0x00A80B), RUNE_C(0x00A80B)},
- {RUNE_C(0x00A825), RUNE_C(0x00A826)},
- {RUNE_C(0x00A82C), RUNE_C(0x00A82C)},
- {RUNE_C(0x00A8C4), RUNE_C(0x00A8C5)},
- {RUNE_C(0x00A8E0), RUNE_C(0x00A8F1)},
- {RUNE_C(0x00A8FF), RUNE_C(0x00A8FF)},
- {RUNE_C(0x00A926), RUNE_C(0x00A92D)},
- {RUNE_C(0x00A947), RUNE_C(0x00A951)},
- {RUNE_C(0x00A980), RUNE_C(0x00A982)},
- {RUNE_C(0x00A9B3), RUNE_C(0x00A9B3)},
- {RUNE_C(0x00A9B6), RUNE_C(0x00A9B9)},
- {RUNE_C(0x00A9BC), RUNE_C(0x00A9BD)},
- {RUNE_C(0x00A9CF), RUNE_C(0x00A9CF)},
- {RUNE_C(0x00A9E5), RUNE_C(0x00A9E6)},
- {RUNE_C(0x00AA29), RUNE_C(0x00AA2E)},
- {RUNE_C(0x00AA31), RUNE_C(0x00AA32)},
- {RUNE_C(0x00AA35), RUNE_C(0x00AA36)},
- {RUNE_C(0x00AA43), RUNE_C(0x00AA43)},
- {RUNE_C(0x00AA4C), RUNE_C(0x00AA4C)},
- {RUNE_C(0x00AA70), RUNE_C(0x00AA70)},
- {RUNE_C(0x00AA7C), RUNE_C(0x00AA7C)},
- {RUNE_C(0x00AAB0), RUNE_C(0x00AAB0)},
- {RUNE_C(0x00AAB2), RUNE_C(0x00AAB4)},
- {RUNE_C(0x00AAB7), RUNE_C(0x00AAB8)},
- {RUNE_C(0x00AABE), RUNE_C(0x00AABF)},
- {RUNE_C(0x00AAC1), RUNE_C(0x00AAC1)},
- {RUNE_C(0x00AADD), RUNE_C(0x00AADD)},
- {RUNE_C(0x00AAEC), RUNE_C(0x00AAED)},
- {RUNE_C(0x00AAF3), RUNE_C(0x00AAF4)},
- {RUNE_C(0x00AAF6), RUNE_C(0x00AAF6)},
- {RUNE_C(0x00AB5B), RUNE_C(0x00AB5F)},
- {RUNE_C(0x00AB69), RUNE_C(0x00AB6B)},
- {RUNE_C(0x00ABE5), RUNE_C(0x00ABE5)},
- {RUNE_C(0x00ABE8), RUNE_C(0x00ABE8)},
- {RUNE_C(0x00ABED), RUNE_C(0x00ABED)},
- {RUNE_C(0x00FB1E), RUNE_C(0x00FB1E)},
- {RUNE_C(0x00FBB2), RUNE_C(0x00FBC2)},
- {RUNE_C(0x00FE00), RUNE_C(0x00FE0F)},
- {RUNE_C(0x00FE13), RUNE_C(0x00FE13)},
- {RUNE_C(0x00FE20), RUNE_C(0x00FE2F)},
- {RUNE_C(0x00FE52), RUNE_C(0x00FE52)},
- {RUNE_C(0x00FE55), RUNE_C(0x00FE55)},
- {RUNE_C(0x00FEFF), RUNE_C(0x00FEFF)},
- {RUNE_C(0x00FF07), RUNE_C(0x00FF07)},
- {RUNE_C(0x00FF0E), RUNE_C(0x00FF0E)},
- {RUNE_C(0x00FF1A), RUNE_C(0x00FF1A)},
- {RUNE_C(0x00FF3E), RUNE_C(0x00FF3E)},
- {RUNE_C(0x00FF40), RUNE_C(0x00FF40)},
- {RUNE_C(0x00FF70), RUNE_C(0x00FF70)},
- {RUNE_C(0x00FF9E), RUNE_C(0x00FF9F)},
- {RUNE_C(0x00FFE3), RUNE_C(0x00FFE3)},
- {RUNE_C(0x00FFF9), RUNE_C(0x00FFFB)},
- {RUNE_C(0x0101FD), RUNE_C(0x0101FD)},
- {RUNE_C(0x0102E0), RUNE_C(0x0102E0)},
- {RUNE_C(0x010376), RUNE_C(0x01037A)},
- {RUNE_C(0x010780), RUNE_C(0x010785)},
- {RUNE_C(0x010787), RUNE_C(0x0107B0)},
- {RUNE_C(0x0107B2), RUNE_C(0x0107BA)},
- {RUNE_C(0x010A01), RUNE_C(0x010A03)},
- {RUNE_C(0x010A05), RUNE_C(0x010A06)},
- {RUNE_C(0x010A0C), RUNE_C(0x010A0F)},
- {RUNE_C(0x010A38), RUNE_C(0x010A3A)},
- {RUNE_C(0x010A3F), RUNE_C(0x010A3F)},
- {RUNE_C(0x010AE5), RUNE_C(0x010AE6)},
- {RUNE_C(0x010D24), RUNE_C(0x010D27)},
- {RUNE_C(0x010EAB), RUNE_C(0x010EAC)},
- {RUNE_C(0x010EFD), RUNE_C(0x010EFF)},
- {RUNE_C(0x010F46), RUNE_C(0x010F50)},
- {RUNE_C(0x010F82), RUNE_C(0x010F85)},
- {RUNE_C(0x011001), RUNE_C(0x011001)},
- {RUNE_C(0x011038), RUNE_C(0x011046)},
- {RUNE_C(0x011070), RUNE_C(0x011070)},
- {RUNE_C(0x011073), RUNE_C(0x011074)},
- {RUNE_C(0x01107F), RUNE_C(0x011081)},
- {RUNE_C(0x0110B3), RUNE_C(0x0110B6)},
- {RUNE_C(0x0110B9), RUNE_C(0x0110BA)},
- {RUNE_C(0x0110BD), RUNE_C(0x0110BD)},
- {RUNE_C(0x0110C2), RUNE_C(0x0110C2)},
- {RUNE_C(0x0110CD), RUNE_C(0x0110CD)},
- {RUNE_C(0x011100), RUNE_C(0x011102)},
- {RUNE_C(0x011127), RUNE_C(0x01112B)},
- {RUNE_C(0x01112D), RUNE_C(0x011134)},
- {RUNE_C(0x011173), RUNE_C(0x011173)},
- {RUNE_C(0x011180), RUNE_C(0x011181)},
- {RUNE_C(0x0111B6), RUNE_C(0x0111BE)},
- {RUNE_C(0x0111C9), RUNE_C(0x0111CC)},
- {RUNE_C(0x0111CF), RUNE_C(0x0111CF)},
- {RUNE_C(0x01122F), RUNE_C(0x011231)},
- {RUNE_C(0x011234), RUNE_C(0x011234)},
- {RUNE_C(0x011236), RUNE_C(0x011237)},
- {RUNE_C(0x01123E), RUNE_C(0x01123E)},
- {RUNE_C(0x011241), RUNE_C(0x011241)},
- {RUNE_C(0x0112DF), RUNE_C(0x0112DF)},
- {RUNE_C(0x0112E3), RUNE_C(0x0112EA)},
- {RUNE_C(0x011300), RUNE_C(0x011301)},
- {RUNE_C(0x01133B), RUNE_C(0x01133C)},
- {RUNE_C(0x011340), RUNE_C(0x011340)},
- {RUNE_C(0x011366), RUNE_C(0x01136C)},
- {RUNE_C(0x011370), RUNE_C(0x011374)},
- {RUNE_C(0x011438), RUNE_C(0x01143F)},
- {RUNE_C(0x011442), RUNE_C(0x011444)},
- {RUNE_C(0x011446), RUNE_C(0x011446)},
- {RUNE_C(0x01145E), RUNE_C(0x01145E)},
- {RUNE_C(0x0114B3), RUNE_C(0x0114B8)},
- {RUNE_C(0x0114BA), RUNE_C(0x0114BA)},
- {RUNE_C(0x0114BF), RUNE_C(0x0114C0)},
- {RUNE_C(0x0114C2), RUNE_C(0x0114C3)},
- {RUNE_C(0x0115B2), RUNE_C(0x0115B5)},
- {RUNE_C(0x0115BC), RUNE_C(0x0115BD)},
- {RUNE_C(0x0115BF), RUNE_C(0x0115C0)},
- {RUNE_C(0x0115DC), RUNE_C(0x0115DD)},
- {RUNE_C(0x011633), RUNE_C(0x01163A)},
- {RUNE_C(0x01163D), RUNE_C(0x01163D)},
- {RUNE_C(0x01163F), RUNE_C(0x011640)},
- {RUNE_C(0x0116AB), RUNE_C(0x0116AB)},
- {RUNE_C(0x0116AD), RUNE_C(0x0116AD)},
- {RUNE_C(0x0116B0), RUNE_C(0x0116B5)},
- {RUNE_C(0x0116B7), RUNE_C(0x0116B7)},
- {RUNE_C(0x01171D), RUNE_C(0x01171F)},
- {RUNE_C(0x011722), RUNE_C(0x011725)},
- {RUNE_C(0x011727), RUNE_C(0x01172B)},
- {RUNE_C(0x01182F), RUNE_C(0x011837)},
- {RUNE_C(0x011839), RUNE_C(0x01183A)},
- {RUNE_C(0x01193B), RUNE_C(0x01193C)},
- {RUNE_C(0x01193E), RUNE_C(0x01193E)},
- {RUNE_C(0x011943), RUNE_C(0x011943)},
- {RUNE_C(0x0119D4), RUNE_C(0x0119D7)},
- {RUNE_C(0x0119DA), RUNE_C(0x0119DB)},
- {RUNE_C(0x0119E0), RUNE_C(0x0119E0)},
- {RUNE_C(0x011A01), RUNE_C(0x011A0A)},
- {RUNE_C(0x011A33), RUNE_C(0x011A38)},
- {RUNE_C(0x011A3B), RUNE_C(0x011A3E)},
- {RUNE_C(0x011A47), RUNE_C(0x011A47)},
- {RUNE_C(0x011A51), RUNE_C(0x011A56)},
- {RUNE_C(0x011A59), RUNE_C(0x011A5B)},
- {RUNE_C(0x011A8A), RUNE_C(0x011A96)},
- {RUNE_C(0x011A98), RUNE_C(0x011A99)},
- {RUNE_C(0x011C30), RUNE_C(0x011C36)},
- {RUNE_C(0x011C38), RUNE_C(0x011C3D)},
- {RUNE_C(0x011C3F), RUNE_C(0x011C3F)},
- {RUNE_C(0x011C92), RUNE_C(0x011CA7)},
- {RUNE_C(0x011CAA), RUNE_C(0x011CB0)},
- {RUNE_C(0x011CB2), RUNE_C(0x011CB3)},
- {RUNE_C(0x011CB5), RUNE_C(0x011CB6)},
- {RUNE_C(0x011D31), RUNE_C(0x011D36)},
- {RUNE_C(0x011D3A), RUNE_C(0x011D3A)},
- {RUNE_C(0x011D3C), RUNE_C(0x011D3D)},
- {RUNE_C(0x011D3F), RUNE_C(0x011D45)},
- {RUNE_C(0x011D47), RUNE_C(0x011D47)},
- {RUNE_C(0x011D90), RUNE_C(0x011D91)},
- {RUNE_C(0x011D95), RUNE_C(0x011D95)},
- {RUNE_C(0x011D97), RUNE_C(0x011D97)},
- {RUNE_C(0x011EF3), RUNE_C(0x011EF4)},
- {RUNE_C(0x011F00), RUNE_C(0x011F01)},
- {RUNE_C(0x011F36), RUNE_C(0x011F3A)},
- {RUNE_C(0x011F40), RUNE_C(0x011F40)},
- {RUNE_C(0x011F42), RUNE_C(0x011F42)},
- {RUNE_C(0x013430), RUNE_C(0x013440)},
- {RUNE_C(0x013447), RUNE_C(0x013455)},
- {RUNE_C(0x016AF0), RUNE_C(0x016AF4)},
- {RUNE_C(0x016B30), RUNE_C(0x016B36)},
- {RUNE_C(0x016B40), RUNE_C(0x016B43)},
- {RUNE_C(0x016F4F), RUNE_C(0x016F4F)},
- {RUNE_C(0x016F8F), RUNE_C(0x016F9F)},
- {RUNE_C(0x016FE0), RUNE_C(0x016FE1)},
- {RUNE_C(0x016FE3), RUNE_C(0x016FE4)},
- {RUNE_C(0x01AFF0), RUNE_C(0x01AFF3)},
- {RUNE_C(0x01AFF5), RUNE_C(0x01AFFB)},
- {RUNE_C(0x01AFFD), RUNE_C(0x01AFFE)},
- {RUNE_C(0x01BC9D), RUNE_C(0x01BC9E)},
- {RUNE_C(0x01BCA0), RUNE_C(0x01BCA3)},
- {RUNE_C(0x01CF00), RUNE_C(0x01CF2D)},
- {RUNE_C(0x01CF30), RUNE_C(0x01CF46)},
- {RUNE_C(0x01D167), RUNE_C(0x01D169)},
- {RUNE_C(0x01D173), RUNE_C(0x01D182)},
- {RUNE_C(0x01D185), RUNE_C(0x01D18B)},
- {RUNE_C(0x01D1AA), RUNE_C(0x01D1AD)},
- {RUNE_C(0x01D242), RUNE_C(0x01D244)},
- {RUNE_C(0x01DA00), RUNE_C(0x01DA36)},
- {RUNE_C(0x01DA3B), RUNE_C(0x01DA6C)},
- {RUNE_C(0x01DA75), RUNE_C(0x01DA75)},
- {RUNE_C(0x01DA84), RUNE_C(0x01DA84)},
- {RUNE_C(0x01DA9B), RUNE_C(0x01DA9F)},
- {RUNE_C(0x01DAA1), RUNE_C(0x01DAAF)},
- {RUNE_C(0x01E000), RUNE_C(0x01E006)},
- {RUNE_C(0x01E008), RUNE_C(0x01E018)},
- {RUNE_C(0x01E01B), RUNE_C(0x01E021)},
- {RUNE_C(0x01E023), RUNE_C(0x01E024)},
- {RUNE_C(0x01E026), RUNE_C(0x01E02A)},
- {RUNE_C(0x01E030), RUNE_C(0x01E06D)},
- {RUNE_C(0x01E08F), RUNE_C(0x01E08F)},
- {RUNE_C(0x01E130), RUNE_C(0x01E13D)},
- {RUNE_C(0x01E2AE), RUNE_C(0x01E2AE)},
- {RUNE_C(0x01E2EC), RUNE_C(0x01E2EF)},
- {RUNE_C(0x01E4EB), RUNE_C(0x01E4EF)},
- {RUNE_C(0x01E8D0), RUNE_C(0x01E8D6)},
- {RUNE_C(0x01E944), RUNE_C(0x01E94B)},
- {RUNE_C(0x01F3FB), RUNE_C(0x01F3FF)},
- {RUNE_C(0x0E0001), RUNE_C(0x0E0001)},
- {RUNE_C(0x0E0020), RUNE_C(0x0E007F)},
- {RUNE_C(0x0E0100), RUNE_C(0x0E01EF)},
+static constexpr unsigned char stage2[][16] = {
+ {0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x04,
+ 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x90, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x30, 0x04},
+ {0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xF8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF,
+ 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00},
+ {0x3F, 0x00, 0xFF, 0x17, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0xF8, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xC0, 0xBF, 0xFF, 0x3D, 0x00, 0x00},
+ {0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x24},
+ {0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x01, 0x03, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
+ 0xFE, 0x21, 0xFE, 0x00, 0x0C, 0x00, 0x02, 0x00},
+ {0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+ 0x1E, 0x20, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x40},
+ {0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+ 0x86, 0x39, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00},
+ {0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+ 0xBE, 0x21, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xFC},
+ {0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90,
+ 0x1E, 0x20, 0x60, 0x00, 0x0C, 0x00, 0x00, 0x00},
+ {0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0,
+ 0xC1, 0x3D, 0x60, 0x00, 0x0C, 0x00, 0x00, 0x00},
+ {0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90,
+ 0x40, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00},
+ {0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+ 0x1E, 0x20, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00},
+ {0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x04, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x07,
+ 0xC0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x1F,
+ 0x40, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xA0, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x7F},
+ {0xDF, 0xE0, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x1F,
+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFD, 0x66,
+ 0x00, 0x00, 0x00, 0xC3, 0x01, 0x00, 0x1E, 0x00},
+ {0x64, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x0C, 0x00,
+ 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x3F,
+ 0x40, 0xFE, 0x8F, 0x20, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x60, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x87, 0x01, 0x04, 0x0E,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x40, 0x7F, 0xE5, 0x1F, 0xF8, 0x9F},
+ {0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xFF, 0xFF,
+ 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x17,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x0F, 0x00},
+ {0x03, 0x00, 0x00, 0x00, 0x3C, 0x3B, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x40, 0xA3, 0x03, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xCF, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xF7, 0xFF, 0xFD, 0x21, 0x10, 0x03},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x01},
+ {0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0,
+ 0x03, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0x60},
+ {0x00, 0xF8, 0x00, 0x03, 0x90, 0x7C, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xDF, 0xFF, 0x02, 0x80},
+ {0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x20, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x3E, 0x08,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70},
+ {0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F},
+ {0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF7, 0xBF},
+ {0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00},
+ {0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x03},
+ {0x44, 0x08, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x30, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x80},
+ {0x00, 0x00, 0x00, 0x00, 0xC0, 0x3F, 0x00, 0x00,
+ 0x80, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x33,
+ 0x00, 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x66, 0x00,
+ 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9D, 0xC1,
+ 0x02, 0x00, 0x00, 0x20, 0x00, 0x30, 0x58, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xF8, 0x00, 0x0E, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x21, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0x08, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80},
+ {0x80, 0x40, 0x00, 0x04, 0x00, 0x00, 0x00, 0x40,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00},
+ {0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x07},
+ {0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x6E, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xC0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x80},
+ {0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x26,
+ 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x07, 0x00, 0x00, 0x00, 0x80, 0xEF, 0x1F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00},
+ {0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x7F,
+ 0x00, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xD3, 0x40,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0xF8, 0x07, 0x00, 0x00},
+ {0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+ 0x01, 0x00, 0x00, 0x00, 0xC0, 0x1F, 0x1F, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
+ 0x5C, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x85,
+ 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xB0,
+ 0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xA7,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xBF, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0xE0, 0xBC, 0x0F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x06,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xF0, 0x0C, 0x01, 0x00, 0x00, 0x00},
+ {0xFE, 0x07, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x79,
+ 0x80, 0x00, 0x7E, 0x0E, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0xFC, 0x7F, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xBF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFC, 0x6D, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xB4,
+ 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00},
+ {0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x07,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0x81, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00,
+ 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x6F},
+ {0x00, 0x00, 0x00, 0x60, 0x0F, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0xF8, 0xFF},
+ {0xE7, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF8,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x20, 0x00},
+ {0x10, 0x00, 0x00, 0xF8, 0xFE, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0xFF, 0xFF, 0xF9, 0xDB, 0x07, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00},
+ {0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xF0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8},
+ {0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_ci(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 128]], ch % 128);
}
diff --git a/lib/unicode/prop/uprop_is_cwcf.c b/lib/unicode/prop/uprop_is_cwcf.c
index 809e4c5..246c354 100644
--- a/lib/unicode/prop/uprop_is_cwcf.c
+++ b/lib/unicode/prop/uprop_is_cwcf.c
@@ -1,646 +1,392 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xFE, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
- 0xFF, 0xFF, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 7, 6, 6, 8, 6, 6, 6, 6, 6, 6, 6, 6, 9, 6, 10, 11,
+ 6, 12, 6, 6, 13, 6, 6, 6, 6, 6, 6, 6, 14, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 15, 16, 6, 6, 6, 17, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 18, 6, 6, 6, 19,
+ 6, 6, 6, 6, 20, 21, 6, 6, 6, 6, 6, 6, 22, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 23, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 24, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 25, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000100), RUNE_C(0x000100)},
- {RUNE_C(0x000102), RUNE_C(0x000102)},
- {RUNE_C(0x000104), RUNE_C(0x000104)},
- {RUNE_C(0x000106), RUNE_C(0x000106)},
- {RUNE_C(0x000108), RUNE_C(0x000108)},
- {RUNE_C(0x00010A), RUNE_C(0x00010A)},
- {RUNE_C(0x00010C), RUNE_C(0x00010C)},
- {RUNE_C(0x00010E), RUNE_C(0x00010E)},
- {RUNE_C(0x000110), RUNE_C(0x000110)},
- {RUNE_C(0x000112), RUNE_C(0x000112)},
- {RUNE_C(0x000114), RUNE_C(0x000114)},
- {RUNE_C(0x000116), RUNE_C(0x000116)},
- {RUNE_C(0x000118), RUNE_C(0x000118)},
- {RUNE_C(0x00011A), RUNE_C(0x00011A)},
- {RUNE_C(0x00011C), RUNE_C(0x00011C)},
- {RUNE_C(0x00011E), RUNE_C(0x00011E)},
- {RUNE_C(0x000120), RUNE_C(0x000120)},
- {RUNE_C(0x000122), RUNE_C(0x000122)},
- {RUNE_C(0x000124), RUNE_C(0x000124)},
- {RUNE_C(0x000126), RUNE_C(0x000126)},
- {RUNE_C(0x000128), RUNE_C(0x000128)},
- {RUNE_C(0x00012A), RUNE_C(0x00012A)},
- {RUNE_C(0x00012C), RUNE_C(0x00012C)},
- {RUNE_C(0x00012E), RUNE_C(0x00012E)},
- {RUNE_C(0x000130), RUNE_C(0x000130)},
- {RUNE_C(0x000132), RUNE_C(0x000132)},
- {RUNE_C(0x000134), RUNE_C(0x000134)},
- {RUNE_C(0x000136), RUNE_C(0x000136)},
- {RUNE_C(0x000139), RUNE_C(0x000139)},
- {RUNE_C(0x00013B), RUNE_C(0x00013B)},
- {RUNE_C(0x00013D), RUNE_C(0x00013D)},
- {RUNE_C(0x00013F), RUNE_C(0x00013F)},
- {RUNE_C(0x000141), RUNE_C(0x000141)},
- {RUNE_C(0x000143), RUNE_C(0x000143)},
- {RUNE_C(0x000145), RUNE_C(0x000145)},
- {RUNE_C(0x000147), RUNE_C(0x000147)},
- {RUNE_C(0x000149), RUNE_C(0x00014A)},
- {RUNE_C(0x00014C), RUNE_C(0x00014C)},
- {RUNE_C(0x00014E), RUNE_C(0x00014E)},
- {RUNE_C(0x000150), RUNE_C(0x000150)},
- {RUNE_C(0x000152), RUNE_C(0x000152)},
- {RUNE_C(0x000154), RUNE_C(0x000154)},
- {RUNE_C(0x000156), RUNE_C(0x000156)},
- {RUNE_C(0x000158), RUNE_C(0x000158)},
- {RUNE_C(0x00015A), RUNE_C(0x00015A)},
- {RUNE_C(0x00015C), RUNE_C(0x00015C)},
- {RUNE_C(0x00015E), RUNE_C(0x00015E)},
- {RUNE_C(0x000160), RUNE_C(0x000160)},
- {RUNE_C(0x000162), RUNE_C(0x000162)},
- {RUNE_C(0x000164), RUNE_C(0x000164)},
- {RUNE_C(0x000166), RUNE_C(0x000166)},
- {RUNE_C(0x000168), RUNE_C(0x000168)},
- {RUNE_C(0x00016A), RUNE_C(0x00016A)},
- {RUNE_C(0x00016C), RUNE_C(0x00016C)},
- {RUNE_C(0x00016E), RUNE_C(0x00016E)},
- {RUNE_C(0x000170), RUNE_C(0x000170)},
- {RUNE_C(0x000172), RUNE_C(0x000172)},
- {RUNE_C(0x000174), RUNE_C(0x000174)},
- {RUNE_C(0x000176), RUNE_C(0x000176)},
- {RUNE_C(0x000178), RUNE_C(0x000179)},
- {RUNE_C(0x00017B), RUNE_C(0x00017B)},
- {RUNE_C(0x00017D), RUNE_C(0x00017D)},
- {RUNE_C(0x00017F), RUNE_C(0x00017F)},
- {RUNE_C(0x000181), RUNE_C(0x000182)},
- {RUNE_C(0x000184), RUNE_C(0x000184)},
- {RUNE_C(0x000186), RUNE_C(0x000187)},
- {RUNE_C(0x000189), RUNE_C(0x00018B)},
- {RUNE_C(0x00018E), RUNE_C(0x000191)},
- {RUNE_C(0x000193), RUNE_C(0x000194)},
- {RUNE_C(0x000196), RUNE_C(0x000198)},
- {RUNE_C(0x00019C), RUNE_C(0x00019D)},
- {RUNE_C(0x00019F), RUNE_C(0x0001A0)},
- {RUNE_C(0x0001A2), RUNE_C(0x0001A2)},
- {RUNE_C(0x0001A4), RUNE_C(0x0001A4)},
- {RUNE_C(0x0001A6), RUNE_C(0x0001A7)},
- {RUNE_C(0x0001A9), RUNE_C(0x0001A9)},
- {RUNE_C(0x0001AC), RUNE_C(0x0001AC)},
- {RUNE_C(0x0001AE), RUNE_C(0x0001AF)},
- {RUNE_C(0x0001B1), RUNE_C(0x0001B3)},
- {RUNE_C(0x0001B5), RUNE_C(0x0001B5)},
- {RUNE_C(0x0001B7), RUNE_C(0x0001B8)},
- {RUNE_C(0x0001BC), RUNE_C(0x0001BC)},
- {RUNE_C(0x0001C4), RUNE_C(0x0001C5)},
- {RUNE_C(0x0001C7), RUNE_C(0x0001C8)},
- {RUNE_C(0x0001CA), RUNE_C(0x0001CB)},
- {RUNE_C(0x0001CD), RUNE_C(0x0001CD)},
- {RUNE_C(0x0001CF), RUNE_C(0x0001CF)},
- {RUNE_C(0x0001D1), RUNE_C(0x0001D1)},
- {RUNE_C(0x0001D3), RUNE_C(0x0001D3)},
- {RUNE_C(0x0001D5), RUNE_C(0x0001D5)},
- {RUNE_C(0x0001D7), RUNE_C(0x0001D7)},
- {RUNE_C(0x0001D9), RUNE_C(0x0001D9)},
- {RUNE_C(0x0001DB), RUNE_C(0x0001DB)},
- {RUNE_C(0x0001DE), RUNE_C(0x0001DE)},
- {RUNE_C(0x0001E0), RUNE_C(0x0001E0)},
- {RUNE_C(0x0001E2), RUNE_C(0x0001E2)},
- {RUNE_C(0x0001E4), RUNE_C(0x0001E4)},
- {RUNE_C(0x0001E6), RUNE_C(0x0001E6)},
- {RUNE_C(0x0001E8), RUNE_C(0x0001E8)},
- {RUNE_C(0x0001EA), RUNE_C(0x0001EA)},
- {RUNE_C(0x0001EC), RUNE_C(0x0001EC)},
- {RUNE_C(0x0001EE), RUNE_C(0x0001EE)},
- {RUNE_C(0x0001F1), RUNE_C(0x0001F2)},
- {RUNE_C(0x0001F4), RUNE_C(0x0001F4)},
- {RUNE_C(0x0001F6), RUNE_C(0x0001F8)},
- {RUNE_C(0x0001FA), RUNE_C(0x0001FA)},
- {RUNE_C(0x0001FC), RUNE_C(0x0001FC)},
- {RUNE_C(0x0001FE), RUNE_C(0x0001FE)},
- {RUNE_C(0x000200), RUNE_C(0x000200)},
- {RUNE_C(0x000202), RUNE_C(0x000202)},
- {RUNE_C(0x000204), RUNE_C(0x000204)},
- {RUNE_C(0x000206), RUNE_C(0x000206)},
- {RUNE_C(0x000208), RUNE_C(0x000208)},
- {RUNE_C(0x00020A), RUNE_C(0x00020A)},
- {RUNE_C(0x00020C), RUNE_C(0x00020C)},
- {RUNE_C(0x00020E), RUNE_C(0x00020E)},
- {RUNE_C(0x000210), RUNE_C(0x000210)},
- {RUNE_C(0x000212), RUNE_C(0x000212)},
- {RUNE_C(0x000214), RUNE_C(0x000214)},
- {RUNE_C(0x000216), RUNE_C(0x000216)},
- {RUNE_C(0x000218), RUNE_C(0x000218)},
- {RUNE_C(0x00021A), RUNE_C(0x00021A)},
- {RUNE_C(0x00021C), RUNE_C(0x00021C)},
- {RUNE_C(0x00021E), RUNE_C(0x00021E)},
- {RUNE_C(0x000220), RUNE_C(0x000220)},
- {RUNE_C(0x000222), RUNE_C(0x000222)},
- {RUNE_C(0x000224), RUNE_C(0x000224)},
- {RUNE_C(0x000226), RUNE_C(0x000226)},
- {RUNE_C(0x000228), RUNE_C(0x000228)},
- {RUNE_C(0x00022A), RUNE_C(0x00022A)},
- {RUNE_C(0x00022C), RUNE_C(0x00022C)},
- {RUNE_C(0x00022E), RUNE_C(0x00022E)},
- {RUNE_C(0x000230), RUNE_C(0x000230)},
- {RUNE_C(0x000232), RUNE_C(0x000232)},
- {RUNE_C(0x00023A), RUNE_C(0x00023B)},
- {RUNE_C(0x00023D), RUNE_C(0x00023E)},
- {RUNE_C(0x000241), RUNE_C(0x000241)},
- {RUNE_C(0x000243), RUNE_C(0x000246)},
- {RUNE_C(0x000248), RUNE_C(0x000248)},
- {RUNE_C(0x00024A), RUNE_C(0x00024A)},
- {RUNE_C(0x00024C), RUNE_C(0x00024C)},
- {RUNE_C(0x00024E), RUNE_C(0x00024E)},
- {RUNE_C(0x000345), RUNE_C(0x000345)},
- {RUNE_C(0x000370), RUNE_C(0x000370)},
- {RUNE_C(0x000372), RUNE_C(0x000372)},
- {RUNE_C(0x000376), RUNE_C(0x000376)},
- {RUNE_C(0x00037F), RUNE_C(0x00037F)},
- {RUNE_C(0x000386), RUNE_C(0x000386)},
- {RUNE_C(0x000388), RUNE_C(0x00038A)},
- {RUNE_C(0x00038C), RUNE_C(0x00038C)},
- {RUNE_C(0x00038E), RUNE_C(0x00038F)},
- {RUNE_C(0x000391), RUNE_C(0x0003A1)},
- {RUNE_C(0x0003A3), RUNE_C(0x0003AB)},
- {RUNE_C(0x0003C2), RUNE_C(0x0003C2)},
- {RUNE_C(0x0003CF), RUNE_C(0x0003D1)},
- {RUNE_C(0x0003D5), RUNE_C(0x0003D6)},
- {RUNE_C(0x0003D8), RUNE_C(0x0003D8)},
- {RUNE_C(0x0003DA), RUNE_C(0x0003DA)},
- {RUNE_C(0x0003DC), RUNE_C(0x0003DC)},
- {RUNE_C(0x0003DE), RUNE_C(0x0003DE)},
- {RUNE_C(0x0003E0), RUNE_C(0x0003E0)},
- {RUNE_C(0x0003E2), RUNE_C(0x0003E2)},
- {RUNE_C(0x0003E4), RUNE_C(0x0003E4)},
- {RUNE_C(0x0003E6), RUNE_C(0x0003E6)},
- {RUNE_C(0x0003E8), RUNE_C(0x0003E8)},
- {RUNE_C(0x0003EA), RUNE_C(0x0003EA)},
- {RUNE_C(0x0003EC), RUNE_C(0x0003EC)},
- {RUNE_C(0x0003EE), RUNE_C(0x0003EE)},
- {RUNE_C(0x0003F0), RUNE_C(0x0003F1)},
- {RUNE_C(0x0003F4), RUNE_C(0x0003F5)},
- {RUNE_C(0x0003F7), RUNE_C(0x0003F7)},
- {RUNE_C(0x0003F9), RUNE_C(0x0003FA)},
- {RUNE_C(0x0003FD), RUNE_C(0x00042F)},
- {RUNE_C(0x000460), RUNE_C(0x000460)},
- {RUNE_C(0x000462), RUNE_C(0x000462)},
- {RUNE_C(0x000464), RUNE_C(0x000464)},
- {RUNE_C(0x000466), RUNE_C(0x000466)},
- {RUNE_C(0x000468), RUNE_C(0x000468)},
- {RUNE_C(0x00046A), RUNE_C(0x00046A)},
- {RUNE_C(0x00046C), RUNE_C(0x00046C)},
- {RUNE_C(0x00046E), RUNE_C(0x00046E)},
- {RUNE_C(0x000470), RUNE_C(0x000470)},
- {RUNE_C(0x000472), RUNE_C(0x000472)},
- {RUNE_C(0x000474), RUNE_C(0x000474)},
- {RUNE_C(0x000476), RUNE_C(0x000476)},
- {RUNE_C(0x000478), RUNE_C(0x000478)},
- {RUNE_C(0x00047A), RUNE_C(0x00047A)},
- {RUNE_C(0x00047C), RUNE_C(0x00047C)},
- {RUNE_C(0x00047E), RUNE_C(0x00047E)},
- {RUNE_C(0x000480), RUNE_C(0x000480)},
- {RUNE_C(0x00048A), RUNE_C(0x00048A)},
- {RUNE_C(0x00048C), RUNE_C(0x00048C)},
- {RUNE_C(0x00048E), RUNE_C(0x00048E)},
- {RUNE_C(0x000490), RUNE_C(0x000490)},
- {RUNE_C(0x000492), RUNE_C(0x000492)},
- {RUNE_C(0x000494), RUNE_C(0x000494)},
- {RUNE_C(0x000496), RUNE_C(0x000496)},
- {RUNE_C(0x000498), RUNE_C(0x000498)},
- {RUNE_C(0x00049A), RUNE_C(0x00049A)},
- {RUNE_C(0x00049C), RUNE_C(0x00049C)},
- {RUNE_C(0x00049E), RUNE_C(0x00049E)},
- {RUNE_C(0x0004A0), RUNE_C(0x0004A0)},
- {RUNE_C(0x0004A2), RUNE_C(0x0004A2)},
- {RUNE_C(0x0004A4), RUNE_C(0x0004A4)},
- {RUNE_C(0x0004A6), RUNE_C(0x0004A6)},
- {RUNE_C(0x0004A8), RUNE_C(0x0004A8)},
- {RUNE_C(0x0004AA), RUNE_C(0x0004AA)},
- {RUNE_C(0x0004AC), RUNE_C(0x0004AC)},
- {RUNE_C(0x0004AE), RUNE_C(0x0004AE)},
- {RUNE_C(0x0004B0), RUNE_C(0x0004B0)},
- {RUNE_C(0x0004B2), RUNE_C(0x0004B2)},
- {RUNE_C(0x0004B4), RUNE_C(0x0004B4)},
- {RUNE_C(0x0004B6), RUNE_C(0x0004B6)},
- {RUNE_C(0x0004B8), RUNE_C(0x0004B8)},
- {RUNE_C(0x0004BA), RUNE_C(0x0004BA)},
- {RUNE_C(0x0004BC), RUNE_C(0x0004BC)},
- {RUNE_C(0x0004BE), RUNE_C(0x0004BE)},
- {RUNE_C(0x0004C0), RUNE_C(0x0004C1)},
- {RUNE_C(0x0004C3), RUNE_C(0x0004C3)},
- {RUNE_C(0x0004C5), RUNE_C(0x0004C5)},
- {RUNE_C(0x0004C7), RUNE_C(0x0004C7)},
- {RUNE_C(0x0004C9), RUNE_C(0x0004C9)},
- {RUNE_C(0x0004CB), RUNE_C(0x0004CB)},
- {RUNE_C(0x0004CD), RUNE_C(0x0004CD)},
- {RUNE_C(0x0004D0), RUNE_C(0x0004D0)},
- {RUNE_C(0x0004D2), RUNE_C(0x0004D2)},
- {RUNE_C(0x0004D4), RUNE_C(0x0004D4)},
- {RUNE_C(0x0004D6), RUNE_C(0x0004D6)},
- {RUNE_C(0x0004D8), RUNE_C(0x0004D8)},
- {RUNE_C(0x0004DA), RUNE_C(0x0004DA)},
- {RUNE_C(0x0004DC), RUNE_C(0x0004DC)},
- {RUNE_C(0x0004DE), RUNE_C(0x0004DE)},
- {RUNE_C(0x0004E0), RUNE_C(0x0004E0)},
- {RUNE_C(0x0004E2), RUNE_C(0x0004E2)},
- {RUNE_C(0x0004E4), RUNE_C(0x0004E4)},
- {RUNE_C(0x0004E6), RUNE_C(0x0004E6)},
- {RUNE_C(0x0004E8), RUNE_C(0x0004E8)},
- {RUNE_C(0x0004EA), RUNE_C(0x0004EA)},
- {RUNE_C(0x0004EC), RUNE_C(0x0004EC)},
- {RUNE_C(0x0004EE), RUNE_C(0x0004EE)},
- {RUNE_C(0x0004F0), RUNE_C(0x0004F0)},
- {RUNE_C(0x0004F2), RUNE_C(0x0004F2)},
- {RUNE_C(0x0004F4), RUNE_C(0x0004F4)},
- {RUNE_C(0x0004F6), RUNE_C(0x0004F6)},
- {RUNE_C(0x0004F8), RUNE_C(0x0004F8)},
- {RUNE_C(0x0004FA), RUNE_C(0x0004FA)},
- {RUNE_C(0x0004FC), RUNE_C(0x0004FC)},
- {RUNE_C(0x0004FE), RUNE_C(0x0004FE)},
- {RUNE_C(0x000500), RUNE_C(0x000500)},
- {RUNE_C(0x000502), RUNE_C(0x000502)},
- {RUNE_C(0x000504), RUNE_C(0x000504)},
- {RUNE_C(0x000506), RUNE_C(0x000506)},
- {RUNE_C(0x000508), RUNE_C(0x000508)},
- {RUNE_C(0x00050A), RUNE_C(0x00050A)},
- {RUNE_C(0x00050C), RUNE_C(0x00050C)},
- {RUNE_C(0x00050E), RUNE_C(0x00050E)},
- {RUNE_C(0x000510), RUNE_C(0x000510)},
- {RUNE_C(0x000512), RUNE_C(0x000512)},
- {RUNE_C(0x000514), RUNE_C(0x000514)},
- {RUNE_C(0x000516), RUNE_C(0x000516)},
- {RUNE_C(0x000518), RUNE_C(0x000518)},
- {RUNE_C(0x00051A), RUNE_C(0x00051A)},
- {RUNE_C(0x00051C), RUNE_C(0x00051C)},
- {RUNE_C(0x00051E), RUNE_C(0x00051E)},
- {RUNE_C(0x000520), RUNE_C(0x000520)},
- {RUNE_C(0x000522), RUNE_C(0x000522)},
- {RUNE_C(0x000524), RUNE_C(0x000524)},
- {RUNE_C(0x000526), RUNE_C(0x000526)},
- {RUNE_C(0x000528), RUNE_C(0x000528)},
- {RUNE_C(0x00052A), RUNE_C(0x00052A)},
- {RUNE_C(0x00052C), RUNE_C(0x00052C)},
- {RUNE_C(0x00052E), RUNE_C(0x00052E)},
- {RUNE_C(0x000531), RUNE_C(0x000556)},
- {RUNE_C(0x000587), RUNE_C(0x000587)},
- {RUNE_C(0x0010A0), RUNE_C(0x0010C5)},
- {RUNE_C(0x0010C7), RUNE_C(0x0010C7)},
- {RUNE_C(0x0010CD), RUNE_C(0x0010CD)},
- {RUNE_C(0x0013F8), RUNE_C(0x0013FD)},
- {RUNE_C(0x001C80), RUNE_C(0x001C88)},
- {RUNE_C(0x001C90), RUNE_C(0x001CBA)},
- {RUNE_C(0x001CBD), RUNE_C(0x001CBF)},
- {RUNE_C(0x001E00), RUNE_C(0x001E00)},
- {RUNE_C(0x001E02), RUNE_C(0x001E02)},
- {RUNE_C(0x001E04), RUNE_C(0x001E04)},
- {RUNE_C(0x001E06), RUNE_C(0x001E06)},
- {RUNE_C(0x001E08), RUNE_C(0x001E08)},
- {RUNE_C(0x001E0A), RUNE_C(0x001E0A)},
- {RUNE_C(0x001E0C), RUNE_C(0x001E0C)},
- {RUNE_C(0x001E0E), RUNE_C(0x001E0E)},
- {RUNE_C(0x001E10), RUNE_C(0x001E10)},
- {RUNE_C(0x001E12), RUNE_C(0x001E12)},
- {RUNE_C(0x001E14), RUNE_C(0x001E14)},
- {RUNE_C(0x001E16), RUNE_C(0x001E16)},
- {RUNE_C(0x001E18), RUNE_C(0x001E18)},
- {RUNE_C(0x001E1A), RUNE_C(0x001E1A)},
- {RUNE_C(0x001E1C), RUNE_C(0x001E1C)},
- {RUNE_C(0x001E1E), RUNE_C(0x001E1E)},
- {RUNE_C(0x001E20), RUNE_C(0x001E20)},
- {RUNE_C(0x001E22), RUNE_C(0x001E22)},
- {RUNE_C(0x001E24), RUNE_C(0x001E24)},
- {RUNE_C(0x001E26), RUNE_C(0x001E26)},
- {RUNE_C(0x001E28), RUNE_C(0x001E28)},
- {RUNE_C(0x001E2A), RUNE_C(0x001E2A)},
- {RUNE_C(0x001E2C), RUNE_C(0x001E2C)},
- {RUNE_C(0x001E2E), RUNE_C(0x001E2E)},
- {RUNE_C(0x001E30), RUNE_C(0x001E30)},
- {RUNE_C(0x001E32), RUNE_C(0x001E32)},
- {RUNE_C(0x001E34), RUNE_C(0x001E34)},
- {RUNE_C(0x001E36), RUNE_C(0x001E36)},
- {RUNE_C(0x001E38), RUNE_C(0x001E38)},
- {RUNE_C(0x001E3A), RUNE_C(0x001E3A)},
- {RUNE_C(0x001E3C), RUNE_C(0x001E3C)},
- {RUNE_C(0x001E3E), RUNE_C(0x001E3E)},
- {RUNE_C(0x001E40), RUNE_C(0x001E40)},
- {RUNE_C(0x001E42), RUNE_C(0x001E42)},
- {RUNE_C(0x001E44), RUNE_C(0x001E44)},
- {RUNE_C(0x001E46), RUNE_C(0x001E46)},
- {RUNE_C(0x001E48), RUNE_C(0x001E48)},
- {RUNE_C(0x001E4A), RUNE_C(0x001E4A)},
- {RUNE_C(0x001E4C), RUNE_C(0x001E4C)},
- {RUNE_C(0x001E4E), RUNE_C(0x001E4E)},
- {RUNE_C(0x001E50), RUNE_C(0x001E50)},
- {RUNE_C(0x001E52), RUNE_C(0x001E52)},
- {RUNE_C(0x001E54), RUNE_C(0x001E54)},
- {RUNE_C(0x001E56), RUNE_C(0x001E56)},
- {RUNE_C(0x001E58), RUNE_C(0x001E58)},
- {RUNE_C(0x001E5A), RUNE_C(0x001E5A)},
- {RUNE_C(0x001E5C), RUNE_C(0x001E5C)},
- {RUNE_C(0x001E5E), RUNE_C(0x001E5E)},
- {RUNE_C(0x001E60), RUNE_C(0x001E60)},
- {RUNE_C(0x001E62), RUNE_C(0x001E62)},
- {RUNE_C(0x001E64), RUNE_C(0x001E64)},
- {RUNE_C(0x001E66), RUNE_C(0x001E66)},
- {RUNE_C(0x001E68), RUNE_C(0x001E68)},
- {RUNE_C(0x001E6A), RUNE_C(0x001E6A)},
- {RUNE_C(0x001E6C), RUNE_C(0x001E6C)},
- {RUNE_C(0x001E6E), RUNE_C(0x001E6E)},
- {RUNE_C(0x001E70), RUNE_C(0x001E70)},
- {RUNE_C(0x001E72), RUNE_C(0x001E72)},
- {RUNE_C(0x001E74), RUNE_C(0x001E74)},
- {RUNE_C(0x001E76), RUNE_C(0x001E76)},
- {RUNE_C(0x001E78), RUNE_C(0x001E78)},
- {RUNE_C(0x001E7A), RUNE_C(0x001E7A)},
- {RUNE_C(0x001E7C), RUNE_C(0x001E7C)},
- {RUNE_C(0x001E7E), RUNE_C(0x001E7E)},
- {RUNE_C(0x001E80), RUNE_C(0x001E80)},
- {RUNE_C(0x001E82), RUNE_C(0x001E82)},
- {RUNE_C(0x001E84), RUNE_C(0x001E84)},
- {RUNE_C(0x001E86), RUNE_C(0x001E86)},
- {RUNE_C(0x001E88), RUNE_C(0x001E88)},
- {RUNE_C(0x001E8A), RUNE_C(0x001E8A)},
- {RUNE_C(0x001E8C), RUNE_C(0x001E8C)},
- {RUNE_C(0x001E8E), RUNE_C(0x001E8E)},
- {RUNE_C(0x001E90), RUNE_C(0x001E90)},
- {RUNE_C(0x001E92), RUNE_C(0x001E92)},
- {RUNE_C(0x001E94), RUNE_C(0x001E94)},
- {RUNE_C(0x001E9A), RUNE_C(0x001E9B)},
- {RUNE_C(0x001E9E), RUNE_C(0x001E9E)},
- {RUNE_C(0x001EA0), RUNE_C(0x001EA0)},
- {RUNE_C(0x001EA2), RUNE_C(0x001EA2)},
- {RUNE_C(0x001EA4), RUNE_C(0x001EA4)},
- {RUNE_C(0x001EA6), RUNE_C(0x001EA6)},
- {RUNE_C(0x001EA8), RUNE_C(0x001EA8)},
- {RUNE_C(0x001EAA), RUNE_C(0x001EAA)},
- {RUNE_C(0x001EAC), RUNE_C(0x001EAC)},
- {RUNE_C(0x001EAE), RUNE_C(0x001EAE)},
- {RUNE_C(0x001EB0), RUNE_C(0x001EB0)},
- {RUNE_C(0x001EB2), RUNE_C(0x001EB2)},
- {RUNE_C(0x001EB4), RUNE_C(0x001EB4)},
- {RUNE_C(0x001EB6), RUNE_C(0x001EB6)},
- {RUNE_C(0x001EB8), RUNE_C(0x001EB8)},
- {RUNE_C(0x001EBA), RUNE_C(0x001EBA)},
- {RUNE_C(0x001EBC), RUNE_C(0x001EBC)},
- {RUNE_C(0x001EBE), RUNE_C(0x001EBE)},
- {RUNE_C(0x001EC0), RUNE_C(0x001EC0)},
- {RUNE_C(0x001EC2), RUNE_C(0x001EC2)},
- {RUNE_C(0x001EC4), RUNE_C(0x001EC4)},
- {RUNE_C(0x001EC6), RUNE_C(0x001EC6)},
- {RUNE_C(0x001EC8), RUNE_C(0x001EC8)},
- {RUNE_C(0x001ECA), RUNE_C(0x001ECA)},
- {RUNE_C(0x001ECC), RUNE_C(0x001ECC)},
- {RUNE_C(0x001ECE), RUNE_C(0x001ECE)},
- {RUNE_C(0x001ED0), RUNE_C(0x001ED0)},
- {RUNE_C(0x001ED2), RUNE_C(0x001ED2)},
- {RUNE_C(0x001ED4), RUNE_C(0x001ED4)},
- {RUNE_C(0x001ED6), RUNE_C(0x001ED6)},
- {RUNE_C(0x001ED8), RUNE_C(0x001ED8)},
- {RUNE_C(0x001EDA), RUNE_C(0x001EDA)},
- {RUNE_C(0x001EDC), RUNE_C(0x001EDC)},
- {RUNE_C(0x001EDE), RUNE_C(0x001EDE)},
- {RUNE_C(0x001EE0), RUNE_C(0x001EE0)},
- {RUNE_C(0x001EE2), RUNE_C(0x001EE2)},
- {RUNE_C(0x001EE4), RUNE_C(0x001EE4)},
- {RUNE_C(0x001EE6), RUNE_C(0x001EE6)},
- {RUNE_C(0x001EE8), RUNE_C(0x001EE8)},
- {RUNE_C(0x001EEA), RUNE_C(0x001EEA)},
- {RUNE_C(0x001EEC), RUNE_C(0x001EEC)},
- {RUNE_C(0x001EEE), RUNE_C(0x001EEE)},
- {RUNE_C(0x001EF0), RUNE_C(0x001EF0)},
- {RUNE_C(0x001EF2), RUNE_C(0x001EF2)},
- {RUNE_C(0x001EF4), RUNE_C(0x001EF4)},
- {RUNE_C(0x001EF6), RUNE_C(0x001EF6)},
- {RUNE_C(0x001EF8), RUNE_C(0x001EF8)},
- {RUNE_C(0x001EFA), RUNE_C(0x001EFA)},
- {RUNE_C(0x001EFC), RUNE_C(0x001EFC)},
- {RUNE_C(0x001EFE), RUNE_C(0x001EFE)},
- {RUNE_C(0x001F08), RUNE_C(0x001F0F)},
- {RUNE_C(0x001F18), RUNE_C(0x001F1D)},
- {RUNE_C(0x001F28), RUNE_C(0x001F2F)},
- {RUNE_C(0x001F38), RUNE_C(0x001F3F)},
- {RUNE_C(0x001F48), RUNE_C(0x001F4D)},
- {RUNE_C(0x001F59), RUNE_C(0x001F59)},
- {RUNE_C(0x001F5B), RUNE_C(0x001F5B)},
- {RUNE_C(0x001F5D), RUNE_C(0x001F5D)},
- {RUNE_C(0x001F5F), RUNE_C(0x001F5F)},
- {RUNE_C(0x001F68), RUNE_C(0x001F6F)},
- {RUNE_C(0x001F80), RUNE_C(0x001FAF)},
- {RUNE_C(0x001FB2), RUNE_C(0x001FB4)},
- {RUNE_C(0x001FB7), RUNE_C(0x001FBC)},
- {RUNE_C(0x001FC2), RUNE_C(0x001FC4)},
- {RUNE_C(0x001FC7), RUNE_C(0x001FCC)},
- {RUNE_C(0x001FD8), RUNE_C(0x001FDB)},
- {RUNE_C(0x001FE8), RUNE_C(0x001FEC)},
- {RUNE_C(0x001FF2), RUNE_C(0x001FF4)},
- {RUNE_C(0x001FF7), RUNE_C(0x001FFC)},
- {RUNE_C(0x002126), RUNE_C(0x002126)},
- {RUNE_C(0x00212A), RUNE_C(0x00212B)},
- {RUNE_C(0x002132), RUNE_C(0x002132)},
- {RUNE_C(0x002160), RUNE_C(0x00216F)},
- {RUNE_C(0x002183), RUNE_C(0x002183)},
- {RUNE_C(0x0024B6), RUNE_C(0x0024CF)},
- {RUNE_C(0x002C00), RUNE_C(0x002C2F)},
- {RUNE_C(0x002C60), RUNE_C(0x002C60)},
- {RUNE_C(0x002C62), RUNE_C(0x002C64)},
- {RUNE_C(0x002C67), RUNE_C(0x002C67)},
- {RUNE_C(0x002C69), RUNE_C(0x002C69)},
- {RUNE_C(0x002C6B), RUNE_C(0x002C6B)},
- {RUNE_C(0x002C6D), RUNE_C(0x002C70)},
- {RUNE_C(0x002C72), RUNE_C(0x002C72)},
- {RUNE_C(0x002C75), RUNE_C(0x002C75)},
- {RUNE_C(0x002C7E), RUNE_C(0x002C80)},
- {RUNE_C(0x002C82), RUNE_C(0x002C82)},
- {RUNE_C(0x002C84), RUNE_C(0x002C84)},
- {RUNE_C(0x002C86), RUNE_C(0x002C86)},
- {RUNE_C(0x002C88), RUNE_C(0x002C88)},
- {RUNE_C(0x002C8A), RUNE_C(0x002C8A)},
- {RUNE_C(0x002C8C), RUNE_C(0x002C8C)},
- {RUNE_C(0x002C8E), RUNE_C(0x002C8E)},
- {RUNE_C(0x002C90), RUNE_C(0x002C90)},
- {RUNE_C(0x002C92), RUNE_C(0x002C92)},
- {RUNE_C(0x002C94), RUNE_C(0x002C94)},
- {RUNE_C(0x002C96), RUNE_C(0x002C96)},
- {RUNE_C(0x002C98), RUNE_C(0x002C98)},
- {RUNE_C(0x002C9A), RUNE_C(0x002C9A)},
- {RUNE_C(0x002C9C), RUNE_C(0x002C9C)},
- {RUNE_C(0x002C9E), RUNE_C(0x002C9E)},
- {RUNE_C(0x002CA0), RUNE_C(0x002CA0)},
- {RUNE_C(0x002CA2), RUNE_C(0x002CA2)},
- {RUNE_C(0x002CA4), RUNE_C(0x002CA4)},
- {RUNE_C(0x002CA6), RUNE_C(0x002CA6)},
- {RUNE_C(0x002CA8), RUNE_C(0x002CA8)},
- {RUNE_C(0x002CAA), RUNE_C(0x002CAA)},
- {RUNE_C(0x002CAC), RUNE_C(0x002CAC)},
- {RUNE_C(0x002CAE), RUNE_C(0x002CAE)},
- {RUNE_C(0x002CB0), RUNE_C(0x002CB0)},
- {RUNE_C(0x002CB2), RUNE_C(0x002CB2)},
- {RUNE_C(0x002CB4), RUNE_C(0x002CB4)},
- {RUNE_C(0x002CB6), RUNE_C(0x002CB6)},
- {RUNE_C(0x002CB8), RUNE_C(0x002CB8)},
- {RUNE_C(0x002CBA), RUNE_C(0x002CBA)},
- {RUNE_C(0x002CBC), RUNE_C(0x002CBC)},
- {RUNE_C(0x002CBE), RUNE_C(0x002CBE)},
- {RUNE_C(0x002CC0), RUNE_C(0x002CC0)},
- {RUNE_C(0x002CC2), RUNE_C(0x002CC2)},
- {RUNE_C(0x002CC4), RUNE_C(0x002CC4)},
- {RUNE_C(0x002CC6), RUNE_C(0x002CC6)},
- {RUNE_C(0x002CC8), RUNE_C(0x002CC8)},
- {RUNE_C(0x002CCA), RUNE_C(0x002CCA)},
- {RUNE_C(0x002CCC), RUNE_C(0x002CCC)},
- {RUNE_C(0x002CCE), RUNE_C(0x002CCE)},
- {RUNE_C(0x002CD0), RUNE_C(0x002CD0)},
- {RUNE_C(0x002CD2), RUNE_C(0x002CD2)},
- {RUNE_C(0x002CD4), RUNE_C(0x002CD4)},
- {RUNE_C(0x002CD6), RUNE_C(0x002CD6)},
- {RUNE_C(0x002CD8), RUNE_C(0x002CD8)},
- {RUNE_C(0x002CDA), RUNE_C(0x002CDA)},
- {RUNE_C(0x002CDC), RUNE_C(0x002CDC)},
- {RUNE_C(0x002CDE), RUNE_C(0x002CDE)},
- {RUNE_C(0x002CE0), RUNE_C(0x002CE0)},
- {RUNE_C(0x002CE2), RUNE_C(0x002CE2)},
- {RUNE_C(0x002CEB), RUNE_C(0x002CEB)},
- {RUNE_C(0x002CED), RUNE_C(0x002CED)},
- {RUNE_C(0x002CF2), RUNE_C(0x002CF2)},
- {RUNE_C(0x00A640), RUNE_C(0x00A640)},
- {RUNE_C(0x00A642), RUNE_C(0x00A642)},
- {RUNE_C(0x00A644), RUNE_C(0x00A644)},
- {RUNE_C(0x00A646), RUNE_C(0x00A646)},
- {RUNE_C(0x00A648), RUNE_C(0x00A648)},
- {RUNE_C(0x00A64A), RUNE_C(0x00A64A)},
- {RUNE_C(0x00A64C), RUNE_C(0x00A64C)},
- {RUNE_C(0x00A64E), RUNE_C(0x00A64E)},
- {RUNE_C(0x00A650), RUNE_C(0x00A650)},
- {RUNE_C(0x00A652), RUNE_C(0x00A652)},
- {RUNE_C(0x00A654), RUNE_C(0x00A654)},
- {RUNE_C(0x00A656), RUNE_C(0x00A656)},
- {RUNE_C(0x00A658), RUNE_C(0x00A658)},
- {RUNE_C(0x00A65A), RUNE_C(0x00A65A)},
- {RUNE_C(0x00A65C), RUNE_C(0x00A65C)},
- {RUNE_C(0x00A65E), RUNE_C(0x00A65E)},
- {RUNE_C(0x00A660), RUNE_C(0x00A660)},
- {RUNE_C(0x00A662), RUNE_C(0x00A662)},
- {RUNE_C(0x00A664), RUNE_C(0x00A664)},
- {RUNE_C(0x00A666), RUNE_C(0x00A666)},
- {RUNE_C(0x00A668), RUNE_C(0x00A668)},
- {RUNE_C(0x00A66A), RUNE_C(0x00A66A)},
- {RUNE_C(0x00A66C), RUNE_C(0x00A66C)},
- {RUNE_C(0x00A680), RUNE_C(0x00A680)},
- {RUNE_C(0x00A682), RUNE_C(0x00A682)},
- {RUNE_C(0x00A684), RUNE_C(0x00A684)},
- {RUNE_C(0x00A686), RUNE_C(0x00A686)},
- {RUNE_C(0x00A688), RUNE_C(0x00A688)},
- {RUNE_C(0x00A68A), RUNE_C(0x00A68A)},
- {RUNE_C(0x00A68C), RUNE_C(0x00A68C)},
- {RUNE_C(0x00A68E), RUNE_C(0x00A68E)},
- {RUNE_C(0x00A690), RUNE_C(0x00A690)},
- {RUNE_C(0x00A692), RUNE_C(0x00A692)},
- {RUNE_C(0x00A694), RUNE_C(0x00A694)},
- {RUNE_C(0x00A696), RUNE_C(0x00A696)},
- {RUNE_C(0x00A698), RUNE_C(0x00A698)},
- {RUNE_C(0x00A69A), RUNE_C(0x00A69A)},
- {RUNE_C(0x00A722), RUNE_C(0x00A722)},
- {RUNE_C(0x00A724), RUNE_C(0x00A724)},
- {RUNE_C(0x00A726), RUNE_C(0x00A726)},
- {RUNE_C(0x00A728), RUNE_C(0x00A728)},
- {RUNE_C(0x00A72A), RUNE_C(0x00A72A)},
- {RUNE_C(0x00A72C), RUNE_C(0x00A72C)},
- {RUNE_C(0x00A72E), RUNE_C(0x00A72E)},
- {RUNE_C(0x00A732), RUNE_C(0x00A732)},
- {RUNE_C(0x00A734), RUNE_C(0x00A734)},
- {RUNE_C(0x00A736), RUNE_C(0x00A736)},
- {RUNE_C(0x00A738), RUNE_C(0x00A738)},
- {RUNE_C(0x00A73A), RUNE_C(0x00A73A)},
- {RUNE_C(0x00A73C), RUNE_C(0x00A73C)},
- {RUNE_C(0x00A73E), RUNE_C(0x00A73E)},
- {RUNE_C(0x00A740), RUNE_C(0x00A740)},
- {RUNE_C(0x00A742), RUNE_C(0x00A742)},
- {RUNE_C(0x00A744), RUNE_C(0x00A744)},
- {RUNE_C(0x00A746), RUNE_C(0x00A746)},
- {RUNE_C(0x00A748), RUNE_C(0x00A748)},
- {RUNE_C(0x00A74A), RUNE_C(0x00A74A)},
- {RUNE_C(0x00A74C), RUNE_C(0x00A74C)},
- {RUNE_C(0x00A74E), RUNE_C(0x00A74E)},
- {RUNE_C(0x00A750), RUNE_C(0x00A750)},
- {RUNE_C(0x00A752), RUNE_C(0x00A752)},
- {RUNE_C(0x00A754), RUNE_C(0x00A754)},
- {RUNE_C(0x00A756), RUNE_C(0x00A756)},
- {RUNE_C(0x00A758), RUNE_C(0x00A758)},
- {RUNE_C(0x00A75A), RUNE_C(0x00A75A)},
- {RUNE_C(0x00A75C), RUNE_C(0x00A75C)},
- {RUNE_C(0x00A75E), RUNE_C(0x00A75E)},
- {RUNE_C(0x00A760), RUNE_C(0x00A760)},
- {RUNE_C(0x00A762), RUNE_C(0x00A762)},
- {RUNE_C(0x00A764), RUNE_C(0x00A764)},
- {RUNE_C(0x00A766), RUNE_C(0x00A766)},
- {RUNE_C(0x00A768), RUNE_C(0x00A768)},
- {RUNE_C(0x00A76A), RUNE_C(0x00A76A)},
- {RUNE_C(0x00A76C), RUNE_C(0x00A76C)},
- {RUNE_C(0x00A76E), RUNE_C(0x00A76E)},
- {RUNE_C(0x00A779), RUNE_C(0x00A779)},
- {RUNE_C(0x00A77B), RUNE_C(0x00A77B)},
- {RUNE_C(0x00A77D), RUNE_C(0x00A77E)},
- {RUNE_C(0x00A780), RUNE_C(0x00A780)},
- {RUNE_C(0x00A782), RUNE_C(0x00A782)},
- {RUNE_C(0x00A784), RUNE_C(0x00A784)},
- {RUNE_C(0x00A786), RUNE_C(0x00A786)},
- {RUNE_C(0x00A78B), RUNE_C(0x00A78B)},
- {RUNE_C(0x00A78D), RUNE_C(0x00A78D)},
- {RUNE_C(0x00A790), RUNE_C(0x00A790)},
- {RUNE_C(0x00A792), RUNE_C(0x00A792)},
- {RUNE_C(0x00A796), RUNE_C(0x00A796)},
- {RUNE_C(0x00A798), RUNE_C(0x00A798)},
- {RUNE_C(0x00A79A), RUNE_C(0x00A79A)},
- {RUNE_C(0x00A79C), RUNE_C(0x00A79C)},
- {RUNE_C(0x00A79E), RUNE_C(0x00A79E)},
- {RUNE_C(0x00A7A0), RUNE_C(0x00A7A0)},
- {RUNE_C(0x00A7A2), RUNE_C(0x00A7A2)},
- {RUNE_C(0x00A7A4), RUNE_C(0x00A7A4)},
- {RUNE_C(0x00A7A6), RUNE_C(0x00A7A6)},
- {RUNE_C(0x00A7A8), RUNE_C(0x00A7A8)},
- {RUNE_C(0x00A7AA), RUNE_C(0x00A7AE)},
- {RUNE_C(0x00A7B0), RUNE_C(0x00A7B4)},
- {RUNE_C(0x00A7B6), RUNE_C(0x00A7B6)},
- {RUNE_C(0x00A7B8), RUNE_C(0x00A7B8)},
- {RUNE_C(0x00A7BA), RUNE_C(0x00A7BA)},
- {RUNE_C(0x00A7BC), RUNE_C(0x00A7BC)},
- {RUNE_C(0x00A7BE), RUNE_C(0x00A7BE)},
- {RUNE_C(0x00A7C0), RUNE_C(0x00A7C0)},
- {RUNE_C(0x00A7C2), RUNE_C(0x00A7C2)},
- {RUNE_C(0x00A7C4), RUNE_C(0x00A7C7)},
- {RUNE_C(0x00A7C9), RUNE_C(0x00A7C9)},
- {RUNE_C(0x00A7D0), RUNE_C(0x00A7D0)},
- {RUNE_C(0x00A7D6), RUNE_C(0x00A7D6)},
- {RUNE_C(0x00A7D8), RUNE_C(0x00A7D8)},
- {RUNE_C(0x00A7F5), RUNE_C(0x00A7F5)},
- {RUNE_C(0x00AB70), RUNE_C(0x00ABBF)},
- {RUNE_C(0x00FB00), RUNE_C(0x00FB06)},
- {RUNE_C(0x00FB13), RUNE_C(0x00FB17)},
- {RUNE_C(0x00FF21), RUNE_C(0x00FF3A)},
- {RUNE_C(0x010400), RUNE_C(0x010427)},
- {RUNE_C(0x0104B0), RUNE_C(0x0104D3)},
- {RUNE_C(0x010570), RUNE_C(0x01057A)},
- {RUNE_C(0x01057C), RUNE_C(0x01058A)},
- {RUNE_C(0x01058C), RUNE_C(0x010592)},
- {RUNE_C(0x010594), RUNE_C(0x010595)},
- {RUNE_C(0x010C80), RUNE_C(0x010CB2)},
- {RUNE_C(0x0118A0), RUNE_C(0x0118BF)},
- {RUNE_C(0x016E40), RUNE_C(0x016E5F)},
- {RUNE_C(0x01E900), RUNE_C(0x01E921)},
+static constexpr unsigned char stage2[][32] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFE, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
+ 0xFF, 0xFF, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00},
+ {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xAA,
+ 0xAA, 0x56, 0x55, 0x55, 0x55, 0x55, 0x55, 0xAB,
+ 0xD6, 0xCE, 0xDB, 0xB1, 0xD5, 0xD2, 0xAE, 0x11,
+ 0xB0, 0xAD, 0xAA, 0x4A, 0x55, 0x55, 0xD6, 0x55},
+ {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0x6C,
+ 0x7A, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x80,
+ 0x40, 0xD7, 0xFE, 0xFF, 0xFB, 0x0F, 0x00, 0x00,
+ 0x04, 0x80, 0x63, 0x55, 0x55, 0x55, 0xB3, 0xE6},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55,
+ 0x01, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0xAB, 0x2A, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55},
+ {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xFE, 0xFF,
+ 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xBF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x15, 0x4C, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55},
+ {0x00, 0xFF, 0x00, 0x3F, 0x00, 0xFF, 0x00, 0xFF,
+ 0x00, 0x3F, 0x00, 0xAA, 0x00, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, 0x1F,
+ 0x9C, 0x1F, 0x00, 0x0F, 0x00, 0x1F, 0x9C, 0x1F},
+ {0x00, 0x00, 0x00, 0x00, 0x40, 0x0C, 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF,
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x9D, 0xEA, 0x25, 0xC0,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x05, 0x28, 0x04, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x00, 0x00,
+ 0x55, 0x55, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x54, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x6A,
+ 0x55, 0x28, 0x45, 0x55, 0x55, 0x7D, 0x5F, 0x55,
+ 0xF5, 0x02, 0x41, 0x01, 0x00, 0x00, 0x20, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF7,
+ 0xFF, 0xF7, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_cwcf(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 256]], ch % 256);
}
diff --git a/lib/unicode/prop/uprop_is_cwcm.c b/lib/unicode/prop/uprop_is_cwcm.c
index 9f67ba6..33948db 100644
--- a/lib/unicode/prop/uprop_is_cwcm.c
+++ b/lib/unicode/prop/uprop_is_cwcm.c
@@ -1,154 +1,400 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xFE, 0xFF, 0xFF, 0x07, 0xFE, 0xFF, 0xFF, 0x07,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
- 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 7, 6, 6, 8, 6, 6, 6, 6, 6, 6, 6, 6, 9, 10, 11, 12,
+ 6, 13, 6, 6, 14, 6, 6, 6, 6, 6, 6, 6, 15, 16, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 17, 18, 6, 6, 6, 19, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 20, 6, 6, 6, 21,
+ 6, 6, 6, 6, 22, 23, 6, 6, 6, 6, 6, 6, 24, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 25, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 26, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 27, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000100), RUNE_C(0x000137)},
- {RUNE_C(0x000139), RUNE_C(0x00018C)},
- {RUNE_C(0x00018E), RUNE_C(0x00019A)},
- {RUNE_C(0x00019C), RUNE_C(0x0001A9)},
- {RUNE_C(0x0001AC), RUNE_C(0x0001B9)},
- {RUNE_C(0x0001BC), RUNE_C(0x0001BD)},
- {RUNE_C(0x0001BF), RUNE_C(0x0001BF)},
- {RUNE_C(0x0001C4), RUNE_C(0x000220)},
- {RUNE_C(0x000222), RUNE_C(0x000233)},
- {RUNE_C(0x00023A), RUNE_C(0x000254)},
- {RUNE_C(0x000256), RUNE_C(0x000257)},
- {RUNE_C(0x000259), RUNE_C(0x000259)},
- {RUNE_C(0x00025B), RUNE_C(0x00025C)},
- {RUNE_C(0x000260), RUNE_C(0x000261)},
- {RUNE_C(0x000263), RUNE_C(0x000263)},
- {RUNE_C(0x000265), RUNE_C(0x000266)},
- {RUNE_C(0x000268), RUNE_C(0x00026C)},
- {RUNE_C(0x00026F), RUNE_C(0x00026F)},
- {RUNE_C(0x000271), RUNE_C(0x000272)},
- {RUNE_C(0x000275), RUNE_C(0x000275)},
- {RUNE_C(0x00027D), RUNE_C(0x00027D)},
- {RUNE_C(0x000280), RUNE_C(0x000280)},
- {RUNE_C(0x000282), RUNE_C(0x000283)},
- {RUNE_C(0x000287), RUNE_C(0x00028C)},
- {RUNE_C(0x000292), RUNE_C(0x000292)},
- {RUNE_C(0x00029D), RUNE_C(0x00029E)},
- {RUNE_C(0x000345), RUNE_C(0x000345)},
- {RUNE_C(0x000370), RUNE_C(0x000373)},
- {RUNE_C(0x000376), RUNE_C(0x000377)},
- {RUNE_C(0x00037B), RUNE_C(0x00037D)},
- {RUNE_C(0x00037F), RUNE_C(0x00037F)},
- {RUNE_C(0x000386), RUNE_C(0x000386)},
- {RUNE_C(0x000388), RUNE_C(0x00038A)},
- {RUNE_C(0x00038C), RUNE_C(0x00038C)},
- {RUNE_C(0x00038E), RUNE_C(0x0003A1)},
- {RUNE_C(0x0003A3), RUNE_C(0x0003D1)},
- {RUNE_C(0x0003D5), RUNE_C(0x0003F5)},
- {RUNE_C(0x0003F7), RUNE_C(0x0003FB)},
- {RUNE_C(0x0003FD), RUNE_C(0x000481)},
- {RUNE_C(0x00048A), RUNE_C(0x00052F)},
- {RUNE_C(0x000531), RUNE_C(0x000556)},
- {RUNE_C(0x000561), RUNE_C(0x000587)},
- {RUNE_C(0x0010A0), RUNE_C(0x0010C5)},
- {RUNE_C(0x0010C7), RUNE_C(0x0010C7)},
- {RUNE_C(0x0010CD), RUNE_C(0x0010CD)},
- {RUNE_C(0x0010D0), RUNE_C(0x0010FA)},
- {RUNE_C(0x0010FD), RUNE_C(0x0010FF)},
- {RUNE_C(0x0013A0), RUNE_C(0x0013F5)},
- {RUNE_C(0x0013F8), RUNE_C(0x0013FD)},
- {RUNE_C(0x001C80), RUNE_C(0x001C88)},
- {RUNE_C(0x001C90), RUNE_C(0x001CBA)},
- {RUNE_C(0x001CBD), RUNE_C(0x001CBF)},
- {RUNE_C(0x001D79), RUNE_C(0x001D79)},
- {RUNE_C(0x001D7D), RUNE_C(0x001D7D)},
- {RUNE_C(0x001D8E), RUNE_C(0x001D8E)},
- {RUNE_C(0x001E00), RUNE_C(0x001E9B)},
- {RUNE_C(0x001E9E), RUNE_C(0x001E9E)},
- {RUNE_C(0x001EA0), RUNE_C(0x001F15)},
- {RUNE_C(0x001F18), RUNE_C(0x001F1D)},
- {RUNE_C(0x001F20), RUNE_C(0x001F45)},
- {RUNE_C(0x001F48), RUNE_C(0x001F4D)},
- {RUNE_C(0x001F50), RUNE_C(0x001F57)},
- {RUNE_C(0x001F59), RUNE_C(0x001F59)},
- {RUNE_C(0x001F5B), RUNE_C(0x001F5B)},
- {RUNE_C(0x001F5D), RUNE_C(0x001F5D)},
- {RUNE_C(0x001F5F), RUNE_C(0x001F7D)},
- {RUNE_C(0x001F80), RUNE_C(0x001FB4)},
- {RUNE_C(0x001FB6), RUNE_C(0x001FBC)},
- {RUNE_C(0x001FBE), RUNE_C(0x001FBE)},
- {RUNE_C(0x001FC2), RUNE_C(0x001FC4)},
- {RUNE_C(0x001FC6), RUNE_C(0x001FCC)},
- {RUNE_C(0x001FD0), RUNE_C(0x001FD3)},
- {RUNE_C(0x001FD6), RUNE_C(0x001FDB)},
- {RUNE_C(0x001FE0), RUNE_C(0x001FEC)},
- {RUNE_C(0x001FF2), RUNE_C(0x001FF4)},
- {RUNE_C(0x001FF6), RUNE_C(0x001FFC)},
- {RUNE_C(0x002126), RUNE_C(0x002126)},
- {RUNE_C(0x00212A), RUNE_C(0x00212B)},
- {RUNE_C(0x002132), RUNE_C(0x002132)},
- {RUNE_C(0x00214E), RUNE_C(0x00214E)},
- {RUNE_C(0x002160), RUNE_C(0x00217F)},
- {RUNE_C(0x002183), RUNE_C(0x002184)},
- {RUNE_C(0x0024B6), RUNE_C(0x0024E9)},
- {RUNE_C(0x002C00), RUNE_C(0x002C70)},
- {RUNE_C(0x002C72), RUNE_C(0x002C73)},
- {RUNE_C(0x002C75), RUNE_C(0x002C76)},
- {RUNE_C(0x002C7E), RUNE_C(0x002CE3)},
- {RUNE_C(0x002CEB), RUNE_C(0x002CEE)},
- {RUNE_C(0x002CF2), RUNE_C(0x002CF3)},
- {RUNE_C(0x002D00), RUNE_C(0x002D25)},
- {RUNE_C(0x002D27), RUNE_C(0x002D27)},
- {RUNE_C(0x002D2D), RUNE_C(0x002D2D)},
- {RUNE_C(0x00A640), RUNE_C(0x00A66D)},
- {RUNE_C(0x00A680), RUNE_C(0x00A69B)},
- {RUNE_C(0x00A722), RUNE_C(0x00A72F)},
- {RUNE_C(0x00A732), RUNE_C(0x00A76F)},
- {RUNE_C(0x00A779), RUNE_C(0x00A787)},
- {RUNE_C(0x00A78B), RUNE_C(0x00A78D)},
- {RUNE_C(0x00A790), RUNE_C(0x00A794)},
- {RUNE_C(0x00A796), RUNE_C(0x00A7AE)},
- {RUNE_C(0x00A7B0), RUNE_C(0x00A7CA)},
- {RUNE_C(0x00A7D0), RUNE_C(0x00A7D1)},
- {RUNE_C(0x00A7D6), RUNE_C(0x00A7D9)},
- {RUNE_C(0x00A7F5), RUNE_C(0x00A7F6)},
- {RUNE_C(0x00AB53), RUNE_C(0x00AB53)},
- {RUNE_C(0x00AB70), RUNE_C(0x00ABBF)},
- {RUNE_C(0x00FB00), RUNE_C(0x00FB06)},
- {RUNE_C(0x00FB13), RUNE_C(0x00FB17)},
- {RUNE_C(0x00FF21), RUNE_C(0x00FF3A)},
- {RUNE_C(0x00FF41), RUNE_C(0x00FF5A)},
- {RUNE_C(0x010400), RUNE_C(0x01044F)},
- {RUNE_C(0x0104B0), RUNE_C(0x0104D3)},
- {RUNE_C(0x0104D8), RUNE_C(0x0104FB)},
- {RUNE_C(0x010570), RUNE_C(0x01057A)},
- {RUNE_C(0x01057C), RUNE_C(0x01058A)},
- {RUNE_C(0x01058C), RUNE_C(0x010592)},
- {RUNE_C(0x010594), RUNE_C(0x010595)},
- {RUNE_C(0x010597), RUNE_C(0x0105A1)},
- {RUNE_C(0x0105A3), RUNE_C(0x0105B1)},
- {RUNE_C(0x0105B3), RUNE_C(0x0105B9)},
- {RUNE_C(0x0105BB), RUNE_C(0x0105BC)},
- {RUNE_C(0x010C80), RUNE_C(0x010CB2)},
- {RUNE_C(0x010CC0), RUNE_C(0x010CF2)},
- {RUNE_C(0x0118A0), RUNE_C(0x0118DF)},
- {RUNE_C(0x016E40), RUNE_C(0x016E7F)},
- {RUNE_C(0x01E900), RUNE_C(0x01E943)},
+static constexpr unsigned char stage2[][32] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFE, 0xFF, 0xFF, 0x07, 0xFE, 0xFF, 0xFF, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
+ 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xDF, 0xFF, 0xF7, 0xFF, 0xF3, 0xFF, 0xB3,
+ 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0x0F, 0xFC,
+ 0xFF, 0xFF, 0xDF, 0x1A, 0x6B, 0x9F, 0x26, 0x20,
+ 0x8D, 0x1F, 0x04, 0x60, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCF, 0xB8,
+ 0x40, 0xD7, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xFF, 0xBF, 0xEF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
+ 0xFF, 0xFF, 0x7F, 0x00, 0xFE, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xBF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x3F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22,
+ 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x4F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x3F, 0x3F, 0xFF, 0xAA, 0xFF, 0xFF, 0xFF, 0x3F,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x5F,
+ 0xDC, 0x1F, 0xCF, 0x0F, 0xFF, 0x1F, 0xDC, 0x1F},
+ {0x00, 0x00, 0x00, 0x00, 0x40, 0x0C, 0x04, 0x00,
+ 0x00, 0x40, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, 0xC0,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x78, 0x0C, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x20, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFC, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFE,
+ 0xFF, 0x38, 0xDF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xC3, 0x03, 0x00, 0x00, 0x60, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x07,
+ 0xFE, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF7,
+ 0xFF, 0xF7, 0xB7, 0xFF, 0xFB, 0xFF, 0xFB, 0x1B,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_cwcm(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 256]], ch % 256);
}
diff --git a/lib/unicode/prop/uprop_is_cwkcf.c b/lib/unicode/prop/uprop_is_cwkcf.c
index c93ff02..6474ce9 100644
--- a/lib/unicode/prop/uprop_is_cwkcf.c
+++ b/lib/unicode/prop/uprop_is_cwkcf.c
@@ -1,856 +1,540 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xFE, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x01, 0xA5, 0x3C, 0x77,
- 0xFF, 0xFF, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10, 7, 7, 11, 12,
+ 13, 14, 7, 15, 7, 7, 7, 16, 17, 7, 7, 7, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 7, 7, 7, 7, 7, 27, 7, 28, 29, 30, 31,
+ 32, 33, 34, 35, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 36, 37, 7, 7, 7, 38, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 35, 39, 40, 35, 41, 42, 43,
+ 7, 7, 7, 7, 44, 45, 7, 46, 7, 7, 7, 7, 47, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 48, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 49, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 50, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 51, 7, 7, 52, 53, 54, 55, 7, 7, 7, 7, 7, 7, 7, 7,
+ 56, 7, 7, 7, 7, 7, 7, 7, 7, 57, 7, 7, 7, 7, 58, 7,
+ 7, 59, 60, 7, 7, 7, 7, 7, 7, 7, 7, 61, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 35, 35, 62, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000100), RUNE_C(0x000100)},
- {RUNE_C(0x000102), RUNE_C(0x000102)},
- {RUNE_C(0x000104), RUNE_C(0x000104)},
- {RUNE_C(0x000106), RUNE_C(0x000106)},
- {RUNE_C(0x000108), RUNE_C(0x000108)},
- {RUNE_C(0x00010A), RUNE_C(0x00010A)},
- {RUNE_C(0x00010C), RUNE_C(0x00010C)},
- {RUNE_C(0x00010E), RUNE_C(0x00010E)},
- {RUNE_C(0x000110), RUNE_C(0x000110)},
- {RUNE_C(0x000112), RUNE_C(0x000112)},
- {RUNE_C(0x000114), RUNE_C(0x000114)},
- {RUNE_C(0x000116), RUNE_C(0x000116)},
- {RUNE_C(0x000118), RUNE_C(0x000118)},
- {RUNE_C(0x00011A), RUNE_C(0x00011A)},
- {RUNE_C(0x00011C), RUNE_C(0x00011C)},
- {RUNE_C(0x00011E), RUNE_C(0x00011E)},
- {RUNE_C(0x000120), RUNE_C(0x000120)},
- {RUNE_C(0x000122), RUNE_C(0x000122)},
- {RUNE_C(0x000124), RUNE_C(0x000124)},
- {RUNE_C(0x000126), RUNE_C(0x000126)},
- {RUNE_C(0x000128), RUNE_C(0x000128)},
- {RUNE_C(0x00012A), RUNE_C(0x00012A)},
- {RUNE_C(0x00012C), RUNE_C(0x00012C)},
- {RUNE_C(0x00012E), RUNE_C(0x00012E)},
- {RUNE_C(0x000130), RUNE_C(0x000130)},
- {RUNE_C(0x000132), RUNE_C(0x000134)},
- {RUNE_C(0x000136), RUNE_C(0x000136)},
- {RUNE_C(0x000139), RUNE_C(0x000139)},
- {RUNE_C(0x00013B), RUNE_C(0x00013B)},
- {RUNE_C(0x00013D), RUNE_C(0x00013D)},
- {RUNE_C(0x00013F), RUNE_C(0x000141)},
- {RUNE_C(0x000143), RUNE_C(0x000143)},
- {RUNE_C(0x000145), RUNE_C(0x000145)},
- {RUNE_C(0x000147), RUNE_C(0x000147)},
- {RUNE_C(0x000149), RUNE_C(0x00014A)},
- {RUNE_C(0x00014C), RUNE_C(0x00014C)},
- {RUNE_C(0x00014E), RUNE_C(0x00014E)},
- {RUNE_C(0x000150), RUNE_C(0x000150)},
- {RUNE_C(0x000152), RUNE_C(0x000152)},
- {RUNE_C(0x000154), RUNE_C(0x000154)},
- {RUNE_C(0x000156), RUNE_C(0x000156)},
- {RUNE_C(0x000158), RUNE_C(0x000158)},
- {RUNE_C(0x00015A), RUNE_C(0x00015A)},
- {RUNE_C(0x00015C), RUNE_C(0x00015C)},
- {RUNE_C(0x00015E), RUNE_C(0x00015E)},
- {RUNE_C(0x000160), RUNE_C(0x000160)},
- {RUNE_C(0x000162), RUNE_C(0x000162)},
- {RUNE_C(0x000164), RUNE_C(0x000164)},
- {RUNE_C(0x000166), RUNE_C(0x000166)},
- {RUNE_C(0x000168), RUNE_C(0x000168)},
- {RUNE_C(0x00016A), RUNE_C(0x00016A)},
- {RUNE_C(0x00016C), RUNE_C(0x00016C)},
- {RUNE_C(0x00016E), RUNE_C(0x00016E)},
- {RUNE_C(0x000170), RUNE_C(0x000170)},
- {RUNE_C(0x000172), RUNE_C(0x000172)},
- {RUNE_C(0x000174), RUNE_C(0x000174)},
- {RUNE_C(0x000176), RUNE_C(0x000176)},
- {RUNE_C(0x000178), RUNE_C(0x000179)},
- {RUNE_C(0x00017B), RUNE_C(0x00017B)},
- {RUNE_C(0x00017D), RUNE_C(0x00017D)},
- {RUNE_C(0x00017F), RUNE_C(0x00017F)},
- {RUNE_C(0x000181), RUNE_C(0x000182)},
- {RUNE_C(0x000184), RUNE_C(0x000184)},
- {RUNE_C(0x000186), RUNE_C(0x000187)},
- {RUNE_C(0x000189), RUNE_C(0x00018B)},
- {RUNE_C(0x00018E), RUNE_C(0x000191)},
- {RUNE_C(0x000193), RUNE_C(0x000194)},
- {RUNE_C(0x000196), RUNE_C(0x000198)},
- {RUNE_C(0x00019C), RUNE_C(0x00019D)},
- {RUNE_C(0x00019F), RUNE_C(0x0001A0)},
- {RUNE_C(0x0001A2), RUNE_C(0x0001A2)},
- {RUNE_C(0x0001A4), RUNE_C(0x0001A4)},
- {RUNE_C(0x0001A6), RUNE_C(0x0001A7)},
- {RUNE_C(0x0001A9), RUNE_C(0x0001A9)},
- {RUNE_C(0x0001AC), RUNE_C(0x0001AC)},
- {RUNE_C(0x0001AE), RUNE_C(0x0001AF)},
- {RUNE_C(0x0001B1), RUNE_C(0x0001B3)},
- {RUNE_C(0x0001B5), RUNE_C(0x0001B5)},
- {RUNE_C(0x0001B7), RUNE_C(0x0001B8)},
- {RUNE_C(0x0001BC), RUNE_C(0x0001BC)},
- {RUNE_C(0x0001C4), RUNE_C(0x0001CD)},
- {RUNE_C(0x0001CF), RUNE_C(0x0001CF)},
- {RUNE_C(0x0001D1), RUNE_C(0x0001D1)},
- {RUNE_C(0x0001D3), RUNE_C(0x0001D3)},
- {RUNE_C(0x0001D5), RUNE_C(0x0001D5)},
- {RUNE_C(0x0001D7), RUNE_C(0x0001D7)},
- {RUNE_C(0x0001D9), RUNE_C(0x0001D9)},
- {RUNE_C(0x0001DB), RUNE_C(0x0001DB)},
- {RUNE_C(0x0001DE), RUNE_C(0x0001DE)},
- {RUNE_C(0x0001E0), RUNE_C(0x0001E0)},
- {RUNE_C(0x0001E2), RUNE_C(0x0001E2)},
- {RUNE_C(0x0001E4), RUNE_C(0x0001E4)},
- {RUNE_C(0x0001E6), RUNE_C(0x0001E6)},
- {RUNE_C(0x0001E8), RUNE_C(0x0001E8)},
- {RUNE_C(0x0001EA), RUNE_C(0x0001EA)},
- {RUNE_C(0x0001EC), RUNE_C(0x0001EC)},
- {RUNE_C(0x0001EE), RUNE_C(0x0001EE)},
- {RUNE_C(0x0001F1), RUNE_C(0x0001F4)},
- {RUNE_C(0x0001F6), RUNE_C(0x0001F8)},
- {RUNE_C(0x0001FA), RUNE_C(0x0001FA)},
- {RUNE_C(0x0001FC), RUNE_C(0x0001FC)},
- {RUNE_C(0x0001FE), RUNE_C(0x0001FE)},
- {RUNE_C(0x000200), RUNE_C(0x000200)},
- {RUNE_C(0x000202), RUNE_C(0x000202)},
- {RUNE_C(0x000204), RUNE_C(0x000204)},
- {RUNE_C(0x000206), RUNE_C(0x000206)},
- {RUNE_C(0x000208), RUNE_C(0x000208)},
- {RUNE_C(0x00020A), RUNE_C(0x00020A)},
- {RUNE_C(0x00020C), RUNE_C(0x00020C)},
- {RUNE_C(0x00020E), RUNE_C(0x00020E)},
- {RUNE_C(0x000210), RUNE_C(0x000210)},
- {RUNE_C(0x000212), RUNE_C(0x000212)},
- {RUNE_C(0x000214), RUNE_C(0x000214)},
- {RUNE_C(0x000216), RUNE_C(0x000216)},
- {RUNE_C(0x000218), RUNE_C(0x000218)},
- {RUNE_C(0x00021A), RUNE_C(0x00021A)},
- {RUNE_C(0x00021C), RUNE_C(0x00021C)},
- {RUNE_C(0x00021E), RUNE_C(0x00021E)},
- {RUNE_C(0x000220), RUNE_C(0x000220)},
- {RUNE_C(0x000222), RUNE_C(0x000222)},
- {RUNE_C(0x000224), RUNE_C(0x000224)},
- {RUNE_C(0x000226), RUNE_C(0x000226)},
- {RUNE_C(0x000228), RUNE_C(0x000228)},
- {RUNE_C(0x00022A), RUNE_C(0x00022A)},
- {RUNE_C(0x00022C), RUNE_C(0x00022C)},
- {RUNE_C(0x00022E), RUNE_C(0x00022E)},
- {RUNE_C(0x000230), RUNE_C(0x000230)},
- {RUNE_C(0x000232), RUNE_C(0x000232)},
- {RUNE_C(0x00023A), RUNE_C(0x00023B)},
- {RUNE_C(0x00023D), RUNE_C(0x00023E)},
- {RUNE_C(0x000241), RUNE_C(0x000241)},
- {RUNE_C(0x000243), RUNE_C(0x000246)},
- {RUNE_C(0x000248), RUNE_C(0x000248)},
- {RUNE_C(0x00024A), RUNE_C(0x00024A)},
- {RUNE_C(0x00024C), RUNE_C(0x00024C)},
- {RUNE_C(0x00024E), RUNE_C(0x00024E)},
- {RUNE_C(0x0002B0), RUNE_C(0x0002B8)},
- {RUNE_C(0x0002D8), RUNE_C(0x0002DD)},
- {RUNE_C(0x0002E0), RUNE_C(0x0002E4)},
- {RUNE_C(0x000340), RUNE_C(0x000341)},
- {RUNE_C(0x000343), RUNE_C(0x000345)},
- {RUNE_C(0x00034F), RUNE_C(0x00034F)},
- {RUNE_C(0x000370), RUNE_C(0x000370)},
- {RUNE_C(0x000372), RUNE_C(0x000372)},
- {RUNE_C(0x000374), RUNE_C(0x000374)},
- {RUNE_C(0x000376), RUNE_C(0x000376)},
- {RUNE_C(0x00037A), RUNE_C(0x00037A)},
- {RUNE_C(0x00037E), RUNE_C(0x00037F)},
- {RUNE_C(0x000384), RUNE_C(0x00038A)},
- {RUNE_C(0x00038C), RUNE_C(0x00038C)},
- {RUNE_C(0x00038E), RUNE_C(0x00038F)},
- {RUNE_C(0x000391), RUNE_C(0x0003A1)},
- {RUNE_C(0x0003A3), RUNE_C(0x0003AB)},
- {RUNE_C(0x0003C2), RUNE_C(0x0003C2)},
- {RUNE_C(0x0003CF), RUNE_C(0x0003D6)},
- {RUNE_C(0x0003D8), RUNE_C(0x0003D8)},
- {RUNE_C(0x0003DA), RUNE_C(0x0003DA)},
- {RUNE_C(0x0003DC), RUNE_C(0x0003DC)},
- {RUNE_C(0x0003DE), RUNE_C(0x0003DE)},
- {RUNE_C(0x0003E0), RUNE_C(0x0003E0)},
- {RUNE_C(0x0003E2), RUNE_C(0x0003E2)},
- {RUNE_C(0x0003E4), RUNE_C(0x0003E4)},
- {RUNE_C(0x0003E6), RUNE_C(0x0003E6)},
- {RUNE_C(0x0003E8), RUNE_C(0x0003E8)},
- {RUNE_C(0x0003EA), RUNE_C(0x0003EA)},
- {RUNE_C(0x0003EC), RUNE_C(0x0003EC)},
- {RUNE_C(0x0003EE), RUNE_C(0x0003EE)},
- {RUNE_C(0x0003F0), RUNE_C(0x0003F2)},
- {RUNE_C(0x0003F4), RUNE_C(0x0003F5)},
- {RUNE_C(0x0003F7), RUNE_C(0x0003F7)},
- {RUNE_C(0x0003F9), RUNE_C(0x0003FA)},
- {RUNE_C(0x0003FD), RUNE_C(0x00042F)},
- {RUNE_C(0x000460), RUNE_C(0x000460)},
- {RUNE_C(0x000462), RUNE_C(0x000462)},
- {RUNE_C(0x000464), RUNE_C(0x000464)},
- {RUNE_C(0x000466), RUNE_C(0x000466)},
- {RUNE_C(0x000468), RUNE_C(0x000468)},
- {RUNE_C(0x00046A), RUNE_C(0x00046A)},
- {RUNE_C(0x00046C), RUNE_C(0x00046C)},
- {RUNE_C(0x00046E), RUNE_C(0x00046E)},
- {RUNE_C(0x000470), RUNE_C(0x000470)},
- {RUNE_C(0x000472), RUNE_C(0x000472)},
- {RUNE_C(0x000474), RUNE_C(0x000474)},
- {RUNE_C(0x000476), RUNE_C(0x000476)},
- {RUNE_C(0x000478), RUNE_C(0x000478)},
- {RUNE_C(0x00047A), RUNE_C(0x00047A)},
- {RUNE_C(0x00047C), RUNE_C(0x00047C)},
- {RUNE_C(0x00047E), RUNE_C(0x00047E)},
- {RUNE_C(0x000480), RUNE_C(0x000480)},
- {RUNE_C(0x00048A), RUNE_C(0x00048A)},
- {RUNE_C(0x00048C), RUNE_C(0x00048C)},
- {RUNE_C(0x00048E), RUNE_C(0x00048E)},
- {RUNE_C(0x000490), RUNE_C(0x000490)},
- {RUNE_C(0x000492), RUNE_C(0x000492)},
- {RUNE_C(0x000494), RUNE_C(0x000494)},
- {RUNE_C(0x000496), RUNE_C(0x000496)},
- {RUNE_C(0x000498), RUNE_C(0x000498)},
- {RUNE_C(0x00049A), RUNE_C(0x00049A)},
- {RUNE_C(0x00049C), RUNE_C(0x00049C)},
- {RUNE_C(0x00049E), RUNE_C(0x00049E)},
- {RUNE_C(0x0004A0), RUNE_C(0x0004A0)},
- {RUNE_C(0x0004A2), RUNE_C(0x0004A2)},
- {RUNE_C(0x0004A4), RUNE_C(0x0004A4)},
- {RUNE_C(0x0004A6), RUNE_C(0x0004A6)},
- {RUNE_C(0x0004A8), RUNE_C(0x0004A8)},
- {RUNE_C(0x0004AA), RUNE_C(0x0004AA)},
- {RUNE_C(0x0004AC), RUNE_C(0x0004AC)},
- {RUNE_C(0x0004AE), RUNE_C(0x0004AE)},
- {RUNE_C(0x0004B0), RUNE_C(0x0004B0)},
- {RUNE_C(0x0004B2), RUNE_C(0x0004B2)},
- {RUNE_C(0x0004B4), RUNE_C(0x0004B4)},
- {RUNE_C(0x0004B6), RUNE_C(0x0004B6)},
- {RUNE_C(0x0004B8), RUNE_C(0x0004B8)},
- {RUNE_C(0x0004BA), RUNE_C(0x0004BA)},
- {RUNE_C(0x0004BC), RUNE_C(0x0004BC)},
- {RUNE_C(0x0004BE), RUNE_C(0x0004BE)},
- {RUNE_C(0x0004C0), RUNE_C(0x0004C1)},
- {RUNE_C(0x0004C3), RUNE_C(0x0004C3)},
- {RUNE_C(0x0004C5), RUNE_C(0x0004C5)},
- {RUNE_C(0x0004C7), RUNE_C(0x0004C7)},
- {RUNE_C(0x0004C9), RUNE_C(0x0004C9)},
- {RUNE_C(0x0004CB), RUNE_C(0x0004CB)},
- {RUNE_C(0x0004CD), RUNE_C(0x0004CD)},
- {RUNE_C(0x0004D0), RUNE_C(0x0004D0)},
- {RUNE_C(0x0004D2), RUNE_C(0x0004D2)},
- {RUNE_C(0x0004D4), RUNE_C(0x0004D4)},
- {RUNE_C(0x0004D6), RUNE_C(0x0004D6)},
- {RUNE_C(0x0004D8), RUNE_C(0x0004D8)},
- {RUNE_C(0x0004DA), RUNE_C(0x0004DA)},
- {RUNE_C(0x0004DC), RUNE_C(0x0004DC)},
- {RUNE_C(0x0004DE), RUNE_C(0x0004DE)},
- {RUNE_C(0x0004E0), RUNE_C(0x0004E0)},
- {RUNE_C(0x0004E2), RUNE_C(0x0004E2)},
- {RUNE_C(0x0004E4), RUNE_C(0x0004E4)},
- {RUNE_C(0x0004E6), RUNE_C(0x0004E6)},
- {RUNE_C(0x0004E8), RUNE_C(0x0004E8)},
- {RUNE_C(0x0004EA), RUNE_C(0x0004EA)},
- {RUNE_C(0x0004EC), RUNE_C(0x0004EC)},
- {RUNE_C(0x0004EE), RUNE_C(0x0004EE)},
- {RUNE_C(0x0004F0), RUNE_C(0x0004F0)},
- {RUNE_C(0x0004F2), RUNE_C(0x0004F2)},
- {RUNE_C(0x0004F4), RUNE_C(0x0004F4)},
- {RUNE_C(0x0004F6), RUNE_C(0x0004F6)},
- {RUNE_C(0x0004F8), RUNE_C(0x0004F8)},
- {RUNE_C(0x0004FA), RUNE_C(0x0004FA)},
- {RUNE_C(0x0004FC), RUNE_C(0x0004FC)},
- {RUNE_C(0x0004FE), RUNE_C(0x0004FE)},
- {RUNE_C(0x000500), RUNE_C(0x000500)},
- {RUNE_C(0x000502), RUNE_C(0x000502)},
- {RUNE_C(0x000504), RUNE_C(0x000504)},
- {RUNE_C(0x000506), RUNE_C(0x000506)},
- {RUNE_C(0x000508), RUNE_C(0x000508)},
- {RUNE_C(0x00050A), RUNE_C(0x00050A)},
- {RUNE_C(0x00050C), RUNE_C(0x00050C)},
- {RUNE_C(0x00050E), RUNE_C(0x00050E)},
- {RUNE_C(0x000510), RUNE_C(0x000510)},
- {RUNE_C(0x000512), RUNE_C(0x000512)},
- {RUNE_C(0x000514), RUNE_C(0x000514)},
- {RUNE_C(0x000516), RUNE_C(0x000516)},
- {RUNE_C(0x000518), RUNE_C(0x000518)},
- {RUNE_C(0x00051A), RUNE_C(0x00051A)},
- {RUNE_C(0x00051C), RUNE_C(0x00051C)},
- {RUNE_C(0x00051E), RUNE_C(0x00051E)},
- {RUNE_C(0x000520), RUNE_C(0x000520)},
- {RUNE_C(0x000522), RUNE_C(0x000522)},
- {RUNE_C(0x000524), RUNE_C(0x000524)},
- {RUNE_C(0x000526), RUNE_C(0x000526)},
- {RUNE_C(0x000528), RUNE_C(0x000528)},
- {RUNE_C(0x00052A), RUNE_C(0x00052A)},
- {RUNE_C(0x00052C), RUNE_C(0x00052C)},
- {RUNE_C(0x00052E), RUNE_C(0x00052E)},
- {RUNE_C(0x000531), RUNE_C(0x000556)},
- {RUNE_C(0x000587), RUNE_C(0x000587)},
- {RUNE_C(0x00061C), RUNE_C(0x00061C)},
- {RUNE_C(0x000675), RUNE_C(0x000678)},
- {RUNE_C(0x000958), RUNE_C(0x00095F)},
- {RUNE_C(0x0009DC), RUNE_C(0x0009DD)},
- {RUNE_C(0x0009DF), RUNE_C(0x0009DF)},
- {RUNE_C(0x000A33), RUNE_C(0x000A33)},
- {RUNE_C(0x000A36), RUNE_C(0x000A36)},
- {RUNE_C(0x000A59), RUNE_C(0x000A5B)},
- {RUNE_C(0x000A5E), RUNE_C(0x000A5E)},
- {RUNE_C(0x000B5C), RUNE_C(0x000B5D)},
- {RUNE_C(0x000E33), RUNE_C(0x000E33)},
- {RUNE_C(0x000EB3), RUNE_C(0x000EB3)},
- {RUNE_C(0x000EDC), RUNE_C(0x000EDD)},
- {RUNE_C(0x000F0C), RUNE_C(0x000F0C)},
- {RUNE_C(0x000F43), RUNE_C(0x000F43)},
- {RUNE_C(0x000F4D), RUNE_C(0x000F4D)},
- {RUNE_C(0x000F52), RUNE_C(0x000F52)},
- {RUNE_C(0x000F57), RUNE_C(0x000F57)},
- {RUNE_C(0x000F5C), RUNE_C(0x000F5C)},
- {RUNE_C(0x000F69), RUNE_C(0x000F69)},
- {RUNE_C(0x000F73), RUNE_C(0x000F73)},
- {RUNE_C(0x000F75), RUNE_C(0x000F79)},
- {RUNE_C(0x000F81), RUNE_C(0x000F81)},
- {RUNE_C(0x000F93), RUNE_C(0x000F93)},
- {RUNE_C(0x000F9D), RUNE_C(0x000F9D)},
- {RUNE_C(0x000FA2), RUNE_C(0x000FA2)},
- {RUNE_C(0x000FA7), RUNE_C(0x000FA7)},
- {RUNE_C(0x000FAC), RUNE_C(0x000FAC)},
- {RUNE_C(0x000FB9), RUNE_C(0x000FB9)},
- {RUNE_C(0x0010A0), RUNE_C(0x0010C5)},
- {RUNE_C(0x0010C7), RUNE_C(0x0010C7)},
- {RUNE_C(0x0010CD), RUNE_C(0x0010CD)},
- {RUNE_C(0x0010FC), RUNE_C(0x0010FC)},
- {RUNE_C(0x00115F), RUNE_C(0x001160)},
- {RUNE_C(0x0013F8), RUNE_C(0x0013FD)},
- {RUNE_C(0x0017B4), RUNE_C(0x0017B5)},
- {RUNE_C(0x00180B), RUNE_C(0x00180F)},
- {RUNE_C(0x001C80), RUNE_C(0x001C88)},
- {RUNE_C(0x001C90), RUNE_C(0x001CBA)},
- {RUNE_C(0x001CBD), RUNE_C(0x001CBF)},
- {RUNE_C(0x001D2C), RUNE_C(0x001D2E)},
- {RUNE_C(0x001D30), RUNE_C(0x001D3A)},
- {RUNE_C(0x001D3C), RUNE_C(0x001D4D)},
- {RUNE_C(0x001D4F), RUNE_C(0x001D6A)},
- {RUNE_C(0x001D78), RUNE_C(0x001D78)},
- {RUNE_C(0x001D9B), RUNE_C(0x001DBF)},
- {RUNE_C(0x001E00), RUNE_C(0x001E00)},
- {RUNE_C(0x001E02), RUNE_C(0x001E02)},
- {RUNE_C(0x001E04), RUNE_C(0x001E04)},
- {RUNE_C(0x001E06), RUNE_C(0x001E06)},
- {RUNE_C(0x001E08), RUNE_C(0x001E08)},
- {RUNE_C(0x001E0A), RUNE_C(0x001E0A)},
- {RUNE_C(0x001E0C), RUNE_C(0x001E0C)},
- {RUNE_C(0x001E0E), RUNE_C(0x001E0E)},
- {RUNE_C(0x001E10), RUNE_C(0x001E10)},
- {RUNE_C(0x001E12), RUNE_C(0x001E12)},
- {RUNE_C(0x001E14), RUNE_C(0x001E14)},
- {RUNE_C(0x001E16), RUNE_C(0x001E16)},
- {RUNE_C(0x001E18), RUNE_C(0x001E18)},
- {RUNE_C(0x001E1A), RUNE_C(0x001E1A)},
- {RUNE_C(0x001E1C), RUNE_C(0x001E1C)},
- {RUNE_C(0x001E1E), RUNE_C(0x001E1E)},
- {RUNE_C(0x001E20), RUNE_C(0x001E20)},
- {RUNE_C(0x001E22), RUNE_C(0x001E22)},
- {RUNE_C(0x001E24), RUNE_C(0x001E24)},
- {RUNE_C(0x001E26), RUNE_C(0x001E26)},
- {RUNE_C(0x001E28), RUNE_C(0x001E28)},
- {RUNE_C(0x001E2A), RUNE_C(0x001E2A)},
- {RUNE_C(0x001E2C), RUNE_C(0x001E2C)},
- {RUNE_C(0x001E2E), RUNE_C(0x001E2E)},
- {RUNE_C(0x001E30), RUNE_C(0x001E30)},
- {RUNE_C(0x001E32), RUNE_C(0x001E32)},
- {RUNE_C(0x001E34), RUNE_C(0x001E34)},
- {RUNE_C(0x001E36), RUNE_C(0x001E36)},
- {RUNE_C(0x001E38), RUNE_C(0x001E38)},
- {RUNE_C(0x001E3A), RUNE_C(0x001E3A)},
- {RUNE_C(0x001E3C), RUNE_C(0x001E3C)},
- {RUNE_C(0x001E3E), RUNE_C(0x001E3E)},
- {RUNE_C(0x001E40), RUNE_C(0x001E40)},
- {RUNE_C(0x001E42), RUNE_C(0x001E42)},
- {RUNE_C(0x001E44), RUNE_C(0x001E44)},
- {RUNE_C(0x001E46), RUNE_C(0x001E46)},
- {RUNE_C(0x001E48), RUNE_C(0x001E48)},
- {RUNE_C(0x001E4A), RUNE_C(0x001E4A)},
- {RUNE_C(0x001E4C), RUNE_C(0x001E4C)},
- {RUNE_C(0x001E4E), RUNE_C(0x001E4E)},
- {RUNE_C(0x001E50), RUNE_C(0x001E50)},
- {RUNE_C(0x001E52), RUNE_C(0x001E52)},
- {RUNE_C(0x001E54), RUNE_C(0x001E54)},
- {RUNE_C(0x001E56), RUNE_C(0x001E56)},
- {RUNE_C(0x001E58), RUNE_C(0x001E58)},
- {RUNE_C(0x001E5A), RUNE_C(0x001E5A)},
- {RUNE_C(0x001E5C), RUNE_C(0x001E5C)},
- {RUNE_C(0x001E5E), RUNE_C(0x001E5E)},
- {RUNE_C(0x001E60), RUNE_C(0x001E60)},
- {RUNE_C(0x001E62), RUNE_C(0x001E62)},
- {RUNE_C(0x001E64), RUNE_C(0x001E64)},
- {RUNE_C(0x001E66), RUNE_C(0x001E66)},
- {RUNE_C(0x001E68), RUNE_C(0x001E68)},
- {RUNE_C(0x001E6A), RUNE_C(0x001E6A)},
- {RUNE_C(0x001E6C), RUNE_C(0x001E6C)},
- {RUNE_C(0x001E6E), RUNE_C(0x001E6E)},
- {RUNE_C(0x001E70), RUNE_C(0x001E70)},
- {RUNE_C(0x001E72), RUNE_C(0x001E72)},
- {RUNE_C(0x001E74), RUNE_C(0x001E74)},
- {RUNE_C(0x001E76), RUNE_C(0x001E76)},
- {RUNE_C(0x001E78), RUNE_C(0x001E78)},
- {RUNE_C(0x001E7A), RUNE_C(0x001E7A)},
- {RUNE_C(0x001E7C), RUNE_C(0x001E7C)},
- {RUNE_C(0x001E7E), RUNE_C(0x001E7E)},
- {RUNE_C(0x001E80), RUNE_C(0x001E80)},
- {RUNE_C(0x001E82), RUNE_C(0x001E82)},
- {RUNE_C(0x001E84), RUNE_C(0x001E84)},
- {RUNE_C(0x001E86), RUNE_C(0x001E86)},
- {RUNE_C(0x001E88), RUNE_C(0x001E88)},
- {RUNE_C(0x001E8A), RUNE_C(0x001E8A)},
- {RUNE_C(0x001E8C), RUNE_C(0x001E8C)},
- {RUNE_C(0x001E8E), RUNE_C(0x001E8E)},
- {RUNE_C(0x001E90), RUNE_C(0x001E90)},
- {RUNE_C(0x001E92), RUNE_C(0x001E92)},
- {RUNE_C(0x001E94), RUNE_C(0x001E94)},
- {RUNE_C(0x001E9A), RUNE_C(0x001E9B)},
- {RUNE_C(0x001E9E), RUNE_C(0x001E9E)},
- {RUNE_C(0x001EA0), RUNE_C(0x001EA0)},
- {RUNE_C(0x001EA2), RUNE_C(0x001EA2)},
- {RUNE_C(0x001EA4), RUNE_C(0x001EA4)},
- {RUNE_C(0x001EA6), RUNE_C(0x001EA6)},
- {RUNE_C(0x001EA8), RUNE_C(0x001EA8)},
- {RUNE_C(0x001EAA), RUNE_C(0x001EAA)},
- {RUNE_C(0x001EAC), RUNE_C(0x001EAC)},
- {RUNE_C(0x001EAE), RUNE_C(0x001EAE)},
- {RUNE_C(0x001EB0), RUNE_C(0x001EB0)},
- {RUNE_C(0x001EB2), RUNE_C(0x001EB2)},
- {RUNE_C(0x001EB4), RUNE_C(0x001EB4)},
- {RUNE_C(0x001EB6), RUNE_C(0x001EB6)},
- {RUNE_C(0x001EB8), RUNE_C(0x001EB8)},
- {RUNE_C(0x001EBA), RUNE_C(0x001EBA)},
- {RUNE_C(0x001EBC), RUNE_C(0x001EBC)},
- {RUNE_C(0x001EBE), RUNE_C(0x001EBE)},
- {RUNE_C(0x001EC0), RUNE_C(0x001EC0)},
- {RUNE_C(0x001EC2), RUNE_C(0x001EC2)},
- {RUNE_C(0x001EC4), RUNE_C(0x001EC4)},
- {RUNE_C(0x001EC6), RUNE_C(0x001EC6)},
- {RUNE_C(0x001EC8), RUNE_C(0x001EC8)},
- {RUNE_C(0x001ECA), RUNE_C(0x001ECA)},
- {RUNE_C(0x001ECC), RUNE_C(0x001ECC)},
- {RUNE_C(0x001ECE), RUNE_C(0x001ECE)},
- {RUNE_C(0x001ED0), RUNE_C(0x001ED0)},
- {RUNE_C(0x001ED2), RUNE_C(0x001ED2)},
- {RUNE_C(0x001ED4), RUNE_C(0x001ED4)},
- {RUNE_C(0x001ED6), RUNE_C(0x001ED6)},
- {RUNE_C(0x001ED8), RUNE_C(0x001ED8)},
- {RUNE_C(0x001EDA), RUNE_C(0x001EDA)},
- {RUNE_C(0x001EDC), RUNE_C(0x001EDC)},
- {RUNE_C(0x001EDE), RUNE_C(0x001EDE)},
- {RUNE_C(0x001EE0), RUNE_C(0x001EE0)},
- {RUNE_C(0x001EE2), RUNE_C(0x001EE2)},
- {RUNE_C(0x001EE4), RUNE_C(0x001EE4)},
- {RUNE_C(0x001EE6), RUNE_C(0x001EE6)},
- {RUNE_C(0x001EE8), RUNE_C(0x001EE8)},
- {RUNE_C(0x001EEA), RUNE_C(0x001EEA)},
- {RUNE_C(0x001EEC), RUNE_C(0x001EEC)},
- {RUNE_C(0x001EEE), RUNE_C(0x001EEE)},
- {RUNE_C(0x001EF0), RUNE_C(0x001EF0)},
- {RUNE_C(0x001EF2), RUNE_C(0x001EF2)},
- {RUNE_C(0x001EF4), RUNE_C(0x001EF4)},
- {RUNE_C(0x001EF6), RUNE_C(0x001EF6)},
- {RUNE_C(0x001EF8), RUNE_C(0x001EF8)},
- {RUNE_C(0x001EFA), RUNE_C(0x001EFA)},
- {RUNE_C(0x001EFC), RUNE_C(0x001EFC)},
- {RUNE_C(0x001EFE), RUNE_C(0x001EFE)},
- {RUNE_C(0x001F08), RUNE_C(0x001F0F)},
- {RUNE_C(0x001F18), RUNE_C(0x001F1D)},
- {RUNE_C(0x001F28), RUNE_C(0x001F2F)},
- {RUNE_C(0x001F38), RUNE_C(0x001F3F)},
- {RUNE_C(0x001F48), RUNE_C(0x001F4D)},
- {RUNE_C(0x001F59), RUNE_C(0x001F59)},
- {RUNE_C(0x001F5B), RUNE_C(0x001F5B)},
- {RUNE_C(0x001F5D), RUNE_C(0x001F5D)},
- {RUNE_C(0x001F5F), RUNE_C(0x001F5F)},
- {RUNE_C(0x001F68), RUNE_C(0x001F6F)},
- {RUNE_C(0x001F71), RUNE_C(0x001F71)},
- {RUNE_C(0x001F73), RUNE_C(0x001F73)},
- {RUNE_C(0x001F75), RUNE_C(0x001F75)},
- {RUNE_C(0x001F77), RUNE_C(0x001F77)},
- {RUNE_C(0x001F79), RUNE_C(0x001F79)},
- {RUNE_C(0x001F7B), RUNE_C(0x001F7B)},
- {RUNE_C(0x001F7D), RUNE_C(0x001F7D)},
- {RUNE_C(0x001F80), RUNE_C(0x001FAF)},
- {RUNE_C(0x001FB2), RUNE_C(0x001FB4)},
- {RUNE_C(0x001FB7), RUNE_C(0x001FC4)},
- {RUNE_C(0x001FC7), RUNE_C(0x001FCF)},
- {RUNE_C(0x001FD3), RUNE_C(0x001FD3)},
- {RUNE_C(0x001FD8), RUNE_C(0x001FDB)},
- {RUNE_C(0x001FDD), RUNE_C(0x001FDF)},
- {RUNE_C(0x001FE3), RUNE_C(0x001FE3)},
- {RUNE_C(0x001FE8), RUNE_C(0x001FEF)},
- {RUNE_C(0x001FF2), RUNE_C(0x001FF4)},
- {RUNE_C(0x001FF7), RUNE_C(0x001FFE)},
- {RUNE_C(0x002000), RUNE_C(0x00200F)},
- {RUNE_C(0x002011), RUNE_C(0x002011)},
- {RUNE_C(0x002017), RUNE_C(0x002017)},
- {RUNE_C(0x002024), RUNE_C(0x002026)},
- {RUNE_C(0x00202A), RUNE_C(0x00202F)},
- {RUNE_C(0x002033), RUNE_C(0x002034)},
- {RUNE_C(0x002036), RUNE_C(0x002037)},
- {RUNE_C(0x00203C), RUNE_C(0x00203C)},
- {RUNE_C(0x00203E), RUNE_C(0x00203E)},
- {RUNE_C(0x002047), RUNE_C(0x002049)},
- {RUNE_C(0x002057), RUNE_C(0x002057)},
- {RUNE_C(0x00205F), RUNE_C(0x002071)},
- {RUNE_C(0x002074), RUNE_C(0x00208E)},
- {RUNE_C(0x002090), RUNE_C(0x00209C)},
- {RUNE_C(0x0020A8), RUNE_C(0x0020A8)},
- {RUNE_C(0x002100), RUNE_C(0x002103)},
- {RUNE_C(0x002105), RUNE_C(0x002107)},
- {RUNE_C(0x002109), RUNE_C(0x002113)},
- {RUNE_C(0x002115), RUNE_C(0x002116)},
- {RUNE_C(0x002119), RUNE_C(0x00211D)},
- {RUNE_C(0x002120), RUNE_C(0x002122)},
- {RUNE_C(0x002124), RUNE_C(0x002124)},
- {RUNE_C(0x002126), RUNE_C(0x002126)},
- {RUNE_C(0x002128), RUNE_C(0x002128)},
- {RUNE_C(0x00212A), RUNE_C(0x00212D)},
- {RUNE_C(0x00212F), RUNE_C(0x002139)},
- {RUNE_C(0x00213B), RUNE_C(0x002140)},
- {RUNE_C(0x002145), RUNE_C(0x002149)},
- {RUNE_C(0x002150), RUNE_C(0x00217F)},
- {RUNE_C(0x002183), RUNE_C(0x002183)},
- {RUNE_C(0x002189), RUNE_C(0x002189)},
- {RUNE_C(0x00222C), RUNE_C(0x00222D)},
- {RUNE_C(0x00222F), RUNE_C(0x002230)},
- {RUNE_C(0x002329), RUNE_C(0x00232A)},
- {RUNE_C(0x002460), RUNE_C(0x0024EA)},
- {RUNE_C(0x002A0C), RUNE_C(0x002A0C)},
- {RUNE_C(0x002A74), RUNE_C(0x002A76)},
- {RUNE_C(0x002ADC), RUNE_C(0x002ADC)},
- {RUNE_C(0x002C00), RUNE_C(0x002C2F)},
- {RUNE_C(0x002C60), RUNE_C(0x002C60)},
- {RUNE_C(0x002C62), RUNE_C(0x002C64)},
- {RUNE_C(0x002C67), RUNE_C(0x002C67)},
- {RUNE_C(0x002C69), RUNE_C(0x002C69)},
- {RUNE_C(0x002C6B), RUNE_C(0x002C6B)},
- {RUNE_C(0x002C6D), RUNE_C(0x002C70)},
- {RUNE_C(0x002C72), RUNE_C(0x002C72)},
- {RUNE_C(0x002C75), RUNE_C(0x002C75)},
- {RUNE_C(0x002C7C), RUNE_C(0x002C80)},
- {RUNE_C(0x002C82), RUNE_C(0x002C82)},
- {RUNE_C(0x002C84), RUNE_C(0x002C84)},
- {RUNE_C(0x002C86), RUNE_C(0x002C86)},
- {RUNE_C(0x002C88), RUNE_C(0x002C88)},
- {RUNE_C(0x002C8A), RUNE_C(0x002C8A)},
- {RUNE_C(0x002C8C), RUNE_C(0x002C8C)},
- {RUNE_C(0x002C8E), RUNE_C(0x002C8E)},
- {RUNE_C(0x002C90), RUNE_C(0x002C90)},
- {RUNE_C(0x002C92), RUNE_C(0x002C92)},
- {RUNE_C(0x002C94), RUNE_C(0x002C94)},
- {RUNE_C(0x002C96), RUNE_C(0x002C96)},
- {RUNE_C(0x002C98), RUNE_C(0x002C98)},
- {RUNE_C(0x002C9A), RUNE_C(0x002C9A)},
- {RUNE_C(0x002C9C), RUNE_C(0x002C9C)},
- {RUNE_C(0x002C9E), RUNE_C(0x002C9E)},
- {RUNE_C(0x002CA0), RUNE_C(0x002CA0)},
- {RUNE_C(0x002CA2), RUNE_C(0x002CA2)},
- {RUNE_C(0x002CA4), RUNE_C(0x002CA4)},
- {RUNE_C(0x002CA6), RUNE_C(0x002CA6)},
- {RUNE_C(0x002CA8), RUNE_C(0x002CA8)},
- {RUNE_C(0x002CAA), RUNE_C(0x002CAA)},
- {RUNE_C(0x002CAC), RUNE_C(0x002CAC)},
- {RUNE_C(0x002CAE), RUNE_C(0x002CAE)},
- {RUNE_C(0x002CB0), RUNE_C(0x002CB0)},
- {RUNE_C(0x002CB2), RUNE_C(0x002CB2)},
- {RUNE_C(0x002CB4), RUNE_C(0x002CB4)},
- {RUNE_C(0x002CB6), RUNE_C(0x002CB6)},
- {RUNE_C(0x002CB8), RUNE_C(0x002CB8)},
- {RUNE_C(0x002CBA), RUNE_C(0x002CBA)},
- {RUNE_C(0x002CBC), RUNE_C(0x002CBC)},
- {RUNE_C(0x002CBE), RUNE_C(0x002CBE)},
- {RUNE_C(0x002CC0), RUNE_C(0x002CC0)},
- {RUNE_C(0x002CC2), RUNE_C(0x002CC2)},
- {RUNE_C(0x002CC4), RUNE_C(0x002CC4)},
- {RUNE_C(0x002CC6), RUNE_C(0x002CC6)},
- {RUNE_C(0x002CC8), RUNE_C(0x002CC8)},
- {RUNE_C(0x002CCA), RUNE_C(0x002CCA)},
- {RUNE_C(0x002CCC), RUNE_C(0x002CCC)},
- {RUNE_C(0x002CCE), RUNE_C(0x002CCE)},
- {RUNE_C(0x002CD0), RUNE_C(0x002CD0)},
- {RUNE_C(0x002CD2), RUNE_C(0x002CD2)},
- {RUNE_C(0x002CD4), RUNE_C(0x002CD4)},
- {RUNE_C(0x002CD6), RUNE_C(0x002CD6)},
- {RUNE_C(0x002CD8), RUNE_C(0x002CD8)},
- {RUNE_C(0x002CDA), RUNE_C(0x002CDA)},
- {RUNE_C(0x002CDC), RUNE_C(0x002CDC)},
- {RUNE_C(0x002CDE), RUNE_C(0x002CDE)},
- {RUNE_C(0x002CE0), RUNE_C(0x002CE0)},
- {RUNE_C(0x002CE2), RUNE_C(0x002CE2)},
- {RUNE_C(0x002CEB), RUNE_C(0x002CEB)},
- {RUNE_C(0x002CED), RUNE_C(0x002CED)},
- {RUNE_C(0x002CF2), RUNE_C(0x002CF2)},
- {RUNE_C(0x002D6F), RUNE_C(0x002D6F)},
- {RUNE_C(0x002E9F), RUNE_C(0x002E9F)},
- {RUNE_C(0x002EF3), RUNE_C(0x002EF3)},
- {RUNE_C(0x002F00), RUNE_C(0x002FD5)},
- {RUNE_C(0x003000), RUNE_C(0x003000)},
- {RUNE_C(0x003036), RUNE_C(0x003036)},
- {RUNE_C(0x003038), RUNE_C(0x00303A)},
- {RUNE_C(0x00309B), RUNE_C(0x00309C)},
- {RUNE_C(0x00309F), RUNE_C(0x00309F)},
- {RUNE_C(0x0030FF), RUNE_C(0x0030FF)},
- {RUNE_C(0x003131), RUNE_C(0x00318E)},
- {RUNE_C(0x003192), RUNE_C(0x00319F)},
- {RUNE_C(0x003200), RUNE_C(0x00321E)},
- {RUNE_C(0x003220), RUNE_C(0x003247)},
- {RUNE_C(0x003250), RUNE_C(0x00327E)},
- {RUNE_C(0x003280), RUNE_C(0x0033FF)},
- {RUNE_C(0x00A640), RUNE_C(0x00A640)},
- {RUNE_C(0x00A642), RUNE_C(0x00A642)},
- {RUNE_C(0x00A644), RUNE_C(0x00A644)},
- {RUNE_C(0x00A646), RUNE_C(0x00A646)},
- {RUNE_C(0x00A648), RUNE_C(0x00A648)},
- {RUNE_C(0x00A64A), RUNE_C(0x00A64A)},
- {RUNE_C(0x00A64C), RUNE_C(0x00A64C)},
- {RUNE_C(0x00A64E), RUNE_C(0x00A64E)},
- {RUNE_C(0x00A650), RUNE_C(0x00A650)},
- {RUNE_C(0x00A652), RUNE_C(0x00A652)},
- {RUNE_C(0x00A654), RUNE_C(0x00A654)},
- {RUNE_C(0x00A656), RUNE_C(0x00A656)},
- {RUNE_C(0x00A658), RUNE_C(0x00A658)},
- {RUNE_C(0x00A65A), RUNE_C(0x00A65A)},
- {RUNE_C(0x00A65C), RUNE_C(0x00A65C)},
- {RUNE_C(0x00A65E), RUNE_C(0x00A65E)},
- {RUNE_C(0x00A660), RUNE_C(0x00A660)},
- {RUNE_C(0x00A662), RUNE_C(0x00A662)},
- {RUNE_C(0x00A664), RUNE_C(0x00A664)},
- {RUNE_C(0x00A666), RUNE_C(0x00A666)},
- {RUNE_C(0x00A668), RUNE_C(0x00A668)},
- {RUNE_C(0x00A66A), RUNE_C(0x00A66A)},
- {RUNE_C(0x00A66C), RUNE_C(0x00A66C)},
- {RUNE_C(0x00A680), RUNE_C(0x00A680)},
- {RUNE_C(0x00A682), RUNE_C(0x00A682)},
- {RUNE_C(0x00A684), RUNE_C(0x00A684)},
- {RUNE_C(0x00A686), RUNE_C(0x00A686)},
- {RUNE_C(0x00A688), RUNE_C(0x00A688)},
- {RUNE_C(0x00A68A), RUNE_C(0x00A68A)},
- {RUNE_C(0x00A68C), RUNE_C(0x00A68C)},
- {RUNE_C(0x00A68E), RUNE_C(0x00A68E)},
- {RUNE_C(0x00A690), RUNE_C(0x00A690)},
- {RUNE_C(0x00A692), RUNE_C(0x00A692)},
- {RUNE_C(0x00A694), RUNE_C(0x00A694)},
- {RUNE_C(0x00A696), RUNE_C(0x00A696)},
- {RUNE_C(0x00A698), RUNE_C(0x00A698)},
- {RUNE_C(0x00A69A), RUNE_C(0x00A69A)},
- {RUNE_C(0x00A69C), RUNE_C(0x00A69D)},
- {RUNE_C(0x00A722), RUNE_C(0x00A722)},
- {RUNE_C(0x00A724), RUNE_C(0x00A724)},
- {RUNE_C(0x00A726), RUNE_C(0x00A726)},
- {RUNE_C(0x00A728), RUNE_C(0x00A728)},
- {RUNE_C(0x00A72A), RUNE_C(0x00A72A)},
- {RUNE_C(0x00A72C), RUNE_C(0x00A72C)},
- {RUNE_C(0x00A72E), RUNE_C(0x00A72E)},
- {RUNE_C(0x00A732), RUNE_C(0x00A732)},
- {RUNE_C(0x00A734), RUNE_C(0x00A734)},
- {RUNE_C(0x00A736), RUNE_C(0x00A736)},
- {RUNE_C(0x00A738), RUNE_C(0x00A738)},
- {RUNE_C(0x00A73A), RUNE_C(0x00A73A)},
- {RUNE_C(0x00A73C), RUNE_C(0x00A73C)},
- {RUNE_C(0x00A73E), RUNE_C(0x00A73E)},
- {RUNE_C(0x00A740), RUNE_C(0x00A740)},
- {RUNE_C(0x00A742), RUNE_C(0x00A742)},
- {RUNE_C(0x00A744), RUNE_C(0x00A744)},
- {RUNE_C(0x00A746), RUNE_C(0x00A746)},
- {RUNE_C(0x00A748), RUNE_C(0x00A748)},
- {RUNE_C(0x00A74A), RUNE_C(0x00A74A)},
- {RUNE_C(0x00A74C), RUNE_C(0x00A74C)},
- {RUNE_C(0x00A74E), RUNE_C(0x00A74E)},
- {RUNE_C(0x00A750), RUNE_C(0x00A750)},
- {RUNE_C(0x00A752), RUNE_C(0x00A752)},
- {RUNE_C(0x00A754), RUNE_C(0x00A754)},
- {RUNE_C(0x00A756), RUNE_C(0x00A756)},
- {RUNE_C(0x00A758), RUNE_C(0x00A758)},
- {RUNE_C(0x00A75A), RUNE_C(0x00A75A)},
- {RUNE_C(0x00A75C), RUNE_C(0x00A75C)},
- {RUNE_C(0x00A75E), RUNE_C(0x00A75E)},
- {RUNE_C(0x00A760), RUNE_C(0x00A760)},
- {RUNE_C(0x00A762), RUNE_C(0x00A762)},
- {RUNE_C(0x00A764), RUNE_C(0x00A764)},
- {RUNE_C(0x00A766), RUNE_C(0x00A766)},
- {RUNE_C(0x00A768), RUNE_C(0x00A768)},
- {RUNE_C(0x00A76A), RUNE_C(0x00A76A)},
- {RUNE_C(0x00A76C), RUNE_C(0x00A76C)},
- {RUNE_C(0x00A76E), RUNE_C(0x00A76E)},
- {RUNE_C(0x00A770), RUNE_C(0x00A770)},
- {RUNE_C(0x00A779), RUNE_C(0x00A779)},
- {RUNE_C(0x00A77B), RUNE_C(0x00A77B)},
- {RUNE_C(0x00A77D), RUNE_C(0x00A77E)},
- {RUNE_C(0x00A780), RUNE_C(0x00A780)},
- {RUNE_C(0x00A782), RUNE_C(0x00A782)},
- {RUNE_C(0x00A784), RUNE_C(0x00A784)},
- {RUNE_C(0x00A786), RUNE_C(0x00A786)},
- {RUNE_C(0x00A78B), RUNE_C(0x00A78B)},
- {RUNE_C(0x00A78D), RUNE_C(0x00A78D)},
- {RUNE_C(0x00A790), RUNE_C(0x00A790)},
- {RUNE_C(0x00A792), RUNE_C(0x00A792)},
- {RUNE_C(0x00A796), RUNE_C(0x00A796)},
- {RUNE_C(0x00A798), RUNE_C(0x00A798)},
- {RUNE_C(0x00A79A), RUNE_C(0x00A79A)},
- {RUNE_C(0x00A79C), RUNE_C(0x00A79C)},
- {RUNE_C(0x00A79E), RUNE_C(0x00A79E)},
- {RUNE_C(0x00A7A0), RUNE_C(0x00A7A0)},
- {RUNE_C(0x00A7A2), RUNE_C(0x00A7A2)},
- {RUNE_C(0x00A7A4), RUNE_C(0x00A7A4)},
- {RUNE_C(0x00A7A6), RUNE_C(0x00A7A6)},
- {RUNE_C(0x00A7A8), RUNE_C(0x00A7A8)},
- {RUNE_C(0x00A7AA), RUNE_C(0x00A7AE)},
- {RUNE_C(0x00A7B0), RUNE_C(0x00A7B4)},
- {RUNE_C(0x00A7B6), RUNE_C(0x00A7B6)},
- {RUNE_C(0x00A7B8), RUNE_C(0x00A7B8)},
- {RUNE_C(0x00A7BA), RUNE_C(0x00A7BA)},
- {RUNE_C(0x00A7BC), RUNE_C(0x00A7BC)},
- {RUNE_C(0x00A7BE), RUNE_C(0x00A7BE)},
- {RUNE_C(0x00A7C0), RUNE_C(0x00A7C0)},
- {RUNE_C(0x00A7C2), RUNE_C(0x00A7C2)},
- {RUNE_C(0x00A7C4), RUNE_C(0x00A7C7)},
- {RUNE_C(0x00A7C9), RUNE_C(0x00A7C9)},
- {RUNE_C(0x00A7D0), RUNE_C(0x00A7D0)},
- {RUNE_C(0x00A7D6), RUNE_C(0x00A7D6)},
- {RUNE_C(0x00A7D8), RUNE_C(0x00A7D8)},
- {RUNE_C(0x00A7F2), RUNE_C(0x00A7F5)},
- {RUNE_C(0x00A7F8), RUNE_C(0x00A7F9)},
- {RUNE_C(0x00AB5C), RUNE_C(0x00AB5F)},
- {RUNE_C(0x00AB69), RUNE_C(0x00AB69)},
- {RUNE_C(0x00AB70), RUNE_C(0x00ABBF)},
- {RUNE_C(0x00F900), RUNE_C(0x00FA0D)},
- {RUNE_C(0x00FA10), RUNE_C(0x00FA10)},
- {RUNE_C(0x00FA12), RUNE_C(0x00FA12)},
- {RUNE_C(0x00FA15), RUNE_C(0x00FA1E)},
- {RUNE_C(0x00FA20), RUNE_C(0x00FA20)},
- {RUNE_C(0x00FA22), RUNE_C(0x00FA22)},
- {RUNE_C(0x00FA25), RUNE_C(0x00FA26)},
- {RUNE_C(0x00FA2A), RUNE_C(0x00FA6D)},
- {RUNE_C(0x00FA70), RUNE_C(0x00FAD9)},
- {RUNE_C(0x00FB00), RUNE_C(0x00FB06)},
- {RUNE_C(0x00FB13), RUNE_C(0x00FB17)},
- {RUNE_C(0x00FB1D), RUNE_C(0x00FB1D)},
- {RUNE_C(0x00FB1F), RUNE_C(0x00FB36)},
- {RUNE_C(0x00FB38), RUNE_C(0x00FB3C)},
- {RUNE_C(0x00FB3E), RUNE_C(0x00FB3E)},
- {RUNE_C(0x00FB40), RUNE_C(0x00FB41)},
- {RUNE_C(0x00FB43), RUNE_C(0x00FB44)},
- {RUNE_C(0x00FB46), RUNE_C(0x00FBB1)},
- {RUNE_C(0x00FBD3), RUNE_C(0x00FD3D)},
- {RUNE_C(0x00FD50), RUNE_C(0x00FD8F)},
- {RUNE_C(0x00FD92), RUNE_C(0x00FDC7)},
- {RUNE_C(0x00FDF0), RUNE_C(0x00FDFC)},
- {RUNE_C(0x00FE00), RUNE_C(0x00FE19)},
- {RUNE_C(0x00FE30), RUNE_C(0x00FE44)},
- {RUNE_C(0x00FE47), RUNE_C(0x00FE52)},
- {RUNE_C(0x00FE54), RUNE_C(0x00FE66)},
- {RUNE_C(0x00FE68), RUNE_C(0x00FE6B)},
- {RUNE_C(0x00FE70), RUNE_C(0x00FE72)},
- {RUNE_C(0x00FE74), RUNE_C(0x00FE74)},
- {RUNE_C(0x00FE76), RUNE_C(0x00FEFC)},
- {RUNE_C(0x00FEFF), RUNE_C(0x00FEFF)},
- {RUNE_C(0x00FF01), RUNE_C(0x00FFBE)},
- {RUNE_C(0x00FFC2), RUNE_C(0x00FFC7)},
- {RUNE_C(0x00FFCA), RUNE_C(0x00FFCF)},
- {RUNE_C(0x00FFD2), RUNE_C(0x00FFD7)},
- {RUNE_C(0x00FFDA), RUNE_C(0x00FFDC)},
- {RUNE_C(0x00FFE0), RUNE_C(0x00FFE6)},
- {RUNE_C(0x00FFE8), RUNE_C(0x00FFEE)},
- {RUNE_C(0x00FFF0), RUNE_C(0x00FFF8)},
- {RUNE_C(0x010400), RUNE_C(0x010427)},
- {RUNE_C(0x0104B0), RUNE_C(0x0104D3)},
- {RUNE_C(0x010570), RUNE_C(0x01057A)},
- {RUNE_C(0x01057C), RUNE_C(0x01058A)},
- {RUNE_C(0x01058C), RUNE_C(0x010592)},
- {RUNE_C(0x010594), RUNE_C(0x010595)},
- {RUNE_C(0x010781), RUNE_C(0x010785)},
- {RUNE_C(0x010787), RUNE_C(0x0107B0)},
- {RUNE_C(0x0107B2), RUNE_C(0x0107BA)},
- {RUNE_C(0x010C80), RUNE_C(0x010CB2)},
- {RUNE_C(0x0118A0), RUNE_C(0x0118BF)},
- {RUNE_C(0x016E40), RUNE_C(0x016E5F)},
- {RUNE_C(0x01BCA0), RUNE_C(0x01BCA3)},
- {RUNE_C(0x01D15E), RUNE_C(0x01D164)},
- {RUNE_C(0x01D173), RUNE_C(0x01D17A)},
- {RUNE_C(0x01D1BB), RUNE_C(0x01D1C0)},
- {RUNE_C(0x01D400), RUNE_C(0x01D454)},
- {RUNE_C(0x01D456), RUNE_C(0x01D49C)},
- {RUNE_C(0x01D49E), RUNE_C(0x01D49F)},
- {RUNE_C(0x01D4A2), RUNE_C(0x01D4A2)},
- {RUNE_C(0x01D4A5), RUNE_C(0x01D4A6)},
- {RUNE_C(0x01D4A9), RUNE_C(0x01D4AC)},
- {RUNE_C(0x01D4AE), RUNE_C(0x01D4B9)},
- {RUNE_C(0x01D4BB), RUNE_C(0x01D4BB)},
- {RUNE_C(0x01D4BD), RUNE_C(0x01D4C3)},
- {RUNE_C(0x01D4C5), RUNE_C(0x01D505)},
- {RUNE_C(0x01D507), RUNE_C(0x01D50A)},
- {RUNE_C(0x01D50D), RUNE_C(0x01D514)},
- {RUNE_C(0x01D516), RUNE_C(0x01D51C)},
- {RUNE_C(0x01D51E), RUNE_C(0x01D539)},
- {RUNE_C(0x01D53B), RUNE_C(0x01D53E)},
- {RUNE_C(0x01D540), RUNE_C(0x01D544)},
- {RUNE_C(0x01D546), RUNE_C(0x01D546)},
- {RUNE_C(0x01D54A), RUNE_C(0x01D550)},
- {RUNE_C(0x01D552), RUNE_C(0x01D6A5)},
- {RUNE_C(0x01D6A8), RUNE_C(0x01D7CB)},
- {RUNE_C(0x01D7CE), RUNE_C(0x01D7FF)},
- {RUNE_C(0x01E030), RUNE_C(0x01E06D)},
- {RUNE_C(0x01E900), RUNE_C(0x01E921)},
- {RUNE_C(0x01EE00), RUNE_C(0x01EE03)},
- {RUNE_C(0x01EE05), RUNE_C(0x01EE1F)},
- {RUNE_C(0x01EE21), RUNE_C(0x01EE22)},
- {RUNE_C(0x01EE24), RUNE_C(0x01EE24)},
- {RUNE_C(0x01EE27), RUNE_C(0x01EE27)},
- {RUNE_C(0x01EE29), RUNE_C(0x01EE32)},
- {RUNE_C(0x01EE34), RUNE_C(0x01EE37)},
- {RUNE_C(0x01EE39), RUNE_C(0x01EE39)},
- {RUNE_C(0x01EE3B), RUNE_C(0x01EE3B)},
- {RUNE_C(0x01EE42), RUNE_C(0x01EE42)},
- {RUNE_C(0x01EE47), RUNE_C(0x01EE47)},
- {RUNE_C(0x01EE49), RUNE_C(0x01EE49)},
- {RUNE_C(0x01EE4B), RUNE_C(0x01EE4B)},
- {RUNE_C(0x01EE4D), RUNE_C(0x01EE4F)},
- {RUNE_C(0x01EE51), RUNE_C(0x01EE52)},
- {RUNE_C(0x01EE54), RUNE_C(0x01EE54)},
- {RUNE_C(0x01EE57), RUNE_C(0x01EE57)},
- {RUNE_C(0x01EE59), RUNE_C(0x01EE59)},
- {RUNE_C(0x01EE5B), RUNE_C(0x01EE5B)},
- {RUNE_C(0x01EE5D), RUNE_C(0x01EE5D)},
- {RUNE_C(0x01EE5F), RUNE_C(0x01EE5F)},
- {RUNE_C(0x01EE61), RUNE_C(0x01EE62)},
- {RUNE_C(0x01EE64), RUNE_C(0x01EE64)},
- {RUNE_C(0x01EE67), RUNE_C(0x01EE6A)},
- {RUNE_C(0x01EE6C), RUNE_C(0x01EE72)},
- {RUNE_C(0x01EE74), RUNE_C(0x01EE77)},
- {RUNE_C(0x01EE79), RUNE_C(0x01EE7C)},
- {RUNE_C(0x01EE7E), RUNE_C(0x01EE7E)},
- {RUNE_C(0x01EE80), RUNE_C(0x01EE89)},
- {RUNE_C(0x01EE8B), RUNE_C(0x01EE9B)},
- {RUNE_C(0x01EEA1), RUNE_C(0x01EEA3)},
- {RUNE_C(0x01EEA5), RUNE_C(0x01EEA9)},
- {RUNE_C(0x01EEAB), RUNE_C(0x01EEBB)},
- {RUNE_C(0x01F100), RUNE_C(0x01F10A)},
- {RUNE_C(0x01F110), RUNE_C(0x01F12E)},
- {RUNE_C(0x01F130), RUNE_C(0x01F14F)},
- {RUNE_C(0x01F16A), RUNE_C(0x01F16C)},
- {RUNE_C(0x01F190), RUNE_C(0x01F190)},
- {RUNE_C(0x01F200), RUNE_C(0x01F202)},
- {RUNE_C(0x01F210), RUNE_C(0x01F23B)},
- {RUNE_C(0x01F240), RUNE_C(0x01F248)},
- {RUNE_C(0x01F250), RUNE_C(0x01F251)},
- {RUNE_C(0x01FBF0), RUNE_C(0x01FBF9)},
- {RUNE_C(0x02F800), RUNE_C(0x02FA1D)},
- {RUNE_C(0x0E0000), RUNE_C(0x0E0FFF)},
+static constexpr unsigned char stage2[][32] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFE, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0xA5, 0x3C, 0x77,
+ 0xFF, 0xFF, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00},
+ {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x5D, 0xAA,
+ 0xAB, 0x56, 0x55, 0x55, 0x55, 0x55, 0x55, 0xAB,
+ 0xD6, 0xCE, 0xDB, 0xB1, 0xD5, 0xD2, 0xAE, 0x11,
+ 0xF0, 0xBF, 0xAA, 0x4A, 0x55, 0x55, 0xDE, 0x55},
+ {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0x6C,
+ 0x7A, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x01,
+ 0x00, 0x00, 0x00, 0x3F, 0x1F, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x3B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x55, 0xC4,
+ 0xF0, 0xD7, 0xFE, 0xFF, 0xFB, 0x0F, 0x00, 0x00,
+ 0x04, 0x80, 0x7F, 0x55, 0x55, 0x55, 0xB7, 0xE6},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55,
+ 0x01, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0xAB, 0x2A, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55},
+ {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xFE, 0xFF,
+ 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00,
+ 0x00, 0x00, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
+ 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x20, 0x84, 0x10, 0x00, 0x02, 0xE8, 0x03,
+ 0x02, 0x00, 0x08, 0x20, 0x84, 0x10, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xBF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xF7,
+ 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x15, 0x4C, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55},
+ {0x00, 0xFF, 0x00, 0x3F, 0x00, 0xFF, 0x00, 0xFF,
+ 0x00, 0x3F, 0x00, 0xAA, 0x00, 0xFF, 0xAA, 0x2A,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, 0xFF,
+ 0x9F, 0xFF, 0x08, 0xEF, 0x08, 0xFF, 0x9C, 0x7F},
+ {0xFF, 0xFF, 0x82, 0x00, 0x70, 0xFC, 0xD8, 0x50,
+ 0x80, 0x03, 0x80, 0x80, 0xFF, 0xFF, 0xF3, 0xFF,
+ 0xFF, 0x7F, 0xFF, 0x1F, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xEF, 0xFE, 0x6F, 0x3E, 0x57, 0xBD, 0xFF, 0xFB,
+ 0xE1, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00},
+ {0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x9D, 0xEA, 0x25, 0xF0,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x05, 0x28, 0x04, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x7F, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x00, 0x00,
+ 0x55, 0x55, 0x55, 0x35, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x54, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01, 0x6A,
+ 0x55, 0x28, 0x45, 0x55, 0x55, 0x7D, 0x5F, 0x55,
+ 0xF5, 0x02, 0x41, 0x01, 0x00, 0x00, 0x3C, 0x03},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xF0, 0x00, 0x02, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0x3F, 0xE5, 0x7F, 0x65, 0xFC, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0x00, 0xF8, 0xA0, 0xFF, 0xFF, 0x7F, 0x5F,
+ 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00,
+ 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F},
+ {0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xFF, 0xFF,
+ 0x9F, 0xFF, 0xF7, 0xFF, 0x7F, 0x0F, 0xD7, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F},
+ {0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
+ 0xFC, 0xFC, 0xFC, 0x1C, 0x7F, 0x7F, 0xFF, 0x01},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF7,
+ 0xFF, 0xF7, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xBE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0xF8, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xDF, 0x64, 0xDE, 0xFF, 0xEB,
+ 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xBF, 0xE7, 0xDF, 0xDF, 0xFF, 0xFF, 0xFF, 0x7B,
+ 0x5F, 0xFC, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xEF, 0xFF, 0xFF, 0xFF, 0x96, 0xFE, 0xF7, 0x0A,
+ 0x84, 0xEA, 0x96, 0xAA, 0x96, 0xF7, 0xF7, 0x5E,
+ 0xFF, 0xFB, 0xFF, 0x0F, 0xEE, 0xFB, 0xFF, 0x0F,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F,
+ 0xFF, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_cwkcf(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 256]], ch % 256);
}
diff --git a/lib/unicode/prop/uprop_is_cwl.c b/lib/unicode/prop/uprop_is_cwl.c
index 82152a2..e3792d2 100644
--- a/lib/unicode/prop/uprop_is_cwl.c
+++ b/lib/unicode/prop/uprop_is_cwl.c
@@ -1,634 +1,384 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xFE, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xFF, 0xFF, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 7, 6, 6, 8, 6, 6, 6, 6, 6, 6, 6, 6, 9, 6, 10, 11,
+ 6, 12, 6, 6, 13, 6, 6, 6, 6, 6, 6, 6, 14, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 15, 16, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 17,
+ 6, 6, 6, 6, 18, 19, 6, 6, 6, 6, 6, 6, 20, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 21, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 22, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 23, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000100), RUNE_C(0x000100)},
- {RUNE_C(0x000102), RUNE_C(0x000102)},
- {RUNE_C(0x000104), RUNE_C(0x000104)},
- {RUNE_C(0x000106), RUNE_C(0x000106)},
- {RUNE_C(0x000108), RUNE_C(0x000108)},
- {RUNE_C(0x00010A), RUNE_C(0x00010A)},
- {RUNE_C(0x00010C), RUNE_C(0x00010C)},
- {RUNE_C(0x00010E), RUNE_C(0x00010E)},
- {RUNE_C(0x000110), RUNE_C(0x000110)},
- {RUNE_C(0x000112), RUNE_C(0x000112)},
- {RUNE_C(0x000114), RUNE_C(0x000114)},
- {RUNE_C(0x000116), RUNE_C(0x000116)},
- {RUNE_C(0x000118), RUNE_C(0x000118)},
- {RUNE_C(0x00011A), RUNE_C(0x00011A)},
- {RUNE_C(0x00011C), RUNE_C(0x00011C)},
- {RUNE_C(0x00011E), RUNE_C(0x00011E)},
- {RUNE_C(0x000120), RUNE_C(0x000120)},
- {RUNE_C(0x000122), RUNE_C(0x000122)},
- {RUNE_C(0x000124), RUNE_C(0x000124)},
- {RUNE_C(0x000126), RUNE_C(0x000126)},
- {RUNE_C(0x000128), RUNE_C(0x000128)},
- {RUNE_C(0x00012A), RUNE_C(0x00012A)},
- {RUNE_C(0x00012C), RUNE_C(0x00012C)},
- {RUNE_C(0x00012E), RUNE_C(0x00012E)},
- {RUNE_C(0x000130), RUNE_C(0x000130)},
- {RUNE_C(0x000132), RUNE_C(0x000132)},
- {RUNE_C(0x000134), RUNE_C(0x000134)},
- {RUNE_C(0x000136), RUNE_C(0x000136)},
- {RUNE_C(0x000139), RUNE_C(0x000139)},
- {RUNE_C(0x00013B), RUNE_C(0x00013B)},
- {RUNE_C(0x00013D), RUNE_C(0x00013D)},
- {RUNE_C(0x00013F), RUNE_C(0x00013F)},
- {RUNE_C(0x000141), RUNE_C(0x000141)},
- {RUNE_C(0x000143), RUNE_C(0x000143)},
- {RUNE_C(0x000145), RUNE_C(0x000145)},
- {RUNE_C(0x000147), RUNE_C(0x000147)},
- {RUNE_C(0x00014A), RUNE_C(0x00014A)},
- {RUNE_C(0x00014C), RUNE_C(0x00014C)},
- {RUNE_C(0x00014E), RUNE_C(0x00014E)},
- {RUNE_C(0x000150), RUNE_C(0x000150)},
- {RUNE_C(0x000152), RUNE_C(0x000152)},
- {RUNE_C(0x000154), RUNE_C(0x000154)},
- {RUNE_C(0x000156), RUNE_C(0x000156)},
- {RUNE_C(0x000158), RUNE_C(0x000158)},
- {RUNE_C(0x00015A), RUNE_C(0x00015A)},
- {RUNE_C(0x00015C), RUNE_C(0x00015C)},
- {RUNE_C(0x00015E), RUNE_C(0x00015E)},
- {RUNE_C(0x000160), RUNE_C(0x000160)},
- {RUNE_C(0x000162), RUNE_C(0x000162)},
- {RUNE_C(0x000164), RUNE_C(0x000164)},
- {RUNE_C(0x000166), RUNE_C(0x000166)},
- {RUNE_C(0x000168), RUNE_C(0x000168)},
- {RUNE_C(0x00016A), RUNE_C(0x00016A)},
- {RUNE_C(0x00016C), RUNE_C(0x00016C)},
- {RUNE_C(0x00016E), RUNE_C(0x00016E)},
- {RUNE_C(0x000170), RUNE_C(0x000170)},
- {RUNE_C(0x000172), RUNE_C(0x000172)},
- {RUNE_C(0x000174), RUNE_C(0x000174)},
- {RUNE_C(0x000176), RUNE_C(0x000176)},
- {RUNE_C(0x000178), RUNE_C(0x000179)},
- {RUNE_C(0x00017B), RUNE_C(0x00017B)},
- {RUNE_C(0x00017D), RUNE_C(0x00017D)},
- {RUNE_C(0x000181), RUNE_C(0x000182)},
- {RUNE_C(0x000184), RUNE_C(0x000184)},
- {RUNE_C(0x000186), RUNE_C(0x000187)},
- {RUNE_C(0x000189), RUNE_C(0x00018B)},
- {RUNE_C(0x00018E), RUNE_C(0x000191)},
- {RUNE_C(0x000193), RUNE_C(0x000194)},
- {RUNE_C(0x000196), RUNE_C(0x000198)},
- {RUNE_C(0x00019C), RUNE_C(0x00019D)},
- {RUNE_C(0x00019F), RUNE_C(0x0001A0)},
- {RUNE_C(0x0001A2), RUNE_C(0x0001A2)},
- {RUNE_C(0x0001A4), RUNE_C(0x0001A4)},
- {RUNE_C(0x0001A6), RUNE_C(0x0001A7)},
- {RUNE_C(0x0001A9), RUNE_C(0x0001A9)},
- {RUNE_C(0x0001AC), RUNE_C(0x0001AC)},
- {RUNE_C(0x0001AE), RUNE_C(0x0001AF)},
- {RUNE_C(0x0001B1), RUNE_C(0x0001B3)},
- {RUNE_C(0x0001B5), RUNE_C(0x0001B5)},
- {RUNE_C(0x0001B7), RUNE_C(0x0001B8)},
- {RUNE_C(0x0001BC), RUNE_C(0x0001BC)},
- {RUNE_C(0x0001C4), RUNE_C(0x0001C5)},
- {RUNE_C(0x0001C7), RUNE_C(0x0001C8)},
- {RUNE_C(0x0001CA), RUNE_C(0x0001CB)},
- {RUNE_C(0x0001CD), RUNE_C(0x0001CD)},
- {RUNE_C(0x0001CF), RUNE_C(0x0001CF)},
- {RUNE_C(0x0001D1), RUNE_C(0x0001D1)},
- {RUNE_C(0x0001D3), RUNE_C(0x0001D3)},
- {RUNE_C(0x0001D5), RUNE_C(0x0001D5)},
- {RUNE_C(0x0001D7), RUNE_C(0x0001D7)},
- {RUNE_C(0x0001D9), RUNE_C(0x0001D9)},
- {RUNE_C(0x0001DB), RUNE_C(0x0001DB)},
- {RUNE_C(0x0001DE), RUNE_C(0x0001DE)},
- {RUNE_C(0x0001E0), RUNE_C(0x0001E0)},
- {RUNE_C(0x0001E2), RUNE_C(0x0001E2)},
- {RUNE_C(0x0001E4), RUNE_C(0x0001E4)},
- {RUNE_C(0x0001E6), RUNE_C(0x0001E6)},
- {RUNE_C(0x0001E8), RUNE_C(0x0001E8)},
- {RUNE_C(0x0001EA), RUNE_C(0x0001EA)},
- {RUNE_C(0x0001EC), RUNE_C(0x0001EC)},
- {RUNE_C(0x0001EE), RUNE_C(0x0001EE)},
- {RUNE_C(0x0001F1), RUNE_C(0x0001F2)},
- {RUNE_C(0x0001F4), RUNE_C(0x0001F4)},
- {RUNE_C(0x0001F6), RUNE_C(0x0001F8)},
- {RUNE_C(0x0001FA), RUNE_C(0x0001FA)},
- {RUNE_C(0x0001FC), RUNE_C(0x0001FC)},
- {RUNE_C(0x0001FE), RUNE_C(0x0001FE)},
- {RUNE_C(0x000200), RUNE_C(0x000200)},
- {RUNE_C(0x000202), RUNE_C(0x000202)},
- {RUNE_C(0x000204), RUNE_C(0x000204)},
- {RUNE_C(0x000206), RUNE_C(0x000206)},
- {RUNE_C(0x000208), RUNE_C(0x000208)},
- {RUNE_C(0x00020A), RUNE_C(0x00020A)},
- {RUNE_C(0x00020C), RUNE_C(0x00020C)},
- {RUNE_C(0x00020E), RUNE_C(0x00020E)},
- {RUNE_C(0x000210), RUNE_C(0x000210)},
- {RUNE_C(0x000212), RUNE_C(0x000212)},
- {RUNE_C(0x000214), RUNE_C(0x000214)},
- {RUNE_C(0x000216), RUNE_C(0x000216)},
- {RUNE_C(0x000218), RUNE_C(0x000218)},
- {RUNE_C(0x00021A), RUNE_C(0x00021A)},
- {RUNE_C(0x00021C), RUNE_C(0x00021C)},
- {RUNE_C(0x00021E), RUNE_C(0x00021E)},
- {RUNE_C(0x000220), RUNE_C(0x000220)},
- {RUNE_C(0x000222), RUNE_C(0x000222)},
- {RUNE_C(0x000224), RUNE_C(0x000224)},
- {RUNE_C(0x000226), RUNE_C(0x000226)},
- {RUNE_C(0x000228), RUNE_C(0x000228)},
- {RUNE_C(0x00022A), RUNE_C(0x00022A)},
- {RUNE_C(0x00022C), RUNE_C(0x00022C)},
- {RUNE_C(0x00022E), RUNE_C(0x00022E)},
- {RUNE_C(0x000230), RUNE_C(0x000230)},
- {RUNE_C(0x000232), RUNE_C(0x000232)},
- {RUNE_C(0x00023A), RUNE_C(0x00023B)},
- {RUNE_C(0x00023D), RUNE_C(0x00023E)},
- {RUNE_C(0x000241), RUNE_C(0x000241)},
- {RUNE_C(0x000243), RUNE_C(0x000246)},
- {RUNE_C(0x000248), RUNE_C(0x000248)},
- {RUNE_C(0x00024A), RUNE_C(0x00024A)},
- {RUNE_C(0x00024C), RUNE_C(0x00024C)},
- {RUNE_C(0x00024E), RUNE_C(0x00024E)},
- {RUNE_C(0x000370), RUNE_C(0x000370)},
- {RUNE_C(0x000372), RUNE_C(0x000372)},
- {RUNE_C(0x000376), RUNE_C(0x000376)},
- {RUNE_C(0x00037F), RUNE_C(0x00037F)},
- {RUNE_C(0x000386), RUNE_C(0x000386)},
- {RUNE_C(0x000388), RUNE_C(0x00038A)},
- {RUNE_C(0x00038C), RUNE_C(0x00038C)},
- {RUNE_C(0x00038E), RUNE_C(0x00038F)},
- {RUNE_C(0x000391), RUNE_C(0x0003A1)},
- {RUNE_C(0x0003A3), RUNE_C(0x0003AB)},
- {RUNE_C(0x0003CF), RUNE_C(0x0003CF)},
- {RUNE_C(0x0003D8), RUNE_C(0x0003D8)},
- {RUNE_C(0x0003DA), RUNE_C(0x0003DA)},
- {RUNE_C(0x0003DC), RUNE_C(0x0003DC)},
- {RUNE_C(0x0003DE), RUNE_C(0x0003DE)},
- {RUNE_C(0x0003E0), RUNE_C(0x0003E0)},
- {RUNE_C(0x0003E2), RUNE_C(0x0003E2)},
- {RUNE_C(0x0003E4), RUNE_C(0x0003E4)},
- {RUNE_C(0x0003E6), RUNE_C(0x0003E6)},
- {RUNE_C(0x0003E8), RUNE_C(0x0003E8)},
- {RUNE_C(0x0003EA), RUNE_C(0x0003EA)},
- {RUNE_C(0x0003EC), RUNE_C(0x0003EC)},
- {RUNE_C(0x0003EE), RUNE_C(0x0003EE)},
- {RUNE_C(0x0003F4), RUNE_C(0x0003F4)},
- {RUNE_C(0x0003F7), RUNE_C(0x0003F7)},
- {RUNE_C(0x0003F9), RUNE_C(0x0003FA)},
- {RUNE_C(0x0003FD), RUNE_C(0x00042F)},
- {RUNE_C(0x000460), RUNE_C(0x000460)},
- {RUNE_C(0x000462), RUNE_C(0x000462)},
- {RUNE_C(0x000464), RUNE_C(0x000464)},
- {RUNE_C(0x000466), RUNE_C(0x000466)},
- {RUNE_C(0x000468), RUNE_C(0x000468)},
- {RUNE_C(0x00046A), RUNE_C(0x00046A)},
- {RUNE_C(0x00046C), RUNE_C(0x00046C)},
- {RUNE_C(0x00046E), RUNE_C(0x00046E)},
- {RUNE_C(0x000470), RUNE_C(0x000470)},
- {RUNE_C(0x000472), RUNE_C(0x000472)},
- {RUNE_C(0x000474), RUNE_C(0x000474)},
- {RUNE_C(0x000476), RUNE_C(0x000476)},
- {RUNE_C(0x000478), RUNE_C(0x000478)},
- {RUNE_C(0x00047A), RUNE_C(0x00047A)},
- {RUNE_C(0x00047C), RUNE_C(0x00047C)},
- {RUNE_C(0x00047E), RUNE_C(0x00047E)},
- {RUNE_C(0x000480), RUNE_C(0x000480)},
- {RUNE_C(0x00048A), RUNE_C(0x00048A)},
- {RUNE_C(0x00048C), RUNE_C(0x00048C)},
- {RUNE_C(0x00048E), RUNE_C(0x00048E)},
- {RUNE_C(0x000490), RUNE_C(0x000490)},
- {RUNE_C(0x000492), RUNE_C(0x000492)},
- {RUNE_C(0x000494), RUNE_C(0x000494)},
- {RUNE_C(0x000496), RUNE_C(0x000496)},
- {RUNE_C(0x000498), RUNE_C(0x000498)},
- {RUNE_C(0x00049A), RUNE_C(0x00049A)},
- {RUNE_C(0x00049C), RUNE_C(0x00049C)},
- {RUNE_C(0x00049E), RUNE_C(0x00049E)},
- {RUNE_C(0x0004A0), RUNE_C(0x0004A0)},
- {RUNE_C(0x0004A2), RUNE_C(0x0004A2)},
- {RUNE_C(0x0004A4), RUNE_C(0x0004A4)},
- {RUNE_C(0x0004A6), RUNE_C(0x0004A6)},
- {RUNE_C(0x0004A8), RUNE_C(0x0004A8)},
- {RUNE_C(0x0004AA), RUNE_C(0x0004AA)},
- {RUNE_C(0x0004AC), RUNE_C(0x0004AC)},
- {RUNE_C(0x0004AE), RUNE_C(0x0004AE)},
- {RUNE_C(0x0004B0), RUNE_C(0x0004B0)},
- {RUNE_C(0x0004B2), RUNE_C(0x0004B2)},
- {RUNE_C(0x0004B4), RUNE_C(0x0004B4)},
- {RUNE_C(0x0004B6), RUNE_C(0x0004B6)},
- {RUNE_C(0x0004B8), RUNE_C(0x0004B8)},
- {RUNE_C(0x0004BA), RUNE_C(0x0004BA)},
- {RUNE_C(0x0004BC), RUNE_C(0x0004BC)},
- {RUNE_C(0x0004BE), RUNE_C(0x0004BE)},
- {RUNE_C(0x0004C0), RUNE_C(0x0004C1)},
- {RUNE_C(0x0004C3), RUNE_C(0x0004C3)},
- {RUNE_C(0x0004C5), RUNE_C(0x0004C5)},
- {RUNE_C(0x0004C7), RUNE_C(0x0004C7)},
- {RUNE_C(0x0004C9), RUNE_C(0x0004C9)},
- {RUNE_C(0x0004CB), RUNE_C(0x0004CB)},
- {RUNE_C(0x0004CD), RUNE_C(0x0004CD)},
- {RUNE_C(0x0004D0), RUNE_C(0x0004D0)},
- {RUNE_C(0x0004D2), RUNE_C(0x0004D2)},
- {RUNE_C(0x0004D4), RUNE_C(0x0004D4)},
- {RUNE_C(0x0004D6), RUNE_C(0x0004D6)},
- {RUNE_C(0x0004D8), RUNE_C(0x0004D8)},
- {RUNE_C(0x0004DA), RUNE_C(0x0004DA)},
- {RUNE_C(0x0004DC), RUNE_C(0x0004DC)},
- {RUNE_C(0x0004DE), RUNE_C(0x0004DE)},
- {RUNE_C(0x0004E0), RUNE_C(0x0004E0)},
- {RUNE_C(0x0004E2), RUNE_C(0x0004E2)},
- {RUNE_C(0x0004E4), RUNE_C(0x0004E4)},
- {RUNE_C(0x0004E6), RUNE_C(0x0004E6)},
- {RUNE_C(0x0004E8), RUNE_C(0x0004E8)},
- {RUNE_C(0x0004EA), RUNE_C(0x0004EA)},
- {RUNE_C(0x0004EC), RUNE_C(0x0004EC)},
- {RUNE_C(0x0004EE), RUNE_C(0x0004EE)},
- {RUNE_C(0x0004F0), RUNE_C(0x0004F0)},
- {RUNE_C(0x0004F2), RUNE_C(0x0004F2)},
- {RUNE_C(0x0004F4), RUNE_C(0x0004F4)},
- {RUNE_C(0x0004F6), RUNE_C(0x0004F6)},
- {RUNE_C(0x0004F8), RUNE_C(0x0004F8)},
- {RUNE_C(0x0004FA), RUNE_C(0x0004FA)},
- {RUNE_C(0x0004FC), RUNE_C(0x0004FC)},
- {RUNE_C(0x0004FE), RUNE_C(0x0004FE)},
- {RUNE_C(0x000500), RUNE_C(0x000500)},
- {RUNE_C(0x000502), RUNE_C(0x000502)},
- {RUNE_C(0x000504), RUNE_C(0x000504)},
- {RUNE_C(0x000506), RUNE_C(0x000506)},
- {RUNE_C(0x000508), RUNE_C(0x000508)},
- {RUNE_C(0x00050A), RUNE_C(0x00050A)},
- {RUNE_C(0x00050C), RUNE_C(0x00050C)},
- {RUNE_C(0x00050E), RUNE_C(0x00050E)},
- {RUNE_C(0x000510), RUNE_C(0x000510)},
- {RUNE_C(0x000512), RUNE_C(0x000512)},
- {RUNE_C(0x000514), RUNE_C(0x000514)},
- {RUNE_C(0x000516), RUNE_C(0x000516)},
- {RUNE_C(0x000518), RUNE_C(0x000518)},
- {RUNE_C(0x00051A), RUNE_C(0x00051A)},
- {RUNE_C(0x00051C), RUNE_C(0x00051C)},
- {RUNE_C(0x00051E), RUNE_C(0x00051E)},
- {RUNE_C(0x000520), RUNE_C(0x000520)},
- {RUNE_C(0x000522), RUNE_C(0x000522)},
- {RUNE_C(0x000524), RUNE_C(0x000524)},
- {RUNE_C(0x000526), RUNE_C(0x000526)},
- {RUNE_C(0x000528), RUNE_C(0x000528)},
- {RUNE_C(0x00052A), RUNE_C(0x00052A)},
- {RUNE_C(0x00052C), RUNE_C(0x00052C)},
- {RUNE_C(0x00052E), RUNE_C(0x00052E)},
- {RUNE_C(0x000531), RUNE_C(0x000556)},
- {RUNE_C(0x0010A0), RUNE_C(0x0010C5)},
- {RUNE_C(0x0010C7), RUNE_C(0x0010C7)},
- {RUNE_C(0x0010CD), RUNE_C(0x0010CD)},
- {RUNE_C(0x0013A0), RUNE_C(0x0013F5)},
- {RUNE_C(0x001C90), RUNE_C(0x001CBA)},
- {RUNE_C(0x001CBD), RUNE_C(0x001CBF)},
- {RUNE_C(0x001E00), RUNE_C(0x001E00)},
- {RUNE_C(0x001E02), RUNE_C(0x001E02)},
- {RUNE_C(0x001E04), RUNE_C(0x001E04)},
- {RUNE_C(0x001E06), RUNE_C(0x001E06)},
- {RUNE_C(0x001E08), RUNE_C(0x001E08)},
- {RUNE_C(0x001E0A), RUNE_C(0x001E0A)},
- {RUNE_C(0x001E0C), RUNE_C(0x001E0C)},
- {RUNE_C(0x001E0E), RUNE_C(0x001E0E)},
- {RUNE_C(0x001E10), RUNE_C(0x001E10)},
- {RUNE_C(0x001E12), RUNE_C(0x001E12)},
- {RUNE_C(0x001E14), RUNE_C(0x001E14)},
- {RUNE_C(0x001E16), RUNE_C(0x001E16)},
- {RUNE_C(0x001E18), RUNE_C(0x001E18)},
- {RUNE_C(0x001E1A), RUNE_C(0x001E1A)},
- {RUNE_C(0x001E1C), RUNE_C(0x001E1C)},
- {RUNE_C(0x001E1E), RUNE_C(0x001E1E)},
- {RUNE_C(0x001E20), RUNE_C(0x001E20)},
- {RUNE_C(0x001E22), RUNE_C(0x001E22)},
- {RUNE_C(0x001E24), RUNE_C(0x001E24)},
- {RUNE_C(0x001E26), RUNE_C(0x001E26)},
- {RUNE_C(0x001E28), RUNE_C(0x001E28)},
- {RUNE_C(0x001E2A), RUNE_C(0x001E2A)},
- {RUNE_C(0x001E2C), RUNE_C(0x001E2C)},
- {RUNE_C(0x001E2E), RUNE_C(0x001E2E)},
- {RUNE_C(0x001E30), RUNE_C(0x001E30)},
- {RUNE_C(0x001E32), RUNE_C(0x001E32)},
- {RUNE_C(0x001E34), RUNE_C(0x001E34)},
- {RUNE_C(0x001E36), RUNE_C(0x001E36)},
- {RUNE_C(0x001E38), RUNE_C(0x001E38)},
- {RUNE_C(0x001E3A), RUNE_C(0x001E3A)},
- {RUNE_C(0x001E3C), RUNE_C(0x001E3C)},
- {RUNE_C(0x001E3E), RUNE_C(0x001E3E)},
- {RUNE_C(0x001E40), RUNE_C(0x001E40)},
- {RUNE_C(0x001E42), RUNE_C(0x001E42)},
- {RUNE_C(0x001E44), RUNE_C(0x001E44)},
- {RUNE_C(0x001E46), RUNE_C(0x001E46)},
- {RUNE_C(0x001E48), RUNE_C(0x001E48)},
- {RUNE_C(0x001E4A), RUNE_C(0x001E4A)},
- {RUNE_C(0x001E4C), RUNE_C(0x001E4C)},
- {RUNE_C(0x001E4E), RUNE_C(0x001E4E)},
- {RUNE_C(0x001E50), RUNE_C(0x001E50)},
- {RUNE_C(0x001E52), RUNE_C(0x001E52)},
- {RUNE_C(0x001E54), RUNE_C(0x001E54)},
- {RUNE_C(0x001E56), RUNE_C(0x001E56)},
- {RUNE_C(0x001E58), RUNE_C(0x001E58)},
- {RUNE_C(0x001E5A), RUNE_C(0x001E5A)},
- {RUNE_C(0x001E5C), RUNE_C(0x001E5C)},
- {RUNE_C(0x001E5E), RUNE_C(0x001E5E)},
- {RUNE_C(0x001E60), RUNE_C(0x001E60)},
- {RUNE_C(0x001E62), RUNE_C(0x001E62)},
- {RUNE_C(0x001E64), RUNE_C(0x001E64)},
- {RUNE_C(0x001E66), RUNE_C(0x001E66)},
- {RUNE_C(0x001E68), RUNE_C(0x001E68)},
- {RUNE_C(0x001E6A), RUNE_C(0x001E6A)},
- {RUNE_C(0x001E6C), RUNE_C(0x001E6C)},
- {RUNE_C(0x001E6E), RUNE_C(0x001E6E)},
- {RUNE_C(0x001E70), RUNE_C(0x001E70)},
- {RUNE_C(0x001E72), RUNE_C(0x001E72)},
- {RUNE_C(0x001E74), RUNE_C(0x001E74)},
- {RUNE_C(0x001E76), RUNE_C(0x001E76)},
- {RUNE_C(0x001E78), RUNE_C(0x001E78)},
- {RUNE_C(0x001E7A), RUNE_C(0x001E7A)},
- {RUNE_C(0x001E7C), RUNE_C(0x001E7C)},
- {RUNE_C(0x001E7E), RUNE_C(0x001E7E)},
- {RUNE_C(0x001E80), RUNE_C(0x001E80)},
- {RUNE_C(0x001E82), RUNE_C(0x001E82)},
- {RUNE_C(0x001E84), RUNE_C(0x001E84)},
- {RUNE_C(0x001E86), RUNE_C(0x001E86)},
- {RUNE_C(0x001E88), RUNE_C(0x001E88)},
- {RUNE_C(0x001E8A), RUNE_C(0x001E8A)},
- {RUNE_C(0x001E8C), RUNE_C(0x001E8C)},
- {RUNE_C(0x001E8E), RUNE_C(0x001E8E)},
- {RUNE_C(0x001E90), RUNE_C(0x001E90)},
- {RUNE_C(0x001E92), RUNE_C(0x001E92)},
- {RUNE_C(0x001E94), RUNE_C(0x001E94)},
- {RUNE_C(0x001E9E), RUNE_C(0x001E9E)},
- {RUNE_C(0x001EA0), RUNE_C(0x001EA0)},
- {RUNE_C(0x001EA2), RUNE_C(0x001EA2)},
- {RUNE_C(0x001EA4), RUNE_C(0x001EA4)},
- {RUNE_C(0x001EA6), RUNE_C(0x001EA6)},
- {RUNE_C(0x001EA8), RUNE_C(0x001EA8)},
- {RUNE_C(0x001EAA), RUNE_C(0x001EAA)},
- {RUNE_C(0x001EAC), RUNE_C(0x001EAC)},
- {RUNE_C(0x001EAE), RUNE_C(0x001EAE)},
- {RUNE_C(0x001EB0), RUNE_C(0x001EB0)},
- {RUNE_C(0x001EB2), RUNE_C(0x001EB2)},
- {RUNE_C(0x001EB4), RUNE_C(0x001EB4)},
- {RUNE_C(0x001EB6), RUNE_C(0x001EB6)},
- {RUNE_C(0x001EB8), RUNE_C(0x001EB8)},
- {RUNE_C(0x001EBA), RUNE_C(0x001EBA)},
- {RUNE_C(0x001EBC), RUNE_C(0x001EBC)},
- {RUNE_C(0x001EBE), RUNE_C(0x001EBE)},
- {RUNE_C(0x001EC0), RUNE_C(0x001EC0)},
- {RUNE_C(0x001EC2), RUNE_C(0x001EC2)},
- {RUNE_C(0x001EC4), RUNE_C(0x001EC4)},
- {RUNE_C(0x001EC6), RUNE_C(0x001EC6)},
- {RUNE_C(0x001EC8), RUNE_C(0x001EC8)},
- {RUNE_C(0x001ECA), RUNE_C(0x001ECA)},
- {RUNE_C(0x001ECC), RUNE_C(0x001ECC)},
- {RUNE_C(0x001ECE), RUNE_C(0x001ECE)},
- {RUNE_C(0x001ED0), RUNE_C(0x001ED0)},
- {RUNE_C(0x001ED2), RUNE_C(0x001ED2)},
- {RUNE_C(0x001ED4), RUNE_C(0x001ED4)},
- {RUNE_C(0x001ED6), RUNE_C(0x001ED6)},
- {RUNE_C(0x001ED8), RUNE_C(0x001ED8)},
- {RUNE_C(0x001EDA), RUNE_C(0x001EDA)},
- {RUNE_C(0x001EDC), RUNE_C(0x001EDC)},
- {RUNE_C(0x001EDE), RUNE_C(0x001EDE)},
- {RUNE_C(0x001EE0), RUNE_C(0x001EE0)},
- {RUNE_C(0x001EE2), RUNE_C(0x001EE2)},
- {RUNE_C(0x001EE4), RUNE_C(0x001EE4)},
- {RUNE_C(0x001EE6), RUNE_C(0x001EE6)},
- {RUNE_C(0x001EE8), RUNE_C(0x001EE8)},
- {RUNE_C(0x001EEA), RUNE_C(0x001EEA)},
- {RUNE_C(0x001EEC), RUNE_C(0x001EEC)},
- {RUNE_C(0x001EEE), RUNE_C(0x001EEE)},
- {RUNE_C(0x001EF0), RUNE_C(0x001EF0)},
- {RUNE_C(0x001EF2), RUNE_C(0x001EF2)},
- {RUNE_C(0x001EF4), RUNE_C(0x001EF4)},
- {RUNE_C(0x001EF6), RUNE_C(0x001EF6)},
- {RUNE_C(0x001EF8), RUNE_C(0x001EF8)},
- {RUNE_C(0x001EFA), RUNE_C(0x001EFA)},
- {RUNE_C(0x001EFC), RUNE_C(0x001EFC)},
- {RUNE_C(0x001EFE), RUNE_C(0x001EFE)},
- {RUNE_C(0x001F08), RUNE_C(0x001F0F)},
- {RUNE_C(0x001F18), RUNE_C(0x001F1D)},
- {RUNE_C(0x001F28), RUNE_C(0x001F2F)},
- {RUNE_C(0x001F38), RUNE_C(0x001F3F)},
- {RUNE_C(0x001F48), RUNE_C(0x001F4D)},
- {RUNE_C(0x001F59), RUNE_C(0x001F59)},
- {RUNE_C(0x001F5B), RUNE_C(0x001F5B)},
- {RUNE_C(0x001F5D), RUNE_C(0x001F5D)},
- {RUNE_C(0x001F5F), RUNE_C(0x001F5F)},
- {RUNE_C(0x001F68), RUNE_C(0x001F6F)},
- {RUNE_C(0x001F88), RUNE_C(0x001F8F)},
- {RUNE_C(0x001F98), RUNE_C(0x001F9F)},
- {RUNE_C(0x001FA8), RUNE_C(0x001FAF)},
- {RUNE_C(0x001FB8), RUNE_C(0x001FBC)},
- {RUNE_C(0x001FC8), RUNE_C(0x001FCC)},
- {RUNE_C(0x001FD8), RUNE_C(0x001FDB)},
- {RUNE_C(0x001FE8), RUNE_C(0x001FEC)},
- {RUNE_C(0x001FF8), RUNE_C(0x001FFC)},
- {RUNE_C(0x002126), RUNE_C(0x002126)},
- {RUNE_C(0x00212A), RUNE_C(0x00212B)},
- {RUNE_C(0x002132), RUNE_C(0x002132)},
- {RUNE_C(0x002160), RUNE_C(0x00216F)},
- {RUNE_C(0x002183), RUNE_C(0x002183)},
- {RUNE_C(0x0024B6), RUNE_C(0x0024CF)},
- {RUNE_C(0x002C00), RUNE_C(0x002C2F)},
- {RUNE_C(0x002C60), RUNE_C(0x002C60)},
- {RUNE_C(0x002C62), RUNE_C(0x002C64)},
- {RUNE_C(0x002C67), RUNE_C(0x002C67)},
- {RUNE_C(0x002C69), RUNE_C(0x002C69)},
- {RUNE_C(0x002C6B), RUNE_C(0x002C6B)},
- {RUNE_C(0x002C6D), RUNE_C(0x002C70)},
- {RUNE_C(0x002C72), RUNE_C(0x002C72)},
- {RUNE_C(0x002C75), RUNE_C(0x002C75)},
- {RUNE_C(0x002C7E), RUNE_C(0x002C80)},
- {RUNE_C(0x002C82), RUNE_C(0x002C82)},
- {RUNE_C(0x002C84), RUNE_C(0x002C84)},
- {RUNE_C(0x002C86), RUNE_C(0x002C86)},
- {RUNE_C(0x002C88), RUNE_C(0x002C88)},
- {RUNE_C(0x002C8A), RUNE_C(0x002C8A)},
- {RUNE_C(0x002C8C), RUNE_C(0x002C8C)},
- {RUNE_C(0x002C8E), RUNE_C(0x002C8E)},
- {RUNE_C(0x002C90), RUNE_C(0x002C90)},
- {RUNE_C(0x002C92), RUNE_C(0x002C92)},
- {RUNE_C(0x002C94), RUNE_C(0x002C94)},
- {RUNE_C(0x002C96), RUNE_C(0x002C96)},
- {RUNE_C(0x002C98), RUNE_C(0x002C98)},
- {RUNE_C(0x002C9A), RUNE_C(0x002C9A)},
- {RUNE_C(0x002C9C), RUNE_C(0x002C9C)},
- {RUNE_C(0x002C9E), RUNE_C(0x002C9E)},
- {RUNE_C(0x002CA0), RUNE_C(0x002CA0)},
- {RUNE_C(0x002CA2), RUNE_C(0x002CA2)},
- {RUNE_C(0x002CA4), RUNE_C(0x002CA4)},
- {RUNE_C(0x002CA6), RUNE_C(0x002CA6)},
- {RUNE_C(0x002CA8), RUNE_C(0x002CA8)},
- {RUNE_C(0x002CAA), RUNE_C(0x002CAA)},
- {RUNE_C(0x002CAC), RUNE_C(0x002CAC)},
- {RUNE_C(0x002CAE), RUNE_C(0x002CAE)},
- {RUNE_C(0x002CB0), RUNE_C(0x002CB0)},
- {RUNE_C(0x002CB2), RUNE_C(0x002CB2)},
- {RUNE_C(0x002CB4), RUNE_C(0x002CB4)},
- {RUNE_C(0x002CB6), RUNE_C(0x002CB6)},
- {RUNE_C(0x002CB8), RUNE_C(0x002CB8)},
- {RUNE_C(0x002CBA), RUNE_C(0x002CBA)},
- {RUNE_C(0x002CBC), RUNE_C(0x002CBC)},
- {RUNE_C(0x002CBE), RUNE_C(0x002CBE)},
- {RUNE_C(0x002CC0), RUNE_C(0x002CC0)},
- {RUNE_C(0x002CC2), RUNE_C(0x002CC2)},
- {RUNE_C(0x002CC4), RUNE_C(0x002CC4)},
- {RUNE_C(0x002CC6), RUNE_C(0x002CC6)},
- {RUNE_C(0x002CC8), RUNE_C(0x002CC8)},
- {RUNE_C(0x002CCA), RUNE_C(0x002CCA)},
- {RUNE_C(0x002CCC), RUNE_C(0x002CCC)},
- {RUNE_C(0x002CCE), RUNE_C(0x002CCE)},
- {RUNE_C(0x002CD0), RUNE_C(0x002CD0)},
- {RUNE_C(0x002CD2), RUNE_C(0x002CD2)},
- {RUNE_C(0x002CD4), RUNE_C(0x002CD4)},
- {RUNE_C(0x002CD6), RUNE_C(0x002CD6)},
- {RUNE_C(0x002CD8), RUNE_C(0x002CD8)},
- {RUNE_C(0x002CDA), RUNE_C(0x002CDA)},
- {RUNE_C(0x002CDC), RUNE_C(0x002CDC)},
- {RUNE_C(0x002CDE), RUNE_C(0x002CDE)},
- {RUNE_C(0x002CE0), RUNE_C(0x002CE0)},
- {RUNE_C(0x002CE2), RUNE_C(0x002CE2)},
- {RUNE_C(0x002CEB), RUNE_C(0x002CEB)},
- {RUNE_C(0x002CED), RUNE_C(0x002CED)},
- {RUNE_C(0x002CF2), RUNE_C(0x002CF2)},
- {RUNE_C(0x00A640), RUNE_C(0x00A640)},
- {RUNE_C(0x00A642), RUNE_C(0x00A642)},
- {RUNE_C(0x00A644), RUNE_C(0x00A644)},
- {RUNE_C(0x00A646), RUNE_C(0x00A646)},
- {RUNE_C(0x00A648), RUNE_C(0x00A648)},
- {RUNE_C(0x00A64A), RUNE_C(0x00A64A)},
- {RUNE_C(0x00A64C), RUNE_C(0x00A64C)},
- {RUNE_C(0x00A64E), RUNE_C(0x00A64E)},
- {RUNE_C(0x00A650), RUNE_C(0x00A650)},
- {RUNE_C(0x00A652), RUNE_C(0x00A652)},
- {RUNE_C(0x00A654), RUNE_C(0x00A654)},
- {RUNE_C(0x00A656), RUNE_C(0x00A656)},
- {RUNE_C(0x00A658), RUNE_C(0x00A658)},
- {RUNE_C(0x00A65A), RUNE_C(0x00A65A)},
- {RUNE_C(0x00A65C), RUNE_C(0x00A65C)},
- {RUNE_C(0x00A65E), RUNE_C(0x00A65E)},
- {RUNE_C(0x00A660), RUNE_C(0x00A660)},
- {RUNE_C(0x00A662), RUNE_C(0x00A662)},
- {RUNE_C(0x00A664), RUNE_C(0x00A664)},
- {RUNE_C(0x00A666), RUNE_C(0x00A666)},
- {RUNE_C(0x00A668), RUNE_C(0x00A668)},
- {RUNE_C(0x00A66A), RUNE_C(0x00A66A)},
- {RUNE_C(0x00A66C), RUNE_C(0x00A66C)},
- {RUNE_C(0x00A680), RUNE_C(0x00A680)},
- {RUNE_C(0x00A682), RUNE_C(0x00A682)},
- {RUNE_C(0x00A684), RUNE_C(0x00A684)},
- {RUNE_C(0x00A686), RUNE_C(0x00A686)},
- {RUNE_C(0x00A688), RUNE_C(0x00A688)},
- {RUNE_C(0x00A68A), RUNE_C(0x00A68A)},
- {RUNE_C(0x00A68C), RUNE_C(0x00A68C)},
- {RUNE_C(0x00A68E), RUNE_C(0x00A68E)},
- {RUNE_C(0x00A690), RUNE_C(0x00A690)},
- {RUNE_C(0x00A692), RUNE_C(0x00A692)},
- {RUNE_C(0x00A694), RUNE_C(0x00A694)},
- {RUNE_C(0x00A696), RUNE_C(0x00A696)},
- {RUNE_C(0x00A698), RUNE_C(0x00A698)},
- {RUNE_C(0x00A69A), RUNE_C(0x00A69A)},
- {RUNE_C(0x00A722), RUNE_C(0x00A722)},
- {RUNE_C(0x00A724), RUNE_C(0x00A724)},
- {RUNE_C(0x00A726), RUNE_C(0x00A726)},
- {RUNE_C(0x00A728), RUNE_C(0x00A728)},
- {RUNE_C(0x00A72A), RUNE_C(0x00A72A)},
- {RUNE_C(0x00A72C), RUNE_C(0x00A72C)},
- {RUNE_C(0x00A72E), RUNE_C(0x00A72E)},
- {RUNE_C(0x00A732), RUNE_C(0x00A732)},
- {RUNE_C(0x00A734), RUNE_C(0x00A734)},
- {RUNE_C(0x00A736), RUNE_C(0x00A736)},
- {RUNE_C(0x00A738), RUNE_C(0x00A738)},
- {RUNE_C(0x00A73A), RUNE_C(0x00A73A)},
- {RUNE_C(0x00A73C), RUNE_C(0x00A73C)},
- {RUNE_C(0x00A73E), RUNE_C(0x00A73E)},
- {RUNE_C(0x00A740), RUNE_C(0x00A740)},
- {RUNE_C(0x00A742), RUNE_C(0x00A742)},
- {RUNE_C(0x00A744), RUNE_C(0x00A744)},
- {RUNE_C(0x00A746), RUNE_C(0x00A746)},
- {RUNE_C(0x00A748), RUNE_C(0x00A748)},
- {RUNE_C(0x00A74A), RUNE_C(0x00A74A)},
- {RUNE_C(0x00A74C), RUNE_C(0x00A74C)},
- {RUNE_C(0x00A74E), RUNE_C(0x00A74E)},
- {RUNE_C(0x00A750), RUNE_C(0x00A750)},
- {RUNE_C(0x00A752), RUNE_C(0x00A752)},
- {RUNE_C(0x00A754), RUNE_C(0x00A754)},
- {RUNE_C(0x00A756), RUNE_C(0x00A756)},
- {RUNE_C(0x00A758), RUNE_C(0x00A758)},
- {RUNE_C(0x00A75A), RUNE_C(0x00A75A)},
- {RUNE_C(0x00A75C), RUNE_C(0x00A75C)},
- {RUNE_C(0x00A75E), RUNE_C(0x00A75E)},
- {RUNE_C(0x00A760), RUNE_C(0x00A760)},
- {RUNE_C(0x00A762), RUNE_C(0x00A762)},
- {RUNE_C(0x00A764), RUNE_C(0x00A764)},
- {RUNE_C(0x00A766), RUNE_C(0x00A766)},
- {RUNE_C(0x00A768), RUNE_C(0x00A768)},
- {RUNE_C(0x00A76A), RUNE_C(0x00A76A)},
- {RUNE_C(0x00A76C), RUNE_C(0x00A76C)},
- {RUNE_C(0x00A76E), RUNE_C(0x00A76E)},
- {RUNE_C(0x00A779), RUNE_C(0x00A779)},
- {RUNE_C(0x00A77B), RUNE_C(0x00A77B)},
- {RUNE_C(0x00A77D), RUNE_C(0x00A77E)},
- {RUNE_C(0x00A780), RUNE_C(0x00A780)},
- {RUNE_C(0x00A782), RUNE_C(0x00A782)},
- {RUNE_C(0x00A784), RUNE_C(0x00A784)},
- {RUNE_C(0x00A786), RUNE_C(0x00A786)},
- {RUNE_C(0x00A78B), RUNE_C(0x00A78B)},
- {RUNE_C(0x00A78D), RUNE_C(0x00A78D)},
- {RUNE_C(0x00A790), RUNE_C(0x00A790)},
- {RUNE_C(0x00A792), RUNE_C(0x00A792)},
- {RUNE_C(0x00A796), RUNE_C(0x00A796)},
- {RUNE_C(0x00A798), RUNE_C(0x00A798)},
- {RUNE_C(0x00A79A), RUNE_C(0x00A79A)},
- {RUNE_C(0x00A79C), RUNE_C(0x00A79C)},
- {RUNE_C(0x00A79E), RUNE_C(0x00A79E)},
- {RUNE_C(0x00A7A0), RUNE_C(0x00A7A0)},
- {RUNE_C(0x00A7A2), RUNE_C(0x00A7A2)},
- {RUNE_C(0x00A7A4), RUNE_C(0x00A7A4)},
- {RUNE_C(0x00A7A6), RUNE_C(0x00A7A6)},
- {RUNE_C(0x00A7A8), RUNE_C(0x00A7A8)},
- {RUNE_C(0x00A7AA), RUNE_C(0x00A7AE)},
- {RUNE_C(0x00A7B0), RUNE_C(0x00A7B4)},
- {RUNE_C(0x00A7B6), RUNE_C(0x00A7B6)},
- {RUNE_C(0x00A7B8), RUNE_C(0x00A7B8)},
- {RUNE_C(0x00A7BA), RUNE_C(0x00A7BA)},
- {RUNE_C(0x00A7BC), RUNE_C(0x00A7BC)},
- {RUNE_C(0x00A7BE), RUNE_C(0x00A7BE)},
- {RUNE_C(0x00A7C0), RUNE_C(0x00A7C0)},
- {RUNE_C(0x00A7C2), RUNE_C(0x00A7C2)},
- {RUNE_C(0x00A7C4), RUNE_C(0x00A7C7)},
- {RUNE_C(0x00A7C9), RUNE_C(0x00A7C9)},
- {RUNE_C(0x00A7D0), RUNE_C(0x00A7D0)},
- {RUNE_C(0x00A7D6), RUNE_C(0x00A7D6)},
- {RUNE_C(0x00A7D8), RUNE_C(0x00A7D8)},
- {RUNE_C(0x00A7F5), RUNE_C(0x00A7F5)},
- {RUNE_C(0x00FF21), RUNE_C(0x00FF3A)},
- {RUNE_C(0x010400), RUNE_C(0x010427)},
- {RUNE_C(0x0104B0), RUNE_C(0x0104D3)},
- {RUNE_C(0x010570), RUNE_C(0x01057A)},
- {RUNE_C(0x01057C), RUNE_C(0x01058A)},
- {RUNE_C(0x01058C), RUNE_C(0x010592)},
- {RUNE_C(0x010594), RUNE_C(0x010595)},
- {RUNE_C(0x010C80), RUNE_C(0x010CB2)},
- {RUNE_C(0x0118A0), RUNE_C(0x0118BF)},
- {RUNE_C(0x016E40), RUNE_C(0x016E5F)},
- {RUNE_C(0x01E900), RUNE_C(0x01E921)},
+static constexpr unsigned char stage2[][32] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFE, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00},
+ {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xAA,
+ 0xAA, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x2B,
+ 0xD6, 0xCE, 0xDB, 0xB1, 0xD5, 0xD2, 0xAE, 0x11,
+ 0xB0, 0xAD, 0xAA, 0x4A, 0x55, 0x55, 0xD6, 0x55},
+ {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0x6C,
+ 0x7A, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x80,
+ 0x40, 0xD7, 0xFE, 0xFF, 0xFB, 0x0F, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x55, 0x55, 0x55, 0x90, 0xE6},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55,
+ 0x01, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0xAB, 0x2A, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55},
+ {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xFE, 0xFF,
+ 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xBF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x15, 0x40, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55},
+ {0x00, 0xFF, 0x00, 0x3F, 0x00, 0xFF, 0x00, 0xFF,
+ 0x00, 0x3F, 0x00, 0xAA, 0x00, 0xFF, 0x00, 0x00,
+ 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x1F,
+ 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x1F, 0x00, 0x1F},
+ {0x00, 0x00, 0x00, 0x00, 0x40, 0x0C, 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF,
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x9D, 0xEA, 0x25, 0xC0,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x05, 0x28, 0x04, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x00, 0x00,
+ 0x55, 0x55, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x54, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x6A,
+ 0x55, 0x28, 0x45, 0x55, 0x55, 0x7D, 0x5F, 0x55,
+ 0xF5, 0x02, 0x41, 0x01, 0x00, 0x00, 0x20, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF7,
+ 0xFF, 0xF7, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_cwl(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 256]], ch % 256);
}
diff --git a/lib/unicode/prop/uprop_is_cwt.c b/lib/unicode/prop/uprop_is_cwt.c
index 8ea2110..b84436d 100644
--- a/lib/unicode/prop/uprop_is_cwt.c
+++ b/lib/unicode/prop/uprop_is_cwt.c
@@ -1,650 +1,396 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x07,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x7F, 0xFF,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 8, 9, 10, 11,
+ 6, 12, 6, 6, 13, 6, 6, 6, 6, 6, 6, 6, 14, 15, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 16, 17, 6, 6, 6, 18, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 19, 6, 6, 6, 20,
+ 6, 6, 6, 6, 21, 22, 6, 6, 6, 6, 6, 6, 23, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 24, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 25, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 26, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000101), RUNE_C(0x000101)},
- {RUNE_C(0x000103), RUNE_C(0x000103)},
- {RUNE_C(0x000105), RUNE_C(0x000105)},
- {RUNE_C(0x000107), RUNE_C(0x000107)},
- {RUNE_C(0x000109), RUNE_C(0x000109)},
- {RUNE_C(0x00010B), RUNE_C(0x00010B)},
- {RUNE_C(0x00010D), RUNE_C(0x00010D)},
- {RUNE_C(0x00010F), RUNE_C(0x00010F)},
- {RUNE_C(0x000111), RUNE_C(0x000111)},
- {RUNE_C(0x000113), RUNE_C(0x000113)},
- {RUNE_C(0x000115), RUNE_C(0x000115)},
- {RUNE_C(0x000117), RUNE_C(0x000117)},
- {RUNE_C(0x000119), RUNE_C(0x000119)},
- {RUNE_C(0x00011B), RUNE_C(0x00011B)},
- {RUNE_C(0x00011D), RUNE_C(0x00011D)},
- {RUNE_C(0x00011F), RUNE_C(0x00011F)},
- {RUNE_C(0x000121), RUNE_C(0x000121)},
- {RUNE_C(0x000123), RUNE_C(0x000123)},
- {RUNE_C(0x000125), RUNE_C(0x000125)},
- {RUNE_C(0x000127), RUNE_C(0x000127)},
- {RUNE_C(0x000129), RUNE_C(0x000129)},
- {RUNE_C(0x00012B), RUNE_C(0x00012B)},
- {RUNE_C(0x00012D), RUNE_C(0x00012D)},
- {RUNE_C(0x00012F), RUNE_C(0x00012F)},
- {RUNE_C(0x000131), RUNE_C(0x000131)},
- {RUNE_C(0x000133), RUNE_C(0x000133)},
- {RUNE_C(0x000135), RUNE_C(0x000135)},
- {RUNE_C(0x000137), RUNE_C(0x000137)},
- {RUNE_C(0x00013A), RUNE_C(0x00013A)},
- {RUNE_C(0x00013C), RUNE_C(0x00013C)},
- {RUNE_C(0x00013E), RUNE_C(0x00013E)},
- {RUNE_C(0x000140), RUNE_C(0x000140)},
- {RUNE_C(0x000142), RUNE_C(0x000142)},
- {RUNE_C(0x000144), RUNE_C(0x000144)},
- {RUNE_C(0x000146), RUNE_C(0x000146)},
- {RUNE_C(0x000148), RUNE_C(0x000149)},
- {RUNE_C(0x00014B), RUNE_C(0x00014B)},
- {RUNE_C(0x00014D), RUNE_C(0x00014D)},
- {RUNE_C(0x00014F), RUNE_C(0x00014F)},
- {RUNE_C(0x000151), RUNE_C(0x000151)},
- {RUNE_C(0x000153), RUNE_C(0x000153)},
- {RUNE_C(0x000155), RUNE_C(0x000155)},
- {RUNE_C(0x000157), RUNE_C(0x000157)},
- {RUNE_C(0x000159), RUNE_C(0x000159)},
- {RUNE_C(0x00015B), RUNE_C(0x00015B)},
- {RUNE_C(0x00015D), RUNE_C(0x00015D)},
- {RUNE_C(0x00015F), RUNE_C(0x00015F)},
- {RUNE_C(0x000161), RUNE_C(0x000161)},
- {RUNE_C(0x000163), RUNE_C(0x000163)},
- {RUNE_C(0x000165), RUNE_C(0x000165)},
- {RUNE_C(0x000167), RUNE_C(0x000167)},
- {RUNE_C(0x000169), RUNE_C(0x000169)},
- {RUNE_C(0x00016B), RUNE_C(0x00016B)},
- {RUNE_C(0x00016D), RUNE_C(0x00016D)},
- {RUNE_C(0x00016F), RUNE_C(0x00016F)},
- {RUNE_C(0x000171), RUNE_C(0x000171)},
- {RUNE_C(0x000173), RUNE_C(0x000173)},
- {RUNE_C(0x000175), RUNE_C(0x000175)},
- {RUNE_C(0x000177), RUNE_C(0x000177)},
- {RUNE_C(0x00017A), RUNE_C(0x00017A)},
- {RUNE_C(0x00017C), RUNE_C(0x00017C)},
- {RUNE_C(0x00017E), RUNE_C(0x000180)},
- {RUNE_C(0x000183), RUNE_C(0x000183)},
- {RUNE_C(0x000185), RUNE_C(0x000185)},
- {RUNE_C(0x000188), RUNE_C(0x000188)},
- {RUNE_C(0x00018C), RUNE_C(0x00018C)},
- {RUNE_C(0x000192), RUNE_C(0x000192)},
- {RUNE_C(0x000195), RUNE_C(0x000195)},
- {RUNE_C(0x000199), RUNE_C(0x00019A)},
- {RUNE_C(0x00019E), RUNE_C(0x00019E)},
- {RUNE_C(0x0001A1), RUNE_C(0x0001A1)},
- {RUNE_C(0x0001A3), RUNE_C(0x0001A3)},
- {RUNE_C(0x0001A5), RUNE_C(0x0001A5)},
- {RUNE_C(0x0001A8), RUNE_C(0x0001A8)},
- {RUNE_C(0x0001AD), RUNE_C(0x0001AD)},
- {RUNE_C(0x0001B0), RUNE_C(0x0001B0)},
- {RUNE_C(0x0001B4), RUNE_C(0x0001B4)},
- {RUNE_C(0x0001B6), RUNE_C(0x0001B6)},
- {RUNE_C(0x0001B9), RUNE_C(0x0001B9)},
- {RUNE_C(0x0001BD), RUNE_C(0x0001BD)},
- {RUNE_C(0x0001BF), RUNE_C(0x0001BF)},
- {RUNE_C(0x0001C4), RUNE_C(0x0001C4)},
- {RUNE_C(0x0001C6), RUNE_C(0x0001C7)},
- {RUNE_C(0x0001C9), RUNE_C(0x0001CA)},
- {RUNE_C(0x0001CC), RUNE_C(0x0001CC)},
- {RUNE_C(0x0001CE), RUNE_C(0x0001CE)},
- {RUNE_C(0x0001D0), RUNE_C(0x0001D0)},
- {RUNE_C(0x0001D2), RUNE_C(0x0001D2)},
- {RUNE_C(0x0001D4), RUNE_C(0x0001D4)},
- {RUNE_C(0x0001D6), RUNE_C(0x0001D6)},
- {RUNE_C(0x0001D8), RUNE_C(0x0001D8)},
- {RUNE_C(0x0001DA), RUNE_C(0x0001DA)},
- {RUNE_C(0x0001DC), RUNE_C(0x0001DD)},
- {RUNE_C(0x0001DF), RUNE_C(0x0001DF)},
- {RUNE_C(0x0001E1), RUNE_C(0x0001E1)},
- {RUNE_C(0x0001E3), RUNE_C(0x0001E3)},
- {RUNE_C(0x0001E5), RUNE_C(0x0001E5)},
- {RUNE_C(0x0001E7), RUNE_C(0x0001E7)},
- {RUNE_C(0x0001E9), RUNE_C(0x0001E9)},
- {RUNE_C(0x0001EB), RUNE_C(0x0001EB)},
- {RUNE_C(0x0001ED), RUNE_C(0x0001ED)},
- {RUNE_C(0x0001EF), RUNE_C(0x0001F1)},
- {RUNE_C(0x0001F3), RUNE_C(0x0001F3)},
- {RUNE_C(0x0001F5), RUNE_C(0x0001F5)},
- {RUNE_C(0x0001F9), RUNE_C(0x0001F9)},
- {RUNE_C(0x0001FB), RUNE_C(0x0001FB)},
- {RUNE_C(0x0001FD), RUNE_C(0x0001FD)},
- {RUNE_C(0x0001FF), RUNE_C(0x0001FF)},
- {RUNE_C(0x000201), RUNE_C(0x000201)},
- {RUNE_C(0x000203), RUNE_C(0x000203)},
- {RUNE_C(0x000205), RUNE_C(0x000205)},
- {RUNE_C(0x000207), RUNE_C(0x000207)},
- {RUNE_C(0x000209), RUNE_C(0x000209)},
- {RUNE_C(0x00020B), RUNE_C(0x00020B)},
- {RUNE_C(0x00020D), RUNE_C(0x00020D)},
- {RUNE_C(0x00020F), RUNE_C(0x00020F)},
- {RUNE_C(0x000211), RUNE_C(0x000211)},
- {RUNE_C(0x000213), RUNE_C(0x000213)},
- {RUNE_C(0x000215), RUNE_C(0x000215)},
- {RUNE_C(0x000217), RUNE_C(0x000217)},
- {RUNE_C(0x000219), RUNE_C(0x000219)},
- {RUNE_C(0x00021B), RUNE_C(0x00021B)},
- {RUNE_C(0x00021D), RUNE_C(0x00021D)},
- {RUNE_C(0x00021F), RUNE_C(0x00021F)},
- {RUNE_C(0x000223), RUNE_C(0x000223)},
- {RUNE_C(0x000225), RUNE_C(0x000225)},
- {RUNE_C(0x000227), RUNE_C(0x000227)},
- {RUNE_C(0x000229), RUNE_C(0x000229)},
- {RUNE_C(0x00022B), RUNE_C(0x00022B)},
- {RUNE_C(0x00022D), RUNE_C(0x00022D)},
- {RUNE_C(0x00022F), RUNE_C(0x00022F)},
- {RUNE_C(0x000231), RUNE_C(0x000231)},
- {RUNE_C(0x000233), RUNE_C(0x000233)},
- {RUNE_C(0x00023C), RUNE_C(0x00023C)},
- {RUNE_C(0x00023F), RUNE_C(0x000240)},
- {RUNE_C(0x000242), RUNE_C(0x000242)},
- {RUNE_C(0x000247), RUNE_C(0x000247)},
- {RUNE_C(0x000249), RUNE_C(0x000249)},
- {RUNE_C(0x00024B), RUNE_C(0x00024B)},
- {RUNE_C(0x00024D), RUNE_C(0x00024D)},
- {RUNE_C(0x00024F), RUNE_C(0x000254)},
- {RUNE_C(0x000256), RUNE_C(0x000257)},
- {RUNE_C(0x000259), RUNE_C(0x000259)},
- {RUNE_C(0x00025B), RUNE_C(0x00025C)},
- {RUNE_C(0x000260), RUNE_C(0x000261)},
- {RUNE_C(0x000263), RUNE_C(0x000263)},
- {RUNE_C(0x000265), RUNE_C(0x000266)},
- {RUNE_C(0x000268), RUNE_C(0x00026C)},
- {RUNE_C(0x00026F), RUNE_C(0x00026F)},
- {RUNE_C(0x000271), RUNE_C(0x000272)},
- {RUNE_C(0x000275), RUNE_C(0x000275)},
- {RUNE_C(0x00027D), RUNE_C(0x00027D)},
- {RUNE_C(0x000280), RUNE_C(0x000280)},
- {RUNE_C(0x000282), RUNE_C(0x000283)},
- {RUNE_C(0x000287), RUNE_C(0x00028C)},
- {RUNE_C(0x000292), RUNE_C(0x000292)},
- {RUNE_C(0x00029D), RUNE_C(0x00029E)},
- {RUNE_C(0x000345), RUNE_C(0x000345)},
- {RUNE_C(0x000371), RUNE_C(0x000371)},
- {RUNE_C(0x000373), RUNE_C(0x000373)},
- {RUNE_C(0x000377), RUNE_C(0x000377)},
- {RUNE_C(0x00037B), RUNE_C(0x00037D)},
- {RUNE_C(0x000390), RUNE_C(0x000390)},
- {RUNE_C(0x0003AC), RUNE_C(0x0003CE)},
- {RUNE_C(0x0003D0), RUNE_C(0x0003D1)},
- {RUNE_C(0x0003D5), RUNE_C(0x0003D7)},
- {RUNE_C(0x0003D9), RUNE_C(0x0003D9)},
- {RUNE_C(0x0003DB), RUNE_C(0x0003DB)},
- {RUNE_C(0x0003DD), RUNE_C(0x0003DD)},
- {RUNE_C(0x0003DF), RUNE_C(0x0003DF)},
- {RUNE_C(0x0003E1), RUNE_C(0x0003E1)},
- {RUNE_C(0x0003E3), RUNE_C(0x0003E3)},
- {RUNE_C(0x0003E5), RUNE_C(0x0003E5)},
- {RUNE_C(0x0003E7), RUNE_C(0x0003E7)},
- {RUNE_C(0x0003E9), RUNE_C(0x0003E9)},
- {RUNE_C(0x0003EB), RUNE_C(0x0003EB)},
- {RUNE_C(0x0003ED), RUNE_C(0x0003ED)},
- {RUNE_C(0x0003EF), RUNE_C(0x0003F3)},
- {RUNE_C(0x0003F5), RUNE_C(0x0003F5)},
- {RUNE_C(0x0003F8), RUNE_C(0x0003F8)},
- {RUNE_C(0x0003FB), RUNE_C(0x0003FB)},
- {RUNE_C(0x000430), RUNE_C(0x00045F)},
- {RUNE_C(0x000461), RUNE_C(0x000461)},
- {RUNE_C(0x000463), RUNE_C(0x000463)},
- {RUNE_C(0x000465), RUNE_C(0x000465)},
- {RUNE_C(0x000467), RUNE_C(0x000467)},
- {RUNE_C(0x000469), RUNE_C(0x000469)},
- {RUNE_C(0x00046B), RUNE_C(0x00046B)},
- {RUNE_C(0x00046D), RUNE_C(0x00046D)},
- {RUNE_C(0x00046F), RUNE_C(0x00046F)},
- {RUNE_C(0x000471), RUNE_C(0x000471)},
- {RUNE_C(0x000473), RUNE_C(0x000473)},
- {RUNE_C(0x000475), RUNE_C(0x000475)},
- {RUNE_C(0x000477), RUNE_C(0x000477)},
- {RUNE_C(0x000479), RUNE_C(0x000479)},
- {RUNE_C(0x00047B), RUNE_C(0x00047B)},
- {RUNE_C(0x00047D), RUNE_C(0x00047D)},
- {RUNE_C(0x00047F), RUNE_C(0x00047F)},
- {RUNE_C(0x000481), RUNE_C(0x000481)},
- {RUNE_C(0x00048B), RUNE_C(0x00048B)},
- {RUNE_C(0x00048D), RUNE_C(0x00048D)},
- {RUNE_C(0x00048F), RUNE_C(0x00048F)},
- {RUNE_C(0x000491), RUNE_C(0x000491)},
- {RUNE_C(0x000493), RUNE_C(0x000493)},
- {RUNE_C(0x000495), RUNE_C(0x000495)},
- {RUNE_C(0x000497), RUNE_C(0x000497)},
- {RUNE_C(0x000499), RUNE_C(0x000499)},
- {RUNE_C(0x00049B), RUNE_C(0x00049B)},
- {RUNE_C(0x00049D), RUNE_C(0x00049D)},
- {RUNE_C(0x00049F), RUNE_C(0x00049F)},
- {RUNE_C(0x0004A1), RUNE_C(0x0004A1)},
- {RUNE_C(0x0004A3), RUNE_C(0x0004A3)},
- {RUNE_C(0x0004A5), RUNE_C(0x0004A5)},
- {RUNE_C(0x0004A7), RUNE_C(0x0004A7)},
- {RUNE_C(0x0004A9), RUNE_C(0x0004A9)},
- {RUNE_C(0x0004AB), RUNE_C(0x0004AB)},
- {RUNE_C(0x0004AD), RUNE_C(0x0004AD)},
- {RUNE_C(0x0004AF), RUNE_C(0x0004AF)},
- {RUNE_C(0x0004B1), RUNE_C(0x0004B1)},
- {RUNE_C(0x0004B3), RUNE_C(0x0004B3)},
- {RUNE_C(0x0004B5), RUNE_C(0x0004B5)},
- {RUNE_C(0x0004B7), RUNE_C(0x0004B7)},
- {RUNE_C(0x0004B9), RUNE_C(0x0004B9)},
- {RUNE_C(0x0004BB), RUNE_C(0x0004BB)},
- {RUNE_C(0x0004BD), RUNE_C(0x0004BD)},
- {RUNE_C(0x0004BF), RUNE_C(0x0004BF)},
- {RUNE_C(0x0004C2), RUNE_C(0x0004C2)},
- {RUNE_C(0x0004C4), RUNE_C(0x0004C4)},
- {RUNE_C(0x0004C6), RUNE_C(0x0004C6)},
- {RUNE_C(0x0004C8), RUNE_C(0x0004C8)},
- {RUNE_C(0x0004CA), RUNE_C(0x0004CA)},
- {RUNE_C(0x0004CC), RUNE_C(0x0004CC)},
- {RUNE_C(0x0004CE), RUNE_C(0x0004CF)},
- {RUNE_C(0x0004D1), RUNE_C(0x0004D1)},
- {RUNE_C(0x0004D3), RUNE_C(0x0004D3)},
- {RUNE_C(0x0004D5), RUNE_C(0x0004D5)},
- {RUNE_C(0x0004D7), RUNE_C(0x0004D7)},
- {RUNE_C(0x0004D9), RUNE_C(0x0004D9)},
- {RUNE_C(0x0004DB), RUNE_C(0x0004DB)},
- {RUNE_C(0x0004DD), RUNE_C(0x0004DD)},
- {RUNE_C(0x0004DF), RUNE_C(0x0004DF)},
- {RUNE_C(0x0004E1), RUNE_C(0x0004E1)},
- {RUNE_C(0x0004E3), RUNE_C(0x0004E3)},
- {RUNE_C(0x0004E5), RUNE_C(0x0004E5)},
- {RUNE_C(0x0004E7), RUNE_C(0x0004E7)},
- {RUNE_C(0x0004E9), RUNE_C(0x0004E9)},
- {RUNE_C(0x0004EB), RUNE_C(0x0004EB)},
- {RUNE_C(0x0004ED), RUNE_C(0x0004ED)},
- {RUNE_C(0x0004EF), RUNE_C(0x0004EF)},
- {RUNE_C(0x0004F1), RUNE_C(0x0004F1)},
- {RUNE_C(0x0004F3), RUNE_C(0x0004F3)},
- {RUNE_C(0x0004F5), RUNE_C(0x0004F5)},
- {RUNE_C(0x0004F7), RUNE_C(0x0004F7)},
- {RUNE_C(0x0004F9), RUNE_C(0x0004F9)},
- {RUNE_C(0x0004FB), RUNE_C(0x0004FB)},
- {RUNE_C(0x0004FD), RUNE_C(0x0004FD)},
- {RUNE_C(0x0004FF), RUNE_C(0x0004FF)},
- {RUNE_C(0x000501), RUNE_C(0x000501)},
- {RUNE_C(0x000503), RUNE_C(0x000503)},
- {RUNE_C(0x000505), RUNE_C(0x000505)},
- {RUNE_C(0x000507), RUNE_C(0x000507)},
- {RUNE_C(0x000509), RUNE_C(0x000509)},
- {RUNE_C(0x00050B), RUNE_C(0x00050B)},
- {RUNE_C(0x00050D), RUNE_C(0x00050D)},
- {RUNE_C(0x00050F), RUNE_C(0x00050F)},
- {RUNE_C(0x000511), RUNE_C(0x000511)},
- {RUNE_C(0x000513), RUNE_C(0x000513)},
- {RUNE_C(0x000515), RUNE_C(0x000515)},
- {RUNE_C(0x000517), RUNE_C(0x000517)},
- {RUNE_C(0x000519), RUNE_C(0x000519)},
- {RUNE_C(0x00051B), RUNE_C(0x00051B)},
- {RUNE_C(0x00051D), RUNE_C(0x00051D)},
- {RUNE_C(0x00051F), RUNE_C(0x00051F)},
- {RUNE_C(0x000521), RUNE_C(0x000521)},
- {RUNE_C(0x000523), RUNE_C(0x000523)},
- {RUNE_C(0x000525), RUNE_C(0x000525)},
- {RUNE_C(0x000527), RUNE_C(0x000527)},
- {RUNE_C(0x000529), RUNE_C(0x000529)},
- {RUNE_C(0x00052B), RUNE_C(0x00052B)},
- {RUNE_C(0x00052D), RUNE_C(0x00052D)},
- {RUNE_C(0x00052F), RUNE_C(0x00052F)},
- {RUNE_C(0x000561), RUNE_C(0x000587)},
- {RUNE_C(0x0013F8), RUNE_C(0x0013FD)},
- {RUNE_C(0x001C80), RUNE_C(0x001C88)},
- {RUNE_C(0x001D79), RUNE_C(0x001D79)},
- {RUNE_C(0x001D7D), RUNE_C(0x001D7D)},
- {RUNE_C(0x001D8E), RUNE_C(0x001D8E)},
- {RUNE_C(0x001E01), RUNE_C(0x001E01)},
- {RUNE_C(0x001E03), RUNE_C(0x001E03)},
- {RUNE_C(0x001E05), RUNE_C(0x001E05)},
- {RUNE_C(0x001E07), RUNE_C(0x001E07)},
- {RUNE_C(0x001E09), RUNE_C(0x001E09)},
- {RUNE_C(0x001E0B), RUNE_C(0x001E0B)},
- {RUNE_C(0x001E0D), RUNE_C(0x001E0D)},
- {RUNE_C(0x001E0F), RUNE_C(0x001E0F)},
- {RUNE_C(0x001E11), RUNE_C(0x001E11)},
- {RUNE_C(0x001E13), RUNE_C(0x001E13)},
- {RUNE_C(0x001E15), RUNE_C(0x001E15)},
- {RUNE_C(0x001E17), RUNE_C(0x001E17)},
- {RUNE_C(0x001E19), RUNE_C(0x001E19)},
- {RUNE_C(0x001E1B), RUNE_C(0x001E1B)},
- {RUNE_C(0x001E1D), RUNE_C(0x001E1D)},
- {RUNE_C(0x001E1F), RUNE_C(0x001E1F)},
- {RUNE_C(0x001E21), RUNE_C(0x001E21)},
- {RUNE_C(0x001E23), RUNE_C(0x001E23)},
- {RUNE_C(0x001E25), RUNE_C(0x001E25)},
- {RUNE_C(0x001E27), RUNE_C(0x001E27)},
- {RUNE_C(0x001E29), RUNE_C(0x001E29)},
- {RUNE_C(0x001E2B), RUNE_C(0x001E2B)},
- {RUNE_C(0x001E2D), RUNE_C(0x001E2D)},
- {RUNE_C(0x001E2F), RUNE_C(0x001E2F)},
- {RUNE_C(0x001E31), RUNE_C(0x001E31)},
- {RUNE_C(0x001E33), RUNE_C(0x001E33)},
- {RUNE_C(0x001E35), RUNE_C(0x001E35)},
- {RUNE_C(0x001E37), RUNE_C(0x001E37)},
- {RUNE_C(0x001E39), RUNE_C(0x001E39)},
- {RUNE_C(0x001E3B), RUNE_C(0x001E3B)},
- {RUNE_C(0x001E3D), RUNE_C(0x001E3D)},
- {RUNE_C(0x001E3F), RUNE_C(0x001E3F)},
- {RUNE_C(0x001E41), RUNE_C(0x001E41)},
- {RUNE_C(0x001E43), RUNE_C(0x001E43)},
- {RUNE_C(0x001E45), RUNE_C(0x001E45)},
- {RUNE_C(0x001E47), RUNE_C(0x001E47)},
- {RUNE_C(0x001E49), RUNE_C(0x001E49)},
- {RUNE_C(0x001E4B), RUNE_C(0x001E4B)},
- {RUNE_C(0x001E4D), RUNE_C(0x001E4D)},
- {RUNE_C(0x001E4F), RUNE_C(0x001E4F)},
- {RUNE_C(0x001E51), RUNE_C(0x001E51)},
- {RUNE_C(0x001E53), RUNE_C(0x001E53)},
- {RUNE_C(0x001E55), RUNE_C(0x001E55)},
- {RUNE_C(0x001E57), RUNE_C(0x001E57)},
- {RUNE_C(0x001E59), RUNE_C(0x001E59)},
- {RUNE_C(0x001E5B), RUNE_C(0x001E5B)},
- {RUNE_C(0x001E5D), RUNE_C(0x001E5D)},
- {RUNE_C(0x001E5F), RUNE_C(0x001E5F)},
- {RUNE_C(0x001E61), RUNE_C(0x001E61)},
- {RUNE_C(0x001E63), RUNE_C(0x001E63)},
- {RUNE_C(0x001E65), RUNE_C(0x001E65)},
- {RUNE_C(0x001E67), RUNE_C(0x001E67)},
- {RUNE_C(0x001E69), RUNE_C(0x001E69)},
- {RUNE_C(0x001E6B), RUNE_C(0x001E6B)},
- {RUNE_C(0x001E6D), RUNE_C(0x001E6D)},
- {RUNE_C(0x001E6F), RUNE_C(0x001E6F)},
- {RUNE_C(0x001E71), RUNE_C(0x001E71)},
- {RUNE_C(0x001E73), RUNE_C(0x001E73)},
- {RUNE_C(0x001E75), RUNE_C(0x001E75)},
- {RUNE_C(0x001E77), RUNE_C(0x001E77)},
- {RUNE_C(0x001E79), RUNE_C(0x001E79)},
- {RUNE_C(0x001E7B), RUNE_C(0x001E7B)},
- {RUNE_C(0x001E7D), RUNE_C(0x001E7D)},
- {RUNE_C(0x001E7F), RUNE_C(0x001E7F)},
- {RUNE_C(0x001E81), RUNE_C(0x001E81)},
- {RUNE_C(0x001E83), RUNE_C(0x001E83)},
- {RUNE_C(0x001E85), RUNE_C(0x001E85)},
- {RUNE_C(0x001E87), RUNE_C(0x001E87)},
- {RUNE_C(0x001E89), RUNE_C(0x001E89)},
- {RUNE_C(0x001E8B), RUNE_C(0x001E8B)},
- {RUNE_C(0x001E8D), RUNE_C(0x001E8D)},
- {RUNE_C(0x001E8F), RUNE_C(0x001E8F)},
- {RUNE_C(0x001E91), RUNE_C(0x001E91)},
- {RUNE_C(0x001E93), RUNE_C(0x001E93)},
- {RUNE_C(0x001E95), RUNE_C(0x001E9B)},
- {RUNE_C(0x001EA1), RUNE_C(0x001EA1)},
- {RUNE_C(0x001EA3), RUNE_C(0x001EA3)},
- {RUNE_C(0x001EA5), RUNE_C(0x001EA5)},
- {RUNE_C(0x001EA7), RUNE_C(0x001EA7)},
- {RUNE_C(0x001EA9), RUNE_C(0x001EA9)},
- {RUNE_C(0x001EAB), RUNE_C(0x001EAB)},
- {RUNE_C(0x001EAD), RUNE_C(0x001EAD)},
- {RUNE_C(0x001EAF), RUNE_C(0x001EAF)},
- {RUNE_C(0x001EB1), RUNE_C(0x001EB1)},
- {RUNE_C(0x001EB3), RUNE_C(0x001EB3)},
- {RUNE_C(0x001EB5), RUNE_C(0x001EB5)},
- {RUNE_C(0x001EB7), RUNE_C(0x001EB7)},
- {RUNE_C(0x001EB9), RUNE_C(0x001EB9)},
- {RUNE_C(0x001EBB), RUNE_C(0x001EBB)},
- {RUNE_C(0x001EBD), RUNE_C(0x001EBD)},
- {RUNE_C(0x001EBF), RUNE_C(0x001EBF)},
- {RUNE_C(0x001EC1), RUNE_C(0x001EC1)},
- {RUNE_C(0x001EC3), RUNE_C(0x001EC3)},
- {RUNE_C(0x001EC5), RUNE_C(0x001EC5)},
- {RUNE_C(0x001EC7), RUNE_C(0x001EC7)},
- {RUNE_C(0x001EC9), RUNE_C(0x001EC9)},
- {RUNE_C(0x001ECB), RUNE_C(0x001ECB)},
- {RUNE_C(0x001ECD), RUNE_C(0x001ECD)},
- {RUNE_C(0x001ECF), RUNE_C(0x001ECF)},
- {RUNE_C(0x001ED1), RUNE_C(0x001ED1)},
- {RUNE_C(0x001ED3), RUNE_C(0x001ED3)},
- {RUNE_C(0x001ED5), RUNE_C(0x001ED5)},
- {RUNE_C(0x001ED7), RUNE_C(0x001ED7)},
- {RUNE_C(0x001ED9), RUNE_C(0x001ED9)},
- {RUNE_C(0x001EDB), RUNE_C(0x001EDB)},
- {RUNE_C(0x001EDD), RUNE_C(0x001EDD)},
- {RUNE_C(0x001EDF), RUNE_C(0x001EDF)},
- {RUNE_C(0x001EE1), RUNE_C(0x001EE1)},
- {RUNE_C(0x001EE3), RUNE_C(0x001EE3)},
- {RUNE_C(0x001EE5), RUNE_C(0x001EE5)},
- {RUNE_C(0x001EE7), RUNE_C(0x001EE7)},
- {RUNE_C(0x001EE9), RUNE_C(0x001EE9)},
- {RUNE_C(0x001EEB), RUNE_C(0x001EEB)},
- {RUNE_C(0x001EED), RUNE_C(0x001EED)},
- {RUNE_C(0x001EEF), RUNE_C(0x001EEF)},
- {RUNE_C(0x001EF1), RUNE_C(0x001EF1)},
- {RUNE_C(0x001EF3), RUNE_C(0x001EF3)},
- {RUNE_C(0x001EF5), RUNE_C(0x001EF5)},
- {RUNE_C(0x001EF7), RUNE_C(0x001EF7)},
- {RUNE_C(0x001EF9), RUNE_C(0x001EF9)},
- {RUNE_C(0x001EFB), RUNE_C(0x001EFB)},
- {RUNE_C(0x001EFD), RUNE_C(0x001EFD)},
- {RUNE_C(0x001EFF), RUNE_C(0x001F07)},
- {RUNE_C(0x001F10), RUNE_C(0x001F15)},
- {RUNE_C(0x001F20), RUNE_C(0x001F27)},
- {RUNE_C(0x001F30), RUNE_C(0x001F37)},
- {RUNE_C(0x001F40), RUNE_C(0x001F45)},
- {RUNE_C(0x001F50), RUNE_C(0x001F57)},
- {RUNE_C(0x001F60), RUNE_C(0x001F67)},
- {RUNE_C(0x001F70), RUNE_C(0x001F7D)},
- {RUNE_C(0x001F80), RUNE_C(0x001F87)},
- {RUNE_C(0x001F90), RUNE_C(0x001F97)},
- {RUNE_C(0x001FA0), RUNE_C(0x001FA7)},
- {RUNE_C(0x001FB0), RUNE_C(0x001FB4)},
- {RUNE_C(0x001FB6), RUNE_C(0x001FB7)},
- {RUNE_C(0x001FBE), RUNE_C(0x001FBE)},
- {RUNE_C(0x001FC2), RUNE_C(0x001FC4)},
- {RUNE_C(0x001FC6), RUNE_C(0x001FC7)},
- {RUNE_C(0x001FD0), RUNE_C(0x001FD3)},
- {RUNE_C(0x001FD6), RUNE_C(0x001FD7)},
- {RUNE_C(0x001FE0), RUNE_C(0x001FE7)},
- {RUNE_C(0x001FF2), RUNE_C(0x001FF4)},
- {RUNE_C(0x001FF6), RUNE_C(0x001FF7)},
- {RUNE_C(0x00214E), RUNE_C(0x00214E)},
- {RUNE_C(0x002170), RUNE_C(0x00217F)},
- {RUNE_C(0x002184), RUNE_C(0x002184)},
- {RUNE_C(0x0024D0), RUNE_C(0x0024E9)},
- {RUNE_C(0x002C30), RUNE_C(0x002C5F)},
- {RUNE_C(0x002C61), RUNE_C(0x002C61)},
- {RUNE_C(0x002C65), RUNE_C(0x002C66)},
- {RUNE_C(0x002C68), RUNE_C(0x002C68)},
- {RUNE_C(0x002C6A), RUNE_C(0x002C6A)},
- {RUNE_C(0x002C6C), RUNE_C(0x002C6C)},
- {RUNE_C(0x002C73), RUNE_C(0x002C73)},
- {RUNE_C(0x002C76), RUNE_C(0x002C76)},
- {RUNE_C(0x002C81), RUNE_C(0x002C81)},
- {RUNE_C(0x002C83), RUNE_C(0x002C83)},
- {RUNE_C(0x002C85), RUNE_C(0x002C85)},
- {RUNE_C(0x002C87), RUNE_C(0x002C87)},
- {RUNE_C(0x002C89), RUNE_C(0x002C89)},
- {RUNE_C(0x002C8B), RUNE_C(0x002C8B)},
- {RUNE_C(0x002C8D), RUNE_C(0x002C8D)},
- {RUNE_C(0x002C8F), RUNE_C(0x002C8F)},
- {RUNE_C(0x002C91), RUNE_C(0x002C91)},
- {RUNE_C(0x002C93), RUNE_C(0x002C93)},
- {RUNE_C(0x002C95), RUNE_C(0x002C95)},
- {RUNE_C(0x002C97), RUNE_C(0x002C97)},
- {RUNE_C(0x002C99), RUNE_C(0x002C99)},
- {RUNE_C(0x002C9B), RUNE_C(0x002C9B)},
- {RUNE_C(0x002C9D), RUNE_C(0x002C9D)},
- {RUNE_C(0x002C9F), RUNE_C(0x002C9F)},
- {RUNE_C(0x002CA1), RUNE_C(0x002CA1)},
- {RUNE_C(0x002CA3), RUNE_C(0x002CA3)},
- {RUNE_C(0x002CA5), RUNE_C(0x002CA5)},
- {RUNE_C(0x002CA7), RUNE_C(0x002CA7)},
- {RUNE_C(0x002CA9), RUNE_C(0x002CA9)},
- {RUNE_C(0x002CAB), RUNE_C(0x002CAB)},
- {RUNE_C(0x002CAD), RUNE_C(0x002CAD)},
- {RUNE_C(0x002CAF), RUNE_C(0x002CAF)},
- {RUNE_C(0x002CB1), RUNE_C(0x002CB1)},
- {RUNE_C(0x002CB3), RUNE_C(0x002CB3)},
- {RUNE_C(0x002CB5), RUNE_C(0x002CB5)},
- {RUNE_C(0x002CB7), RUNE_C(0x002CB7)},
- {RUNE_C(0x002CB9), RUNE_C(0x002CB9)},
- {RUNE_C(0x002CBB), RUNE_C(0x002CBB)},
- {RUNE_C(0x002CBD), RUNE_C(0x002CBD)},
- {RUNE_C(0x002CBF), RUNE_C(0x002CBF)},
- {RUNE_C(0x002CC1), RUNE_C(0x002CC1)},
- {RUNE_C(0x002CC3), RUNE_C(0x002CC3)},
- {RUNE_C(0x002CC5), RUNE_C(0x002CC5)},
- {RUNE_C(0x002CC7), RUNE_C(0x002CC7)},
- {RUNE_C(0x002CC9), RUNE_C(0x002CC9)},
- {RUNE_C(0x002CCB), RUNE_C(0x002CCB)},
- {RUNE_C(0x002CCD), RUNE_C(0x002CCD)},
- {RUNE_C(0x002CCF), RUNE_C(0x002CCF)},
- {RUNE_C(0x002CD1), RUNE_C(0x002CD1)},
- {RUNE_C(0x002CD3), RUNE_C(0x002CD3)},
- {RUNE_C(0x002CD5), RUNE_C(0x002CD5)},
- {RUNE_C(0x002CD7), RUNE_C(0x002CD7)},
- {RUNE_C(0x002CD9), RUNE_C(0x002CD9)},
- {RUNE_C(0x002CDB), RUNE_C(0x002CDB)},
- {RUNE_C(0x002CDD), RUNE_C(0x002CDD)},
- {RUNE_C(0x002CDF), RUNE_C(0x002CDF)},
- {RUNE_C(0x002CE1), RUNE_C(0x002CE1)},
- {RUNE_C(0x002CE3), RUNE_C(0x002CE3)},
- {RUNE_C(0x002CEC), RUNE_C(0x002CEC)},
- {RUNE_C(0x002CEE), RUNE_C(0x002CEE)},
- {RUNE_C(0x002CF3), RUNE_C(0x002CF3)},
- {RUNE_C(0x002D00), RUNE_C(0x002D25)},
- {RUNE_C(0x002D27), RUNE_C(0x002D27)},
- {RUNE_C(0x002D2D), RUNE_C(0x002D2D)},
- {RUNE_C(0x00A641), RUNE_C(0x00A641)},
- {RUNE_C(0x00A643), RUNE_C(0x00A643)},
- {RUNE_C(0x00A645), RUNE_C(0x00A645)},
- {RUNE_C(0x00A647), RUNE_C(0x00A647)},
- {RUNE_C(0x00A649), RUNE_C(0x00A649)},
- {RUNE_C(0x00A64B), RUNE_C(0x00A64B)},
- {RUNE_C(0x00A64D), RUNE_C(0x00A64D)},
- {RUNE_C(0x00A64F), RUNE_C(0x00A64F)},
- {RUNE_C(0x00A651), RUNE_C(0x00A651)},
- {RUNE_C(0x00A653), RUNE_C(0x00A653)},
- {RUNE_C(0x00A655), RUNE_C(0x00A655)},
- {RUNE_C(0x00A657), RUNE_C(0x00A657)},
- {RUNE_C(0x00A659), RUNE_C(0x00A659)},
- {RUNE_C(0x00A65B), RUNE_C(0x00A65B)},
- {RUNE_C(0x00A65D), RUNE_C(0x00A65D)},
- {RUNE_C(0x00A65F), RUNE_C(0x00A65F)},
- {RUNE_C(0x00A661), RUNE_C(0x00A661)},
- {RUNE_C(0x00A663), RUNE_C(0x00A663)},
- {RUNE_C(0x00A665), RUNE_C(0x00A665)},
- {RUNE_C(0x00A667), RUNE_C(0x00A667)},
- {RUNE_C(0x00A669), RUNE_C(0x00A669)},
- {RUNE_C(0x00A66B), RUNE_C(0x00A66B)},
- {RUNE_C(0x00A66D), RUNE_C(0x00A66D)},
- {RUNE_C(0x00A681), RUNE_C(0x00A681)},
- {RUNE_C(0x00A683), RUNE_C(0x00A683)},
- {RUNE_C(0x00A685), RUNE_C(0x00A685)},
- {RUNE_C(0x00A687), RUNE_C(0x00A687)},
- {RUNE_C(0x00A689), RUNE_C(0x00A689)},
- {RUNE_C(0x00A68B), RUNE_C(0x00A68B)},
- {RUNE_C(0x00A68D), RUNE_C(0x00A68D)},
- {RUNE_C(0x00A68F), RUNE_C(0x00A68F)},
- {RUNE_C(0x00A691), RUNE_C(0x00A691)},
- {RUNE_C(0x00A693), RUNE_C(0x00A693)},
- {RUNE_C(0x00A695), RUNE_C(0x00A695)},
- {RUNE_C(0x00A697), RUNE_C(0x00A697)},
- {RUNE_C(0x00A699), RUNE_C(0x00A699)},
- {RUNE_C(0x00A69B), RUNE_C(0x00A69B)},
- {RUNE_C(0x00A723), RUNE_C(0x00A723)},
- {RUNE_C(0x00A725), RUNE_C(0x00A725)},
- {RUNE_C(0x00A727), RUNE_C(0x00A727)},
- {RUNE_C(0x00A729), RUNE_C(0x00A729)},
- {RUNE_C(0x00A72B), RUNE_C(0x00A72B)},
- {RUNE_C(0x00A72D), RUNE_C(0x00A72D)},
- {RUNE_C(0x00A72F), RUNE_C(0x00A72F)},
- {RUNE_C(0x00A733), RUNE_C(0x00A733)},
- {RUNE_C(0x00A735), RUNE_C(0x00A735)},
- {RUNE_C(0x00A737), RUNE_C(0x00A737)},
- {RUNE_C(0x00A739), RUNE_C(0x00A739)},
- {RUNE_C(0x00A73B), RUNE_C(0x00A73B)},
- {RUNE_C(0x00A73D), RUNE_C(0x00A73D)},
- {RUNE_C(0x00A73F), RUNE_C(0x00A73F)},
- {RUNE_C(0x00A741), RUNE_C(0x00A741)},
- {RUNE_C(0x00A743), RUNE_C(0x00A743)},
- {RUNE_C(0x00A745), RUNE_C(0x00A745)},
- {RUNE_C(0x00A747), RUNE_C(0x00A747)},
- {RUNE_C(0x00A749), RUNE_C(0x00A749)},
- {RUNE_C(0x00A74B), RUNE_C(0x00A74B)},
- {RUNE_C(0x00A74D), RUNE_C(0x00A74D)},
- {RUNE_C(0x00A74F), RUNE_C(0x00A74F)},
- {RUNE_C(0x00A751), RUNE_C(0x00A751)},
- {RUNE_C(0x00A753), RUNE_C(0x00A753)},
- {RUNE_C(0x00A755), RUNE_C(0x00A755)},
- {RUNE_C(0x00A757), RUNE_C(0x00A757)},
- {RUNE_C(0x00A759), RUNE_C(0x00A759)},
- {RUNE_C(0x00A75B), RUNE_C(0x00A75B)},
- {RUNE_C(0x00A75D), RUNE_C(0x00A75D)},
- {RUNE_C(0x00A75F), RUNE_C(0x00A75F)},
- {RUNE_C(0x00A761), RUNE_C(0x00A761)},
- {RUNE_C(0x00A763), RUNE_C(0x00A763)},
- {RUNE_C(0x00A765), RUNE_C(0x00A765)},
- {RUNE_C(0x00A767), RUNE_C(0x00A767)},
- {RUNE_C(0x00A769), RUNE_C(0x00A769)},
- {RUNE_C(0x00A76B), RUNE_C(0x00A76B)},
- {RUNE_C(0x00A76D), RUNE_C(0x00A76D)},
- {RUNE_C(0x00A76F), RUNE_C(0x00A76F)},
- {RUNE_C(0x00A77A), RUNE_C(0x00A77A)},
- {RUNE_C(0x00A77C), RUNE_C(0x00A77C)},
- {RUNE_C(0x00A77F), RUNE_C(0x00A77F)},
- {RUNE_C(0x00A781), RUNE_C(0x00A781)},
- {RUNE_C(0x00A783), RUNE_C(0x00A783)},
- {RUNE_C(0x00A785), RUNE_C(0x00A785)},
- {RUNE_C(0x00A787), RUNE_C(0x00A787)},
- {RUNE_C(0x00A78C), RUNE_C(0x00A78C)},
- {RUNE_C(0x00A791), RUNE_C(0x00A791)},
- {RUNE_C(0x00A793), RUNE_C(0x00A794)},
- {RUNE_C(0x00A797), RUNE_C(0x00A797)},
- {RUNE_C(0x00A799), RUNE_C(0x00A799)},
- {RUNE_C(0x00A79B), RUNE_C(0x00A79B)},
- {RUNE_C(0x00A79D), RUNE_C(0x00A79D)},
- {RUNE_C(0x00A79F), RUNE_C(0x00A79F)},
- {RUNE_C(0x00A7A1), RUNE_C(0x00A7A1)},
- {RUNE_C(0x00A7A3), RUNE_C(0x00A7A3)},
- {RUNE_C(0x00A7A5), RUNE_C(0x00A7A5)},
- {RUNE_C(0x00A7A7), RUNE_C(0x00A7A7)},
- {RUNE_C(0x00A7A9), RUNE_C(0x00A7A9)},
- {RUNE_C(0x00A7B5), RUNE_C(0x00A7B5)},
- {RUNE_C(0x00A7B7), RUNE_C(0x00A7B7)},
- {RUNE_C(0x00A7B9), RUNE_C(0x00A7B9)},
- {RUNE_C(0x00A7BB), RUNE_C(0x00A7BB)},
- {RUNE_C(0x00A7BD), RUNE_C(0x00A7BD)},
- {RUNE_C(0x00A7BF), RUNE_C(0x00A7BF)},
- {RUNE_C(0x00A7C1), RUNE_C(0x00A7C1)},
- {RUNE_C(0x00A7C3), RUNE_C(0x00A7C3)},
- {RUNE_C(0x00A7C8), RUNE_C(0x00A7C8)},
- {RUNE_C(0x00A7CA), RUNE_C(0x00A7CA)},
- {RUNE_C(0x00A7D1), RUNE_C(0x00A7D1)},
- {RUNE_C(0x00A7D7), RUNE_C(0x00A7D7)},
- {RUNE_C(0x00A7D9), RUNE_C(0x00A7D9)},
- {RUNE_C(0x00A7F6), RUNE_C(0x00A7F6)},
- {RUNE_C(0x00AB53), RUNE_C(0x00AB53)},
- {RUNE_C(0x00AB70), RUNE_C(0x00ABBF)},
- {RUNE_C(0x00FB00), RUNE_C(0x00FB06)},
- {RUNE_C(0x00FB13), RUNE_C(0x00FB17)},
- {RUNE_C(0x00FF41), RUNE_C(0x00FF5A)},
- {RUNE_C(0x010428), RUNE_C(0x01044F)},
- {RUNE_C(0x0104D8), RUNE_C(0x0104FB)},
- {RUNE_C(0x010597), RUNE_C(0x0105A1)},
- {RUNE_C(0x0105A3), RUNE_C(0x0105B1)},
- {RUNE_C(0x0105B3), RUNE_C(0x0105B9)},
- {RUNE_C(0x0105BB), RUNE_C(0x0105BC)},
- {RUNE_C(0x010CC0), RUNE_C(0x010CF2)},
- {RUNE_C(0x0118C0), RUNE_C(0x0118DF)},
- {RUNE_C(0x016E60), RUNE_C(0x016E7F)},
- {RUNE_C(0x01E922), RUNE_C(0x01E943)},
+static constexpr unsigned char stage2[][32] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x7F, 0xFF},
+ {0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x54,
+ 0x55, 0xAB, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xD4,
+ 0x29, 0x11, 0x24, 0x46, 0x2A, 0x21, 0x51, 0xA2,
+ 0xD0, 0x56, 0x55, 0xB5, 0xAA, 0xAA, 0x2B, 0xAA},
+ {0xAA, 0xAA, 0xAA, 0xAA, 0xA8, 0xAA, 0x0A, 0x90,
+ 0x85, 0xAA, 0xDF, 0x1A, 0x6B, 0x9F, 0x26, 0x20,
+ 0x8D, 0x1F, 0x04, 0x60, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x38,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0xF0, 0xFF, 0xFF,
+ 0xFF, 0x7F, 0xE3, 0xAA, 0xAA, 0xAA, 0x2F, 0x09},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0x02, 0xA8, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0x54, 0xD5, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA},
+ {0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22,
+ 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xEA, 0x0F, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA},
+ {0xFF, 0x00, 0x3F, 0x00, 0xFF, 0x00, 0xFF, 0x00,
+ 0x3F, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x3F,
+ 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xDF, 0x40,
+ 0xDC, 0x00, 0xCF, 0x00, 0xFF, 0x00, 0xDC, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x15, 0x48, 0x00,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0x0A, 0x50, 0x08, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x20, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x2A, 0x00, 0x00,
+ 0xAA, 0xAA, 0xAA, 0x0A, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xA8, 0xAA, 0xA8, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x00, 0x94,
+ 0xAA, 0x10, 0x9A, 0xAA, 0xAA, 0x02, 0xA0, 0xAA,
+ 0x0A, 0x05, 0x82, 0x02, 0x00, 0x00, 0x40, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFE, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0xFF, 0xFB, 0xFF, 0xFB, 0x1B,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF,
+ 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_cwt(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 256]], ch % 256);
}
diff --git a/lib/unicode/prop/uprop_is_cwu.c b/lib/unicode/prop/uprop_is_cwu.c
index 2b32787..891e4e4 100644
--- a/lib/unicode/prop/uprop_is_cwu.c
+++ b/lib/unicode/prop/uprop_is_cwu.c
@@ -1,651 +1,400 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x07,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x7F, 0xFF,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 7, 6, 6, 8, 6, 6, 6, 6, 6, 6, 6, 6, 9, 10, 11, 12,
+ 6, 13, 6, 6, 14, 6, 6, 6, 6, 6, 6, 6, 15, 16, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 17, 18, 6, 6, 6, 19, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 20, 6, 6, 6, 21,
+ 6, 6, 6, 6, 22, 23, 6, 6, 6, 6, 6, 6, 24, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 25, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 26, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 27, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000101), RUNE_C(0x000101)},
- {RUNE_C(0x000103), RUNE_C(0x000103)},
- {RUNE_C(0x000105), RUNE_C(0x000105)},
- {RUNE_C(0x000107), RUNE_C(0x000107)},
- {RUNE_C(0x000109), RUNE_C(0x000109)},
- {RUNE_C(0x00010B), RUNE_C(0x00010B)},
- {RUNE_C(0x00010D), RUNE_C(0x00010D)},
- {RUNE_C(0x00010F), RUNE_C(0x00010F)},
- {RUNE_C(0x000111), RUNE_C(0x000111)},
- {RUNE_C(0x000113), RUNE_C(0x000113)},
- {RUNE_C(0x000115), RUNE_C(0x000115)},
- {RUNE_C(0x000117), RUNE_C(0x000117)},
- {RUNE_C(0x000119), RUNE_C(0x000119)},
- {RUNE_C(0x00011B), RUNE_C(0x00011B)},
- {RUNE_C(0x00011D), RUNE_C(0x00011D)},
- {RUNE_C(0x00011F), RUNE_C(0x00011F)},
- {RUNE_C(0x000121), RUNE_C(0x000121)},
- {RUNE_C(0x000123), RUNE_C(0x000123)},
- {RUNE_C(0x000125), RUNE_C(0x000125)},
- {RUNE_C(0x000127), RUNE_C(0x000127)},
- {RUNE_C(0x000129), RUNE_C(0x000129)},
- {RUNE_C(0x00012B), RUNE_C(0x00012B)},
- {RUNE_C(0x00012D), RUNE_C(0x00012D)},
- {RUNE_C(0x00012F), RUNE_C(0x00012F)},
- {RUNE_C(0x000131), RUNE_C(0x000131)},
- {RUNE_C(0x000133), RUNE_C(0x000133)},
- {RUNE_C(0x000135), RUNE_C(0x000135)},
- {RUNE_C(0x000137), RUNE_C(0x000137)},
- {RUNE_C(0x00013A), RUNE_C(0x00013A)},
- {RUNE_C(0x00013C), RUNE_C(0x00013C)},
- {RUNE_C(0x00013E), RUNE_C(0x00013E)},
- {RUNE_C(0x000140), RUNE_C(0x000140)},
- {RUNE_C(0x000142), RUNE_C(0x000142)},
- {RUNE_C(0x000144), RUNE_C(0x000144)},
- {RUNE_C(0x000146), RUNE_C(0x000146)},
- {RUNE_C(0x000148), RUNE_C(0x000149)},
- {RUNE_C(0x00014B), RUNE_C(0x00014B)},
- {RUNE_C(0x00014D), RUNE_C(0x00014D)},
- {RUNE_C(0x00014F), RUNE_C(0x00014F)},
- {RUNE_C(0x000151), RUNE_C(0x000151)},
- {RUNE_C(0x000153), RUNE_C(0x000153)},
- {RUNE_C(0x000155), RUNE_C(0x000155)},
- {RUNE_C(0x000157), RUNE_C(0x000157)},
- {RUNE_C(0x000159), RUNE_C(0x000159)},
- {RUNE_C(0x00015B), RUNE_C(0x00015B)},
- {RUNE_C(0x00015D), RUNE_C(0x00015D)},
- {RUNE_C(0x00015F), RUNE_C(0x00015F)},
- {RUNE_C(0x000161), RUNE_C(0x000161)},
- {RUNE_C(0x000163), RUNE_C(0x000163)},
- {RUNE_C(0x000165), RUNE_C(0x000165)},
- {RUNE_C(0x000167), RUNE_C(0x000167)},
- {RUNE_C(0x000169), RUNE_C(0x000169)},
- {RUNE_C(0x00016B), RUNE_C(0x00016B)},
- {RUNE_C(0x00016D), RUNE_C(0x00016D)},
- {RUNE_C(0x00016F), RUNE_C(0x00016F)},
- {RUNE_C(0x000171), RUNE_C(0x000171)},
- {RUNE_C(0x000173), RUNE_C(0x000173)},
- {RUNE_C(0x000175), RUNE_C(0x000175)},
- {RUNE_C(0x000177), RUNE_C(0x000177)},
- {RUNE_C(0x00017A), RUNE_C(0x00017A)},
- {RUNE_C(0x00017C), RUNE_C(0x00017C)},
- {RUNE_C(0x00017E), RUNE_C(0x000180)},
- {RUNE_C(0x000183), RUNE_C(0x000183)},
- {RUNE_C(0x000185), RUNE_C(0x000185)},
- {RUNE_C(0x000188), RUNE_C(0x000188)},
- {RUNE_C(0x00018C), RUNE_C(0x00018C)},
- {RUNE_C(0x000192), RUNE_C(0x000192)},
- {RUNE_C(0x000195), RUNE_C(0x000195)},
- {RUNE_C(0x000199), RUNE_C(0x00019A)},
- {RUNE_C(0x00019E), RUNE_C(0x00019E)},
- {RUNE_C(0x0001A1), RUNE_C(0x0001A1)},
- {RUNE_C(0x0001A3), RUNE_C(0x0001A3)},
- {RUNE_C(0x0001A5), RUNE_C(0x0001A5)},
- {RUNE_C(0x0001A8), RUNE_C(0x0001A8)},
- {RUNE_C(0x0001AD), RUNE_C(0x0001AD)},
- {RUNE_C(0x0001B0), RUNE_C(0x0001B0)},
- {RUNE_C(0x0001B4), RUNE_C(0x0001B4)},
- {RUNE_C(0x0001B6), RUNE_C(0x0001B6)},
- {RUNE_C(0x0001B9), RUNE_C(0x0001B9)},
- {RUNE_C(0x0001BD), RUNE_C(0x0001BD)},
- {RUNE_C(0x0001BF), RUNE_C(0x0001BF)},
- {RUNE_C(0x0001C5), RUNE_C(0x0001C6)},
- {RUNE_C(0x0001C8), RUNE_C(0x0001C9)},
- {RUNE_C(0x0001CB), RUNE_C(0x0001CC)},
- {RUNE_C(0x0001CE), RUNE_C(0x0001CE)},
- {RUNE_C(0x0001D0), RUNE_C(0x0001D0)},
- {RUNE_C(0x0001D2), RUNE_C(0x0001D2)},
- {RUNE_C(0x0001D4), RUNE_C(0x0001D4)},
- {RUNE_C(0x0001D6), RUNE_C(0x0001D6)},
- {RUNE_C(0x0001D8), RUNE_C(0x0001D8)},
- {RUNE_C(0x0001DA), RUNE_C(0x0001DA)},
- {RUNE_C(0x0001DC), RUNE_C(0x0001DD)},
- {RUNE_C(0x0001DF), RUNE_C(0x0001DF)},
- {RUNE_C(0x0001E1), RUNE_C(0x0001E1)},
- {RUNE_C(0x0001E3), RUNE_C(0x0001E3)},
- {RUNE_C(0x0001E5), RUNE_C(0x0001E5)},
- {RUNE_C(0x0001E7), RUNE_C(0x0001E7)},
- {RUNE_C(0x0001E9), RUNE_C(0x0001E9)},
- {RUNE_C(0x0001EB), RUNE_C(0x0001EB)},
- {RUNE_C(0x0001ED), RUNE_C(0x0001ED)},
- {RUNE_C(0x0001EF), RUNE_C(0x0001F0)},
- {RUNE_C(0x0001F2), RUNE_C(0x0001F3)},
- {RUNE_C(0x0001F5), RUNE_C(0x0001F5)},
- {RUNE_C(0x0001F9), RUNE_C(0x0001F9)},
- {RUNE_C(0x0001FB), RUNE_C(0x0001FB)},
- {RUNE_C(0x0001FD), RUNE_C(0x0001FD)},
- {RUNE_C(0x0001FF), RUNE_C(0x0001FF)},
- {RUNE_C(0x000201), RUNE_C(0x000201)},
- {RUNE_C(0x000203), RUNE_C(0x000203)},
- {RUNE_C(0x000205), RUNE_C(0x000205)},
- {RUNE_C(0x000207), RUNE_C(0x000207)},
- {RUNE_C(0x000209), RUNE_C(0x000209)},
- {RUNE_C(0x00020B), RUNE_C(0x00020B)},
- {RUNE_C(0x00020D), RUNE_C(0x00020D)},
- {RUNE_C(0x00020F), RUNE_C(0x00020F)},
- {RUNE_C(0x000211), RUNE_C(0x000211)},
- {RUNE_C(0x000213), RUNE_C(0x000213)},
- {RUNE_C(0x000215), RUNE_C(0x000215)},
- {RUNE_C(0x000217), RUNE_C(0x000217)},
- {RUNE_C(0x000219), RUNE_C(0x000219)},
- {RUNE_C(0x00021B), RUNE_C(0x00021B)},
- {RUNE_C(0x00021D), RUNE_C(0x00021D)},
- {RUNE_C(0x00021F), RUNE_C(0x00021F)},
- {RUNE_C(0x000223), RUNE_C(0x000223)},
- {RUNE_C(0x000225), RUNE_C(0x000225)},
- {RUNE_C(0x000227), RUNE_C(0x000227)},
- {RUNE_C(0x000229), RUNE_C(0x000229)},
- {RUNE_C(0x00022B), RUNE_C(0x00022B)},
- {RUNE_C(0x00022D), RUNE_C(0x00022D)},
- {RUNE_C(0x00022F), RUNE_C(0x00022F)},
- {RUNE_C(0x000231), RUNE_C(0x000231)},
- {RUNE_C(0x000233), RUNE_C(0x000233)},
- {RUNE_C(0x00023C), RUNE_C(0x00023C)},
- {RUNE_C(0x00023F), RUNE_C(0x000240)},
- {RUNE_C(0x000242), RUNE_C(0x000242)},
- {RUNE_C(0x000247), RUNE_C(0x000247)},
- {RUNE_C(0x000249), RUNE_C(0x000249)},
- {RUNE_C(0x00024B), RUNE_C(0x00024B)},
- {RUNE_C(0x00024D), RUNE_C(0x00024D)},
- {RUNE_C(0x00024F), RUNE_C(0x000254)},
- {RUNE_C(0x000256), RUNE_C(0x000257)},
- {RUNE_C(0x000259), RUNE_C(0x000259)},
- {RUNE_C(0x00025B), RUNE_C(0x00025C)},
- {RUNE_C(0x000260), RUNE_C(0x000261)},
- {RUNE_C(0x000263), RUNE_C(0x000263)},
- {RUNE_C(0x000265), RUNE_C(0x000266)},
- {RUNE_C(0x000268), RUNE_C(0x00026C)},
- {RUNE_C(0x00026F), RUNE_C(0x00026F)},
- {RUNE_C(0x000271), RUNE_C(0x000272)},
- {RUNE_C(0x000275), RUNE_C(0x000275)},
- {RUNE_C(0x00027D), RUNE_C(0x00027D)},
- {RUNE_C(0x000280), RUNE_C(0x000280)},
- {RUNE_C(0x000282), RUNE_C(0x000283)},
- {RUNE_C(0x000287), RUNE_C(0x00028C)},
- {RUNE_C(0x000292), RUNE_C(0x000292)},
- {RUNE_C(0x00029D), RUNE_C(0x00029E)},
- {RUNE_C(0x000345), RUNE_C(0x000345)},
- {RUNE_C(0x000371), RUNE_C(0x000371)},
- {RUNE_C(0x000373), RUNE_C(0x000373)},
- {RUNE_C(0x000377), RUNE_C(0x000377)},
- {RUNE_C(0x00037B), RUNE_C(0x00037D)},
- {RUNE_C(0x000390), RUNE_C(0x000390)},
- {RUNE_C(0x0003AC), RUNE_C(0x0003CE)},
- {RUNE_C(0x0003D0), RUNE_C(0x0003D1)},
- {RUNE_C(0x0003D5), RUNE_C(0x0003D7)},
- {RUNE_C(0x0003D9), RUNE_C(0x0003D9)},
- {RUNE_C(0x0003DB), RUNE_C(0x0003DB)},
- {RUNE_C(0x0003DD), RUNE_C(0x0003DD)},
- {RUNE_C(0x0003DF), RUNE_C(0x0003DF)},
- {RUNE_C(0x0003E1), RUNE_C(0x0003E1)},
- {RUNE_C(0x0003E3), RUNE_C(0x0003E3)},
- {RUNE_C(0x0003E5), RUNE_C(0x0003E5)},
- {RUNE_C(0x0003E7), RUNE_C(0x0003E7)},
- {RUNE_C(0x0003E9), RUNE_C(0x0003E9)},
- {RUNE_C(0x0003EB), RUNE_C(0x0003EB)},
- {RUNE_C(0x0003ED), RUNE_C(0x0003ED)},
- {RUNE_C(0x0003EF), RUNE_C(0x0003F3)},
- {RUNE_C(0x0003F5), RUNE_C(0x0003F5)},
- {RUNE_C(0x0003F8), RUNE_C(0x0003F8)},
- {RUNE_C(0x0003FB), RUNE_C(0x0003FB)},
- {RUNE_C(0x000430), RUNE_C(0x00045F)},
- {RUNE_C(0x000461), RUNE_C(0x000461)},
- {RUNE_C(0x000463), RUNE_C(0x000463)},
- {RUNE_C(0x000465), RUNE_C(0x000465)},
- {RUNE_C(0x000467), RUNE_C(0x000467)},
- {RUNE_C(0x000469), RUNE_C(0x000469)},
- {RUNE_C(0x00046B), RUNE_C(0x00046B)},
- {RUNE_C(0x00046D), RUNE_C(0x00046D)},
- {RUNE_C(0x00046F), RUNE_C(0x00046F)},
- {RUNE_C(0x000471), RUNE_C(0x000471)},
- {RUNE_C(0x000473), RUNE_C(0x000473)},
- {RUNE_C(0x000475), RUNE_C(0x000475)},
- {RUNE_C(0x000477), RUNE_C(0x000477)},
- {RUNE_C(0x000479), RUNE_C(0x000479)},
- {RUNE_C(0x00047B), RUNE_C(0x00047B)},
- {RUNE_C(0x00047D), RUNE_C(0x00047D)},
- {RUNE_C(0x00047F), RUNE_C(0x00047F)},
- {RUNE_C(0x000481), RUNE_C(0x000481)},
- {RUNE_C(0x00048B), RUNE_C(0x00048B)},
- {RUNE_C(0x00048D), RUNE_C(0x00048D)},
- {RUNE_C(0x00048F), RUNE_C(0x00048F)},
- {RUNE_C(0x000491), RUNE_C(0x000491)},
- {RUNE_C(0x000493), RUNE_C(0x000493)},
- {RUNE_C(0x000495), RUNE_C(0x000495)},
- {RUNE_C(0x000497), RUNE_C(0x000497)},
- {RUNE_C(0x000499), RUNE_C(0x000499)},
- {RUNE_C(0x00049B), RUNE_C(0x00049B)},
- {RUNE_C(0x00049D), RUNE_C(0x00049D)},
- {RUNE_C(0x00049F), RUNE_C(0x00049F)},
- {RUNE_C(0x0004A1), RUNE_C(0x0004A1)},
- {RUNE_C(0x0004A3), RUNE_C(0x0004A3)},
- {RUNE_C(0x0004A5), RUNE_C(0x0004A5)},
- {RUNE_C(0x0004A7), RUNE_C(0x0004A7)},
- {RUNE_C(0x0004A9), RUNE_C(0x0004A9)},
- {RUNE_C(0x0004AB), RUNE_C(0x0004AB)},
- {RUNE_C(0x0004AD), RUNE_C(0x0004AD)},
- {RUNE_C(0x0004AF), RUNE_C(0x0004AF)},
- {RUNE_C(0x0004B1), RUNE_C(0x0004B1)},
- {RUNE_C(0x0004B3), RUNE_C(0x0004B3)},
- {RUNE_C(0x0004B5), RUNE_C(0x0004B5)},
- {RUNE_C(0x0004B7), RUNE_C(0x0004B7)},
- {RUNE_C(0x0004B9), RUNE_C(0x0004B9)},
- {RUNE_C(0x0004BB), RUNE_C(0x0004BB)},
- {RUNE_C(0x0004BD), RUNE_C(0x0004BD)},
- {RUNE_C(0x0004BF), RUNE_C(0x0004BF)},
- {RUNE_C(0x0004C2), RUNE_C(0x0004C2)},
- {RUNE_C(0x0004C4), RUNE_C(0x0004C4)},
- {RUNE_C(0x0004C6), RUNE_C(0x0004C6)},
- {RUNE_C(0x0004C8), RUNE_C(0x0004C8)},
- {RUNE_C(0x0004CA), RUNE_C(0x0004CA)},
- {RUNE_C(0x0004CC), RUNE_C(0x0004CC)},
- {RUNE_C(0x0004CE), RUNE_C(0x0004CF)},
- {RUNE_C(0x0004D1), RUNE_C(0x0004D1)},
- {RUNE_C(0x0004D3), RUNE_C(0x0004D3)},
- {RUNE_C(0x0004D5), RUNE_C(0x0004D5)},
- {RUNE_C(0x0004D7), RUNE_C(0x0004D7)},
- {RUNE_C(0x0004D9), RUNE_C(0x0004D9)},
- {RUNE_C(0x0004DB), RUNE_C(0x0004DB)},
- {RUNE_C(0x0004DD), RUNE_C(0x0004DD)},
- {RUNE_C(0x0004DF), RUNE_C(0x0004DF)},
- {RUNE_C(0x0004E1), RUNE_C(0x0004E1)},
- {RUNE_C(0x0004E3), RUNE_C(0x0004E3)},
- {RUNE_C(0x0004E5), RUNE_C(0x0004E5)},
- {RUNE_C(0x0004E7), RUNE_C(0x0004E7)},
- {RUNE_C(0x0004E9), RUNE_C(0x0004E9)},
- {RUNE_C(0x0004EB), RUNE_C(0x0004EB)},
- {RUNE_C(0x0004ED), RUNE_C(0x0004ED)},
- {RUNE_C(0x0004EF), RUNE_C(0x0004EF)},
- {RUNE_C(0x0004F1), RUNE_C(0x0004F1)},
- {RUNE_C(0x0004F3), RUNE_C(0x0004F3)},
- {RUNE_C(0x0004F5), RUNE_C(0x0004F5)},
- {RUNE_C(0x0004F7), RUNE_C(0x0004F7)},
- {RUNE_C(0x0004F9), RUNE_C(0x0004F9)},
- {RUNE_C(0x0004FB), RUNE_C(0x0004FB)},
- {RUNE_C(0x0004FD), RUNE_C(0x0004FD)},
- {RUNE_C(0x0004FF), RUNE_C(0x0004FF)},
- {RUNE_C(0x000501), RUNE_C(0x000501)},
- {RUNE_C(0x000503), RUNE_C(0x000503)},
- {RUNE_C(0x000505), RUNE_C(0x000505)},
- {RUNE_C(0x000507), RUNE_C(0x000507)},
- {RUNE_C(0x000509), RUNE_C(0x000509)},
- {RUNE_C(0x00050B), RUNE_C(0x00050B)},
- {RUNE_C(0x00050D), RUNE_C(0x00050D)},
- {RUNE_C(0x00050F), RUNE_C(0x00050F)},
- {RUNE_C(0x000511), RUNE_C(0x000511)},
- {RUNE_C(0x000513), RUNE_C(0x000513)},
- {RUNE_C(0x000515), RUNE_C(0x000515)},
- {RUNE_C(0x000517), RUNE_C(0x000517)},
- {RUNE_C(0x000519), RUNE_C(0x000519)},
- {RUNE_C(0x00051B), RUNE_C(0x00051B)},
- {RUNE_C(0x00051D), RUNE_C(0x00051D)},
- {RUNE_C(0x00051F), RUNE_C(0x00051F)},
- {RUNE_C(0x000521), RUNE_C(0x000521)},
- {RUNE_C(0x000523), RUNE_C(0x000523)},
- {RUNE_C(0x000525), RUNE_C(0x000525)},
- {RUNE_C(0x000527), RUNE_C(0x000527)},
- {RUNE_C(0x000529), RUNE_C(0x000529)},
- {RUNE_C(0x00052B), RUNE_C(0x00052B)},
- {RUNE_C(0x00052D), RUNE_C(0x00052D)},
- {RUNE_C(0x00052F), RUNE_C(0x00052F)},
- {RUNE_C(0x000561), RUNE_C(0x000587)},
- {RUNE_C(0x0010D0), RUNE_C(0x0010FA)},
- {RUNE_C(0x0010FD), RUNE_C(0x0010FF)},
- {RUNE_C(0x0013F8), RUNE_C(0x0013FD)},
- {RUNE_C(0x001C80), RUNE_C(0x001C88)},
- {RUNE_C(0x001D79), RUNE_C(0x001D79)},
- {RUNE_C(0x001D7D), RUNE_C(0x001D7D)},
- {RUNE_C(0x001D8E), RUNE_C(0x001D8E)},
- {RUNE_C(0x001E01), RUNE_C(0x001E01)},
- {RUNE_C(0x001E03), RUNE_C(0x001E03)},
- {RUNE_C(0x001E05), RUNE_C(0x001E05)},
- {RUNE_C(0x001E07), RUNE_C(0x001E07)},
- {RUNE_C(0x001E09), RUNE_C(0x001E09)},
- {RUNE_C(0x001E0B), RUNE_C(0x001E0B)},
- {RUNE_C(0x001E0D), RUNE_C(0x001E0D)},
- {RUNE_C(0x001E0F), RUNE_C(0x001E0F)},
- {RUNE_C(0x001E11), RUNE_C(0x001E11)},
- {RUNE_C(0x001E13), RUNE_C(0x001E13)},
- {RUNE_C(0x001E15), RUNE_C(0x001E15)},
- {RUNE_C(0x001E17), RUNE_C(0x001E17)},
- {RUNE_C(0x001E19), RUNE_C(0x001E19)},
- {RUNE_C(0x001E1B), RUNE_C(0x001E1B)},
- {RUNE_C(0x001E1D), RUNE_C(0x001E1D)},
- {RUNE_C(0x001E1F), RUNE_C(0x001E1F)},
- {RUNE_C(0x001E21), RUNE_C(0x001E21)},
- {RUNE_C(0x001E23), RUNE_C(0x001E23)},
- {RUNE_C(0x001E25), RUNE_C(0x001E25)},
- {RUNE_C(0x001E27), RUNE_C(0x001E27)},
- {RUNE_C(0x001E29), RUNE_C(0x001E29)},
- {RUNE_C(0x001E2B), RUNE_C(0x001E2B)},
- {RUNE_C(0x001E2D), RUNE_C(0x001E2D)},
- {RUNE_C(0x001E2F), RUNE_C(0x001E2F)},
- {RUNE_C(0x001E31), RUNE_C(0x001E31)},
- {RUNE_C(0x001E33), RUNE_C(0x001E33)},
- {RUNE_C(0x001E35), RUNE_C(0x001E35)},
- {RUNE_C(0x001E37), RUNE_C(0x001E37)},
- {RUNE_C(0x001E39), RUNE_C(0x001E39)},
- {RUNE_C(0x001E3B), RUNE_C(0x001E3B)},
- {RUNE_C(0x001E3D), RUNE_C(0x001E3D)},
- {RUNE_C(0x001E3F), RUNE_C(0x001E3F)},
- {RUNE_C(0x001E41), RUNE_C(0x001E41)},
- {RUNE_C(0x001E43), RUNE_C(0x001E43)},
- {RUNE_C(0x001E45), RUNE_C(0x001E45)},
- {RUNE_C(0x001E47), RUNE_C(0x001E47)},
- {RUNE_C(0x001E49), RUNE_C(0x001E49)},
- {RUNE_C(0x001E4B), RUNE_C(0x001E4B)},
- {RUNE_C(0x001E4D), RUNE_C(0x001E4D)},
- {RUNE_C(0x001E4F), RUNE_C(0x001E4F)},
- {RUNE_C(0x001E51), RUNE_C(0x001E51)},
- {RUNE_C(0x001E53), RUNE_C(0x001E53)},
- {RUNE_C(0x001E55), RUNE_C(0x001E55)},
- {RUNE_C(0x001E57), RUNE_C(0x001E57)},
- {RUNE_C(0x001E59), RUNE_C(0x001E59)},
- {RUNE_C(0x001E5B), RUNE_C(0x001E5B)},
- {RUNE_C(0x001E5D), RUNE_C(0x001E5D)},
- {RUNE_C(0x001E5F), RUNE_C(0x001E5F)},
- {RUNE_C(0x001E61), RUNE_C(0x001E61)},
- {RUNE_C(0x001E63), RUNE_C(0x001E63)},
- {RUNE_C(0x001E65), RUNE_C(0x001E65)},
- {RUNE_C(0x001E67), RUNE_C(0x001E67)},
- {RUNE_C(0x001E69), RUNE_C(0x001E69)},
- {RUNE_C(0x001E6B), RUNE_C(0x001E6B)},
- {RUNE_C(0x001E6D), RUNE_C(0x001E6D)},
- {RUNE_C(0x001E6F), RUNE_C(0x001E6F)},
- {RUNE_C(0x001E71), RUNE_C(0x001E71)},
- {RUNE_C(0x001E73), RUNE_C(0x001E73)},
- {RUNE_C(0x001E75), RUNE_C(0x001E75)},
- {RUNE_C(0x001E77), RUNE_C(0x001E77)},
- {RUNE_C(0x001E79), RUNE_C(0x001E79)},
- {RUNE_C(0x001E7B), RUNE_C(0x001E7B)},
- {RUNE_C(0x001E7D), RUNE_C(0x001E7D)},
- {RUNE_C(0x001E7F), RUNE_C(0x001E7F)},
- {RUNE_C(0x001E81), RUNE_C(0x001E81)},
- {RUNE_C(0x001E83), RUNE_C(0x001E83)},
- {RUNE_C(0x001E85), RUNE_C(0x001E85)},
- {RUNE_C(0x001E87), RUNE_C(0x001E87)},
- {RUNE_C(0x001E89), RUNE_C(0x001E89)},
- {RUNE_C(0x001E8B), RUNE_C(0x001E8B)},
- {RUNE_C(0x001E8D), RUNE_C(0x001E8D)},
- {RUNE_C(0x001E8F), RUNE_C(0x001E8F)},
- {RUNE_C(0x001E91), RUNE_C(0x001E91)},
- {RUNE_C(0x001E93), RUNE_C(0x001E93)},
- {RUNE_C(0x001E95), RUNE_C(0x001E9B)},
- {RUNE_C(0x001EA1), RUNE_C(0x001EA1)},
- {RUNE_C(0x001EA3), RUNE_C(0x001EA3)},
- {RUNE_C(0x001EA5), RUNE_C(0x001EA5)},
- {RUNE_C(0x001EA7), RUNE_C(0x001EA7)},
- {RUNE_C(0x001EA9), RUNE_C(0x001EA9)},
- {RUNE_C(0x001EAB), RUNE_C(0x001EAB)},
- {RUNE_C(0x001EAD), RUNE_C(0x001EAD)},
- {RUNE_C(0x001EAF), RUNE_C(0x001EAF)},
- {RUNE_C(0x001EB1), RUNE_C(0x001EB1)},
- {RUNE_C(0x001EB3), RUNE_C(0x001EB3)},
- {RUNE_C(0x001EB5), RUNE_C(0x001EB5)},
- {RUNE_C(0x001EB7), RUNE_C(0x001EB7)},
- {RUNE_C(0x001EB9), RUNE_C(0x001EB9)},
- {RUNE_C(0x001EBB), RUNE_C(0x001EBB)},
- {RUNE_C(0x001EBD), RUNE_C(0x001EBD)},
- {RUNE_C(0x001EBF), RUNE_C(0x001EBF)},
- {RUNE_C(0x001EC1), RUNE_C(0x001EC1)},
- {RUNE_C(0x001EC3), RUNE_C(0x001EC3)},
- {RUNE_C(0x001EC5), RUNE_C(0x001EC5)},
- {RUNE_C(0x001EC7), RUNE_C(0x001EC7)},
- {RUNE_C(0x001EC9), RUNE_C(0x001EC9)},
- {RUNE_C(0x001ECB), RUNE_C(0x001ECB)},
- {RUNE_C(0x001ECD), RUNE_C(0x001ECD)},
- {RUNE_C(0x001ECF), RUNE_C(0x001ECF)},
- {RUNE_C(0x001ED1), RUNE_C(0x001ED1)},
- {RUNE_C(0x001ED3), RUNE_C(0x001ED3)},
- {RUNE_C(0x001ED5), RUNE_C(0x001ED5)},
- {RUNE_C(0x001ED7), RUNE_C(0x001ED7)},
- {RUNE_C(0x001ED9), RUNE_C(0x001ED9)},
- {RUNE_C(0x001EDB), RUNE_C(0x001EDB)},
- {RUNE_C(0x001EDD), RUNE_C(0x001EDD)},
- {RUNE_C(0x001EDF), RUNE_C(0x001EDF)},
- {RUNE_C(0x001EE1), RUNE_C(0x001EE1)},
- {RUNE_C(0x001EE3), RUNE_C(0x001EE3)},
- {RUNE_C(0x001EE5), RUNE_C(0x001EE5)},
- {RUNE_C(0x001EE7), RUNE_C(0x001EE7)},
- {RUNE_C(0x001EE9), RUNE_C(0x001EE9)},
- {RUNE_C(0x001EEB), RUNE_C(0x001EEB)},
- {RUNE_C(0x001EED), RUNE_C(0x001EED)},
- {RUNE_C(0x001EEF), RUNE_C(0x001EEF)},
- {RUNE_C(0x001EF1), RUNE_C(0x001EF1)},
- {RUNE_C(0x001EF3), RUNE_C(0x001EF3)},
- {RUNE_C(0x001EF5), RUNE_C(0x001EF5)},
- {RUNE_C(0x001EF7), RUNE_C(0x001EF7)},
- {RUNE_C(0x001EF9), RUNE_C(0x001EF9)},
- {RUNE_C(0x001EFB), RUNE_C(0x001EFB)},
- {RUNE_C(0x001EFD), RUNE_C(0x001EFD)},
- {RUNE_C(0x001EFF), RUNE_C(0x001F07)},
- {RUNE_C(0x001F10), RUNE_C(0x001F15)},
- {RUNE_C(0x001F20), RUNE_C(0x001F27)},
- {RUNE_C(0x001F30), RUNE_C(0x001F37)},
- {RUNE_C(0x001F40), RUNE_C(0x001F45)},
- {RUNE_C(0x001F50), RUNE_C(0x001F57)},
- {RUNE_C(0x001F60), RUNE_C(0x001F67)},
- {RUNE_C(0x001F70), RUNE_C(0x001F7D)},
- {RUNE_C(0x001F80), RUNE_C(0x001FB4)},
- {RUNE_C(0x001FB6), RUNE_C(0x001FB7)},
- {RUNE_C(0x001FBC), RUNE_C(0x001FBC)},
- {RUNE_C(0x001FBE), RUNE_C(0x001FBE)},
- {RUNE_C(0x001FC2), RUNE_C(0x001FC4)},
- {RUNE_C(0x001FC6), RUNE_C(0x001FC7)},
- {RUNE_C(0x001FCC), RUNE_C(0x001FCC)},
- {RUNE_C(0x001FD0), RUNE_C(0x001FD3)},
- {RUNE_C(0x001FD6), RUNE_C(0x001FD7)},
- {RUNE_C(0x001FE0), RUNE_C(0x001FE7)},
- {RUNE_C(0x001FF2), RUNE_C(0x001FF4)},
- {RUNE_C(0x001FF6), RUNE_C(0x001FF7)},
- {RUNE_C(0x001FFC), RUNE_C(0x001FFC)},
- {RUNE_C(0x00214E), RUNE_C(0x00214E)},
- {RUNE_C(0x002170), RUNE_C(0x00217F)},
- {RUNE_C(0x002184), RUNE_C(0x002184)},
- {RUNE_C(0x0024D0), RUNE_C(0x0024E9)},
- {RUNE_C(0x002C30), RUNE_C(0x002C5F)},
- {RUNE_C(0x002C61), RUNE_C(0x002C61)},
- {RUNE_C(0x002C65), RUNE_C(0x002C66)},
- {RUNE_C(0x002C68), RUNE_C(0x002C68)},
- {RUNE_C(0x002C6A), RUNE_C(0x002C6A)},
- {RUNE_C(0x002C6C), RUNE_C(0x002C6C)},
- {RUNE_C(0x002C73), RUNE_C(0x002C73)},
- {RUNE_C(0x002C76), RUNE_C(0x002C76)},
- {RUNE_C(0x002C81), RUNE_C(0x002C81)},
- {RUNE_C(0x002C83), RUNE_C(0x002C83)},
- {RUNE_C(0x002C85), RUNE_C(0x002C85)},
- {RUNE_C(0x002C87), RUNE_C(0x002C87)},
- {RUNE_C(0x002C89), RUNE_C(0x002C89)},
- {RUNE_C(0x002C8B), RUNE_C(0x002C8B)},
- {RUNE_C(0x002C8D), RUNE_C(0x002C8D)},
- {RUNE_C(0x002C8F), RUNE_C(0x002C8F)},
- {RUNE_C(0x002C91), RUNE_C(0x002C91)},
- {RUNE_C(0x002C93), RUNE_C(0x002C93)},
- {RUNE_C(0x002C95), RUNE_C(0x002C95)},
- {RUNE_C(0x002C97), RUNE_C(0x002C97)},
- {RUNE_C(0x002C99), RUNE_C(0x002C99)},
- {RUNE_C(0x002C9B), RUNE_C(0x002C9B)},
- {RUNE_C(0x002C9D), RUNE_C(0x002C9D)},
- {RUNE_C(0x002C9F), RUNE_C(0x002C9F)},
- {RUNE_C(0x002CA1), RUNE_C(0x002CA1)},
- {RUNE_C(0x002CA3), RUNE_C(0x002CA3)},
- {RUNE_C(0x002CA5), RUNE_C(0x002CA5)},
- {RUNE_C(0x002CA7), RUNE_C(0x002CA7)},
- {RUNE_C(0x002CA9), RUNE_C(0x002CA9)},
- {RUNE_C(0x002CAB), RUNE_C(0x002CAB)},
- {RUNE_C(0x002CAD), RUNE_C(0x002CAD)},
- {RUNE_C(0x002CAF), RUNE_C(0x002CAF)},
- {RUNE_C(0x002CB1), RUNE_C(0x002CB1)},
- {RUNE_C(0x002CB3), RUNE_C(0x002CB3)},
- {RUNE_C(0x002CB5), RUNE_C(0x002CB5)},
- {RUNE_C(0x002CB7), RUNE_C(0x002CB7)},
- {RUNE_C(0x002CB9), RUNE_C(0x002CB9)},
- {RUNE_C(0x002CBB), RUNE_C(0x002CBB)},
- {RUNE_C(0x002CBD), RUNE_C(0x002CBD)},
- {RUNE_C(0x002CBF), RUNE_C(0x002CBF)},
- {RUNE_C(0x002CC1), RUNE_C(0x002CC1)},
- {RUNE_C(0x002CC3), RUNE_C(0x002CC3)},
- {RUNE_C(0x002CC5), RUNE_C(0x002CC5)},
- {RUNE_C(0x002CC7), RUNE_C(0x002CC7)},
- {RUNE_C(0x002CC9), RUNE_C(0x002CC9)},
- {RUNE_C(0x002CCB), RUNE_C(0x002CCB)},
- {RUNE_C(0x002CCD), RUNE_C(0x002CCD)},
- {RUNE_C(0x002CCF), RUNE_C(0x002CCF)},
- {RUNE_C(0x002CD1), RUNE_C(0x002CD1)},
- {RUNE_C(0x002CD3), RUNE_C(0x002CD3)},
- {RUNE_C(0x002CD5), RUNE_C(0x002CD5)},
- {RUNE_C(0x002CD7), RUNE_C(0x002CD7)},
- {RUNE_C(0x002CD9), RUNE_C(0x002CD9)},
- {RUNE_C(0x002CDB), RUNE_C(0x002CDB)},
- {RUNE_C(0x002CDD), RUNE_C(0x002CDD)},
- {RUNE_C(0x002CDF), RUNE_C(0x002CDF)},
- {RUNE_C(0x002CE1), RUNE_C(0x002CE1)},
- {RUNE_C(0x002CE3), RUNE_C(0x002CE3)},
- {RUNE_C(0x002CEC), RUNE_C(0x002CEC)},
- {RUNE_C(0x002CEE), RUNE_C(0x002CEE)},
- {RUNE_C(0x002CF3), RUNE_C(0x002CF3)},
- {RUNE_C(0x002D00), RUNE_C(0x002D25)},
- {RUNE_C(0x002D27), RUNE_C(0x002D27)},
- {RUNE_C(0x002D2D), RUNE_C(0x002D2D)},
- {RUNE_C(0x00A641), RUNE_C(0x00A641)},
- {RUNE_C(0x00A643), RUNE_C(0x00A643)},
- {RUNE_C(0x00A645), RUNE_C(0x00A645)},
- {RUNE_C(0x00A647), RUNE_C(0x00A647)},
- {RUNE_C(0x00A649), RUNE_C(0x00A649)},
- {RUNE_C(0x00A64B), RUNE_C(0x00A64B)},
- {RUNE_C(0x00A64D), RUNE_C(0x00A64D)},
- {RUNE_C(0x00A64F), RUNE_C(0x00A64F)},
- {RUNE_C(0x00A651), RUNE_C(0x00A651)},
- {RUNE_C(0x00A653), RUNE_C(0x00A653)},
- {RUNE_C(0x00A655), RUNE_C(0x00A655)},
- {RUNE_C(0x00A657), RUNE_C(0x00A657)},
- {RUNE_C(0x00A659), RUNE_C(0x00A659)},
- {RUNE_C(0x00A65B), RUNE_C(0x00A65B)},
- {RUNE_C(0x00A65D), RUNE_C(0x00A65D)},
- {RUNE_C(0x00A65F), RUNE_C(0x00A65F)},
- {RUNE_C(0x00A661), RUNE_C(0x00A661)},
- {RUNE_C(0x00A663), RUNE_C(0x00A663)},
- {RUNE_C(0x00A665), RUNE_C(0x00A665)},
- {RUNE_C(0x00A667), RUNE_C(0x00A667)},
- {RUNE_C(0x00A669), RUNE_C(0x00A669)},
- {RUNE_C(0x00A66B), RUNE_C(0x00A66B)},
- {RUNE_C(0x00A66D), RUNE_C(0x00A66D)},
- {RUNE_C(0x00A681), RUNE_C(0x00A681)},
- {RUNE_C(0x00A683), RUNE_C(0x00A683)},
- {RUNE_C(0x00A685), RUNE_C(0x00A685)},
- {RUNE_C(0x00A687), RUNE_C(0x00A687)},
- {RUNE_C(0x00A689), RUNE_C(0x00A689)},
- {RUNE_C(0x00A68B), RUNE_C(0x00A68B)},
- {RUNE_C(0x00A68D), RUNE_C(0x00A68D)},
- {RUNE_C(0x00A68F), RUNE_C(0x00A68F)},
- {RUNE_C(0x00A691), RUNE_C(0x00A691)},
- {RUNE_C(0x00A693), RUNE_C(0x00A693)},
- {RUNE_C(0x00A695), RUNE_C(0x00A695)},
- {RUNE_C(0x00A697), RUNE_C(0x00A697)},
- {RUNE_C(0x00A699), RUNE_C(0x00A699)},
- {RUNE_C(0x00A69B), RUNE_C(0x00A69B)},
- {RUNE_C(0x00A723), RUNE_C(0x00A723)},
- {RUNE_C(0x00A725), RUNE_C(0x00A725)},
- {RUNE_C(0x00A727), RUNE_C(0x00A727)},
- {RUNE_C(0x00A729), RUNE_C(0x00A729)},
- {RUNE_C(0x00A72B), RUNE_C(0x00A72B)},
- {RUNE_C(0x00A72D), RUNE_C(0x00A72D)},
- {RUNE_C(0x00A72F), RUNE_C(0x00A72F)},
- {RUNE_C(0x00A733), RUNE_C(0x00A733)},
- {RUNE_C(0x00A735), RUNE_C(0x00A735)},
- {RUNE_C(0x00A737), RUNE_C(0x00A737)},
- {RUNE_C(0x00A739), RUNE_C(0x00A739)},
- {RUNE_C(0x00A73B), RUNE_C(0x00A73B)},
- {RUNE_C(0x00A73D), RUNE_C(0x00A73D)},
- {RUNE_C(0x00A73F), RUNE_C(0x00A73F)},
- {RUNE_C(0x00A741), RUNE_C(0x00A741)},
- {RUNE_C(0x00A743), RUNE_C(0x00A743)},
- {RUNE_C(0x00A745), RUNE_C(0x00A745)},
- {RUNE_C(0x00A747), RUNE_C(0x00A747)},
- {RUNE_C(0x00A749), RUNE_C(0x00A749)},
- {RUNE_C(0x00A74B), RUNE_C(0x00A74B)},
- {RUNE_C(0x00A74D), RUNE_C(0x00A74D)},
- {RUNE_C(0x00A74F), RUNE_C(0x00A74F)},
- {RUNE_C(0x00A751), RUNE_C(0x00A751)},
- {RUNE_C(0x00A753), RUNE_C(0x00A753)},
- {RUNE_C(0x00A755), RUNE_C(0x00A755)},
- {RUNE_C(0x00A757), RUNE_C(0x00A757)},
- {RUNE_C(0x00A759), RUNE_C(0x00A759)},
- {RUNE_C(0x00A75B), RUNE_C(0x00A75B)},
- {RUNE_C(0x00A75D), RUNE_C(0x00A75D)},
- {RUNE_C(0x00A75F), RUNE_C(0x00A75F)},
- {RUNE_C(0x00A761), RUNE_C(0x00A761)},
- {RUNE_C(0x00A763), RUNE_C(0x00A763)},
- {RUNE_C(0x00A765), RUNE_C(0x00A765)},
- {RUNE_C(0x00A767), RUNE_C(0x00A767)},
- {RUNE_C(0x00A769), RUNE_C(0x00A769)},
- {RUNE_C(0x00A76B), RUNE_C(0x00A76B)},
- {RUNE_C(0x00A76D), RUNE_C(0x00A76D)},
- {RUNE_C(0x00A76F), RUNE_C(0x00A76F)},
- {RUNE_C(0x00A77A), RUNE_C(0x00A77A)},
- {RUNE_C(0x00A77C), RUNE_C(0x00A77C)},
- {RUNE_C(0x00A77F), RUNE_C(0x00A77F)},
- {RUNE_C(0x00A781), RUNE_C(0x00A781)},
- {RUNE_C(0x00A783), RUNE_C(0x00A783)},
- {RUNE_C(0x00A785), RUNE_C(0x00A785)},
- {RUNE_C(0x00A787), RUNE_C(0x00A787)},
- {RUNE_C(0x00A78C), RUNE_C(0x00A78C)},
- {RUNE_C(0x00A791), RUNE_C(0x00A791)},
- {RUNE_C(0x00A793), RUNE_C(0x00A794)},
- {RUNE_C(0x00A797), RUNE_C(0x00A797)},
- {RUNE_C(0x00A799), RUNE_C(0x00A799)},
- {RUNE_C(0x00A79B), RUNE_C(0x00A79B)},
- {RUNE_C(0x00A79D), RUNE_C(0x00A79D)},
- {RUNE_C(0x00A79F), RUNE_C(0x00A79F)},
- {RUNE_C(0x00A7A1), RUNE_C(0x00A7A1)},
- {RUNE_C(0x00A7A3), RUNE_C(0x00A7A3)},
- {RUNE_C(0x00A7A5), RUNE_C(0x00A7A5)},
- {RUNE_C(0x00A7A7), RUNE_C(0x00A7A7)},
- {RUNE_C(0x00A7A9), RUNE_C(0x00A7A9)},
- {RUNE_C(0x00A7B5), RUNE_C(0x00A7B5)},
- {RUNE_C(0x00A7B7), RUNE_C(0x00A7B7)},
- {RUNE_C(0x00A7B9), RUNE_C(0x00A7B9)},
- {RUNE_C(0x00A7BB), RUNE_C(0x00A7BB)},
- {RUNE_C(0x00A7BD), RUNE_C(0x00A7BD)},
- {RUNE_C(0x00A7BF), RUNE_C(0x00A7BF)},
- {RUNE_C(0x00A7C1), RUNE_C(0x00A7C1)},
- {RUNE_C(0x00A7C3), RUNE_C(0x00A7C3)},
- {RUNE_C(0x00A7C8), RUNE_C(0x00A7C8)},
- {RUNE_C(0x00A7CA), RUNE_C(0x00A7CA)},
- {RUNE_C(0x00A7D1), RUNE_C(0x00A7D1)},
- {RUNE_C(0x00A7D7), RUNE_C(0x00A7D7)},
- {RUNE_C(0x00A7D9), RUNE_C(0x00A7D9)},
- {RUNE_C(0x00A7F6), RUNE_C(0x00A7F6)},
- {RUNE_C(0x00AB53), RUNE_C(0x00AB53)},
- {RUNE_C(0x00AB70), RUNE_C(0x00ABBF)},
- {RUNE_C(0x00FB00), RUNE_C(0x00FB06)},
- {RUNE_C(0x00FB13), RUNE_C(0x00FB17)},
- {RUNE_C(0x00FF41), RUNE_C(0x00FF5A)},
- {RUNE_C(0x010428), RUNE_C(0x01044F)},
- {RUNE_C(0x0104D8), RUNE_C(0x0104FB)},
- {RUNE_C(0x010597), RUNE_C(0x0105A1)},
- {RUNE_C(0x0105A3), RUNE_C(0x0105B1)},
- {RUNE_C(0x0105B3), RUNE_C(0x0105B9)},
- {RUNE_C(0x0105BB), RUNE_C(0x0105BC)},
- {RUNE_C(0x010CC0), RUNE_C(0x010CF2)},
- {RUNE_C(0x0118C0), RUNE_C(0x0118DF)},
- {RUNE_C(0x016E60), RUNE_C(0x016E7F)},
- {RUNE_C(0x01E922), RUNE_C(0x01E943)},
+static constexpr unsigned char stage2[][32] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x7F, 0xFF},
+ {0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x54,
+ 0x55, 0xAB, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xD4,
+ 0x29, 0x11, 0x24, 0x46, 0x2A, 0x21, 0x51, 0xA2,
+ 0x60, 0x5B, 0x55, 0xB5, 0xAA, 0xAA, 0x2D, 0xAA},
+ {0xAA, 0xAA, 0xAA, 0xAA, 0xA8, 0xAA, 0x0A, 0x90,
+ 0x85, 0xAA, 0xDF, 0x1A, 0x6B, 0x9F, 0x26, 0x20,
+ 0x8D, 0x1F, 0x04, 0x60, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x38,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0xF0, 0xFF, 0xFF,
+ 0xFF, 0x7F, 0xE3, 0xAA, 0xAA, 0xAA, 0x2F, 0x09},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0x02, 0xA8, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0x54, 0xD5, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA},
+ {0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22,
+ 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xEA, 0x0F, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA},
+ {0xFF, 0x00, 0x3F, 0x00, 0xFF, 0x00, 0xFF, 0x00,
+ 0x3F, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x3F,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x50,
+ 0xDC, 0x10, 0xCF, 0x00, 0xFF, 0x00, 0xDC, 0x10},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x15, 0x48, 0x00,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0x0A, 0x50, 0x08, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x20, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x2A, 0x00, 0x00,
+ 0xAA, 0xAA, 0xAA, 0x0A, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xA8, 0xAA, 0xA8, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x00, 0x94,
+ 0xAA, 0x10, 0x9A, 0xAA, 0xAA, 0x02, 0xA0, 0xAA,
+ 0x0A, 0x05, 0x82, 0x02, 0x00, 0x00, 0x40, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFE, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0xFF, 0xFB, 0xFF, 0xFB, 0x1B,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF,
+ 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_cwu(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 256]], ch % 256);
}
diff --git a/lib/unicode/prop/uprop_is_dash.c b/lib/unicode/prop/uprop_is_dash.c
index e49b04a..a191edf 100644
--- a/lib/unicode/prop/uprop_is_dash.c
+++ b/lib/unicode/prop/uprop_is_dash.c
@@ -1,50 +1,336 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 3, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 5, 1, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1,
+ 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 10,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x00058A), RUNE_C(0x00058A)},
- {RUNE_C(0x0005BE), RUNE_C(0x0005BE)},
- {RUNE_C(0x001400), RUNE_C(0x001400)},
- {RUNE_C(0x001806), RUNE_C(0x001806)},
- {RUNE_C(0x002010), RUNE_C(0x002015)},
- {RUNE_C(0x002053), RUNE_C(0x002053)},
- {RUNE_C(0x00207B), RUNE_C(0x00207B)},
- {RUNE_C(0x00208B), RUNE_C(0x00208B)},
- {RUNE_C(0x002212), RUNE_C(0x002212)},
- {RUNE_C(0x002E17), RUNE_C(0x002E17)},
- {RUNE_C(0x002E1A), RUNE_C(0x002E1A)},
- {RUNE_C(0x002E3A), RUNE_C(0x002E3B)},
- {RUNE_C(0x002E40), RUNE_C(0x002E40)},
- {RUNE_C(0x002E5D), RUNE_C(0x002E5D)},
- {RUNE_C(0x00301C), RUNE_C(0x00301C)},
- {RUNE_C(0x003030), RUNE_C(0x003030)},
- {RUNE_C(0x0030A0), RUNE_C(0x0030A0)},
- {RUNE_C(0x00FE31), RUNE_C(0x00FE32)},
- {RUNE_C(0x00FE58), RUNE_C(0x00FE58)},
- {RUNE_C(0x00FE63), RUNE_C(0x00FE63)},
- {RUNE_C(0x00FF0D), RUNE_C(0x00FF0D)},
- {RUNE_C(0x010EAD), RUNE_C(0x010EAD)},
+static constexpr unsigned char stage2[][32] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08,
+ 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x0C,
+ 0x01, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_dash(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 256]], ch % 256);
}
diff --git a/lib/unicode/prop/uprop_is_dep.c b/lib/unicode/prop/uprop_is_dep.c
index d696c07..a45e551 100644
--- a/lib/unicode/prop/uprop_is_dep.c
+++ b/lib/unicode/prop/uprop_is_dep.c
@@ -1,29 +1,216 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000149), RUNE_C(0x000149)},
- {RUNE_C(0x000673), RUNE_C(0x000673)},
- {RUNE_C(0x000F77), RUNE_C(0x000F77)},
- {RUNE_C(0x000F79), RUNE_C(0x000F79)},
- {RUNE_C(0x0017A3), RUNE_C(0x0017A4)},
- {RUNE_C(0x00206A), RUNE_C(0x00206F)},
- {RUNE_C(0x002329), RUNE_C(0x00232A)},
- {RUNE_C(0x0E0001), RUNE_C(0x0E0001)},
+static constexpr uint8_t stage1[] = {
+ 0, 1, 1, 2, 1, 1, 1, 3, 1, 1, 1, 4, 1, 1, 1, 1,
+ 5, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
+static constexpr unsigned char stage2[][64] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+};
bool
uprop_is_dep(rune ch)
{
- return mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 512]], ch % 512);
}
diff --git a/lib/unicode/prop/uprop_is_di.c b/lib/unicode/prop/uprop_is_di.c
index 585ce4f..17c714a 100644
--- a/lib/unicode/prop/uprop_is_di.c
+++ b/lib/unicode/prop/uprop_is_di.c
@@ -1,44 +1,344 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 1, 2, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 4, 1, 1, 1, 1, 1, 5, 6, 1, 1, 1, 1, 1, 1, 1,
+ 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 10,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x00034F), RUNE_C(0x00034F)},
- {RUNE_C(0x00061C), RUNE_C(0x00061C)},
- {RUNE_C(0x00115F), RUNE_C(0x001160)},
- {RUNE_C(0x0017B4), RUNE_C(0x0017B5)},
- {RUNE_C(0x00180B), RUNE_C(0x00180F)},
- {RUNE_C(0x00200B), RUNE_C(0x00200F)},
- {RUNE_C(0x00202A), RUNE_C(0x00202E)},
- {RUNE_C(0x002060), RUNE_C(0x00206F)},
- {RUNE_C(0x003164), RUNE_C(0x003164)},
- {RUNE_C(0x00FE00), RUNE_C(0x00FE0F)},
- {RUNE_C(0x00FEFF), RUNE_C(0x00FEFF)},
- {RUNE_C(0x00FFA0), RUNE_C(0x00FFA0)},
- {RUNE_C(0x00FFF0), RUNE_C(0x00FFF8)},
- {RUNE_C(0x01BCA0), RUNE_C(0x01BCA3)},
- {RUNE_C(0x01D173), RUNE_C(0x01D17A)},
- {RUNE_C(0x0E0000), RUNE_C(0x0E0FFF)},
+static constexpr unsigned char stage2[][32] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0xF8, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x01},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_di(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 256]], ch % 256);
}
diff --git a/lib/unicode/prop/uprop_is_dia.c b/lib/unicode/prop/uprop_is_dia.c
index f900d3e..9890abe 100644
--- a/lib/unicode/prop/uprop_is_dia.c
+++ b/lib/unicode/prop/uprop_is_dia.c
@@ -1,217 +1,754 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x90, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 2, 2, 2, 3, 4, 5, 2, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 16, 17, 18, 19, 16, 16, 20, 21, 22, 23, 24, 25,
+ 26, 27, 2, 2, 2, 2, 28, 2, 2, 2, 2, 2, 2, 2, 29, 30,
+ 2, 2, 31, 2, 32, 33, 34, 35, 36, 37, 38, 39, 2, 2, 2, 40,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 41, 2, 2, 42, 2, 2, 2,
+ 43, 44, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 45, 46, 47, 48,
+ 2, 49, 50, 51, 52, 53, 54, 55, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 56, 2, 2, 2, 2, 2, 57, 2, 58, 59,
+ 2, 2, 2, 2, 2, 60, 2, 2, 2, 2, 2, 2, 2, 2, 2, 61,
+ 2, 2, 2, 2, 2, 62, 2, 2, 2, 2, 63, 2, 2, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 2, 74, 75, 2, 76, 77, 78, 79, 2,
+ 68, 2, 80, 60, 81, 82, 2, 2, 77, 2, 83, 84, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 85, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 86, 87, 2, 2, 2, 2, 2, 2, 2, 2, 88,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 89,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 90, 2,
+ 2, 2, 91, 92, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 93, 2, 87, 2, 2, 94, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 95, 96, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x0002B0), RUNE_C(0x00034E)},
- {RUNE_C(0x000350), RUNE_C(0x000357)},
- {RUNE_C(0x00035D), RUNE_C(0x000362)},
- {RUNE_C(0x000374), RUNE_C(0x000375)},
- {RUNE_C(0x00037A), RUNE_C(0x00037A)},
- {RUNE_C(0x000384), RUNE_C(0x000385)},
- {RUNE_C(0x000483), RUNE_C(0x000487)},
- {RUNE_C(0x000559), RUNE_C(0x000559)},
- {RUNE_C(0x000591), RUNE_C(0x0005A1)},
- {RUNE_C(0x0005A3), RUNE_C(0x0005BD)},
- {RUNE_C(0x0005BF), RUNE_C(0x0005BF)},
- {RUNE_C(0x0005C1), RUNE_C(0x0005C2)},
- {RUNE_C(0x0005C4), RUNE_C(0x0005C4)},
- {RUNE_C(0x00064B), RUNE_C(0x000652)},
- {RUNE_C(0x000657), RUNE_C(0x000658)},
- {RUNE_C(0x0006DF), RUNE_C(0x0006E0)},
- {RUNE_C(0x0006E5), RUNE_C(0x0006E6)},
- {RUNE_C(0x0006EA), RUNE_C(0x0006EC)},
- {RUNE_C(0x000730), RUNE_C(0x00074A)},
- {RUNE_C(0x0007A6), RUNE_C(0x0007B0)},
- {RUNE_C(0x0007EB), RUNE_C(0x0007F5)},
- {RUNE_C(0x000818), RUNE_C(0x000819)},
- {RUNE_C(0x000898), RUNE_C(0x00089F)},
- {RUNE_C(0x0008C9), RUNE_C(0x0008D2)},
- {RUNE_C(0x0008E3), RUNE_C(0x0008FE)},
- {RUNE_C(0x00093C), RUNE_C(0x00093C)},
- {RUNE_C(0x00094D), RUNE_C(0x00094D)},
- {RUNE_C(0x000951), RUNE_C(0x000954)},
- {RUNE_C(0x000971), RUNE_C(0x000971)},
- {RUNE_C(0x0009BC), RUNE_C(0x0009BC)},
- {RUNE_C(0x0009CD), RUNE_C(0x0009CD)},
- {RUNE_C(0x000A3C), RUNE_C(0x000A3C)},
- {RUNE_C(0x000A4D), RUNE_C(0x000A4D)},
- {RUNE_C(0x000ABC), RUNE_C(0x000ABC)},
- {RUNE_C(0x000ACD), RUNE_C(0x000ACD)},
- {RUNE_C(0x000AFD), RUNE_C(0x000AFF)},
- {RUNE_C(0x000B3C), RUNE_C(0x000B3C)},
- {RUNE_C(0x000B4D), RUNE_C(0x000B4D)},
- {RUNE_C(0x000B55), RUNE_C(0x000B55)},
- {RUNE_C(0x000BCD), RUNE_C(0x000BCD)},
- {RUNE_C(0x000C3C), RUNE_C(0x000C3C)},
- {RUNE_C(0x000C4D), RUNE_C(0x000C4D)},
- {RUNE_C(0x000CBC), RUNE_C(0x000CBC)},
- {RUNE_C(0x000CCD), RUNE_C(0x000CCD)},
- {RUNE_C(0x000D3B), RUNE_C(0x000D3C)},
- {RUNE_C(0x000D4D), RUNE_C(0x000D4D)},
- {RUNE_C(0x000DCA), RUNE_C(0x000DCA)},
- {RUNE_C(0x000E47), RUNE_C(0x000E4C)},
- {RUNE_C(0x000E4E), RUNE_C(0x000E4E)},
- {RUNE_C(0x000EBA), RUNE_C(0x000EBA)},
- {RUNE_C(0x000EC8), RUNE_C(0x000ECC)},
- {RUNE_C(0x000F18), RUNE_C(0x000F19)},
- {RUNE_C(0x000F35), RUNE_C(0x000F35)},
- {RUNE_C(0x000F37), RUNE_C(0x000F37)},
- {RUNE_C(0x000F39), RUNE_C(0x000F39)},
- {RUNE_C(0x000F3E), RUNE_C(0x000F3F)},
- {RUNE_C(0x000F82), RUNE_C(0x000F84)},
- {RUNE_C(0x000F86), RUNE_C(0x000F87)},
- {RUNE_C(0x000FC6), RUNE_C(0x000FC6)},
- {RUNE_C(0x001037), RUNE_C(0x001037)},
- {RUNE_C(0x001039), RUNE_C(0x00103A)},
- {RUNE_C(0x001063), RUNE_C(0x001064)},
- {RUNE_C(0x001069), RUNE_C(0x00106D)},
- {RUNE_C(0x001087), RUNE_C(0x00108D)},
- {RUNE_C(0x00108F), RUNE_C(0x00108F)},
- {RUNE_C(0x00109A), RUNE_C(0x00109B)},
- {RUNE_C(0x00135D), RUNE_C(0x00135F)},
- {RUNE_C(0x001714), RUNE_C(0x001715)},
- {RUNE_C(0x0017C9), RUNE_C(0x0017D3)},
- {RUNE_C(0x0017DD), RUNE_C(0x0017DD)},
- {RUNE_C(0x001939), RUNE_C(0x00193B)},
- {RUNE_C(0x001A75), RUNE_C(0x001A7C)},
- {RUNE_C(0x001A7F), RUNE_C(0x001A7F)},
- {RUNE_C(0x001AB0), RUNE_C(0x001ABE)},
- {RUNE_C(0x001AC1), RUNE_C(0x001ACB)},
- {RUNE_C(0x001B34), RUNE_C(0x001B34)},
- {RUNE_C(0x001B44), RUNE_C(0x001B44)},
- {RUNE_C(0x001B6B), RUNE_C(0x001B73)},
- {RUNE_C(0x001BAA), RUNE_C(0x001BAB)},
- {RUNE_C(0x001C36), RUNE_C(0x001C37)},
- {RUNE_C(0x001C78), RUNE_C(0x001C7D)},
- {RUNE_C(0x001CD0), RUNE_C(0x001CE8)},
- {RUNE_C(0x001CED), RUNE_C(0x001CED)},
- {RUNE_C(0x001CF4), RUNE_C(0x001CF4)},
- {RUNE_C(0x001CF7), RUNE_C(0x001CF9)},
- {RUNE_C(0x001D2C), RUNE_C(0x001D6A)},
- {RUNE_C(0x001DC4), RUNE_C(0x001DCF)},
- {RUNE_C(0x001DF5), RUNE_C(0x001DFF)},
- {RUNE_C(0x001FBD), RUNE_C(0x001FBD)},
- {RUNE_C(0x001FBF), RUNE_C(0x001FC1)},
- {RUNE_C(0x001FCD), RUNE_C(0x001FCF)},
- {RUNE_C(0x001FDD), RUNE_C(0x001FDF)},
- {RUNE_C(0x001FED), RUNE_C(0x001FEF)},
- {RUNE_C(0x001FFD), RUNE_C(0x001FFE)},
- {RUNE_C(0x002CEF), RUNE_C(0x002CF1)},
- {RUNE_C(0x002E2F), RUNE_C(0x002E2F)},
- {RUNE_C(0x00302A), RUNE_C(0x00302F)},
- {RUNE_C(0x003099), RUNE_C(0x00309C)},
- {RUNE_C(0x0030FC), RUNE_C(0x0030FC)},
- {RUNE_C(0x00A66F), RUNE_C(0x00A66F)},
- {RUNE_C(0x00A67C), RUNE_C(0x00A67D)},
- {RUNE_C(0x00A67F), RUNE_C(0x00A67F)},
- {RUNE_C(0x00A69C), RUNE_C(0x00A69D)},
- {RUNE_C(0x00A6F0), RUNE_C(0x00A6F1)},
- {RUNE_C(0x00A700), RUNE_C(0x00A721)},
- {RUNE_C(0x00A788), RUNE_C(0x00A78A)},
- {RUNE_C(0x00A7F8), RUNE_C(0x00A7F9)},
- {RUNE_C(0x00A8C4), RUNE_C(0x00A8C4)},
- {RUNE_C(0x00A8E0), RUNE_C(0x00A8F1)},
- {RUNE_C(0x00A92B), RUNE_C(0x00A92E)},
- {RUNE_C(0x00A953), RUNE_C(0x00A953)},
- {RUNE_C(0x00A9B3), RUNE_C(0x00A9B3)},
- {RUNE_C(0x00A9C0), RUNE_C(0x00A9C0)},
- {RUNE_C(0x00A9E5), RUNE_C(0x00A9E5)},
- {RUNE_C(0x00AA7B), RUNE_C(0x00AA7D)},
- {RUNE_C(0x00AABF), RUNE_C(0x00AAC2)},
- {RUNE_C(0x00AAF6), RUNE_C(0x00AAF6)},
- {RUNE_C(0x00AB5B), RUNE_C(0x00AB5F)},
- {RUNE_C(0x00AB69), RUNE_C(0x00AB6B)},
- {RUNE_C(0x00ABEC), RUNE_C(0x00ABED)},
- {RUNE_C(0x00FB1E), RUNE_C(0x00FB1E)},
- {RUNE_C(0x00FE20), RUNE_C(0x00FE2F)},
- {RUNE_C(0x00FF3E), RUNE_C(0x00FF3E)},
- {RUNE_C(0x00FF40), RUNE_C(0x00FF40)},
- {RUNE_C(0x00FF70), RUNE_C(0x00FF70)},
- {RUNE_C(0x00FF9E), RUNE_C(0x00FF9F)},
- {RUNE_C(0x00FFE3), RUNE_C(0x00FFE3)},
- {RUNE_C(0x0102E0), RUNE_C(0x0102E0)},
- {RUNE_C(0x010780), RUNE_C(0x010785)},
- {RUNE_C(0x010787), RUNE_C(0x0107B0)},
- {RUNE_C(0x0107B2), RUNE_C(0x0107BA)},
- {RUNE_C(0x010AE5), RUNE_C(0x010AE6)},
- {RUNE_C(0x010D22), RUNE_C(0x010D27)},
- {RUNE_C(0x010EFD), RUNE_C(0x010EFF)},
- {RUNE_C(0x010F46), RUNE_C(0x010F50)},
- {RUNE_C(0x010F82), RUNE_C(0x010F85)},
- {RUNE_C(0x011046), RUNE_C(0x011046)},
- {RUNE_C(0x011070), RUNE_C(0x011070)},
- {RUNE_C(0x0110B9), RUNE_C(0x0110BA)},
- {RUNE_C(0x011133), RUNE_C(0x011134)},
- {RUNE_C(0x011173), RUNE_C(0x011173)},
- {RUNE_C(0x0111C0), RUNE_C(0x0111C0)},
- {RUNE_C(0x0111CA), RUNE_C(0x0111CC)},
- {RUNE_C(0x011235), RUNE_C(0x011236)},
- {RUNE_C(0x0112E9), RUNE_C(0x0112EA)},
- {RUNE_C(0x01133C), RUNE_C(0x01133C)},
- {RUNE_C(0x01134D), RUNE_C(0x01134D)},
- {RUNE_C(0x011366), RUNE_C(0x01136C)},
- {RUNE_C(0x011370), RUNE_C(0x011374)},
- {RUNE_C(0x011442), RUNE_C(0x011442)},
- {RUNE_C(0x011446), RUNE_C(0x011446)},
- {RUNE_C(0x0114C2), RUNE_C(0x0114C3)},
- {RUNE_C(0x0115BF), RUNE_C(0x0115C0)},
- {RUNE_C(0x01163F), RUNE_C(0x01163F)},
- {RUNE_C(0x0116B6), RUNE_C(0x0116B7)},
- {RUNE_C(0x01172B), RUNE_C(0x01172B)},
- {RUNE_C(0x011839), RUNE_C(0x01183A)},
- {RUNE_C(0x01193D), RUNE_C(0x01193E)},
- {RUNE_C(0x011943), RUNE_C(0x011943)},
- {RUNE_C(0x0119E0), RUNE_C(0x0119E0)},
- {RUNE_C(0x011A34), RUNE_C(0x011A34)},
- {RUNE_C(0x011A47), RUNE_C(0x011A47)},
- {RUNE_C(0x011A99), RUNE_C(0x011A99)},
- {RUNE_C(0x011C3F), RUNE_C(0x011C3F)},
- {RUNE_C(0x011D42), RUNE_C(0x011D42)},
- {RUNE_C(0x011D44), RUNE_C(0x011D45)},
- {RUNE_C(0x011D97), RUNE_C(0x011D97)},
- {RUNE_C(0x013447), RUNE_C(0x013455)},
- {RUNE_C(0x016AF0), RUNE_C(0x016AF4)},
- {RUNE_C(0x016B30), RUNE_C(0x016B36)},
- {RUNE_C(0x016F8F), RUNE_C(0x016F9F)},
- {RUNE_C(0x016FF0), RUNE_C(0x016FF1)},
- {RUNE_C(0x01AFF0), RUNE_C(0x01AFF3)},
- {RUNE_C(0x01AFF5), RUNE_C(0x01AFFB)},
- {RUNE_C(0x01AFFD), RUNE_C(0x01AFFE)},
- {RUNE_C(0x01CF00), RUNE_C(0x01CF2D)},
- {RUNE_C(0x01CF30), RUNE_C(0x01CF46)},
- {RUNE_C(0x01D167), RUNE_C(0x01D169)},
- {RUNE_C(0x01D16D), RUNE_C(0x01D172)},
- {RUNE_C(0x01D17B), RUNE_C(0x01D182)},
- {RUNE_C(0x01D185), RUNE_C(0x01D18B)},
- {RUNE_C(0x01D1AA), RUNE_C(0x01D1AD)},
- {RUNE_C(0x01E030), RUNE_C(0x01E06D)},
- {RUNE_C(0x01E130), RUNE_C(0x01E136)},
- {RUNE_C(0x01E2AE), RUNE_C(0x01E2AE)},
- {RUNE_C(0x01E2EC), RUNE_C(0x01E2EF)},
- {RUNE_C(0x01E8D0), RUNE_C(0x01E8D6)},
- {RUNE_C(0x01E944), RUNE_C(0x01E946)},
- {RUNE_C(0x01E948), RUNE_C(0x01E94A)},
+static constexpr unsigned char stage2[][16] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x90, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x7F, 0xFF, 0xE0, 0x07, 0x00, 0x30, 0x04},
+ {0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xFE, 0xFF, 0xFB, 0xFF, 0xFF, 0xBF,
+ 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xF8, 0x87, 0x01, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x61, 0x1C, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x00},
+ {0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xFE, 0x07, 0x00, 0xF8, 0xFF, 0xFF, 0x7F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+ 0x00, 0x20, 0x1E, 0x00, 0x00, 0x00, 0x02, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+ 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+ 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+ 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+ 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
+ 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xA0, 0xC2,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06,
+ 0x00, 0x00, 0x00, 0x00, 0x18, 0x3E, 0x00, 0x00},
+ {0x80, 0xBF, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xFE, 0x0F, 0x20, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x9F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F,
+ 0xFE, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x0F, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x21, 0x90, 0x03},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xF0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0,
+ 0x03, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0x60},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xB0},
+ {0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00,
+ 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xF8, 0x00, 0x0E, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00},
+ {0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00},
+ {0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xC0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+ 0x00, 0x20, 0x00, 0x00, 0xC0, 0x1F, 0x1F, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x6F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0xE3, 0x07, 0xF8},
+ {0xE7, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_dia(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 128]], ch % 128);
}
diff --git a/lib/unicode/prop/uprop_is_ebase.c b/lib/unicode/prop/uprop_is_ebase.c
index 912671a..14b91fe 100644
--- a/lib/unicode/prop/uprop_is_ebase.c
+++ b/lib/unicode/prop/uprop_is_ebase.c
@@ -1,61 +1,208 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x00261D), RUNE_C(0x00261D)},
- {RUNE_C(0x0026F9), RUNE_C(0x0026F9)},
- {RUNE_C(0x00270A), RUNE_C(0x00270D)},
- {RUNE_C(0x01F385), RUNE_C(0x01F385)},
- {RUNE_C(0x01F3C2), RUNE_C(0x01F3C4)},
- {RUNE_C(0x01F3C7), RUNE_C(0x01F3C7)},
- {RUNE_C(0x01F3CA), RUNE_C(0x01F3CC)},
- {RUNE_C(0x01F442), RUNE_C(0x01F443)},
- {RUNE_C(0x01F446), RUNE_C(0x01F450)},
- {RUNE_C(0x01F466), RUNE_C(0x01F478)},
- {RUNE_C(0x01F47C), RUNE_C(0x01F47C)},
- {RUNE_C(0x01F481), RUNE_C(0x01F483)},
- {RUNE_C(0x01F485), RUNE_C(0x01F487)},
- {RUNE_C(0x01F48F), RUNE_C(0x01F48F)},
- {RUNE_C(0x01F491), RUNE_C(0x01F491)},
- {RUNE_C(0x01F4AA), RUNE_C(0x01F4AA)},
- {RUNE_C(0x01F574), RUNE_C(0x01F575)},
- {RUNE_C(0x01F57A), RUNE_C(0x01F57A)},
- {RUNE_C(0x01F590), RUNE_C(0x01F590)},
- {RUNE_C(0x01F595), RUNE_C(0x01F596)},
- {RUNE_C(0x01F645), RUNE_C(0x01F647)},
- {RUNE_C(0x01F64B), RUNE_C(0x01F64F)},
- {RUNE_C(0x01F6A3), RUNE_C(0x01F6A3)},
- {RUNE_C(0x01F6B4), RUNE_C(0x01F6B6)},
- {RUNE_C(0x01F6C0), RUNE_C(0x01F6C0)},
- {RUNE_C(0x01F6CC), RUNE_C(0x01F6CC)},
- {RUNE_C(0x01F90C), RUNE_C(0x01F90C)},
- {RUNE_C(0x01F90F), RUNE_C(0x01F90F)},
- {RUNE_C(0x01F918), RUNE_C(0x01F91F)},
- {RUNE_C(0x01F926), RUNE_C(0x01F926)},
- {RUNE_C(0x01F930), RUNE_C(0x01F939)},
- {RUNE_C(0x01F93C), RUNE_C(0x01F93E)},
- {RUNE_C(0x01F977), RUNE_C(0x01F977)},
- {RUNE_C(0x01F9B5), RUNE_C(0x01F9B6)},
- {RUNE_C(0x01F9B8), RUNE_C(0x01F9B9)},
- {RUNE_C(0x01F9BB), RUNE_C(0x01F9BB)},
- {RUNE_C(0x01F9CD), RUNE_C(0x01F9CF)},
- {RUNE_C(0x01F9D1), RUNE_C(0x01F9DD)},
- {RUNE_C(0x01FAC3), RUNE_C(0x01FAC5)},
- {RUNE_C(0x01FAF0), RUNE_C(0x01FAF8)},
+static constexpr uint8_t stage1[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
+static constexpr unsigned char stage2[][64] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x9C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xCC, 0xFF, 0x01, 0x00, 0xC0, 0xFF, 0xFF, 0x11,
+ 0xEE, 0x80, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x04,
+ 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xE0, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x70, 0x00,
+ 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x90, 0x00, 0xFF, 0x40, 0x00, 0xFF, 0x73,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0B,
+ 0x00, 0xE0, 0xFE, 0x3F, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+};
bool
uprop_is_ebase(rune ch)
{
- return mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 512]], ch % 512);
}
diff --git a/lib/unicode/prop/uprop_is_ecomp.c b/lib/unicode/prop/uprop_is_ecomp.c
index b4e5a5a..414b0a4 100644
--- a/lib/unicode/prop/uprop_is_ecomp.c
+++ b/lib/unicode/prop/uprop_is_ecomp.c
@@ -1,35 +1,216 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0xFF, 0x03,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 4, 5, 1, 1, 6, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x00200D), RUNE_C(0x00200D)},
- {RUNE_C(0x0020E3), RUNE_C(0x0020E3)},
- {RUNE_C(0x00FE0F), RUNE_C(0x00FE0F)},
- {RUNE_C(0x01F1E6), RUNE_C(0x01F1FF)},
- {RUNE_C(0x01F3FB), RUNE_C(0x01F3FF)},
- {RUNE_C(0x01F9B0), RUNE_C(0x01F9B3)},
- {RUNE_C(0x0E0020), RUNE_C(0x0E007F)},
+static constexpr unsigned char stage2[][64] = {
+ {0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0xFF, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_ecomp(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 512]], ch % 512);
}
diff --git a/lib/unicode/prop/uprop_is_emod.c b/lib/unicode/prop/uprop_is_emod.c
index 7b50fc8..81a7d55 100644
--- a/lib/unicode/prop/uprop_is_emod.c
+++ b/lib/unicode/prop/uprop_is_emod.c
@@ -1,22 +1,208 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x01F3FB), RUNE_C(0x01F3FF)},
+static constexpr uint8_t stage1[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 6, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
+static constexpr unsigned char stage2[][64] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x9C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xCC, 0xFF, 0x01, 0x00, 0xC0, 0xFF, 0xFF, 0x11,
+ 0xEE, 0x80, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x04,
+ 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xE0, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x70, 0x00,
+ 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x90, 0x00, 0xFF, 0x40, 0x00, 0xFF, 0x73,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0B,
+ 0x00, 0xE0, 0xFE, 0x3F, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+};
bool
uprop_is_emod(rune ch)
{
- return mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 512]], ch % 512);
}
diff --git a/lib/unicode/prop/uprop_is_emoji.c b/lib/unicode/prop/uprop_is_emoji.c
index 42aed21..d0f38d9 100644
--- a/lib/unicode/prop/uprop_is_emoji.c
+++ b/lib/unicode/prop/uprop_is_emoji.c
@@ -1,174 +1,388 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0xFF, 0x03,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 3, 1, 4, 5, 6, 7, 8, 1, 9, 1, 10, 1, 1, 1, 1,
+ 11, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 14, 15, 16, 17, 18, 19, 20, 21, 1, 22, 23, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x00203C), RUNE_C(0x00203C)},
- {RUNE_C(0x002049), RUNE_C(0x002049)},
- {RUNE_C(0x002122), RUNE_C(0x002122)},
- {RUNE_C(0x002139), RUNE_C(0x002139)},
- {RUNE_C(0x002194), RUNE_C(0x002199)},
- {RUNE_C(0x0021A9), RUNE_C(0x0021AA)},
- {RUNE_C(0x00231A), RUNE_C(0x00231B)},
- {RUNE_C(0x002328), RUNE_C(0x002328)},
- {RUNE_C(0x0023CF), RUNE_C(0x0023CF)},
- {RUNE_C(0x0023E9), RUNE_C(0x0023F3)},
- {RUNE_C(0x0023F8), RUNE_C(0x0023FA)},
- {RUNE_C(0x0024C2), RUNE_C(0x0024C2)},
- {RUNE_C(0x0025AA), RUNE_C(0x0025AB)},
- {RUNE_C(0x0025B6), RUNE_C(0x0025B6)},
- {RUNE_C(0x0025C0), RUNE_C(0x0025C0)},
- {RUNE_C(0x0025FB), RUNE_C(0x0025FE)},
- {RUNE_C(0x002600), RUNE_C(0x002604)},
- {RUNE_C(0x00260E), RUNE_C(0x00260E)},
- {RUNE_C(0x002611), RUNE_C(0x002611)},
- {RUNE_C(0x002614), RUNE_C(0x002615)},
- {RUNE_C(0x002618), RUNE_C(0x002618)},
- {RUNE_C(0x00261D), RUNE_C(0x00261D)},
- {RUNE_C(0x002620), RUNE_C(0x002620)},
- {RUNE_C(0x002622), RUNE_C(0x002623)},
- {RUNE_C(0x002626), RUNE_C(0x002626)},
- {RUNE_C(0x00262A), RUNE_C(0x00262A)},
- {RUNE_C(0x00262E), RUNE_C(0x00262F)},
- {RUNE_C(0x002638), RUNE_C(0x00263A)},
- {RUNE_C(0x002640), RUNE_C(0x002640)},
- {RUNE_C(0x002642), RUNE_C(0x002642)},
- {RUNE_C(0x002648), RUNE_C(0x002653)},
- {RUNE_C(0x00265F), RUNE_C(0x002660)},
- {RUNE_C(0x002663), RUNE_C(0x002663)},
- {RUNE_C(0x002665), RUNE_C(0x002666)},
- {RUNE_C(0x002668), RUNE_C(0x002668)},
- {RUNE_C(0x00267B), RUNE_C(0x00267B)},
- {RUNE_C(0x00267E), RUNE_C(0x00267F)},
- {RUNE_C(0x002692), RUNE_C(0x002697)},
- {RUNE_C(0x002699), RUNE_C(0x002699)},
- {RUNE_C(0x00269B), RUNE_C(0x00269C)},
- {RUNE_C(0x0026A0), RUNE_C(0x0026A1)},
- {RUNE_C(0x0026A7), RUNE_C(0x0026A7)},
- {RUNE_C(0x0026AA), RUNE_C(0x0026AB)},
- {RUNE_C(0x0026B0), RUNE_C(0x0026B1)},
- {RUNE_C(0x0026BD), RUNE_C(0x0026BE)},
- {RUNE_C(0x0026C4), RUNE_C(0x0026C5)},
- {RUNE_C(0x0026C8), RUNE_C(0x0026C8)},
- {RUNE_C(0x0026CE), RUNE_C(0x0026CF)},
- {RUNE_C(0x0026D1), RUNE_C(0x0026D1)},
- {RUNE_C(0x0026D3), RUNE_C(0x0026D4)},
- {RUNE_C(0x0026E9), RUNE_C(0x0026EA)},
- {RUNE_C(0x0026F0), RUNE_C(0x0026F5)},
- {RUNE_C(0x0026F7), RUNE_C(0x0026FA)},
- {RUNE_C(0x0026FD), RUNE_C(0x0026FD)},
- {RUNE_C(0x002702), RUNE_C(0x002702)},
- {RUNE_C(0x002705), RUNE_C(0x002705)},
- {RUNE_C(0x002708), RUNE_C(0x00270D)},
- {RUNE_C(0x00270F), RUNE_C(0x00270F)},
- {RUNE_C(0x002712), RUNE_C(0x002712)},
- {RUNE_C(0x002714), RUNE_C(0x002714)},
- {RUNE_C(0x002716), RUNE_C(0x002716)},
- {RUNE_C(0x00271D), RUNE_C(0x00271D)},
- {RUNE_C(0x002721), RUNE_C(0x002721)},
- {RUNE_C(0x002728), RUNE_C(0x002728)},
- {RUNE_C(0x002733), RUNE_C(0x002734)},
- {RUNE_C(0x002744), RUNE_C(0x002744)},
- {RUNE_C(0x002747), RUNE_C(0x002747)},
- {RUNE_C(0x00274C), RUNE_C(0x00274C)},
- {RUNE_C(0x00274E), RUNE_C(0x00274E)},
- {RUNE_C(0x002753), RUNE_C(0x002755)},
- {RUNE_C(0x002757), RUNE_C(0x002757)},
- {RUNE_C(0x002763), RUNE_C(0x002764)},
- {RUNE_C(0x002795), RUNE_C(0x002797)},
- {RUNE_C(0x0027A1), RUNE_C(0x0027A1)},
- {RUNE_C(0x0027B0), RUNE_C(0x0027B0)},
- {RUNE_C(0x0027BF), RUNE_C(0x0027BF)},
- {RUNE_C(0x002934), RUNE_C(0x002935)},
- {RUNE_C(0x002B05), RUNE_C(0x002B07)},
- {RUNE_C(0x002B1B), RUNE_C(0x002B1C)},
- {RUNE_C(0x002B50), RUNE_C(0x002B50)},
- {RUNE_C(0x002B55), RUNE_C(0x002B55)},
- {RUNE_C(0x003030), RUNE_C(0x003030)},
- {RUNE_C(0x00303D), RUNE_C(0x00303D)},
- {RUNE_C(0x003297), RUNE_C(0x003297)},
- {RUNE_C(0x003299), RUNE_C(0x003299)},
- {RUNE_C(0x01F004), RUNE_C(0x01F004)},
- {RUNE_C(0x01F0CF), RUNE_C(0x01F0CF)},
- {RUNE_C(0x01F170), RUNE_C(0x01F171)},
- {RUNE_C(0x01F17E), RUNE_C(0x01F17F)},
- {RUNE_C(0x01F18E), RUNE_C(0x01F18E)},
- {RUNE_C(0x01F191), RUNE_C(0x01F19A)},
- {RUNE_C(0x01F1E6), RUNE_C(0x01F1FF)},
- {RUNE_C(0x01F201), RUNE_C(0x01F202)},
- {RUNE_C(0x01F21A), RUNE_C(0x01F21A)},
- {RUNE_C(0x01F22F), RUNE_C(0x01F22F)},
- {RUNE_C(0x01F232), RUNE_C(0x01F23A)},
- {RUNE_C(0x01F250), RUNE_C(0x01F251)},
- {RUNE_C(0x01F300), RUNE_C(0x01F321)},
- {RUNE_C(0x01F324), RUNE_C(0x01F393)},
- {RUNE_C(0x01F396), RUNE_C(0x01F397)},
- {RUNE_C(0x01F399), RUNE_C(0x01F39B)},
- {RUNE_C(0x01F39E), RUNE_C(0x01F3F0)},
- {RUNE_C(0x01F3F3), RUNE_C(0x01F3F5)},
- {RUNE_C(0x01F3F7), RUNE_C(0x01F4FD)},
- {RUNE_C(0x01F4FF), RUNE_C(0x01F53D)},
- {RUNE_C(0x01F549), RUNE_C(0x01F54E)},
- {RUNE_C(0x01F550), RUNE_C(0x01F567)},
- {RUNE_C(0x01F56F), RUNE_C(0x01F570)},
- {RUNE_C(0x01F573), RUNE_C(0x01F57A)},
- {RUNE_C(0x01F587), RUNE_C(0x01F587)},
- {RUNE_C(0x01F58A), RUNE_C(0x01F58D)},
- {RUNE_C(0x01F590), RUNE_C(0x01F590)},
- {RUNE_C(0x01F595), RUNE_C(0x01F596)},
- {RUNE_C(0x01F5A4), RUNE_C(0x01F5A5)},
- {RUNE_C(0x01F5A8), RUNE_C(0x01F5A8)},
- {RUNE_C(0x01F5B1), RUNE_C(0x01F5B2)},
- {RUNE_C(0x01F5BC), RUNE_C(0x01F5BC)},
- {RUNE_C(0x01F5C2), RUNE_C(0x01F5C4)},
- {RUNE_C(0x01F5D1), RUNE_C(0x01F5D3)},
- {RUNE_C(0x01F5DC), RUNE_C(0x01F5DE)},
- {RUNE_C(0x01F5E1), RUNE_C(0x01F5E1)},
- {RUNE_C(0x01F5E3), RUNE_C(0x01F5E3)},
- {RUNE_C(0x01F5E8), RUNE_C(0x01F5E8)},
- {RUNE_C(0x01F5EF), RUNE_C(0x01F5EF)},
- {RUNE_C(0x01F5F3), RUNE_C(0x01F5F3)},
- {RUNE_C(0x01F5FA), RUNE_C(0x01F64F)},
- {RUNE_C(0x01F680), RUNE_C(0x01F6C5)},
- {RUNE_C(0x01F6CB), RUNE_C(0x01F6D2)},
- {RUNE_C(0x01F6D5), RUNE_C(0x01F6D7)},
- {RUNE_C(0x01F6DC), RUNE_C(0x01F6E5)},
- {RUNE_C(0x01F6E9), RUNE_C(0x01F6E9)},
- {RUNE_C(0x01F6EB), RUNE_C(0x01F6EC)},
- {RUNE_C(0x01F6F0), RUNE_C(0x01F6F0)},
- {RUNE_C(0x01F6F3), RUNE_C(0x01F6FC)},
- {RUNE_C(0x01F7E0), RUNE_C(0x01F7EB)},
- {RUNE_C(0x01F7F0), RUNE_C(0x01F7F0)},
- {RUNE_C(0x01F90C), RUNE_C(0x01F93A)},
- {RUNE_C(0x01F93C), RUNE_C(0x01F945)},
- {RUNE_C(0x01F947), RUNE_C(0x01F9FF)},
- {RUNE_C(0x01FA70), RUNE_C(0x01FA7C)},
- {RUNE_C(0x01FA80), RUNE_C(0x01FA88)},
- {RUNE_C(0x01FA90), RUNE_C(0x01FABD)},
- {RUNE_C(0x01FABF), RUNE_C(0x01FAC5)},
- {RUNE_C(0x01FACE), RUNE_C(0x01FADB)},
- {RUNE_C(0x01FAE0), RUNE_C(0x01FAE8)},
- {RUNE_C(0x01FAF0), RUNE_C(0x01FAF8)},
+static constexpr unsigned char stage2[][32] = {
+ {0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0xFF, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+ 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xF0, 0x03, 0x00, 0x06, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x0C, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x07},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x40, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78},
+ {0x1F, 0x40, 0x32, 0x21, 0x4D, 0xC4, 0x00, 0x07,
+ 0x05, 0xFF, 0x0F, 0x80, 0x69, 0x01, 0x00, 0xC8,
+ 0x00, 0x00, 0xFC, 0x1A, 0x83, 0x0C, 0x03, 0x60,
+ 0x30, 0xC1, 0x1A, 0x00, 0x00, 0x06, 0xBF, 0x27},
+ {0x24, 0xBF, 0x54, 0x20, 0x02, 0x01, 0x18, 0x00,
+ 0x90, 0x50, 0xB8, 0x00, 0x18, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xE0, 0x00, 0x02, 0x00, 0x01, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xE0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC0,
+ 0x00, 0x40, 0xFE, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF},
+ {0x06, 0x00, 0x00, 0x04, 0x00, 0x80, 0xFC, 0x07,
+ 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xCF, 0xCE, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
+ 0x00, 0x7E, 0xFF, 0xFF, 0xFF, 0x80, 0xF9, 0x07,
+ 0x80, 0x3C, 0x61, 0x00, 0x30, 0x01, 0x06, 0x10,
+ 0x1C, 0x00, 0x0E, 0x70, 0x0A, 0x81, 0x08, 0xFC},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x3F, 0xF8, 0xE7, 0xF0, 0x3F, 0x1A, 0xF9, 0x1F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x01, 0x00},
+ {0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7,
+ 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F,
+ 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF,
+ 0x3F, 0xC0, 0xFF, 0x0F, 0xFF, 0x01, 0xFF, 0x01},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_emoji(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 256]], ch % 256);
}
diff --git a/lib/unicode/prop/uprop_is_epres.c b/lib/unicode/prop/uprop_is_epres.c
index cfd4b4b..eff079f 100644
--- a/lib/unicode/prop/uprop_is_epres.c
+++ b/lib/unicode/prop/uprop_is_epres.c
@@ -1,102 +1,240 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x00231A), RUNE_C(0x00231B)},
- {RUNE_C(0x0023E9), RUNE_C(0x0023EC)},
- {RUNE_C(0x0023F0), RUNE_C(0x0023F0)},
- {RUNE_C(0x0023F3), RUNE_C(0x0023F3)},
- {RUNE_C(0x0025FD), RUNE_C(0x0025FE)},
- {RUNE_C(0x002614), RUNE_C(0x002615)},
- {RUNE_C(0x002648), RUNE_C(0x002653)},
- {RUNE_C(0x00267F), RUNE_C(0x00267F)},
- {RUNE_C(0x002693), RUNE_C(0x002693)},
- {RUNE_C(0x0026A1), RUNE_C(0x0026A1)},
- {RUNE_C(0x0026AA), RUNE_C(0x0026AB)},
- {RUNE_C(0x0026BD), RUNE_C(0x0026BE)},
- {RUNE_C(0x0026C4), RUNE_C(0x0026C5)},
- {RUNE_C(0x0026CE), RUNE_C(0x0026CE)},
- {RUNE_C(0x0026D4), RUNE_C(0x0026D4)},
- {RUNE_C(0x0026EA), RUNE_C(0x0026EA)},
- {RUNE_C(0x0026F2), RUNE_C(0x0026F3)},
- {RUNE_C(0x0026F5), RUNE_C(0x0026F5)},
- {RUNE_C(0x0026FA), RUNE_C(0x0026FA)},
- {RUNE_C(0x0026FD), RUNE_C(0x0026FD)},
- {RUNE_C(0x002705), RUNE_C(0x002705)},
- {RUNE_C(0x00270A), RUNE_C(0x00270B)},
- {RUNE_C(0x002728), RUNE_C(0x002728)},
- {RUNE_C(0x00274C), RUNE_C(0x00274C)},
- {RUNE_C(0x00274E), RUNE_C(0x00274E)},
- {RUNE_C(0x002753), RUNE_C(0x002755)},
- {RUNE_C(0x002757), RUNE_C(0x002757)},
- {RUNE_C(0x002795), RUNE_C(0x002797)},
- {RUNE_C(0x0027B0), RUNE_C(0x0027B0)},
- {RUNE_C(0x0027BF), RUNE_C(0x0027BF)},
- {RUNE_C(0x002B1B), RUNE_C(0x002B1C)},
- {RUNE_C(0x002B50), RUNE_C(0x002B50)},
- {RUNE_C(0x002B55), RUNE_C(0x002B55)},
- {RUNE_C(0x01F004), RUNE_C(0x01F004)},
- {RUNE_C(0x01F0CF), RUNE_C(0x01F0CF)},
- {RUNE_C(0x01F18E), RUNE_C(0x01F18E)},
- {RUNE_C(0x01F191), RUNE_C(0x01F19A)},
- {RUNE_C(0x01F1E6), RUNE_C(0x01F1FF)},
- {RUNE_C(0x01F201), RUNE_C(0x01F201)},
- {RUNE_C(0x01F21A), RUNE_C(0x01F21A)},
- {RUNE_C(0x01F22F), RUNE_C(0x01F22F)},
- {RUNE_C(0x01F232), RUNE_C(0x01F236)},
- {RUNE_C(0x01F238), RUNE_C(0x01F23A)},
- {RUNE_C(0x01F250), RUNE_C(0x01F251)},
- {RUNE_C(0x01F300), RUNE_C(0x01F320)},
- {RUNE_C(0x01F32D), RUNE_C(0x01F335)},
- {RUNE_C(0x01F337), RUNE_C(0x01F37C)},
- {RUNE_C(0x01F37E), RUNE_C(0x01F393)},
- {RUNE_C(0x01F3A0), RUNE_C(0x01F3CA)},
- {RUNE_C(0x01F3CF), RUNE_C(0x01F3D3)},
- {RUNE_C(0x01F3E0), RUNE_C(0x01F3F0)},
- {RUNE_C(0x01F3F4), RUNE_C(0x01F3F4)},
- {RUNE_C(0x01F3F8), RUNE_C(0x01F43E)},
- {RUNE_C(0x01F440), RUNE_C(0x01F440)},
- {RUNE_C(0x01F442), RUNE_C(0x01F4FC)},
- {RUNE_C(0x01F4FF), RUNE_C(0x01F53D)},
- {RUNE_C(0x01F54B), RUNE_C(0x01F54E)},
- {RUNE_C(0x01F550), RUNE_C(0x01F567)},
- {RUNE_C(0x01F57A), RUNE_C(0x01F57A)},
- {RUNE_C(0x01F595), RUNE_C(0x01F596)},
- {RUNE_C(0x01F5A4), RUNE_C(0x01F5A4)},
- {RUNE_C(0x01F5FB), RUNE_C(0x01F64F)},
- {RUNE_C(0x01F680), RUNE_C(0x01F6C5)},
- {RUNE_C(0x01F6CC), RUNE_C(0x01F6CC)},
- {RUNE_C(0x01F6D0), RUNE_C(0x01F6D2)},
- {RUNE_C(0x01F6D5), RUNE_C(0x01F6D7)},
- {RUNE_C(0x01F6DC), RUNE_C(0x01F6DF)},
- {RUNE_C(0x01F6EB), RUNE_C(0x01F6EC)},
- {RUNE_C(0x01F6F4), RUNE_C(0x01F6FC)},
- {RUNE_C(0x01F7E0), RUNE_C(0x01F7EB)},
- {RUNE_C(0x01F7F0), RUNE_C(0x01F7F0)},
- {RUNE_C(0x01F90C), RUNE_C(0x01F93A)},
- {RUNE_C(0x01F93C), RUNE_C(0x01F945)},
- {RUNE_C(0x01F947), RUNE_C(0x01F9FF)},
- {RUNE_C(0x01FA70), RUNE_C(0x01FA7C)},
- {RUNE_C(0x01FA80), RUNE_C(0x01FA88)},
- {RUNE_C(0x01FA90), RUNE_C(0x01FABD)},
- {RUNE_C(0x01FABF), RUNE_C(0x01FAC5)},
- {RUNE_C(0x01FACE), RUNE_C(0x01FADB)},
- {RUNE_C(0x01FAE0), RUNE_C(0x01FAE8)},
- {RUNE_C(0x01FAF0), RUNE_C(0x01FAF8)},
+static constexpr uint8_t stage1[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 2, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 7, 8, 9, 10, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
+static constexpr unsigned char stage2[][64] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x09, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60},
+ {0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x00, 0x00, 0x08, 0x00, 0x02, 0x0C, 0x00, 0x60,
+ 0x30, 0x40, 0x10, 0x00, 0x00, 0x04, 0x2C, 0x24,
+ 0x20, 0x0C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x50, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x01, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0xFE, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF},
+ {0x02, 0x00, 0x00, 0x04, 0x00, 0x80, 0x7C, 0x07,
+ 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0xBF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF,
+ 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x87, 0x0F, 0x00, 0xFF, 0xFF, 0x11, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
+ 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
+ 0x00, 0x78, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x04,
+ 0x00, 0x00, 0x60, 0x00, 0x10, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x3F, 0x10, 0xE7, 0xF0, 0x00, 0x18, 0xF0, 0x1F,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x01, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7,
+ 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F,
+ 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF,
+ 0x3F, 0xC0, 0xFF, 0x0F, 0xFF, 0x01, 0xFF, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+};
bool
uprop_is_epres(rune ch)
{
- return mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 512]], ch % 512);
}
diff --git a/lib/unicode/prop/uprop_is_ext.c b/lib/unicode/prop/uprop_is_ext.c
index b779cb7..c323328 100644
--- a/lib/unicode/prop/uprop_is_ext.c
+++ b/lib/unicode/prop/uprop_is_ext.c
@@ -1,60 +1,384 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 2, 1, 1, 1, 3, 4, 1, 1, 1, 5, 1, 1, 6, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, 8, 1, 9, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 11, 1, 1, 1, 1, 1, 12, 1, 1, 13, 14, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15,
+ 1, 1, 1, 1, 1, 1, 1, 16, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 17, 1, 18, 1, 1, 1, 1, 19, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 1, 1, 1, 21,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 22, 1, 1, 1, 1, 1, 1, 1, 23, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x0002D0), RUNE_C(0x0002D1)},
- {RUNE_C(0x000640), RUNE_C(0x000640)},
- {RUNE_C(0x0007FA), RUNE_C(0x0007FA)},
- {RUNE_C(0x000B55), RUNE_C(0x000B55)},
- {RUNE_C(0x000E46), RUNE_C(0x000E46)},
- {RUNE_C(0x000EC6), RUNE_C(0x000EC6)},
- {RUNE_C(0x00180A), RUNE_C(0x00180A)},
- {RUNE_C(0x001843), RUNE_C(0x001843)},
- {RUNE_C(0x001AA7), RUNE_C(0x001AA7)},
- {RUNE_C(0x001C36), RUNE_C(0x001C36)},
- {RUNE_C(0x001C7B), RUNE_C(0x001C7B)},
- {RUNE_C(0x003005), RUNE_C(0x003005)},
- {RUNE_C(0x003031), RUNE_C(0x003035)},
- {RUNE_C(0x00309D), RUNE_C(0x00309E)},
- {RUNE_C(0x0030FC), RUNE_C(0x0030FE)},
- {RUNE_C(0x00A015), RUNE_C(0x00A015)},
- {RUNE_C(0x00A60C), RUNE_C(0x00A60C)},
- {RUNE_C(0x00A9CF), RUNE_C(0x00A9CF)},
- {RUNE_C(0x00A9E6), RUNE_C(0x00A9E6)},
- {RUNE_C(0x00AA70), RUNE_C(0x00AA70)},
- {RUNE_C(0x00AADD), RUNE_C(0x00AADD)},
- {RUNE_C(0x00AAF3), RUNE_C(0x00AAF4)},
- {RUNE_C(0x00FF70), RUNE_C(0x00FF70)},
- {RUNE_C(0x010781), RUNE_C(0x010782)},
- {RUNE_C(0x01135D), RUNE_C(0x01135D)},
- {RUNE_C(0x0115C6), RUNE_C(0x0115C8)},
- {RUNE_C(0x011A98), RUNE_C(0x011A98)},
- {RUNE_C(0x016B42), RUNE_C(0x016B43)},
- {RUNE_C(0x016FE0), RUNE_C(0x016FE1)},
- {RUNE_C(0x016FE3), RUNE_C(0x016FE3)},
- {RUNE_C(0x01E13C), RUNE_C(0x01E13D)},
- {RUNE_C(0x01E944), RUNE_C(0x01E946)},
+static constexpr unsigned char stage2[][32] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70},
+ {0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_ext(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 256]], ch % 256);
}
diff --git a/lib/unicode/prop/uprop_is_extpict.c b/lib/unicode/prop/uprop_is_extpict.c
index 5334703..9c20bec 100644
--- a/lib/unicode/prop/uprop_is_extpict.c
+++ b/lib/unicode/prop/uprop_is_extpict.c
@@ -1,104 +1,380 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 3, 1, 4, 5, 6, 7, 8, 1, 9, 1, 10, 1, 1, 1, 1,
+ 11, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 13, 14, 15, 16, 13, 17, 18, 19, 20, 21, 13, 1, 13, 13, 13, 22,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x00203C), RUNE_C(0x00203C)},
- {RUNE_C(0x002049), RUNE_C(0x002049)},
- {RUNE_C(0x002122), RUNE_C(0x002122)},
- {RUNE_C(0x002139), RUNE_C(0x002139)},
- {RUNE_C(0x002194), RUNE_C(0x002199)},
- {RUNE_C(0x0021A9), RUNE_C(0x0021AA)},
- {RUNE_C(0x00231A), RUNE_C(0x00231B)},
- {RUNE_C(0x002328), RUNE_C(0x002328)},
- {RUNE_C(0x002388), RUNE_C(0x002388)},
- {RUNE_C(0x0023CF), RUNE_C(0x0023CF)},
- {RUNE_C(0x0023E9), RUNE_C(0x0023F3)},
- {RUNE_C(0x0023F8), RUNE_C(0x0023FA)},
- {RUNE_C(0x0024C2), RUNE_C(0x0024C2)},
- {RUNE_C(0x0025AA), RUNE_C(0x0025AB)},
- {RUNE_C(0x0025B6), RUNE_C(0x0025B6)},
- {RUNE_C(0x0025C0), RUNE_C(0x0025C0)},
- {RUNE_C(0x0025FB), RUNE_C(0x0025FE)},
- {RUNE_C(0x002600), RUNE_C(0x002605)},
- {RUNE_C(0x002607), RUNE_C(0x002612)},
- {RUNE_C(0x002614), RUNE_C(0x002685)},
- {RUNE_C(0x002690), RUNE_C(0x002705)},
- {RUNE_C(0x002708), RUNE_C(0x002712)},
- {RUNE_C(0x002714), RUNE_C(0x002714)},
- {RUNE_C(0x002716), RUNE_C(0x002716)},
- {RUNE_C(0x00271D), RUNE_C(0x00271D)},
- {RUNE_C(0x002721), RUNE_C(0x002721)},
- {RUNE_C(0x002728), RUNE_C(0x002728)},
- {RUNE_C(0x002733), RUNE_C(0x002734)},
- {RUNE_C(0x002744), RUNE_C(0x002744)},
- {RUNE_C(0x002747), RUNE_C(0x002747)},
- {RUNE_C(0x00274C), RUNE_C(0x00274C)},
- {RUNE_C(0x00274E), RUNE_C(0x00274E)},
- {RUNE_C(0x002753), RUNE_C(0x002755)},
- {RUNE_C(0x002757), RUNE_C(0x002757)},
- {RUNE_C(0x002763), RUNE_C(0x002767)},
- {RUNE_C(0x002795), RUNE_C(0x002797)},
- {RUNE_C(0x0027A1), RUNE_C(0x0027A1)},
- {RUNE_C(0x0027B0), RUNE_C(0x0027B0)},
- {RUNE_C(0x0027BF), RUNE_C(0x0027BF)},
- {RUNE_C(0x002934), RUNE_C(0x002935)},
- {RUNE_C(0x002B05), RUNE_C(0x002B07)},
- {RUNE_C(0x002B1B), RUNE_C(0x002B1C)},
- {RUNE_C(0x002B50), RUNE_C(0x002B50)},
- {RUNE_C(0x002B55), RUNE_C(0x002B55)},
- {RUNE_C(0x003030), RUNE_C(0x003030)},
- {RUNE_C(0x00303D), RUNE_C(0x00303D)},
- {RUNE_C(0x003297), RUNE_C(0x003297)},
- {RUNE_C(0x003299), RUNE_C(0x003299)},
- {RUNE_C(0x01F000), RUNE_C(0x01F0FF)},
- {RUNE_C(0x01F10D), RUNE_C(0x01F10F)},
- {RUNE_C(0x01F12F), RUNE_C(0x01F12F)},
- {RUNE_C(0x01F16C), RUNE_C(0x01F171)},
- {RUNE_C(0x01F17E), RUNE_C(0x01F17F)},
- {RUNE_C(0x01F18E), RUNE_C(0x01F18E)},
- {RUNE_C(0x01F191), RUNE_C(0x01F19A)},
- {RUNE_C(0x01F1AD), RUNE_C(0x01F1E5)},
- {RUNE_C(0x01F201), RUNE_C(0x01F20F)},
- {RUNE_C(0x01F21A), RUNE_C(0x01F21A)},
- {RUNE_C(0x01F22F), RUNE_C(0x01F22F)},
- {RUNE_C(0x01F232), RUNE_C(0x01F23A)},
- {RUNE_C(0x01F23C), RUNE_C(0x01F23F)},
- {RUNE_C(0x01F249), RUNE_C(0x01F3FA)},
- {RUNE_C(0x01F400), RUNE_C(0x01F53D)},
- {RUNE_C(0x01F546), RUNE_C(0x01F64F)},
- {RUNE_C(0x01F680), RUNE_C(0x01F6FF)},
- {RUNE_C(0x01F774), RUNE_C(0x01F77F)},
- {RUNE_C(0x01F7D5), RUNE_C(0x01F7FF)},
- {RUNE_C(0x01F80C), RUNE_C(0x01F80F)},
- {RUNE_C(0x01F848), RUNE_C(0x01F84F)},
- {RUNE_C(0x01F85A), RUNE_C(0x01F85F)},
- {RUNE_C(0x01F888), RUNE_C(0x01F88F)},
- {RUNE_C(0x01F8AE), RUNE_C(0x01F8FF)},
- {RUNE_C(0x01F90C), RUNE_C(0x01F93A)},
- {RUNE_C(0x01F93C), RUNE_C(0x01F945)},
- {RUNE_C(0x01F947), RUNE_C(0x01FAFF)},
- {RUNE_C(0x01FC00), RUNE_C(0x01FFFD)},
+static constexpr unsigned char stage2[][32] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+ 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xF0, 0x03, 0x00, 0x06, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x0C, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x07},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x40, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78},
+ {0xBF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x3F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x3F, 0xFF, 0x57, 0x20, 0x02, 0x01, 0x18, 0x00,
+ 0x90, 0x50, 0xB8, 0x00, 0xF8, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xE0, 0x00, 0x02, 0x00, 0x01, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xE0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x20,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x00, 0xE0, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x03, 0xC0,
+ 0x00, 0x40, 0xFE, 0x07, 0x00, 0xE0, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00},
+ {0xFE, 0xFF, 0x00, 0x04, 0x00, 0x80, 0xFC, 0xF7,
+ 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
+ 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xFF, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xFF, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7,
+ 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_extpict(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 256]], ch % 256);
}
diff --git a/lib/unicode/prop/uprop_is_gr_base.c b/lib/unicode/prop/uprop_is_gr_base.c
index 22666d6..8ad23b1 100644
--- a/lib/unicode/prop/uprop_is_gr_base.c
+++ b/lib/unicode/prop/uprop_is_gr_base.c
@@ -1,901 +1,984 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
- 0x00, 0x00, 0x00, 0x00, 0xFF, 0xDF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 2, 2, 2, 2, 3, 4, 2, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 2, 2, 30, 31, 32, 33, 2, 2, 2, 2, 2, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 2, 47, 2, 2, 48, 49,
+ 50, 51, 2, 52, 2, 2, 2, 2, 53, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 54, 55, 2, 56, 57, 58, 59, 60, 2, 61,
+ 62, 63, 64, 65, 66, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 67, 2, 2, 68, 69, 2, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 79,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 2, 2, 81, 82, 83, 84, 2, 2, 2, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 80, 94, 95, 96, 2, 97, 98, 99, 2, 2, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 80, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 80, 124, 125, 80, 126, 127, 128, 129, 80,
+ 130, 131, 132, 133, 134, 135, 136, 80, 137, 138, 139, 140, 80, 141, 142, 143,
+ 2, 2, 2, 2, 2, 2, 2, 144, 145, 2, 146, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 147,
+ 2, 2, 2, 2, 2, 2, 2, 2, 148, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 2, 2, 2, 2, 149, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 2, 2, 2, 2, 150, 151, 152, 153, 80, 80, 80, 80, 154, 155, 156, 157,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 158,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 159, 160, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 161,
+ 2, 2, 162, 2, 2, 163, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 164, 165, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 166, 146,
+ 2, 167, 168, 169, 170, 171, 172, 80, 173, 174, 175, 2, 2, 176, 2, 177,
+ 2, 2, 2, 2, 178, 179, 80, 80, 80, 80, 80, 80, 80, 80, 180, 80,
+ 181, 80, 182, 80, 80, 183, 80, 80, 80, 184, 80, 80, 80, 80, 80, 185,
+ 2, 186, 187, 80, 80, 80, 80, 80, 188, 189, 190, 80, 191, 192, 80, 80,
+ 193, 194, 2, 195, 196, 80, 2, 2, 2, 2, 2, 2, 2, 197, 198, 199,
+ 200, 201, 2, 2, 202, 203, 2, 204, 80, 80, 80, 80, 80, 80, 80, 80,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 205, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 206, 2,
+ 207, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 208, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 209, 2, 2, 2, 2, 59, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 2, 2, 2, 2, 210, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 156, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 211, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
+ 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000100), RUNE_C(0x0002FF)},
- {RUNE_C(0x000370), RUNE_C(0x000377)},
- {RUNE_C(0x00037A), RUNE_C(0x00037F)},
- {RUNE_C(0x000384), RUNE_C(0x00038A)},
- {RUNE_C(0x00038C), RUNE_C(0x00038C)},
- {RUNE_C(0x00038E), RUNE_C(0x0003A1)},
- {RUNE_C(0x0003A3), RUNE_C(0x000482)},
- {RUNE_C(0x00048A), RUNE_C(0x00052F)},
- {RUNE_C(0x000531), RUNE_C(0x000556)},
- {RUNE_C(0x000559), RUNE_C(0x00058A)},
- {RUNE_C(0x00058D), RUNE_C(0x00058F)},
- {RUNE_C(0x0005BE), RUNE_C(0x0005BE)},
- {RUNE_C(0x0005C0), RUNE_C(0x0005C0)},
- {RUNE_C(0x0005C3), RUNE_C(0x0005C3)},
- {RUNE_C(0x0005C6), RUNE_C(0x0005C6)},
- {RUNE_C(0x0005D0), RUNE_C(0x0005EA)},
- {RUNE_C(0x0005EF), RUNE_C(0x0005F4)},
- {RUNE_C(0x000606), RUNE_C(0x00060F)},
- {RUNE_C(0x00061B), RUNE_C(0x00061B)},
- {RUNE_C(0x00061D), RUNE_C(0x00064A)},
- {RUNE_C(0x000660), RUNE_C(0x00066F)},
- {RUNE_C(0x000671), RUNE_C(0x0006D5)},
- {RUNE_C(0x0006DE), RUNE_C(0x0006DE)},
- {RUNE_C(0x0006E5), RUNE_C(0x0006E6)},
- {RUNE_C(0x0006E9), RUNE_C(0x0006E9)},
- {RUNE_C(0x0006EE), RUNE_C(0x00070D)},
- {RUNE_C(0x000710), RUNE_C(0x000710)},
- {RUNE_C(0x000712), RUNE_C(0x00072F)},
- {RUNE_C(0x00074D), RUNE_C(0x0007A5)},
- {RUNE_C(0x0007B1), RUNE_C(0x0007B1)},
- {RUNE_C(0x0007C0), RUNE_C(0x0007EA)},
- {RUNE_C(0x0007F4), RUNE_C(0x0007FA)},
- {RUNE_C(0x0007FE), RUNE_C(0x000815)},
- {RUNE_C(0x00081A), RUNE_C(0x00081A)},
- {RUNE_C(0x000824), RUNE_C(0x000824)},
- {RUNE_C(0x000828), RUNE_C(0x000828)},
- {RUNE_C(0x000830), RUNE_C(0x00083E)},
- {RUNE_C(0x000840), RUNE_C(0x000858)},
- {RUNE_C(0x00085E), RUNE_C(0x00085E)},
- {RUNE_C(0x000860), RUNE_C(0x00086A)},
- {RUNE_C(0x000870), RUNE_C(0x00088E)},
- {RUNE_C(0x0008A0), RUNE_C(0x0008C9)},
- {RUNE_C(0x000903), RUNE_C(0x000939)},
- {RUNE_C(0x00093B), RUNE_C(0x00093B)},
- {RUNE_C(0x00093D), RUNE_C(0x000940)},
- {RUNE_C(0x000949), RUNE_C(0x00094C)},
- {RUNE_C(0x00094E), RUNE_C(0x000950)},
- {RUNE_C(0x000958), RUNE_C(0x000961)},
- {RUNE_C(0x000964), RUNE_C(0x000980)},
- {RUNE_C(0x000982), RUNE_C(0x000983)},
- {RUNE_C(0x000985), RUNE_C(0x00098C)},
- {RUNE_C(0x00098F), RUNE_C(0x000990)},
- {RUNE_C(0x000993), RUNE_C(0x0009A8)},
- {RUNE_C(0x0009AA), RUNE_C(0x0009B0)},
- {RUNE_C(0x0009B2), RUNE_C(0x0009B2)},
- {RUNE_C(0x0009B6), RUNE_C(0x0009B9)},
- {RUNE_C(0x0009BD), RUNE_C(0x0009BD)},
- {RUNE_C(0x0009BF), RUNE_C(0x0009C0)},
- {RUNE_C(0x0009C7), RUNE_C(0x0009C8)},
- {RUNE_C(0x0009CB), RUNE_C(0x0009CC)},
- {RUNE_C(0x0009CE), RUNE_C(0x0009CE)},
- {RUNE_C(0x0009DC), RUNE_C(0x0009DD)},
- {RUNE_C(0x0009DF), RUNE_C(0x0009E1)},
- {RUNE_C(0x0009E6), RUNE_C(0x0009FD)},
- {RUNE_C(0x000A03), RUNE_C(0x000A03)},
- {RUNE_C(0x000A05), RUNE_C(0x000A0A)},
- {RUNE_C(0x000A0F), RUNE_C(0x000A10)},
- {RUNE_C(0x000A13), RUNE_C(0x000A28)},
- {RUNE_C(0x000A2A), RUNE_C(0x000A30)},
- {RUNE_C(0x000A32), RUNE_C(0x000A33)},
- {RUNE_C(0x000A35), RUNE_C(0x000A36)},
- {RUNE_C(0x000A38), RUNE_C(0x000A39)},
- {RUNE_C(0x000A3E), RUNE_C(0x000A40)},
- {RUNE_C(0x000A59), RUNE_C(0x000A5C)},
- {RUNE_C(0x000A5E), RUNE_C(0x000A5E)},
- {RUNE_C(0x000A66), RUNE_C(0x000A6F)},
- {RUNE_C(0x000A72), RUNE_C(0x000A74)},
- {RUNE_C(0x000A76), RUNE_C(0x000A76)},
- {RUNE_C(0x000A83), RUNE_C(0x000A83)},
- {RUNE_C(0x000A85), RUNE_C(0x000A8D)},
- {RUNE_C(0x000A8F), RUNE_C(0x000A91)},
- {RUNE_C(0x000A93), RUNE_C(0x000AA8)},
- {RUNE_C(0x000AAA), RUNE_C(0x000AB0)},
- {RUNE_C(0x000AB2), RUNE_C(0x000AB3)},
- {RUNE_C(0x000AB5), RUNE_C(0x000AB9)},
- {RUNE_C(0x000ABD), RUNE_C(0x000AC0)},
- {RUNE_C(0x000AC9), RUNE_C(0x000AC9)},
- {RUNE_C(0x000ACB), RUNE_C(0x000ACC)},
- {RUNE_C(0x000AD0), RUNE_C(0x000AD0)},
- {RUNE_C(0x000AE0), RUNE_C(0x000AE1)},
- {RUNE_C(0x000AE6), RUNE_C(0x000AF1)},
- {RUNE_C(0x000AF9), RUNE_C(0x000AF9)},
- {RUNE_C(0x000B02), RUNE_C(0x000B03)},
- {RUNE_C(0x000B05), RUNE_C(0x000B0C)},
- {RUNE_C(0x000B0F), RUNE_C(0x000B10)},
- {RUNE_C(0x000B13), RUNE_C(0x000B28)},
- {RUNE_C(0x000B2A), RUNE_C(0x000B30)},
- {RUNE_C(0x000B32), RUNE_C(0x000B33)},
- {RUNE_C(0x000B35), RUNE_C(0x000B39)},
- {RUNE_C(0x000B3D), RUNE_C(0x000B3D)},
- {RUNE_C(0x000B40), RUNE_C(0x000B40)},
- {RUNE_C(0x000B47), RUNE_C(0x000B48)},
- {RUNE_C(0x000B4B), RUNE_C(0x000B4C)},
- {RUNE_C(0x000B5C), RUNE_C(0x000B5D)},
- {RUNE_C(0x000B5F), RUNE_C(0x000B61)},
- {RUNE_C(0x000B66), RUNE_C(0x000B77)},
- {RUNE_C(0x000B83), RUNE_C(0x000B83)},
- {RUNE_C(0x000B85), RUNE_C(0x000B8A)},
- {RUNE_C(0x000B8E), RUNE_C(0x000B90)},
- {RUNE_C(0x000B92), RUNE_C(0x000B95)},
- {RUNE_C(0x000B99), RUNE_C(0x000B9A)},
- {RUNE_C(0x000B9C), RUNE_C(0x000B9C)},
- {RUNE_C(0x000B9E), RUNE_C(0x000B9F)},
- {RUNE_C(0x000BA3), RUNE_C(0x000BA4)},
- {RUNE_C(0x000BA8), RUNE_C(0x000BAA)},
- {RUNE_C(0x000BAE), RUNE_C(0x000BB9)},
- {RUNE_C(0x000BBF), RUNE_C(0x000BBF)},
- {RUNE_C(0x000BC1), RUNE_C(0x000BC2)},
- {RUNE_C(0x000BC6), RUNE_C(0x000BC8)},
- {RUNE_C(0x000BCA), RUNE_C(0x000BCC)},
- {RUNE_C(0x000BD0), RUNE_C(0x000BD0)},
- {RUNE_C(0x000BE6), RUNE_C(0x000BFA)},
- {RUNE_C(0x000C01), RUNE_C(0x000C03)},
- {RUNE_C(0x000C05), RUNE_C(0x000C0C)},
- {RUNE_C(0x000C0E), RUNE_C(0x000C10)},
- {RUNE_C(0x000C12), RUNE_C(0x000C28)},
- {RUNE_C(0x000C2A), RUNE_C(0x000C39)},
- {RUNE_C(0x000C3D), RUNE_C(0x000C3D)},
- {RUNE_C(0x000C41), RUNE_C(0x000C44)},
- {RUNE_C(0x000C58), RUNE_C(0x000C5A)},
- {RUNE_C(0x000C5D), RUNE_C(0x000C5D)},
- {RUNE_C(0x000C60), RUNE_C(0x000C61)},
- {RUNE_C(0x000C66), RUNE_C(0x000C6F)},
- {RUNE_C(0x000C77), RUNE_C(0x000C80)},
- {RUNE_C(0x000C82), RUNE_C(0x000C8C)},
- {RUNE_C(0x000C8E), RUNE_C(0x000C90)},
- {RUNE_C(0x000C92), RUNE_C(0x000CA8)},
- {RUNE_C(0x000CAA), RUNE_C(0x000CB3)},
- {RUNE_C(0x000CB5), RUNE_C(0x000CB9)},
- {RUNE_C(0x000CBD), RUNE_C(0x000CBE)},
- {RUNE_C(0x000CC0), RUNE_C(0x000CC1)},
- {RUNE_C(0x000CC3), RUNE_C(0x000CC4)},
- {RUNE_C(0x000CC7), RUNE_C(0x000CC8)},
- {RUNE_C(0x000CCA), RUNE_C(0x000CCB)},
- {RUNE_C(0x000CDD), RUNE_C(0x000CDE)},
- {RUNE_C(0x000CE0), RUNE_C(0x000CE1)},
- {RUNE_C(0x000CE6), RUNE_C(0x000CEF)},
- {RUNE_C(0x000CF1), RUNE_C(0x000CF3)},
- {RUNE_C(0x000D02), RUNE_C(0x000D0C)},
- {RUNE_C(0x000D0E), RUNE_C(0x000D10)},
- {RUNE_C(0x000D12), RUNE_C(0x000D3A)},
- {RUNE_C(0x000D3D), RUNE_C(0x000D3D)},
- {RUNE_C(0x000D3F), RUNE_C(0x000D40)},
- {RUNE_C(0x000D46), RUNE_C(0x000D48)},
- {RUNE_C(0x000D4A), RUNE_C(0x000D4C)},
- {RUNE_C(0x000D4E), RUNE_C(0x000D4F)},
- {RUNE_C(0x000D54), RUNE_C(0x000D56)},
- {RUNE_C(0x000D58), RUNE_C(0x000D61)},
- {RUNE_C(0x000D66), RUNE_C(0x000D7F)},
- {RUNE_C(0x000D82), RUNE_C(0x000D83)},
- {RUNE_C(0x000D85), RUNE_C(0x000D96)},
- {RUNE_C(0x000D9A), RUNE_C(0x000DB1)},
- {RUNE_C(0x000DB3), RUNE_C(0x000DBB)},
- {RUNE_C(0x000DBD), RUNE_C(0x000DBD)},
- {RUNE_C(0x000DC0), RUNE_C(0x000DC6)},
- {RUNE_C(0x000DD0), RUNE_C(0x000DD1)},
- {RUNE_C(0x000DD8), RUNE_C(0x000DDE)},
- {RUNE_C(0x000DE6), RUNE_C(0x000DEF)},
- {RUNE_C(0x000DF2), RUNE_C(0x000DF4)},
- {RUNE_C(0x000E01), RUNE_C(0x000E30)},
- {RUNE_C(0x000E32), RUNE_C(0x000E33)},
- {RUNE_C(0x000E3F), RUNE_C(0x000E46)},
- {RUNE_C(0x000E4F), RUNE_C(0x000E5B)},
- {RUNE_C(0x000E81), RUNE_C(0x000E82)},
- {RUNE_C(0x000E84), RUNE_C(0x000E84)},
- {RUNE_C(0x000E86), RUNE_C(0x000E8A)},
- {RUNE_C(0x000E8C), RUNE_C(0x000EA3)},
- {RUNE_C(0x000EA5), RUNE_C(0x000EA5)},
- {RUNE_C(0x000EA7), RUNE_C(0x000EB0)},
- {RUNE_C(0x000EB2), RUNE_C(0x000EB3)},
- {RUNE_C(0x000EBD), RUNE_C(0x000EBD)},
- {RUNE_C(0x000EC0), RUNE_C(0x000EC4)},
- {RUNE_C(0x000EC6), RUNE_C(0x000EC6)},
- {RUNE_C(0x000ED0), RUNE_C(0x000ED9)},
- {RUNE_C(0x000EDC), RUNE_C(0x000EDF)},
- {RUNE_C(0x000F00), RUNE_C(0x000F17)},
- {RUNE_C(0x000F1A), RUNE_C(0x000F34)},
- {RUNE_C(0x000F36), RUNE_C(0x000F36)},
- {RUNE_C(0x000F38), RUNE_C(0x000F38)},
- {RUNE_C(0x000F3A), RUNE_C(0x000F47)},
- {RUNE_C(0x000F49), RUNE_C(0x000F6C)},
- {RUNE_C(0x000F7F), RUNE_C(0x000F7F)},
- {RUNE_C(0x000F85), RUNE_C(0x000F85)},
- {RUNE_C(0x000F88), RUNE_C(0x000F8C)},
- {RUNE_C(0x000FBE), RUNE_C(0x000FC5)},
- {RUNE_C(0x000FC7), RUNE_C(0x000FCC)},
- {RUNE_C(0x000FCE), RUNE_C(0x000FDA)},
- {RUNE_C(0x001000), RUNE_C(0x00102C)},
- {RUNE_C(0x001031), RUNE_C(0x001031)},
- {RUNE_C(0x001038), RUNE_C(0x001038)},
- {RUNE_C(0x00103B), RUNE_C(0x00103C)},
- {RUNE_C(0x00103F), RUNE_C(0x001057)},
- {RUNE_C(0x00105A), RUNE_C(0x00105D)},
- {RUNE_C(0x001061), RUNE_C(0x001070)},
- {RUNE_C(0x001075), RUNE_C(0x001081)},
- {RUNE_C(0x001083), RUNE_C(0x001084)},
- {RUNE_C(0x001087), RUNE_C(0x00108C)},
- {RUNE_C(0x00108E), RUNE_C(0x00109C)},
- {RUNE_C(0x00109E), RUNE_C(0x0010C5)},
- {RUNE_C(0x0010C7), RUNE_C(0x0010C7)},
- {RUNE_C(0x0010CD), RUNE_C(0x0010CD)},
- {RUNE_C(0x0010D0), RUNE_C(0x001248)},
- {RUNE_C(0x00124A), RUNE_C(0x00124D)},
- {RUNE_C(0x001250), RUNE_C(0x001256)},
- {RUNE_C(0x001258), RUNE_C(0x001258)},
- {RUNE_C(0x00125A), RUNE_C(0x00125D)},
- {RUNE_C(0x001260), RUNE_C(0x001288)},
- {RUNE_C(0x00128A), RUNE_C(0x00128D)},
- {RUNE_C(0x001290), RUNE_C(0x0012B0)},
- {RUNE_C(0x0012B2), RUNE_C(0x0012B5)},
- {RUNE_C(0x0012B8), RUNE_C(0x0012BE)},
- {RUNE_C(0x0012C0), RUNE_C(0x0012C0)},
- {RUNE_C(0x0012C2), RUNE_C(0x0012C5)},
- {RUNE_C(0x0012C8), RUNE_C(0x0012D6)},
- {RUNE_C(0x0012D8), RUNE_C(0x001310)},
- {RUNE_C(0x001312), RUNE_C(0x001315)},
- {RUNE_C(0x001318), RUNE_C(0x00135A)},
- {RUNE_C(0x001360), RUNE_C(0x00137C)},
- {RUNE_C(0x001380), RUNE_C(0x001399)},
- {RUNE_C(0x0013A0), RUNE_C(0x0013F5)},
- {RUNE_C(0x0013F8), RUNE_C(0x0013FD)},
- {RUNE_C(0x001400), RUNE_C(0x00169C)},
- {RUNE_C(0x0016A0), RUNE_C(0x0016F8)},
- {RUNE_C(0x001700), RUNE_C(0x001711)},
- {RUNE_C(0x001715), RUNE_C(0x001715)},
- {RUNE_C(0x00171F), RUNE_C(0x001731)},
- {RUNE_C(0x001734), RUNE_C(0x001736)},
- {RUNE_C(0x001740), RUNE_C(0x001751)},
- {RUNE_C(0x001760), RUNE_C(0x00176C)},
- {RUNE_C(0x00176E), RUNE_C(0x001770)},
- {RUNE_C(0x001780), RUNE_C(0x0017B3)},
- {RUNE_C(0x0017B6), RUNE_C(0x0017B6)},
- {RUNE_C(0x0017BE), RUNE_C(0x0017C5)},
- {RUNE_C(0x0017C7), RUNE_C(0x0017C8)},
- {RUNE_C(0x0017D4), RUNE_C(0x0017DC)},
- {RUNE_C(0x0017E0), RUNE_C(0x0017E9)},
- {RUNE_C(0x0017F0), RUNE_C(0x0017F9)},
- {RUNE_C(0x001800), RUNE_C(0x00180A)},
- {RUNE_C(0x001810), RUNE_C(0x001819)},
- {RUNE_C(0x001820), RUNE_C(0x001878)},
- {RUNE_C(0x001880), RUNE_C(0x001884)},
- {RUNE_C(0x001887), RUNE_C(0x0018A8)},
- {RUNE_C(0x0018AA), RUNE_C(0x0018AA)},
- {RUNE_C(0x0018B0), RUNE_C(0x0018F5)},
- {RUNE_C(0x001900), RUNE_C(0x00191E)},
- {RUNE_C(0x001923), RUNE_C(0x001926)},
- {RUNE_C(0x001929), RUNE_C(0x00192B)},
- {RUNE_C(0x001930), RUNE_C(0x001931)},
- {RUNE_C(0x001933), RUNE_C(0x001938)},
- {RUNE_C(0x001940), RUNE_C(0x001940)},
- {RUNE_C(0x001944), RUNE_C(0x00196D)},
- {RUNE_C(0x001970), RUNE_C(0x001974)},
- {RUNE_C(0x001980), RUNE_C(0x0019AB)},
- {RUNE_C(0x0019B0), RUNE_C(0x0019C9)},
- {RUNE_C(0x0019D0), RUNE_C(0x0019DA)},
- {RUNE_C(0x0019DE), RUNE_C(0x001A16)},
- {RUNE_C(0x001A19), RUNE_C(0x001A1A)},
- {RUNE_C(0x001A1E), RUNE_C(0x001A55)},
- {RUNE_C(0x001A57), RUNE_C(0x001A57)},
- {RUNE_C(0x001A61), RUNE_C(0x001A61)},
- {RUNE_C(0x001A63), RUNE_C(0x001A64)},
- {RUNE_C(0x001A6D), RUNE_C(0x001A72)},
- {RUNE_C(0x001A80), RUNE_C(0x001A89)},
- {RUNE_C(0x001A90), RUNE_C(0x001A99)},
- {RUNE_C(0x001AA0), RUNE_C(0x001AAD)},
- {RUNE_C(0x001B04), RUNE_C(0x001B33)},
- {RUNE_C(0x001B3B), RUNE_C(0x001B3B)},
- {RUNE_C(0x001B3D), RUNE_C(0x001B41)},
- {RUNE_C(0x001B43), RUNE_C(0x001B4C)},
- {RUNE_C(0x001B50), RUNE_C(0x001B6A)},
- {RUNE_C(0x001B74), RUNE_C(0x001B7E)},
- {RUNE_C(0x001B82), RUNE_C(0x001BA1)},
- {RUNE_C(0x001BA6), RUNE_C(0x001BA7)},
- {RUNE_C(0x001BAA), RUNE_C(0x001BAA)},
- {RUNE_C(0x001BAE), RUNE_C(0x001BE5)},
- {RUNE_C(0x001BE7), RUNE_C(0x001BE7)},
- {RUNE_C(0x001BEA), RUNE_C(0x001BEC)},
- {RUNE_C(0x001BEE), RUNE_C(0x001BEE)},
- {RUNE_C(0x001BF2), RUNE_C(0x001BF3)},
- {RUNE_C(0x001BFC), RUNE_C(0x001C2B)},
- {RUNE_C(0x001C34), RUNE_C(0x001C35)},
- {RUNE_C(0x001C3B), RUNE_C(0x001C49)},
- {RUNE_C(0x001C4D), RUNE_C(0x001C88)},
- {RUNE_C(0x001C90), RUNE_C(0x001CBA)},
- {RUNE_C(0x001CBD), RUNE_C(0x001CC7)},
- {RUNE_C(0x001CD3), RUNE_C(0x001CD3)},
- {RUNE_C(0x001CE1), RUNE_C(0x001CE1)},
- {RUNE_C(0x001CE9), RUNE_C(0x001CEC)},
- {RUNE_C(0x001CEE), RUNE_C(0x001CF3)},
- {RUNE_C(0x001CF5), RUNE_C(0x001CF7)},
- {RUNE_C(0x001CFA), RUNE_C(0x001CFA)},
- {RUNE_C(0x001D00), RUNE_C(0x001DBF)},
- {RUNE_C(0x001E00), RUNE_C(0x001F15)},
- {RUNE_C(0x001F18), RUNE_C(0x001F1D)},
- {RUNE_C(0x001F20), RUNE_C(0x001F45)},
- {RUNE_C(0x001F48), RUNE_C(0x001F4D)},
- {RUNE_C(0x001F50), RUNE_C(0x001F57)},
- {RUNE_C(0x001F59), RUNE_C(0x001F59)},
- {RUNE_C(0x001F5B), RUNE_C(0x001F5B)},
- {RUNE_C(0x001F5D), RUNE_C(0x001F5D)},
- {RUNE_C(0x001F5F), RUNE_C(0x001F7D)},
- {RUNE_C(0x001F80), RUNE_C(0x001FB4)},
- {RUNE_C(0x001FB6), RUNE_C(0x001FC4)},
- {RUNE_C(0x001FC6), RUNE_C(0x001FD3)},
- {RUNE_C(0x001FD6), RUNE_C(0x001FDB)},
- {RUNE_C(0x001FDD), RUNE_C(0x001FEF)},
- {RUNE_C(0x001FF2), RUNE_C(0x001FF4)},
- {RUNE_C(0x001FF6), RUNE_C(0x001FFE)},
- {RUNE_C(0x002000), RUNE_C(0x00200A)},
- {RUNE_C(0x002010), RUNE_C(0x002027)},
- {RUNE_C(0x00202F), RUNE_C(0x00205F)},
- {RUNE_C(0x002070), RUNE_C(0x002071)},
- {RUNE_C(0x002074), RUNE_C(0x00208E)},
- {RUNE_C(0x002090), RUNE_C(0x00209C)},
- {RUNE_C(0x0020A0), RUNE_C(0x0020C0)},
- {RUNE_C(0x002100), RUNE_C(0x00218B)},
- {RUNE_C(0x002190), RUNE_C(0x002426)},
- {RUNE_C(0x002440), RUNE_C(0x00244A)},
- {RUNE_C(0x002460), RUNE_C(0x002B73)},
- {RUNE_C(0x002B76), RUNE_C(0x002B95)},
- {RUNE_C(0x002B97), RUNE_C(0x002CEE)},
- {RUNE_C(0x002CF2), RUNE_C(0x002CF3)},
- {RUNE_C(0x002CF9), RUNE_C(0x002D25)},
- {RUNE_C(0x002D27), RUNE_C(0x002D27)},
- {RUNE_C(0x002D2D), RUNE_C(0x002D2D)},
- {RUNE_C(0x002D30), RUNE_C(0x002D67)},
- {RUNE_C(0x002D6F), RUNE_C(0x002D70)},
- {RUNE_C(0x002D80), RUNE_C(0x002D96)},
- {RUNE_C(0x002DA0), RUNE_C(0x002DA6)},
- {RUNE_C(0x002DA8), RUNE_C(0x002DAE)},
- {RUNE_C(0x002DB0), RUNE_C(0x002DB6)},
- {RUNE_C(0x002DB8), RUNE_C(0x002DBE)},
- {RUNE_C(0x002DC0), RUNE_C(0x002DC6)},
- {RUNE_C(0x002DC8), RUNE_C(0x002DCE)},
- {RUNE_C(0x002DD0), RUNE_C(0x002DD6)},
- {RUNE_C(0x002DD8), RUNE_C(0x002DDE)},
- {RUNE_C(0x002E00), RUNE_C(0x002E5D)},
- {RUNE_C(0x002E80), RUNE_C(0x002E99)},
- {RUNE_C(0x002E9B), RUNE_C(0x002EF3)},
- {RUNE_C(0x002F00), RUNE_C(0x002FD5)},
- {RUNE_C(0x002FF0), RUNE_C(0x003029)},
- {RUNE_C(0x003030), RUNE_C(0x00303F)},
- {RUNE_C(0x003041), RUNE_C(0x003096)},
- {RUNE_C(0x00309B), RUNE_C(0x0030FF)},
- {RUNE_C(0x003105), RUNE_C(0x00312F)},
- {RUNE_C(0x003131), RUNE_C(0x00318E)},
- {RUNE_C(0x003190), RUNE_C(0x0031E3)},
- {RUNE_C(0x0031EF), RUNE_C(0x00321E)},
- {RUNE_C(0x003220), RUNE_C(0x00A48C)},
- {RUNE_C(0x00A490), RUNE_C(0x00A4C6)},
- {RUNE_C(0x00A4D0), RUNE_C(0x00A62B)},
- {RUNE_C(0x00A640), RUNE_C(0x00A66E)},
- {RUNE_C(0x00A673), RUNE_C(0x00A673)},
- {RUNE_C(0x00A67E), RUNE_C(0x00A69D)},
- {RUNE_C(0x00A6A0), RUNE_C(0x00A6EF)},
- {RUNE_C(0x00A6F2), RUNE_C(0x00A6F7)},
- {RUNE_C(0x00A700), RUNE_C(0x00A7CA)},
- {RUNE_C(0x00A7D0), RUNE_C(0x00A7D1)},
- {RUNE_C(0x00A7D3), RUNE_C(0x00A7D3)},
- {RUNE_C(0x00A7D5), RUNE_C(0x00A7D9)},
- {RUNE_C(0x00A7F2), RUNE_C(0x00A801)},
- {RUNE_C(0x00A803), RUNE_C(0x00A805)},
- {RUNE_C(0x00A807), RUNE_C(0x00A80A)},
- {RUNE_C(0x00A80C), RUNE_C(0x00A824)},
- {RUNE_C(0x00A827), RUNE_C(0x00A82B)},
- {RUNE_C(0x00A830), RUNE_C(0x00A839)},
- {RUNE_C(0x00A840), RUNE_C(0x00A877)},
- {RUNE_C(0x00A880), RUNE_C(0x00A8C3)},
- {RUNE_C(0x00A8CE), RUNE_C(0x00A8D9)},
- {RUNE_C(0x00A8F2), RUNE_C(0x00A8FE)},
- {RUNE_C(0x00A900), RUNE_C(0x00A925)},
- {RUNE_C(0x00A92E), RUNE_C(0x00A946)},
- {RUNE_C(0x00A952), RUNE_C(0x00A953)},
- {RUNE_C(0x00A95F), RUNE_C(0x00A97C)},
- {RUNE_C(0x00A983), RUNE_C(0x00A9B2)},
- {RUNE_C(0x00A9B4), RUNE_C(0x00A9B5)},
- {RUNE_C(0x00A9BA), RUNE_C(0x00A9BB)},
- {RUNE_C(0x00A9BE), RUNE_C(0x00A9CD)},
- {RUNE_C(0x00A9CF), RUNE_C(0x00A9D9)},
- {RUNE_C(0x00A9DE), RUNE_C(0x00A9E4)},
- {RUNE_C(0x00A9E6), RUNE_C(0x00A9FE)},
- {RUNE_C(0x00AA00), RUNE_C(0x00AA28)},
- {RUNE_C(0x00AA2F), RUNE_C(0x00AA30)},
- {RUNE_C(0x00AA33), RUNE_C(0x00AA34)},
- {RUNE_C(0x00AA40), RUNE_C(0x00AA42)},
- {RUNE_C(0x00AA44), RUNE_C(0x00AA4B)},
- {RUNE_C(0x00AA4D), RUNE_C(0x00AA4D)},
- {RUNE_C(0x00AA50), RUNE_C(0x00AA59)},
- {RUNE_C(0x00AA5C), RUNE_C(0x00AA7B)},
- {RUNE_C(0x00AA7D), RUNE_C(0x00AAAF)},
- {RUNE_C(0x00AAB1), RUNE_C(0x00AAB1)},
- {RUNE_C(0x00AAB5), RUNE_C(0x00AAB6)},
- {RUNE_C(0x00AAB9), RUNE_C(0x00AABD)},
- {RUNE_C(0x00AAC0), RUNE_C(0x00AAC0)},
- {RUNE_C(0x00AAC2), RUNE_C(0x00AAC2)},
- {RUNE_C(0x00AADB), RUNE_C(0x00AAEB)},
- {RUNE_C(0x00AAEE), RUNE_C(0x00AAF5)},
- {RUNE_C(0x00AB01), RUNE_C(0x00AB06)},
- {RUNE_C(0x00AB09), RUNE_C(0x00AB0E)},
- {RUNE_C(0x00AB11), RUNE_C(0x00AB16)},
- {RUNE_C(0x00AB20), RUNE_C(0x00AB26)},
- {RUNE_C(0x00AB28), RUNE_C(0x00AB2E)},
- {RUNE_C(0x00AB30), RUNE_C(0x00AB6B)},
- {RUNE_C(0x00AB70), RUNE_C(0x00ABE4)},
- {RUNE_C(0x00ABE6), RUNE_C(0x00ABE7)},
- {RUNE_C(0x00ABE9), RUNE_C(0x00ABEC)},
- {RUNE_C(0x00ABF0), RUNE_C(0x00ABF9)},
- {RUNE_C(0x00AC00), RUNE_C(0x00D7A3)},
- {RUNE_C(0x00D7B0), RUNE_C(0x00D7C6)},
- {RUNE_C(0x00D7CB), RUNE_C(0x00D7FB)},
- {RUNE_C(0x00F900), RUNE_C(0x00FA6D)},
- {RUNE_C(0x00FA70), RUNE_C(0x00FAD9)},
- {RUNE_C(0x00FB00), RUNE_C(0x00FB06)},
- {RUNE_C(0x00FB13), RUNE_C(0x00FB17)},
- {RUNE_C(0x00FB1D), RUNE_C(0x00FB1D)},
- {RUNE_C(0x00FB1F), RUNE_C(0x00FB36)},
- {RUNE_C(0x00FB38), RUNE_C(0x00FB3C)},
- {RUNE_C(0x00FB3E), RUNE_C(0x00FB3E)},
- {RUNE_C(0x00FB40), RUNE_C(0x00FB41)},
- {RUNE_C(0x00FB43), RUNE_C(0x00FB44)},
- {RUNE_C(0x00FB46), RUNE_C(0x00FBC2)},
- {RUNE_C(0x00FBD3), RUNE_C(0x00FD8F)},
- {RUNE_C(0x00FD92), RUNE_C(0x00FDC7)},
- {RUNE_C(0x00FDCF), RUNE_C(0x00FDCF)},
- {RUNE_C(0x00FDF0), RUNE_C(0x00FDFF)},
- {RUNE_C(0x00FE10), RUNE_C(0x00FE19)},
- {RUNE_C(0x00FE30), RUNE_C(0x00FE52)},
- {RUNE_C(0x00FE54), RUNE_C(0x00FE66)},
- {RUNE_C(0x00FE68), RUNE_C(0x00FE6B)},
- {RUNE_C(0x00FE70), RUNE_C(0x00FE74)},
- {RUNE_C(0x00FE76), RUNE_C(0x00FEFC)},
- {RUNE_C(0x00FF01), RUNE_C(0x00FF9D)},
- {RUNE_C(0x00FFA0), RUNE_C(0x00FFBE)},
- {RUNE_C(0x00FFC2), RUNE_C(0x00FFC7)},
- {RUNE_C(0x00FFCA), RUNE_C(0x00FFCF)},
- {RUNE_C(0x00FFD2), RUNE_C(0x00FFD7)},
- {RUNE_C(0x00FFDA), RUNE_C(0x00FFDC)},
- {RUNE_C(0x00FFE0), RUNE_C(0x00FFE6)},
- {RUNE_C(0x00FFE8), RUNE_C(0x00FFEE)},
- {RUNE_C(0x00FFFC), RUNE_C(0x00FFFD)},
- {RUNE_C(0x010000), RUNE_C(0x01000B)},
- {RUNE_C(0x01000D), RUNE_C(0x010026)},
- {RUNE_C(0x010028), RUNE_C(0x01003A)},
- {RUNE_C(0x01003C), RUNE_C(0x01003D)},
- {RUNE_C(0x01003F), RUNE_C(0x01004D)},
- {RUNE_C(0x010050), RUNE_C(0x01005D)},
- {RUNE_C(0x010080), RUNE_C(0x0100FA)},
- {RUNE_C(0x010100), RUNE_C(0x010102)},
- {RUNE_C(0x010107), RUNE_C(0x010133)},
- {RUNE_C(0x010137), RUNE_C(0x01018E)},
- {RUNE_C(0x010190), RUNE_C(0x01019C)},
- {RUNE_C(0x0101A0), RUNE_C(0x0101A0)},
- {RUNE_C(0x0101D0), RUNE_C(0x0101FC)},
- {RUNE_C(0x010280), RUNE_C(0x01029C)},
- {RUNE_C(0x0102A0), RUNE_C(0x0102D0)},
- {RUNE_C(0x0102E1), RUNE_C(0x0102FB)},
- {RUNE_C(0x010300), RUNE_C(0x010323)},
- {RUNE_C(0x01032D), RUNE_C(0x01034A)},
- {RUNE_C(0x010350), RUNE_C(0x010375)},
- {RUNE_C(0x010380), RUNE_C(0x01039D)},
- {RUNE_C(0x01039F), RUNE_C(0x0103C3)},
- {RUNE_C(0x0103C8), RUNE_C(0x0103D5)},
- {RUNE_C(0x010400), RUNE_C(0x01049D)},
- {RUNE_C(0x0104A0), RUNE_C(0x0104A9)},
- {RUNE_C(0x0104B0), RUNE_C(0x0104D3)},
- {RUNE_C(0x0104D8), RUNE_C(0x0104FB)},
- {RUNE_C(0x010500), RUNE_C(0x010527)},
- {RUNE_C(0x010530), RUNE_C(0x010563)},
- {RUNE_C(0x01056F), RUNE_C(0x01057A)},
- {RUNE_C(0x01057C), RUNE_C(0x01058A)},
- {RUNE_C(0x01058C), RUNE_C(0x010592)},
- {RUNE_C(0x010594), RUNE_C(0x010595)},
- {RUNE_C(0x010597), RUNE_C(0x0105A1)},
- {RUNE_C(0x0105A3), RUNE_C(0x0105B1)},
- {RUNE_C(0x0105B3), RUNE_C(0x0105B9)},
- {RUNE_C(0x0105BB), RUNE_C(0x0105BC)},
- {RUNE_C(0x010600), RUNE_C(0x010736)},
- {RUNE_C(0x010740), RUNE_C(0x010755)},
- {RUNE_C(0x010760), RUNE_C(0x010767)},
- {RUNE_C(0x010780), RUNE_C(0x010785)},
- {RUNE_C(0x010787), RUNE_C(0x0107B0)},
- {RUNE_C(0x0107B2), RUNE_C(0x0107BA)},
- {RUNE_C(0x010800), RUNE_C(0x010805)},
- {RUNE_C(0x010808), RUNE_C(0x010808)},
- {RUNE_C(0x01080A), RUNE_C(0x010835)},
- {RUNE_C(0x010837), RUNE_C(0x010838)},
- {RUNE_C(0x01083C), RUNE_C(0x01083C)},
- {RUNE_C(0x01083F), RUNE_C(0x010855)},
- {RUNE_C(0x010857), RUNE_C(0x01089E)},
- {RUNE_C(0x0108A7), RUNE_C(0x0108AF)},
- {RUNE_C(0x0108E0), RUNE_C(0x0108F2)},
- {RUNE_C(0x0108F4), RUNE_C(0x0108F5)},
- {RUNE_C(0x0108FB), RUNE_C(0x01091B)},
- {RUNE_C(0x01091F), RUNE_C(0x010939)},
- {RUNE_C(0x01093F), RUNE_C(0x01093F)},
- {RUNE_C(0x010980), RUNE_C(0x0109B7)},
- {RUNE_C(0x0109BC), RUNE_C(0x0109CF)},
- {RUNE_C(0x0109D2), RUNE_C(0x010A00)},
- {RUNE_C(0x010A10), RUNE_C(0x010A13)},
- {RUNE_C(0x010A15), RUNE_C(0x010A17)},
- {RUNE_C(0x010A19), RUNE_C(0x010A35)},
- {RUNE_C(0x010A40), RUNE_C(0x010A48)},
- {RUNE_C(0x010A50), RUNE_C(0x010A58)},
- {RUNE_C(0x010A60), RUNE_C(0x010A9F)},
- {RUNE_C(0x010AC0), RUNE_C(0x010AE4)},
- {RUNE_C(0x010AEB), RUNE_C(0x010AF6)},
- {RUNE_C(0x010B00), RUNE_C(0x010B35)},
- {RUNE_C(0x010B39), RUNE_C(0x010B55)},
- {RUNE_C(0x010B58), RUNE_C(0x010B72)},
- {RUNE_C(0x010B78), RUNE_C(0x010B91)},
- {RUNE_C(0x010B99), RUNE_C(0x010B9C)},
- {RUNE_C(0x010BA9), RUNE_C(0x010BAF)},
- {RUNE_C(0x010C00), RUNE_C(0x010C48)},
- {RUNE_C(0x010C80), RUNE_C(0x010CB2)},
- {RUNE_C(0x010CC0), RUNE_C(0x010CF2)},
- {RUNE_C(0x010CFA), RUNE_C(0x010D23)},
- {RUNE_C(0x010D30), RUNE_C(0x010D39)},
- {RUNE_C(0x010E60), RUNE_C(0x010E7E)},
- {RUNE_C(0x010E80), RUNE_C(0x010EA9)},
- {RUNE_C(0x010EAD), RUNE_C(0x010EAD)},
- {RUNE_C(0x010EB0), RUNE_C(0x010EB1)},
- {RUNE_C(0x010F00), RUNE_C(0x010F27)},
- {RUNE_C(0x010F30), RUNE_C(0x010F45)},
- {RUNE_C(0x010F51), RUNE_C(0x010F59)},
- {RUNE_C(0x010F70), RUNE_C(0x010F81)},
- {RUNE_C(0x010F86), RUNE_C(0x010F89)},
- {RUNE_C(0x010FB0), RUNE_C(0x010FCB)},
- {RUNE_C(0x010FE0), RUNE_C(0x010FF6)},
- {RUNE_C(0x011000), RUNE_C(0x011000)},
- {RUNE_C(0x011002), RUNE_C(0x011037)},
- {RUNE_C(0x011047), RUNE_C(0x01104D)},
- {RUNE_C(0x011052), RUNE_C(0x01106F)},
- {RUNE_C(0x011071), RUNE_C(0x011072)},
- {RUNE_C(0x011075), RUNE_C(0x011075)},
- {RUNE_C(0x011082), RUNE_C(0x0110B2)},
- {RUNE_C(0x0110B7), RUNE_C(0x0110B8)},
- {RUNE_C(0x0110BB), RUNE_C(0x0110BC)},
- {RUNE_C(0x0110BE), RUNE_C(0x0110C1)},
- {RUNE_C(0x0110D0), RUNE_C(0x0110E8)},
- {RUNE_C(0x0110F0), RUNE_C(0x0110F9)},
- {RUNE_C(0x011103), RUNE_C(0x011126)},
- {RUNE_C(0x01112C), RUNE_C(0x01112C)},
- {RUNE_C(0x011136), RUNE_C(0x011147)},
- {RUNE_C(0x011150), RUNE_C(0x011172)},
- {RUNE_C(0x011174), RUNE_C(0x011176)},
- {RUNE_C(0x011182), RUNE_C(0x0111B5)},
- {RUNE_C(0x0111BF), RUNE_C(0x0111C8)},
- {RUNE_C(0x0111CD), RUNE_C(0x0111CE)},
- {RUNE_C(0x0111D0), RUNE_C(0x0111DF)},
- {RUNE_C(0x0111E1), RUNE_C(0x0111F4)},
- {RUNE_C(0x011200), RUNE_C(0x011211)},
- {RUNE_C(0x011213), RUNE_C(0x01122E)},
- {RUNE_C(0x011232), RUNE_C(0x011233)},
- {RUNE_C(0x011235), RUNE_C(0x011235)},
- {RUNE_C(0x011238), RUNE_C(0x01123D)},
- {RUNE_C(0x01123F), RUNE_C(0x011240)},
- {RUNE_C(0x011280), RUNE_C(0x011286)},
- {RUNE_C(0x011288), RUNE_C(0x011288)},
- {RUNE_C(0x01128A), RUNE_C(0x01128D)},
- {RUNE_C(0x01128F), RUNE_C(0x01129D)},
- {RUNE_C(0x01129F), RUNE_C(0x0112A9)},
- {RUNE_C(0x0112B0), RUNE_C(0x0112DE)},
- {RUNE_C(0x0112E0), RUNE_C(0x0112E2)},
- {RUNE_C(0x0112F0), RUNE_C(0x0112F9)},
- {RUNE_C(0x011302), RUNE_C(0x011303)},
- {RUNE_C(0x011305), RUNE_C(0x01130C)},
- {RUNE_C(0x01130F), RUNE_C(0x011310)},
- {RUNE_C(0x011313), RUNE_C(0x011328)},
- {RUNE_C(0x01132A), RUNE_C(0x011330)},
- {RUNE_C(0x011332), RUNE_C(0x011333)},
- {RUNE_C(0x011335), RUNE_C(0x011339)},
- {RUNE_C(0x01133D), RUNE_C(0x01133D)},
- {RUNE_C(0x01133F), RUNE_C(0x01133F)},
- {RUNE_C(0x011341), RUNE_C(0x011344)},
- {RUNE_C(0x011347), RUNE_C(0x011348)},
- {RUNE_C(0x01134B), RUNE_C(0x01134D)},
- {RUNE_C(0x011350), RUNE_C(0x011350)},
- {RUNE_C(0x01135D), RUNE_C(0x011363)},
- {RUNE_C(0x011400), RUNE_C(0x011437)},
- {RUNE_C(0x011440), RUNE_C(0x011441)},
- {RUNE_C(0x011445), RUNE_C(0x011445)},
- {RUNE_C(0x011447), RUNE_C(0x01145B)},
- {RUNE_C(0x01145D), RUNE_C(0x01145D)},
- {RUNE_C(0x01145F), RUNE_C(0x011461)},
- {RUNE_C(0x011480), RUNE_C(0x0114AF)},
- {RUNE_C(0x0114B1), RUNE_C(0x0114B2)},
- {RUNE_C(0x0114B9), RUNE_C(0x0114B9)},
- {RUNE_C(0x0114BB), RUNE_C(0x0114BC)},
- {RUNE_C(0x0114BE), RUNE_C(0x0114BE)},
- {RUNE_C(0x0114C1), RUNE_C(0x0114C1)},
- {RUNE_C(0x0114C4), RUNE_C(0x0114C7)},
- {RUNE_C(0x0114D0), RUNE_C(0x0114D9)},
- {RUNE_C(0x011580), RUNE_C(0x0115AE)},
- {RUNE_C(0x0115B0), RUNE_C(0x0115B1)},
- {RUNE_C(0x0115B8), RUNE_C(0x0115BB)},
- {RUNE_C(0x0115BE), RUNE_C(0x0115BE)},
- {RUNE_C(0x0115C1), RUNE_C(0x0115DB)},
- {RUNE_C(0x011600), RUNE_C(0x011632)},
- {RUNE_C(0x01163B), RUNE_C(0x01163C)},
- {RUNE_C(0x01163E), RUNE_C(0x01163E)},
- {RUNE_C(0x011641), RUNE_C(0x011644)},
- {RUNE_C(0x011650), RUNE_C(0x011659)},
- {RUNE_C(0x011660), RUNE_C(0x01166C)},
- {RUNE_C(0x011680), RUNE_C(0x0116AA)},
- {RUNE_C(0x0116AC), RUNE_C(0x0116AC)},
- {RUNE_C(0x0116AE), RUNE_C(0x0116AF)},
- {RUNE_C(0x0116B6), RUNE_C(0x0116B6)},
- {RUNE_C(0x0116B8), RUNE_C(0x0116B9)},
- {RUNE_C(0x0116C0), RUNE_C(0x0116C9)},
- {RUNE_C(0x011700), RUNE_C(0x01171A)},
- {RUNE_C(0x011720), RUNE_C(0x011721)},
- {RUNE_C(0x011726), RUNE_C(0x011726)},
- {RUNE_C(0x011730), RUNE_C(0x011746)},
- {RUNE_C(0x011800), RUNE_C(0x01182E)},
- {RUNE_C(0x011838), RUNE_C(0x011838)},
- {RUNE_C(0x01183B), RUNE_C(0x01183B)},
- {RUNE_C(0x0118A0), RUNE_C(0x0118F2)},
- {RUNE_C(0x0118FF), RUNE_C(0x011906)},
- {RUNE_C(0x011909), RUNE_C(0x011909)},
- {RUNE_C(0x01190C), RUNE_C(0x011913)},
- {RUNE_C(0x011915), RUNE_C(0x011916)},
- {RUNE_C(0x011918), RUNE_C(0x01192F)},
- {RUNE_C(0x011931), RUNE_C(0x011935)},
- {RUNE_C(0x011937), RUNE_C(0x011938)},
- {RUNE_C(0x01193D), RUNE_C(0x01193D)},
- {RUNE_C(0x01193F), RUNE_C(0x011942)},
- {RUNE_C(0x011944), RUNE_C(0x011946)},
- {RUNE_C(0x011950), RUNE_C(0x011959)},
- {RUNE_C(0x0119A0), RUNE_C(0x0119A7)},
- {RUNE_C(0x0119AA), RUNE_C(0x0119D3)},
- {RUNE_C(0x0119DC), RUNE_C(0x0119DF)},
- {RUNE_C(0x0119E1), RUNE_C(0x0119E4)},
- {RUNE_C(0x011A00), RUNE_C(0x011A00)},
- {RUNE_C(0x011A0B), RUNE_C(0x011A32)},
- {RUNE_C(0x011A39), RUNE_C(0x011A3A)},
- {RUNE_C(0x011A3F), RUNE_C(0x011A46)},
- {RUNE_C(0x011A50), RUNE_C(0x011A50)},
- {RUNE_C(0x011A57), RUNE_C(0x011A58)},
- {RUNE_C(0x011A5C), RUNE_C(0x011A89)},
- {RUNE_C(0x011A97), RUNE_C(0x011A97)},
- {RUNE_C(0x011A9A), RUNE_C(0x011AA2)},
- {RUNE_C(0x011AB0), RUNE_C(0x011AF8)},
- {RUNE_C(0x011B00), RUNE_C(0x011B09)},
- {RUNE_C(0x011C00), RUNE_C(0x011C08)},
- {RUNE_C(0x011C0A), RUNE_C(0x011C2F)},
- {RUNE_C(0x011C3E), RUNE_C(0x011C3E)},
- {RUNE_C(0x011C40), RUNE_C(0x011C45)},
- {RUNE_C(0x011C50), RUNE_C(0x011C6C)},
- {RUNE_C(0x011C70), RUNE_C(0x011C8F)},
- {RUNE_C(0x011CA9), RUNE_C(0x011CA9)},
- {RUNE_C(0x011CB1), RUNE_C(0x011CB1)},
- {RUNE_C(0x011CB4), RUNE_C(0x011CB4)},
- {RUNE_C(0x011D00), RUNE_C(0x011D06)},
- {RUNE_C(0x011D08), RUNE_C(0x011D09)},
- {RUNE_C(0x011D0B), RUNE_C(0x011D30)},
- {RUNE_C(0x011D46), RUNE_C(0x011D46)},
- {RUNE_C(0x011D50), RUNE_C(0x011D59)},
- {RUNE_C(0x011D60), RUNE_C(0x011D65)},
- {RUNE_C(0x011D67), RUNE_C(0x011D68)},
- {RUNE_C(0x011D6A), RUNE_C(0x011D8E)},
- {RUNE_C(0x011D93), RUNE_C(0x011D94)},
- {RUNE_C(0x011D96), RUNE_C(0x011D96)},
- {RUNE_C(0x011D98), RUNE_C(0x011D98)},
- {RUNE_C(0x011DA0), RUNE_C(0x011DA9)},
- {RUNE_C(0x011EE0), RUNE_C(0x011EF2)},
- {RUNE_C(0x011EF5), RUNE_C(0x011EF8)},
- {RUNE_C(0x011F02), RUNE_C(0x011F10)},
- {RUNE_C(0x011F12), RUNE_C(0x011F35)},
- {RUNE_C(0x011F3E), RUNE_C(0x011F3F)},
- {RUNE_C(0x011F41), RUNE_C(0x011F41)},
- {RUNE_C(0x011F43), RUNE_C(0x011F59)},
- {RUNE_C(0x011FB0), RUNE_C(0x011FB0)},
- {RUNE_C(0x011FC0), RUNE_C(0x011FF1)},
- {RUNE_C(0x011FFF), RUNE_C(0x012399)},
- {RUNE_C(0x012400), RUNE_C(0x01246E)},
- {RUNE_C(0x012470), RUNE_C(0x012474)},
- {RUNE_C(0x012480), RUNE_C(0x012543)},
- {RUNE_C(0x012F90), RUNE_C(0x012FF2)},
- {RUNE_C(0x013000), RUNE_C(0x01342F)},
- {RUNE_C(0x013441), RUNE_C(0x013446)},
- {RUNE_C(0x014400), RUNE_C(0x014646)},
- {RUNE_C(0x016800), RUNE_C(0x016A38)},
- {RUNE_C(0x016A40), RUNE_C(0x016A5E)},
- {RUNE_C(0x016A60), RUNE_C(0x016A69)},
- {RUNE_C(0x016A6E), RUNE_C(0x016ABE)},
- {RUNE_C(0x016AC0), RUNE_C(0x016AC9)},
- {RUNE_C(0x016AD0), RUNE_C(0x016AED)},
- {RUNE_C(0x016AF5), RUNE_C(0x016AF5)},
- {RUNE_C(0x016B00), RUNE_C(0x016B2F)},
- {RUNE_C(0x016B37), RUNE_C(0x016B45)},
- {RUNE_C(0x016B50), RUNE_C(0x016B59)},
- {RUNE_C(0x016B5B), RUNE_C(0x016B61)},
- {RUNE_C(0x016B63), RUNE_C(0x016B77)},
- {RUNE_C(0x016B7D), RUNE_C(0x016B8F)},
- {RUNE_C(0x016E40), RUNE_C(0x016E9A)},
- {RUNE_C(0x016F00), RUNE_C(0x016F4A)},
- {RUNE_C(0x016F50), RUNE_C(0x016F87)},
- {RUNE_C(0x016F93), RUNE_C(0x016F9F)},
- {RUNE_C(0x016FE0), RUNE_C(0x016FE3)},
- {RUNE_C(0x016FF0), RUNE_C(0x016FF1)},
- {RUNE_C(0x017000), RUNE_C(0x0187F7)},
- {RUNE_C(0x018800), RUNE_C(0x018CD5)},
- {RUNE_C(0x018D00), RUNE_C(0x018D08)},
- {RUNE_C(0x01AFF0), RUNE_C(0x01AFF3)},
- {RUNE_C(0x01AFF5), RUNE_C(0x01AFFB)},
- {RUNE_C(0x01AFFD), RUNE_C(0x01AFFE)},
- {RUNE_C(0x01B000), RUNE_C(0x01B122)},
- {RUNE_C(0x01B132), RUNE_C(0x01B132)},
- {RUNE_C(0x01B150), RUNE_C(0x01B152)},
- {RUNE_C(0x01B155), RUNE_C(0x01B155)},
- {RUNE_C(0x01B164), RUNE_C(0x01B167)},
- {RUNE_C(0x01B170), RUNE_C(0x01B2FB)},
- {RUNE_C(0x01BC00), RUNE_C(0x01BC6A)},
- {RUNE_C(0x01BC70), RUNE_C(0x01BC7C)},
- {RUNE_C(0x01BC80), RUNE_C(0x01BC88)},
- {RUNE_C(0x01BC90), RUNE_C(0x01BC99)},
- {RUNE_C(0x01BC9C), RUNE_C(0x01BC9C)},
- {RUNE_C(0x01BC9F), RUNE_C(0x01BC9F)},
- {RUNE_C(0x01CF50), RUNE_C(0x01CFC3)},
- {RUNE_C(0x01D000), RUNE_C(0x01D0F5)},
- {RUNE_C(0x01D100), RUNE_C(0x01D126)},
- {RUNE_C(0x01D129), RUNE_C(0x01D164)},
- {RUNE_C(0x01D166), RUNE_C(0x01D166)},
- {RUNE_C(0x01D16A), RUNE_C(0x01D16D)},
- {RUNE_C(0x01D183), RUNE_C(0x01D184)},
- {RUNE_C(0x01D18C), RUNE_C(0x01D1A9)},
- {RUNE_C(0x01D1AE), RUNE_C(0x01D1EA)},
- {RUNE_C(0x01D200), RUNE_C(0x01D241)},
- {RUNE_C(0x01D245), RUNE_C(0x01D245)},
- {RUNE_C(0x01D2C0), RUNE_C(0x01D2D3)},
- {RUNE_C(0x01D2E0), RUNE_C(0x01D2F3)},
- {RUNE_C(0x01D300), RUNE_C(0x01D356)},
- {RUNE_C(0x01D360), RUNE_C(0x01D378)},
- {RUNE_C(0x01D400), RUNE_C(0x01D454)},
- {RUNE_C(0x01D456), RUNE_C(0x01D49C)},
- {RUNE_C(0x01D49E), RUNE_C(0x01D49F)},
- {RUNE_C(0x01D4A2), RUNE_C(0x01D4A2)},
- {RUNE_C(0x01D4A5), RUNE_C(0x01D4A6)},
- {RUNE_C(0x01D4A9), RUNE_C(0x01D4AC)},
- {RUNE_C(0x01D4AE), RUNE_C(0x01D4B9)},
- {RUNE_C(0x01D4BB), RUNE_C(0x01D4BB)},
- {RUNE_C(0x01D4BD), RUNE_C(0x01D4C3)},
- {RUNE_C(0x01D4C5), RUNE_C(0x01D505)},
- {RUNE_C(0x01D507), RUNE_C(0x01D50A)},
- {RUNE_C(0x01D50D), RUNE_C(0x01D514)},
- {RUNE_C(0x01D516), RUNE_C(0x01D51C)},
- {RUNE_C(0x01D51E), RUNE_C(0x01D539)},
- {RUNE_C(0x01D53B), RUNE_C(0x01D53E)},
- {RUNE_C(0x01D540), RUNE_C(0x01D544)},
- {RUNE_C(0x01D546), RUNE_C(0x01D546)},
- {RUNE_C(0x01D54A), RUNE_C(0x01D550)},
- {RUNE_C(0x01D552), RUNE_C(0x01D6A5)},
- {RUNE_C(0x01D6A8), RUNE_C(0x01D7CB)},
- {RUNE_C(0x01D7CE), RUNE_C(0x01D9FF)},
- {RUNE_C(0x01DA37), RUNE_C(0x01DA3A)},
- {RUNE_C(0x01DA6D), RUNE_C(0x01DA74)},
- {RUNE_C(0x01DA76), RUNE_C(0x01DA83)},
- {RUNE_C(0x01DA85), RUNE_C(0x01DA8B)},
- {RUNE_C(0x01DF00), RUNE_C(0x01DF1E)},
- {RUNE_C(0x01DF25), RUNE_C(0x01DF2A)},
- {RUNE_C(0x01E030), RUNE_C(0x01E06D)},
- {RUNE_C(0x01E100), RUNE_C(0x01E12C)},
- {RUNE_C(0x01E137), RUNE_C(0x01E13D)},
- {RUNE_C(0x01E140), RUNE_C(0x01E149)},
- {RUNE_C(0x01E14E), RUNE_C(0x01E14F)},
- {RUNE_C(0x01E290), RUNE_C(0x01E2AD)},
- {RUNE_C(0x01E2C0), RUNE_C(0x01E2EB)},
- {RUNE_C(0x01E2F0), RUNE_C(0x01E2F9)},
- {RUNE_C(0x01E2FF), RUNE_C(0x01E2FF)},
- {RUNE_C(0x01E4D0), RUNE_C(0x01E4EB)},
- {RUNE_C(0x01E4F0), RUNE_C(0x01E4F9)},
- {RUNE_C(0x01E7E0), RUNE_C(0x01E7E6)},
- {RUNE_C(0x01E7E8), RUNE_C(0x01E7EB)},
- {RUNE_C(0x01E7ED), RUNE_C(0x01E7EE)},
- {RUNE_C(0x01E7F0), RUNE_C(0x01E7FE)},
- {RUNE_C(0x01E800), RUNE_C(0x01E8C4)},
- {RUNE_C(0x01E8C7), RUNE_C(0x01E8CF)},
- {RUNE_C(0x01E900), RUNE_C(0x01E943)},
- {RUNE_C(0x01E94B), RUNE_C(0x01E94B)},
- {RUNE_C(0x01E950), RUNE_C(0x01E959)},
- {RUNE_C(0x01E95E), RUNE_C(0x01E95F)},
- {RUNE_C(0x01EC71), RUNE_C(0x01ECB4)},
- {RUNE_C(0x01ED01), RUNE_C(0x01ED3D)},
- {RUNE_C(0x01EE00), RUNE_C(0x01EE03)},
- {RUNE_C(0x01EE05), RUNE_C(0x01EE1F)},
- {RUNE_C(0x01EE21), RUNE_C(0x01EE22)},
- {RUNE_C(0x01EE24), RUNE_C(0x01EE24)},
- {RUNE_C(0x01EE27), RUNE_C(0x01EE27)},
- {RUNE_C(0x01EE29), RUNE_C(0x01EE32)},
- {RUNE_C(0x01EE34), RUNE_C(0x01EE37)},
- {RUNE_C(0x01EE39), RUNE_C(0x01EE39)},
- {RUNE_C(0x01EE3B), RUNE_C(0x01EE3B)},
- {RUNE_C(0x01EE42), RUNE_C(0x01EE42)},
- {RUNE_C(0x01EE47), RUNE_C(0x01EE47)},
- {RUNE_C(0x01EE49), RUNE_C(0x01EE49)},
- {RUNE_C(0x01EE4B), RUNE_C(0x01EE4B)},
- {RUNE_C(0x01EE4D), RUNE_C(0x01EE4F)},
- {RUNE_C(0x01EE51), RUNE_C(0x01EE52)},
- {RUNE_C(0x01EE54), RUNE_C(0x01EE54)},
- {RUNE_C(0x01EE57), RUNE_C(0x01EE57)},
- {RUNE_C(0x01EE59), RUNE_C(0x01EE59)},
- {RUNE_C(0x01EE5B), RUNE_C(0x01EE5B)},
- {RUNE_C(0x01EE5D), RUNE_C(0x01EE5D)},
- {RUNE_C(0x01EE5F), RUNE_C(0x01EE5F)},
- {RUNE_C(0x01EE61), RUNE_C(0x01EE62)},
- {RUNE_C(0x01EE64), RUNE_C(0x01EE64)},
- {RUNE_C(0x01EE67), RUNE_C(0x01EE6A)},
- {RUNE_C(0x01EE6C), RUNE_C(0x01EE72)},
- {RUNE_C(0x01EE74), RUNE_C(0x01EE77)},
- {RUNE_C(0x01EE79), RUNE_C(0x01EE7C)},
- {RUNE_C(0x01EE7E), RUNE_C(0x01EE7E)},
- {RUNE_C(0x01EE80), RUNE_C(0x01EE89)},
- {RUNE_C(0x01EE8B), RUNE_C(0x01EE9B)},
- {RUNE_C(0x01EEA1), RUNE_C(0x01EEA3)},
- {RUNE_C(0x01EEA5), RUNE_C(0x01EEA9)},
- {RUNE_C(0x01EEAB), RUNE_C(0x01EEBB)},
- {RUNE_C(0x01EEF0), RUNE_C(0x01EEF1)},
- {RUNE_C(0x01F000), RUNE_C(0x01F02B)},
- {RUNE_C(0x01F030), RUNE_C(0x01F093)},
- {RUNE_C(0x01F0A0), RUNE_C(0x01F0AE)},
- {RUNE_C(0x01F0B1), RUNE_C(0x01F0BF)},
- {RUNE_C(0x01F0C1), RUNE_C(0x01F0CF)},
- {RUNE_C(0x01F0D1), RUNE_C(0x01F0F5)},
- {RUNE_C(0x01F100), RUNE_C(0x01F1AD)},
- {RUNE_C(0x01F1E6), RUNE_C(0x01F202)},
- {RUNE_C(0x01F210), RUNE_C(0x01F23B)},
- {RUNE_C(0x01F240), RUNE_C(0x01F248)},
- {RUNE_C(0x01F250), RUNE_C(0x01F251)},
- {RUNE_C(0x01F260), RUNE_C(0x01F265)},
- {RUNE_C(0x01F300), RUNE_C(0x01F6D7)},
- {RUNE_C(0x01F6DC), RUNE_C(0x01F6EC)},
- {RUNE_C(0x01F6F0), RUNE_C(0x01F6FC)},
- {RUNE_C(0x01F700), RUNE_C(0x01F776)},
- {RUNE_C(0x01F77B), RUNE_C(0x01F7D9)},
- {RUNE_C(0x01F7E0), RUNE_C(0x01F7EB)},
- {RUNE_C(0x01F7F0), RUNE_C(0x01F7F0)},
- {RUNE_C(0x01F800), RUNE_C(0x01F80B)},
- {RUNE_C(0x01F810), RUNE_C(0x01F847)},
- {RUNE_C(0x01F850), RUNE_C(0x01F859)},
- {RUNE_C(0x01F860), RUNE_C(0x01F887)},
- {RUNE_C(0x01F890), RUNE_C(0x01F8AD)},
- {RUNE_C(0x01F8B0), RUNE_C(0x01F8B1)},
- {RUNE_C(0x01F900), RUNE_C(0x01FA53)},
- {RUNE_C(0x01FA60), RUNE_C(0x01FA6D)},
- {RUNE_C(0x01FA70), RUNE_C(0x01FA7C)},
- {RUNE_C(0x01FA80), RUNE_C(0x01FA88)},
- {RUNE_C(0x01FA90), RUNE_C(0x01FABD)},
- {RUNE_C(0x01FABF), RUNE_C(0x01FAC5)},
- {RUNE_C(0x01FACE), RUNE_C(0x01FADB)},
- {RUNE_C(0x01FAE0), RUNE_C(0x01FAE8)},
- {RUNE_C(0x01FAF0), RUNE_C(0x01FAF8)},
- {RUNE_C(0x01FB00), RUNE_C(0x01FB92)},
- {RUNE_C(0x01FB94), RUNE_C(0x01FBCA)},
- {RUNE_C(0x01FBF0), RUNE_C(0x01FBF9)},
- {RUNE_C(0x020000), RUNE_C(0x02A6DF)},
- {RUNE_C(0x02A700), RUNE_C(0x02B739)},
- {RUNE_C(0x02B740), RUNE_C(0x02B81D)},
- {RUNE_C(0x02B820), RUNE_C(0x02CEA1)},
- {RUNE_C(0x02CEB0), RUNE_C(0x02EBE0)},
- {RUNE_C(0x02EBF0), RUNE_C(0x02EE5D)},
- {RUNE_C(0x02F800), RUNE_C(0x02FA1D)},
- {RUNE_C(0x030000), RUNE_C(0x03134A)},
- {RUNE_C(0x031350), RUNE_C(0x0323AF)},
+static constexpr unsigned char stage2[][16] = {
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xDF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC},
+ {0xF0, 0xD7, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x07, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
+ 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+ 0x49, 0x00, 0xFF, 0xFF, 0xFF, 0x87, 0x1F, 0x00},
+ {0xC0, 0xFF, 0x00, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xFE, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x3F, 0x40, 0x60, 0xC2, 0xFF, 0xFF},
+ {0xFF, 0x3F, 0xFD, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x02, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xF0, 0xC7},
+ {0xFF, 0xFF, 0x3F, 0x04, 0x10, 0x01, 0xFF, 0x7F,
+ 0xFF, 0xFF, 0xFF, 0x41, 0xFF, 0x07, 0xFF, 0xFF},
+ {0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB,
+ 0x01, 0xDE, 0x01, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF},
+ {0xED, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xC5, 0xA3,
+ 0x81, 0x59, 0x00, 0xB0, 0xC3, 0xFF, 0xFF, 0x3F},
+ {0xE8, 0x87, 0xF9, 0xFF, 0xFF, 0xFD, 0x6D, 0xC3,
+ 0x01, 0x00, 0x00, 0x5E, 0xC0, 0xFF, 0x5C, 0x00},
+ {0xE8, 0xBF, 0xFB, 0xFF, 0xFF, 0xFD, 0xED, 0xE3,
+ 0x01, 0x1A, 0x01, 0x00, 0xC3, 0xFF, 0x03, 0x02},
+ {0xEC, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xED, 0x23,
+ 0x81, 0x19, 0x00, 0xB0, 0xC3, 0xFF, 0xFF, 0x00},
+ {0xE8, 0xC7, 0x3D, 0xD6, 0x18, 0xC7, 0xFF, 0x83,
+ 0xC6, 0x1D, 0x01, 0x00, 0xC0, 0xFF, 0xFF, 0x07},
+ {0xEE, 0xDF, 0xFD, 0xFF, 0xFF, 0xFD, 0xFF, 0x23,
+ 0x1E, 0x00, 0x00, 0x27, 0xC3, 0xFF, 0x80, 0xFF},
+ {0xFD, 0xDF, 0xFD, 0xFF, 0xFF, 0xFD, 0xEF, 0x63,
+ 0x9B, 0x0D, 0x00, 0x60, 0xC3, 0xFF, 0x0E, 0x00},
+ {0xFC, 0xDF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7,
+ 0xC1, 0xDD, 0x70, 0xFF, 0xC3, 0xFF, 0xFF, 0xFF},
+ {0xEC, 0xFF, 0x7F, 0xFC, 0xFF, 0xFF, 0xFB, 0x2F,
+ 0x7F, 0x00, 0x03, 0x7F, 0xC0, 0xFF, 0x1C, 0x00},
+ {0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0D, 0x80,
+ 0x7F, 0x80, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00},
+ {0xD6, 0xF7, 0xFF, 0xFF, 0xAF, 0xFF, 0x0D, 0x20,
+ 0x5F, 0x00, 0xFF, 0xF3, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0x5F, 0xFD,
+ 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x80},
+ {0x20, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0,
+ 0xBF, 0xDF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x02, 0x99,
+ 0xFF, 0xFF, 0xFF, 0x3C, 0xFE, 0xFF, 0xE1, 0xFF},
+ {0x9B, 0xDF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xBF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x3D, 0x7F, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x7F,
+ 0x3D, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0x1F},
+ {0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x3F},
+ {0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01},
+ {0xFF, 0xFF, 0x23, 0x80, 0xFF, 0xFF, 0x73, 0x00,
+ 0xFF, 0xFF, 0x03, 0x00, 0xFF, 0xDF, 0x01, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F, 0xC0,
+ 0xBF, 0x01, 0xF0, 0x1F, 0xFF, 0x03, 0xFF, 0x03},
+ {0xFF, 0x07, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01},
+ {0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x7F, 0x78, 0x0E, 0xFB, 0x01,
+ 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF,
+ 0xFF, 0x03, 0xFF, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0x7F, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xBF, 0x00, 0x1A, 0xE0, 0x07, 0x00},
+ {0xFF, 0x03, 0xFF, 0x03, 0xFF, 0x3F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xE8,
+ 0xFB, 0x1F, 0xFF, 0xFF, 0xFF, 0x07, 0xF0, 0x7F},
+ {0xFC, 0xFF, 0xFF, 0xFF, 0xC3, 0xC4, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x5C, 0x0C, 0xF0},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x30, 0xF8,
+ 0xFF, 0xE3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7,
+ 0xFF, 0x00, 0x08, 0x00, 0x02, 0xDE, 0xEF, 0x04},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x3F, 0x3F, 0xFF, 0xAA, 0xFF, 0xFF, 0xFF, 0x3F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF,
+ 0xDF, 0xFF, 0xCF, 0xEF, 0xFF, 0xFF, 0xDC, 0x7F},
+ {0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xF3, 0xFF},
+ {0xFF, 0x7F, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00,
+ 0xFF, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF},
+ {0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x0C, 0xFE},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x20, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x01, 0x00},
+ {0xFF, 0xFF, 0x7F, 0x00, 0x7F, 0x7F, 0x7F, 0x7F,
+ 0x7F, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF,
+ 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0x7F, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x80, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x08, 0xC0},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xEB, 0x03, 0x00, 0x00, 0xFC, 0xFF},
+ {0xBB, 0xF7, 0xFF, 0xFF, 0x9F, 0x0F, 0xFF, 0x03,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x0F, 0xC0, 0xFF, 0x03, 0x00, 0x00, 0xFC, 0x7F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xC0, 0xFF, 0xFF,
+ 0x7F, 0x00, 0x0C, 0x80, 0xFF, 0xFF, 0xFF, 0x1F},
+ {0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x37, 0xCC,
+ 0xFF, 0xBF, 0xFF, 0xC3, 0xDF, 0xFF, 0xFF, 0x7F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x81, 0x19, 0x00,
+ 0xF7, 0x2F, 0xFF, 0xF3, 0xFF, 0xFF, 0xFF, 0xEF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x3E,
+ 0x05, 0x00, 0x00, 0xF8, 0xFF, 0xCF, 0x3F, 0x00},
+ {0x7E, 0x7E, 0x7E, 0x00, 0x7F, 0x7F, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x1E, 0xFF, 0x03},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xFF,
+ 0x7F, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0x00, 0xF8, 0xA0, 0xFF, 0xFF, 0x7F, 0x5F,
+ 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x07, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF},
+ {0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xF7, 0xFF, 0x7F, 0x0F, 0xDF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F},
+ {0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0x7F,
+ 0xFC, 0xFC, 0xFC, 0x1C, 0x7F, 0x7F, 0x00, 0x30},
+ {0xFF, 0xEF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xB7,
+ 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07},
+ {0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x7F, 0xFF, 0x1F, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F},
+ {0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0x0F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xE0, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x0F, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0x03, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x80, 0xFF, 0xF7},
+ {0xFF, 0xF7, 0xB7, 0xFF, 0xFB, 0xFF, 0xFB, 0x1B,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00,
+ 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0x00, 0x00, 0x00},
+ {0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x3F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x91,
+ 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0x7F, 0x80, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x37, 0xF8},
+ {0xFF, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xFF, 0x83,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0,
+ 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x01, 0x00, 0xEF, 0xFE, 0xFF, 0xFF, 0x3F, 0x00,
+ 0xFF, 0x01, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF8, 0x7F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFE,
+ 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0x07, 0xFF},
+ {0xFF, 0xFF, 0x03, 0x1E, 0x00, 0xFE, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFC},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x23, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF,
+ 0x3F, 0x00, 0xFE, 0x03, 0x00, 0x00, 0xFF, 0xFF},
+ {0xC3, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00},
+ {0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
+ 0x80, 0x3F, 0xFC, 0xFF, 0xFF, 0xFF, 0x26, 0x00},
+ {0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0xD9,
+ 0x03, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0x03},
+ {0xF8, 0xFF, 0xFF, 0xFF, 0x7F, 0x10, 0xC0, 0xFF,
+ 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x77, 0x00},
+ {0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x80,
+ 0xFF, 0x61, 0xFF, 0xFF, 0xFE, 0xFF, 0x1F, 0x00},
+ {0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x7F, 0x2C, 0xBF,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0xBD, 0xFF, 0xBF, 0xFF, 0x03, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x7F, 0x07, 0x00, 0xFF, 0x03},
+ {0xEC, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xED, 0xA3,
+ 0x9E, 0x39, 0x01, 0xE0, 0x0F, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
+ 0xA3, 0xFF, 0xFF, 0xAF, 0x03, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0x5A,
+ 0xF2, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x03, 0x4F,
+ 0xFE, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x58,
+ 0x1E, 0x00, 0xFF, 0x03, 0xFF, 0x1F, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x40, 0x03,
+ 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x07, 0x43, 0x00, 0xFF, 0xFF,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x09,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x80},
+ {0x7F, 0xF2, 0x6F, 0xFF, 0xFF, 0xFF, 0xBE, 0xA1,
+ 0x77, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x0F, 0xF0, 0x1E, 0x00, 0x00, 0x00},
+ {0x01, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x86,
+ 0x7F, 0x00, 0x81, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x03, 0x80, 0xFC, 0x07, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01},
+ {0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x40,
+ 0x3F, 0x00, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0x00, 0x00, 0x00, 0x02, 0x12, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00,
+ 0x40, 0x00, 0xFF, 0x03, 0xBF, 0xFD, 0xFF, 0xFF},
+ {0xFF, 0x7F, 0x58, 0x01, 0xFF, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xE7, 0x01},
+ {0xFC, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0x3F, 0xC0,
+ 0xFA, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x80},
+ {0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x1F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
+ 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xC3, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
+ 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0x3F, 0x20, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xFF,
+ 0x3F, 0x00, 0xFF, 0xFB, 0xFB, 0xFF, 0xFF, 0xE0},
+ {0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x00, 0xF8, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x03, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x6F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x04, 0x00,
+ 0x00, 0x00, 0x27, 0x00, 0xF0, 0x00, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0x1F},
+ {0xFF, 0x01, 0xFF, 0x93, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0x3C, 0x00, 0x00},
+ {0x18, 0xF0, 0xFF, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xFF, 0x0F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0x01},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xDF, 0x64, 0xDE, 0xFF, 0xEB,
+ 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xBF, 0xE7, 0xDF, 0xDF, 0xFF, 0xFF, 0xFF, 0x7B,
+ 0x5F, 0xFC, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xDF, 0xFF},
+ {0xEF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x7F, 0xE0, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x80, 0x3F,
+ 0xFF, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0x83},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0x03},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x7F, 0x6F, 0xFF, 0x7F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x9F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x0F, 0x08, 0xFF, 0xC3, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xEF, 0xFF, 0xFF, 0xFF, 0x96, 0xFE, 0xF7, 0x0A,
+ 0x84, 0xEA, 0x96, 0xAA, 0x96, 0xF7, 0xF7, 0x5E},
+ {0xFF, 0xFB, 0xFF, 0x0F, 0xEE, 0xFB, 0xFF, 0x0F,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0x7F, 0xFE, 0xFF,
+ 0xFE, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x3F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF},
+ {0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F,
+ 0xFF, 0x01, 0x03, 0x00, 0x3F, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0x1F, 0xFF, 0x1F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF8},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0x0F, 0x01, 0x00},
+ {0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x00, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0x3F, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0x3F, 0xFF, 0x1F},
+ {0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF,
+ 0x3F, 0xC0, 0xFF, 0x0F, 0xFF, 0x01, 0xFF, 0x01},
+ {0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_gr_base(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 128]], ch % 128);
}
diff --git a/lib/unicode/prop/uprop_is_gr_ext.c b/lib/unicode/prop/uprop_is_gr_ext.c
index 2889b07..22db705 100644
--- a/lib/unicode/prop/uprop_is_gr_ext.c
+++ b/lib/unicode/prop/uprop_is_gr_ext.c
@@ -1,384 +1,782 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000300), RUNE_C(0x00036F)},
- {RUNE_C(0x000483), RUNE_C(0x000489)},
- {RUNE_C(0x000591), RUNE_C(0x0005BD)},
- {RUNE_C(0x0005BF), RUNE_C(0x0005BF)},
- {RUNE_C(0x0005C1), RUNE_C(0x0005C2)},
- {RUNE_C(0x0005C4), RUNE_C(0x0005C5)},
- {RUNE_C(0x0005C7), RUNE_C(0x0005C7)},
- {RUNE_C(0x000610), RUNE_C(0x00061A)},
- {RUNE_C(0x00064B), RUNE_C(0x00065F)},
- {RUNE_C(0x000670), RUNE_C(0x000670)},
- {RUNE_C(0x0006D6), RUNE_C(0x0006DC)},
- {RUNE_C(0x0006DF), RUNE_C(0x0006E4)},
- {RUNE_C(0x0006E7), RUNE_C(0x0006E8)},
- {RUNE_C(0x0006EA), RUNE_C(0x0006ED)},
- {RUNE_C(0x000711), RUNE_C(0x000711)},
- {RUNE_C(0x000730), RUNE_C(0x00074A)},
- {RUNE_C(0x0007A6), RUNE_C(0x0007B0)},
- {RUNE_C(0x0007EB), RUNE_C(0x0007F3)},
- {RUNE_C(0x0007FD), RUNE_C(0x0007FD)},
- {RUNE_C(0x000816), RUNE_C(0x000819)},
- {RUNE_C(0x00081B), RUNE_C(0x000823)},
- {RUNE_C(0x000825), RUNE_C(0x000827)},
- {RUNE_C(0x000829), RUNE_C(0x00082D)},
- {RUNE_C(0x000859), RUNE_C(0x00085B)},
- {RUNE_C(0x000898), RUNE_C(0x00089F)},
- {RUNE_C(0x0008CA), RUNE_C(0x0008E1)},
- {RUNE_C(0x0008E3), RUNE_C(0x000902)},
- {RUNE_C(0x00093A), RUNE_C(0x00093A)},
- {RUNE_C(0x00093C), RUNE_C(0x00093C)},
- {RUNE_C(0x000941), RUNE_C(0x000948)},
- {RUNE_C(0x00094D), RUNE_C(0x00094D)},
- {RUNE_C(0x000951), RUNE_C(0x000957)},
- {RUNE_C(0x000962), RUNE_C(0x000963)},
- {RUNE_C(0x000981), RUNE_C(0x000981)},
- {RUNE_C(0x0009BC), RUNE_C(0x0009BC)},
- {RUNE_C(0x0009BE), RUNE_C(0x0009BE)},
- {RUNE_C(0x0009C1), RUNE_C(0x0009C4)},
- {RUNE_C(0x0009CD), RUNE_C(0x0009CD)},
- {RUNE_C(0x0009D7), RUNE_C(0x0009D7)},
- {RUNE_C(0x0009E2), RUNE_C(0x0009E3)},
- {RUNE_C(0x0009FE), RUNE_C(0x0009FE)},
- {RUNE_C(0x000A01), RUNE_C(0x000A02)},
- {RUNE_C(0x000A3C), RUNE_C(0x000A3C)},
- {RUNE_C(0x000A41), RUNE_C(0x000A42)},
- {RUNE_C(0x000A47), RUNE_C(0x000A48)},
- {RUNE_C(0x000A4B), RUNE_C(0x000A4D)},
- {RUNE_C(0x000A51), RUNE_C(0x000A51)},
- {RUNE_C(0x000A70), RUNE_C(0x000A71)},
- {RUNE_C(0x000A75), RUNE_C(0x000A75)},
- {RUNE_C(0x000A81), RUNE_C(0x000A82)},
- {RUNE_C(0x000ABC), RUNE_C(0x000ABC)},
- {RUNE_C(0x000AC1), RUNE_C(0x000AC5)},
- {RUNE_C(0x000AC7), RUNE_C(0x000AC8)},
- {RUNE_C(0x000ACD), RUNE_C(0x000ACD)},
- {RUNE_C(0x000AE2), RUNE_C(0x000AE3)},
- {RUNE_C(0x000AFA), RUNE_C(0x000AFF)},
- {RUNE_C(0x000B01), RUNE_C(0x000B01)},
- {RUNE_C(0x000B3C), RUNE_C(0x000B3C)},
- {RUNE_C(0x000B3E), RUNE_C(0x000B3F)},
- {RUNE_C(0x000B41), RUNE_C(0x000B44)},
- {RUNE_C(0x000B4D), RUNE_C(0x000B4D)},
- {RUNE_C(0x000B55), RUNE_C(0x000B57)},
- {RUNE_C(0x000B62), RUNE_C(0x000B63)},
- {RUNE_C(0x000B82), RUNE_C(0x000B82)},
- {RUNE_C(0x000BBE), RUNE_C(0x000BBE)},
- {RUNE_C(0x000BC0), RUNE_C(0x000BC0)},
- {RUNE_C(0x000BCD), RUNE_C(0x000BCD)},
- {RUNE_C(0x000BD7), RUNE_C(0x000BD7)},
- {RUNE_C(0x000C00), RUNE_C(0x000C00)},
- {RUNE_C(0x000C04), RUNE_C(0x000C04)},
- {RUNE_C(0x000C3C), RUNE_C(0x000C3C)},
- {RUNE_C(0x000C3E), RUNE_C(0x000C40)},
- {RUNE_C(0x000C46), RUNE_C(0x000C48)},
- {RUNE_C(0x000C4A), RUNE_C(0x000C4D)},
- {RUNE_C(0x000C55), RUNE_C(0x000C56)},
- {RUNE_C(0x000C62), RUNE_C(0x000C63)},
- {RUNE_C(0x000C81), RUNE_C(0x000C81)},
- {RUNE_C(0x000CBC), RUNE_C(0x000CBC)},
- {RUNE_C(0x000CBF), RUNE_C(0x000CBF)},
- {RUNE_C(0x000CC2), RUNE_C(0x000CC2)},
- {RUNE_C(0x000CC6), RUNE_C(0x000CC6)},
- {RUNE_C(0x000CCC), RUNE_C(0x000CCD)},
- {RUNE_C(0x000CD5), RUNE_C(0x000CD6)},
- {RUNE_C(0x000CE2), RUNE_C(0x000CE3)},
- {RUNE_C(0x000D00), RUNE_C(0x000D01)},
- {RUNE_C(0x000D3B), RUNE_C(0x000D3C)},
- {RUNE_C(0x000D3E), RUNE_C(0x000D3E)},
- {RUNE_C(0x000D41), RUNE_C(0x000D44)},
- {RUNE_C(0x000D4D), RUNE_C(0x000D4D)},
- {RUNE_C(0x000D57), RUNE_C(0x000D57)},
- {RUNE_C(0x000D62), RUNE_C(0x000D63)},
- {RUNE_C(0x000D81), RUNE_C(0x000D81)},
- {RUNE_C(0x000DCA), RUNE_C(0x000DCA)},
- {RUNE_C(0x000DCF), RUNE_C(0x000DCF)},
- {RUNE_C(0x000DD2), RUNE_C(0x000DD4)},
- {RUNE_C(0x000DD6), RUNE_C(0x000DD6)},
- {RUNE_C(0x000DDF), RUNE_C(0x000DDF)},
- {RUNE_C(0x000E31), RUNE_C(0x000E31)},
- {RUNE_C(0x000E34), RUNE_C(0x000E3A)},
- {RUNE_C(0x000E47), RUNE_C(0x000E4E)},
- {RUNE_C(0x000EB1), RUNE_C(0x000EB1)},
- {RUNE_C(0x000EB4), RUNE_C(0x000EBC)},
- {RUNE_C(0x000EC8), RUNE_C(0x000ECE)},
- {RUNE_C(0x000F18), RUNE_C(0x000F19)},
- {RUNE_C(0x000F35), RUNE_C(0x000F35)},
- {RUNE_C(0x000F37), RUNE_C(0x000F37)},
- {RUNE_C(0x000F39), RUNE_C(0x000F39)},
- {RUNE_C(0x000F71), RUNE_C(0x000F7E)},
- {RUNE_C(0x000F80), RUNE_C(0x000F84)},
- {RUNE_C(0x000F86), RUNE_C(0x000F87)},
- {RUNE_C(0x000F8D), RUNE_C(0x000F97)},
- {RUNE_C(0x000F99), RUNE_C(0x000FBC)},
- {RUNE_C(0x000FC6), RUNE_C(0x000FC6)},
- {RUNE_C(0x00102D), RUNE_C(0x001030)},
- {RUNE_C(0x001032), RUNE_C(0x001037)},
- {RUNE_C(0x001039), RUNE_C(0x00103A)},
- {RUNE_C(0x00103D), RUNE_C(0x00103E)},
- {RUNE_C(0x001058), RUNE_C(0x001059)},
- {RUNE_C(0x00105E), RUNE_C(0x001060)},
- {RUNE_C(0x001071), RUNE_C(0x001074)},
- {RUNE_C(0x001082), RUNE_C(0x001082)},
- {RUNE_C(0x001085), RUNE_C(0x001086)},
- {RUNE_C(0x00108D), RUNE_C(0x00108D)},
- {RUNE_C(0x00109D), RUNE_C(0x00109D)},
- {RUNE_C(0x00135D), RUNE_C(0x00135F)},
- {RUNE_C(0x001712), RUNE_C(0x001714)},
- {RUNE_C(0x001732), RUNE_C(0x001733)},
- {RUNE_C(0x001752), RUNE_C(0x001753)},
- {RUNE_C(0x001772), RUNE_C(0x001773)},
- {RUNE_C(0x0017B4), RUNE_C(0x0017B5)},
- {RUNE_C(0x0017B7), RUNE_C(0x0017BD)},
- {RUNE_C(0x0017C6), RUNE_C(0x0017C6)},
- {RUNE_C(0x0017C9), RUNE_C(0x0017D3)},
- {RUNE_C(0x0017DD), RUNE_C(0x0017DD)},
- {RUNE_C(0x00180B), RUNE_C(0x00180D)},
- {RUNE_C(0x00180F), RUNE_C(0x00180F)},
- {RUNE_C(0x001885), RUNE_C(0x001886)},
- {RUNE_C(0x0018A9), RUNE_C(0x0018A9)},
- {RUNE_C(0x001920), RUNE_C(0x001922)},
- {RUNE_C(0x001927), RUNE_C(0x001928)},
- {RUNE_C(0x001932), RUNE_C(0x001932)},
- {RUNE_C(0x001939), RUNE_C(0x00193B)},
- {RUNE_C(0x001A17), RUNE_C(0x001A18)},
- {RUNE_C(0x001A1B), RUNE_C(0x001A1B)},
- {RUNE_C(0x001A56), RUNE_C(0x001A56)},
- {RUNE_C(0x001A58), RUNE_C(0x001A5E)},
- {RUNE_C(0x001A60), RUNE_C(0x001A60)},
- {RUNE_C(0x001A62), RUNE_C(0x001A62)},
- {RUNE_C(0x001A65), RUNE_C(0x001A6C)},
- {RUNE_C(0x001A73), RUNE_C(0x001A7C)},
- {RUNE_C(0x001A7F), RUNE_C(0x001A7F)},
- {RUNE_C(0x001AB0), RUNE_C(0x001ACE)},
- {RUNE_C(0x001B00), RUNE_C(0x001B03)},
- {RUNE_C(0x001B34), RUNE_C(0x001B3A)},
- {RUNE_C(0x001B3C), RUNE_C(0x001B3C)},
- {RUNE_C(0x001B42), RUNE_C(0x001B42)},
- {RUNE_C(0x001B6B), RUNE_C(0x001B73)},
- {RUNE_C(0x001B80), RUNE_C(0x001B81)},
- {RUNE_C(0x001BA2), RUNE_C(0x001BA5)},
- {RUNE_C(0x001BA8), RUNE_C(0x001BA9)},
- {RUNE_C(0x001BAB), RUNE_C(0x001BAD)},
- {RUNE_C(0x001BE6), RUNE_C(0x001BE6)},
- {RUNE_C(0x001BE8), RUNE_C(0x001BE9)},
- {RUNE_C(0x001BED), RUNE_C(0x001BED)},
- {RUNE_C(0x001BEF), RUNE_C(0x001BF1)},
- {RUNE_C(0x001C2C), RUNE_C(0x001C33)},
- {RUNE_C(0x001C36), RUNE_C(0x001C37)},
- {RUNE_C(0x001CD0), RUNE_C(0x001CD2)},
- {RUNE_C(0x001CD4), RUNE_C(0x001CE0)},
- {RUNE_C(0x001CE2), RUNE_C(0x001CE8)},
- {RUNE_C(0x001CED), RUNE_C(0x001CED)},
- {RUNE_C(0x001CF4), RUNE_C(0x001CF4)},
- {RUNE_C(0x001CF8), RUNE_C(0x001CF9)},
- {RUNE_C(0x001DC0), RUNE_C(0x001DFF)},
- {RUNE_C(0x00200C), RUNE_C(0x00200C)},
- {RUNE_C(0x0020D0), RUNE_C(0x0020F0)},
- {RUNE_C(0x002CEF), RUNE_C(0x002CF1)},
- {RUNE_C(0x002D7F), RUNE_C(0x002D7F)},
- {RUNE_C(0x002DE0), RUNE_C(0x002DFF)},
- {RUNE_C(0x00302A), RUNE_C(0x00302F)},
- {RUNE_C(0x003099), RUNE_C(0x00309A)},
- {RUNE_C(0x00A66F), RUNE_C(0x00A672)},
- {RUNE_C(0x00A674), RUNE_C(0x00A67D)},
- {RUNE_C(0x00A69E), RUNE_C(0x00A69F)},
- {RUNE_C(0x00A6F0), RUNE_C(0x00A6F1)},
- {RUNE_C(0x00A802), RUNE_C(0x00A802)},
- {RUNE_C(0x00A806), RUNE_C(0x00A806)},
- {RUNE_C(0x00A80B), RUNE_C(0x00A80B)},
- {RUNE_C(0x00A825), RUNE_C(0x00A826)},
- {RUNE_C(0x00A82C), RUNE_C(0x00A82C)},
- {RUNE_C(0x00A8C4), RUNE_C(0x00A8C5)},
- {RUNE_C(0x00A8E0), RUNE_C(0x00A8F1)},
- {RUNE_C(0x00A8FF), RUNE_C(0x00A8FF)},
- {RUNE_C(0x00A926), RUNE_C(0x00A92D)},
- {RUNE_C(0x00A947), RUNE_C(0x00A951)},
- {RUNE_C(0x00A980), RUNE_C(0x00A982)},
- {RUNE_C(0x00A9B3), RUNE_C(0x00A9B3)},
- {RUNE_C(0x00A9B6), RUNE_C(0x00A9B9)},
- {RUNE_C(0x00A9BC), RUNE_C(0x00A9BD)},
- {RUNE_C(0x00A9E5), RUNE_C(0x00A9E5)},
- {RUNE_C(0x00AA29), RUNE_C(0x00AA2E)},
- {RUNE_C(0x00AA31), RUNE_C(0x00AA32)},
- {RUNE_C(0x00AA35), RUNE_C(0x00AA36)},
- {RUNE_C(0x00AA43), RUNE_C(0x00AA43)},
- {RUNE_C(0x00AA4C), RUNE_C(0x00AA4C)},
- {RUNE_C(0x00AA7C), RUNE_C(0x00AA7C)},
- {RUNE_C(0x00AAB0), RUNE_C(0x00AAB0)},
- {RUNE_C(0x00AAB2), RUNE_C(0x00AAB4)},
- {RUNE_C(0x00AAB7), RUNE_C(0x00AAB8)},
- {RUNE_C(0x00AABE), RUNE_C(0x00AABF)},
- {RUNE_C(0x00AAC1), RUNE_C(0x00AAC1)},
- {RUNE_C(0x00AAEC), RUNE_C(0x00AAED)},
- {RUNE_C(0x00AAF6), RUNE_C(0x00AAF6)},
- {RUNE_C(0x00ABE5), RUNE_C(0x00ABE5)},
- {RUNE_C(0x00ABE8), RUNE_C(0x00ABE8)},
- {RUNE_C(0x00ABED), RUNE_C(0x00ABED)},
- {RUNE_C(0x00FB1E), RUNE_C(0x00FB1E)},
- {RUNE_C(0x00FE00), RUNE_C(0x00FE0F)},
- {RUNE_C(0x00FE20), RUNE_C(0x00FE2F)},
- {RUNE_C(0x00FF9E), RUNE_C(0x00FF9F)},
- {RUNE_C(0x0101FD), RUNE_C(0x0101FD)},
- {RUNE_C(0x0102E0), RUNE_C(0x0102E0)},
- {RUNE_C(0x010376), RUNE_C(0x01037A)},
- {RUNE_C(0x010A01), RUNE_C(0x010A03)},
- {RUNE_C(0x010A05), RUNE_C(0x010A06)},
- {RUNE_C(0x010A0C), RUNE_C(0x010A0F)},
- {RUNE_C(0x010A38), RUNE_C(0x010A3A)},
- {RUNE_C(0x010A3F), RUNE_C(0x010A3F)},
- {RUNE_C(0x010AE5), RUNE_C(0x010AE6)},
- {RUNE_C(0x010D24), RUNE_C(0x010D27)},
- {RUNE_C(0x010EAB), RUNE_C(0x010EAC)},
- {RUNE_C(0x010EFD), RUNE_C(0x010EFF)},
- {RUNE_C(0x010F46), RUNE_C(0x010F50)},
- {RUNE_C(0x010F82), RUNE_C(0x010F85)},
- {RUNE_C(0x011001), RUNE_C(0x011001)},
- {RUNE_C(0x011038), RUNE_C(0x011046)},
- {RUNE_C(0x011070), RUNE_C(0x011070)},
- {RUNE_C(0x011073), RUNE_C(0x011074)},
- {RUNE_C(0x01107F), RUNE_C(0x011081)},
- {RUNE_C(0x0110B3), RUNE_C(0x0110B6)},
- {RUNE_C(0x0110B9), RUNE_C(0x0110BA)},
- {RUNE_C(0x0110C2), RUNE_C(0x0110C2)},
- {RUNE_C(0x011100), RUNE_C(0x011102)},
- {RUNE_C(0x011127), RUNE_C(0x01112B)},
- {RUNE_C(0x01112D), RUNE_C(0x011134)},
- {RUNE_C(0x011173), RUNE_C(0x011173)},
- {RUNE_C(0x011180), RUNE_C(0x011181)},
- {RUNE_C(0x0111B6), RUNE_C(0x0111BE)},
- {RUNE_C(0x0111C9), RUNE_C(0x0111CC)},
- {RUNE_C(0x0111CF), RUNE_C(0x0111CF)},
- {RUNE_C(0x01122F), RUNE_C(0x011231)},
- {RUNE_C(0x011234), RUNE_C(0x011234)},
- {RUNE_C(0x011236), RUNE_C(0x011237)},
- {RUNE_C(0x01123E), RUNE_C(0x01123E)},
- {RUNE_C(0x011241), RUNE_C(0x011241)},
- {RUNE_C(0x0112DF), RUNE_C(0x0112DF)},
- {RUNE_C(0x0112E3), RUNE_C(0x0112EA)},
- {RUNE_C(0x011300), RUNE_C(0x011301)},
- {RUNE_C(0x01133B), RUNE_C(0x01133C)},
- {RUNE_C(0x01133E), RUNE_C(0x01133E)},
- {RUNE_C(0x011340), RUNE_C(0x011340)},
- {RUNE_C(0x011357), RUNE_C(0x011357)},
- {RUNE_C(0x011366), RUNE_C(0x01136C)},
- {RUNE_C(0x011370), RUNE_C(0x011374)},
- {RUNE_C(0x011438), RUNE_C(0x01143F)},
- {RUNE_C(0x011442), RUNE_C(0x011444)},
- {RUNE_C(0x011446), RUNE_C(0x011446)},
- {RUNE_C(0x01145E), RUNE_C(0x01145E)},
- {RUNE_C(0x0114B0), RUNE_C(0x0114B0)},
- {RUNE_C(0x0114B3), RUNE_C(0x0114B8)},
- {RUNE_C(0x0114BA), RUNE_C(0x0114BA)},
- {RUNE_C(0x0114BD), RUNE_C(0x0114BD)},
- {RUNE_C(0x0114BF), RUNE_C(0x0114C0)},
- {RUNE_C(0x0114C2), RUNE_C(0x0114C3)},
- {RUNE_C(0x0115AF), RUNE_C(0x0115AF)},
- {RUNE_C(0x0115B2), RUNE_C(0x0115B5)},
- {RUNE_C(0x0115BC), RUNE_C(0x0115BD)},
- {RUNE_C(0x0115BF), RUNE_C(0x0115C0)},
- {RUNE_C(0x0115DC), RUNE_C(0x0115DD)},
- {RUNE_C(0x011633), RUNE_C(0x01163A)},
- {RUNE_C(0x01163D), RUNE_C(0x01163D)},
- {RUNE_C(0x01163F), RUNE_C(0x011640)},
- {RUNE_C(0x0116AB), RUNE_C(0x0116AB)},
- {RUNE_C(0x0116AD), RUNE_C(0x0116AD)},
- {RUNE_C(0x0116B0), RUNE_C(0x0116B5)},
- {RUNE_C(0x0116B7), RUNE_C(0x0116B7)},
- {RUNE_C(0x01171D), RUNE_C(0x01171F)},
- {RUNE_C(0x011722), RUNE_C(0x011725)},
- {RUNE_C(0x011727), RUNE_C(0x01172B)},
- {RUNE_C(0x01182F), RUNE_C(0x011837)},
- {RUNE_C(0x011839), RUNE_C(0x01183A)},
- {RUNE_C(0x011930), RUNE_C(0x011930)},
- {RUNE_C(0x01193B), RUNE_C(0x01193C)},
- {RUNE_C(0x01193E), RUNE_C(0x01193E)},
- {RUNE_C(0x011943), RUNE_C(0x011943)},
- {RUNE_C(0x0119D4), RUNE_C(0x0119D7)},
- {RUNE_C(0x0119DA), RUNE_C(0x0119DB)},
- {RUNE_C(0x0119E0), RUNE_C(0x0119E0)},
- {RUNE_C(0x011A01), RUNE_C(0x011A0A)},
- {RUNE_C(0x011A33), RUNE_C(0x011A38)},
- {RUNE_C(0x011A3B), RUNE_C(0x011A3E)},
- {RUNE_C(0x011A47), RUNE_C(0x011A47)},
- {RUNE_C(0x011A51), RUNE_C(0x011A56)},
- {RUNE_C(0x011A59), RUNE_C(0x011A5B)},
- {RUNE_C(0x011A8A), RUNE_C(0x011A96)},
- {RUNE_C(0x011A98), RUNE_C(0x011A99)},
- {RUNE_C(0x011C30), RUNE_C(0x011C36)},
- {RUNE_C(0x011C38), RUNE_C(0x011C3D)},
- {RUNE_C(0x011C3F), RUNE_C(0x011C3F)},
- {RUNE_C(0x011C92), RUNE_C(0x011CA7)},
- {RUNE_C(0x011CAA), RUNE_C(0x011CB0)},
- {RUNE_C(0x011CB2), RUNE_C(0x011CB3)},
- {RUNE_C(0x011CB5), RUNE_C(0x011CB6)},
- {RUNE_C(0x011D31), RUNE_C(0x011D36)},
- {RUNE_C(0x011D3A), RUNE_C(0x011D3A)},
- {RUNE_C(0x011D3C), RUNE_C(0x011D3D)},
- {RUNE_C(0x011D3F), RUNE_C(0x011D45)},
- {RUNE_C(0x011D47), RUNE_C(0x011D47)},
- {RUNE_C(0x011D90), RUNE_C(0x011D91)},
- {RUNE_C(0x011D95), RUNE_C(0x011D95)},
- {RUNE_C(0x011D97), RUNE_C(0x011D97)},
- {RUNE_C(0x011EF3), RUNE_C(0x011EF4)},
- {RUNE_C(0x011F00), RUNE_C(0x011F01)},
- {RUNE_C(0x011F36), RUNE_C(0x011F3A)},
- {RUNE_C(0x011F40), RUNE_C(0x011F40)},
- {RUNE_C(0x011F42), RUNE_C(0x011F42)},
- {RUNE_C(0x013440), RUNE_C(0x013440)},
- {RUNE_C(0x013447), RUNE_C(0x013455)},
- {RUNE_C(0x016AF0), RUNE_C(0x016AF4)},
- {RUNE_C(0x016B30), RUNE_C(0x016B36)},
- {RUNE_C(0x016F4F), RUNE_C(0x016F4F)},
- {RUNE_C(0x016F8F), RUNE_C(0x016F92)},
- {RUNE_C(0x016FE4), RUNE_C(0x016FE4)},
- {RUNE_C(0x01BC9D), RUNE_C(0x01BC9E)},
- {RUNE_C(0x01CF00), RUNE_C(0x01CF2D)},
- {RUNE_C(0x01CF30), RUNE_C(0x01CF46)},
- {RUNE_C(0x01D165), RUNE_C(0x01D165)},
- {RUNE_C(0x01D167), RUNE_C(0x01D169)},
- {RUNE_C(0x01D16E), RUNE_C(0x01D172)},
- {RUNE_C(0x01D17B), RUNE_C(0x01D182)},
- {RUNE_C(0x01D185), RUNE_C(0x01D18B)},
- {RUNE_C(0x01D1AA), RUNE_C(0x01D1AD)},
- {RUNE_C(0x01D242), RUNE_C(0x01D244)},
- {RUNE_C(0x01DA00), RUNE_C(0x01DA36)},
- {RUNE_C(0x01DA3B), RUNE_C(0x01DA6C)},
- {RUNE_C(0x01DA75), RUNE_C(0x01DA75)},
- {RUNE_C(0x01DA84), RUNE_C(0x01DA84)},
- {RUNE_C(0x01DA9B), RUNE_C(0x01DA9F)},
- {RUNE_C(0x01DAA1), RUNE_C(0x01DAAF)},
- {RUNE_C(0x01E000), RUNE_C(0x01E006)},
- {RUNE_C(0x01E008), RUNE_C(0x01E018)},
- {RUNE_C(0x01E01B), RUNE_C(0x01E021)},
- {RUNE_C(0x01E023), RUNE_C(0x01E024)},
- {RUNE_C(0x01E026), RUNE_C(0x01E02A)},
- {RUNE_C(0x01E08F), RUNE_C(0x01E08F)},
- {RUNE_C(0x01E130), RUNE_C(0x01E136)},
- {RUNE_C(0x01E2AE), RUNE_C(0x01E2AE)},
- {RUNE_C(0x01E2EC), RUNE_C(0x01E2EF)},
- {RUNE_C(0x01E4EC), RUNE_C(0x01E4EF)},
- {RUNE_C(0x01E8D0), RUNE_C(0x01E8D6)},
- {RUNE_C(0x01E944), RUNE_C(0x01E94A)},
- {RUNE_C(0x0E0020), RUNE_C(0x0E007F)},
- {RUNE_C(0x0E0100), RUNE_C(0x0E01EF)},
+static constexpr uint8_t stage1[] = {
+ 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 27, 28,
+ 29, 30, 31, 0, 32, 33, 34, 35, 36, 37, 0, 38, 0, 0, 0, 0,
+ 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 42, 43, 0, 0, 0, 0,
+ 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 47, 0, 0,
+ 48, 49, 50, 51, 52, 53, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 56, 0, 0, 57,
+ 0, 0, 0, 58, 0, 59, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 61, 62, 0, 0, 0, 0, 63, 0, 0, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 0, 74, 75, 0, 76, 77, 78, 79, 0,
+ 80, 0, 81, 82, 83, 84, 0, 0, 85, 86, 87, 88, 0, 89, 90, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 92, 93, 0, 0, 0, 0, 0, 0, 0, 94, 95,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0,
+ 0, 0, 98, 99, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 101, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 103, 104, 93, 0, 0, 105, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0,
+ 0, 107, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 109, 0, 110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
+static constexpr unsigned char stage2[][16] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00},
+ {0xF8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF,
+ 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xF8, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xC0, 0x9F, 0x9F, 0x3D, 0x00, 0x00},
+ {0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x0F, 0x20},
+ {0x00, 0x00, 0xC0, 0xFB, 0xEF, 0x3E, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xFC, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF},
+ {0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14,
+ 0xFE, 0x21, 0xFE, 0x00, 0x0C, 0x00, 0x00, 0x00},
+ {0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
+ 0x1E, 0x20, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x40},
+ {0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+ 0x86, 0x39, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00},
+ {0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+ 0xBE, 0x21, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xFC},
+ {0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0,
+ 0x1E, 0x20, 0xE0, 0x00, 0x0C, 0x00, 0x00, 0x00},
+ {0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+ 0x01, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0,
+ 0xC1, 0x3D, 0x60, 0x00, 0x0C, 0x00, 0x00, 0x00},
+ {0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90,
+ 0x44, 0x30, 0x60, 0x00, 0x0C, 0x00, 0x00, 0x00},
+ {0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58,
+ 0x1E, 0x20, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x00},
+ {0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x84, 0x5C, 0x80, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x07,
+ 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x1F,
+ 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xA0, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x7F},
+ {0xDF, 0xE0, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x1F,
+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFD, 0x66,
+ 0x00, 0x00, 0x00, 0xC3, 0x01, 0x00, 0x1E, 0x00},
+ {0x64, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x0C, 0x00,
+ 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x3F,
+ 0x40, 0xFE, 0x0F, 0x20, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x60, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x87, 0x01, 0x04, 0x0E,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x80, 0x09, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x40, 0x7F, 0xE5, 0x1F, 0xF8, 0x9F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x17,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x0F, 0x00},
+ {0x03, 0x00, 0x00, 0x00, 0x3C, 0x3B, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x40, 0xA3, 0x03, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xCF, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xF7, 0xFF, 0xFD, 0x21, 0x10, 0x03},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF7, 0x3F},
+ {0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00},
+ {0x44, 0x08, 0x00, 0x00, 0x60, 0x10, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x30, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x80},
+ {0x00, 0x00, 0x00, 0x00, 0xC0, 0x3F, 0x00, 0x00,
+ 0x80, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x33,
+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x66, 0x00,
+ 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9D, 0xC1,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x30, 0x40, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x21, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x07},
+ {0x6E, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xC0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x80},
+ {0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x06,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x07, 0x00, 0x00, 0x00, 0x80, 0xEF, 0x1F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00},
+ {0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x7F,
+ 0x00, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xD3, 0x40,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0xF8, 0x07, 0x00, 0x00},
+ {0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58,
+ 0x01, 0x00, 0x80, 0x00, 0xC0, 0x1F, 0x1F, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
+ 0x5C, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xA5,
+ 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3C, 0xB0,
+ 0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xA7,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xBF, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0xE0, 0xBC, 0x0F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x06,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x58,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xF0, 0x0C, 0x01, 0x00, 0x00, 0x00},
+ {0xFE, 0x07, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x79,
+ 0x80, 0x00, 0x7E, 0x0E, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0xFC, 0x7F, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xBF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFC, 0x6D, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xB4,
+ 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00},
+ {0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x07,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x81, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xA0, 0xC3, 0x07, 0xF8},
+ {0xE7, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF8,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x20, 0x00},
+ {0x10, 0x00, 0x00, 0xF8, 0xFE, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0xFF, 0xFF, 0xF9, 0xDB, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xF0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+};
bool
uprop_is_gr_ext(rune ch)
{
- return mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 128]], ch % 128);
}
diff --git a/lib/unicode/prop/uprop_is_hex.c b/lib/unicode/prop/uprop_is_hex.c
index c303e69..d0bf5cc 100644
--- a/lib/unicode/prop/uprop_is_hex.c
+++ b/lib/unicode/prop/uprop_is_hex.c
@@ -1,31 +1,176 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
- 0x7E, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x00FF10), RUNE_C(0x00FF19)},
- {RUNE_C(0x00FF21), RUNE_C(0x00FF26)},
- {RUNE_C(0x00FF41), RUNE_C(0x00FF46)},
+static constexpr unsigned char stage2[][64] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
+ 0x7E, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0x03, 0x7E, 0x00, 0x00, 0x00,
+ 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_hex(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 512]], ch % 512);
}
diff --git a/lib/unicode/prop/uprop_is_id_compat_math_continue.c b/lib/unicode/prop/uprop_is_id_compat_math_continue.c
index 51cd8e0..9286202 100644
--- a/lib/unicode/prop/uprop_is_id_compat_math_continue.c
+++ b/lib/unicode/prop/uprop_is_id_compat_math_continue.c
@@ -1,44 +1,192 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x02,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x002070), RUNE_C(0x002070)},
- {RUNE_C(0x002074), RUNE_C(0x00207E)},
- {RUNE_C(0x002080), RUNE_C(0x00208E)},
- {RUNE_C(0x002202), RUNE_C(0x002202)},
- {RUNE_C(0x002207), RUNE_C(0x002207)},
- {RUNE_C(0x00221E), RUNE_C(0x00221E)},
- {RUNE_C(0x01D6C1), RUNE_C(0x01D6C1)},
- {RUNE_C(0x01D6DB), RUNE_C(0x01D6DB)},
- {RUNE_C(0x01D6FB), RUNE_C(0x01D6FB)},
- {RUNE_C(0x01D715), RUNE_C(0x01D715)},
- {RUNE_C(0x01D735), RUNE_C(0x01D735)},
- {RUNE_C(0x01D74F), RUNE_C(0x01D74F)},
- {RUNE_C(0x01D76F), RUNE_C(0x01D76F)},
- {RUNE_C(0x01D789), RUNE_C(0x01D789)},
- {RUNE_C(0x01D7A9), RUNE_C(0x01D7A9)},
- {RUNE_C(0x01D7C3), RUNE_C(0x01D7C3)},
+static constexpr unsigned char stage2[][64] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0x7F,
+ 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x84, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08,
+ 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+ 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_id_compat_math_continue(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 512]], ch % 512);
}
diff --git a/lib/unicode/prop/uprop_is_id_compat_math_start.c b/lib/unicode/prop/uprop_is_id_compat_math_start.c
index 9da9cdf..b7121c1 100644
--- a/lib/unicode/prop/uprop_is_id_compat_math_start.c
+++ b/lib/unicode/prop/uprop_is_id_compat_math_start.c
@@ -1,34 +1,176 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x002202), RUNE_C(0x002202)},
- {RUNE_C(0x002207), RUNE_C(0x002207)},
- {RUNE_C(0x00221E), RUNE_C(0x00221E)},
- {RUNE_C(0x01D6C1), RUNE_C(0x01D6C1)},
- {RUNE_C(0x01D6DB), RUNE_C(0x01D6DB)},
- {RUNE_C(0x01D6FB), RUNE_C(0x01D6FB)},
- {RUNE_C(0x01D715), RUNE_C(0x01D715)},
- {RUNE_C(0x01D735), RUNE_C(0x01D735)},
- {RUNE_C(0x01D74F), RUNE_C(0x01D74F)},
- {RUNE_C(0x01D76F), RUNE_C(0x01D76F)},
- {RUNE_C(0x01D789), RUNE_C(0x01D789)},
- {RUNE_C(0x01D7A9), RUNE_C(0x01D7A9)},
- {RUNE_C(0x01D7C3), RUNE_C(0x01D7C3)},
+static constexpr uint8_t stage1[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
+static constexpr unsigned char stage2[][64] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x84, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08,
+ 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+ 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+};
bool
uprop_is_id_compat_math_start(rune ch)
{
- return mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 512]], ch % 512);
}
diff --git a/lib/unicode/prop/uprop_is_idc.c b/lib/unicode/prop/uprop_is_idc.c
index 3b79afd..387628f 100644
--- a/lib/unicode/prop/uprop_is_idc.c
+++ b/lib/unicode/prop/uprop_is_idc.c
@@ -1,787 +1,950 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
- 0xFE, 0xFF, 0xFF, 0x87, 0xFE, 0xFF, 0xFF, 0x07,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xA0, 0x04,
- 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 2, 2, 2, 3, 4, 5, 2, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 2, 2, 31, 32, 33, 34, 35, 2, 2, 2, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 2, 2, 2, 2, 50, 51,
+ 52, 53, 54, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 2, 57, 58, 59, 56, 56, 56, 56,
+ 60, 61, 62, 63, 56, 56, 56, 56, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 64, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 65, 2, 2, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 78,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 2, 2, 79, 80, 81, 82, 2, 2, 83, 84, 85, 86, 87, 88,
+ 89, 90, 91, 92, 56, 93, 94, 95, 2, 96, 97, 98, 2, 2, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 56, 56, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 56, 122, 123, 56, 124, 125, 126, 127, 56,
+ 128, 129, 130, 131, 132, 133, 56, 56, 134, 135, 136, 137, 56, 138, 139, 140,
+ 2, 2, 2, 2, 2, 2, 2, 141, 142, 2, 143, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 144,
+ 2, 2, 2, 2, 2, 2, 2, 2, 145, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 2, 2, 2, 2, 146, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 2, 2, 2, 2, 147, 148, 149, 150, 56, 56, 56, 56, 151, 56, 152, 153,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 154,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 155, 55, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 156,
+ 2, 2, 157, 2, 2, 158, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 159, 160, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 161, 56,
+ 56, 56, 162, 163, 164, 56, 56, 56, 165, 166, 167, 2, 2, 168, 169, 170,
+ 56, 56, 56, 56, 171, 172, 56, 56, 56, 56, 56, 56, 56, 56, 173, 56,
+ 174, 175, 176, 56, 56, 177, 56, 56, 56, 178, 56, 56, 56, 56, 56, 179,
+ 2, 180, 181, 56, 56, 56, 56, 56, 56, 56, 56, 56, 182, 183, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 184, 56, 56, 56, 56, 56, 56, 56, 56,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 185, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 186, 2,
+ 187, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 188, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 189, 2, 2, 2, 2, 190, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 2, 2, 2, 2, 191, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 192, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 193, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 2, 194, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000100), RUNE_C(0x0002C1)},
- {RUNE_C(0x0002C6), RUNE_C(0x0002D1)},
- {RUNE_C(0x0002E0), RUNE_C(0x0002E4)},
- {RUNE_C(0x0002EC), RUNE_C(0x0002EC)},
- {RUNE_C(0x0002EE), RUNE_C(0x0002EE)},
- {RUNE_C(0x000300), RUNE_C(0x000374)},
- {RUNE_C(0x000376), RUNE_C(0x000377)},
- {RUNE_C(0x00037A), RUNE_C(0x00037D)},
- {RUNE_C(0x00037F), RUNE_C(0x00037F)},
- {RUNE_C(0x000386), RUNE_C(0x00038A)},
- {RUNE_C(0x00038C), RUNE_C(0x00038C)},
- {RUNE_C(0x00038E), RUNE_C(0x0003A1)},
- {RUNE_C(0x0003A3), RUNE_C(0x0003F5)},
- {RUNE_C(0x0003F7), RUNE_C(0x000481)},
- {RUNE_C(0x000483), RUNE_C(0x000487)},
- {RUNE_C(0x00048A), RUNE_C(0x00052F)},
- {RUNE_C(0x000531), RUNE_C(0x000556)},
- {RUNE_C(0x000559), RUNE_C(0x000559)},
- {RUNE_C(0x000560), RUNE_C(0x000588)},
- {RUNE_C(0x000591), RUNE_C(0x0005BD)},
- {RUNE_C(0x0005BF), RUNE_C(0x0005BF)},
- {RUNE_C(0x0005C1), RUNE_C(0x0005C2)},
- {RUNE_C(0x0005C4), RUNE_C(0x0005C5)},
- {RUNE_C(0x0005C7), RUNE_C(0x0005C7)},
- {RUNE_C(0x0005D0), RUNE_C(0x0005EA)},
- {RUNE_C(0x0005EF), RUNE_C(0x0005F2)},
- {RUNE_C(0x000610), RUNE_C(0x00061A)},
- {RUNE_C(0x000620), RUNE_C(0x000669)},
- {RUNE_C(0x00066E), RUNE_C(0x0006D3)},
- {RUNE_C(0x0006D5), RUNE_C(0x0006DC)},
- {RUNE_C(0x0006DF), RUNE_C(0x0006E8)},
- {RUNE_C(0x0006EA), RUNE_C(0x0006FC)},
- {RUNE_C(0x0006FF), RUNE_C(0x0006FF)},
- {RUNE_C(0x000710), RUNE_C(0x00074A)},
- {RUNE_C(0x00074D), RUNE_C(0x0007B1)},
- {RUNE_C(0x0007C0), RUNE_C(0x0007F5)},
- {RUNE_C(0x0007FA), RUNE_C(0x0007FA)},
- {RUNE_C(0x0007FD), RUNE_C(0x0007FD)},
- {RUNE_C(0x000800), RUNE_C(0x00082D)},
- {RUNE_C(0x000840), RUNE_C(0x00085B)},
- {RUNE_C(0x000860), RUNE_C(0x00086A)},
- {RUNE_C(0x000870), RUNE_C(0x000887)},
- {RUNE_C(0x000889), RUNE_C(0x00088E)},
- {RUNE_C(0x000898), RUNE_C(0x0008E1)},
- {RUNE_C(0x0008E3), RUNE_C(0x000963)},
- {RUNE_C(0x000966), RUNE_C(0x00096F)},
- {RUNE_C(0x000971), RUNE_C(0x000983)},
- {RUNE_C(0x000985), RUNE_C(0x00098C)},
- {RUNE_C(0x00098F), RUNE_C(0x000990)},
- {RUNE_C(0x000993), RUNE_C(0x0009A8)},
- {RUNE_C(0x0009AA), RUNE_C(0x0009B0)},
- {RUNE_C(0x0009B2), RUNE_C(0x0009B2)},
- {RUNE_C(0x0009B6), RUNE_C(0x0009B9)},
- {RUNE_C(0x0009BC), RUNE_C(0x0009C4)},
- {RUNE_C(0x0009C7), RUNE_C(0x0009C8)},
- {RUNE_C(0x0009CB), RUNE_C(0x0009CE)},
- {RUNE_C(0x0009D7), RUNE_C(0x0009D7)},
- {RUNE_C(0x0009DC), RUNE_C(0x0009DD)},
- {RUNE_C(0x0009DF), RUNE_C(0x0009E3)},
- {RUNE_C(0x0009E6), RUNE_C(0x0009F1)},
- {RUNE_C(0x0009FC), RUNE_C(0x0009FC)},
- {RUNE_C(0x0009FE), RUNE_C(0x0009FE)},
- {RUNE_C(0x000A01), RUNE_C(0x000A03)},
- {RUNE_C(0x000A05), RUNE_C(0x000A0A)},
- {RUNE_C(0x000A0F), RUNE_C(0x000A10)},
- {RUNE_C(0x000A13), RUNE_C(0x000A28)},
- {RUNE_C(0x000A2A), RUNE_C(0x000A30)},
- {RUNE_C(0x000A32), RUNE_C(0x000A33)},
- {RUNE_C(0x000A35), RUNE_C(0x000A36)},
- {RUNE_C(0x000A38), RUNE_C(0x000A39)},
- {RUNE_C(0x000A3C), RUNE_C(0x000A3C)},
- {RUNE_C(0x000A3E), RUNE_C(0x000A42)},
- {RUNE_C(0x000A47), RUNE_C(0x000A48)},
- {RUNE_C(0x000A4B), RUNE_C(0x000A4D)},
- {RUNE_C(0x000A51), RUNE_C(0x000A51)},
- {RUNE_C(0x000A59), RUNE_C(0x000A5C)},
- {RUNE_C(0x000A5E), RUNE_C(0x000A5E)},
- {RUNE_C(0x000A66), RUNE_C(0x000A75)},
- {RUNE_C(0x000A81), RUNE_C(0x000A83)},
- {RUNE_C(0x000A85), RUNE_C(0x000A8D)},
- {RUNE_C(0x000A8F), RUNE_C(0x000A91)},
- {RUNE_C(0x000A93), RUNE_C(0x000AA8)},
- {RUNE_C(0x000AAA), RUNE_C(0x000AB0)},
- {RUNE_C(0x000AB2), RUNE_C(0x000AB3)},
- {RUNE_C(0x000AB5), RUNE_C(0x000AB9)},
- {RUNE_C(0x000ABC), RUNE_C(0x000AC5)},
- {RUNE_C(0x000AC7), RUNE_C(0x000AC9)},
- {RUNE_C(0x000ACB), RUNE_C(0x000ACD)},
- {RUNE_C(0x000AD0), RUNE_C(0x000AD0)},
- {RUNE_C(0x000AE0), RUNE_C(0x000AE3)},
- {RUNE_C(0x000AE6), RUNE_C(0x000AEF)},
- {RUNE_C(0x000AF9), RUNE_C(0x000AFF)},
- {RUNE_C(0x000B01), RUNE_C(0x000B03)},
- {RUNE_C(0x000B05), RUNE_C(0x000B0C)},
- {RUNE_C(0x000B0F), RUNE_C(0x000B10)},
- {RUNE_C(0x000B13), RUNE_C(0x000B28)},
- {RUNE_C(0x000B2A), RUNE_C(0x000B30)},
- {RUNE_C(0x000B32), RUNE_C(0x000B33)},
- {RUNE_C(0x000B35), RUNE_C(0x000B39)},
- {RUNE_C(0x000B3C), RUNE_C(0x000B44)},
- {RUNE_C(0x000B47), RUNE_C(0x000B48)},
- {RUNE_C(0x000B4B), RUNE_C(0x000B4D)},
- {RUNE_C(0x000B55), RUNE_C(0x000B57)},
- {RUNE_C(0x000B5C), RUNE_C(0x000B5D)},
- {RUNE_C(0x000B5F), RUNE_C(0x000B63)},
- {RUNE_C(0x000B66), RUNE_C(0x000B6F)},
- {RUNE_C(0x000B71), RUNE_C(0x000B71)},
- {RUNE_C(0x000B82), RUNE_C(0x000B83)},
- {RUNE_C(0x000B85), RUNE_C(0x000B8A)},
- {RUNE_C(0x000B8E), RUNE_C(0x000B90)},
- {RUNE_C(0x000B92), RUNE_C(0x000B95)},
- {RUNE_C(0x000B99), RUNE_C(0x000B9A)},
- {RUNE_C(0x000B9C), RUNE_C(0x000B9C)},
- {RUNE_C(0x000B9E), RUNE_C(0x000B9F)},
- {RUNE_C(0x000BA3), RUNE_C(0x000BA4)},
- {RUNE_C(0x000BA8), RUNE_C(0x000BAA)},
- {RUNE_C(0x000BAE), RUNE_C(0x000BB9)},
- {RUNE_C(0x000BBE), RUNE_C(0x000BC2)},
- {RUNE_C(0x000BC6), RUNE_C(0x000BC8)},
- {RUNE_C(0x000BCA), RUNE_C(0x000BCD)},
- {RUNE_C(0x000BD0), RUNE_C(0x000BD0)},
- {RUNE_C(0x000BD7), RUNE_C(0x000BD7)},
- {RUNE_C(0x000BE6), RUNE_C(0x000BEF)},
- {RUNE_C(0x000C00), RUNE_C(0x000C0C)},
- {RUNE_C(0x000C0E), RUNE_C(0x000C10)},
- {RUNE_C(0x000C12), RUNE_C(0x000C28)},
- {RUNE_C(0x000C2A), RUNE_C(0x000C39)},
- {RUNE_C(0x000C3C), RUNE_C(0x000C44)},
- {RUNE_C(0x000C46), RUNE_C(0x000C48)},
- {RUNE_C(0x000C4A), RUNE_C(0x000C4D)},
- {RUNE_C(0x000C55), RUNE_C(0x000C56)},
- {RUNE_C(0x000C58), RUNE_C(0x000C5A)},
- {RUNE_C(0x000C5D), RUNE_C(0x000C5D)},
- {RUNE_C(0x000C60), RUNE_C(0x000C63)},
- {RUNE_C(0x000C66), RUNE_C(0x000C6F)},
- {RUNE_C(0x000C80), RUNE_C(0x000C83)},
- {RUNE_C(0x000C85), RUNE_C(0x000C8C)},
- {RUNE_C(0x000C8E), RUNE_C(0x000C90)},
- {RUNE_C(0x000C92), RUNE_C(0x000CA8)},
- {RUNE_C(0x000CAA), RUNE_C(0x000CB3)},
- {RUNE_C(0x000CB5), RUNE_C(0x000CB9)},
- {RUNE_C(0x000CBC), RUNE_C(0x000CC4)},
- {RUNE_C(0x000CC6), RUNE_C(0x000CC8)},
- {RUNE_C(0x000CCA), RUNE_C(0x000CCD)},
- {RUNE_C(0x000CD5), RUNE_C(0x000CD6)},
- {RUNE_C(0x000CDD), RUNE_C(0x000CDE)},
- {RUNE_C(0x000CE0), RUNE_C(0x000CE3)},
- {RUNE_C(0x000CE6), RUNE_C(0x000CEF)},
- {RUNE_C(0x000CF1), RUNE_C(0x000CF3)},
- {RUNE_C(0x000D00), RUNE_C(0x000D0C)},
- {RUNE_C(0x000D0E), RUNE_C(0x000D10)},
- {RUNE_C(0x000D12), RUNE_C(0x000D44)},
- {RUNE_C(0x000D46), RUNE_C(0x000D48)},
- {RUNE_C(0x000D4A), RUNE_C(0x000D4E)},
- {RUNE_C(0x000D54), RUNE_C(0x000D57)},
- {RUNE_C(0x000D5F), RUNE_C(0x000D63)},
- {RUNE_C(0x000D66), RUNE_C(0x000D6F)},
- {RUNE_C(0x000D7A), RUNE_C(0x000D7F)},
- {RUNE_C(0x000D81), RUNE_C(0x000D83)},
- {RUNE_C(0x000D85), RUNE_C(0x000D96)},
- {RUNE_C(0x000D9A), RUNE_C(0x000DB1)},
- {RUNE_C(0x000DB3), RUNE_C(0x000DBB)},
- {RUNE_C(0x000DBD), RUNE_C(0x000DBD)},
- {RUNE_C(0x000DC0), RUNE_C(0x000DC6)},
- {RUNE_C(0x000DCA), RUNE_C(0x000DCA)},
- {RUNE_C(0x000DCF), RUNE_C(0x000DD4)},
- {RUNE_C(0x000DD6), RUNE_C(0x000DD6)},
- {RUNE_C(0x000DD8), RUNE_C(0x000DDF)},
- {RUNE_C(0x000DE6), RUNE_C(0x000DEF)},
- {RUNE_C(0x000DF2), RUNE_C(0x000DF3)},
- {RUNE_C(0x000E01), RUNE_C(0x000E3A)},
- {RUNE_C(0x000E40), RUNE_C(0x000E4E)},
- {RUNE_C(0x000E50), RUNE_C(0x000E59)},
- {RUNE_C(0x000E81), RUNE_C(0x000E82)},
- {RUNE_C(0x000E84), RUNE_C(0x000E84)},
- {RUNE_C(0x000E86), RUNE_C(0x000E8A)},
- {RUNE_C(0x000E8C), RUNE_C(0x000EA3)},
- {RUNE_C(0x000EA5), RUNE_C(0x000EA5)},
- {RUNE_C(0x000EA7), RUNE_C(0x000EBD)},
- {RUNE_C(0x000EC0), RUNE_C(0x000EC4)},
- {RUNE_C(0x000EC6), RUNE_C(0x000EC6)},
- {RUNE_C(0x000EC8), RUNE_C(0x000ECE)},
- {RUNE_C(0x000ED0), RUNE_C(0x000ED9)},
- {RUNE_C(0x000EDC), RUNE_C(0x000EDF)},
- {RUNE_C(0x000F00), RUNE_C(0x000F00)},
- {RUNE_C(0x000F18), RUNE_C(0x000F19)},
- {RUNE_C(0x000F20), RUNE_C(0x000F29)},
- {RUNE_C(0x000F35), RUNE_C(0x000F35)},
- {RUNE_C(0x000F37), RUNE_C(0x000F37)},
- {RUNE_C(0x000F39), RUNE_C(0x000F39)},
- {RUNE_C(0x000F3E), RUNE_C(0x000F47)},
- {RUNE_C(0x000F49), RUNE_C(0x000F6C)},
- {RUNE_C(0x000F71), RUNE_C(0x000F84)},
- {RUNE_C(0x000F86), RUNE_C(0x000F97)},
- {RUNE_C(0x000F99), RUNE_C(0x000FBC)},
- {RUNE_C(0x000FC6), RUNE_C(0x000FC6)},
- {RUNE_C(0x001000), RUNE_C(0x001049)},
- {RUNE_C(0x001050), RUNE_C(0x00109D)},
- {RUNE_C(0x0010A0), RUNE_C(0x0010C5)},
- {RUNE_C(0x0010C7), RUNE_C(0x0010C7)},
- {RUNE_C(0x0010CD), RUNE_C(0x0010CD)},
- {RUNE_C(0x0010D0), RUNE_C(0x0010FA)},
- {RUNE_C(0x0010FC), RUNE_C(0x001248)},
- {RUNE_C(0x00124A), RUNE_C(0x00124D)},
- {RUNE_C(0x001250), RUNE_C(0x001256)},
- {RUNE_C(0x001258), RUNE_C(0x001258)},
- {RUNE_C(0x00125A), RUNE_C(0x00125D)},
- {RUNE_C(0x001260), RUNE_C(0x001288)},
- {RUNE_C(0x00128A), RUNE_C(0x00128D)},
- {RUNE_C(0x001290), RUNE_C(0x0012B0)},
- {RUNE_C(0x0012B2), RUNE_C(0x0012B5)},
- {RUNE_C(0x0012B8), RUNE_C(0x0012BE)},
- {RUNE_C(0x0012C0), RUNE_C(0x0012C0)},
- {RUNE_C(0x0012C2), RUNE_C(0x0012C5)},
- {RUNE_C(0x0012C8), RUNE_C(0x0012D6)},
- {RUNE_C(0x0012D8), RUNE_C(0x001310)},
- {RUNE_C(0x001312), RUNE_C(0x001315)},
- {RUNE_C(0x001318), RUNE_C(0x00135A)},
- {RUNE_C(0x00135D), RUNE_C(0x00135F)},
- {RUNE_C(0x001369), RUNE_C(0x001371)},
- {RUNE_C(0x001380), RUNE_C(0x00138F)},
- {RUNE_C(0x0013A0), RUNE_C(0x0013F5)},
- {RUNE_C(0x0013F8), RUNE_C(0x0013FD)},
- {RUNE_C(0x001401), RUNE_C(0x00166C)},
- {RUNE_C(0x00166F), RUNE_C(0x00167F)},
- {RUNE_C(0x001681), RUNE_C(0x00169A)},
- {RUNE_C(0x0016A0), RUNE_C(0x0016EA)},
- {RUNE_C(0x0016EE), RUNE_C(0x0016F8)},
- {RUNE_C(0x001700), RUNE_C(0x001715)},
- {RUNE_C(0x00171F), RUNE_C(0x001734)},
- {RUNE_C(0x001740), RUNE_C(0x001753)},
- {RUNE_C(0x001760), RUNE_C(0x00176C)},
- {RUNE_C(0x00176E), RUNE_C(0x001770)},
- {RUNE_C(0x001772), RUNE_C(0x001773)},
- {RUNE_C(0x001780), RUNE_C(0x0017D3)},
- {RUNE_C(0x0017D7), RUNE_C(0x0017D7)},
- {RUNE_C(0x0017DC), RUNE_C(0x0017DD)},
- {RUNE_C(0x0017E0), RUNE_C(0x0017E9)},
- {RUNE_C(0x00180B), RUNE_C(0x00180D)},
- {RUNE_C(0x00180F), RUNE_C(0x001819)},
- {RUNE_C(0x001820), RUNE_C(0x001878)},
- {RUNE_C(0x001880), RUNE_C(0x0018AA)},
- {RUNE_C(0x0018B0), RUNE_C(0x0018F5)},
- {RUNE_C(0x001900), RUNE_C(0x00191E)},
- {RUNE_C(0x001920), RUNE_C(0x00192B)},
- {RUNE_C(0x001930), RUNE_C(0x00193B)},
- {RUNE_C(0x001946), RUNE_C(0x00196D)},
- {RUNE_C(0x001970), RUNE_C(0x001974)},
- {RUNE_C(0x001980), RUNE_C(0x0019AB)},
- {RUNE_C(0x0019B0), RUNE_C(0x0019C9)},
- {RUNE_C(0x0019D0), RUNE_C(0x0019DA)},
- {RUNE_C(0x001A00), RUNE_C(0x001A1B)},
- {RUNE_C(0x001A20), RUNE_C(0x001A5E)},
- {RUNE_C(0x001A60), RUNE_C(0x001A7C)},
- {RUNE_C(0x001A7F), RUNE_C(0x001A89)},
- {RUNE_C(0x001A90), RUNE_C(0x001A99)},
- {RUNE_C(0x001AA7), RUNE_C(0x001AA7)},
- {RUNE_C(0x001AB0), RUNE_C(0x001ABD)},
- {RUNE_C(0x001ABF), RUNE_C(0x001ACE)},
- {RUNE_C(0x001B00), RUNE_C(0x001B4C)},
- {RUNE_C(0x001B50), RUNE_C(0x001B59)},
- {RUNE_C(0x001B6B), RUNE_C(0x001B73)},
- {RUNE_C(0x001B80), RUNE_C(0x001BF3)},
- {RUNE_C(0x001C00), RUNE_C(0x001C37)},
- {RUNE_C(0x001C40), RUNE_C(0x001C49)},
- {RUNE_C(0x001C4D), RUNE_C(0x001C7D)},
- {RUNE_C(0x001C80), RUNE_C(0x001C88)},
- {RUNE_C(0x001C90), RUNE_C(0x001CBA)},
- {RUNE_C(0x001CBD), RUNE_C(0x001CBF)},
- {RUNE_C(0x001CD0), RUNE_C(0x001CD2)},
- {RUNE_C(0x001CD4), RUNE_C(0x001CFA)},
- {RUNE_C(0x001D00), RUNE_C(0x001F15)},
- {RUNE_C(0x001F18), RUNE_C(0x001F1D)},
- {RUNE_C(0x001F20), RUNE_C(0x001F45)},
- {RUNE_C(0x001F48), RUNE_C(0x001F4D)},
- {RUNE_C(0x001F50), RUNE_C(0x001F57)},
- {RUNE_C(0x001F59), RUNE_C(0x001F59)},
- {RUNE_C(0x001F5B), RUNE_C(0x001F5B)},
- {RUNE_C(0x001F5D), RUNE_C(0x001F5D)},
- {RUNE_C(0x001F5F), RUNE_C(0x001F7D)},
- {RUNE_C(0x001F80), RUNE_C(0x001FB4)},
- {RUNE_C(0x001FB6), RUNE_C(0x001FBC)},
- {RUNE_C(0x001FBE), RUNE_C(0x001FBE)},
- {RUNE_C(0x001FC2), RUNE_C(0x001FC4)},
- {RUNE_C(0x001FC6), RUNE_C(0x001FCC)},
- {RUNE_C(0x001FD0), RUNE_C(0x001FD3)},
- {RUNE_C(0x001FD6), RUNE_C(0x001FDB)},
- {RUNE_C(0x001FE0), RUNE_C(0x001FEC)},
- {RUNE_C(0x001FF2), RUNE_C(0x001FF4)},
- {RUNE_C(0x001FF6), RUNE_C(0x001FFC)},
- {RUNE_C(0x00200C), RUNE_C(0x00200D)},
- {RUNE_C(0x00203F), RUNE_C(0x002040)},
- {RUNE_C(0x002054), RUNE_C(0x002054)},
- {RUNE_C(0x002071), RUNE_C(0x002071)},
- {RUNE_C(0x00207F), RUNE_C(0x00207F)},
- {RUNE_C(0x002090), RUNE_C(0x00209C)},
- {RUNE_C(0x0020D0), RUNE_C(0x0020DC)},
- {RUNE_C(0x0020E1), RUNE_C(0x0020E1)},
- {RUNE_C(0x0020E5), RUNE_C(0x0020F0)},
- {RUNE_C(0x002102), RUNE_C(0x002102)},
- {RUNE_C(0x002107), RUNE_C(0x002107)},
- {RUNE_C(0x00210A), RUNE_C(0x002113)},
- {RUNE_C(0x002115), RUNE_C(0x002115)},
- {RUNE_C(0x002118), RUNE_C(0x00211D)},
- {RUNE_C(0x002124), RUNE_C(0x002124)},
- {RUNE_C(0x002126), RUNE_C(0x002126)},
- {RUNE_C(0x002128), RUNE_C(0x002128)},
- {RUNE_C(0x00212A), RUNE_C(0x002139)},
- {RUNE_C(0x00213C), RUNE_C(0x00213F)},
- {RUNE_C(0x002145), RUNE_C(0x002149)},
- {RUNE_C(0x00214E), RUNE_C(0x00214E)},
- {RUNE_C(0x002160), RUNE_C(0x002188)},
- {RUNE_C(0x002C00), RUNE_C(0x002CE4)},
- {RUNE_C(0x002CEB), RUNE_C(0x002CF3)},
- {RUNE_C(0x002D00), RUNE_C(0x002D25)},
- {RUNE_C(0x002D27), RUNE_C(0x002D27)},
- {RUNE_C(0x002D2D), RUNE_C(0x002D2D)},
- {RUNE_C(0x002D30), RUNE_C(0x002D67)},
- {RUNE_C(0x002D6F), RUNE_C(0x002D6F)},
- {RUNE_C(0x002D7F), RUNE_C(0x002D96)},
- {RUNE_C(0x002DA0), RUNE_C(0x002DA6)},
- {RUNE_C(0x002DA8), RUNE_C(0x002DAE)},
- {RUNE_C(0x002DB0), RUNE_C(0x002DB6)},
- {RUNE_C(0x002DB8), RUNE_C(0x002DBE)},
- {RUNE_C(0x002DC0), RUNE_C(0x002DC6)},
- {RUNE_C(0x002DC8), RUNE_C(0x002DCE)},
- {RUNE_C(0x002DD0), RUNE_C(0x002DD6)},
- {RUNE_C(0x002DD8), RUNE_C(0x002DDE)},
- {RUNE_C(0x002DE0), RUNE_C(0x002DFF)},
- {RUNE_C(0x003005), RUNE_C(0x003007)},
- {RUNE_C(0x003021), RUNE_C(0x00302F)},
- {RUNE_C(0x003031), RUNE_C(0x003035)},
- {RUNE_C(0x003038), RUNE_C(0x00303C)},
- {RUNE_C(0x003041), RUNE_C(0x003096)},
- {RUNE_C(0x003099), RUNE_C(0x00309F)},
- {RUNE_C(0x0030A1), RUNE_C(0x0030FF)},
- {RUNE_C(0x003105), RUNE_C(0x00312F)},
- {RUNE_C(0x003131), RUNE_C(0x00318E)},
- {RUNE_C(0x0031A0), RUNE_C(0x0031BF)},
- {RUNE_C(0x0031F0), RUNE_C(0x0031FF)},
- {RUNE_C(0x003400), RUNE_C(0x004DBF)},
- {RUNE_C(0x004E00), RUNE_C(0x00A48C)},
- {RUNE_C(0x00A4D0), RUNE_C(0x00A4FD)},
- {RUNE_C(0x00A500), RUNE_C(0x00A60C)},
- {RUNE_C(0x00A610), RUNE_C(0x00A62B)},
- {RUNE_C(0x00A640), RUNE_C(0x00A66F)},
- {RUNE_C(0x00A674), RUNE_C(0x00A67D)},
- {RUNE_C(0x00A67F), RUNE_C(0x00A6F1)},
- {RUNE_C(0x00A717), RUNE_C(0x00A71F)},
- {RUNE_C(0x00A722), RUNE_C(0x00A788)},
- {RUNE_C(0x00A78B), RUNE_C(0x00A7CA)},
- {RUNE_C(0x00A7D0), RUNE_C(0x00A7D1)},
- {RUNE_C(0x00A7D3), RUNE_C(0x00A7D3)},
- {RUNE_C(0x00A7D5), RUNE_C(0x00A7D9)},
- {RUNE_C(0x00A7F2), RUNE_C(0x00A827)},
- {RUNE_C(0x00A82C), RUNE_C(0x00A82C)},
- {RUNE_C(0x00A840), RUNE_C(0x00A873)},
- {RUNE_C(0x00A880), RUNE_C(0x00A8C5)},
- {RUNE_C(0x00A8D0), RUNE_C(0x00A8D9)},
- {RUNE_C(0x00A8E0), RUNE_C(0x00A8F7)},
- {RUNE_C(0x00A8FB), RUNE_C(0x00A8FB)},
- {RUNE_C(0x00A8FD), RUNE_C(0x00A92D)},
- {RUNE_C(0x00A930), RUNE_C(0x00A953)},
- {RUNE_C(0x00A960), RUNE_C(0x00A97C)},
- {RUNE_C(0x00A980), RUNE_C(0x00A9C0)},
- {RUNE_C(0x00A9CF), RUNE_C(0x00A9D9)},
- {RUNE_C(0x00A9E0), RUNE_C(0x00A9FE)},
- {RUNE_C(0x00AA00), RUNE_C(0x00AA36)},
- {RUNE_C(0x00AA40), RUNE_C(0x00AA4D)},
- {RUNE_C(0x00AA50), RUNE_C(0x00AA59)},
- {RUNE_C(0x00AA60), RUNE_C(0x00AA76)},
- {RUNE_C(0x00AA7A), RUNE_C(0x00AAC2)},
- {RUNE_C(0x00AADB), RUNE_C(0x00AADD)},
- {RUNE_C(0x00AAE0), RUNE_C(0x00AAEF)},
- {RUNE_C(0x00AAF2), RUNE_C(0x00AAF6)},
- {RUNE_C(0x00AB01), RUNE_C(0x00AB06)},
- {RUNE_C(0x00AB09), RUNE_C(0x00AB0E)},
- {RUNE_C(0x00AB11), RUNE_C(0x00AB16)},
- {RUNE_C(0x00AB20), RUNE_C(0x00AB26)},
- {RUNE_C(0x00AB28), RUNE_C(0x00AB2E)},
- {RUNE_C(0x00AB30), RUNE_C(0x00AB5A)},
- {RUNE_C(0x00AB5C), RUNE_C(0x00AB69)},
- {RUNE_C(0x00AB70), RUNE_C(0x00ABEA)},
- {RUNE_C(0x00ABEC), RUNE_C(0x00ABED)},
- {RUNE_C(0x00ABF0), RUNE_C(0x00ABF9)},
- {RUNE_C(0x00AC00), RUNE_C(0x00D7A3)},
- {RUNE_C(0x00D7B0), RUNE_C(0x00D7C6)},
- {RUNE_C(0x00D7CB), RUNE_C(0x00D7FB)},
- {RUNE_C(0x00F900), RUNE_C(0x00FA6D)},
- {RUNE_C(0x00FA70), RUNE_C(0x00FAD9)},
- {RUNE_C(0x00FB00), RUNE_C(0x00FB06)},
- {RUNE_C(0x00FB13), RUNE_C(0x00FB17)},
- {RUNE_C(0x00FB1D), RUNE_C(0x00FB28)},
- {RUNE_C(0x00FB2A), RUNE_C(0x00FB36)},
- {RUNE_C(0x00FB38), RUNE_C(0x00FB3C)},
- {RUNE_C(0x00FB3E), RUNE_C(0x00FB3E)},
- {RUNE_C(0x00FB40), RUNE_C(0x00FB41)},
- {RUNE_C(0x00FB43), RUNE_C(0x00FB44)},
- {RUNE_C(0x00FB46), RUNE_C(0x00FBB1)},
- {RUNE_C(0x00FBD3), RUNE_C(0x00FD3D)},
- {RUNE_C(0x00FD50), RUNE_C(0x00FD8F)},
- {RUNE_C(0x00FD92), RUNE_C(0x00FDC7)},
- {RUNE_C(0x00FDF0), RUNE_C(0x00FDFB)},
- {RUNE_C(0x00FE00), RUNE_C(0x00FE0F)},
- {RUNE_C(0x00FE20), RUNE_C(0x00FE2F)},
- {RUNE_C(0x00FE33), RUNE_C(0x00FE34)},
- {RUNE_C(0x00FE4D), RUNE_C(0x00FE4F)},
- {RUNE_C(0x00FE70), RUNE_C(0x00FE74)},
- {RUNE_C(0x00FE76), RUNE_C(0x00FEFC)},
- {RUNE_C(0x00FF10), RUNE_C(0x00FF19)},
- {RUNE_C(0x00FF21), RUNE_C(0x00FF3A)},
- {RUNE_C(0x00FF3F), RUNE_C(0x00FF3F)},
- {RUNE_C(0x00FF41), RUNE_C(0x00FF5A)},
- {RUNE_C(0x00FF65), RUNE_C(0x00FFBE)},
- {RUNE_C(0x00FFC2), RUNE_C(0x00FFC7)},
- {RUNE_C(0x00FFCA), RUNE_C(0x00FFCF)},
- {RUNE_C(0x00FFD2), RUNE_C(0x00FFD7)},
- {RUNE_C(0x00FFDA), RUNE_C(0x00FFDC)},
- {RUNE_C(0x010000), RUNE_C(0x01000B)},
- {RUNE_C(0x01000D), RUNE_C(0x010026)},
- {RUNE_C(0x010028), RUNE_C(0x01003A)},
- {RUNE_C(0x01003C), RUNE_C(0x01003D)},
- {RUNE_C(0x01003F), RUNE_C(0x01004D)},
- {RUNE_C(0x010050), RUNE_C(0x01005D)},
- {RUNE_C(0x010080), RUNE_C(0x0100FA)},
- {RUNE_C(0x010140), RUNE_C(0x010174)},
- {RUNE_C(0x0101FD), RUNE_C(0x0101FD)},
- {RUNE_C(0x010280), RUNE_C(0x01029C)},
- {RUNE_C(0x0102A0), RUNE_C(0x0102D0)},
- {RUNE_C(0x0102E0), RUNE_C(0x0102E0)},
- {RUNE_C(0x010300), RUNE_C(0x01031F)},
- {RUNE_C(0x01032D), RUNE_C(0x01034A)},
- {RUNE_C(0x010350), RUNE_C(0x01037A)},
- {RUNE_C(0x010380), RUNE_C(0x01039D)},
- {RUNE_C(0x0103A0), RUNE_C(0x0103C3)},
- {RUNE_C(0x0103C8), RUNE_C(0x0103CF)},
- {RUNE_C(0x0103D1), RUNE_C(0x0103D5)},
- {RUNE_C(0x010400), RUNE_C(0x01049D)},
- {RUNE_C(0x0104A0), RUNE_C(0x0104A9)},
- {RUNE_C(0x0104B0), RUNE_C(0x0104D3)},
- {RUNE_C(0x0104D8), RUNE_C(0x0104FB)},
- {RUNE_C(0x010500), RUNE_C(0x010527)},
- {RUNE_C(0x010530), RUNE_C(0x010563)},
- {RUNE_C(0x010570), RUNE_C(0x01057A)},
- {RUNE_C(0x01057C), RUNE_C(0x01058A)},
- {RUNE_C(0x01058C), RUNE_C(0x010592)},
- {RUNE_C(0x010594), RUNE_C(0x010595)},
- {RUNE_C(0x010597), RUNE_C(0x0105A1)},
- {RUNE_C(0x0105A3), RUNE_C(0x0105B1)},
- {RUNE_C(0x0105B3), RUNE_C(0x0105B9)},
- {RUNE_C(0x0105BB), RUNE_C(0x0105BC)},
- {RUNE_C(0x010600), RUNE_C(0x010736)},
- {RUNE_C(0x010740), RUNE_C(0x010755)},
- {RUNE_C(0x010760), RUNE_C(0x010767)},
- {RUNE_C(0x010780), RUNE_C(0x010785)},
- {RUNE_C(0x010787), RUNE_C(0x0107B0)},
- {RUNE_C(0x0107B2), RUNE_C(0x0107BA)},
- {RUNE_C(0x010800), RUNE_C(0x010805)},
- {RUNE_C(0x010808), RUNE_C(0x010808)},
- {RUNE_C(0x01080A), RUNE_C(0x010835)},
- {RUNE_C(0x010837), RUNE_C(0x010838)},
- {RUNE_C(0x01083C), RUNE_C(0x01083C)},
- {RUNE_C(0x01083F), RUNE_C(0x010855)},
- {RUNE_C(0x010860), RUNE_C(0x010876)},
- {RUNE_C(0x010880), RUNE_C(0x01089E)},
- {RUNE_C(0x0108E0), RUNE_C(0x0108F2)},
- {RUNE_C(0x0108F4), RUNE_C(0x0108F5)},
- {RUNE_C(0x010900), RUNE_C(0x010915)},
- {RUNE_C(0x010920), RUNE_C(0x010939)},
- {RUNE_C(0x010980), RUNE_C(0x0109B7)},
- {RUNE_C(0x0109BE), RUNE_C(0x0109BF)},
- {RUNE_C(0x010A00), RUNE_C(0x010A03)},
- {RUNE_C(0x010A05), RUNE_C(0x010A06)},
- {RUNE_C(0x010A0C), RUNE_C(0x010A13)},
- {RUNE_C(0x010A15), RUNE_C(0x010A17)},
- {RUNE_C(0x010A19), RUNE_C(0x010A35)},
- {RUNE_C(0x010A38), RUNE_C(0x010A3A)},
- {RUNE_C(0x010A3F), RUNE_C(0x010A3F)},
- {RUNE_C(0x010A60), RUNE_C(0x010A7C)},
- {RUNE_C(0x010A80), RUNE_C(0x010A9C)},
- {RUNE_C(0x010AC0), RUNE_C(0x010AC7)},
- {RUNE_C(0x010AC9), RUNE_C(0x010AE6)},
- {RUNE_C(0x010B00), RUNE_C(0x010B35)},
- {RUNE_C(0x010B40), RUNE_C(0x010B55)},
- {RUNE_C(0x010B60), RUNE_C(0x010B72)},
- {RUNE_C(0x010B80), RUNE_C(0x010B91)},
- {RUNE_C(0x010C00), RUNE_C(0x010C48)},
- {RUNE_C(0x010C80), RUNE_C(0x010CB2)},
- {RUNE_C(0x010CC0), RUNE_C(0x010CF2)},
- {RUNE_C(0x010D00), RUNE_C(0x010D27)},
- {RUNE_C(0x010D30), RUNE_C(0x010D39)},
- {RUNE_C(0x010E80), RUNE_C(0x010EA9)},
- {RUNE_C(0x010EAB), RUNE_C(0x010EAC)},
- {RUNE_C(0x010EB0), RUNE_C(0x010EB1)},
- {RUNE_C(0x010EFD), RUNE_C(0x010F1C)},
- {RUNE_C(0x010F27), RUNE_C(0x010F27)},
- {RUNE_C(0x010F30), RUNE_C(0x010F50)},
- {RUNE_C(0x010F70), RUNE_C(0x010F85)},
- {RUNE_C(0x010FB0), RUNE_C(0x010FC4)},
- {RUNE_C(0x010FE0), RUNE_C(0x010FF6)},
- {RUNE_C(0x011000), RUNE_C(0x011046)},
- {RUNE_C(0x011066), RUNE_C(0x011075)},
- {RUNE_C(0x01107F), RUNE_C(0x0110BA)},
- {RUNE_C(0x0110C2), RUNE_C(0x0110C2)},
- {RUNE_C(0x0110D0), RUNE_C(0x0110E8)},
- {RUNE_C(0x0110F0), RUNE_C(0x0110F9)},
- {RUNE_C(0x011100), RUNE_C(0x011134)},
- {RUNE_C(0x011136), RUNE_C(0x01113F)},
- {RUNE_C(0x011144), RUNE_C(0x011147)},
- {RUNE_C(0x011150), RUNE_C(0x011173)},
- {RUNE_C(0x011176), RUNE_C(0x011176)},
- {RUNE_C(0x011180), RUNE_C(0x0111C4)},
- {RUNE_C(0x0111C9), RUNE_C(0x0111CC)},
- {RUNE_C(0x0111CE), RUNE_C(0x0111DA)},
- {RUNE_C(0x0111DC), RUNE_C(0x0111DC)},
- {RUNE_C(0x011200), RUNE_C(0x011211)},
- {RUNE_C(0x011213), RUNE_C(0x011237)},
- {RUNE_C(0x01123E), RUNE_C(0x011241)},
- {RUNE_C(0x011280), RUNE_C(0x011286)},
- {RUNE_C(0x011288), RUNE_C(0x011288)},
- {RUNE_C(0x01128A), RUNE_C(0x01128D)},
- {RUNE_C(0x01128F), RUNE_C(0x01129D)},
- {RUNE_C(0x01129F), RUNE_C(0x0112A8)},
- {RUNE_C(0x0112B0), RUNE_C(0x0112EA)},
- {RUNE_C(0x0112F0), RUNE_C(0x0112F9)},
- {RUNE_C(0x011300), RUNE_C(0x011303)},
- {RUNE_C(0x011305), RUNE_C(0x01130C)},
- {RUNE_C(0x01130F), RUNE_C(0x011310)},
- {RUNE_C(0x011313), RUNE_C(0x011328)},
- {RUNE_C(0x01132A), RUNE_C(0x011330)},
- {RUNE_C(0x011332), RUNE_C(0x011333)},
- {RUNE_C(0x011335), RUNE_C(0x011339)},
- {RUNE_C(0x01133B), RUNE_C(0x011344)},
- {RUNE_C(0x011347), RUNE_C(0x011348)},
- {RUNE_C(0x01134B), RUNE_C(0x01134D)},
- {RUNE_C(0x011350), RUNE_C(0x011350)},
- {RUNE_C(0x011357), RUNE_C(0x011357)},
- {RUNE_C(0x01135D), RUNE_C(0x011363)},
- {RUNE_C(0x011366), RUNE_C(0x01136C)},
- {RUNE_C(0x011370), RUNE_C(0x011374)},
- {RUNE_C(0x011400), RUNE_C(0x01144A)},
- {RUNE_C(0x011450), RUNE_C(0x011459)},
- {RUNE_C(0x01145E), RUNE_C(0x011461)},
- {RUNE_C(0x011480), RUNE_C(0x0114C5)},
- {RUNE_C(0x0114C7), RUNE_C(0x0114C7)},
- {RUNE_C(0x0114D0), RUNE_C(0x0114D9)},
- {RUNE_C(0x011580), RUNE_C(0x0115B5)},
- {RUNE_C(0x0115B8), RUNE_C(0x0115C0)},
- {RUNE_C(0x0115D8), RUNE_C(0x0115DD)},
- {RUNE_C(0x011600), RUNE_C(0x011640)},
- {RUNE_C(0x011644), RUNE_C(0x011644)},
- {RUNE_C(0x011650), RUNE_C(0x011659)},
- {RUNE_C(0x011680), RUNE_C(0x0116B8)},
- {RUNE_C(0x0116C0), RUNE_C(0x0116C9)},
- {RUNE_C(0x011700), RUNE_C(0x01171A)},
- {RUNE_C(0x01171D), RUNE_C(0x01172B)},
- {RUNE_C(0x011730), RUNE_C(0x011739)},
- {RUNE_C(0x011740), RUNE_C(0x011746)},
- {RUNE_C(0x011800), RUNE_C(0x01183A)},
- {RUNE_C(0x0118A0), RUNE_C(0x0118E9)},
- {RUNE_C(0x0118FF), RUNE_C(0x011906)},
- {RUNE_C(0x011909), RUNE_C(0x011909)},
- {RUNE_C(0x01190C), RUNE_C(0x011913)},
- {RUNE_C(0x011915), RUNE_C(0x011916)},
- {RUNE_C(0x011918), RUNE_C(0x011935)},
- {RUNE_C(0x011937), RUNE_C(0x011938)},
- {RUNE_C(0x01193B), RUNE_C(0x011943)},
- {RUNE_C(0x011950), RUNE_C(0x011959)},
- {RUNE_C(0x0119A0), RUNE_C(0x0119A7)},
- {RUNE_C(0x0119AA), RUNE_C(0x0119D7)},
- {RUNE_C(0x0119DA), RUNE_C(0x0119E1)},
- {RUNE_C(0x0119E3), RUNE_C(0x0119E4)},
- {RUNE_C(0x011A00), RUNE_C(0x011A3E)},
- {RUNE_C(0x011A47), RUNE_C(0x011A47)},
- {RUNE_C(0x011A50), RUNE_C(0x011A99)},
- {RUNE_C(0x011A9D), RUNE_C(0x011A9D)},
- {RUNE_C(0x011AB0), RUNE_C(0x011AF8)},
- {RUNE_C(0x011C00), RUNE_C(0x011C08)},
- {RUNE_C(0x011C0A), RUNE_C(0x011C36)},
- {RUNE_C(0x011C38), RUNE_C(0x011C40)},
- {RUNE_C(0x011C50), RUNE_C(0x011C59)},
- {RUNE_C(0x011C72), RUNE_C(0x011C8F)},
- {RUNE_C(0x011C92), RUNE_C(0x011CA7)},
- {RUNE_C(0x011CA9), RUNE_C(0x011CB6)},
- {RUNE_C(0x011D00), RUNE_C(0x011D06)},
- {RUNE_C(0x011D08), RUNE_C(0x011D09)},
- {RUNE_C(0x011D0B), RUNE_C(0x011D36)},
- {RUNE_C(0x011D3A), RUNE_C(0x011D3A)},
- {RUNE_C(0x011D3C), RUNE_C(0x011D3D)},
- {RUNE_C(0x011D3F), RUNE_C(0x011D47)},
- {RUNE_C(0x011D50), RUNE_C(0x011D59)},
- {RUNE_C(0x011D60), RUNE_C(0x011D65)},
- {RUNE_C(0x011D67), RUNE_C(0x011D68)},
- {RUNE_C(0x011D6A), RUNE_C(0x011D8E)},
- {RUNE_C(0x011D90), RUNE_C(0x011D91)},
- {RUNE_C(0x011D93), RUNE_C(0x011D98)},
- {RUNE_C(0x011DA0), RUNE_C(0x011DA9)},
- {RUNE_C(0x011EE0), RUNE_C(0x011EF6)},
- {RUNE_C(0x011F00), RUNE_C(0x011F10)},
- {RUNE_C(0x011F12), RUNE_C(0x011F3A)},
- {RUNE_C(0x011F3E), RUNE_C(0x011F42)},
- {RUNE_C(0x011F50), RUNE_C(0x011F59)},
- {RUNE_C(0x011FB0), RUNE_C(0x011FB0)},
- {RUNE_C(0x012000), RUNE_C(0x012399)},
- {RUNE_C(0x012400), RUNE_C(0x01246E)},
- {RUNE_C(0x012480), RUNE_C(0x012543)},
- {RUNE_C(0x012F90), RUNE_C(0x012FF0)},
- {RUNE_C(0x013000), RUNE_C(0x01342F)},
- {RUNE_C(0x013440), RUNE_C(0x013455)},
- {RUNE_C(0x014400), RUNE_C(0x014646)},
- {RUNE_C(0x016800), RUNE_C(0x016A38)},
- {RUNE_C(0x016A40), RUNE_C(0x016A5E)},
- {RUNE_C(0x016A60), RUNE_C(0x016A69)},
- {RUNE_C(0x016A70), RUNE_C(0x016ABE)},
- {RUNE_C(0x016AC0), RUNE_C(0x016AC9)},
- {RUNE_C(0x016AD0), RUNE_C(0x016AED)},
- {RUNE_C(0x016AF0), RUNE_C(0x016AF4)},
- {RUNE_C(0x016B00), RUNE_C(0x016B36)},
- {RUNE_C(0x016B40), RUNE_C(0x016B43)},
- {RUNE_C(0x016B50), RUNE_C(0x016B59)},
- {RUNE_C(0x016B63), RUNE_C(0x016B77)},
- {RUNE_C(0x016B7D), RUNE_C(0x016B8F)},
- {RUNE_C(0x016E40), RUNE_C(0x016E7F)},
- {RUNE_C(0x016F00), RUNE_C(0x016F4A)},
- {RUNE_C(0x016F4F), RUNE_C(0x016F87)},
- {RUNE_C(0x016F8F), RUNE_C(0x016F9F)},
- {RUNE_C(0x016FE0), RUNE_C(0x016FE1)},
- {RUNE_C(0x016FE3), RUNE_C(0x016FE4)},
- {RUNE_C(0x016FF0), RUNE_C(0x016FF1)},
- {RUNE_C(0x017000), RUNE_C(0x0187F7)},
- {RUNE_C(0x018800), RUNE_C(0x018CD5)},
- {RUNE_C(0x018D00), RUNE_C(0x018D08)},
- {RUNE_C(0x01AFF0), RUNE_C(0x01AFF3)},
- {RUNE_C(0x01AFF5), RUNE_C(0x01AFFB)},
- {RUNE_C(0x01AFFD), RUNE_C(0x01AFFE)},
- {RUNE_C(0x01B000), RUNE_C(0x01B122)},
- {RUNE_C(0x01B132), RUNE_C(0x01B132)},
- {RUNE_C(0x01B150), RUNE_C(0x01B152)},
- {RUNE_C(0x01B155), RUNE_C(0x01B155)},
- {RUNE_C(0x01B164), RUNE_C(0x01B167)},
- {RUNE_C(0x01B170), RUNE_C(0x01B2FB)},
- {RUNE_C(0x01BC00), RUNE_C(0x01BC6A)},
- {RUNE_C(0x01BC70), RUNE_C(0x01BC7C)},
- {RUNE_C(0x01BC80), RUNE_C(0x01BC88)},
- {RUNE_C(0x01BC90), RUNE_C(0x01BC99)},
- {RUNE_C(0x01BC9D), RUNE_C(0x01BC9E)},
- {RUNE_C(0x01CF00), RUNE_C(0x01CF2D)},
- {RUNE_C(0x01CF30), RUNE_C(0x01CF46)},
- {RUNE_C(0x01D165), RUNE_C(0x01D169)},
- {RUNE_C(0x01D16D), RUNE_C(0x01D172)},
- {RUNE_C(0x01D17B), RUNE_C(0x01D182)},
- {RUNE_C(0x01D185), RUNE_C(0x01D18B)},
- {RUNE_C(0x01D1AA), RUNE_C(0x01D1AD)},
- {RUNE_C(0x01D242), RUNE_C(0x01D244)},
- {RUNE_C(0x01D400), RUNE_C(0x01D454)},
- {RUNE_C(0x01D456), RUNE_C(0x01D49C)},
- {RUNE_C(0x01D49E), RUNE_C(0x01D49F)},
- {RUNE_C(0x01D4A2), RUNE_C(0x01D4A2)},
- {RUNE_C(0x01D4A5), RUNE_C(0x01D4A6)},
- {RUNE_C(0x01D4A9), RUNE_C(0x01D4AC)},
- {RUNE_C(0x01D4AE), RUNE_C(0x01D4B9)},
- {RUNE_C(0x01D4BB), RUNE_C(0x01D4BB)},
- {RUNE_C(0x01D4BD), RUNE_C(0x01D4C3)},
- {RUNE_C(0x01D4C5), RUNE_C(0x01D505)},
- {RUNE_C(0x01D507), RUNE_C(0x01D50A)},
- {RUNE_C(0x01D50D), RUNE_C(0x01D514)},
- {RUNE_C(0x01D516), RUNE_C(0x01D51C)},
- {RUNE_C(0x01D51E), RUNE_C(0x01D539)},
- {RUNE_C(0x01D53B), RUNE_C(0x01D53E)},
- {RUNE_C(0x01D540), RUNE_C(0x01D544)},
- {RUNE_C(0x01D546), RUNE_C(0x01D546)},
- {RUNE_C(0x01D54A), RUNE_C(0x01D550)},
- {RUNE_C(0x01D552), RUNE_C(0x01D6A5)},
- {RUNE_C(0x01D6A8), RUNE_C(0x01D6C0)},
- {RUNE_C(0x01D6C2), RUNE_C(0x01D6DA)},
- {RUNE_C(0x01D6DC), RUNE_C(0x01D6FA)},
- {RUNE_C(0x01D6FC), RUNE_C(0x01D714)},
- {RUNE_C(0x01D716), RUNE_C(0x01D734)},
- {RUNE_C(0x01D736), RUNE_C(0x01D74E)},
- {RUNE_C(0x01D750), RUNE_C(0x01D76E)},
- {RUNE_C(0x01D770), RUNE_C(0x01D788)},
- {RUNE_C(0x01D78A), RUNE_C(0x01D7A8)},
- {RUNE_C(0x01D7AA), RUNE_C(0x01D7C2)},
- {RUNE_C(0x01D7C4), RUNE_C(0x01D7CB)},
- {RUNE_C(0x01D7CE), RUNE_C(0x01D7FF)},
- {RUNE_C(0x01DA00), RUNE_C(0x01DA36)},
- {RUNE_C(0x01DA3B), RUNE_C(0x01DA6C)},
- {RUNE_C(0x01DA75), RUNE_C(0x01DA75)},
- {RUNE_C(0x01DA84), RUNE_C(0x01DA84)},
- {RUNE_C(0x01DA9B), RUNE_C(0x01DA9F)},
- {RUNE_C(0x01DAA1), RUNE_C(0x01DAAF)},
- {RUNE_C(0x01DF00), RUNE_C(0x01DF1E)},
- {RUNE_C(0x01DF25), RUNE_C(0x01DF2A)},
- {RUNE_C(0x01E000), RUNE_C(0x01E006)},
- {RUNE_C(0x01E008), RUNE_C(0x01E018)},
- {RUNE_C(0x01E01B), RUNE_C(0x01E021)},
- {RUNE_C(0x01E023), RUNE_C(0x01E024)},
- {RUNE_C(0x01E026), RUNE_C(0x01E02A)},
- {RUNE_C(0x01E030), RUNE_C(0x01E06D)},
- {RUNE_C(0x01E08F), RUNE_C(0x01E08F)},
- {RUNE_C(0x01E100), RUNE_C(0x01E12C)},
- {RUNE_C(0x01E130), RUNE_C(0x01E13D)},
- {RUNE_C(0x01E140), RUNE_C(0x01E149)},
- {RUNE_C(0x01E14E), RUNE_C(0x01E14E)},
- {RUNE_C(0x01E290), RUNE_C(0x01E2AE)},
- {RUNE_C(0x01E2C0), RUNE_C(0x01E2F9)},
- {RUNE_C(0x01E4D0), RUNE_C(0x01E4F9)},
- {RUNE_C(0x01E7E0), RUNE_C(0x01E7E6)},
- {RUNE_C(0x01E7E8), RUNE_C(0x01E7EB)},
- {RUNE_C(0x01E7ED), RUNE_C(0x01E7EE)},
- {RUNE_C(0x01E7F0), RUNE_C(0x01E7FE)},
- {RUNE_C(0x01E800), RUNE_C(0x01E8C4)},
- {RUNE_C(0x01E8D0), RUNE_C(0x01E8D6)},
- {RUNE_C(0x01E900), RUNE_C(0x01E94B)},
- {RUNE_C(0x01E950), RUNE_C(0x01E959)},
- {RUNE_C(0x01EE00), RUNE_C(0x01EE03)},
- {RUNE_C(0x01EE05), RUNE_C(0x01EE1F)},
- {RUNE_C(0x01EE21), RUNE_C(0x01EE22)},
- {RUNE_C(0x01EE24), RUNE_C(0x01EE24)},
- {RUNE_C(0x01EE27), RUNE_C(0x01EE27)},
- {RUNE_C(0x01EE29), RUNE_C(0x01EE32)},
- {RUNE_C(0x01EE34), RUNE_C(0x01EE37)},
- {RUNE_C(0x01EE39), RUNE_C(0x01EE39)},
- {RUNE_C(0x01EE3B), RUNE_C(0x01EE3B)},
- {RUNE_C(0x01EE42), RUNE_C(0x01EE42)},
- {RUNE_C(0x01EE47), RUNE_C(0x01EE47)},
- {RUNE_C(0x01EE49), RUNE_C(0x01EE49)},
- {RUNE_C(0x01EE4B), RUNE_C(0x01EE4B)},
- {RUNE_C(0x01EE4D), RUNE_C(0x01EE4F)},
- {RUNE_C(0x01EE51), RUNE_C(0x01EE52)},
- {RUNE_C(0x01EE54), RUNE_C(0x01EE54)},
- {RUNE_C(0x01EE57), RUNE_C(0x01EE57)},
- {RUNE_C(0x01EE59), RUNE_C(0x01EE59)},
- {RUNE_C(0x01EE5B), RUNE_C(0x01EE5B)},
- {RUNE_C(0x01EE5D), RUNE_C(0x01EE5D)},
- {RUNE_C(0x01EE5F), RUNE_C(0x01EE5F)},
- {RUNE_C(0x01EE61), RUNE_C(0x01EE62)},
- {RUNE_C(0x01EE64), RUNE_C(0x01EE64)},
- {RUNE_C(0x01EE67), RUNE_C(0x01EE6A)},
- {RUNE_C(0x01EE6C), RUNE_C(0x01EE72)},
- {RUNE_C(0x01EE74), RUNE_C(0x01EE77)},
- {RUNE_C(0x01EE79), RUNE_C(0x01EE7C)},
- {RUNE_C(0x01EE7E), RUNE_C(0x01EE7E)},
- {RUNE_C(0x01EE80), RUNE_C(0x01EE89)},
- {RUNE_C(0x01EE8B), RUNE_C(0x01EE9B)},
- {RUNE_C(0x01EEA1), RUNE_C(0x01EEA3)},
- {RUNE_C(0x01EEA5), RUNE_C(0x01EEA9)},
- {RUNE_C(0x01EEAB), RUNE_C(0x01EEBB)},
- {RUNE_C(0x01FBF0), RUNE_C(0x01FBF9)},
- {RUNE_C(0x020000), RUNE_C(0x02A6DF)},
- {RUNE_C(0x02A700), RUNE_C(0x02B739)},
- {RUNE_C(0x02B740), RUNE_C(0x02B81D)},
- {RUNE_C(0x02B820), RUNE_C(0x02CEA1)},
- {RUNE_C(0x02CEB0), RUNE_C(0x02EBE0)},
- {RUNE_C(0x02EBF0), RUNE_C(0x02EE5D)},
- {RUNE_C(0x02F800), RUNE_C(0x02FA1D)},
- {RUNE_C(0x030000), RUNE_C(0x03134A)},
- {RUNE_C(0x031350), RUNE_C(0x0323AF)},
- {RUNE_C(0x0E0100), RUNE_C(0x0E01EF)},
+static constexpr unsigned char stage2[][16] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
+ 0xFE, 0xFF, 0xFF, 0x87, 0xFE, 0xFF, 0xFF, 0x07},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xA0, 0x04,
+ 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xC3, 0xFF, 0x03, 0x00, 0x1F, 0x50, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xBC},
+ {0xC0, 0xD7, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF},
+ {0xFB, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
+ 0xFF, 0xFF, 0x7F, 0x02, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x01, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF,
+ 0xB6, 0x00, 0xFF, 0xFF, 0xFF, 0x87, 0x07, 0x00},
+ {0x00, 0x00, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xEF, 0x9F, 0xFF, 0xFD, 0xFF, 0x9F},
+ {0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x24},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0x07, 0xFF, 0xFF},
+ {0xFF, 0x7E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0xFF},
+ {0xEF, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xC5, 0xF3,
+ 0x9F, 0x79, 0x80, 0xB0, 0xCF, 0xFF, 0x03, 0x50},
+ {0xEE, 0x87, 0xF9, 0xFF, 0xFF, 0xFD, 0x6D, 0xD3,
+ 0x87, 0x39, 0x02, 0x5E, 0xC0, 0xFF, 0x3F, 0x00},
+ {0xEE, 0xBF, 0xFB, 0xFF, 0xFF, 0xFD, 0xED, 0xF3,
+ 0xBF, 0x3B, 0x01, 0x00, 0xCF, 0xFF, 0x00, 0xFE},
+ {0xEE, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xED, 0xF3,
+ 0x9F, 0x39, 0xE0, 0xB0, 0xCF, 0xFF, 0x02, 0x00},
+ {0xEC, 0xC7, 0x3D, 0xD6, 0x18, 0xC7, 0xFF, 0xC3,
+ 0xC7, 0x3D, 0x81, 0x00, 0xC0, 0xFF, 0x00, 0x00},
+ {0xFF, 0xDF, 0xFD, 0xFF, 0xFF, 0xFD, 0xFF, 0xF3,
+ 0xDF, 0x3D, 0x60, 0x27, 0xCF, 0xFF, 0x00, 0x00},
+ {0xEF, 0xDF, 0xFD, 0xFF, 0xFF, 0xFD, 0xEF, 0xF3,
+ 0xDF, 0x3D, 0x60, 0x60, 0xCF, 0xFF, 0x0E, 0x00},
+ {0xFF, 0xDF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xDF, 0x7D, 0xF0, 0x80, 0xCF, 0xFF, 0x00, 0xFC},
+ {0xEE, 0xFF, 0x7F, 0xFC, 0xFF, 0xFF, 0xFB, 0x2F,
+ 0x7F, 0x84, 0x5F, 0xFF, 0xC0, 0xFF, 0x0C, 0x00},
+ {0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07,
+ 0xFF, 0x7F, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0xD6, 0xF7, 0xFF, 0xFF, 0xAF, 0xFF, 0xFF, 0x3F,
+ 0x5F, 0x7F, 0xFF, 0xF3, 0x00, 0x00, 0x00, 0x00},
+ {0x01, 0x00, 0x00, 0x03, 0xFF, 0x03, 0xA0, 0xC2,
+ 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x1F, 0xFE, 0xFF},
+ {0xDF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x1F,
+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xBF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x3D, 0x7F, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x7F,
+ 0x3D, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xE7, 0x00, 0xFE, 0x03, 0x00},
+ {0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x3F},
+ {0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF},
+ {0xFE, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xFF, 0x01},
+ {0xFF, 0xFF, 0x3F, 0x80, 0xFF, 0xFF, 0x1F, 0x00,
+ 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xDF, 0x0D, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x8F, 0x30, 0xFF, 0x03, 0x00, 0x00},
+ {0x00, 0xB8, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0x0F, 0xFF, 0x0F,
+ 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF,
+ 0xFF, 0x03, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x9F},
+ {0xFF, 0x03, 0xFF, 0x03, 0x80, 0x00, 0xFF, 0xBF,
+ 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x1F, 0xFF, 0x03, 0x00, 0xF8, 0x0F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
+ 0xFF, 0xE3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F},
+ {0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7,
+ 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0x07},
+ {0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x3F, 0x3F, 0xFF, 0xAA, 0xFF, 0xFF, 0xFF, 0x3F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x5F,
+ 0xDC, 0x1F, 0xCF, 0x0F, 0xFF, 0x1F, 0xDC, 0x1F},
+ {0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x80},
+ {0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0x1F, 0xE2, 0xFF, 0x01, 0x00},
+ {0x84, 0xFC, 0x2F, 0x3F, 0x50, 0xFD, 0xFF, 0xF3,
+ 0xE0, 0x43, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF8, 0x0F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x20, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x80},
+ {0xFF, 0xFF, 0x7F, 0x00, 0x7F, 0x7F, 0x7F, 0x7F,
+ 0x7F, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xE0, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x3E, 0x1F,
+ 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0x7F, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F},
+ {0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xBF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00},
+ {0x00, 0x00, 0x80, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xEB, 0x03, 0x00, 0x00, 0xFC, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x3F, 0x00, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xE8},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0x1F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x01, 0x80, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0x7F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00,
+ 0xFF, 0x3F, 0xFF, 0x03, 0xFF, 0xFF, 0x7F, 0xFC},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x07, 0x00, 0x00, 0x38, 0xFF, 0xFF, 0x7C, 0x00},
+ {0x7E, 0x7E, 0x7E, 0x00, 0x7F, 0x7F, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0x03, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x37, 0xFF, 0x03},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xFF,
+ 0x7F, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0x00, 0xF8, 0xE0, 0xFF, 0xFD, 0x7F, 0x5F,
+ 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00,
+ 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F},
+ {0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0x00,
+ 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0xDF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F},
+ {0x00, 0x00, 0xFF, 0x03, 0xFE, 0xFF, 0xFF, 0x87,
+ 0xFE, 0xFF, 0xFF, 0x07, 0xE0, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
+ 0xFC, 0xFC, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xEF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xB7,
+ 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20},
+ {0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xE0, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x0F, 0xFF, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0x03, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xF7},
+ {0xFF, 0xF7, 0xB7, 0xFF, 0xFB, 0xFF, 0xFB, 0x1B,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00,
+ 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0x00, 0x00, 0x00},
+ {0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x3F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x91,
+ 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF, 0x7F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x37, 0x00},
+ {0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF, 0xFF, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x6F, 0xF0, 0xEF, 0xFE, 0xFF, 0xFF, 0x3F, 0x87,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x1F},
+ {0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFE, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00,
+ 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF, 0x07, 0x00},
+ {0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0},
+ {0xFF, 0xFF, 0xFF, 0x1F, 0x80, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF},
+ {0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0x1F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x7F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x3F, 0x80},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07,
+ 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0x03},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF,
+ 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x1F, 0xDE, 0xFF, 0x17, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0xBD, 0xFF, 0xBF, 0xFF, 0x01, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0x03},
+ {0xEF, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xED, 0xFB,
+ 0x9F, 0x39, 0x81, 0xE0, 0xCF, 0x1F, 0x1F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xFF, 0xC3, 0x03, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xBF, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF,
+ 0x01, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x11, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
+ 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0x0F, 0xFF, 0x03,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x80},
+ {0x7F, 0xF2, 0x6F, 0xFF, 0xFF, 0xFF, 0xBF, 0xF9,
+ 0x0F, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFC, 0x1B, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
+ 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0x23, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01},
+ {0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF,
+ 0x01, 0x00, 0xFF, 0x03, 0x00, 0x00, 0xFC, 0xFF},
+ {0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFE, 0x7F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xB4,
+ 0xFF, 0x00, 0xFF, 0x03, 0xBF, 0xFD, 0xFF, 0xFF},
+ {0xFF, 0x7F, 0xFB, 0x01, 0xFF, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00},
+ {0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7,
+ 0x07, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
+ 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0x03, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
+ 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00,
+ 0x0F, 0x00, 0xFF, 0x03, 0xF8, 0xFF, 0xFF, 0xE0},
+ {0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x03, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x6F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x04, 0x00,
+ 0x00, 0x00, 0x27, 0x00, 0xF0, 0x00, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0x1F},
+ {0xFF, 0x01, 0xFF, 0x63, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE3, 0x07, 0xF8},
+ {0xE7, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xDF, 0x64, 0xDE, 0xFF, 0xEB,
+ 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xBF, 0xE7, 0xDF, 0xDF, 0xFF, 0xFF, 0xFF, 0x7B,
+ 0x5F, 0xFC, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF,
+ 0xFD, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xF7},
+ {0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF,
+ 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF},
+ {0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF,
+ 0xF7, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF8,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x20, 0x00},
+ {0x10, 0x00, 0x00, 0xF8, 0xFE, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x7F, 0xE0, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0xFF, 0xFF, 0xF9, 0xDB, 0x07, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00},
+ {0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0x3F,
+ 0xFF, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x7F, 0x6F, 0xFF, 0x7F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x1F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x0F, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0xEF, 0xFF, 0xFF, 0xFF, 0x96, 0xFE, 0xF7, 0x0A,
+ 0x84, 0xEA, 0x96, 0xAA, 0x96, 0xF7, 0xF7, 0x5E},
+ {0xFF, 0xFB, 0xFF, 0x0F, 0xEE, 0xFB, 0xFF, 0x0F,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_idc(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 128]], ch % 128);
}
diff --git a/lib/unicode/prop/uprop_is_ideo.c b/lib/unicode/prop/uprop_is_ideo.c
index 611a77a..f63afcb 100644
--- a/lib/unicode/prop/uprop_is_ideo.c
+++ b/lib/unicode/prop/uprop_is_ideo.c
@@ -1,42 +1,368 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x003006), RUNE_C(0x003007)},
- {RUNE_C(0x003021), RUNE_C(0x003029)},
- {RUNE_C(0x003038), RUNE_C(0x00303A)},
- {RUNE_C(0x003400), RUNE_C(0x004DBF)},
- {RUNE_C(0x004E00), RUNE_C(0x009FFF)},
- {RUNE_C(0x00F900), RUNE_C(0x00FA6D)},
- {RUNE_C(0x00FA70), RUNE_C(0x00FAD9)},
- {RUNE_C(0x016FE4), RUNE_C(0x016FE4)},
- {RUNE_C(0x017000), RUNE_C(0x0187F7)},
- {RUNE_C(0x018800), RUNE_C(0x018CD5)},
- {RUNE_C(0x018D00), RUNE_C(0x018D08)},
- {RUNE_C(0x01B170), RUNE_C(0x01B2FB)},
- {RUNE_C(0x020000), RUNE_C(0x02A6DF)},
- {RUNE_C(0x02A700), RUNE_C(0x02B739)},
- {RUNE_C(0x02B740), RUNE_C(0x02B81D)},
- {RUNE_C(0x02B820), RUNE_C(0x02CEA1)},
- {RUNE_C(0x02CEB0), RUNE_C(0x02EBE0)},
- {RUNE_C(0x02EBF0), RUNE_C(0x02EE5D)},
- {RUNE_C(0x02F800), RUNE_C(0x02FA1D)},
- {RUNE_C(0x030000), RUNE_C(0x03134A)},
- {RUNE_C(0x031350), RUNE_C(0x0323AF)},
+static constexpr uint8_t stage1[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 7, 8, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 11, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 12, 13, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 14, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 15, 2, 2, 16, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 17, 0, 0, 0, 0, 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 18, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
+static constexpr unsigned char stage2[][32] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xC0, 0x00, 0x00, 0x00, 0xFE, 0x03, 0x00, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+};
bool
uprop_is_ideo(rune ch)
{
- return mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 256]], ch % 256);
}
diff --git a/lib/unicode/prop/uprop_is_ids.c b/lib/unicode/prop/uprop_is_ids.c
index a0ba82a..fc471e5 100644
--- a/lib/unicode/prop/uprop_is_ids.c
+++ b/lib/unicode/prop/uprop_is_ids.c
@@ -1,681 +1,928 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xFE, 0xFF, 0xFF, 0x07, 0xFE, 0xFF, 0xFF, 0x07,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x04,
- 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 2, 2, 2, 3, 4, 5, 2, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 2, 2, 31, 32, 33, 34, 35, 2, 2, 2, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 2, 50, 2, 2, 51, 52,
+ 53, 54, 55, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 2, 58, 59, 60, 57, 57, 57, 57,
+ 61, 62, 63, 64, 57, 57, 57, 57, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 50, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 65, 2, 2, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 78,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 2, 2, 79, 80, 81, 82, 2, 2, 83, 84, 85, 86, 87, 88,
+ 89, 90, 91, 57, 57, 92, 93, 94, 2, 95, 96, 97, 2, 2, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 57, 57, 111, 112, 113,
+ 114, 115, 116, 117, 118, 119, 120, 57, 121, 122, 57, 123, 124, 125, 126, 57,
+ 127, 128, 129, 130, 131, 132, 57, 57, 133, 134, 135, 136, 57, 137, 138, 139,
+ 2, 2, 2, 2, 2, 2, 2, 140, 141, 2, 142, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 143,
+ 2, 2, 2, 2, 2, 2, 2, 2, 144, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 2, 2, 2, 2, 145, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 2, 2, 2, 2, 146, 147, 148, 134, 57, 57, 57, 57, 149, 57, 150, 151,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 152,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 153, 56, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 154,
+ 2, 2, 155, 2, 2, 156, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 157, 158, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 159, 160, 161, 2, 2, 162, 163, 164,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 165, 57,
+ 166, 57, 167, 57, 57, 168, 57, 57, 57, 169, 57, 57, 57, 57, 57, 170,
+ 2, 171, 172, 57, 57, 57, 57, 57, 57, 57, 57, 57, 173, 174, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 175, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 176, 2,
+ 177, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 178, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 179, 2, 2, 2, 2, 180, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 2, 2, 2, 2, 181, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 182, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 183, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000100), RUNE_C(0x0002C1)},
- {RUNE_C(0x0002C6), RUNE_C(0x0002D1)},
- {RUNE_C(0x0002E0), RUNE_C(0x0002E4)},
- {RUNE_C(0x0002EC), RUNE_C(0x0002EC)},
- {RUNE_C(0x0002EE), RUNE_C(0x0002EE)},
- {RUNE_C(0x000370), RUNE_C(0x000374)},
- {RUNE_C(0x000376), RUNE_C(0x000377)},
- {RUNE_C(0x00037A), RUNE_C(0x00037D)},
- {RUNE_C(0x00037F), RUNE_C(0x00037F)},
- {RUNE_C(0x000386), RUNE_C(0x000386)},
- {RUNE_C(0x000388), RUNE_C(0x00038A)},
- {RUNE_C(0x00038C), RUNE_C(0x00038C)},
- {RUNE_C(0x00038E), RUNE_C(0x0003A1)},
- {RUNE_C(0x0003A3), RUNE_C(0x0003F5)},
- {RUNE_C(0x0003F7), RUNE_C(0x000481)},
- {RUNE_C(0x00048A), RUNE_C(0x00052F)},
- {RUNE_C(0x000531), RUNE_C(0x000556)},
- {RUNE_C(0x000559), RUNE_C(0x000559)},
- {RUNE_C(0x000560), RUNE_C(0x000588)},
- {RUNE_C(0x0005D0), RUNE_C(0x0005EA)},
- {RUNE_C(0x0005EF), RUNE_C(0x0005F2)},
- {RUNE_C(0x000620), RUNE_C(0x00064A)},
- {RUNE_C(0x00066E), RUNE_C(0x00066F)},
- {RUNE_C(0x000671), RUNE_C(0x0006D3)},
- {RUNE_C(0x0006D5), RUNE_C(0x0006D5)},
- {RUNE_C(0x0006E5), RUNE_C(0x0006E6)},
- {RUNE_C(0x0006EE), RUNE_C(0x0006EF)},
- {RUNE_C(0x0006FA), RUNE_C(0x0006FC)},
- {RUNE_C(0x0006FF), RUNE_C(0x0006FF)},
- {RUNE_C(0x000710), RUNE_C(0x000710)},
- {RUNE_C(0x000712), RUNE_C(0x00072F)},
- {RUNE_C(0x00074D), RUNE_C(0x0007A5)},
- {RUNE_C(0x0007B1), RUNE_C(0x0007B1)},
- {RUNE_C(0x0007CA), RUNE_C(0x0007EA)},
- {RUNE_C(0x0007F4), RUNE_C(0x0007F5)},
- {RUNE_C(0x0007FA), RUNE_C(0x0007FA)},
- {RUNE_C(0x000800), RUNE_C(0x000815)},
- {RUNE_C(0x00081A), RUNE_C(0x00081A)},
- {RUNE_C(0x000824), RUNE_C(0x000824)},
- {RUNE_C(0x000828), RUNE_C(0x000828)},
- {RUNE_C(0x000840), RUNE_C(0x000858)},
- {RUNE_C(0x000860), RUNE_C(0x00086A)},
- {RUNE_C(0x000870), RUNE_C(0x000887)},
- {RUNE_C(0x000889), RUNE_C(0x00088E)},
- {RUNE_C(0x0008A0), RUNE_C(0x0008C9)},
- {RUNE_C(0x000904), RUNE_C(0x000939)},
- {RUNE_C(0x00093D), RUNE_C(0x00093D)},
- {RUNE_C(0x000950), RUNE_C(0x000950)},
- {RUNE_C(0x000958), RUNE_C(0x000961)},
- {RUNE_C(0x000971), RUNE_C(0x000980)},
- {RUNE_C(0x000985), RUNE_C(0x00098C)},
- {RUNE_C(0x00098F), RUNE_C(0x000990)},
- {RUNE_C(0x000993), RUNE_C(0x0009A8)},
- {RUNE_C(0x0009AA), RUNE_C(0x0009B0)},
- {RUNE_C(0x0009B2), RUNE_C(0x0009B2)},
- {RUNE_C(0x0009B6), RUNE_C(0x0009B9)},
- {RUNE_C(0x0009BD), RUNE_C(0x0009BD)},
- {RUNE_C(0x0009CE), RUNE_C(0x0009CE)},
- {RUNE_C(0x0009DC), RUNE_C(0x0009DD)},
- {RUNE_C(0x0009DF), RUNE_C(0x0009E1)},
- {RUNE_C(0x0009F0), RUNE_C(0x0009F1)},
- {RUNE_C(0x0009FC), RUNE_C(0x0009FC)},
- {RUNE_C(0x000A05), RUNE_C(0x000A0A)},
- {RUNE_C(0x000A0F), RUNE_C(0x000A10)},
- {RUNE_C(0x000A13), RUNE_C(0x000A28)},
- {RUNE_C(0x000A2A), RUNE_C(0x000A30)},
- {RUNE_C(0x000A32), RUNE_C(0x000A33)},
- {RUNE_C(0x000A35), RUNE_C(0x000A36)},
- {RUNE_C(0x000A38), RUNE_C(0x000A39)},
- {RUNE_C(0x000A59), RUNE_C(0x000A5C)},
- {RUNE_C(0x000A5E), RUNE_C(0x000A5E)},
- {RUNE_C(0x000A72), RUNE_C(0x000A74)},
- {RUNE_C(0x000A85), RUNE_C(0x000A8D)},
- {RUNE_C(0x000A8F), RUNE_C(0x000A91)},
- {RUNE_C(0x000A93), RUNE_C(0x000AA8)},
- {RUNE_C(0x000AAA), RUNE_C(0x000AB0)},
- {RUNE_C(0x000AB2), RUNE_C(0x000AB3)},
- {RUNE_C(0x000AB5), RUNE_C(0x000AB9)},
- {RUNE_C(0x000ABD), RUNE_C(0x000ABD)},
- {RUNE_C(0x000AD0), RUNE_C(0x000AD0)},
- {RUNE_C(0x000AE0), RUNE_C(0x000AE1)},
- {RUNE_C(0x000AF9), RUNE_C(0x000AF9)},
- {RUNE_C(0x000B05), RUNE_C(0x000B0C)},
- {RUNE_C(0x000B0F), RUNE_C(0x000B10)},
- {RUNE_C(0x000B13), RUNE_C(0x000B28)},
- {RUNE_C(0x000B2A), RUNE_C(0x000B30)},
- {RUNE_C(0x000B32), RUNE_C(0x000B33)},
- {RUNE_C(0x000B35), RUNE_C(0x000B39)},
- {RUNE_C(0x000B3D), RUNE_C(0x000B3D)},
- {RUNE_C(0x000B5C), RUNE_C(0x000B5D)},
- {RUNE_C(0x000B5F), RUNE_C(0x000B61)},
- {RUNE_C(0x000B71), RUNE_C(0x000B71)},
- {RUNE_C(0x000B83), RUNE_C(0x000B83)},
- {RUNE_C(0x000B85), RUNE_C(0x000B8A)},
- {RUNE_C(0x000B8E), RUNE_C(0x000B90)},
- {RUNE_C(0x000B92), RUNE_C(0x000B95)},
- {RUNE_C(0x000B99), RUNE_C(0x000B9A)},
- {RUNE_C(0x000B9C), RUNE_C(0x000B9C)},
- {RUNE_C(0x000B9E), RUNE_C(0x000B9F)},
- {RUNE_C(0x000BA3), RUNE_C(0x000BA4)},
- {RUNE_C(0x000BA8), RUNE_C(0x000BAA)},
- {RUNE_C(0x000BAE), RUNE_C(0x000BB9)},
- {RUNE_C(0x000BD0), RUNE_C(0x000BD0)},
- {RUNE_C(0x000C05), RUNE_C(0x000C0C)},
- {RUNE_C(0x000C0E), RUNE_C(0x000C10)},
- {RUNE_C(0x000C12), RUNE_C(0x000C28)},
- {RUNE_C(0x000C2A), RUNE_C(0x000C39)},
- {RUNE_C(0x000C3D), RUNE_C(0x000C3D)},
- {RUNE_C(0x000C58), RUNE_C(0x000C5A)},
- {RUNE_C(0x000C5D), RUNE_C(0x000C5D)},
- {RUNE_C(0x000C60), RUNE_C(0x000C61)},
- {RUNE_C(0x000C80), RUNE_C(0x000C80)},
- {RUNE_C(0x000C85), RUNE_C(0x000C8C)},
- {RUNE_C(0x000C8E), RUNE_C(0x000C90)},
- {RUNE_C(0x000C92), RUNE_C(0x000CA8)},
- {RUNE_C(0x000CAA), RUNE_C(0x000CB3)},
- {RUNE_C(0x000CB5), RUNE_C(0x000CB9)},
- {RUNE_C(0x000CBD), RUNE_C(0x000CBD)},
- {RUNE_C(0x000CDD), RUNE_C(0x000CDE)},
- {RUNE_C(0x000CE0), RUNE_C(0x000CE1)},
- {RUNE_C(0x000CF1), RUNE_C(0x000CF2)},
- {RUNE_C(0x000D04), RUNE_C(0x000D0C)},
- {RUNE_C(0x000D0E), RUNE_C(0x000D10)},
- {RUNE_C(0x000D12), RUNE_C(0x000D3A)},
- {RUNE_C(0x000D3D), RUNE_C(0x000D3D)},
- {RUNE_C(0x000D4E), RUNE_C(0x000D4E)},
- {RUNE_C(0x000D54), RUNE_C(0x000D56)},
- {RUNE_C(0x000D5F), RUNE_C(0x000D61)},
- {RUNE_C(0x000D7A), RUNE_C(0x000D7F)},
- {RUNE_C(0x000D85), RUNE_C(0x000D96)},
- {RUNE_C(0x000D9A), RUNE_C(0x000DB1)},
- {RUNE_C(0x000DB3), RUNE_C(0x000DBB)},
- {RUNE_C(0x000DBD), RUNE_C(0x000DBD)},
- {RUNE_C(0x000DC0), RUNE_C(0x000DC6)},
- {RUNE_C(0x000E01), RUNE_C(0x000E30)},
- {RUNE_C(0x000E32), RUNE_C(0x000E33)},
- {RUNE_C(0x000E40), RUNE_C(0x000E46)},
- {RUNE_C(0x000E81), RUNE_C(0x000E82)},
- {RUNE_C(0x000E84), RUNE_C(0x000E84)},
- {RUNE_C(0x000E86), RUNE_C(0x000E8A)},
- {RUNE_C(0x000E8C), RUNE_C(0x000EA3)},
- {RUNE_C(0x000EA5), RUNE_C(0x000EA5)},
- {RUNE_C(0x000EA7), RUNE_C(0x000EB0)},
- {RUNE_C(0x000EB2), RUNE_C(0x000EB3)},
- {RUNE_C(0x000EBD), RUNE_C(0x000EBD)},
- {RUNE_C(0x000EC0), RUNE_C(0x000EC4)},
- {RUNE_C(0x000EC6), RUNE_C(0x000EC6)},
- {RUNE_C(0x000EDC), RUNE_C(0x000EDF)},
- {RUNE_C(0x000F00), RUNE_C(0x000F00)},
- {RUNE_C(0x000F40), RUNE_C(0x000F47)},
- {RUNE_C(0x000F49), RUNE_C(0x000F6C)},
- {RUNE_C(0x000F88), RUNE_C(0x000F8C)},
- {RUNE_C(0x001000), RUNE_C(0x00102A)},
- {RUNE_C(0x00103F), RUNE_C(0x00103F)},
- {RUNE_C(0x001050), RUNE_C(0x001055)},
- {RUNE_C(0x00105A), RUNE_C(0x00105D)},
- {RUNE_C(0x001061), RUNE_C(0x001061)},
- {RUNE_C(0x001065), RUNE_C(0x001066)},
- {RUNE_C(0x00106E), RUNE_C(0x001070)},
- {RUNE_C(0x001075), RUNE_C(0x001081)},
- {RUNE_C(0x00108E), RUNE_C(0x00108E)},
- {RUNE_C(0x0010A0), RUNE_C(0x0010C5)},
- {RUNE_C(0x0010C7), RUNE_C(0x0010C7)},
- {RUNE_C(0x0010CD), RUNE_C(0x0010CD)},
- {RUNE_C(0x0010D0), RUNE_C(0x0010FA)},
- {RUNE_C(0x0010FC), RUNE_C(0x001248)},
- {RUNE_C(0x00124A), RUNE_C(0x00124D)},
- {RUNE_C(0x001250), RUNE_C(0x001256)},
- {RUNE_C(0x001258), RUNE_C(0x001258)},
- {RUNE_C(0x00125A), RUNE_C(0x00125D)},
- {RUNE_C(0x001260), RUNE_C(0x001288)},
- {RUNE_C(0x00128A), RUNE_C(0x00128D)},
- {RUNE_C(0x001290), RUNE_C(0x0012B0)},
- {RUNE_C(0x0012B2), RUNE_C(0x0012B5)},
- {RUNE_C(0x0012B8), RUNE_C(0x0012BE)},
- {RUNE_C(0x0012C0), RUNE_C(0x0012C0)},
- {RUNE_C(0x0012C2), RUNE_C(0x0012C5)},
- {RUNE_C(0x0012C8), RUNE_C(0x0012D6)},
- {RUNE_C(0x0012D8), RUNE_C(0x001310)},
- {RUNE_C(0x001312), RUNE_C(0x001315)},
- {RUNE_C(0x001318), RUNE_C(0x00135A)},
- {RUNE_C(0x001380), RUNE_C(0x00138F)},
- {RUNE_C(0x0013A0), RUNE_C(0x0013F5)},
- {RUNE_C(0x0013F8), RUNE_C(0x0013FD)},
- {RUNE_C(0x001401), RUNE_C(0x00166C)},
- {RUNE_C(0x00166F), RUNE_C(0x00167F)},
- {RUNE_C(0x001681), RUNE_C(0x00169A)},
- {RUNE_C(0x0016A0), RUNE_C(0x0016EA)},
- {RUNE_C(0x0016EE), RUNE_C(0x0016F8)},
- {RUNE_C(0x001700), RUNE_C(0x001711)},
- {RUNE_C(0x00171F), RUNE_C(0x001731)},
- {RUNE_C(0x001740), RUNE_C(0x001751)},
- {RUNE_C(0x001760), RUNE_C(0x00176C)},
- {RUNE_C(0x00176E), RUNE_C(0x001770)},
- {RUNE_C(0x001780), RUNE_C(0x0017B3)},
- {RUNE_C(0x0017D7), RUNE_C(0x0017D7)},
- {RUNE_C(0x0017DC), RUNE_C(0x0017DC)},
- {RUNE_C(0x001820), RUNE_C(0x001878)},
- {RUNE_C(0x001880), RUNE_C(0x0018A8)},
- {RUNE_C(0x0018AA), RUNE_C(0x0018AA)},
- {RUNE_C(0x0018B0), RUNE_C(0x0018F5)},
- {RUNE_C(0x001900), RUNE_C(0x00191E)},
- {RUNE_C(0x001950), RUNE_C(0x00196D)},
- {RUNE_C(0x001970), RUNE_C(0x001974)},
- {RUNE_C(0x001980), RUNE_C(0x0019AB)},
- {RUNE_C(0x0019B0), RUNE_C(0x0019C9)},
- {RUNE_C(0x001A00), RUNE_C(0x001A16)},
- {RUNE_C(0x001A20), RUNE_C(0x001A54)},
- {RUNE_C(0x001AA7), RUNE_C(0x001AA7)},
- {RUNE_C(0x001B05), RUNE_C(0x001B33)},
- {RUNE_C(0x001B45), RUNE_C(0x001B4C)},
- {RUNE_C(0x001B83), RUNE_C(0x001BA0)},
- {RUNE_C(0x001BAE), RUNE_C(0x001BAF)},
- {RUNE_C(0x001BBA), RUNE_C(0x001BE5)},
- {RUNE_C(0x001C00), RUNE_C(0x001C23)},
- {RUNE_C(0x001C4D), RUNE_C(0x001C4F)},
- {RUNE_C(0x001C5A), RUNE_C(0x001C7D)},
- {RUNE_C(0x001C80), RUNE_C(0x001C88)},
- {RUNE_C(0x001C90), RUNE_C(0x001CBA)},
- {RUNE_C(0x001CBD), RUNE_C(0x001CBF)},
- {RUNE_C(0x001CE9), RUNE_C(0x001CEC)},
- {RUNE_C(0x001CEE), RUNE_C(0x001CF3)},
- {RUNE_C(0x001CF5), RUNE_C(0x001CF6)},
- {RUNE_C(0x001CFA), RUNE_C(0x001CFA)},
- {RUNE_C(0x001D00), RUNE_C(0x001DBF)},
- {RUNE_C(0x001E00), RUNE_C(0x001F15)},
- {RUNE_C(0x001F18), RUNE_C(0x001F1D)},
- {RUNE_C(0x001F20), RUNE_C(0x001F45)},
- {RUNE_C(0x001F48), RUNE_C(0x001F4D)},
- {RUNE_C(0x001F50), RUNE_C(0x001F57)},
- {RUNE_C(0x001F59), RUNE_C(0x001F59)},
- {RUNE_C(0x001F5B), RUNE_C(0x001F5B)},
- {RUNE_C(0x001F5D), RUNE_C(0x001F5D)},
- {RUNE_C(0x001F5F), RUNE_C(0x001F7D)},
- {RUNE_C(0x001F80), RUNE_C(0x001FB4)},
- {RUNE_C(0x001FB6), RUNE_C(0x001FBC)},
- {RUNE_C(0x001FBE), RUNE_C(0x001FBE)},
- {RUNE_C(0x001FC2), RUNE_C(0x001FC4)},
- {RUNE_C(0x001FC6), RUNE_C(0x001FCC)},
- {RUNE_C(0x001FD0), RUNE_C(0x001FD3)},
- {RUNE_C(0x001FD6), RUNE_C(0x001FDB)},
- {RUNE_C(0x001FE0), RUNE_C(0x001FEC)},
- {RUNE_C(0x001FF2), RUNE_C(0x001FF4)},
- {RUNE_C(0x001FF6), RUNE_C(0x001FFC)},
- {RUNE_C(0x002071), RUNE_C(0x002071)},
- {RUNE_C(0x00207F), RUNE_C(0x00207F)},
- {RUNE_C(0x002090), RUNE_C(0x00209C)},
- {RUNE_C(0x002102), RUNE_C(0x002102)},
- {RUNE_C(0x002107), RUNE_C(0x002107)},
- {RUNE_C(0x00210A), RUNE_C(0x002113)},
- {RUNE_C(0x002115), RUNE_C(0x002115)},
- {RUNE_C(0x002118), RUNE_C(0x00211D)},
- {RUNE_C(0x002124), RUNE_C(0x002124)},
- {RUNE_C(0x002126), RUNE_C(0x002126)},
- {RUNE_C(0x002128), RUNE_C(0x002128)},
- {RUNE_C(0x00212A), RUNE_C(0x002139)},
- {RUNE_C(0x00213C), RUNE_C(0x00213F)},
- {RUNE_C(0x002145), RUNE_C(0x002149)},
- {RUNE_C(0x00214E), RUNE_C(0x00214E)},
- {RUNE_C(0x002160), RUNE_C(0x002188)},
- {RUNE_C(0x002C00), RUNE_C(0x002CE4)},
- {RUNE_C(0x002CEB), RUNE_C(0x002CEE)},
- {RUNE_C(0x002CF2), RUNE_C(0x002CF3)},
- {RUNE_C(0x002D00), RUNE_C(0x002D25)},
- {RUNE_C(0x002D27), RUNE_C(0x002D27)},
- {RUNE_C(0x002D2D), RUNE_C(0x002D2D)},
- {RUNE_C(0x002D30), RUNE_C(0x002D67)},
- {RUNE_C(0x002D6F), RUNE_C(0x002D6F)},
- {RUNE_C(0x002D80), RUNE_C(0x002D96)},
- {RUNE_C(0x002DA0), RUNE_C(0x002DA6)},
- {RUNE_C(0x002DA8), RUNE_C(0x002DAE)},
- {RUNE_C(0x002DB0), RUNE_C(0x002DB6)},
- {RUNE_C(0x002DB8), RUNE_C(0x002DBE)},
- {RUNE_C(0x002DC0), RUNE_C(0x002DC6)},
- {RUNE_C(0x002DC8), RUNE_C(0x002DCE)},
- {RUNE_C(0x002DD0), RUNE_C(0x002DD6)},
- {RUNE_C(0x002DD8), RUNE_C(0x002DDE)},
- {RUNE_C(0x003005), RUNE_C(0x003007)},
- {RUNE_C(0x003021), RUNE_C(0x003029)},
- {RUNE_C(0x003031), RUNE_C(0x003035)},
- {RUNE_C(0x003038), RUNE_C(0x00303C)},
- {RUNE_C(0x003041), RUNE_C(0x003096)},
- {RUNE_C(0x00309B), RUNE_C(0x00309F)},
- {RUNE_C(0x0030A1), RUNE_C(0x0030FA)},
- {RUNE_C(0x0030FC), RUNE_C(0x0030FF)},
- {RUNE_C(0x003105), RUNE_C(0x00312F)},
- {RUNE_C(0x003131), RUNE_C(0x00318E)},
- {RUNE_C(0x0031A0), RUNE_C(0x0031BF)},
- {RUNE_C(0x0031F0), RUNE_C(0x0031FF)},
- {RUNE_C(0x003400), RUNE_C(0x004DBF)},
- {RUNE_C(0x004E00), RUNE_C(0x00A48C)},
- {RUNE_C(0x00A4D0), RUNE_C(0x00A4FD)},
- {RUNE_C(0x00A500), RUNE_C(0x00A60C)},
- {RUNE_C(0x00A610), RUNE_C(0x00A61F)},
- {RUNE_C(0x00A62A), RUNE_C(0x00A62B)},
- {RUNE_C(0x00A640), RUNE_C(0x00A66E)},
- {RUNE_C(0x00A67F), RUNE_C(0x00A69D)},
- {RUNE_C(0x00A6A0), RUNE_C(0x00A6EF)},
- {RUNE_C(0x00A717), RUNE_C(0x00A71F)},
- {RUNE_C(0x00A722), RUNE_C(0x00A788)},
- {RUNE_C(0x00A78B), RUNE_C(0x00A7CA)},
- {RUNE_C(0x00A7D0), RUNE_C(0x00A7D1)},
- {RUNE_C(0x00A7D3), RUNE_C(0x00A7D3)},
- {RUNE_C(0x00A7D5), RUNE_C(0x00A7D9)},
- {RUNE_C(0x00A7F2), RUNE_C(0x00A801)},
- {RUNE_C(0x00A803), RUNE_C(0x00A805)},
- {RUNE_C(0x00A807), RUNE_C(0x00A80A)},
- {RUNE_C(0x00A80C), RUNE_C(0x00A822)},
- {RUNE_C(0x00A840), RUNE_C(0x00A873)},
- {RUNE_C(0x00A882), RUNE_C(0x00A8B3)},
- {RUNE_C(0x00A8F2), RUNE_C(0x00A8F7)},
- {RUNE_C(0x00A8FB), RUNE_C(0x00A8FB)},
- {RUNE_C(0x00A8FD), RUNE_C(0x00A8FE)},
- {RUNE_C(0x00A90A), RUNE_C(0x00A925)},
- {RUNE_C(0x00A930), RUNE_C(0x00A946)},
- {RUNE_C(0x00A960), RUNE_C(0x00A97C)},
- {RUNE_C(0x00A984), RUNE_C(0x00A9B2)},
- {RUNE_C(0x00A9CF), RUNE_C(0x00A9CF)},
- {RUNE_C(0x00A9E0), RUNE_C(0x00A9E4)},
- {RUNE_C(0x00A9E6), RUNE_C(0x00A9EF)},
- {RUNE_C(0x00A9FA), RUNE_C(0x00A9FE)},
- {RUNE_C(0x00AA00), RUNE_C(0x00AA28)},
- {RUNE_C(0x00AA40), RUNE_C(0x00AA42)},
- {RUNE_C(0x00AA44), RUNE_C(0x00AA4B)},
- {RUNE_C(0x00AA60), RUNE_C(0x00AA76)},
- {RUNE_C(0x00AA7A), RUNE_C(0x00AA7A)},
- {RUNE_C(0x00AA7E), RUNE_C(0x00AAAF)},
- {RUNE_C(0x00AAB1), RUNE_C(0x00AAB1)},
- {RUNE_C(0x00AAB5), RUNE_C(0x00AAB6)},
- {RUNE_C(0x00AAB9), RUNE_C(0x00AABD)},
- {RUNE_C(0x00AAC0), RUNE_C(0x00AAC0)},
- {RUNE_C(0x00AAC2), RUNE_C(0x00AAC2)},
- {RUNE_C(0x00AADB), RUNE_C(0x00AADD)},
- {RUNE_C(0x00AAE0), RUNE_C(0x00AAEA)},
- {RUNE_C(0x00AAF2), RUNE_C(0x00AAF4)},
- {RUNE_C(0x00AB01), RUNE_C(0x00AB06)},
- {RUNE_C(0x00AB09), RUNE_C(0x00AB0E)},
- {RUNE_C(0x00AB11), RUNE_C(0x00AB16)},
- {RUNE_C(0x00AB20), RUNE_C(0x00AB26)},
- {RUNE_C(0x00AB28), RUNE_C(0x00AB2E)},
- {RUNE_C(0x00AB30), RUNE_C(0x00AB5A)},
- {RUNE_C(0x00AB5C), RUNE_C(0x00AB69)},
- {RUNE_C(0x00AB70), RUNE_C(0x00ABE2)},
- {RUNE_C(0x00AC00), RUNE_C(0x00D7A3)},
- {RUNE_C(0x00D7B0), RUNE_C(0x00D7C6)},
- {RUNE_C(0x00D7CB), RUNE_C(0x00D7FB)},
- {RUNE_C(0x00F900), RUNE_C(0x00FA6D)},
- {RUNE_C(0x00FA70), RUNE_C(0x00FAD9)},
- {RUNE_C(0x00FB00), RUNE_C(0x00FB06)},
- {RUNE_C(0x00FB13), RUNE_C(0x00FB17)},
- {RUNE_C(0x00FB1D), RUNE_C(0x00FB1D)},
- {RUNE_C(0x00FB1F), RUNE_C(0x00FB28)},
- {RUNE_C(0x00FB2A), RUNE_C(0x00FB36)},
- {RUNE_C(0x00FB38), RUNE_C(0x00FB3C)},
- {RUNE_C(0x00FB3E), RUNE_C(0x00FB3E)},
- {RUNE_C(0x00FB40), RUNE_C(0x00FB41)},
- {RUNE_C(0x00FB43), RUNE_C(0x00FB44)},
- {RUNE_C(0x00FB46), RUNE_C(0x00FBB1)},
- {RUNE_C(0x00FBD3), RUNE_C(0x00FD3D)},
- {RUNE_C(0x00FD50), RUNE_C(0x00FD8F)},
- {RUNE_C(0x00FD92), RUNE_C(0x00FDC7)},
- {RUNE_C(0x00FDF0), RUNE_C(0x00FDFB)},
- {RUNE_C(0x00FE70), RUNE_C(0x00FE74)},
- {RUNE_C(0x00FE76), RUNE_C(0x00FEFC)},
- {RUNE_C(0x00FF21), RUNE_C(0x00FF3A)},
- {RUNE_C(0x00FF41), RUNE_C(0x00FF5A)},
- {RUNE_C(0x00FF66), RUNE_C(0x00FFBE)},
- {RUNE_C(0x00FFC2), RUNE_C(0x00FFC7)},
- {RUNE_C(0x00FFCA), RUNE_C(0x00FFCF)},
- {RUNE_C(0x00FFD2), RUNE_C(0x00FFD7)},
- {RUNE_C(0x00FFDA), RUNE_C(0x00FFDC)},
- {RUNE_C(0x010000), RUNE_C(0x01000B)},
- {RUNE_C(0x01000D), RUNE_C(0x010026)},
- {RUNE_C(0x010028), RUNE_C(0x01003A)},
- {RUNE_C(0x01003C), RUNE_C(0x01003D)},
- {RUNE_C(0x01003F), RUNE_C(0x01004D)},
- {RUNE_C(0x010050), RUNE_C(0x01005D)},
- {RUNE_C(0x010080), RUNE_C(0x0100FA)},
- {RUNE_C(0x010140), RUNE_C(0x010174)},
- {RUNE_C(0x010280), RUNE_C(0x01029C)},
- {RUNE_C(0x0102A0), RUNE_C(0x0102D0)},
- {RUNE_C(0x010300), RUNE_C(0x01031F)},
- {RUNE_C(0x01032D), RUNE_C(0x01034A)},
- {RUNE_C(0x010350), RUNE_C(0x010375)},
- {RUNE_C(0x010380), RUNE_C(0x01039D)},
- {RUNE_C(0x0103A0), RUNE_C(0x0103C3)},
- {RUNE_C(0x0103C8), RUNE_C(0x0103CF)},
- {RUNE_C(0x0103D1), RUNE_C(0x0103D5)},
- {RUNE_C(0x010400), RUNE_C(0x01049D)},
- {RUNE_C(0x0104B0), RUNE_C(0x0104D3)},
- {RUNE_C(0x0104D8), RUNE_C(0x0104FB)},
- {RUNE_C(0x010500), RUNE_C(0x010527)},
- {RUNE_C(0x010530), RUNE_C(0x010563)},
- {RUNE_C(0x010570), RUNE_C(0x01057A)},
- {RUNE_C(0x01057C), RUNE_C(0x01058A)},
- {RUNE_C(0x01058C), RUNE_C(0x010592)},
- {RUNE_C(0x010594), RUNE_C(0x010595)},
- {RUNE_C(0x010597), RUNE_C(0x0105A1)},
- {RUNE_C(0x0105A3), RUNE_C(0x0105B1)},
- {RUNE_C(0x0105B3), RUNE_C(0x0105B9)},
- {RUNE_C(0x0105BB), RUNE_C(0x0105BC)},
- {RUNE_C(0x010600), RUNE_C(0x010736)},
- {RUNE_C(0x010740), RUNE_C(0x010755)},
- {RUNE_C(0x010760), RUNE_C(0x010767)},
- {RUNE_C(0x010780), RUNE_C(0x010785)},
- {RUNE_C(0x010787), RUNE_C(0x0107B0)},
- {RUNE_C(0x0107B2), RUNE_C(0x0107BA)},
- {RUNE_C(0x010800), RUNE_C(0x010805)},
- {RUNE_C(0x010808), RUNE_C(0x010808)},
- {RUNE_C(0x01080A), RUNE_C(0x010835)},
- {RUNE_C(0x010837), RUNE_C(0x010838)},
- {RUNE_C(0x01083C), RUNE_C(0x01083C)},
- {RUNE_C(0x01083F), RUNE_C(0x010855)},
- {RUNE_C(0x010860), RUNE_C(0x010876)},
- {RUNE_C(0x010880), RUNE_C(0x01089E)},
- {RUNE_C(0x0108E0), RUNE_C(0x0108F2)},
- {RUNE_C(0x0108F4), RUNE_C(0x0108F5)},
- {RUNE_C(0x010900), RUNE_C(0x010915)},
- {RUNE_C(0x010920), RUNE_C(0x010939)},
- {RUNE_C(0x010980), RUNE_C(0x0109B7)},
- {RUNE_C(0x0109BE), RUNE_C(0x0109BF)},
- {RUNE_C(0x010A00), RUNE_C(0x010A00)},
- {RUNE_C(0x010A10), RUNE_C(0x010A13)},
- {RUNE_C(0x010A15), RUNE_C(0x010A17)},
- {RUNE_C(0x010A19), RUNE_C(0x010A35)},
- {RUNE_C(0x010A60), RUNE_C(0x010A7C)},
- {RUNE_C(0x010A80), RUNE_C(0x010A9C)},
- {RUNE_C(0x010AC0), RUNE_C(0x010AC7)},
- {RUNE_C(0x010AC9), RUNE_C(0x010AE4)},
- {RUNE_C(0x010B00), RUNE_C(0x010B35)},
- {RUNE_C(0x010B40), RUNE_C(0x010B55)},
- {RUNE_C(0x010B60), RUNE_C(0x010B72)},
- {RUNE_C(0x010B80), RUNE_C(0x010B91)},
- {RUNE_C(0x010C00), RUNE_C(0x010C48)},
- {RUNE_C(0x010C80), RUNE_C(0x010CB2)},
- {RUNE_C(0x010CC0), RUNE_C(0x010CF2)},
- {RUNE_C(0x010D00), RUNE_C(0x010D23)},
- {RUNE_C(0x010E80), RUNE_C(0x010EA9)},
- {RUNE_C(0x010EB0), RUNE_C(0x010EB1)},
- {RUNE_C(0x010F00), RUNE_C(0x010F1C)},
- {RUNE_C(0x010F27), RUNE_C(0x010F27)},
- {RUNE_C(0x010F30), RUNE_C(0x010F45)},
- {RUNE_C(0x010F70), RUNE_C(0x010F81)},
- {RUNE_C(0x010FB0), RUNE_C(0x010FC4)},
- {RUNE_C(0x010FE0), RUNE_C(0x010FF6)},
- {RUNE_C(0x011003), RUNE_C(0x011037)},
- {RUNE_C(0x011071), RUNE_C(0x011072)},
- {RUNE_C(0x011075), RUNE_C(0x011075)},
- {RUNE_C(0x011083), RUNE_C(0x0110AF)},
- {RUNE_C(0x0110D0), RUNE_C(0x0110E8)},
- {RUNE_C(0x011103), RUNE_C(0x011126)},
- {RUNE_C(0x011144), RUNE_C(0x011144)},
- {RUNE_C(0x011147), RUNE_C(0x011147)},
- {RUNE_C(0x011150), RUNE_C(0x011172)},
- {RUNE_C(0x011176), RUNE_C(0x011176)},
- {RUNE_C(0x011183), RUNE_C(0x0111B2)},
- {RUNE_C(0x0111C1), RUNE_C(0x0111C4)},
- {RUNE_C(0x0111DA), RUNE_C(0x0111DA)},
- {RUNE_C(0x0111DC), RUNE_C(0x0111DC)},
- {RUNE_C(0x011200), RUNE_C(0x011211)},
- {RUNE_C(0x011213), RUNE_C(0x01122B)},
- {RUNE_C(0x01123F), RUNE_C(0x011240)},
- {RUNE_C(0x011280), RUNE_C(0x011286)},
- {RUNE_C(0x011288), RUNE_C(0x011288)},
- {RUNE_C(0x01128A), RUNE_C(0x01128D)},
- {RUNE_C(0x01128F), RUNE_C(0x01129D)},
- {RUNE_C(0x01129F), RUNE_C(0x0112A8)},
- {RUNE_C(0x0112B0), RUNE_C(0x0112DE)},
- {RUNE_C(0x011305), RUNE_C(0x01130C)},
- {RUNE_C(0x01130F), RUNE_C(0x011310)},
- {RUNE_C(0x011313), RUNE_C(0x011328)},
- {RUNE_C(0x01132A), RUNE_C(0x011330)},
- {RUNE_C(0x011332), RUNE_C(0x011333)},
- {RUNE_C(0x011335), RUNE_C(0x011339)},
- {RUNE_C(0x01133D), RUNE_C(0x01133D)},
- {RUNE_C(0x011350), RUNE_C(0x011350)},
- {RUNE_C(0x01135D), RUNE_C(0x011361)},
- {RUNE_C(0x011400), RUNE_C(0x011434)},
- {RUNE_C(0x011447), RUNE_C(0x01144A)},
- {RUNE_C(0x01145F), RUNE_C(0x011461)},
- {RUNE_C(0x011480), RUNE_C(0x0114AF)},
- {RUNE_C(0x0114C4), RUNE_C(0x0114C5)},
- {RUNE_C(0x0114C7), RUNE_C(0x0114C7)},
- {RUNE_C(0x011580), RUNE_C(0x0115AE)},
- {RUNE_C(0x0115D8), RUNE_C(0x0115DB)},
- {RUNE_C(0x011600), RUNE_C(0x01162F)},
- {RUNE_C(0x011644), RUNE_C(0x011644)},
- {RUNE_C(0x011680), RUNE_C(0x0116AA)},
- {RUNE_C(0x0116B8), RUNE_C(0x0116B8)},
- {RUNE_C(0x011700), RUNE_C(0x01171A)},
- {RUNE_C(0x011740), RUNE_C(0x011746)},
- {RUNE_C(0x011800), RUNE_C(0x01182B)},
- {RUNE_C(0x0118A0), RUNE_C(0x0118DF)},
- {RUNE_C(0x0118FF), RUNE_C(0x011906)},
- {RUNE_C(0x011909), RUNE_C(0x011909)},
- {RUNE_C(0x01190C), RUNE_C(0x011913)},
- {RUNE_C(0x011915), RUNE_C(0x011916)},
- {RUNE_C(0x011918), RUNE_C(0x01192F)},
- {RUNE_C(0x01193F), RUNE_C(0x01193F)},
- {RUNE_C(0x011941), RUNE_C(0x011941)},
- {RUNE_C(0x0119A0), RUNE_C(0x0119A7)},
- {RUNE_C(0x0119AA), RUNE_C(0x0119D0)},
- {RUNE_C(0x0119E1), RUNE_C(0x0119E1)},
- {RUNE_C(0x0119E3), RUNE_C(0x0119E3)},
- {RUNE_C(0x011A00), RUNE_C(0x011A00)},
- {RUNE_C(0x011A0B), RUNE_C(0x011A32)},
- {RUNE_C(0x011A3A), RUNE_C(0x011A3A)},
- {RUNE_C(0x011A50), RUNE_C(0x011A50)},
- {RUNE_C(0x011A5C), RUNE_C(0x011A89)},
- {RUNE_C(0x011A9D), RUNE_C(0x011A9D)},
- {RUNE_C(0x011AB0), RUNE_C(0x011AF8)},
- {RUNE_C(0x011C00), RUNE_C(0x011C08)},
- {RUNE_C(0x011C0A), RUNE_C(0x011C2E)},
- {RUNE_C(0x011C40), RUNE_C(0x011C40)},
- {RUNE_C(0x011C72), RUNE_C(0x011C8F)},
- {RUNE_C(0x011D00), RUNE_C(0x011D06)},
- {RUNE_C(0x011D08), RUNE_C(0x011D09)},
- {RUNE_C(0x011D0B), RUNE_C(0x011D30)},
- {RUNE_C(0x011D46), RUNE_C(0x011D46)},
- {RUNE_C(0x011D60), RUNE_C(0x011D65)},
- {RUNE_C(0x011D67), RUNE_C(0x011D68)},
- {RUNE_C(0x011D6A), RUNE_C(0x011D89)},
- {RUNE_C(0x011D98), RUNE_C(0x011D98)},
- {RUNE_C(0x011EE0), RUNE_C(0x011EF2)},
- {RUNE_C(0x011F02), RUNE_C(0x011F02)},
- {RUNE_C(0x011F04), RUNE_C(0x011F10)},
- {RUNE_C(0x011F12), RUNE_C(0x011F33)},
- {RUNE_C(0x011FB0), RUNE_C(0x011FB0)},
- {RUNE_C(0x012000), RUNE_C(0x012399)},
- {RUNE_C(0x012400), RUNE_C(0x01246E)},
- {RUNE_C(0x012480), RUNE_C(0x012543)},
- {RUNE_C(0x012F90), RUNE_C(0x012FF0)},
- {RUNE_C(0x013000), RUNE_C(0x01342F)},
- {RUNE_C(0x013441), RUNE_C(0x013446)},
- {RUNE_C(0x014400), RUNE_C(0x014646)},
- {RUNE_C(0x016800), RUNE_C(0x016A38)},
- {RUNE_C(0x016A40), RUNE_C(0x016A5E)},
- {RUNE_C(0x016A70), RUNE_C(0x016ABE)},
- {RUNE_C(0x016AD0), RUNE_C(0x016AED)},
- {RUNE_C(0x016B00), RUNE_C(0x016B2F)},
- {RUNE_C(0x016B40), RUNE_C(0x016B43)},
- {RUNE_C(0x016B63), RUNE_C(0x016B77)},
- {RUNE_C(0x016B7D), RUNE_C(0x016B8F)},
- {RUNE_C(0x016E40), RUNE_C(0x016E7F)},
- {RUNE_C(0x016F00), RUNE_C(0x016F4A)},
- {RUNE_C(0x016F50), RUNE_C(0x016F50)},
- {RUNE_C(0x016F93), RUNE_C(0x016F9F)},
- {RUNE_C(0x016FE0), RUNE_C(0x016FE1)},
- {RUNE_C(0x016FE3), RUNE_C(0x016FE3)},
- {RUNE_C(0x017000), RUNE_C(0x0187F7)},
- {RUNE_C(0x018800), RUNE_C(0x018CD5)},
- {RUNE_C(0x018D00), RUNE_C(0x018D08)},
- {RUNE_C(0x01AFF0), RUNE_C(0x01AFF3)},
- {RUNE_C(0x01AFF5), RUNE_C(0x01AFFB)},
- {RUNE_C(0x01AFFD), RUNE_C(0x01AFFE)},
- {RUNE_C(0x01B000), RUNE_C(0x01B122)},
- {RUNE_C(0x01B132), RUNE_C(0x01B132)},
- {RUNE_C(0x01B150), RUNE_C(0x01B152)},
- {RUNE_C(0x01B155), RUNE_C(0x01B155)},
- {RUNE_C(0x01B164), RUNE_C(0x01B167)},
- {RUNE_C(0x01B170), RUNE_C(0x01B2FB)},
- {RUNE_C(0x01BC00), RUNE_C(0x01BC6A)},
- {RUNE_C(0x01BC70), RUNE_C(0x01BC7C)},
- {RUNE_C(0x01BC80), RUNE_C(0x01BC88)},
- {RUNE_C(0x01BC90), RUNE_C(0x01BC99)},
- {RUNE_C(0x01D400), RUNE_C(0x01D454)},
- {RUNE_C(0x01D456), RUNE_C(0x01D49C)},
- {RUNE_C(0x01D49E), RUNE_C(0x01D49F)},
- {RUNE_C(0x01D4A2), RUNE_C(0x01D4A2)},
- {RUNE_C(0x01D4A5), RUNE_C(0x01D4A6)},
- {RUNE_C(0x01D4A9), RUNE_C(0x01D4AC)},
- {RUNE_C(0x01D4AE), RUNE_C(0x01D4B9)},
- {RUNE_C(0x01D4BB), RUNE_C(0x01D4BB)},
- {RUNE_C(0x01D4BD), RUNE_C(0x01D4C3)},
- {RUNE_C(0x01D4C5), RUNE_C(0x01D505)},
- {RUNE_C(0x01D507), RUNE_C(0x01D50A)},
- {RUNE_C(0x01D50D), RUNE_C(0x01D514)},
- {RUNE_C(0x01D516), RUNE_C(0x01D51C)},
- {RUNE_C(0x01D51E), RUNE_C(0x01D539)},
- {RUNE_C(0x01D53B), RUNE_C(0x01D53E)},
- {RUNE_C(0x01D540), RUNE_C(0x01D544)},
- {RUNE_C(0x01D546), RUNE_C(0x01D546)},
- {RUNE_C(0x01D54A), RUNE_C(0x01D550)},
- {RUNE_C(0x01D552), RUNE_C(0x01D6A5)},
- {RUNE_C(0x01D6A8), RUNE_C(0x01D6C0)},
- {RUNE_C(0x01D6C2), RUNE_C(0x01D6DA)},
- {RUNE_C(0x01D6DC), RUNE_C(0x01D6FA)},
- {RUNE_C(0x01D6FC), RUNE_C(0x01D714)},
- {RUNE_C(0x01D716), RUNE_C(0x01D734)},
- {RUNE_C(0x01D736), RUNE_C(0x01D74E)},
- {RUNE_C(0x01D750), RUNE_C(0x01D76E)},
- {RUNE_C(0x01D770), RUNE_C(0x01D788)},
- {RUNE_C(0x01D78A), RUNE_C(0x01D7A8)},
- {RUNE_C(0x01D7AA), RUNE_C(0x01D7C2)},
- {RUNE_C(0x01D7C4), RUNE_C(0x01D7CB)},
- {RUNE_C(0x01DF00), RUNE_C(0x01DF1E)},
- {RUNE_C(0x01DF25), RUNE_C(0x01DF2A)},
- {RUNE_C(0x01E030), RUNE_C(0x01E06D)},
- {RUNE_C(0x01E100), RUNE_C(0x01E12C)},
- {RUNE_C(0x01E137), RUNE_C(0x01E13D)},
- {RUNE_C(0x01E14E), RUNE_C(0x01E14E)},
- {RUNE_C(0x01E290), RUNE_C(0x01E2AD)},
- {RUNE_C(0x01E2C0), RUNE_C(0x01E2EB)},
- {RUNE_C(0x01E4D0), RUNE_C(0x01E4EB)},
- {RUNE_C(0x01E7E0), RUNE_C(0x01E7E6)},
- {RUNE_C(0x01E7E8), RUNE_C(0x01E7EB)},
- {RUNE_C(0x01E7ED), RUNE_C(0x01E7EE)},
- {RUNE_C(0x01E7F0), RUNE_C(0x01E7FE)},
- {RUNE_C(0x01E800), RUNE_C(0x01E8C4)},
- {RUNE_C(0x01E900), RUNE_C(0x01E943)},
- {RUNE_C(0x01E94B), RUNE_C(0x01E94B)},
- {RUNE_C(0x01EE00), RUNE_C(0x01EE03)},
- {RUNE_C(0x01EE05), RUNE_C(0x01EE1F)},
- {RUNE_C(0x01EE21), RUNE_C(0x01EE22)},
- {RUNE_C(0x01EE24), RUNE_C(0x01EE24)},
- {RUNE_C(0x01EE27), RUNE_C(0x01EE27)},
- {RUNE_C(0x01EE29), RUNE_C(0x01EE32)},
- {RUNE_C(0x01EE34), RUNE_C(0x01EE37)},
- {RUNE_C(0x01EE39), RUNE_C(0x01EE39)},
- {RUNE_C(0x01EE3B), RUNE_C(0x01EE3B)},
- {RUNE_C(0x01EE42), RUNE_C(0x01EE42)},
- {RUNE_C(0x01EE47), RUNE_C(0x01EE47)},
- {RUNE_C(0x01EE49), RUNE_C(0x01EE49)},
- {RUNE_C(0x01EE4B), RUNE_C(0x01EE4B)},
- {RUNE_C(0x01EE4D), RUNE_C(0x01EE4F)},
- {RUNE_C(0x01EE51), RUNE_C(0x01EE52)},
- {RUNE_C(0x01EE54), RUNE_C(0x01EE54)},
- {RUNE_C(0x01EE57), RUNE_C(0x01EE57)},
- {RUNE_C(0x01EE59), RUNE_C(0x01EE59)},
- {RUNE_C(0x01EE5B), RUNE_C(0x01EE5B)},
- {RUNE_C(0x01EE5D), RUNE_C(0x01EE5D)},
- {RUNE_C(0x01EE5F), RUNE_C(0x01EE5F)},
- {RUNE_C(0x01EE61), RUNE_C(0x01EE62)},
- {RUNE_C(0x01EE64), RUNE_C(0x01EE64)},
- {RUNE_C(0x01EE67), RUNE_C(0x01EE6A)},
- {RUNE_C(0x01EE6C), RUNE_C(0x01EE72)},
- {RUNE_C(0x01EE74), RUNE_C(0x01EE77)},
- {RUNE_C(0x01EE79), RUNE_C(0x01EE7C)},
- {RUNE_C(0x01EE7E), RUNE_C(0x01EE7E)},
- {RUNE_C(0x01EE80), RUNE_C(0x01EE89)},
- {RUNE_C(0x01EE8B), RUNE_C(0x01EE9B)},
- {RUNE_C(0x01EEA1), RUNE_C(0x01EEA3)},
- {RUNE_C(0x01EEA5), RUNE_C(0x01EEA9)},
- {RUNE_C(0x01EEAB), RUNE_C(0x01EEBB)},
- {RUNE_C(0x020000), RUNE_C(0x02A6DF)},
- {RUNE_C(0x02A700), RUNE_C(0x02B739)},
- {RUNE_C(0x02B740), RUNE_C(0x02B81D)},
- {RUNE_C(0x02B820), RUNE_C(0x02CEA1)},
- {RUNE_C(0x02CEB0), RUNE_C(0x02EBE0)},
- {RUNE_C(0x02EBF0), RUNE_C(0x02EE5D)},
- {RUNE_C(0x02F800), RUNE_C(0x02FA1D)},
- {RUNE_C(0x030000), RUNE_C(0x03134A)},
- {RUNE_C(0x031350), RUNE_C(0x0323AF)},
+static constexpr unsigned char stage2[][16] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFE, 0xFF, 0xFF, 0x07, 0xFE, 0xFF, 0xFF, 0x07},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x04,
+ 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xC3, 0xFF, 0x03, 0x00, 0x1F, 0x50, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0xBC},
+ {0x40, 0xD7, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF},
+ {0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
+ 0xFF, 0xFF, 0x7F, 0x02, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x87, 0x07, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0x00, 0x00, 0x00, 0xC0, 0xFE, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x2F, 0x00, 0x60, 0xC0, 0x00, 0x9C},
+ {0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x02, 0x00,
+ 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x07, 0x30, 0x04},
+ {0xFF, 0xFF, 0x3F, 0x04, 0x10, 0x01, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0x07, 0xFF, 0xFF},
+ {0xFF, 0x7E, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x23,
+ 0x00, 0x00, 0x01, 0xFF, 0x03, 0x00, 0xFE, 0xFF},
+ {0xE1, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xC5, 0x23,
+ 0x00, 0x40, 0x00, 0xB0, 0x03, 0x00, 0x03, 0x10},
+ {0xE0, 0x87, 0xF9, 0xFF, 0xFF, 0xFD, 0x6D, 0x03,
+ 0x00, 0x00, 0x00, 0x5E, 0x00, 0x00, 0x1C, 0x00},
+ {0xE0, 0xBF, 0xFB, 0xFF, 0xFF, 0xFD, 0xED, 0x23,
+ 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x02},
+ {0xE0, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xED, 0x23,
+ 0x00, 0x00, 0x00, 0xB0, 0x03, 0x00, 0x02, 0x00},
+ {0xE8, 0xC7, 0x3D, 0xD6, 0x18, 0xC7, 0xFF, 0x03,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xE0, 0xDF, 0xFD, 0xFF, 0xFF, 0xFD, 0xFF, 0x23,
+ 0x00, 0x00, 0x00, 0x27, 0x03, 0x00, 0x00, 0x00},
+ {0xE1, 0xDF, 0xFD, 0xFF, 0xFF, 0xFD, 0xEF, 0x23,
+ 0x00, 0x00, 0x00, 0x60, 0x03, 0x00, 0x06, 0x00},
+ {0xF0, 0xDF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x27,
+ 0x00, 0x40, 0x70, 0x80, 0x03, 0x00, 0x00, 0xFC},
+ {0xE0, 0xFF, 0x7F, 0xFC, 0xFF, 0xFF, 0xFB, 0x2F,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0D, 0x00,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xD6, 0xF7, 0xFF, 0xFF, 0xAF, 0xFF, 0x0D, 0x20,
+ 0x5F, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00},
+ {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00},
+ {0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x80,
+ 0x00, 0x00, 0x3F, 0x3C, 0x62, 0xC0, 0xE1, 0xFF},
+ {0x03, 0x40, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xBF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x3D, 0x7F, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x7F,
+ 0x3D, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x3F},
+ {0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF},
+ {0xFE, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xFF, 0x01},
+ {0xFF, 0xFF, 0x03, 0x80, 0xFF, 0xFF, 0x03, 0x00,
+ 0xFF, 0xFF, 0x03, 0x00, 0xFF, 0xDF, 0x01, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00,
+ 0x00, 0x00, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF,
+ 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00,
+ 0xE0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xF8, 0xFF, 0xFF, 0xFF, 0x01, 0xC0, 0x00, 0xFC,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00,
+ 0x00, 0xE0, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x3F},
+ {0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0x6F, 0x04},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x3F, 0x3F, 0xFF, 0xAA, 0xFF, 0xFF, 0xFF, 0x3F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x5F,
+ 0xDC, 0x1F, 0xCF, 0x0F, 0xFF, 0x1F, 0xDC, 0x1F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80},
+ {0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x84, 0xFC, 0x2F, 0x3F, 0x50, 0xFD, 0xFF, 0xF3,
+ 0xE0, 0x43, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x78, 0x0C, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x20, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00},
+ {0xFF, 0xFF, 0x7F, 0x00, 0x7F, 0x7F, 0x7F, 0x7F,
+ 0x7F, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00},
+ {0xE0, 0x00, 0x00, 0x00, 0xFE, 0x03, 0x3E, 0x1F,
+ 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0x7F, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7},
+ {0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF},
+ {0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F},
+ {0xFF, 0x1F, 0xFF, 0xFF, 0x00, 0x0C, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x80},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00},
+ {0x00, 0x00, 0x80, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xEB, 0x03, 0x00, 0x00, 0xFC, 0xFF},
+ {0xBB, 0xF7, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00},
+ {0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x68},
+ {0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF,
+ 0x7F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x1F},
+ {0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0xDF, 0xFF, 0x00, 0x7C},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00,
+ 0xF7, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xC4},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x3E,
+ 0x05, 0x00, 0x00, 0x38, 0xFF, 0x07, 0x1C, 0x00},
+ {0x7E, 0x7E, 0x7E, 0x00, 0x7F, 0x7F, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0x03, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xFF,
+ 0x7F, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0x00, 0xF8, 0xA0, 0xFF, 0xFD, 0x7F, 0x5F,
+ 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00,
+ 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F},
+ {0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x07,
+ 0xFE, 0xFF, 0xFF, 0x07, 0xC0, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
+ 0xFC, 0xFC, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xEF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xB7,
+ 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xE0, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x0F, 0xFF, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xF7},
+ {0xFF, 0xF7, 0xB7, 0xFF, 0xFB, 0xFF, 0xFB, 0x1B,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00,
+ 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0x00, 0x00, 0x00},
+ {0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x3F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x91,
+ 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF, 0x7F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x37, 0x00},
+ {0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF, 0xFF, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x01, 0x00, 0xEF, 0xFE, 0xFF, 0xFF, 0x3F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x1F},
+ {0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFE, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00,
+ 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF, 0x07, 0x00},
+ {0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x1F, 0x80, 0x00, 0xFF, 0xFF,
+ 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF},
+ {0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0x1F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00},
+ {0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00},
+ {0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00},
+ {0xF8, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00,
+ 0x90, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x47, 0x00},
+ {0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
+ 0x1E, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x0F, 0x00, 0x80,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0xBD, 0xFF, 0xBF, 0xFF, 0x01, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00},
+ {0xE0, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xED, 0x23,
+ 0x00, 0x00, 0x01, 0xE0, 0x03, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00,
+ 0x80, 0x07, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80},
+ {0x7F, 0xF2, 0x6F, 0xFF, 0xFF, 0xFF, 0x00, 0x80,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x01, 0x00, 0x0A, 0x00, 0x00, 0x00},
+ {0x01, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x04,
+ 0x00, 0x00, 0x01, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x03, 0x00, 0x20, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01},
+ {0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF},
+ {0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00,
+ 0x40, 0x00, 0x00, 0x00, 0xBF, 0xFD, 0xFF, 0xFF},
+ {0xFF, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x00},
+ {0xF4, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0x0F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
+ 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x0F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xE0},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xF8, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x6F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x04, 0x00,
+ 0x00, 0x00, 0x27, 0x00, 0xF0, 0x00, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0x1F},
+ {0xFF, 0x01, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xDF, 0x64, 0xDE, 0xFF, 0xEB,
+ 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xBF, 0xE7, 0xDF, 0xDF, 0xFF, 0xFF, 0xFF, 0x7B,
+ 0x5F, 0xFC, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF,
+ 0xFD, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xF7},
+ {0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF,
+ 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF},
+ {0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF,
+ 0xF7, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x7F, 0xE0, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x80, 0x3F,
+ 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x7F, 0x6F, 0xFF, 0x7F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x0F, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xEF, 0xFF, 0xFF, 0xFF, 0x96, 0xFE, 0xF7, 0x0A,
+ 0x84, 0xEA, 0x96, 0xAA, 0x96, 0xF7, 0xF7, 0x5E},
+ {0xFF, 0xFB, 0xFF, 0x0F, 0xEE, 0xFB, 0xFF, 0x0F,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_ids(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 128]], ch % 128);
}
diff --git a/lib/unicode/prop/uprop_is_idsb.c b/lib/unicode/prop/uprop_is_idsb.c
index ebbfdfe..e34b849 100644
--- a/lib/unicode/prop/uprop_is_idsb.c
+++ b/lib/unicode/prop/uprop_is_idsb.c
@@ -1,24 +1,176 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x002FF0), RUNE_C(0x002FF1)},
- {RUNE_C(0x002FF4), RUNE_C(0x002FFD)},
- {RUNE_C(0x0031EF), RUNE_C(0x0031EF)},
+static constexpr uint8_t stage1[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
+static constexpr unsigned char stage2[][64] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0x3F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00},
+};
bool
uprop_is_idsb(rune ch)
{
- return mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 512]], ch % 512);
}
diff --git a/lib/unicode/prop/uprop_is_incb.c b/lib/unicode/prop/uprop_is_incb.c
index d9e01c8..01ae4d1 100644
--- a/lib/unicode/prop/uprop_is_incb.c
+++ b/lib/unicode/prop/uprop_is_incb.c
@@ -1,221 +1,734 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000300), RUNE_C(0x00034E)},
- {RUNE_C(0x000350), RUNE_C(0x00036F)},
- {RUNE_C(0x000483), RUNE_C(0x000487)},
- {RUNE_C(0x000591), RUNE_C(0x0005BD)},
- {RUNE_C(0x0005BF), RUNE_C(0x0005BF)},
- {RUNE_C(0x0005C1), RUNE_C(0x0005C2)},
- {RUNE_C(0x0005C4), RUNE_C(0x0005C5)},
- {RUNE_C(0x0005C7), RUNE_C(0x0005C7)},
- {RUNE_C(0x000610), RUNE_C(0x00061A)},
- {RUNE_C(0x00064B), RUNE_C(0x00065F)},
- {RUNE_C(0x000670), RUNE_C(0x000670)},
- {RUNE_C(0x0006D6), RUNE_C(0x0006DC)},
- {RUNE_C(0x0006DF), RUNE_C(0x0006E4)},
- {RUNE_C(0x0006E7), RUNE_C(0x0006E8)},
- {RUNE_C(0x0006EA), RUNE_C(0x0006ED)},
- {RUNE_C(0x000711), RUNE_C(0x000711)},
- {RUNE_C(0x000730), RUNE_C(0x00074A)},
- {RUNE_C(0x0007EB), RUNE_C(0x0007F3)},
- {RUNE_C(0x0007FD), RUNE_C(0x0007FD)},
- {RUNE_C(0x000816), RUNE_C(0x000819)},
- {RUNE_C(0x00081B), RUNE_C(0x000823)},
- {RUNE_C(0x000825), RUNE_C(0x000827)},
- {RUNE_C(0x000829), RUNE_C(0x00082D)},
- {RUNE_C(0x000859), RUNE_C(0x00085B)},
- {RUNE_C(0x000898), RUNE_C(0x00089F)},
- {RUNE_C(0x0008CA), RUNE_C(0x0008E1)},
- {RUNE_C(0x0008E3), RUNE_C(0x0008FF)},
- {RUNE_C(0x000915), RUNE_C(0x000939)},
- {RUNE_C(0x00093C), RUNE_C(0x00093C)},
- {RUNE_C(0x00094D), RUNE_C(0x00094D)},
- {RUNE_C(0x000951), RUNE_C(0x000954)},
- {RUNE_C(0x000958), RUNE_C(0x00095F)},
- {RUNE_C(0x000978), RUNE_C(0x00097F)},
- {RUNE_C(0x000995), RUNE_C(0x0009A8)},
- {RUNE_C(0x0009AA), RUNE_C(0x0009B0)},
- {RUNE_C(0x0009B2), RUNE_C(0x0009B2)},
- {RUNE_C(0x0009B6), RUNE_C(0x0009B9)},
- {RUNE_C(0x0009BC), RUNE_C(0x0009BC)},
- {RUNE_C(0x0009CD), RUNE_C(0x0009CD)},
- {RUNE_C(0x0009DC), RUNE_C(0x0009DD)},
- {RUNE_C(0x0009DF), RUNE_C(0x0009DF)},
- {RUNE_C(0x0009F0), RUNE_C(0x0009F1)},
- {RUNE_C(0x0009FE), RUNE_C(0x0009FE)},
- {RUNE_C(0x000A3C), RUNE_C(0x000A3C)},
- {RUNE_C(0x000A95), RUNE_C(0x000AA8)},
- {RUNE_C(0x000AAA), RUNE_C(0x000AB0)},
- {RUNE_C(0x000AB2), RUNE_C(0x000AB3)},
- {RUNE_C(0x000AB5), RUNE_C(0x000AB9)},
- {RUNE_C(0x000ABC), RUNE_C(0x000ABC)},
- {RUNE_C(0x000ACD), RUNE_C(0x000ACD)},
- {RUNE_C(0x000AF9), RUNE_C(0x000AF9)},
- {RUNE_C(0x000B15), RUNE_C(0x000B28)},
- {RUNE_C(0x000B2A), RUNE_C(0x000B30)},
- {RUNE_C(0x000B32), RUNE_C(0x000B33)},
- {RUNE_C(0x000B35), RUNE_C(0x000B39)},
- {RUNE_C(0x000B3C), RUNE_C(0x000B3C)},
- {RUNE_C(0x000B4D), RUNE_C(0x000B4D)},
- {RUNE_C(0x000B5C), RUNE_C(0x000B5D)},
- {RUNE_C(0x000B5F), RUNE_C(0x000B5F)},
- {RUNE_C(0x000B71), RUNE_C(0x000B71)},
- {RUNE_C(0x000C15), RUNE_C(0x000C28)},
- {RUNE_C(0x000C2A), RUNE_C(0x000C39)},
- {RUNE_C(0x000C3C), RUNE_C(0x000C3C)},
- {RUNE_C(0x000C4D), RUNE_C(0x000C4D)},
- {RUNE_C(0x000C55), RUNE_C(0x000C56)},
- {RUNE_C(0x000C58), RUNE_C(0x000C5A)},
- {RUNE_C(0x000CBC), RUNE_C(0x000CBC)},
- {RUNE_C(0x000D15), RUNE_C(0x000D3C)},
- {RUNE_C(0x000D4D), RUNE_C(0x000D4D)},
- {RUNE_C(0x000E38), RUNE_C(0x000E3A)},
- {RUNE_C(0x000E48), RUNE_C(0x000E4B)},
- {RUNE_C(0x000EB8), RUNE_C(0x000EBA)},
- {RUNE_C(0x000EC8), RUNE_C(0x000ECB)},
- {RUNE_C(0x000F18), RUNE_C(0x000F19)},
- {RUNE_C(0x000F35), RUNE_C(0x000F35)},
- {RUNE_C(0x000F37), RUNE_C(0x000F37)},
- {RUNE_C(0x000F39), RUNE_C(0x000F39)},
- {RUNE_C(0x000F71), RUNE_C(0x000F72)},
- {RUNE_C(0x000F74), RUNE_C(0x000F74)},
- {RUNE_C(0x000F7A), RUNE_C(0x000F7D)},
- {RUNE_C(0x000F80), RUNE_C(0x000F80)},
- {RUNE_C(0x000F82), RUNE_C(0x000F84)},
- {RUNE_C(0x000F86), RUNE_C(0x000F87)},
- {RUNE_C(0x000FC6), RUNE_C(0x000FC6)},
- {RUNE_C(0x001037), RUNE_C(0x001037)},
- {RUNE_C(0x001039), RUNE_C(0x00103A)},
- {RUNE_C(0x00108D), RUNE_C(0x00108D)},
- {RUNE_C(0x00135D), RUNE_C(0x00135F)},
- {RUNE_C(0x001714), RUNE_C(0x001714)},
- {RUNE_C(0x0017D2), RUNE_C(0x0017D2)},
- {RUNE_C(0x0017DD), RUNE_C(0x0017DD)},
- {RUNE_C(0x0018A9), RUNE_C(0x0018A9)},
- {RUNE_C(0x001939), RUNE_C(0x00193B)},
- {RUNE_C(0x001A17), RUNE_C(0x001A18)},
- {RUNE_C(0x001A60), RUNE_C(0x001A60)},
- {RUNE_C(0x001A75), RUNE_C(0x001A7C)},
- {RUNE_C(0x001A7F), RUNE_C(0x001A7F)},
- {RUNE_C(0x001AB0), RUNE_C(0x001ABD)},
- {RUNE_C(0x001ABF), RUNE_C(0x001ACE)},
- {RUNE_C(0x001B34), RUNE_C(0x001B34)},
- {RUNE_C(0x001B6B), RUNE_C(0x001B73)},
- {RUNE_C(0x001BAB), RUNE_C(0x001BAB)},
- {RUNE_C(0x001BE6), RUNE_C(0x001BE6)},
- {RUNE_C(0x001C37), RUNE_C(0x001C37)},
- {RUNE_C(0x001CD0), RUNE_C(0x001CD2)},
- {RUNE_C(0x001CD4), RUNE_C(0x001CE0)},
- {RUNE_C(0x001CE2), RUNE_C(0x001CE8)},
- {RUNE_C(0x001CED), RUNE_C(0x001CED)},
- {RUNE_C(0x001CF4), RUNE_C(0x001CF4)},
- {RUNE_C(0x001CF8), RUNE_C(0x001CF9)},
- {RUNE_C(0x001DC0), RUNE_C(0x001DFF)},
- {RUNE_C(0x00200D), RUNE_C(0x00200D)},
- {RUNE_C(0x0020D0), RUNE_C(0x0020DC)},
- {RUNE_C(0x0020E1), RUNE_C(0x0020E1)},
- {RUNE_C(0x0020E5), RUNE_C(0x0020F0)},
- {RUNE_C(0x002CEF), RUNE_C(0x002CF1)},
- {RUNE_C(0x002D7F), RUNE_C(0x002D7F)},
- {RUNE_C(0x002DE0), RUNE_C(0x002DFF)},
- {RUNE_C(0x00302A), RUNE_C(0x00302F)},
- {RUNE_C(0x003099), RUNE_C(0x00309A)},
- {RUNE_C(0x00A66F), RUNE_C(0x00A66F)},
- {RUNE_C(0x00A674), RUNE_C(0x00A67D)},
- {RUNE_C(0x00A69E), RUNE_C(0x00A69F)},
- {RUNE_C(0x00A6F0), RUNE_C(0x00A6F1)},
- {RUNE_C(0x00A82C), RUNE_C(0x00A82C)},
- {RUNE_C(0x00A8E0), RUNE_C(0x00A8F1)},
- {RUNE_C(0x00A92B), RUNE_C(0x00A92D)},
- {RUNE_C(0x00A9B3), RUNE_C(0x00A9B3)},
- {RUNE_C(0x00AAB0), RUNE_C(0x00AAB0)},
- {RUNE_C(0x00AAB2), RUNE_C(0x00AAB4)},
- {RUNE_C(0x00AAB7), RUNE_C(0x00AAB8)},
- {RUNE_C(0x00AABE), RUNE_C(0x00AABF)},
- {RUNE_C(0x00AAC1), RUNE_C(0x00AAC1)},
- {RUNE_C(0x00AAF6), RUNE_C(0x00AAF6)},
- {RUNE_C(0x00ABED), RUNE_C(0x00ABED)},
- {RUNE_C(0x00FB1E), RUNE_C(0x00FB1E)},
- {RUNE_C(0x00FE20), RUNE_C(0x00FE2F)},
- {RUNE_C(0x0101FD), RUNE_C(0x0101FD)},
- {RUNE_C(0x0102E0), RUNE_C(0x0102E0)},
- {RUNE_C(0x010376), RUNE_C(0x01037A)},
- {RUNE_C(0x010A0D), RUNE_C(0x010A0D)},
- {RUNE_C(0x010A0F), RUNE_C(0x010A0F)},
- {RUNE_C(0x010A38), RUNE_C(0x010A3A)},
- {RUNE_C(0x010A3F), RUNE_C(0x010A3F)},
- {RUNE_C(0x010AE5), RUNE_C(0x010AE6)},
- {RUNE_C(0x010D24), RUNE_C(0x010D27)},
- {RUNE_C(0x010EAB), RUNE_C(0x010EAC)},
- {RUNE_C(0x010EFD), RUNE_C(0x010EFF)},
- {RUNE_C(0x010F46), RUNE_C(0x010F50)},
- {RUNE_C(0x010F82), RUNE_C(0x010F85)},
- {RUNE_C(0x011070), RUNE_C(0x011070)},
- {RUNE_C(0x01107F), RUNE_C(0x01107F)},
- {RUNE_C(0x0110BA), RUNE_C(0x0110BA)},
- {RUNE_C(0x011100), RUNE_C(0x011102)},
- {RUNE_C(0x011133), RUNE_C(0x011134)},
- {RUNE_C(0x011173), RUNE_C(0x011173)},
- {RUNE_C(0x0111CA), RUNE_C(0x0111CA)},
- {RUNE_C(0x011236), RUNE_C(0x011236)},
- {RUNE_C(0x0112E9), RUNE_C(0x0112EA)},
- {RUNE_C(0x01133B), RUNE_C(0x01133C)},
- {RUNE_C(0x011366), RUNE_C(0x01136C)},
- {RUNE_C(0x011370), RUNE_C(0x011374)},
- {RUNE_C(0x011446), RUNE_C(0x011446)},
- {RUNE_C(0x01145E), RUNE_C(0x01145E)},
- {RUNE_C(0x0114C3), RUNE_C(0x0114C3)},
- {RUNE_C(0x0115C0), RUNE_C(0x0115C0)},
- {RUNE_C(0x0116B7), RUNE_C(0x0116B7)},
- {RUNE_C(0x01172B), RUNE_C(0x01172B)},
- {RUNE_C(0x01183A), RUNE_C(0x01183A)},
- {RUNE_C(0x01193E), RUNE_C(0x01193E)},
- {RUNE_C(0x011943), RUNE_C(0x011943)},
- {RUNE_C(0x011A34), RUNE_C(0x011A34)},
- {RUNE_C(0x011A47), RUNE_C(0x011A47)},
- {RUNE_C(0x011A99), RUNE_C(0x011A99)},
- {RUNE_C(0x011D42), RUNE_C(0x011D42)},
- {RUNE_C(0x011D44), RUNE_C(0x011D45)},
- {RUNE_C(0x011D97), RUNE_C(0x011D97)},
- {RUNE_C(0x011F42), RUNE_C(0x011F42)},
- {RUNE_C(0x016AF0), RUNE_C(0x016AF4)},
- {RUNE_C(0x016B30), RUNE_C(0x016B36)},
- {RUNE_C(0x01BC9E), RUNE_C(0x01BC9E)},
- {RUNE_C(0x01D165), RUNE_C(0x01D165)},
- {RUNE_C(0x01D167), RUNE_C(0x01D169)},
- {RUNE_C(0x01D16E), RUNE_C(0x01D172)},
- {RUNE_C(0x01D17B), RUNE_C(0x01D182)},
- {RUNE_C(0x01D185), RUNE_C(0x01D18B)},
- {RUNE_C(0x01D1AA), RUNE_C(0x01D1AD)},
- {RUNE_C(0x01D242), RUNE_C(0x01D244)},
- {RUNE_C(0x01E000), RUNE_C(0x01E006)},
- {RUNE_C(0x01E008), RUNE_C(0x01E018)},
- {RUNE_C(0x01E01B), RUNE_C(0x01E021)},
- {RUNE_C(0x01E023), RUNE_C(0x01E024)},
- {RUNE_C(0x01E026), RUNE_C(0x01E02A)},
- {RUNE_C(0x01E08F), RUNE_C(0x01E08F)},
- {RUNE_C(0x01E130), RUNE_C(0x01E136)},
- {RUNE_C(0x01E2AE), RUNE_C(0x01E2AE)},
- {RUNE_C(0x01E2EC), RUNE_C(0x01E2EF)},
- {RUNE_C(0x01E4EC), RUNE_C(0x01E4EF)},
- {RUNE_C(0x01E8D0), RUNE_C(0x01E8D6)},
- {RUNE_C(0x01E944), RUNE_C(0x01E94A)},
+static constexpr uint8_t stage1[] = {
+ 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 0, 15, 12, 16, 0, 17, 17, 18, 19,
+ 20, 21, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 23, 24,
+ 0, 25, 26, 0, 27, 28, 29, 30, 31, 32, 0, 33, 0, 0, 0, 0,
+ 21, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 36, 37, 0, 0, 0, 0,
+ 38, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 0, 0,
+ 42, 43, 44, 45, 0, 46, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 49, 0, 0, 0,
+ 0, 0, 0, 50, 0, 51, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 53, 54, 0, 0, 0, 0, 55, 0, 0, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 0, 66, 67, 0, 68, 0, 31, 69, 0,
+ 60, 0, 70, 0, 71, 72, 0, 0, 0, 0, 73, 74, 0, 0, 75, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 76, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 78, 79, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 81, 82, 77, 0, 0, 83, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0,
+ 0, 85, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
+static constexpr unsigned char stage2[][16] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00},
+ {0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF,
+ 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xF8, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xC0, 0x9F, 0x9F, 0x3D, 0x00, 0x00},
+ {0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x0F, 0x20},
+ {0x00, 0x00, 0xC0, 0xFB, 0xEF, 0x3E, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xFC, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF},
+ {0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x13,
+ 0x00, 0x20, 0x1E, 0xFF, 0x00, 0x00, 0x00, 0xFF},
+ {0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFD, 0xC5, 0x13,
+ 0x00, 0x20, 0x00, 0xB0, 0x00, 0x00, 0x03, 0x40},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFD, 0xED, 0x13,
+ 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
+ {0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFD, 0xED, 0x13,
+ 0x00, 0x20, 0x00, 0xB0, 0x00, 0x00, 0x02, 0x00},
+ {0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFD, 0xFF, 0x13,
+ 0x00, 0x20, 0x60, 0x07, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F,
+ 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
+ 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0xA0, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x3C},
+ {0xDD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xE0, 0x9F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xBF,
+ 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x0F, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xF7, 0xFF, 0xFD, 0x21, 0x10, 0x03},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0x1F, 0xE2, 0xFF, 0x01, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0x3F},
+ {0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9D, 0xC1,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x07},
+ {0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xC0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+ 0x00, 0x00, 0x00, 0x00, 0xC0, 0x1F, 0x1F, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xA0, 0xC3, 0x07, 0xF8},
+ {0xE7, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0xFF, 0xFF, 0xF9, 0xDB, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xF0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+};
bool
uprop_is_incb(rune ch)
{
- return mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 128]], ch % 128);
}
diff --git a/lib/unicode/prop/uprop_is_loe.c b/lib/unicode/prop/uprop_is_loe.c
index 625b0f6..b62250f 100644
--- a/lib/unicode/prop/uprop_is_loe.c
+++ b/lib/unicode/prop/uprop_is_loe.c
@@ -1,28 +1,184 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000E40), RUNE_C(0x000E44)},
- {RUNE_C(0x000EC0), RUNE_C(0x000EC4)},
- {RUNE_C(0x0019B5), RUNE_C(0x0019B7)},
- {RUNE_C(0x0019BA), RUNE_C(0x0019BA)},
- {RUNE_C(0x00AAB5), RUNE_C(0x00AAB6)},
- {RUNE_C(0x00AAB9), RUNE_C(0x00AAB9)},
- {RUNE_C(0x00AABB), RUNE_C(0x00AABC)},
+static constexpr uint8_t stage1[] = {
+ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
+static constexpr unsigned char stage2[][64] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x04,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x1A,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+};
bool
uprop_is_loe(rune ch)
{
- return mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 512]], ch % 512);
}
diff --git a/lib/unicode/prop/uprop_is_lower.c b/lib/unicode/prop/uprop_is_lower.c
index 474ae32..f7e67a8 100644
--- a/lib/unicode/prop/uprop_is_lower.c
+++ b/lib/unicode/prop/uprop_is_lower.c
@@ -1,693 +1,432 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x07,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x04,
- 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x7F, 0xFF,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 7, 6, 6, 8, 6, 6, 6, 6, 6, 6, 6, 6, 9, 10, 11, 12,
+ 13, 14, 6, 6, 15, 6, 6, 6, 6, 6, 6, 6, 16, 17, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 18, 19, 6, 6, 6, 20, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 21, 6, 6, 6, 22,
+ 6, 6, 6, 6, 23, 24, 6, 25, 6, 6, 6, 6, 26, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 27, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 28, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 29, 30, 31, 32, 6, 6, 6, 6, 6, 6, 6, 33,
+ 34, 6, 6, 6, 6, 6, 6, 6, 6, 35, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000101), RUNE_C(0x000101)},
- {RUNE_C(0x000103), RUNE_C(0x000103)},
- {RUNE_C(0x000105), RUNE_C(0x000105)},
- {RUNE_C(0x000107), RUNE_C(0x000107)},
- {RUNE_C(0x000109), RUNE_C(0x000109)},
- {RUNE_C(0x00010B), RUNE_C(0x00010B)},
- {RUNE_C(0x00010D), RUNE_C(0x00010D)},
- {RUNE_C(0x00010F), RUNE_C(0x00010F)},
- {RUNE_C(0x000111), RUNE_C(0x000111)},
- {RUNE_C(0x000113), RUNE_C(0x000113)},
- {RUNE_C(0x000115), RUNE_C(0x000115)},
- {RUNE_C(0x000117), RUNE_C(0x000117)},
- {RUNE_C(0x000119), RUNE_C(0x000119)},
- {RUNE_C(0x00011B), RUNE_C(0x00011B)},
- {RUNE_C(0x00011D), RUNE_C(0x00011D)},
- {RUNE_C(0x00011F), RUNE_C(0x00011F)},
- {RUNE_C(0x000121), RUNE_C(0x000121)},
- {RUNE_C(0x000123), RUNE_C(0x000123)},
- {RUNE_C(0x000125), RUNE_C(0x000125)},
- {RUNE_C(0x000127), RUNE_C(0x000127)},
- {RUNE_C(0x000129), RUNE_C(0x000129)},
- {RUNE_C(0x00012B), RUNE_C(0x00012B)},
- {RUNE_C(0x00012D), RUNE_C(0x00012D)},
- {RUNE_C(0x00012F), RUNE_C(0x00012F)},
- {RUNE_C(0x000131), RUNE_C(0x000131)},
- {RUNE_C(0x000133), RUNE_C(0x000133)},
- {RUNE_C(0x000135), RUNE_C(0x000135)},
- {RUNE_C(0x000137), RUNE_C(0x000138)},
- {RUNE_C(0x00013A), RUNE_C(0x00013A)},
- {RUNE_C(0x00013C), RUNE_C(0x00013C)},
- {RUNE_C(0x00013E), RUNE_C(0x00013E)},
- {RUNE_C(0x000140), RUNE_C(0x000140)},
- {RUNE_C(0x000142), RUNE_C(0x000142)},
- {RUNE_C(0x000144), RUNE_C(0x000144)},
- {RUNE_C(0x000146), RUNE_C(0x000146)},
- {RUNE_C(0x000148), RUNE_C(0x000149)},
- {RUNE_C(0x00014B), RUNE_C(0x00014B)},
- {RUNE_C(0x00014D), RUNE_C(0x00014D)},
- {RUNE_C(0x00014F), RUNE_C(0x00014F)},
- {RUNE_C(0x000151), RUNE_C(0x000151)},
- {RUNE_C(0x000153), RUNE_C(0x000153)},
- {RUNE_C(0x000155), RUNE_C(0x000155)},
- {RUNE_C(0x000157), RUNE_C(0x000157)},
- {RUNE_C(0x000159), RUNE_C(0x000159)},
- {RUNE_C(0x00015B), RUNE_C(0x00015B)},
- {RUNE_C(0x00015D), RUNE_C(0x00015D)},
- {RUNE_C(0x00015F), RUNE_C(0x00015F)},
- {RUNE_C(0x000161), RUNE_C(0x000161)},
- {RUNE_C(0x000163), RUNE_C(0x000163)},
- {RUNE_C(0x000165), RUNE_C(0x000165)},
- {RUNE_C(0x000167), RUNE_C(0x000167)},
- {RUNE_C(0x000169), RUNE_C(0x000169)},
- {RUNE_C(0x00016B), RUNE_C(0x00016B)},
- {RUNE_C(0x00016D), RUNE_C(0x00016D)},
- {RUNE_C(0x00016F), RUNE_C(0x00016F)},
- {RUNE_C(0x000171), RUNE_C(0x000171)},
- {RUNE_C(0x000173), RUNE_C(0x000173)},
- {RUNE_C(0x000175), RUNE_C(0x000175)},
- {RUNE_C(0x000177), RUNE_C(0x000177)},
- {RUNE_C(0x00017A), RUNE_C(0x00017A)},
- {RUNE_C(0x00017C), RUNE_C(0x00017C)},
- {RUNE_C(0x00017E), RUNE_C(0x000180)},
- {RUNE_C(0x000183), RUNE_C(0x000183)},
- {RUNE_C(0x000185), RUNE_C(0x000185)},
- {RUNE_C(0x000188), RUNE_C(0x000188)},
- {RUNE_C(0x00018C), RUNE_C(0x00018D)},
- {RUNE_C(0x000192), RUNE_C(0x000192)},
- {RUNE_C(0x000195), RUNE_C(0x000195)},
- {RUNE_C(0x000199), RUNE_C(0x00019B)},
- {RUNE_C(0x00019E), RUNE_C(0x00019E)},
- {RUNE_C(0x0001A1), RUNE_C(0x0001A1)},
- {RUNE_C(0x0001A3), RUNE_C(0x0001A3)},
- {RUNE_C(0x0001A5), RUNE_C(0x0001A5)},
- {RUNE_C(0x0001A8), RUNE_C(0x0001A8)},
- {RUNE_C(0x0001AA), RUNE_C(0x0001AB)},
- {RUNE_C(0x0001AD), RUNE_C(0x0001AD)},
- {RUNE_C(0x0001B0), RUNE_C(0x0001B0)},
- {RUNE_C(0x0001B4), RUNE_C(0x0001B4)},
- {RUNE_C(0x0001B6), RUNE_C(0x0001B6)},
- {RUNE_C(0x0001B9), RUNE_C(0x0001BA)},
- {RUNE_C(0x0001BD), RUNE_C(0x0001BF)},
- {RUNE_C(0x0001C6), RUNE_C(0x0001C6)},
- {RUNE_C(0x0001C9), RUNE_C(0x0001C9)},
- {RUNE_C(0x0001CC), RUNE_C(0x0001CC)},
- {RUNE_C(0x0001CE), RUNE_C(0x0001CE)},
- {RUNE_C(0x0001D0), RUNE_C(0x0001D0)},
- {RUNE_C(0x0001D2), RUNE_C(0x0001D2)},
- {RUNE_C(0x0001D4), RUNE_C(0x0001D4)},
- {RUNE_C(0x0001D6), RUNE_C(0x0001D6)},
- {RUNE_C(0x0001D8), RUNE_C(0x0001D8)},
- {RUNE_C(0x0001DA), RUNE_C(0x0001DA)},
- {RUNE_C(0x0001DC), RUNE_C(0x0001DD)},
- {RUNE_C(0x0001DF), RUNE_C(0x0001DF)},
- {RUNE_C(0x0001E1), RUNE_C(0x0001E1)},
- {RUNE_C(0x0001E3), RUNE_C(0x0001E3)},
- {RUNE_C(0x0001E5), RUNE_C(0x0001E5)},
- {RUNE_C(0x0001E7), RUNE_C(0x0001E7)},
- {RUNE_C(0x0001E9), RUNE_C(0x0001E9)},
- {RUNE_C(0x0001EB), RUNE_C(0x0001EB)},
- {RUNE_C(0x0001ED), RUNE_C(0x0001ED)},
- {RUNE_C(0x0001EF), RUNE_C(0x0001F0)},
- {RUNE_C(0x0001F3), RUNE_C(0x0001F3)},
- {RUNE_C(0x0001F5), RUNE_C(0x0001F5)},
- {RUNE_C(0x0001F9), RUNE_C(0x0001F9)},
- {RUNE_C(0x0001FB), RUNE_C(0x0001FB)},
- {RUNE_C(0x0001FD), RUNE_C(0x0001FD)},
- {RUNE_C(0x0001FF), RUNE_C(0x0001FF)},
- {RUNE_C(0x000201), RUNE_C(0x000201)},
- {RUNE_C(0x000203), RUNE_C(0x000203)},
- {RUNE_C(0x000205), RUNE_C(0x000205)},
- {RUNE_C(0x000207), RUNE_C(0x000207)},
- {RUNE_C(0x000209), RUNE_C(0x000209)},
- {RUNE_C(0x00020B), RUNE_C(0x00020B)},
- {RUNE_C(0x00020D), RUNE_C(0x00020D)},
- {RUNE_C(0x00020F), RUNE_C(0x00020F)},
- {RUNE_C(0x000211), RUNE_C(0x000211)},
- {RUNE_C(0x000213), RUNE_C(0x000213)},
- {RUNE_C(0x000215), RUNE_C(0x000215)},
- {RUNE_C(0x000217), RUNE_C(0x000217)},
- {RUNE_C(0x000219), RUNE_C(0x000219)},
- {RUNE_C(0x00021B), RUNE_C(0x00021B)},
- {RUNE_C(0x00021D), RUNE_C(0x00021D)},
- {RUNE_C(0x00021F), RUNE_C(0x00021F)},
- {RUNE_C(0x000221), RUNE_C(0x000221)},
- {RUNE_C(0x000223), RUNE_C(0x000223)},
- {RUNE_C(0x000225), RUNE_C(0x000225)},
- {RUNE_C(0x000227), RUNE_C(0x000227)},
- {RUNE_C(0x000229), RUNE_C(0x000229)},
- {RUNE_C(0x00022B), RUNE_C(0x00022B)},
- {RUNE_C(0x00022D), RUNE_C(0x00022D)},
- {RUNE_C(0x00022F), RUNE_C(0x00022F)},
- {RUNE_C(0x000231), RUNE_C(0x000231)},
- {RUNE_C(0x000233), RUNE_C(0x000239)},
- {RUNE_C(0x00023C), RUNE_C(0x00023C)},
- {RUNE_C(0x00023F), RUNE_C(0x000240)},
- {RUNE_C(0x000242), RUNE_C(0x000242)},
- {RUNE_C(0x000247), RUNE_C(0x000247)},
- {RUNE_C(0x000249), RUNE_C(0x000249)},
- {RUNE_C(0x00024B), RUNE_C(0x00024B)},
- {RUNE_C(0x00024D), RUNE_C(0x00024D)},
- {RUNE_C(0x00024F), RUNE_C(0x000293)},
- {RUNE_C(0x000295), RUNE_C(0x0002B8)},
- {RUNE_C(0x0002C0), RUNE_C(0x0002C1)},
- {RUNE_C(0x0002E0), RUNE_C(0x0002E4)},
- {RUNE_C(0x000345), RUNE_C(0x000345)},
- {RUNE_C(0x000371), RUNE_C(0x000371)},
- {RUNE_C(0x000373), RUNE_C(0x000373)},
- {RUNE_C(0x000377), RUNE_C(0x000377)},
- {RUNE_C(0x00037A), RUNE_C(0x00037D)},
- {RUNE_C(0x000390), RUNE_C(0x000390)},
- {RUNE_C(0x0003AC), RUNE_C(0x0003CE)},
- {RUNE_C(0x0003D0), RUNE_C(0x0003D1)},
- {RUNE_C(0x0003D5), RUNE_C(0x0003D7)},
- {RUNE_C(0x0003D9), RUNE_C(0x0003D9)},
- {RUNE_C(0x0003DB), RUNE_C(0x0003DB)},
- {RUNE_C(0x0003DD), RUNE_C(0x0003DD)},
- {RUNE_C(0x0003DF), RUNE_C(0x0003DF)},
- {RUNE_C(0x0003E1), RUNE_C(0x0003E1)},
- {RUNE_C(0x0003E3), RUNE_C(0x0003E3)},
- {RUNE_C(0x0003E5), RUNE_C(0x0003E5)},
- {RUNE_C(0x0003E7), RUNE_C(0x0003E7)},
- {RUNE_C(0x0003E9), RUNE_C(0x0003E9)},
- {RUNE_C(0x0003EB), RUNE_C(0x0003EB)},
- {RUNE_C(0x0003ED), RUNE_C(0x0003ED)},
- {RUNE_C(0x0003EF), RUNE_C(0x0003F3)},
- {RUNE_C(0x0003F5), RUNE_C(0x0003F5)},
- {RUNE_C(0x0003F8), RUNE_C(0x0003F8)},
- {RUNE_C(0x0003FB), RUNE_C(0x0003FC)},
- {RUNE_C(0x000430), RUNE_C(0x00045F)},
- {RUNE_C(0x000461), RUNE_C(0x000461)},
- {RUNE_C(0x000463), RUNE_C(0x000463)},
- {RUNE_C(0x000465), RUNE_C(0x000465)},
- {RUNE_C(0x000467), RUNE_C(0x000467)},
- {RUNE_C(0x000469), RUNE_C(0x000469)},
- {RUNE_C(0x00046B), RUNE_C(0x00046B)},
- {RUNE_C(0x00046D), RUNE_C(0x00046D)},
- {RUNE_C(0x00046F), RUNE_C(0x00046F)},
- {RUNE_C(0x000471), RUNE_C(0x000471)},
- {RUNE_C(0x000473), RUNE_C(0x000473)},
- {RUNE_C(0x000475), RUNE_C(0x000475)},
- {RUNE_C(0x000477), RUNE_C(0x000477)},
- {RUNE_C(0x000479), RUNE_C(0x000479)},
- {RUNE_C(0x00047B), RUNE_C(0x00047B)},
- {RUNE_C(0x00047D), RUNE_C(0x00047D)},
- {RUNE_C(0x00047F), RUNE_C(0x00047F)},
- {RUNE_C(0x000481), RUNE_C(0x000481)},
- {RUNE_C(0x00048B), RUNE_C(0x00048B)},
- {RUNE_C(0x00048D), RUNE_C(0x00048D)},
- {RUNE_C(0x00048F), RUNE_C(0x00048F)},
- {RUNE_C(0x000491), RUNE_C(0x000491)},
- {RUNE_C(0x000493), RUNE_C(0x000493)},
- {RUNE_C(0x000495), RUNE_C(0x000495)},
- {RUNE_C(0x000497), RUNE_C(0x000497)},
- {RUNE_C(0x000499), RUNE_C(0x000499)},
- {RUNE_C(0x00049B), RUNE_C(0x00049B)},
- {RUNE_C(0x00049D), RUNE_C(0x00049D)},
- {RUNE_C(0x00049F), RUNE_C(0x00049F)},
- {RUNE_C(0x0004A1), RUNE_C(0x0004A1)},
- {RUNE_C(0x0004A3), RUNE_C(0x0004A3)},
- {RUNE_C(0x0004A5), RUNE_C(0x0004A5)},
- {RUNE_C(0x0004A7), RUNE_C(0x0004A7)},
- {RUNE_C(0x0004A9), RUNE_C(0x0004A9)},
- {RUNE_C(0x0004AB), RUNE_C(0x0004AB)},
- {RUNE_C(0x0004AD), RUNE_C(0x0004AD)},
- {RUNE_C(0x0004AF), RUNE_C(0x0004AF)},
- {RUNE_C(0x0004B1), RUNE_C(0x0004B1)},
- {RUNE_C(0x0004B3), RUNE_C(0x0004B3)},
- {RUNE_C(0x0004B5), RUNE_C(0x0004B5)},
- {RUNE_C(0x0004B7), RUNE_C(0x0004B7)},
- {RUNE_C(0x0004B9), RUNE_C(0x0004B9)},
- {RUNE_C(0x0004BB), RUNE_C(0x0004BB)},
- {RUNE_C(0x0004BD), RUNE_C(0x0004BD)},
- {RUNE_C(0x0004BF), RUNE_C(0x0004BF)},
- {RUNE_C(0x0004C2), RUNE_C(0x0004C2)},
- {RUNE_C(0x0004C4), RUNE_C(0x0004C4)},
- {RUNE_C(0x0004C6), RUNE_C(0x0004C6)},
- {RUNE_C(0x0004C8), RUNE_C(0x0004C8)},
- {RUNE_C(0x0004CA), RUNE_C(0x0004CA)},
- {RUNE_C(0x0004CC), RUNE_C(0x0004CC)},
- {RUNE_C(0x0004CE), RUNE_C(0x0004CF)},
- {RUNE_C(0x0004D1), RUNE_C(0x0004D1)},
- {RUNE_C(0x0004D3), RUNE_C(0x0004D3)},
- {RUNE_C(0x0004D5), RUNE_C(0x0004D5)},
- {RUNE_C(0x0004D7), RUNE_C(0x0004D7)},
- {RUNE_C(0x0004D9), RUNE_C(0x0004D9)},
- {RUNE_C(0x0004DB), RUNE_C(0x0004DB)},
- {RUNE_C(0x0004DD), RUNE_C(0x0004DD)},
- {RUNE_C(0x0004DF), RUNE_C(0x0004DF)},
- {RUNE_C(0x0004E1), RUNE_C(0x0004E1)},
- {RUNE_C(0x0004E3), RUNE_C(0x0004E3)},
- {RUNE_C(0x0004E5), RUNE_C(0x0004E5)},
- {RUNE_C(0x0004E7), RUNE_C(0x0004E7)},
- {RUNE_C(0x0004E9), RUNE_C(0x0004E9)},
- {RUNE_C(0x0004EB), RUNE_C(0x0004EB)},
- {RUNE_C(0x0004ED), RUNE_C(0x0004ED)},
- {RUNE_C(0x0004EF), RUNE_C(0x0004EF)},
- {RUNE_C(0x0004F1), RUNE_C(0x0004F1)},
- {RUNE_C(0x0004F3), RUNE_C(0x0004F3)},
- {RUNE_C(0x0004F5), RUNE_C(0x0004F5)},
- {RUNE_C(0x0004F7), RUNE_C(0x0004F7)},
- {RUNE_C(0x0004F9), RUNE_C(0x0004F9)},
- {RUNE_C(0x0004FB), RUNE_C(0x0004FB)},
- {RUNE_C(0x0004FD), RUNE_C(0x0004FD)},
- {RUNE_C(0x0004FF), RUNE_C(0x0004FF)},
- {RUNE_C(0x000501), RUNE_C(0x000501)},
- {RUNE_C(0x000503), RUNE_C(0x000503)},
- {RUNE_C(0x000505), RUNE_C(0x000505)},
- {RUNE_C(0x000507), RUNE_C(0x000507)},
- {RUNE_C(0x000509), RUNE_C(0x000509)},
- {RUNE_C(0x00050B), RUNE_C(0x00050B)},
- {RUNE_C(0x00050D), RUNE_C(0x00050D)},
- {RUNE_C(0x00050F), RUNE_C(0x00050F)},
- {RUNE_C(0x000511), RUNE_C(0x000511)},
- {RUNE_C(0x000513), RUNE_C(0x000513)},
- {RUNE_C(0x000515), RUNE_C(0x000515)},
- {RUNE_C(0x000517), RUNE_C(0x000517)},
- {RUNE_C(0x000519), RUNE_C(0x000519)},
- {RUNE_C(0x00051B), RUNE_C(0x00051B)},
- {RUNE_C(0x00051D), RUNE_C(0x00051D)},
- {RUNE_C(0x00051F), RUNE_C(0x00051F)},
- {RUNE_C(0x000521), RUNE_C(0x000521)},
- {RUNE_C(0x000523), RUNE_C(0x000523)},
- {RUNE_C(0x000525), RUNE_C(0x000525)},
- {RUNE_C(0x000527), RUNE_C(0x000527)},
- {RUNE_C(0x000529), RUNE_C(0x000529)},
- {RUNE_C(0x00052B), RUNE_C(0x00052B)},
- {RUNE_C(0x00052D), RUNE_C(0x00052D)},
- {RUNE_C(0x00052F), RUNE_C(0x00052F)},
- {RUNE_C(0x000560), RUNE_C(0x000588)},
- {RUNE_C(0x0010D0), RUNE_C(0x0010FA)},
- {RUNE_C(0x0010FC), RUNE_C(0x0010FF)},
- {RUNE_C(0x0013F8), RUNE_C(0x0013FD)},
- {RUNE_C(0x001C80), RUNE_C(0x001C88)},
- {RUNE_C(0x001D00), RUNE_C(0x001DBF)},
- {RUNE_C(0x001E01), RUNE_C(0x001E01)},
- {RUNE_C(0x001E03), RUNE_C(0x001E03)},
- {RUNE_C(0x001E05), RUNE_C(0x001E05)},
- {RUNE_C(0x001E07), RUNE_C(0x001E07)},
- {RUNE_C(0x001E09), RUNE_C(0x001E09)},
- {RUNE_C(0x001E0B), RUNE_C(0x001E0B)},
- {RUNE_C(0x001E0D), RUNE_C(0x001E0D)},
- {RUNE_C(0x001E0F), RUNE_C(0x001E0F)},
- {RUNE_C(0x001E11), RUNE_C(0x001E11)},
- {RUNE_C(0x001E13), RUNE_C(0x001E13)},
- {RUNE_C(0x001E15), RUNE_C(0x001E15)},
- {RUNE_C(0x001E17), RUNE_C(0x001E17)},
- {RUNE_C(0x001E19), RUNE_C(0x001E19)},
- {RUNE_C(0x001E1B), RUNE_C(0x001E1B)},
- {RUNE_C(0x001E1D), RUNE_C(0x001E1D)},
- {RUNE_C(0x001E1F), RUNE_C(0x001E1F)},
- {RUNE_C(0x001E21), RUNE_C(0x001E21)},
- {RUNE_C(0x001E23), RUNE_C(0x001E23)},
- {RUNE_C(0x001E25), RUNE_C(0x001E25)},
- {RUNE_C(0x001E27), RUNE_C(0x001E27)},
- {RUNE_C(0x001E29), RUNE_C(0x001E29)},
- {RUNE_C(0x001E2B), RUNE_C(0x001E2B)},
- {RUNE_C(0x001E2D), RUNE_C(0x001E2D)},
- {RUNE_C(0x001E2F), RUNE_C(0x001E2F)},
- {RUNE_C(0x001E31), RUNE_C(0x001E31)},
- {RUNE_C(0x001E33), RUNE_C(0x001E33)},
- {RUNE_C(0x001E35), RUNE_C(0x001E35)},
- {RUNE_C(0x001E37), RUNE_C(0x001E37)},
- {RUNE_C(0x001E39), RUNE_C(0x001E39)},
- {RUNE_C(0x001E3B), RUNE_C(0x001E3B)},
- {RUNE_C(0x001E3D), RUNE_C(0x001E3D)},
- {RUNE_C(0x001E3F), RUNE_C(0x001E3F)},
- {RUNE_C(0x001E41), RUNE_C(0x001E41)},
- {RUNE_C(0x001E43), RUNE_C(0x001E43)},
- {RUNE_C(0x001E45), RUNE_C(0x001E45)},
- {RUNE_C(0x001E47), RUNE_C(0x001E47)},
- {RUNE_C(0x001E49), RUNE_C(0x001E49)},
- {RUNE_C(0x001E4B), RUNE_C(0x001E4B)},
- {RUNE_C(0x001E4D), RUNE_C(0x001E4D)},
- {RUNE_C(0x001E4F), RUNE_C(0x001E4F)},
- {RUNE_C(0x001E51), RUNE_C(0x001E51)},
- {RUNE_C(0x001E53), RUNE_C(0x001E53)},
- {RUNE_C(0x001E55), RUNE_C(0x001E55)},
- {RUNE_C(0x001E57), RUNE_C(0x001E57)},
- {RUNE_C(0x001E59), RUNE_C(0x001E59)},
- {RUNE_C(0x001E5B), RUNE_C(0x001E5B)},
- {RUNE_C(0x001E5D), RUNE_C(0x001E5D)},
- {RUNE_C(0x001E5F), RUNE_C(0x001E5F)},
- {RUNE_C(0x001E61), RUNE_C(0x001E61)},
- {RUNE_C(0x001E63), RUNE_C(0x001E63)},
- {RUNE_C(0x001E65), RUNE_C(0x001E65)},
- {RUNE_C(0x001E67), RUNE_C(0x001E67)},
- {RUNE_C(0x001E69), RUNE_C(0x001E69)},
- {RUNE_C(0x001E6B), RUNE_C(0x001E6B)},
- {RUNE_C(0x001E6D), RUNE_C(0x001E6D)},
- {RUNE_C(0x001E6F), RUNE_C(0x001E6F)},
- {RUNE_C(0x001E71), RUNE_C(0x001E71)},
- {RUNE_C(0x001E73), RUNE_C(0x001E73)},
- {RUNE_C(0x001E75), RUNE_C(0x001E75)},
- {RUNE_C(0x001E77), RUNE_C(0x001E77)},
- {RUNE_C(0x001E79), RUNE_C(0x001E79)},
- {RUNE_C(0x001E7B), RUNE_C(0x001E7B)},
- {RUNE_C(0x001E7D), RUNE_C(0x001E7D)},
- {RUNE_C(0x001E7F), RUNE_C(0x001E7F)},
- {RUNE_C(0x001E81), RUNE_C(0x001E81)},
- {RUNE_C(0x001E83), RUNE_C(0x001E83)},
- {RUNE_C(0x001E85), RUNE_C(0x001E85)},
- {RUNE_C(0x001E87), RUNE_C(0x001E87)},
- {RUNE_C(0x001E89), RUNE_C(0x001E89)},
- {RUNE_C(0x001E8B), RUNE_C(0x001E8B)},
- {RUNE_C(0x001E8D), RUNE_C(0x001E8D)},
- {RUNE_C(0x001E8F), RUNE_C(0x001E8F)},
- {RUNE_C(0x001E91), RUNE_C(0x001E91)},
- {RUNE_C(0x001E93), RUNE_C(0x001E93)},
- {RUNE_C(0x001E95), RUNE_C(0x001E9D)},
- {RUNE_C(0x001E9F), RUNE_C(0x001E9F)},
- {RUNE_C(0x001EA1), RUNE_C(0x001EA1)},
- {RUNE_C(0x001EA3), RUNE_C(0x001EA3)},
- {RUNE_C(0x001EA5), RUNE_C(0x001EA5)},
- {RUNE_C(0x001EA7), RUNE_C(0x001EA7)},
- {RUNE_C(0x001EA9), RUNE_C(0x001EA9)},
- {RUNE_C(0x001EAB), RUNE_C(0x001EAB)},
- {RUNE_C(0x001EAD), RUNE_C(0x001EAD)},
- {RUNE_C(0x001EAF), RUNE_C(0x001EAF)},
- {RUNE_C(0x001EB1), RUNE_C(0x001EB1)},
- {RUNE_C(0x001EB3), RUNE_C(0x001EB3)},
- {RUNE_C(0x001EB5), RUNE_C(0x001EB5)},
- {RUNE_C(0x001EB7), RUNE_C(0x001EB7)},
- {RUNE_C(0x001EB9), RUNE_C(0x001EB9)},
- {RUNE_C(0x001EBB), RUNE_C(0x001EBB)},
- {RUNE_C(0x001EBD), RUNE_C(0x001EBD)},
- {RUNE_C(0x001EBF), RUNE_C(0x001EBF)},
- {RUNE_C(0x001EC1), RUNE_C(0x001EC1)},
- {RUNE_C(0x001EC3), RUNE_C(0x001EC3)},
- {RUNE_C(0x001EC5), RUNE_C(0x001EC5)},
- {RUNE_C(0x001EC7), RUNE_C(0x001EC7)},
- {RUNE_C(0x001EC9), RUNE_C(0x001EC9)},
- {RUNE_C(0x001ECB), RUNE_C(0x001ECB)},
- {RUNE_C(0x001ECD), RUNE_C(0x001ECD)},
- {RUNE_C(0x001ECF), RUNE_C(0x001ECF)},
- {RUNE_C(0x001ED1), RUNE_C(0x001ED1)},
- {RUNE_C(0x001ED3), RUNE_C(0x001ED3)},
- {RUNE_C(0x001ED5), RUNE_C(0x001ED5)},
- {RUNE_C(0x001ED7), RUNE_C(0x001ED7)},
- {RUNE_C(0x001ED9), RUNE_C(0x001ED9)},
- {RUNE_C(0x001EDB), RUNE_C(0x001EDB)},
- {RUNE_C(0x001EDD), RUNE_C(0x001EDD)},
- {RUNE_C(0x001EDF), RUNE_C(0x001EDF)},
- {RUNE_C(0x001EE1), RUNE_C(0x001EE1)},
- {RUNE_C(0x001EE3), RUNE_C(0x001EE3)},
- {RUNE_C(0x001EE5), RUNE_C(0x001EE5)},
- {RUNE_C(0x001EE7), RUNE_C(0x001EE7)},
- {RUNE_C(0x001EE9), RUNE_C(0x001EE9)},
- {RUNE_C(0x001EEB), RUNE_C(0x001EEB)},
- {RUNE_C(0x001EED), RUNE_C(0x001EED)},
- {RUNE_C(0x001EEF), RUNE_C(0x001EEF)},
- {RUNE_C(0x001EF1), RUNE_C(0x001EF1)},
- {RUNE_C(0x001EF3), RUNE_C(0x001EF3)},
- {RUNE_C(0x001EF5), RUNE_C(0x001EF5)},
- {RUNE_C(0x001EF7), RUNE_C(0x001EF7)},
- {RUNE_C(0x001EF9), RUNE_C(0x001EF9)},
- {RUNE_C(0x001EFB), RUNE_C(0x001EFB)},
- {RUNE_C(0x001EFD), RUNE_C(0x001EFD)},
- {RUNE_C(0x001EFF), RUNE_C(0x001F07)},
- {RUNE_C(0x001F10), RUNE_C(0x001F15)},
- {RUNE_C(0x001F20), RUNE_C(0x001F27)},
- {RUNE_C(0x001F30), RUNE_C(0x001F37)},
- {RUNE_C(0x001F40), RUNE_C(0x001F45)},
- {RUNE_C(0x001F50), RUNE_C(0x001F57)},
- {RUNE_C(0x001F60), RUNE_C(0x001F67)},
- {RUNE_C(0x001F70), RUNE_C(0x001F7D)},
- {RUNE_C(0x001F80), RUNE_C(0x001F87)},
- {RUNE_C(0x001F90), RUNE_C(0x001F97)},
- {RUNE_C(0x001FA0), RUNE_C(0x001FA7)},
- {RUNE_C(0x001FB0), RUNE_C(0x001FB4)},
- {RUNE_C(0x001FB6), RUNE_C(0x001FB7)},
- {RUNE_C(0x001FBE), RUNE_C(0x001FBE)},
- {RUNE_C(0x001FC2), RUNE_C(0x001FC4)},
- {RUNE_C(0x001FC6), RUNE_C(0x001FC7)},
- {RUNE_C(0x001FD0), RUNE_C(0x001FD3)},
- {RUNE_C(0x001FD6), RUNE_C(0x001FD7)},
- {RUNE_C(0x001FE0), RUNE_C(0x001FE7)},
- {RUNE_C(0x001FF2), RUNE_C(0x001FF4)},
- {RUNE_C(0x001FF6), RUNE_C(0x001FF7)},
- {RUNE_C(0x002071), RUNE_C(0x002071)},
- {RUNE_C(0x00207F), RUNE_C(0x00207F)},
- {RUNE_C(0x002090), RUNE_C(0x00209C)},
- {RUNE_C(0x00210A), RUNE_C(0x00210A)},
- {RUNE_C(0x00210E), RUNE_C(0x00210F)},
- {RUNE_C(0x002113), RUNE_C(0x002113)},
- {RUNE_C(0x00212F), RUNE_C(0x00212F)},
- {RUNE_C(0x002134), RUNE_C(0x002134)},
- {RUNE_C(0x002139), RUNE_C(0x002139)},
- {RUNE_C(0x00213C), RUNE_C(0x00213D)},
- {RUNE_C(0x002146), RUNE_C(0x002149)},
- {RUNE_C(0x00214E), RUNE_C(0x00214E)},
- {RUNE_C(0x002170), RUNE_C(0x00217F)},
- {RUNE_C(0x002184), RUNE_C(0x002184)},
- {RUNE_C(0x0024D0), RUNE_C(0x0024E9)},
- {RUNE_C(0x002C30), RUNE_C(0x002C5F)},
- {RUNE_C(0x002C61), RUNE_C(0x002C61)},
- {RUNE_C(0x002C65), RUNE_C(0x002C66)},
- {RUNE_C(0x002C68), RUNE_C(0x002C68)},
- {RUNE_C(0x002C6A), RUNE_C(0x002C6A)},
- {RUNE_C(0x002C6C), RUNE_C(0x002C6C)},
- {RUNE_C(0x002C71), RUNE_C(0x002C71)},
- {RUNE_C(0x002C73), RUNE_C(0x002C74)},
- {RUNE_C(0x002C76), RUNE_C(0x002C7D)},
- {RUNE_C(0x002C81), RUNE_C(0x002C81)},
- {RUNE_C(0x002C83), RUNE_C(0x002C83)},
- {RUNE_C(0x002C85), RUNE_C(0x002C85)},
- {RUNE_C(0x002C87), RUNE_C(0x002C87)},
- {RUNE_C(0x002C89), RUNE_C(0x002C89)},
- {RUNE_C(0x002C8B), RUNE_C(0x002C8B)},
- {RUNE_C(0x002C8D), RUNE_C(0x002C8D)},
- {RUNE_C(0x002C8F), RUNE_C(0x002C8F)},
- {RUNE_C(0x002C91), RUNE_C(0x002C91)},
- {RUNE_C(0x002C93), RUNE_C(0x002C93)},
- {RUNE_C(0x002C95), RUNE_C(0x002C95)},
- {RUNE_C(0x002C97), RUNE_C(0x002C97)},
- {RUNE_C(0x002C99), RUNE_C(0x002C99)},
- {RUNE_C(0x002C9B), RUNE_C(0x002C9B)},
- {RUNE_C(0x002C9D), RUNE_C(0x002C9D)},
- {RUNE_C(0x002C9F), RUNE_C(0x002C9F)},
- {RUNE_C(0x002CA1), RUNE_C(0x002CA1)},
- {RUNE_C(0x002CA3), RUNE_C(0x002CA3)},
- {RUNE_C(0x002CA5), RUNE_C(0x002CA5)},
- {RUNE_C(0x002CA7), RUNE_C(0x002CA7)},
- {RUNE_C(0x002CA9), RUNE_C(0x002CA9)},
- {RUNE_C(0x002CAB), RUNE_C(0x002CAB)},
- {RUNE_C(0x002CAD), RUNE_C(0x002CAD)},
- {RUNE_C(0x002CAF), RUNE_C(0x002CAF)},
- {RUNE_C(0x002CB1), RUNE_C(0x002CB1)},
- {RUNE_C(0x002CB3), RUNE_C(0x002CB3)},
- {RUNE_C(0x002CB5), RUNE_C(0x002CB5)},
- {RUNE_C(0x002CB7), RUNE_C(0x002CB7)},
- {RUNE_C(0x002CB9), RUNE_C(0x002CB9)},
- {RUNE_C(0x002CBB), RUNE_C(0x002CBB)},
- {RUNE_C(0x002CBD), RUNE_C(0x002CBD)},
- {RUNE_C(0x002CBF), RUNE_C(0x002CBF)},
- {RUNE_C(0x002CC1), RUNE_C(0x002CC1)},
- {RUNE_C(0x002CC3), RUNE_C(0x002CC3)},
- {RUNE_C(0x002CC5), RUNE_C(0x002CC5)},
- {RUNE_C(0x002CC7), RUNE_C(0x002CC7)},
- {RUNE_C(0x002CC9), RUNE_C(0x002CC9)},
- {RUNE_C(0x002CCB), RUNE_C(0x002CCB)},
- {RUNE_C(0x002CCD), RUNE_C(0x002CCD)},
- {RUNE_C(0x002CCF), RUNE_C(0x002CCF)},
- {RUNE_C(0x002CD1), RUNE_C(0x002CD1)},
- {RUNE_C(0x002CD3), RUNE_C(0x002CD3)},
- {RUNE_C(0x002CD5), RUNE_C(0x002CD5)},
- {RUNE_C(0x002CD7), RUNE_C(0x002CD7)},
- {RUNE_C(0x002CD9), RUNE_C(0x002CD9)},
- {RUNE_C(0x002CDB), RUNE_C(0x002CDB)},
- {RUNE_C(0x002CDD), RUNE_C(0x002CDD)},
- {RUNE_C(0x002CDF), RUNE_C(0x002CDF)},
- {RUNE_C(0x002CE1), RUNE_C(0x002CE1)},
- {RUNE_C(0x002CE3), RUNE_C(0x002CE4)},
- {RUNE_C(0x002CEC), RUNE_C(0x002CEC)},
- {RUNE_C(0x002CEE), RUNE_C(0x002CEE)},
- {RUNE_C(0x002CF3), RUNE_C(0x002CF3)},
- {RUNE_C(0x002D00), RUNE_C(0x002D25)},
- {RUNE_C(0x002D27), RUNE_C(0x002D27)},
- {RUNE_C(0x002D2D), RUNE_C(0x002D2D)},
- {RUNE_C(0x00A641), RUNE_C(0x00A641)},
- {RUNE_C(0x00A643), RUNE_C(0x00A643)},
- {RUNE_C(0x00A645), RUNE_C(0x00A645)},
- {RUNE_C(0x00A647), RUNE_C(0x00A647)},
- {RUNE_C(0x00A649), RUNE_C(0x00A649)},
- {RUNE_C(0x00A64B), RUNE_C(0x00A64B)},
- {RUNE_C(0x00A64D), RUNE_C(0x00A64D)},
- {RUNE_C(0x00A64F), RUNE_C(0x00A64F)},
- {RUNE_C(0x00A651), RUNE_C(0x00A651)},
- {RUNE_C(0x00A653), RUNE_C(0x00A653)},
- {RUNE_C(0x00A655), RUNE_C(0x00A655)},
- {RUNE_C(0x00A657), RUNE_C(0x00A657)},
- {RUNE_C(0x00A659), RUNE_C(0x00A659)},
- {RUNE_C(0x00A65B), RUNE_C(0x00A65B)},
- {RUNE_C(0x00A65D), RUNE_C(0x00A65D)},
- {RUNE_C(0x00A65F), RUNE_C(0x00A65F)},
- {RUNE_C(0x00A661), RUNE_C(0x00A661)},
- {RUNE_C(0x00A663), RUNE_C(0x00A663)},
- {RUNE_C(0x00A665), RUNE_C(0x00A665)},
- {RUNE_C(0x00A667), RUNE_C(0x00A667)},
- {RUNE_C(0x00A669), RUNE_C(0x00A669)},
- {RUNE_C(0x00A66B), RUNE_C(0x00A66B)},
- {RUNE_C(0x00A66D), RUNE_C(0x00A66D)},
- {RUNE_C(0x00A681), RUNE_C(0x00A681)},
- {RUNE_C(0x00A683), RUNE_C(0x00A683)},
- {RUNE_C(0x00A685), RUNE_C(0x00A685)},
- {RUNE_C(0x00A687), RUNE_C(0x00A687)},
- {RUNE_C(0x00A689), RUNE_C(0x00A689)},
- {RUNE_C(0x00A68B), RUNE_C(0x00A68B)},
- {RUNE_C(0x00A68D), RUNE_C(0x00A68D)},
- {RUNE_C(0x00A68F), RUNE_C(0x00A68F)},
- {RUNE_C(0x00A691), RUNE_C(0x00A691)},
- {RUNE_C(0x00A693), RUNE_C(0x00A693)},
- {RUNE_C(0x00A695), RUNE_C(0x00A695)},
- {RUNE_C(0x00A697), RUNE_C(0x00A697)},
- {RUNE_C(0x00A699), RUNE_C(0x00A699)},
- {RUNE_C(0x00A69B), RUNE_C(0x00A69D)},
- {RUNE_C(0x00A723), RUNE_C(0x00A723)},
- {RUNE_C(0x00A725), RUNE_C(0x00A725)},
- {RUNE_C(0x00A727), RUNE_C(0x00A727)},
- {RUNE_C(0x00A729), RUNE_C(0x00A729)},
- {RUNE_C(0x00A72B), RUNE_C(0x00A72B)},
- {RUNE_C(0x00A72D), RUNE_C(0x00A72D)},
- {RUNE_C(0x00A72F), RUNE_C(0x00A731)},
- {RUNE_C(0x00A733), RUNE_C(0x00A733)},
- {RUNE_C(0x00A735), RUNE_C(0x00A735)},
- {RUNE_C(0x00A737), RUNE_C(0x00A737)},
- {RUNE_C(0x00A739), RUNE_C(0x00A739)},
- {RUNE_C(0x00A73B), RUNE_C(0x00A73B)},
- {RUNE_C(0x00A73D), RUNE_C(0x00A73D)},
- {RUNE_C(0x00A73F), RUNE_C(0x00A73F)},
- {RUNE_C(0x00A741), RUNE_C(0x00A741)},
- {RUNE_C(0x00A743), RUNE_C(0x00A743)},
- {RUNE_C(0x00A745), RUNE_C(0x00A745)},
- {RUNE_C(0x00A747), RUNE_C(0x00A747)},
- {RUNE_C(0x00A749), RUNE_C(0x00A749)},
- {RUNE_C(0x00A74B), RUNE_C(0x00A74B)},
- {RUNE_C(0x00A74D), RUNE_C(0x00A74D)},
- {RUNE_C(0x00A74F), RUNE_C(0x00A74F)},
- {RUNE_C(0x00A751), RUNE_C(0x00A751)},
- {RUNE_C(0x00A753), RUNE_C(0x00A753)},
- {RUNE_C(0x00A755), RUNE_C(0x00A755)},
- {RUNE_C(0x00A757), RUNE_C(0x00A757)},
- {RUNE_C(0x00A759), RUNE_C(0x00A759)},
- {RUNE_C(0x00A75B), RUNE_C(0x00A75B)},
- {RUNE_C(0x00A75D), RUNE_C(0x00A75D)},
- {RUNE_C(0x00A75F), RUNE_C(0x00A75F)},
- {RUNE_C(0x00A761), RUNE_C(0x00A761)},
- {RUNE_C(0x00A763), RUNE_C(0x00A763)},
- {RUNE_C(0x00A765), RUNE_C(0x00A765)},
- {RUNE_C(0x00A767), RUNE_C(0x00A767)},
- {RUNE_C(0x00A769), RUNE_C(0x00A769)},
- {RUNE_C(0x00A76B), RUNE_C(0x00A76B)},
- {RUNE_C(0x00A76D), RUNE_C(0x00A76D)},
- {RUNE_C(0x00A76F), RUNE_C(0x00A778)},
- {RUNE_C(0x00A77A), RUNE_C(0x00A77A)},
- {RUNE_C(0x00A77C), RUNE_C(0x00A77C)},
- {RUNE_C(0x00A77F), RUNE_C(0x00A77F)},
- {RUNE_C(0x00A781), RUNE_C(0x00A781)},
- {RUNE_C(0x00A783), RUNE_C(0x00A783)},
- {RUNE_C(0x00A785), RUNE_C(0x00A785)},
- {RUNE_C(0x00A787), RUNE_C(0x00A787)},
- {RUNE_C(0x00A78C), RUNE_C(0x00A78C)},
- {RUNE_C(0x00A78E), RUNE_C(0x00A78E)},
- {RUNE_C(0x00A791), RUNE_C(0x00A791)},
- {RUNE_C(0x00A793), RUNE_C(0x00A795)},
- {RUNE_C(0x00A797), RUNE_C(0x00A797)},
- {RUNE_C(0x00A799), RUNE_C(0x00A799)},
- {RUNE_C(0x00A79B), RUNE_C(0x00A79B)},
- {RUNE_C(0x00A79D), RUNE_C(0x00A79D)},
- {RUNE_C(0x00A79F), RUNE_C(0x00A79F)},
- {RUNE_C(0x00A7A1), RUNE_C(0x00A7A1)},
- {RUNE_C(0x00A7A3), RUNE_C(0x00A7A3)},
- {RUNE_C(0x00A7A5), RUNE_C(0x00A7A5)},
- {RUNE_C(0x00A7A7), RUNE_C(0x00A7A7)},
- {RUNE_C(0x00A7A9), RUNE_C(0x00A7A9)},
- {RUNE_C(0x00A7AF), RUNE_C(0x00A7AF)},
- {RUNE_C(0x00A7B5), RUNE_C(0x00A7B5)},
- {RUNE_C(0x00A7B7), RUNE_C(0x00A7B7)},
- {RUNE_C(0x00A7B9), RUNE_C(0x00A7B9)},
- {RUNE_C(0x00A7BB), RUNE_C(0x00A7BB)},
- {RUNE_C(0x00A7BD), RUNE_C(0x00A7BD)},
- {RUNE_C(0x00A7BF), RUNE_C(0x00A7BF)},
- {RUNE_C(0x00A7C1), RUNE_C(0x00A7C1)},
- {RUNE_C(0x00A7C3), RUNE_C(0x00A7C3)},
- {RUNE_C(0x00A7C8), RUNE_C(0x00A7C8)},
- {RUNE_C(0x00A7CA), RUNE_C(0x00A7CA)},
- {RUNE_C(0x00A7D1), RUNE_C(0x00A7D1)},
- {RUNE_C(0x00A7D3), RUNE_C(0x00A7D3)},
- {RUNE_C(0x00A7D5), RUNE_C(0x00A7D5)},
- {RUNE_C(0x00A7D7), RUNE_C(0x00A7D7)},
- {RUNE_C(0x00A7D9), RUNE_C(0x00A7D9)},
- {RUNE_C(0x00A7F2), RUNE_C(0x00A7F4)},
- {RUNE_C(0x00A7F6), RUNE_C(0x00A7F6)},
- {RUNE_C(0x00A7F8), RUNE_C(0x00A7FA)},
- {RUNE_C(0x00AB30), RUNE_C(0x00AB5A)},
- {RUNE_C(0x00AB5C), RUNE_C(0x00AB69)},
- {RUNE_C(0x00AB70), RUNE_C(0x00ABBF)},
- {RUNE_C(0x00FB00), RUNE_C(0x00FB06)},
- {RUNE_C(0x00FB13), RUNE_C(0x00FB17)},
- {RUNE_C(0x00FF41), RUNE_C(0x00FF5A)},
- {RUNE_C(0x010428), RUNE_C(0x01044F)},
- {RUNE_C(0x0104D8), RUNE_C(0x0104FB)},
- {RUNE_C(0x010597), RUNE_C(0x0105A1)},
- {RUNE_C(0x0105A3), RUNE_C(0x0105B1)},
- {RUNE_C(0x0105B3), RUNE_C(0x0105B9)},
- {RUNE_C(0x0105BB), RUNE_C(0x0105BC)},
- {RUNE_C(0x010780), RUNE_C(0x010780)},
- {RUNE_C(0x010783), RUNE_C(0x010785)},
- {RUNE_C(0x010787), RUNE_C(0x0107B0)},
- {RUNE_C(0x0107B2), RUNE_C(0x0107BA)},
- {RUNE_C(0x010CC0), RUNE_C(0x010CF2)},
- {RUNE_C(0x0118C0), RUNE_C(0x0118DF)},
- {RUNE_C(0x016E60), RUNE_C(0x016E7F)},
- {RUNE_C(0x01D41A), RUNE_C(0x01D433)},
- {RUNE_C(0x01D44E), RUNE_C(0x01D454)},
- {RUNE_C(0x01D456), RUNE_C(0x01D467)},
- {RUNE_C(0x01D482), RUNE_C(0x01D49B)},
- {RUNE_C(0x01D4B6), RUNE_C(0x01D4B9)},
- {RUNE_C(0x01D4BB), RUNE_C(0x01D4BB)},
- {RUNE_C(0x01D4BD), RUNE_C(0x01D4C3)},
- {RUNE_C(0x01D4C5), RUNE_C(0x01D4CF)},
- {RUNE_C(0x01D4EA), RUNE_C(0x01D503)},
- {RUNE_C(0x01D51E), RUNE_C(0x01D537)},
- {RUNE_C(0x01D552), RUNE_C(0x01D56B)},
- {RUNE_C(0x01D586), RUNE_C(0x01D59F)},
- {RUNE_C(0x01D5BA), RUNE_C(0x01D5D3)},
- {RUNE_C(0x01D5EE), RUNE_C(0x01D607)},
- {RUNE_C(0x01D622), RUNE_C(0x01D63B)},
- {RUNE_C(0x01D656), RUNE_C(0x01D66F)},
- {RUNE_C(0x01D68A), RUNE_C(0x01D6A5)},
- {RUNE_C(0x01D6C2), RUNE_C(0x01D6DA)},
- {RUNE_C(0x01D6DC), RUNE_C(0x01D6E1)},
- {RUNE_C(0x01D6FC), RUNE_C(0x01D714)},
- {RUNE_C(0x01D716), RUNE_C(0x01D71B)},
- {RUNE_C(0x01D736), RUNE_C(0x01D74E)},
- {RUNE_C(0x01D750), RUNE_C(0x01D755)},
- {RUNE_C(0x01D770), RUNE_C(0x01D788)},
- {RUNE_C(0x01D78A), RUNE_C(0x01D78F)},
- {RUNE_C(0x01D7AA), RUNE_C(0x01D7C2)},
- {RUNE_C(0x01D7C4), RUNE_C(0x01D7C9)},
- {RUNE_C(0x01D7CB), RUNE_C(0x01D7CB)},
- {RUNE_C(0x01DF00), RUNE_C(0x01DF09)},
- {RUNE_C(0x01DF0B), RUNE_C(0x01DF1E)},
- {RUNE_C(0x01DF25), RUNE_C(0x01DF2A)},
- {RUNE_C(0x01E030), RUNE_C(0x01E06D)},
- {RUNE_C(0x01E922), RUNE_C(0x01E943)},
+static constexpr unsigned char stage2[][32] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFE, 0xFF, 0xFF, 0x07, 0xFE, 0xFF, 0xFF, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x04,
+ 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7,
+ 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
+ 0x03, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCF, 0xBC,
+ 0x40, 0xD7, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
+ 0xFF, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xBF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x3F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x3F, 0x3F, 0xFF, 0xAA, 0xFF, 0xFF, 0xFF, 0x3F,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x5F,
+ 0xDC, 0x1F, 0xCF, 0x0F, 0xFF, 0x1F, 0xDC, 0x1F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80,
+ 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0xC4, 0x08, 0x00, 0x40, 0x8C, 0x14, 0x32,
+ 0xC0, 0x43, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x78, 0x0C, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x20, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xEB, 0x03, 0x00, 0x00, 0x7C, 0x07},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0x03, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x07,
+ 0xFE, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF7,
+ 0xFF, 0xF7, 0xB7, 0xFF, 0xFB, 0xFF, 0xFB, 0x1B,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x0F, 0x00,
+ 0x00, 0xC0, 0xDF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
+ 0xFC, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xC0, 0xEB,
+ 0xEF, 0xFF, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF},
+ {0x0F, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x00,
+ 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x0F, 0x00, 0x00,
+ 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFC,
+ 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0xC0, 0xFF, 0xFF},
+ {0xFF, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x0F,
+ 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00,
+ 0xFC, 0xFF, 0xFF, 0xF7, 0x03, 0x00, 0x00, 0xF0},
+ {0xFF, 0xFF, 0xDF, 0x0F, 0x00, 0x00, 0xC0, 0xFF,
+ 0xFF, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFD, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF,
+ 0xF7, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFB, 0xFF, 0x7F, 0xE0, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_lower(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 256]], ch % 256);
}
diff --git a/lib/unicode/prop/uprop_is_math.c b/lib/unicode/prop/uprop_is_math.c
index ca2318b..d732b99 100644
--- a/lib/unicode/prop/uprop_is_math.c
+++ b/lib/unicode/prop/uprop_is_math.c
@@ -1,157 +1,368 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x70,
- 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x50,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00,
- 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 1, 2, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 4, 5, 6, 7, 1, 8, 9, 10, 1, 6, 6, 11, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12, 1, 1, 13, 14,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 15, 16, 17, 18, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x0003D0), RUNE_C(0x0003D2)},
- {RUNE_C(0x0003D5), RUNE_C(0x0003D5)},
- {RUNE_C(0x0003F0), RUNE_C(0x0003F1)},
- {RUNE_C(0x0003F4), RUNE_C(0x0003F6)},
- {RUNE_C(0x000606), RUNE_C(0x000608)},
- {RUNE_C(0x002016), RUNE_C(0x002016)},
- {RUNE_C(0x002032), RUNE_C(0x002034)},
- {RUNE_C(0x002040), RUNE_C(0x002040)},
- {RUNE_C(0x002044), RUNE_C(0x002044)},
- {RUNE_C(0x002052), RUNE_C(0x002052)},
- {RUNE_C(0x002061), RUNE_C(0x002064)},
- {RUNE_C(0x00207A), RUNE_C(0x00207E)},
- {RUNE_C(0x00208A), RUNE_C(0x00208E)},
- {RUNE_C(0x0020D0), RUNE_C(0x0020DC)},
- {RUNE_C(0x0020E1), RUNE_C(0x0020E1)},
- {RUNE_C(0x0020E5), RUNE_C(0x0020E6)},
- {RUNE_C(0x0020EB), RUNE_C(0x0020EF)},
- {RUNE_C(0x002102), RUNE_C(0x002102)},
- {RUNE_C(0x002107), RUNE_C(0x002107)},
- {RUNE_C(0x00210A), RUNE_C(0x002113)},
- {RUNE_C(0x002115), RUNE_C(0x002115)},
- {RUNE_C(0x002118), RUNE_C(0x00211D)},
- {RUNE_C(0x002124), RUNE_C(0x002124)},
- {RUNE_C(0x002128), RUNE_C(0x002129)},
- {RUNE_C(0x00212C), RUNE_C(0x00212D)},
- {RUNE_C(0x00212F), RUNE_C(0x002131)},
- {RUNE_C(0x002133), RUNE_C(0x002138)},
- {RUNE_C(0x00213C), RUNE_C(0x002149)},
- {RUNE_C(0x00214B), RUNE_C(0x00214B)},
- {RUNE_C(0x002190), RUNE_C(0x0021A7)},
- {RUNE_C(0x0021A9), RUNE_C(0x0021AE)},
- {RUNE_C(0x0021B0), RUNE_C(0x0021B1)},
- {RUNE_C(0x0021B6), RUNE_C(0x0021B7)},
- {RUNE_C(0x0021BC), RUNE_C(0x0021DB)},
- {RUNE_C(0x0021DD), RUNE_C(0x0021DD)},
- {RUNE_C(0x0021E4), RUNE_C(0x0021E5)},
- {RUNE_C(0x0021F4), RUNE_C(0x0022FF)},
- {RUNE_C(0x002308), RUNE_C(0x00230B)},
- {RUNE_C(0x002320), RUNE_C(0x002321)},
- {RUNE_C(0x00237C), RUNE_C(0x00237C)},
- {RUNE_C(0x00239B), RUNE_C(0x0023B5)},
- {RUNE_C(0x0023B7), RUNE_C(0x0023B7)},
- {RUNE_C(0x0023D0), RUNE_C(0x0023D0)},
- {RUNE_C(0x0023DC), RUNE_C(0x0023E2)},
- {RUNE_C(0x0025A0), RUNE_C(0x0025A1)},
- {RUNE_C(0x0025AE), RUNE_C(0x0025B7)},
- {RUNE_C(0x0025BC), RUNE_C(0x0025C1)},
- {RUNE_C(0x0025C6), RUNE_C(0x0025C7)},
- {RUNE_C(0x0025CA), RUNE_C(0x0025CB)},
- {RUNE_C(0x0025CF), RUNE_C(0x0025D3)},
- {RUNE_C(0x0025E2), RUNE_C(0x0025E2)},
- {RUNE_C(0x0025E4), RUNE_C(0x0025E4)},
- {RUNE_C(0x0025E7), RUNE_C(0x0025EC)},
- {RUNE_C(0x0025F8), RUNE_C(0x0025FF)},
- {RUNE_C(0x002605), RUNE_C(0x002606)},
- {RUNE_C(0x002640), RUNE_C(0x002640)},
- {RUNE_C(0x002642), RUNE_C(0x002642)},
- {RUNE_C(0x002660), RUNE_C(0x002663)},
- {RUNE_C(0x00266D), RUNE_C(0x00266F)},
- {RUNE_C(0x0027C0), RUNE_C(0x0027FF)},
- {RUNE_C(0x002900), RUNE_C(0x002AFF)},
- {RUNE_C(0x002B30), RUNE_C(0x002B44)},
- {RUNE_C(0x002B47), RUNE_C(0x002B4C)},
- {RUNE_C(0x00FB29), RUNE_C(0x00FB29)},
- {RUNE_C(0x00FE61), RUNE_C(0x00FE66)},
- {RUNE_C(0x00FE68), RUNE_C(0x00FE68)},
- {RUNE_C(0x00FF0B), RUNE_C(0x00FF0B)},
- {RUNE_C(0x00FF1C), RUNE_C(0x00FF1E)},
- {RUNE_C(0x00FF3C), RUNE_C(0x00FF3C)},
- {RUNE_C(0x00FF3E), RUNE_C(0x00FF3E)},
- {RUNE_C(0x00FF5C), RUNE_C(0x00FF5C)},
- {RUNE_C(0x00FF5E), RUNE_C(0x00FF5E)},
- {RUNE_C(0x00FFE2), RUNE_C(0x00FFE2)},
- {RUNE_C(0x00FFE9), RUNE_C(0x00FFEC)},
- {RUNE_C(0x01D400), RUNE_C(0x01D454)},
- {RUNE_C(0x01D456), RUNE_C(0x01D49C)},
- {RUNE_C(0x01D49E), RUNE_C(0x01D49F)},
- {RUNE_C(0x01D4A2), RUNE_C(0x01D4A2)},
- {RUNE_C(0x01D4A5), RUNE_C(0x01D4A6)},
- {RUNE_C(0x01D4A9), RUNE_C(0x01D4AC)},
- {RUNE_C(0x01D4AE), RUNE_C(0x01D4B9)},
- {RUNE_C(0x01D4BB), RUNE_C(0x01D4BB)},
- {RUNE_C(0x01D4BD), RUNE_C(0x01D4C3)},
- {RUNE_C(0x01D4C5), RUNE_C(0x01D505)},
- {RUNE_C(0x01D507), RUNE_C(0x01D50A)},
- {RUNE_C(0x01D50D), RUNE_C(0x01D514)},
- {RUNE_C(0x01D516), RUNE_C(0x01D51C)},
- {RUNE_C(0x01D51E), RUNE_C(0x01D539)},
- {RUNE_C(0x01D53B), RUNE_C(0x01D53E)},
- {RUNE_C(0x01D540), RUNE_C(0x01D544)},
- {RUNE_C(0x01D546), RUNE_C(0x01D546)},
- {RUNE_C(0x01D54A), RUNE_C(0x01D550)},
- {RUNE_C(0x01D552), RUNE_C(0x01D6A5)},
- {RUNE_C(0x01D6A8), RUNE_C(0x01D7CB)},
- {RUNE_C(0x01D7CE), RUNE_C(0x01D7FF)},
- {RUNE_C(0x01EE00), RUNE_C(0x01EE03)},
- {RUNE_C(0x01EE05), RUNE_C(0x01EE1F)},
- {RUNE_C(0x01EE21), RUNE_C(0x01EE22)},
- {RUNE_C(0x01EE24), RUNE_C(0x01EE24)},
- {RUNE_C(0x01EE27), RUNE_C(0x01EE27)},
- {RUNE_C(0x01EE29), RUNE_C(0x01EE32)},
- {RUNE_C(0x01EE34), RUNE_C(0x01EE37)},
- {RUNE_C(0x01EE39), RUNE_C(0x01EE39)},
- {RUNE_C(0x01EE3B), RUNE_C(0x01EE3B)},
- {RUNE_C(0x01EE42), RUNE_C(0x01EE42)},
- {RUNE_C(0x01EE47), RUNE_C(0x01EE47)},
- {RUNE_C(0x01EE49), RUNE_C(0x01EE49)},
- {RUNE_C(0x01EE4B), RUNE_C(0x01EE4B)},
- {RUNE_C(0x01EE4D), RUNE_C(0x01EE4F)},
- {RUNE_C(0x01EE51), RUNE_C(0x01EE52)},
- {RUNE_C(0x01EE54), RUNE_C(0x01EE54)},
- {RUNE_C(0x01EE57), RUNE_C(0x01EE57)},
- {RUNE_C(0x01EE59), RUNE_C(0x01EE59)},
- {RUNE_C(0x01EE5B), RUNE_C(0x01EE5B)},
- {RUNE_C(0x01EE5D), RUNE_C(0x01EE5D)},
- {RUNE_C(0x01EE5F), RUNE_C(0x01EE5F)},
- {RUNE_C(0x01EE61), RUNE_C(0x01EE62)},
- {RUNE_C(0x01EE64), RUNE_C(0x01EE64)},
- {RUNE_C(0x01EE67), RUNE_C(0x01EE6A)},
- {RUNE_C(0x01EE6C), RUNE_C(0x01EE72)},
- {RUNE_C(0x01EE74), RUNE_C(0x01EE77)},
- {RUNE_C(0x01EE79), RUNE_C(0x01EE7C)},
- {RUNE_C(0x01EE7E), RUNE_C(0x01EE7E)},
- {RUNE_C(0x01EE80), RUNE_C(0x01EE89)},
- {RUNE_C(0x01EE8B), RUNE_C(0x01EE9B)},
- {RUNE_C(0x01EEA1), RUNE_C(0x01EEA3)},
- {RUNE_C(0x01EEA5), RUNE_C(0x01EEA9)},
- {RUNE_C(0x01EEAB), RUNE_C(0x01EEBB)},
- {RUNE_C(0x01EEF0), RUNE_C(0x01EEF1)},
+static constexpr unsigned char stage2[][32] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x70,
+ 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x50,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00,
+ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x73, 0x00},
+ {0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x1C, 0x00,
+ 0x11, 0x00, 0x04, 0x00, 0x1E, 0x00, 0x00, 0x7C,
+ 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0x1F, 0x62, 0xF8, 0x00, 0x00},
+ {0x84, 0xFC, 0x2F, 0x3F, 0x10, 0xB3, 0xFB, 0xF1,
+ 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7E, 0xC3, 0xF0,
+ 0xFF, 0xFF, 0xFF, 0x2F, 0x30, 0x00, 0xF0, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x00, 0x0F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+ 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xBF, 0x00,
+ 0x00, 0x00, 0x01, 0xF0, 0x07, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0xFF, 0xF0,
+ 0xC3, 0x8C, 0x0F, 0x00, 0x94, 0x1F, 0x00, 0xFF},
+ {0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0x9F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x7E, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x08, 0x00, 0x70, 0x00, 0x00, 0x00, 0x50,
+ 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x04, 0x1E, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xDF, 0x64, 0xDE, 0xFF, 0xEB,
+ 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xBF, 0xE7, 0xDF, 0xDF, 0xFF, 0xFF, 0xFF, 0x7B,
+ 0x5F, 0xFC, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xEF, 0xFF, 0xFF, 0xFF, 0x96, 0xFE, 0xF7, 0x0A,
+ 0x84, 0xEA, 0x96, 0xAA, 0x96, 0xF7, 0xF7, 0x5E,
+ 0xFF, 0xFB, 0xFF, 0x0F, 0xEE, 0xFB, 0xFF, 0x0F,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_math(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 256]], ch % 256);
}
diff --git a/lib/unicode/prop/uprop_is_pat_syn.c b/lib/unicode/prop/uprop_is_pat_syn.c
index c2beece..3b50711 100644
--- a/lib/unicode/prop/uprop_is_pat_syn.c
+++ b/lib/unicode/prop/uprop_is_pat_syn.c
@@ -1,41 +1,332 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x00, 0xFC,
- 0x01, 0x00, 0x00, 0x78, 0x01, 0x00, 0x00, 0x78,
- 0x00, 0x00, 0x00, 0x00, 0xFE, 0x5A, 0x43, 0x88,
- 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 3, 4, 4, 5, 4, 4, 6, 4, 4, 4, 4, 1, 1, 7, 1,
+ 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 10, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x002010), RUNE_C(0x002027)},
- {RUNE_C(0x002030), RUNE_C(0x00203E)},
- {RUNE_C(0x002041), RUNE_C(0x002053)},
- {RUNE_C(0x002055), RUNE_C(0x00205E)},
- {RUNE_C(0x002190), RUNE_C(0x00245F)},
- {RUNE_C(0x002500), RUNE_C(0x002775)},
- {RUNE_C(0x002794), RUNE_C(0x002BFF)},
- {RUNE_C(0x002E00), RUNE_C(0x002E7F)},
- {RUNE_C(0x003001), RUNE_C(0x003003)},
- {RUNE_C(0x003008), RUNE_C(0x003020)},
- {RUNE_C(0x003030), RUNE_C(0x003030)},
- {RUNE_C(0x00FD3E), RUNE_C(0x00FD3F)},
- {RUNE_C(0x00FE45), RUNE_C(0x00FE46)},
+static constexpr unsigned char stage2[][32] = {
+ {0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x00, 0xFC,
+ 0x01, 0x00, 0x00, 0x78, 0x01, 0x00, 0x00, 0x78,
+ 0x00, 0x00, 0x00, 0x00, 0xFE, 0x5A, 0x43, 0x88,
+ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x7F,
+ 0xFE, 0xFF, 0xEF, 0x7F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00,
+ 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x0E, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_pat_syn(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 256]], ch % 256);
}
diff --git a/lib/unicode/prop/uprop_is_pat_ws.c b/lib/unicode/prop/uprop_is_pat_ws.c
index 8f701b5..554865d 100644
--- a/lib/unicode/prop/uprop_is_pat_ws.c
+++ b/lib/unicode/prop/uprop_is_pat_ws.c
@@ -1,30 +1,176 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x3E, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x00200E), RUNE_C(0x00200F)},
- {RUNE_C(0x002028), RUNE_C(0x002029)},
+static constexpr unsigned char stage2[][64] = {
+ {0x00, 0x3E, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0xC0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_pat_ws(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 512]], ch % 512);
}
diff --git a/lib/unicode/prop/uprop_is_pcm.c b/lib/unicode/prop/uprop_is_pcm.c
index b1c243f..480e79e 100644
--- a/lib/unicode/prop/uprop_is_pcm.c
+++ b/lib/unicode/prop/uprop_is_pcm.c
@@ -1,28 +1,184 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000600), RUNE_C(0x000605)},
- {RUNE_C(0x0006DD), RUNE_C(0x0006DD)},
- {RUNE_C(0x00070F), RUNE_C(0x00070F)},
- {RUNE_C(0x000890), RUNE_C(0x000891)},
- {RUNE_C(0x0008E2), RUNE_C(0x0008E2)},
- {RUNE_C(0x0110BD), RUNE_C(0x0110BD)},
- {RUNE_C(0x0110CD), RUNE_C(0x0110CD)},
+static constexpr uint8_t stage1[] = {
+ 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
+static constexpr unsigned char stage2[][64] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
+ 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+};
bool
uprop_is_pcm(rune ch)
{
- return mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 512]], ch % 512);
}
diff --git a/lib/unicode/prop/uprop_is_qmark.c b/lib/unicode/prop/uprop_is_qmark.c
index c62e106..11d45fd 100644
--- a/lib/unicode/prop/uprop_is_qmark.c
+++ b/lib/unicode/prop/uprop_is_qmark.c
@@ -1,37 +1,200 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 1, 1, 1, 1, 1, 1, 3, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x002018), RUNE_C(0x00201F)},
- {RUNE_C(0x002039), RUNE_C(0x00203A)},
- {RUNE_C(0x002E42), RUNE_C(0x002E42)},
- {RUNE_C(0x00300C), RUNE_C(0x00300F)},
- {RUNE_C(0x00301D), RUNE_C(0x00301F)},
- {RUNE_C(0x00FE41), RUNE_C(0x00FE44)},
- {RUNE_C(0x00FF02), RUNE_C(0x00FF02)},
- {RUNE_C(0x00FF07), RUNE_C(0x00FF07)},
- {RUNE_C(0x00FF62), RUNE_C(0x00FF63)},
+static constexpr unsigned char stage2[][64] = {
+ {0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x06,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0xF0, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_qmark(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 512]], ch % 512);
}
diff --git a/lib/unicode/prop/uprop_is_radical.c b/lib/unicode/prop/uprop_is_radical.c
index 028a64a..e59620c 100644
--- a/lib/unicode/prop/uprop_is_radical.c
+++ b/lib/unicode/prop/uprop_is_radical.c
@@ -1,24 +1,116 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x002E80), RUNE_C(0x002E99)},
- {RUNE_C(0x002E9B), RUNE_C(0x002EF3)},
- {RUNE_C(0x002F00), RUNE_C(0x002FD5)},
+static constexpr uint8_t stage1[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
+static constexpr unsigned char stage2[][128] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00},
+};
bool
uprop_is_radical(rune ch)
{
- return mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 1024]], ch % 1024);
}
diff --git a/lib/unicode/prop/uprop_is_sd.c b/lib/unicode/prop/uprop_is_sd.c
index 0cbcb5c..6716ae3 100644
--- a/lib/unicode/prop/uprop_is_sd.c
+++ b/lib/unicode/prop/uprop_is_sd.c
@@ -1,61 +1,248 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 5,
+ 6, 3, 3, 3, 3, 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 8, 9, 3, 3, 3, 10,
+ 11, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x00012F), RUNE_C(0x00012F)},
- {RUNE_C(0x000249), RUNE_C(0x000249)},
- {RUNE_C(0x000268), RUNE_C(0x000268)},
- {RUNE_C(0x00029D), RUNE_C(0x00029D)},
- {RUNE_C(0x0002B2), RUNE_C(0x0002B2)},
- {RUNE_C(0x0003F3), RUNE_C(0x0003F3)},
- {RUNE_C(0x000456), RUNE_C(0x000456)},
- {RUNE_C(0x000458), RUNE_C(0x000458)},
- {RUNE_C(0x001D62), RUNE_C(0x001D62)},
- {RUNE_C(0x001D96), RUNE_C(0x001D96)},
- {RUNE_C(0x001DA4), RUNE_C(0x001DA4)},
- {RUNE_C(0x001DA8), RUNE_C(0x001DA8)},
- {RUNE_C(0x001E2D), RUNE_C(0x001E2D)},
- {RUNE_C(0x001ECB), RUNE_C(0x001ECB)},
- {RUNE_C(0x002071), RUNE_C(0x002071)},
- {RUNE_C(0x002148), RUNE_C(0x002149)},
- {RUNE_C(0x002C7C), RUNE_C(0x002C7C)},
- {RUNE_C(0x01D422), RUNE_C(0x01D423)},
- {RUNE_C(0x01D456), RUNE_C(0x01D457)},
- {RUNE_C(0x01D48A), RUNE_C(0x01D48B)},
- {RUNE_C(0x01D4BE), RUNE_C(0x01D4BF)},
- {RUNE_C(0x01D4F2), RUNE_C(0x01D4F3)},
- {RUNE_C(0x01D526), RUNE_C(0x01D527)},
- {RUNE_C(0x01D55A), RUNE_C(0x01D55B)},
- {RUNE_C(0x01D58E), RUNE_C(0x01D58F)},
- {RUNE_C(0x01D5C2), RUNE_C(0x01D5C3)},
- {RUNE_C(0x01D5F6), RUNE_C(0x01D5F7)},
- {RUNE_C(0x01D62A), RUNE_C(0x01D62B)},
- {RUNE_C(0x01D65E), RUNE_C(0x01D65F)},
- {RUNE_C(0x01D692), RUNE_C(0x01D693)},
- {RUNE_C(0x01DF1A), RUNE_C(0x01DF1A)},
- {RUNE_C(0x01E04C), RUNE_C(0x01E04D)},
- {RUNE_C(0x01E068), RUNE_C(0x01E068)},
+static constexpr unsigned char stage2[][64] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x40, 0x00, 0x10, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_sd(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 512]], ch % 512);
}
diff --git a/lib/unicode/prop/uprop_is_sterm.c b/lib/unicode/prop/uprop_is_sterm.c
index 90966c4..109c4e1 100644
--- a/lib/unicode/prop/uprop_is_sterm.c
+++ b/lib/unicode/prop/uprop_is_sterm.c
@@ -1,106 +1,468 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x80,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 1, 1, 1, 2, 3, 4, 5, 6, 1, 1, 1, 1, 1, 1,
+ 7, 1, 1, 8, 1, 1, 9, 10, 11, 12, 13, 14, 15, 1, 1, 1,
+ 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 1,
+ 18, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 19, 1, 20, 1, 21, 22, 23, 24, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 25, 26,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 1, 1, 1, 1, 28,
+ 29, 30, 31, 1, 32, 33, 34, 35, 1, 36, 37, 1, 34, 1, 38, 39,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 40, 41, 1, 1, 42, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 43, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 44, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000589), RUNE_C(0x000589)},
- {RUNE_C(0x00061D), RUNE_C(0x00061F)},
- {RUNE_C(0x0006D4), RUNE_C(0x0006D4)},
- {RUNE_C(0x000700), RUNE_C(0x000702)},
- {RUNE_C(0x0007F9), RUNE_C(0x0007F9)},
- {RUNE_C(0x000837), RUNE_C(0x000837)},
- {RUNE_C(0x000839), RUNE_C(0x000839)},
- {RUNE_C(0x00083D), RUNE_C(0x00083E)},
- {RUNE_C(0x000964), RUNE_C(0x000965)},
- {RUNE_C(0x00104A), RUNE_C(0x00104B)},
- {RUNE_C(0x001362), RUNE_C(0x001362)},
- {RUNE_C(0x001367), RUNE_C(0x001368)},
- {RUNE_C(0x00166E), RUNE_C(0x00166E)},
- {RUNE_C(0x001735), RUNE_C(0x001736)},
- {RUNE_C(0x0017D4), RUNE_C(0x0017D5)},
- {RUNE_C(0x001803), RUNE_C(0x001803)},
- {RUNE_C(0x001809), RUNE_C(0x001809)},
- {RUNE_C(0x001944), RUNE_C(0x001945)},
- {RUNE_C(0x001AA8), RUNE_C(0x001AAB)},
- {RUNE_C(0x001B5A), RUNE_C(0x001B5B)},
- {RUNE_C(0x001B5E), RUNE_C(0x001B5F)},
- {RUNE_C(0x001B7D), RUNE_C(0x001B7E)},
- {RUNE_C(0x001C3B), RUNE_C(0x001C3C)},
- {RUNE_C(0x001C7E), RUNE_C(0x001C7F)},
- {RUNE_C(0x00203C), RUNE_C(0x00203D)},
- {RUNE_C(0x002047), RUNE_C(0x002049)},
- {RUNE_C(0x002E2E), RUNE_C(0x002E2E)},
- {RUNE_C(0x002E3C), RUNE_C(0x002E3C)},
- {RUNE_C(0x002E53), RUNE_C(0x002E54)},
- {RUNE_C(0x003002), RUNE_C(0x003002)},
- {RUNE_C(0x00A4FF), RUNE_C(0x00A4FF)},
- {RUNE_C(0x00A60E), RUNE_C(0x00A60F)},
- {RUNE_C(0x00A6F3), RUNE_C(0x00A6F3)},
- {RUNE_C(0x00A6F7), RUNE_C(0x00A6F7)},
- {RUNE_C(0x00A876), RUNE_C(0x00A877)},
- {RUNE_C(0x00A8CE), RUNE_C(0x00A8CF)},
- {RUNE_C(0x00A92F), RUNE_C(0x00A92F)},
- {RUNE_C(0x00A9C8), RUNE_C(0x00A9C9)},
- {RUNE_C(0x00AA5D), RUNE_C(0x00AA5F)},
- {RUNE_C(0x00AAF0), RUNE_C(0x00AAF1)},
- {RUNE_C(0x00ABEB), RUNE_C(0x00ABEB)},
- {RUNE_C(0x00FE52), RUNE_C(0x00FE52)},
- {RUNE_C(0x00FE56), RUNE_C(0x00FE57)},
- {RUNE_C(0x00FF01), RUNE_C(0x00FF01)},
- {RUNE_C(0x00FF0E), RUNE_C(0x00FF0E)},
- {RUNE_C(0x00FF1F), RUNE_C(0x00FF1F)},
- {RUNE_C(0x00FF61), RUNE_C(0x00FF61)},
- {RUNE_C(0x010A56), RUNE_C(0x010A57)},
- {RUNE_C(0x010F55), RUNE_C(0x010F59)},
- {RUNE_C(0x010F86), RUNE_C(0x010F89)},
- {RUNE_C(0x011047), RUNE_C(0x011048)},
- {RUNE_C(0x0110BE), RUNE_C(0x0110C1)},
- {RUNE_C(0x011141), RUNE_C(0x011143)},
- {RUNE_C(0x0111C5), RUNE_C(0x0111C6)},
- {RUNE_C(0x0111CD), RUNE_C(0x0111CD)},
- {RUNE_C(0x0111DE), RUNE_C(0x0111DF)},
- {RUNE_C(0x011238), RUNE_C(0x011239)},
- {RUNE_C(0x01123B), RUNE_C(0x01123C)},
- {RUNE_C(0x0112A9), RUNE_C(0x0112A9)},
- {RUNE_C(0x01144B), RUNE_C(0x01144C)},
- {RUNE_C(0x0115C2), RUNE_C(0x0115C3)},
- {RUNE_C(0x0115C9), RUNE_C(0x0115D7)},
- {RUNE_C(0x011641), RUNE_C(0x011642)},
- {RUNE_C(0x01173C), RUNE_C(0x01173E)},
- {RUNE_C(0x011944), RUNE_C(0x011944)},
- {RUNE_C(0x011946), RUNE_C(0x011946)},
- {RUNE_C(0x011A42), RUNE_C(0x011A43)},
- {RUNE_C(0x011A9B), RUNE_C(0x011A9C)},
- {RUNE_C(0x011C41), RUNE_C(0x011C42)},
- {RUNE_C(0x011EF7), RUNE_C(0x011EF8)},
- {RUNE_C(0x011F43), RUNE_C(0x011F44)},
- {RUNE_C(0x016A6E), RUNE_C(0x016A6F)},
- {RUNE_C(0x016AF5), RUNE_C(0x016AF5)},
- {RUNE_C(0x016B37), RUNE_C(0x016B38)},
- {RUNE_C(0x016B44), RUNE_C(0x016B44)},
- {RUNE_C(0x016E98), RUNE_C(0x016E98)},
- {RUNE_C(0x01BC9F), RUNE_C(0x01BC9F)},
- {RUNE_C(0x01DA88), RUNE_C(0x01DA88)},
+static constexpr unsigned char stage2[][32] = {
+ {0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x62,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xCC, 0x00, 0x00, 0x00, 0x60,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
+ 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10,
+ 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80},
+ {0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x02, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xE0, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0xC0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x60, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0C, 0xFE, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_sterm(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 256]], ch % 256);
}
diff --git a/lib/unicode/prop/uprop_is_term.c b/lib/unicode/prop/uprop_is_term.c
index 1475fbc..68d409b 100644
--- a/lib/unicode/prop/uprop_is_term.c
+++ b/lib/unicode/prop/uprop_is_term.c
@@ -1,131 +1,700 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x02, 0x50, 0x00, 0x8C,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 4, 5, 6, 7, 8,
+ 9, 1, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 11, 1, 12, 1,
+ 13, 1, 1, 1, 1, 1, 14, 1, 1, 1, 1, 1, 15, 16, 17, 18,
+ 19, 1, 20, 1, 1, 21, 22, 1, 23, 1, 1, 1, 1, 1, 1, 1,
+ 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 25, 1, 1, 1,
+ 26, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 1, 1, 28, 29, 1, 1,
+ 30, 31, 32, 33, 34, 35, 1, 36, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 37, 1, 38, 1,
+ 1, 1, 1, 1, 1, 1, 1, 39, 1, 1, 1, 1, 1, 1, 1, 1,
+ 40, 1, 41, 1, 42, 43, 44, 45, 1, 1, 1, 1, 1, 1, 46, 47,
+ 48, 49, 50, 51, 52, 53, 1, 1, 54, 1, 1, 55, 56, 1, 57, 1,
+ 1, 1, 58, 1, 59, 60, 1, 1, 61, 1, 1, 1, 1, 62, 63, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 64, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 65, 66, 67, 1, 1, 1, 1, 1, 1, 68, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 41, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 69, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x00037E), RUNE_C(0x00037E)},
- {RUNE_C(0x000387), RUNE_C(0x000387)},
- {RUNE_C(0x000589), RUNE_C(0x000589)},
- {RUNE_C(0x0005C3), RUNE_C(0x0005C3)},
- {RUNE_C(0x00060C), RUNE_C(0x00060C)},
- {RUNE_C(0x00061B), RUNE_C(0x00061B)},
- {RUNE_C(0x00061D), RUNE_C(0x00061F)},
- {RUNE_C(0x0006D4), RUNE_C(0x0006D4)},
- {RUNE_C(0x000700), RUNE_C(0x00070A)},
- {RUNE_C(0x00070C), RUNE_C(0x00070C)},
- {RUNE_C(0x0007F8), RUNE_C(0x0007F9)},
- {RUNE_C(0x000830), RUNE_C(0x00083E)},
- {RUNE_C(0x00085E), RUNE_C(0x00085E)},
- {RUNE_C(0x000964), RUNE_C(0x000965)},
- {RUNE_C(0x000E5A), RUNE_C(0x000E5B)},
- {RUNE_C(0x000F08), RUNE_C(0x000F08)},
- {RUNE_C(0x000F0D), RUNE_C(0x000F12)},
- {RUNE_C(0x00104A), RUNE_C(0x00104B)},
- {RUNE_C(0x001361), RUNE_C(0x001368)},
- {RUNE_C(0x00166E), RUNE_C(0x00166E)},
- {RUNE_C(0x0016EB), RUNE_C(0x0016ED)},
- {RUNE_C(0x001735), RUNE_C(0x001736)},
- {RUNE_C(0x0017D4), RUNE_C(0x0017D6)},
- {RUNE_C(0x0017DA), RUNE_C(0x0017DA)},
- {RUNE_C(0x001802), RUNE_C(0x001805)},
- {RUNE_C(0x001808), RUNE_C(0x001809)},
- {RUNE_C(0x001944), RUNE_C(0x001945)},
- {RUNE_C(0x001AA8), RUNE_C(0x001AAB)},
- {RUNE_C(0x001B5A), RUNE_C(0x001B5B)},
- {RUNE_C(0x001B5D), RUNE_C(0x001B5F)},
- {RUNE_C(0x001B7D), RUNE_C(0x001B7E)},
- {RUNE_C(0x001C3B), RUNE_C(0x001C3F)},
- {RUNE_C(0x001C7E), RUNE_C(0x001C7F)},
- {RUNE_C(0x00203C), RUNE_C(0x00203D)},
- {RUNE_C(0x002047), RUNE_C(0x002049)},
- {RUNE_C(0x002E2E), RUNE_C(0x002E2E)},
- {RUNE_C(0x002E3C), RUNE_C(0x002E3C)},
- {RUNE_C(0x002E41), RUNE_C(0x002E41)},
- {RUNE_C(0x002E4C), RUNE_C(0x002E4C)},
- {RUNE_C(0x002E4E), RUNE_C(0x002E4F)},
- {RUNE_C(0x002E53), RUNE_C(0x002E54)},
- {RUNE_C(0x003001), RUNE_C(0x003002)},
- {RUNE_C(0x00A4FE), RUNE_C(0x00A4FF)},
- {RUNE_C(0x00A60D), RUNE_C(0x00A60F)},
- {RUNE_C(0x00A6F3), RUNE_C(0x00A6F7)},
- {RUNE_C(0x00A876), RUNE_C(0x00A877)},
- {RUNE_C(0x00A8CE), RUNE_C(0x00A8CF)},
- {RUNE_C(0x00A92F), RUNE_C(0x00A92F)},
- {RUNE_C(0x00A9C7), RUNE_C(0x00A9C9)},
- {RUNE_C(0x00AA5D), RUNE_C(0x00AA5F)},
- {RUNE_C(0x00AADF), RUNE_C(0x00AADF)},
- {RUNE_C(0x00AAF0), RUNE_C(0x00AAF1)},
- {RUNE_C(0x00ABEB), RUNE_C(0x00ABEB)},
- {RUNE_C(0x00FE50), RUNE_C(0x00FE52)},
- {RUNE_C(0x00FE54), RUNE_C(0x00FE57)},
- {RUNE_C(0x00FF01), RUNE_C(0x00FF01)},
- {RUNE_C(0x00FF0C), RUNE_C(0x00FF0C)},
- {RUNE_C(0x00FF0E), RUNE_C(0x00FF0E)},
- {RUNE_C(0x00FF1A), RUNE_C(0x00FF1B)},
- {RUNE_C(0x00FF1F), RUNE_C(0x00FF1F)},
- {RUNE_C(0x00FF61), RUNE_C(0x00FF61)},
- {RUNE_C(0x00FF64), RUNE_C(0x00FF64)},
- {RUNE_C(0x01039F), RUNE_C(0x01039F)},
- {RUNE_C(0x0103D0), RUNE_C(0x0103D0)},
- {RUNE_C(0x010857), RUNE_C(0x010857)},
- {RUNE_C(0x01091F), RUNE_C(0x01091F)},
- {RUNE_C(0x010A56), RUNE_C(0x010A57)},
- {RUNE_C(0x010AF0), RUNE_C(0x010AF5)},
- {RUNE_C(0x010B3A), RUNE_C(0x010B3F)},
- {RUNE_C(0x010B99), RUNE_C(0x010B9C)},
- {RUNE_C(0x010F55), RUNE_C(0x010F59)},
- {RUNE_C(0x010F86), RUNE_C(0x010F89)},
- {RUNE_C(0x011047), RUNE_C(0x01104D)},
- {RUNE_C(0x0110BE), RUNE_C(0x0110C1)},
- {RUNE_C(0x011141), RUNE_C(0x011143)},
- {RUNE_C(0x0111C5), RUNE_C(0x0111C6)},
- {RUNE_C(0x0111CD), RUNE_C(0x0111CD)},
- {RUNE_C(0x0111DE), RUNE_C(0x0111DF)},
- {RUNE_C(0x011238), RUNE_C(0x01123C)},
- {RUNE_C(0x0112A9), RUNE_C(0x0112A9)},
- {RUNE_C(0x01144B), RUNE_C(0x01144D)},
- {RUNE_C(0x01145A), RUNE_C(0x01145B)},
- {RUNE_C(0x0115C2), RUNE_C(0x0115C5)},
- {RUNE_C(0x0115C9), RUNE_C(0x0115D7)},
- {RUNE_C(0x011641), RUNE_C(0x011642)},
- {RUNE_C(0x01173C), RUNE_C(0x01173E)},
- {RUNE_C(0x011944), RUNE_C(0x011944)},
- {RUNE_C(0x011946), RUNE_C(0x011946)},
- {RUNE_C(0x011A42), RUNE_C(0x011A43)},
- {RUNE_C(0x011A9B), RUNE_C(0x011A9C)},
- {RUNE_C(0x011AA1), RUNE_C(0x011AA2)},
- {RUNE_C(0x011C41), RUNE_C(0x011C43)},
- {RUNE_C(0x011C71), RUNE_C(0x011C71)},
- {RUNE_C(0x011EF7), RUNE_C(0x011EF8)},
- {RUNE_C(0x011F43), RUNE_C(0x011F44)},
- {RUNE_C(0x012470), RUNE_C(0x012474)},
- {RUNE_C(0x016A6E), RUNE_C(0x016A6F)},
- {RUNE_C(0x016AF5), RUNE_C(0x016AF5)},
- {RUNE_C(0x016B37), RUNE_C(0x016B39)},
- {RUNE_C(0x016B44), RUNE_C(0x016B44)},
- {RUNE_C(0x016E97), RUNE_C(0x016E98)},
- {RUNE_C(0x01BC9F), RUNE_C(0x01BC9F)},
- {RUNE_C(0x01DA87), RUNE_C(0x01DA8A)},
+static constexpr unsigned char stage2[][16] = {
+ {0x00, 0x00, 0x00, 0x00, 0x02, 0x50, 0x00, 0x8C,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40},
+ {0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x10, 0x00, 0xE8, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F,
+ 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0xE1, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFE, 0x01, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x70, 0x04, 0x00, 0x00, 0x00, 0x00},
+ {0x3C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xEC, 0x00, 0x00, 0x00, 0x60},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
+ 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x10,
+ 0x02, 0xD0, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0},
+ {0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x02, 0x50, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xE0, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0xC0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x60, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x38, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x3C, 0xFE, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_term(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 128]], ch % 128);
}
diff --git a/lib/unicode/prop/uprop_is_uideo.c b/lib/unicode/prop/uprop_is_uideo.c
index a178b69..55b25b6 100644
--- a/lib/unicode/prop/uprop_is_uideo.c
+++ b/lib/unicode/prop/uprop_is_uideo.c
@@ -1,38 +1,336 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x003400), RUNE_C(0x004DBF)},
- {RUNE_C(0x004E00), RUNE_C(0x009FFF)},
- {RUNE_C(0x00FA0E), RUNE_C(0x00FA0F)},
- {RUNE_C(0x00FA11), RUNE_C(0x00FA11)},
- {RUNE_C(0x00FA13), RUNE_C(0x00FA14)},
- {RUNE_C(0x00FA1F), RUNE_C(0x00FA1F)},
- {RUNE_C(0x00FA21), RUNE_C(0x00FA21)},
- {RUNE_C(0x00FA23), RUNE_C(0x00FA24)},
- {RUNE_C(0x00FA27), RUNE_C(0x00FA29)},
- {RUNE_C(0x020000), RUNE_C(0x02A6DF)},
- {RUNE_C(0x02A700), RUNE_C(0x02B739)},
- {RUNE_C(0x02B740), RUNE_C(0x02B81D)},
- {RUNE_C(0x02B820), RUNE_C(0x02CEA1)},
- {RUNE_C(0x02CEB0), RUNE_C(0x02EBE0)},
- {RUNE_C(0x02EBF0), RUNE_C(0x02EE5D)},
- {RUNE_C(0x030000), RUNE_C(0x03134A)},
- {RUNE_C(0x031350), RUNE_C(0x0323AF)},
+static constexpr uint8_t stage1[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 5, 6, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 1, 1, 9, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
+static constexpr unsigned char stage2[][32] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0xC0, 0x1A, 0x80, 0x9A, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+};
bool
uprop_is_uideo(rune ch)
{
- return mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 256]], ch % 256);
}
diff --git a/lib/unicode/prop/uprop_is_upper.c b/lib/unicode/prop/uprop_is_upper.c
index 1ed0436..221a90d 100644
--- a/lib/unicode/prop/uprop_is_upper.c
+++ b/lib/unicode/prop/uprop_is_upper.c
@@ -1,676 +1,420 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xFE, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xFF, 0xFF, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 7, 6, 6, 8, 6, 6, 6, 6, 6, 6, 6, 6, 9, 10, 11, 12,
+ 6, 13, 6, 6, 14, 6, 6, 6, 6, 6, 6, 6, 15, 16, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 17, 18, 6, 6, 6, 19, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 20, 6, 6, 6, 21,
+ 6, 6, 6, 6, 22, 23, 6, 6, 6, 6, 6, 6, 24, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 25, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 26, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 27, 28, 29, 30, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 31, 6, 6, 6, 6, 6, 6,
+ 6, 32, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000100), RUNE_C(0x000100)},
- {RUNE_C(0x000102), RUNE_C(0x000102)},
- {RUNE_C(0x000104), RUNE_C(0x000104)},
- {RUNE_C(0x000106), RUNE_C(0x000106)},
- {RUNE_C(0x000108), RUNE_C(0x000108)},
- {RUNE_C(0x00010A), RUNE_C(0x00010A)},
- {RUNE_C(0x00010C), RUNE_C(0x00010C)},
- {RUNE_C(0x00010E), RUNE_C(0x00010E)},
- {RUNE_C(0x000110), RUNE_C(0x000110)},
- {RUNE_C(0x000112), RUNE_C(0x000112)},
- {RUNE_C(0x000114), RUNE_C(0x000114)},
- {RUNE_C(0x000116), RUNE_C(0x000116)},
- {RUNE_C(0x000118), RUNE_C(0x000118)},
- {RUNE_C(0x00011A), RUNE_C(0x00011A)},
- {RUNE_C(0x00011C), RUNE_C(0x00011C)},
- {RUNE_C(0x00011E), RUNE_C(0x00011E)},
- {RUNE_C(0x000120), RUNE_C(0x000120)},
- {RUNE_C(0x000122), RUNE_C(0x000122)},
- {RUNE_C(0x000124), RUNE_C(0x000124)},
- {RUNE_C(0x000126), RUNE_C(0x000126)},
- {RUNE_C(0x000128), RUNE_C(0x000128)},
- {RUNE_C(0x00012A), RUNE_C(0x00012A)},
- {RUNE_C(0x00012C), RUNE_C(0x00012C)},
- {RUNE_C(0x00012E), RUNE_C(0x00012E)},
- {RUNE_C(0x000130), RUNE_C(0x000130)},
- {RUNE_C(0x000132), RUNE_C(0x000132)},
- {RUNE_C(0x000134), RUNE_C(0x000134)},
- {RUNE_C(0x000136), RUNE_C(0x000136)},
- {RUNE_C(0x000139), RUNE_C(0x000139)},
- {RUNE_C(0x00013B), RUNE_C(0x00013B)},
- {RUNE_C(0x00013D), RUNE_C(0x00013D)},
- {RUNE_C(0x00013F), RUNE_C(0x00013F)},
- {RUNE_C(0x000141), RUNE_C(0x000141)},
- {RUNE_C(0x000143), RUNE_C(0x000143)},
- {RUNE_C(0x000145), RUNE_C(0x000145)},
- {RUNE_C(0x000147), RUNE_C(0x000147)},
- {RUNE_C(0x00014A), RUNE_C(0x00014A)},
- {RUNE_C(0x00014C), RUNE_C(0x00014C)},
- {RUNE_C(0x00014E), RUNE_C(0x00014E)},
- {RUNE_C(0x000150), RUNE_C(0x000150)},
- {RUNE_C(0x000152), RUNE_C(0x000152)},
- {RUNE_C(0x000154), RUNE_C(0x000154)},
- {RUNE_C(0x000156), RUNE_C(0x000156)},
- {RUNE_C(0x000158), RUNE_C(0x000158)},
- {RUNE_C(0x00015A), RUNE_C(0x00015A)},
- {RUNE_C(0x00015C), RUNE_C(0x00015C)},
- {RUNE_C(0x00015E), RUNE_C(0x00015E)},
- {RUNE_C(0x000160), RUNE_C(0x000160)},
- {RUNE_C(0x000162), RUNE_C(0x000162)},
- {RUNE_C(0x000164), RUNE_C(0x000164)},
- {RUNE_C(0x000166), RUNE_C(0x000166)},
- {RUNE_C(0x000168), RUNE_C(0x000168)},
- {RUNE_C(0x00016A), RUNE_C(0x00016A)},
- {RUNE_C(0x00016C), RUNE_C(0x00016C)},
- {RUNE_C(0x00016E), RUNE_C(0x00016E)},
- {RUNE_C(0x000170), RUNE_C(0x000170)},
- {RUNE_C(0x000172), RUNE_C(0x000172)},
- {RUNE_C(0x000174), RUNE_C(0x000174)},
- {RUNE_C(0x000176), RUNE_C(0x000176)},
- {RUNE_C(0x000178), RUNE_C(0x000179)},
- {RUNE_C(0x00017B), RUNE_C(0x00017B)},
- {RUNE_C(0x00017D), RUNE_C(0x00017D)},
- {RUNE_C(0x000181), RUNE_C(0x000182)},
- {RUNE_C(0x000184), RUNE_C(0x000184)},
- {RUNE_C(0x000186), RUNE_C(0x000187)},
- {RUNE_C(0x000189), RUNE_C(0x00018B)},
- {RUNE_C(0x00018E), RUNE_C(0x000191)},
- {RUNE_C(0x000193), RUNE_C(0x000194)},
- {RUNE_C(0x000196), RUNE_C(0x000198)},
- {RUNE_C(0x00019C), RUNE_C(0x00019D)},
- {RUNE_C(0x00019F), RUNE_C(0x0001A0)},
- {RUNE_C(0x0001A2), RUNE_C(0x0001A2)},
- {RUNE_C(0x0001A4), RUNE_C(0x0001A4)},
- {RUNE_C(0x0001A6), RUNE_C(0x0001A7)},
- {RUNE_C(0x0001A9), RUNE_C(0x0001A9)},
- {RUNE_C(0x0001AC), RUNE_C(0x0001AC)},
- {RUNE_C(0x0001AE), RUNE_C(0x0001AF)},
- {RUNE_C(0x0001B1), RUNE_C(0x0001B3)},
- {RUNE_C(0x0001B5), RUNE_C(0x0001B5)},
- {RUNE_C(0x0001B7), RUNE_C(0x0001B8)},
- {RUNE_C(0x0001BC), RUNE_C(0x0001BC)},
- {RUNE_C(0x0001C4), RUNE_C(0x0001C4)},
- {RUNE_C(0x0001C7), RUNE_C(0x0001C7)},
- {RUNE_C(0x0001CA), RUNE_C(0x0001CA)},
- {RUNE_C(0x0001CD), RUNE_C(0x0001CD)},
- {RUNE_C(0x0001CF), RUNE_C(0x0001CF)},
- {RUNE_C(0x0001D1), RUNE_C(0x0001D1)},
- {RUNE_C(0x0001D3), RUNE_C(0x0001D3)},
- {RUNE_C(0x0001D5), RUNE_C(0x0001D5)},
- {RUNE_C(0x0001D7), RUNE_C(0x0001D7)},
- {RUNE_C(0x0001D9), RUNE_C(0x0001D9)},
- {RUNE_C(0x0001DB), RUNE_C(0x0001DB)},
- {RUNE_C(0x0001DE), RUNE_C(0x0001DE)},
- {RUNE_C(0x0001E0), RUNE_C(0x0001E0)},
- {RUNE_C(0x0001E2), RUNE_C(0x0001E2)},
- {RUNE_C(0x0001E4), RUNE_C(0x0001E4)},
- {RUNE_C(0x0001E6), RUNE_C(0x0001E6)},
- {RUNE_C(0x0001E8), RUNE_C(0x0001E8)},
- {RUNE_C(0x0001EA), RUNE_C(0x0001EA)},
- {RUNE_C(0x0001EC), RUNE_C(0x0001EC)},
- {RUNE_C(0x0001EE), RUNE_C(0x0001EE)},
- {RUNE_C(0x0001F1), RUNE_C(0x0001F1)},
- {RUNE_C(0x0001F4), RUNE_C(0x0001F4)},
- {RUNE_C(0x0001F6), RUNE_C(0x0001F8)},
- {RUNE_C(0x0001FA), RUNE_C(0x0001FA)},
- {RUNE_C(0x0001FC), RUNE_C(0x0001FC)},
- {RUNE_C(0x0001FE), RUNE_C(0x0001FE)},
- {RUNE_C(0x000200), RUNE_C(0x000200)},
- {RUNE_C(0x000202), RUNE_C(0x000202)},
- {RUNE_C(0x000204), RUNE_C(0x000204)},
- {RUNE_C(0x000206), RUNE_C(0x000206)},
- {RUNE_C(0x000208), RUNE_C(0x000208)},
- {RUNE_C(0x00020A), RUNE_C(0x00020A)},
- {RUNE_C(0x00020C), RUNE_C(0x00020C)},
- {RUNE_C(0x00020E), RUNE_C(0x00020E)},
- {RUNE_C(0x000210), RUNE_C(0x000210)},
- {RUNE_C(0x000212), RUNE_C(0x000212)},
- {RUNE_C(0x000214), RUNE_C(0x000214)},
- {RUNE_C(0x000216), RUNE_C(0x000216)},
- {RUNE_C(0x000218), RUNE_C(0x000218)},
- {RUNE_C(0x00021A), RUNE_C(0x00021A)},
- {RUNE_C(0x00021C), RUNE_C(0x00021C)},
- {RUNE_C(0x00021E), RUNE_C(0x00021E)},
- {RUNE_C(0x000220), RUNE_C(0x000220)},
- {RUNE_C(0x000222), RUNE_C(0x000222)},
- {RUNE_C(0x000224), RUNE_C(0x000224)},
- {RUNE_C(0x000226), RUNE_C(0x000226)},
- {RUNE_C(0x000228), RUNE_C(0x000228)},
- {RUNE_C(0x00022A), RUNE_C(0x00022A)},
- {RUNE_C(0x00022C), RUNE_C(0x00022C)},
- {RUNE_C(0x00022E), RUNE_C(0x00022E)},
- {RUNE_C(0x000230), RUNE_C(0x000230)},
- {RUNE_C(0x000232), RUNE_C(0x000232)},
- {RUNE_C(0x00023A), RUNE_C(0x00023B)},
- {RUNE_C(0x00023D), RUNE_C(0x00023E)},
- {RUNE_C(0x000241), RUNE_C(0x000241)},
- {RUNE_C(0x000243), RUNE_C(0x000246)},
- {RUNE_C(0x000248), RUNE_C(0x000248)},
- {RUNE_C(0x00024A), RUNE_C(0x00024A)},
- {RUNE_C(0x00024C), RUNE_C(0x00024C)},
- {RUNE_C(0x00024E), RUNE_C(0x00024E)},
- {RUNE_C(0x000370), RUNE_C(0x000370)},
- {RUNE_C(0x000372), RUNE_C(0x000372)},
- {RUNE_C(0x000376), RUNE_C(0x000376)},
- {RUNE_C(0x00037F), RUNE_C(0x00037F)},
- {RUNE_C(0x000386), RUNE_C(0x000386)},
- {RUNE_C(0x000388), RUNE_C(0x00038A)},
- {RUNE_C(0x00038C), RUNE_C(0x00038C)},
- {RUNE_C(0x00038E), RUNE_C(0x00038F)},
- {RUNE_C(0x000391), RUNE_C(0x0003A1)},
- {RUNE_C(0x0003A3), RUNE_C(0x0003AB)},
- {RUNE_C(0x0003CF), RUNE_C(0x0003CF)},
- {RUNE_C(0x0003D2), RUNE_C(0x0003D4)},
- {RUNE_C(0x0003D8), RUNE_C(0x0003D8)},
- {RUNE_C(0x0003DA), RUNE_C(0x0003DA)},
- {RUNE_C(0x0003DC), RUNE_C(0x0003DC)},
- {RUNE_C(0x0003DE), RUNE_C(0x0003DE)},
- {RUNE_C(0x0003E0), RUNE_C(0x0003E0)},
- {RUNE_C(0x0003E2), RUNE_C(0x0003E2)},
- {RUNE_C(0x0003E4), RUNE_C(0x0003E4)},
- {RUNE_C(0x0003E6), RUNE_C(0x0003E6)},
- {RUNE_C(0x0003E8), RUNE_C(0x0003E8)},
- {RUNE_C(0x0003EA), RUNE_C(0x0003EA)},
- {RUNE_C(0x0003EC), RUNE_C(0x0003EC)},
- {RUNE_C(0x0003EE), RUNE_C(0x0003EE)},
- {RUNE_C(0x0003F4), RUNE_C(0x0003F4)},
- {RUNE_C(0x0003F7), RUNE_C(0x0003F7)},
- {RUNE_C(0x0003F9), RUNE_C(0x0003FA)},
- {RUNE_C(0x0003FD), RUNE_C(0x00042F)},
- {RUNE_C(0x000460), RUNE_C(0x000460)},
- {RUNE_C(0x000462), RUNE_C(0x000462)},
- {RUNE_C(0x000464), RUNE_C(0x000464)},
- {RUNE_C(0x000466), RUNE_C(0x000466)},
- {RUNE_C(0x000468), RUNE_C(0x000468)},
- {RUNE_C(0x00046A), RUNE_C(0x00046A)},
- {RUNE_C(0x00046C), RUNE_C(0x00046C)},
- {RUNE_C(0x00046E), RUNE_C(0x00046E)},
- {RUNE_C(0x000470), RUNE_C(0x000470)},
- {RUNE_C(0x000472), RUNE_C(0x000472)},
- {RUNE_C(0x000474), RUNE_C(0x000474)},
- {RUNE_C(0x000476), RUNE_C(0x000476)},
- {RUNE_C(0x000478), RUNE_C(0x000478)},
- {RUNE_C(0x00047A), RUNE_C(0x00047A)},
- {RUNE_C(0x00047C), RUNE_C(0x00047C)},
- {RUNE_C(0x00047E), RUNE_C(0x00047E)},
- {RUNE_C(0x000480), RUNE_C(0x000480)},
- {RUNE_C(0x00048A), RUNE_C(0x00048A)},
- {RUNE_C(0x00048C), RUNE_C(0x00048C)},
- {RUNE_C(0x00048E), RUNE_C(0x00048E)},
- {RUNE_C(0x000490), RUNE_C(0x000490)},
- {RUNE_C(0x000492), RUNE_C(0x000492)},
- {RUNE_C(0x000494), RUNE_C(0x000494)},
- {RUNE_C(0x000496), RUNE_C(0x000496)},
- {RUNE_C(0x000498), RUNE_C(0x000498)},
- {RUNE_C(0x00049A), RUNE_C(0x00049A)},
- {RUNE_C(0x00049C), RUNE_C(0x00049C)},
- {RUNE_C(0x00049E), RUNE_C(0x00049E)},
- {RUNE_C(0x0004A0), RUNE_C(0x0004A0)},
- {RUNE_C(0x0004A2), RUNE_C(0x0004A2)},
- {RUNE_C(0x0004A4), RUNE_C(0x0004A4)},
- {RUNE_C(0x0004A6), RUNE_C(0x0004A6)},
- {RUNE_C(0x0004A8), RUNE_C(0x0004A8)},
- {RUNE_C(0x0004AA), RUNE_C(0x0004AA)},
- {RUNE_C(0x0004AC), RUNE_C(0x0004AC)},
- {RUNE_C(0x0004AE), RUNE_C(0x0004AE)},
- {RUNE_C(0x0004B0), RUNE_C(0x0004B0)},
- {RUNE_C(0x0004B2), RUNE_C(0x0004B2)},
- {RUNE_C(0x0004B4), RUNE_C(0x0004B4)},
- {RUNE_C(0x0004B6), RUNE_C(0x0004B6)},
- {RUNE_C(0x0004B8), RUNE_C(0x0004B8)},
- {RUNE_C(0x0004BA), RUNE_C(0x0004BA)},
- {RUNE_C(0x0004BC), RUNE_C(0x0004BC)},
- {RUNE_C(0x0004BE), RUNE_C(0x0004BE)},
- {RUNE_C(0x0004C0), RUNE_C(0x0004C1)},
- {RUNE_C(0x0004C3), RUNE_C(0x0004C3)},
- {RUNE_C(0x0004C5), RUNE_C(0x0004C5)},
- {RUNE_C(0x0004C7), RUNE_C(0x0004C7)},
- {RUNE_C(0x0004C9), RUNE_C(0x0004C9)},
- {RUNE_C(0x0004CB), RUNE_C(0x0004CB)},
- {RUNE_C(0x0004CD), RUNE_C(0x0004CD)},
- {RUNE_C(0x0004D0), RUNE_C(0x0004D0)},
- {RUNE_C(0x0004D2), RUNE_C(0x0004D2)},
- {RUNE_C(0x0004D4), RUNE_C(0x0004D4)},
- {RUNE_C(0x0004D6), RUNE_C(0x0004D6)},
- {RUNE_C(0x0004D8), RUNE_C(0x0004D8)},
- {RUNE_C(0x0004DA), RUNE_C(0x0004DA)},
- {RUNE_C(0x0004DC), RUNE_C(0x0004DC)},
- {RUNE_C(0x0004DE), RUNE_C(0x0004DE)},
- {RUNE_C(0x0004E0), RUNE_C(0x0004E0)},
- {RUNE_C(0x0004E2), RUNE_C(0x0004E2)},
- {RUNE_C(0x0004E4), RUNE_C(0x0004E4)},
- {RUNE_C(0x0004E6), RUNE_C(0x0004E6)},
- {RUNE_C(0x0004E8), RUNE_C(0x0004E8)},
- {RUNE_C(0x0004EA), RUNE_C(0x0004EA)},
- {RUNE_C(0x0004EC), RUNE_C(0x0004EC)},
- {RUNE_C(0x0004EE), RUNE_C(0x0004EE)},
- {RUNE_C(0x0004F0), RUNE_C(0x0004F0)},
- {RUNE_C(0x0004F2), RUNE_C(0x0004F2)},
- {RUNE_C(0x0004F4), RUNE_C(0x0004F4)},
- {RUNE_C(0x0004F6), RUNE_C(0x0004F6)},
- {RUNE_C(0x0004F8), RUNE_C(0x0004F8)},
- {RUNE_C(0x0004FA), RUNE_C(0x0004FA)},
- {RUNE_C(0x0004FC), RUNE_C(0x0004FC)},
- {RUNE_C(0x0004FE), RUNE_C(0x0004FE)},
- {RUNE_C(0x000500), RUNE_C(0x000500)},
- {RUNE_C(0x000502), RUNE_C(0x000502)},
- {RUNE_C(0x000504), RUNE_C(0x000504)},
- {RUNE_C(0x000506), RUNE_C(0x000506)},
- {RUNE_C(0x000508), RUNE_C(0x000508)},
- {RUNE_C(0x00050A), RUNE_C(0x00050A)},
- {RUNE_C(0x00050C), RUNE_C(0x00050C)},
- {RUNE_C(0x00050E), RUNE_C(0x00050E)},
- {RUNE_C(0x000510), RUNE_C(0x000510)},
- {RUNE_C(0x000512), RUNE_C(0x000512)},
- {RUNE_C(0x000514), RUNE_C(0x000514)},
- {RUNE_C(0x000516), RUNE_C(0x000516)},
- {RUNE_C(0x000518), RUNE_C(0x000518)},
- {RUNE_C(0x00051A), RUNE_C(0x00051A)},
- {RUNE_C(0x00051C), RUNE_C(0x00051C)},
- {RUNE_C(0x00051E), RUNE_C(0x00051E)},
- {RUNE_C(0x000520), RUNE_C(0x000520)},
- {RUNE_C(0x000522), RUNE_C(0x000522)},
- {RUNE_C(0x000524), RUNE_C(0x000524)},
- {RUNE_C(0x000526), RUNE_C(0x000526)},
- {RUNE_C(0x000528), RUNE_C(0x000528)},
- {RUNE_C(0x00052A), RUNE_C(0x00052A)},
- {RUNE_C(0x00052C), RUNE_C(0x00052C)},
- {RUNE_C(0x00052E), RUNE_C(0x00052E)},
- {RUNE_C(0x000531), RUNE_C(0x000556)},
- {RUNE_C(0x0010A0), RUNE_C(0x0010C5)},
- {RUNE_C(0x0010C7), RUNE_C(0x0010C7)},
- {RUNE_C(0x0010CD), RUNE_C(0x0010CD)},
- {RUNE_C(0x0013A0), RUNE_C(0x0013F5)},
- {RUNE_C(0x001C90), RUNE_C(0x001CBA)},
- {RUNE_C(0x001CBD), RUNE_C(0x001CBF)},
- {RUNE_C(0x001E00), RUNE_C(0x001E00)},
- {RUNE_C(0x001E02), RUNE_C(0x001E02)},
- {RUNE_C(0x001E04), RUNE_C(0x001E04)},
- {RUNE_C(0x001E06), RUNE_C(0x001E06)},
- {RUNE_C(0x001E08), RUNE_C(0x001E08)},
- {RUNE_C(0x001E0A), RUNE_C(0x001E0A)},
- {RUNE_C(0x001E0C), RUNE_C(0x001E0C)},
- {RUNE_C(0x001E0E), RUNE_C(0x001E0E)},
- {RUNE_C(0x001E10), RUNE_C(0x001E10)},
- {RUNE_C(0x001E12), RUNE_C(0x001E12)},
- {RUNE_C(0x001E14), RUNE_C(0x001E14)},
- {RUNE_C(0x001E16), RUNE_C(0x001E16)},
- {RUNE_C(0x001E18), RUNE_C(0x001E18)},
- {RUNE_C(0x001E1A), RUNE_C(0x001E1A)},
- {RUNE_C(0x001E1C), RUNE_C(0x001E1C)},
- {RUNE_C(0x001E1E), RUNE_C(0x001E1E)},
- {RUNE_C(0x001E20), RUNE_C(0x001E20)},
- {RUNE_C(0x001E22), RUNE_C(0x001E22)},
- {RUNE_C(0x001E24), RUNE_C(0x001E24)},
- {RUNE_C(0x001E26), RUNE_C(0x001E26)},
- {RUNE_C(0x001E28), RUNE_C(0x001E28)},
- {RUNE_C(0x001E2A), RUNE_C(0x001E2A)},
- {RUNE_C(0x001E2C), RUNE_C(0x001E2C)},
- {RUNE_C(0x001E2E), RUNE_C(0x001E2E)},
- {RUNE_C(0x001E30), RUNE_C(0x001E30)},
- {RUNE_C(0x001E32), RUNE_C(0x001E32)},
- {RUNE_C(0x001E34), RUNE_C(0x001E34)},
- {RUNE_C(0x001E36), RUNE_C(0x001E36)},
- {RUNE_C(0x001E38), RUNE_C(0x001E38)},
- {RUNE_C(0x001E3A), RUNE_C(0x001E3A)},
- {RUNE_C(0x001E3C), RUNE_C(0x001E3C)},
- {RUNE_C(0x001E3E), RUNE_C(0x001E3E)},
- {RUNE_C(0x001E40), RUNE_C(0x001E40)},
- {RUNE_C(0x001E42), RUNE_C(0x001E42)},
- {RUNE_C(0x001E44), RUNE_C(0x001E44)},
- {RUNE_C(0x001E46), RUNE_C(0x001E46)},
- {RUNE_C(0x001E48), RUNE_C(0x001E48)},
- {RUNE_C(0x001E4A), RUNE_C(0x001E4A)},
- {RUNE_C(0x001E4C), RUNE_C(0x001E4C)},
- {RUNE_C(0x001E4E), RUNE_C(0x001E4E)},
- {RUNE_C(0x001E50), RUNE_C(0x001E50)},
- {RUNE_C(0x001E52), RUNE_C(0x001E52)},
- {RUNE_C(0x001E54), RUNE_C(0x001E54)},
- {RUNE_C(0x001E56), RUNE_C(0x001E56)},
- {RUNE_C(0x001E58), RUNE_C(0x001E58)},
- {RUNE_C(0x001E5A), RUNE_C(0x001E5A)},
- {RUNE_C(0x001E5C), RUNE_C(0x001E5C)},
- {RUNE_C(0x001E5E), RUNE_C(0x001E5E)},
- {RUNE_C(0x001E60), RUNE_C(0x001E60)},
- {RUNE_C(0x001E62), RUNE_C(0x001E62)},
- {RUNE_C(0x001E64), RUNE_C(0x001E64)},
- {RUNE_C(0x001E66), RUNE_C(0x001E66)},
- {RUNE_C(0x001E68), RUNE_C(0x001E68)},
- {RUNE_C(0x001E6A), RUNE_C(0x001E6A)},
- {RUNE_C(0x001E6C), RUNE_C(0x001E6C)},
- {RUNE_C(0x001E6E), RUNE_C(0x001E6E)},
- {RUNE_C(0x001E70), RUNE_C(0x001E70)},
- {RUNE_C(0x001E72), RUNE_C(0x001E72)},
- {RUNE_C(0x001E74), RUNE_C(0x001E74)},
- {RUNE_C(0x001E76), RUNE_C(0x001E76)},
- {RUNE_C(0x001E78), RUNE_C(0x001E78)},
- {RUNE_C(0x001E7A), RUNE_C(0x001E7A)},
- {RUNE_C(0x001E7C), RUNE_C(0x001E7C)},
- {RUNE_C(0x001E7E), RUNE_C(0x001E7E)},
- {RUNE_C(0x001E80), RUNE_C(0x001E80)},
- {RUNE_C(0x001E82), RUNE_C(0x001E82)},
- {RUNE_C(0x001E84), RUNE_C(0x001E84)},
- {RUNE_C(0x001E86), RUNE_C(0x001E86)},
- {RUNE_C(0x001E88), RUNE_C(0x001E88)},
- {RUNE_C(0x001E8A), RUNE_C(0x001E8A)},
- {RUNE_C(0x001E8C), RUNE_C(0x001E8C)},
- {RUNE_C(0x001E8E), RUNE_C(0x001E8E)},
- {RUNE_C(0x001E90), RUNE_C(0x001E90)},
- {RUNE_C(0x001E92), RUNE_C(0x001E92)},
- {RUNE_C(0x001E94), RUNE_C(0x001E94)},
- {RUNE_C(0x001E9E), RUNE_C(0x001E9E)},
- {RUNE_C(0x001EA0), RUNE_C(0x001EA0)},
- {RUNE_C(0x001EA2), RUNE_C(0x001EA2)},
- {RUNE_C(0x001EA4), RUNE_C(0x001EA4)},
- {RUNE_C(0x001EA6), RUNE_C(0x001EA6)},
- {RUNE_C(0x001EA8), RUNE_C(0x001EA8)},
- {RUNE_C(0x001EAA), RUNE_C(0x001EAA)},
- {RUNE_C(0x001EAC), RUNE_C(0x001EAC)},
- {RUNE_C(0x001EAE), RUNE_C(0x001EAE)},
- {RUNE_C(0x001EB0), RUNE_C(0x001EB0)},
- {RUNE_C(0x001EB2), RUNE_C(0x001EB2)},
- {RUNE_C(0x001EB4), RUNE_C(0x001EB4)},
- {RUNE_C(0x001EB6), RUNE_C(0x001EB6)},
- {RUNE_C(0x001EB8), RUNE_C(0x001EB8)},
- {RUNE_C(0x001EBA), RUNE_C(0x001EBA)},
- {RUNE_C(0x001EBC), RUNE_C(0x001EBC)},
- {RUNE_C(0x001EBE), RUNE_C(0x001EBE)},
- {RUNE_C(0x001EC0), RUNE_C(0x001EC0)},
- {RUNE_C(0x001EC2), RUNE_C(0x001EC2)},
- {RUNE_C(0x001EC4), RUNE_C(0x001EC4)},
- {RUNE_C(0x001EC6), RUNE_C(0x001EC6)},
- {RUNE_C(0x001EC8), RUNE_C(0x001EC8)},
- {RUNE_C(0x001ECA), RUNE_C(0x001ECA)},
- {RUNE_C(0x001ECC), RUNE_C(0x001ECC)},
- {RUNE_C(0x001ECE), RUNE_C(0x001ECE)},
- {RUNE_C(0x001ED0), RUNE_C(0x001ED0)},
- {RUNE_C(0x001ED2), RUNE_C(0x001ED2)},
- {RUNE_C(0x001ED4), RUNE_C(0x001ED4)},
- {RUNE_C(0x001ED6), RUNE_C(0x001ED6)},
- {RUNE_C(0x001ED8), RUNE_C(0x001ED8)},
- {RUNE_C(0x001EDA), RUNE_C(0x001EDA)},
- {RUNE_C(0x001EDC), RUNE_C(0x001EDC)},
- {RUNE_C(0x001EDE), RUNE_C(0x001EDE)},
- {RUNE_C(0x001EE0), RUNE_C(0x001EE0)},
- {RUNE_C(0x001EE2), RUNE_C(0x001EE2)},
- {RUNE_C(0x001EE4), RUNE_C(0x001EE4)},
- {RUNE_C(0x001EE6), RUNE_C(0x001EE6)},
- {RUNE_C(0x001EE8), RUNE_C(0x001EE8)},
- {RUNE_C(0x001EEA), RUNE_C(0x001EEA)},
- {RUNE_C(0x001EEC), RUNE_C(0x001EEC)},
- {RUNE_C(0x001EEE), RUNE_C(0x001EEE)},
- {RUNE_C(0x001EF0), RUNE_C(0x001EF0)},
- {RUNE_C(0x001EF2), RUNE_C(0x001EF2)},
- {RUNE_C(0x001EF4), RUNE_C(0x001EF4)},
- {RUNE_C(0x001EF6), RUNE_C(0x001EF6)},
- {RUNE_C(0x001EF8), RUNE_C(0x001EF8)},
- {RUNE_C(0x001EFA), RUNE_C(0x001EFA)},
- {RUNE_C(0x001EFC), RUNE_C(0x001EFC)},
- {RUNE_C(0x001EFE), RUNE_C(0x001EFE)},
- {RUNE_C(0x001F08), RUNE_C(0x001F0F)},
- {RUNE_C(0x001F18), RUNE_C(0x001F1D)},
- {RUNE_C(0x001F28), RUNE_C(0x001F2F)},
- {RUNE_C(0x001F38), RUNE_C(0x001F3F)},
- {RUNE_C(0x001F48), RUNE_C(0x001F4D)},
- {RUNE_C(0x001F59), RUNE_C(0x001F59)},
- {RUNE_C(0x001F5B), RUNE_C(0x001F5B)},
- {RUNE_C(0x001F5D), RUNE_C(0x001F5D)},
- {RUNE_C(0x001F5F), RUNE_C(0x001F5F)},
- {RUNE_C(0x001F68), RUNE_C(0x001F6F)},
- {RUNE_C(0x001FB8), RUNE_C(0x001FBB)},
- {RUNE_C(0x001FC8), RUNE_C(0x001FCB)},
- {RUNE_C(0x001FD8), RUNE_C(0x001FDB)},
- {RUNE_C(0x001FE8), RUNE_C(0x001FEC)},
- {RUNE_C(0x001FF8), RUNE_C(0x001FFB)},
- {RUNE_C(0x002102), RUNE_C(0x002102)},
- {RUNE_C(0x002107), RUNE_C(0x002107)},
- {RUNE_C(0x00210B), RUNE_C(0x00210D)},
- {RUNE_C(0x002110), RUNE_C(0x002112)},
- {RUNE_C(0x002115), RUNE_C(0x002115)},
- {RUNE_C(0x002119), RUNE_C(0x00211D)},
- {RUNE_C(0x002124), RUNE_C(0x002124)},
- {RUNE_C(0x002126), RUNE_C(0x002126)},
- {RUNE_C(0x002128), RUNE_C(0x002128)},
- {RUNE_C(0x00212A), RUNE_C(0x00212D)},
- {RUNE_C(0x002130), RUNE_C(0x002133)},
- {RUNE_C(0x00213E), RUNE_C(0x00213F)},
- {RUNE_C(0x002145), RUNE_C(0x002145)},
- {RUNE_C(0x002160), RUNE_C(0x00216F)},
- {RUNE_C(0x002183), RUNE_C(0x002183)},
- {RUNE_C(0x0024B6), RUNE_C(0x0024CF)},
- {RUNE_C(0x002C00), RUNE_C(0x002C2F)},
- {RUNE_C(0x002C60), RUNE_C(0x002C60)},
- {RUNE_C(0x002C62), RUNE_C(0x002C64)},
- {RUNE_C(0x002C67), RUNE_C(0x002C67)},
- {RUNE_C(0x002C69), RUNE_C(0x002C69)},
- {RUNE_C(0x002C6B), RUNE_C(0x002C6B)},
- {RUNE_C(0x002C6D), RUNE_C(0x002C70)},
- {RUNE_C(0x002C72), RUNE_C(0x002C72)},
- {RUNE_C(0x002C75), RUNE_C(0x002C75)},
- {RUNE_C(0x002C7E), RUNE_C(0x002C80)},
- {RUNE_C(0x002C82), RUNE_C(0x002C82)},
- {RUNE_C(0x002C84), RUNE_C(0x002C84)},
- {RUNE_C(0x002C86), RUNE_C(0x002C86)},
- {RUNE_C(0x002C88), RUNE_C(0x002C88)},
- {RUNE_C(0x002C8A), RUNE_C(0x002C8A)},
- {RUNE_C(0x002C8C), RUNE_C(0x002C8C)},
- {RUNE_C(0x002C8E), RUNE_C(0x002C8E)},
- {RUNE_C(0x002C90), RUNE_C(0x002C90)},
- {RUNE_C(0x002C92), RUNE_C(0x002C92)},
- {RUNE_C(0x002C94), RUNE_C(0x002C94)},
- {RUNE_C(0x002C96), RUNE_C(0x002C96)},
- {RUNE_C(0x002C98), RUNE_C(0x002C98)},
- {RUNE_C(0x002C9A), RUNE_C(0x002C9A)},
- {RUNE_C(0x002C9C), RUNE_C(0x002C9C)},
- {RUNE_C(0x002C9E), RUNE_C(0x002C9E)},
- {RUNE_C(0x002CA0), RUNE_C(0x002CA0)},
- {RUNE_C(0x002CA2), RUNE_C(0x002CA2)},
- {RUNE_C(0x002CA4), RUNE_C(0x002CA4)},
- {RUNE_C(0x002CA6), RUNE_C(0x002CA6)},
- {RUNE_C(0x002CA8), RUNE_C(0x002CA8)},
- {RUNE_C(0x002CAA), RUNE_C(0x002CAA)},
- {RUNE_C(0x002CAC), RUNE_C(0x002CAC)},
- {RUNE_C(0x002CAE), RUNE_C(0x002CAE)},
- {RUNE_C(0x002CB0), RUNE_C(0x002CB0)},
- {RUNE_C(0x002CB2), RUNE_C(0x002CB2)},
- {RUNE_C(0x002CB4), RUNE_C(0x002CB4)},
- {RUNE_C(0x002CB6), RUNE_C(0x002CB6)},
- {RUNE_C(0x002CB8), RUNE_C(0x002CB8)},
- {RUNE_C(0x002CBA), RUNE_C(0x002CBA)},
- {RUNE_C(0x002CBC), RUNE_C(0x002CBC)},
- {RUNE_C(0x002CBE), RUNE_C(0x002CBE)},
- {RUNE_C(0x002CC0), RUNE_C(0x002CC0)},
- {RUNE_C(0x002CC2), RUNE_C(0x002CC2)},
- {RUNE_C(0x002CC4), RUNE_C(0x002CC4)},
- {RUNE_C(0x002CC6), RUNE_C(0x002CC6)},
- {RUNE_C(0x002CC8), RUNE_C(0x002CC8)},
- {RUNE_C(0x002CCA), RUNE_C(0x002CCA)},
- {RUNE_C(0x002CCC), RUNE_C(0x002CCC)},
- {RUNE_C(0x002CCE), RUNE_C(0x002CCE)},
- {RUNE_C(0x002CD0), RUNE_C(0x002CD0)},
- {RUNE_C(0x002CD2), RUNE_C(0x002CD2)},
- {RUNE_C(0x002CD4), RUNE_C(0x002CD4)},
- {RUNE_C(0x002CD6), RUNE_C(0x002CD6)},
- {RUNE_C(0x002CD8), RUNE_C(0x002CD8)},
- {RUNE_C(0x002CDA), RUNE_C(0x002CDA)},
- {RUNE_C(0x002CDC), RUNE_C(0x002CDC)},
- {RUNE_C(0x002CDE), RUNE_C(0x002CDE)},
- {RUNE_C(0x002CE0), RUNE_C(0x002CE0)},
- {RUNE_C(0x002CE2), RUNE_C(0x002CE2)},
- {RUNE_C(0x002CEB), RUNE_C(0x002CEB)},
- {RUNE_C(0x002CED), RUNE_C(0x002CED)},
- {RUNE_C(0x002CF2), RUNE_C(0x002CF2)},
- {RUNE_C(0x00A640), RUNE_C(0x00A640)},
- {RUNE_C(0x00A642), RUNE_C(0x00A642)},
- {RUNE_C(0x00A644), RUNE_C(0x00A644)},
- {RUNE_C(0x00A646), RUNE_C(0x00A646)},
- {RUNE_C(0x00A648), RUNE_C(0x00A648)},
- {RUNE_C(0x00A64A), RUNE_C(0x00A64A)},
- {RUNE_C(0x00A64C), RUNE_C(0x00A64C)},
- {RUNE_C(0x00A64E), RUNE_C(0x00A64E)},
- {RUNE_C(0x00A650), RUNE_C(0x00A650)},
- {RUNE_C(0x00A652), RUNE_C(0x00A652)},
- {RUNE_C(0x00A654), RUNE_C(0x00A654)},
- {RUNE_C(0x00A656), RUNE_C(0x00A656)},
- {RUNE_C(0x00A658), RUNE_C(0x00A658)},
- {RUNE_C(0x00A65A), RUNE_C(0x00A65A)},
- {RUNE_C(0x00A65C), RUNE_C(0x00A65C)},
- {RUNE_C(0x00A65E), RUNE_C(0x00A65E)},
- {RUNE_C(0x00A660), RUNE_C(0x00A660)},
- {RUNE_C(0x00A662), RUNE_C(0x00A662)},
- {RUNE_C(0x00A664), RUNE_C(0x00A664)},
- {RUNE_C(0x00A666), RUNE_C(0x00A666)},
- {RUNE_C(0x00A668), RUNE_C(0x00A668)},
- {RUNE_C(0x00A66A), RUNE_C(0x00A66A)},
- {RUNE_C(0x00A66C), RUNE_C(0x00A66C)},
- {RUNE_C(0x00A680), RUNE_C(0x00A680)},
- {RUNE_C(0x00A682), RUNE_C(0x00A682)},
- {RUNE_C(0x00A684), RUNE_C(0x00A684)},
- {RUNE_C(0x00A686), RUNE_C(0x00A686)},
- {RUNE_C(0x00A688), RUNE_C(0x00A688)},
- {RUNE_C(0x00A68A), RUNE_C(0x00A68A)},
- {RUNE_C(0x00A68C), RUNE_C(0x00A68C)},
- {RUNE_C(0x00A68E), RUNE_C(0x00A68E)},
- {RUNE_C(0x00A690), RUNE_C(0x00A690)},
- {RUNE_C(0x00A692), RUNE_C(0x00A692)},
- {RUNE_C(0x00A694), RUNE_C(0x00A694)},
- {RUNE_C(0x00A696), RUNE_C(0x00A696)},
- {RUNE_C(0x00A698), RUNE_C(0x00A698)},
- {RUNE_C(0x00A69A), RUNE_C(0x00A69A)},
- {RUNE_C(0x00A722), RUNE_C(0x00A722)},
- {RUNE_C(0x00A724), RUNE_C(0x00A724)},
- {RUNE_C(0x00A726), RUNE_C(0x00A726)},
- {RUNE_C(0x00A728), RUNE_C(0x00A728)},
- {RUNE_C(0x00A72A), RUNE_C(0x00A72A)},
- {RUNE_C(0x00A72C), RUNE_C(0x00A72C)},
- {RUNE_C(0x00A72E), RUNE_C(0x00A72E)},
- {RUNE_C(0x00A732), RUNE_C(0x00A732)},
- {RUNE_C(0x00A734), RUNE_C(0x00A734)},
- {RUNE_C(0x00A736), RUNE_C(0x00A736)},
- {RUNE_C(0x00A738), RUNE_C(0x00A738)},
- {RUNE_C(0x00A73A), RUNE_C(0x00A73A)},
- {RUNE_C(0x00A73C), RUNE_C(0x00A73C)},
- {RUNE_C(0x00A73E), RUNE_C(0x00A73E)},
- {RUNE_C(0x00A740), RUNE_C(0x00A740)},
- {RUNE_C(0x00A742), RUNE_C(0x00A742)},
- {RUNE_C(0x00A744), RUNE_C(0x00A744)},
- {RUNE_C(0x00A746), RUNE_C(0x00A746)},
- {RUNE_C(0x00A748), RUNE_C(0x00A748)},
- {RUNE_C(0x00A74A), RUNE_C(0x00A74A)},
- {RUNE_C(0x00A74C), RUNE_C(0x00A74C)},
- {RUNE_C(0x00A74E), RUNE_C(0x00A74E)},
- {RUNE_C(0x00A750), RUNE_C(0x00A750)},
- {RUNE_C(0x00A752), RUNE_C(0x00A752)},
- {RUNE_C(0x00A754), RUNE_C(0x00A754)},
- {RUNE_C(0x00A756), RUNE_C(0x00A756)},
- {RUNE_C(0x00A758), RUNE_C(0x00A758)},
- {RUNE_C(0x00A75A), RUNE_C(0x00A75A)},
- {RUNE_C(0x00A75C), RUNE_C(0x00A75C)},
- {RUNE_C(0x00A75E), RUNE_C(0x00A75E)},
- {RUNE_C(0x00A760), RUNE_C(0x00A760)},
- {RUNE_C(0x00A762), RUNE_C(0x00A762)},
- {RUNE_C(0x00A764), RUNE_C(0x00A764)},
- {RUNE_C(0x00A766), RUNE_C(0x00A766)},
- {RUNE_C(0x00A768), RUNE_C(0x00A768)},
- {RUNE_C(0x00A76A), RUNE_C(0x00A76A)},
- {RUNE_C(0x00A76C), RUNE_C(0x00A76C)},
- {RUNE_C(0x00A76E), RUNE_C(0x00A76E)},
- {RUNE_C(0x00A779), RUNE_C(0x00A779)},
- {RUNE_C(0x00A77B), RUNE_C(0x00A77B)},
- {RUNE_C(0x00A77D), RUNE_C(0x00A77E)},
- {RUNE_C(0x00A780), RUNE_C(0x00A780)},
- {RUNE_C(0x00A782), RUNE_C(0x00A782)},
- {RUNE_C(0x00A784), RUNE_C(0x00A784)},
- {RUNE_C(0x00A786), RUNE_C(0x00A786)},
- {RUNE_C(0x00A78B), RUNE_C(0x00A78B)},
- {RUNE_C(0x00A78D), RUNE_C(0x00A78D)},
- {RUNE_C(0x00A790), RUNE_C(0x00A790)},
- {RUNE_C(0x00A792), RUNE_C(0x00A792)},
- {RUNE_C(0x00A796), RUNE_C(0x00A796)},
- {RUNE_C(0x00A798), RUNE_C(0x00A798)},
- {RUNE_C(0x00A79A), RUNE_C(0x00A79A)},
- {RUNE_C(0x00A79C), RUNE_C(0x00A79C)},
- {RUNE_C(0x00A79E), RUNE_C(0x00A79E)},
- {RUNE_C(0x00A7A0), RUNE_C(0x00A7A0)},
- {RUNE_C(0x00A7A2), RUNE_C(0x00A7A2)},
- {RUNE_C(0x00A7A4), RUNE_C(0x00A7A4)},
- {RUNE_C(0x00A7A6), RUNE_C(0x00A7A6)},
- {RUNE_C(0x00A7A8), RUNE_C(0x00A7A8)},
- {RUNE_C(0x00A7AA), RUNE_C(0x00A7AE)},
- {RUNE_C(0x00A7B0), RUNE_C(0x00A7B4)},
- {RUNE_C(0x00A7B6), RUNE_C(0x00A7B6)},
- {RUNE_C(0x00A7B8), RUNE_C(0x00A7B8)},
- {RUNE_C(0x00A7BA), RUNE_C(0x00A7BA)},
- {RUNE_C(0x00A7BC), RUNE_C(0x00A7BC)},
- {RUNE_C(0x00A7BE), RUNE_C(0x00A7BE)},
- {RUNE_C(0x00A7C0), RUNE_C(0x00A7C0)},
- {RUNE_C(0x00A7C2), RUNE_C(0x00A7C2)},
- {RUNE_C(0x00A7C4), RUNE_C(0x00A7C7)},
- {RUNE_C(0x00A7C9), RUNE_C(0x00A7C9)},
- {RUNE_C(0x00A7D0), RUNE_C(0x00A7D0)},
- {RUNE_C(0x00A7D6), RUNE_C(0x00A7D6)},
- {RUNE_C(0x00A7D8), RUNE_C(0x00A7D8)},
- {RUNE_C(0x00A7F5), RUNE_C(0x00A7F5)},
- {RUNE_C(0x00FF21), RUNE_C(0x00FF3A)},
- {RUNE_C(0x010400), RUNE_C(0x010427)},
- {RUNE_C(0x0104B0), RUNE_C(0x0104D3)},
- {RUNE_C(0x010570), RUNE_C(0x01057A)},
- {RUNE_C(0x01057C), RUNE_C(0x01058A)},
- {RUNE_C(0x01058C), RUNE_C(0x010592)},
- {RUNE_C(0x010594), RUNE_C(0x010595)},
- {RUNE_C(0x010C80), RUNE_C(0x010CB2)},
- {RUNE_C(0x0118A0), RUNE_C(0x0118BF)},
- {RUNE_C(0x016E40), RUNE_C(0x016E5F)},
- {RUNE_C(0x01D400), RUNE_C(0x01D419)},
- {RUNE_C(0x01D434), RUNE_C(0x01D44D)},
- {RUNE_C(0x01D468), RUNE_C(0x01D481)},
- {RUNE_C(0x01D49C), RUNE_C(0x01D49C)},
- {RUNE_C(0x01D49E), RUNE_C(0x01D49F)},
- {RUNE_C(0x01D4A2), RUNE_C(0x01D4A2)},
- {RUNE_C(0x01D4A5), RUNE_C(0x01D4A6)},
- {RUNE_C(0x01D4A9), RUNE_C(0x01D4AC)},
- {RUNE_C(0x01D4AE), RUNE_C(0x01D4B5)},
- {RUNE_C(0x01D4D0), RUNE_C(0x01D4E9)},
- {RUNE_C(0x01D504), RUNE_C(0x01D505)},
- {RUNE_C(0x01D507), RUNE_C(0x01D50A)},
- {RUNE_C(0x01D50D), RUNE_C(0x01D514)},
- {RUNE_C(0x01D516), RUNE_C(0x01D51C)},
- {RUNE_C(0x01D538), RUNE_C(0x01D539)},
- {RUNE_C(0x01D53B), RUNE_C(0x01D53E)},
- {RUNE_C(0x01D540), RUNE_C(0x01D544)},
- {RUNE_C(0x01D546), RUNE_C(0x01D546)},
- {RUNE_C(0x01D54A), RUNE_C(0x01D550)},
- {RUNE_C(0x01D56C), RUNE_C(0x01D585)},
- {RUNE_C(0x01D5A0), RUNE_C(0x01D5B9)},
- {RUNE_C(0x01D5D4), RUNE_C(0x01D5ED)},
- {RUNE_C(0x01D608), RUNE_C(0x01D621)},
- {RUNE_C(0x01D63C), RUNE_C(0x01D655)},
- {RUNE_C(0x01D670), RUNE_C(0x01D689)},
- {RUNE_C(0x01D6A8), RUNE_C(0x01D6C0)},
- {RUNE_C(0x01D6E2), RUNE_C(0x01D6FA)},
- {RUNE_C(0x01D71C), RUNE_C(0x01D734)},
- {RUNE_C(0x01D756), RUNE_C(0x01D76E)},
- {RUNE_C(0x01D790), RUNE_C(0x01D7A8)},
- {RUNE_C(0x01D7CA), RUNE_C(0x01D7CA)},
- {RUNE_C(0x01E900), RUNE_C(0x01E921)},
- {RUNE_C(0x01F130), RUNE_C(0x01F149)},
- {RUNE_C(0x01F150), RUNE_C(0x01F169)},
- {RUNE_C(0x01F170), RUNE_C(0x01F189)},
+static constexpr unsigned char stage2[][32] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFE, 0xFF, 0xFF, 0x07, 0xFE, 0xFF, 0xFF, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
+ 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xDF, 0xFF, 0xF7, 0xFF, 0xF3, 0xFF, 0xB3,
+ 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0x0F, 0xFC,
+ 0xFF, 0xFF, 0xDF, 0x1A, 0x6B, 0x9F, 0x26, 0x20,
+ 0x8D, 0x1F, 0x04, 0x60, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCF, 0xB8,
+ 0x40, 0xD7, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xEF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
+ 0xFF, 0xFF, 0x7F, 0x00, 0xFE, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xBF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x3F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22,
+ 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x4F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x3F, 0x3F, 0xFF, 0xAA, 0xFF, 0xFF, 0xFF, 0x3F,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x5F,
+ 0xDC, 0x1F, 0xCF, 0x0F, 0xFF, 0x1F, 0xDC, 0x1F},
+ {0x84, 0x38, 0x27, 0x3E, 0x50, 0x3D, 0x0F, 0xC0,
+ 0x20, 0x40, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, 0xC0,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x78, 0x0C, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x20, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFC, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFE,
+ 0xFF, 0x38, 0xDF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xC3, 0x03, 0x00, 0x00, 0x60, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x07,
+ 0xFE, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF7,
+ 0xFF, 0xF7, 0xB7, 0xFF, 0xFB, 0xFF, 0xFB, 0x1B,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xF0, 0xFF,
+ 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
+ 0x03, 0x00, 0x00, 0xD0, 0x64, 0xDE, 0x3F, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00},
+ {0xB0, 0xE7, 0xDF, 0x1F, 0x00, 0x00, 0x00, 0x7B,
+ 0x5F, 0xFC, 0x01, 0x00, 0x00, 0xF0, 0xFF, 0xFF,
+ 0x3F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x03,
+ 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x3F, 0x00, 0x00},
+ {0x00, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0xF0,
+ 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
+ 0x01, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x07},
+ {0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x1F, 0x00,
+ 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x7F, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00,
+ 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF,
+ 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_upper(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 256]], ch % 256);
}
diff --git a/lib/unicode/prop/uprop_is_vs.c b/lib/unicode/prop/uprop_is_vs.c
index 3133d6b..4f0f9bb 100644
--- a/lib/unicode/prop/uprop_is_vs.c
+++ b/lib/unicode/prop/uprop_is_vs.c
@@ -1,25 +1,184 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x00180B), RUNE_C(0x00180D)},
- {RUNE_C(0x00180F), RUNE_C(0x00180F)},
- {RUNE_C(0x00FE00), RUNE_C(0x00FE0F)},
- {RUNE_C(0x0E0100), RUNE_C(0x0E01EF)},
+static constexpr uint8_t stage1[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
+static constexpr unsigned char stage2[][64] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00},
+};
bool
uprop_is_vs(rune ch)
{
- return mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 512]], ch % 512);
}
diff --git a/lib/unicode/prop/uprop_is_wspace.c b/lib/unicode/prop/uprop_is_wspace.c
index c4644a2..716b09b 100644
--- a/lib/unicode/prop/uprop_is_wspace.c
+++ b/lib/unicode/prop/uprop_is_wspace.c
@@ -1,34 +1,192 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x3E, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1,
+ 3, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x001680), RUNE_C(0x001680)},
- {RUNE_C(0x002000), RUNE_C(0x00200A)},
- {RUNE_C(0x002028), RUNE_C(0x002029)},
- {RUNE_C(0x00202F), RUNE_C(0x00202F)},
- {RUNE_C(0x00205F), RUNE_C(0x00205F)},
- {RUNE_C(0x003000), RUNE_C(0x003000)},
+static constexpr unsigned char stage2[][64] = {
+ {0x00, 0x3E, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xC7, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_wspace(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 512]], ch % 512);
}
diff --git a/lib/unicode/prop/uprop_is_xidc.c b/lib/unicode/prop/uprop_is_xidc.c
index 5503caa..12600f8 100644
--- a/lib/unicode/prop/uprop_is_xidc.c
+++ b/lib/unicode/prop/uprop_is_xidc.c
@@ -1,794 +1,952 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
- 0xFE, 0xFF, 0xFF, 0x87, 0xFE, 0xFF, 0xFF, 0x07,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xA0, 0x04,
- 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 2, 2, 2, 3, 4, 5, 2, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 2, 2, 31, 32, 33, 34, 35, 2, 2, 2, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 2, 2, 2, 2, 50, 51,
+ 52, 53, 54, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 2, 57, 58, 59, 56, 56, 56, 56,
+ 60, 61, 62, 63, 56, 56, 56, 56, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 64, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 65, 2, 2, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 78,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 2, 2, 79, 80, 81, 82, 83, 2, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 56, 94, 95, 96, 2, 97, 98, 99, 2, 2, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 56, 56, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, 122, 56, 123, 124, 56, 125, 126, 127, 128, 56,
+ 129, 130, 131, 132, 133, 134, 56, 56, 135, 136, 137, 138, 56, 139, 140, 141,
+ 2, 2, 2, 2, 2, 2, 2, 142, 143, 2, 144, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 145,
+ 2, 2, 2, 2, 2, 2, 2, 2, 146, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 2, 2, 2, 2, 147, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 2, 2, 2, 2, 148, 149, 150, 151, 56, 56, 56, 56, 152, 56, 153, 154,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 155,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 156, 55, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 157,
+ 2, 2, 158, 2, 2, 159, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 160, 161, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 162, 56,
+ 56, 56, 163, 164, 165, 56, 56, 56, 166, 167, 168, 2, 2, 169, 170, 171,
+ 56, 56, 56, 56, 172, 173, 56, 56, 56, 56, 56, 56, 56, 56, 174, 56,
+ 175, 176, 177, 56, 56, 178, 56, 56, 56, 179, 56, 56, 56, 56, 56, 180,
+ 2, 181, 182, 56, 56, 56, 56, 56, 56, 56, 56, 56, 183, 184, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 185, 56, 56, 56, 56, 56, 56, 56, 56,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 186, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 187, 2,
+ 188, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 189, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 190, 2, 2, 2, 2, 191, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 2, 2, 2, 2, 192, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 193, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 194, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 2, 195, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000100), RUNE_C(0x0002C1)},
- {RUNE_C(0x0002C6), RUNE_C(0x0002D1)},
- {RUNE_C(0x0002E0), RUNE_C(0x0002E4)},
- {RUNE_C(0x0002EC), RUNE_C(0x0002EC)},
- {RUNE_C(0x0002EE), RUNE_C(0x0002EE)},
- {RUNE_C(0x000300), RUNE_C(0x000374)},
- {RUNE_C(0x000376), RUNE_C(0x000377)},
- {RUNE_C(0x00037B), RUNE_C(0x00037D)},
- {RUNE_C(0x00037F), RUNE_C(0x00037F)},
- {RUNE_C(0x000386), RUNE_C(0x00038A)},
- {RUNE_C(0x00038C), RUNE_C(0x00038C)},
- {RUNE_C(0x00038E), RUNE_C(0x0003A1)},
- {RUNE_C(0x0003A3), RUNE_C(0x0003F5)},
- {RUNE_C(0x0003F7), RUNE_C(0x000481)},
- {RUNE_C(0x000483), RUNE_C(0x000487)},
- {RUNE_C(0x00048A), RUNE_C(0x00052F)},
- {RUNE_C(0x000531), RUNE_C(0x000556)},
- {RUNE_C(0x000559), RUNE_C(0x000559)},
- {RUNE_C(0x000560), RUNE_C(0x000588)},
- {RUNE_C(0x000591), RUNE_C(0x0005BD)},
- {RUNE_C(0x0005BF), RUNE_C(0x0005BF)},
- {RUNE_C(0x0005C1), RUNE_C(0x0005C2)},
- {RUNE_C(0x0005C4), RUNE_C(0x0005C5)},
- {RUNE_C(0x0005C7), RUNE_C(0x0005C7)},
- {RUNE_C(0x0005D0), RUNE_C(0x0005EA)},
- {RUNE_C(0x0005EF), RUNE_C(0x0005F2)},
- {RUNE_C(0x000610), RUNE_C(0x00061A)},
- {RUNE_C(0x000620), RUNE_C(0x000669)},
- {RUNE_C(0x00066E), RUNE_C(0x0006D3)},
- {RUNE_C(0x0006D5), RUNE_C(0x0006DC)},
- {RUNE_C(0x0006DF), RUNE_C(0x0006E8)},
- {RUNE_C(0x0006EA), RUNE_C(0x0006FC)},
- {RUNE_C(0x0006FF), RUNE_C(0x0006FF)},
- {RUNE_C(0x000710), RUNE_C(0x00074A)},
- {RUNE_C(0x00074D), RUNE_C(0x0007B1)},
- {RUNE_C(0x0007C0), RUNE_C(0x0007F5)},
- {RUNE_C(0x0007FA), RUNE_C(0x0007FA)},
- {RUNE_C(0x0007FD), RUNE_C(0x0007FD)},
- {RUNE_C(0x000800), RUNE_C(0x00082D)},
- {RUNE_C(0x000840), RUNE_C(0x00085B)},
- {RUNE_C(0x000860), RUNE_C(0x00086A)},
- {RUNE_C(0x000870), RUNE_C(0x000887)},
- {RUNE_C(0x000889), RUNE_C(0x00088E)},
- {RUNE_C(0x000898), RUNE_C(0x0008E1)},
- {RUNE_C(0x0008E3), RUNE_C(0x000963)},
- {RUNE_C(0x000966), RUNE_C(0x00096F)},
- {RUNE_C(0x000971), RUNE_C(0x000983)},
- {RUNE_C(0x000985), RUNE_C(0x00098C)},
- {RUNE_C(0x00098F), RUNE_C(0x000990)},
- {RUNE_C(0x000993), RUNE_C(0x0009A8)},
- {RUNE_C(0x0009AA), RUNE_C(0x0009B0)},
- {RUNE_C(0x0009B2), RUNE_C(0x0009B2)},
- {RUNE_C(0x0009B6), RUNE_C(0x0009B9)},
- {RUNE_C(0x0009BC), RUNE_C(0x0009C4)},
- {RUNE_C(0x0009C7), RUNE_C(0x0009C8)},
- {RUNE_C(0x0009CB), RUNE_C(0x0009CE)},
- {RUNE_C(0x0009D7), RUNE_C(0x0009D7)},
- {RUNE_C(0x0009DC), RUNE_C(0x0009DD)},
- {RUNE_C(0x0009DF), RUNE_C(0x0009E3)},
- {RUNE_C(0x0009E6), RUNE_C(0x0009F1)},
- {RUNE_C(0x0009FC), RUNE_C(0x0009FC)},
- {RUNE_C(0x0009FE), RUNE_C(0x0009FE)},
- {RUNE_C(0x000A01), RUNE_C(0x000A03)},
- {RUNE_C(0x000A05), RUNE_C(0x000A0A)},
- {RUNE_C(0x000A0F), RUNE_C(0x000A10)},
- {RUNE_C(0x000A13), RUNE_C(0x000A28)},
- {RUNE_C(0x000A2A), RUNE_C(0x000A30)},
- {RUNE_C(0x000A32), RUNE_C(0x000A33)},
- {RUNE_C(0x000A35), RUNE_C(0x000A36)},
- {RUNE_C(0x000A38), RUNE_C(0x000A39)},
- {RUNE_C(0x000A3C), RUNE_C(0x000A3C)},
- {RUNE_C(0x000A3E), RUNE_C(0x000A42)},
- {RUNE_C(0x000A47), RUNE_C(0x000A48)},
- {RUNE_C(0x000A4B), RUNE_C(0x000A4D)},
- {RUNE_C(0x000A51), RUNE_C(0x000A51)},
- {RUNE_C(0x000A59), RUNE_C(0x000A5C)},
- {RUNE_C(0x000A5E), RUNE_C(0x000A5E)},
- {RUNE_C(0x000A66), RUNE_C(0x000A75)},
- {RUNE_C(0x000A81), RUNE_C(0x000A83)},
- {RUNE_C(0x000A85), RUNE_C(0x000A8D)},
- {RUNE_C(0x000A8F), RUNE_C(0x000A91)},
- {RUNE_C(0x000A93), RUNE_C(0x000AA8)},
- {RUNE_C(0x000AAA), RUNE_C(0x000AB0)},
- {RUNE_C(0x000AB2), RUNE_C(0x000AB3)},
- {RUNE_C(0x000AB5), RUNE_C(0x000AB9)},
- {RUNE_C(0x000ABC), RUNE_C(0x000AC5)},
- {RUNE_C(0x000AC7), RUNE_C(0x000AC9)},
- {RUNE_C(0x000ACB), RUNE_C(0x000ACD)},
- {RUNE_C(0x000AD0), RUNE_C(0x000AD0)},
- {RUNE_C(0x000AE0), RUNE_C(0x000AE3)},
- {RUNE_C(0x000AE6), RUNE_C(0x000AEF)},
- {RUNE_C(0x000AF9), RUNE_C(0x000AFF)},
- {RUNE_C(0x000B01), RUNE_C(0x000B03)},
- {RUNE_C(0x000B05), RUNE_C(0x000B0C)},
- {RUNE_C(0x000B0F), RUNE_C(0x000B10)},
- {RUNE_C(0x000B13), RUNE_C(0x000B28)},
- {RUNE_C(0x000B2A), RUNE_C(0x000B30)},
- {RUNE_C(0x000B32), RUNE_C(0x000B33)},
- {RUNE_C(0x000B35), RUNE_C(0x000B39)},
- {RUNE_C(0x000B3C), RUNE_C(0x000B44)},
- {RUNE_C(0x000B47), RUNE_C(0x000B48)},
- {RUNE_C(0x000B4B), RUNE_C(0x000B4D)},
- {RUNE_C(0x000B55), RUNE_C(0x000B57)},
- {RUNE_C(0x000B5C), RUNE_C(0x000B5D)},
- {RUNE_C(0x000B5F), RUNE_C(0x000B63)},
- {RUNE_C(0x000B66), RUNE_C(0x000B6F)},
- {RUNE_C(0x000B71), RUNE_C(0x000B71)},
- {RUNE_C(0x000B82), RUNE_C(0x000B83)},
- {RUNE_C(0x000B85), RUNE_C(0x000B8A)},
- {RUNE_C(0x000B8E), RUNE_C(0x000B90)},
- {RUNE_C(0x000B92), RUNE_C(0x000B95)},
- {RUNE_C(0x000B99), RUNE_C(0x000B9A)},
- {RUNE_C(0x000B9C), RUNE_C(0x000B9C)},
- {RUNE_C(0x000B9E), RUNE_C(0x000B9F)},
- {RUNE_C(0x000BA3), RUNE_C(0x000BA4)},
- {RUNE_C(0x000BA8), RUNE_C(0x000BAA)},
- {RUNE_C(0x000BAE), RUNE_C(0x000BB9)},
- {RUNE_C(0x000BBE), RUNE_C(0x000BC2)},
- {RUNE_C(0x000BC6), RUNE_C(0x000BC8)},
- {RUNE_C(0x000BCA), RUNE_C(0x000BCD)},
- {RUNE_C(0x000BD0), RUNE_C(0x000BD0)},
- {RUNE_C(0x000BD7), RUNE_C(0x000BD7)},
- {RUNE_C(0x000BE6), RUNE_C(0x000BEF)},
- {RUNE_C(0x000C00), RUNE_C(0x000C0C)},
- {RUNE_C(0x000C0E), RUNE_C(0x000C10)},
- {RUNE_C(0x000C12), RUNE_C(0x000C28)},
- {RUNE_C(0x000C2A), RUNE_C(0x000C39)},
- {RUNE_C(0x000C3C), RUNE_C(0x000C44)},
- {RUNE_C(0x000C46), RUNE_C(0x000C48)},
- {RUNE_C(0x000C4A), RUNE_C(0x000C4D)},
- {RUNE_C(0x000C55), RUNE_C(0x000C56)},
- {RUNE_C(0x000C58), RUNE_C(0x000C5A)},
- {RUNE_C(0x000C5D), RUNE_C(0x000C5D)},
- {RUNE_C(0x000C60), RUNE_C(0x000C63)},
- {RUNE_C(0x000C66), RUNE_C(0x000C6F)},
- {RUNE_C(0x000C80), RUNE_C(0x000C83)},
- {RUNE_C(0x000C85), RUNE_C(0x000C8C)},
- {RUNE_C(0x000C8E), RUNE_C(0x000C90)},
- {RUNE_C(0x000C92), RUNE_C(0x000CA8)},
- {RUNE_C(0x000CAA), RUNE_C(0x000CB3)},
- {RUNE_C(0x000CB5), RUNE_C(0x000CB9)},
- {RUNE_C(0x000CBC), RUNE_C(0x000CC4)},
- {RUNE_C(0x000CC6), RUNE_C(0x000CC8)},
- {RUNE_C(0x000CCA), RUNE_C(0x000CCD)},
- {RUNE_C(0x000CD5), RUNE_C(0x000CD6)},
- {RUNE_C(0x000CDD), RUNE_C(0x000CDE)},
- {RUNE_C(0x000CE0), RUNE_C(0x000CE3)},
- {RUNE_C(0x000CE6), RUNE_C(0x000CEF)},
- {RUNE_C(0x000CF1), RUNE_C(0x000CF3)},
- {RUNE_C(0x000D00), RUNE_C(0x000D0C)},
- {RUNE_C(0x000D0E), RUNE_C(0x000D10)},
- {RUNE_C(0x000D12), RUNE_C(0x000D44)},
- {RUNE_C(0x000D46), RUNE_C(0x000D48)},
- {RUNE_C(0x000D4A), RUNE_C(0x000D4E)},
- {RUNE_C(0x000D54), RUNE_C(0x000D57)},
- {RUNE_C(0x000D5F), RUNE_C(0x000D63)},
- {RUNE_C(0x000D66), RUNE_C(0x000D6F)},
- {RUNE_C(0x000D7A), RUNE_C(0x000D7F)},
- {RUNE_C(0x000D81), RUNE_C(0x000D83)},
- {RUNE_C(0x000D85), RUNE_C(0x000D96)},
- {RUNE_C(0x000D9A), RUNE_C(0x000DB1)},
- {RUNE_C(0x000DB3), RUNE_C(0x000DBB)},
- {RUNE_C(0x000DBD), RUNE_C(0x000DBD)},
- {RUNE_C(0x000DC0), RUNE_C(0x000DC6)},
- {RUNE_C(0x000DCA), RUNE_C(0x000DCA)},
- {RUNE_C(0x000DCF), RUNE_C(0x000DD4)},
- {RUNE_C(0x000DD6), RUNE_C(0x000DD6)},
- {RUNE_C(0x000DD8), RUNE_C(0x000DDF)},
- {RUNE_C(0x000DE6), RUNE_C(0x000DEF)},
- {RUNE_C(0x000DF2), RUNE_C(0x000DF3)},
- {RUNE_C(0x000E01), RUNE_C(0x000E3A)},
- {RUNE_C(0x000E40), RUNE_C(0x000E4E)},
- {RUNE_C(0x000E50), RUNE_C(0x000E59)},
- {RUNE_C(0x000E81), RUNE_C(0x000E82)},
- {RUNE_C(0x000E84), RUNE_C(0x000E84)},
- {RUNE_C(0x000E86), RUNE_C(0x000E8A)},
- {RUNE_C(0x000E8C), RUNE_C(0x000EA3)},
- {RUNE_C(0x000EA5), RUNE_C(0x000EA5)},
- {RUNE_C(0x000EA7), RUNE_C(0x000EBD)},
- {RUNE_C(0x000EC0), RUNE_C(0x000EC4)},
- {RUNE_C(0x000EC6), RUNE_C(0x000EC6)},
- {RUNE_C(0x000EC8), RUNE_C(0x000ECE)},
- {RUNE_C(0x000ED0), RUNE_C(0x000ED9)},
- {RUNE_C(0x000EDC), RUNE_C(0x000EDF)},
- {RUNE_C(0x000F00), RUNE_C(0x000F00)},
- {RUNE_C(0x000F18), RUNE_C(0x000F19)},
- {RUNE_C(0x000F20), RUNE_C(0x000F29)},
- {RUNE_C(0x000F35), RUNE_C(0x000F35)},
- {RUNE_C(0x000F37), RUNE_C(0x000F37)},
- {RUNE_C(0x000F39), RUNE_C(0x000F39)},
- {RUNE_C(0x000F3E), RUNE_C(0x000F47)},
- {RUNE_C(0x000F49), RUNE_C(0x000F6C)},
- {RUNE_C(0x000F71), RUNE_C(0x000F84)},
- {RUNE_C(0x000F86), RUNE_C(0x000F97)},
- {RUNE_C(0x000F99), RUNE_C(0x000FBC)},
- {RUNE_C(0x000FC6), RUNE_C(0x000FC6)},
- {RUNE_C(0x001000), RUNE_C(0x001049)},
- {RUNE_C(0x001050), RUNE_C(0x00109D)},
- {RUNE_C(0x0010A0), RUNE_C(0x0010C5)},
- {RUNE_C(0x0010C7), RUNE_C(0x0010C7)},
- {RUNE_C(0x0010CD), RUNE_C(0x0010CD)},
- {RUNE_C(0x0010D0), RUNE_C(0x0010FA)},
- {RUNE_C(0x0010FC), RUNE_C(0x001248)},
- {RUNE_C(0x00124A), RUNE_C(0x00124D)},
- {RUNE_C(0x001250), RUNE_C(0x001256)},
- {RUNE_C(0x001258), RUNE_C(0x001258)},
- {RUNE_C(0x00125A), RUNE_C(0x00125D)},
- {RUNE_C(0x001260), RUNE_C(0x001288)},
- {RUNE_C(0x00128A), RUNE_C(0x00128D)},
- {RUNE_C(0x001290), RUNE_C(0x0012B0)},
- {RUNE_C(0x0012B2), RUNE_C(0x0012B5)},
- {RUNE_C(0x0012B8), RUNE_C(0x0012BE)},
- {RUNE_C(0x0012C0), RUNE_C(0x0012C0)},
- {RUNE_C(0x0012C2), RUNE_C(0x0012C5)},
- {RUNE_C(0x0012C8), RUNE_C(0x0012D6)},
- {RUNE_C(0x0012D8), RUNE_C(0x001310)},
- {RUNE_C(0x001312), RUNE_C(0x001315)},
- {RUNE_C(0x001318), RUNE_C(0x00135A)},
- {RUNE_C(0x00135D), RUNE_C(0x00135F)},
- {RUNE_C(0x001369), RUNE_C(0x001371)},
- {RUNE_C(0x001380), RUNE_C(0x00138F)},
- {RUNE_C(0x0013A0), RUNE_C(0x0013F5)},
- {RUNE_C(0x0013F8), RUNE_C(0x0013FD)},
- {RUNE_C(0x001401), RUNE_C(0x00166C)},
- {RUNE_C(0x00166F), RUNE_C(0x00167F)},
- {RUNE_C(0x001681), RUNE_C(0x00169A)},
- {RUNE_C(0x0016A0), RUNE_C(0x0016EA)},
- {RUNE_C(0x0016EE), RUNE_C(0x0016F8)},
- {RUNE_C(0x001700), RUNE_C(0x001715)},
- {RUNE_C(0x00171F), RUNE_C(0x001734)},
- {RUNE_C(0x001740), RUNE_C(0x001753)},
- {RUNE_C(0x001760), RUNE_C(0x00176C)},
- {RUNE_C(0x00176E), RUNE_C(0x001770)},
- {RUNE_C(0x001772), RUNE_C(0x001773)},
- {RUNE_C(0x001780), RUNE_C(0x0017D3)},
- {RUNE_C(0x0017D7), RUNE_C(0x0017D7)},
- {RUNE_C(0x0017DC), RUNE_C(0x0017DD)},
- {RUNE_C(0x0017E0), RUNE_C(0x0017E9)},
- {RUNE_C(0x00180B), RUNE_C(0x00180D)},
- {RUNE_C(0x00180F), RUNE_C(0x001819)},
- {RUNE_C(0x001820), RUNE_C(0x001878)},
- {RUNE_C(0x001880), RUNE_C(0x0018AA)},
- {RUNE_C(0x0018B0), RUNE_C(0x0018F5)},
- {RUNE_C(0x001900), RUNE_C(0x00191E)},
- {RUNE_C(0x001920), RUNE_C(0x00192B)},
- {RUNE_C(0x001930), RUNE_C(0x00193B)},
- {RUNE_C(0x001946), RUNE_C(0x00196D)},
- {RUNE_C(0x001970), RUNE_C(0x001974)},
- {RUNE_C(0x001980), RUNE_C(0x0019AB)},
- {RUNE_C(0x0019B0), RUNE_C(0x0019C9)},
- {RUNE_C(0x0019D0), RUNE_C(0x0019DA)},
- {RUNE_C(0x001A00), RUNE_C(0x001A1B)},
- {RUNE_C(0x001A20), RUNE_C(0x001A5E)},
- {RUNE_C(0x001A60), RUNE_C(0x001A7C)},
- {RUNE_C(0x001A7F), RUNE_C(0x001A89)},
- {RUNE_C(0x001A90), RUNE_C(0x001A99)},
- {RUNE_C(0x001AA7), RUNE_C(0x001AA7)},
- {RUNE_C(0x001AB0), RUNE_C(0x001ABD)},
- {RUNE_C(0x001ABF), RUNE_C(0x001ACE)},
- {RUNE_C(0x001B00), RUNE_C(0x001B4C)},
- {RUNE_C(0x001B50), RUNE_C(0x001B59)},
- {RUNE_C(0x001B6B), RUNE_C(0x001B73)},
- {RUNE_C(0x001B80), RUNE_C(0x001BF3)},
- {RUNE_C(0x001C00), RUNE_C(0x001C37)},
- {RUNE_C(0x001C40), RUNE_C(0x001C49)},
- {RUNE_C(0x001C4D), RUNE_C(0x001C7D)},
- {RUNE_C(0x001C80), RUNE_C(0x001C88)},
- {RUNE_C(0x001C90), RUNE_C(0x001CBA)},
- {RUNE_C(0x001CBD), RUNE_C(0x001CBF)},
- {RUNE_C(0x001CD0), RUNE_C(0x001CD2)},
- {RUNE_C(0x001CD4), RUNE_C(0x001CFA)},
- {RUNE_C(0x001D00), RUNE_C(0x001F15)},
- {RUNE_C(0x001F18), RUNE_C(0x001F1D)},
- {RUNE_C(0x001F20), RUNE_C(0x001F45)},
- {RUNE_C(0x001F48), RUNE_C(0x001F4D)},
- {RUNE_C(0x001F50), RUNE_C(0x001F57)},
- {RUNE_C(0x001F59), RUNE_C(0x001F59)},
- {RUNE_C(0x001F5B), RUNE_C(0x001F5B)},
- {RUNE_C(0x001F5D), RUNE_C(0x001F5D)},
- {RUNE_C(0x001F5F), RUNE_C(0x001F7D)},
- {RUNE_C(0x001F80), RUNE_C(0x001FB4)},
- {RUNE_C(0x001FB6), RUNE_C(0x001FBC)},
- {RUNE_C(0x001FBE), RUNE_C(0x001FBE)},
- {RUNE_C(0x001FC2), RUNE_C(0x001FC4)},
- {RUNE_C(0x001FC6), RUNE_C(0x001FCC)},
- {RUNE_C(0x001FD0), RUNE_C(0x001FD3)},
- {RUNE_C(0x001FD6), RUNE_C(0x001FDB)},
- {RUNE_C(0x001FE0), RUNE_C(0x001FEC)},
- {RUNE_C(0x001FF2), RUNE_C(0x001FF4)},
- {RUNE_C(0x001FF6), RUNE_C(0x001FFC)},
- {RUNE_C(0x00200C), RUNE_C(0x00200D)},
- {RUNE_C(0x00203F), RUNE_C(0x002040)},
- {RUNE_C(0x002054), RUNE_C(0x002054)},
- {RUNE_C(0x002071), RUNE_C(0x002071)},
- {RUNE_C(0x00207F), RUNE_C(0x00207F)},
- {RUNE_C(0x002090), RUNE_C(0x00209C)},
- {RUNE_C(0x0020D0), RUNE_C(0x0020DC)},
- {RUNE_C(0x0020E1), RUNE_C(0x0020E1)},
- {RUNE_C(0x0020E5), RUNE_C(0x0020F0)},
- {RUNE_C(0x002102), RUNE_C(0x002102)},
- {RUNE_C(0x002107), RUNE_C(0x002107)},
- {RUNE_C(0x00210A), RUNE_C(0x002113)},
- {RUNE_C(0x002115), RUNE_C(0x002115)},
- {RUNE_C(0x002118), RUNE_C(0x00211D)},
- {RUNE_C(0x002124), RUNE_C(0x002124)},
- {RUNE_C(0x002126), RUNE_C(0x002126)},
- {RUNE_C(0x002128), RUNE_C(0x002128)},
- {RUNE_C(0x00212A), RUNE_C(0x002139)},
- {RUNE_C(0x00213C), RUNE_C(0x00213F)},
- {RUNE_C(0x002145), RUNE_C(0x002149)},
- {RUNE_C(0x00214E), RUNE_C(0x00214E)},
- {RUNE_C(0x002160), RUNE_C(0x002188)},
- {RUNE_C(0x002C00), RUNE_C(0x002CE4)},
- {RUNE_C(0x002CEB), RUNE_C(0x002CF3)},
- {RUNE_C(0x002D00), RUNE_C(0x002D25)},
- {RUNE_C(0x002D27), RUNE_C(0x002D27)},
- {RUNE_C(0x002D2D), RUNE_C(0x002D2D)},
- {RUNE_C(0x002D30), RUNE_C(0x002D67)},
- {RUNE_C(0x002D6F), RUNE_C(0x002D6F)},
- {RUNE_C(0x002D7F), RUNE_C(0x002D96)},
- {RUNE_C(0x002DA0), RUNE_C(0x002DA6)},
- {RUNE_C(0x002DA8), RUNE_C(0x002DAE)},
- {RUNE_C(0x002DB0), RUNE_C(0x002DB6)},
- {RUNE_C(0x002DB8), RUNE_C(0x002DBE)},
- {RUNE_C(0x002DC0), RUNE_C(0x002DC6)},
- {RUNE_C(0x002DC8), RUNE_C(0x002DCE)},
- {RUNE_C(0x002DD0), RUNE_C(0x002DD6)},
- {RUNE_C(0x002DD8), RUNE_C(0x002DDE)},
- {RUNE_C(0x002DE0), RUNE_C(0x002DFF)},
- {RUNE_C(0x003005), RUNE_C(0x003007)},
- {RUNE_C(0x003021), RUNE_C(0x00302F)},
- {RUNE_C(0x003031), RUNE_C(0x003035)},
- {RUNE_C(0x003038), RUNE_C(0x00303C)},
- {RUNE_C(0x003041), RUNE_C(0x003096)},
- {RUNE_C(0x003099), RUNE_C(0x00309A)},
- {RUNE_C(0x00309D), RUNE_C(0x00309F)},
- {RUNE_C(0x0030A1), RUNE_C(0x0030FF)},
- {RUNE_C(0x003105), RUNE_C(0x00312F)},
- {RUNE_C(0x003131), RUNE_C(0x00318E)},
- {RUNE_C(0x0031A0), RUNE_C(0x0031BF)},
- {RUNE_C(0x0031F0), RUNE_C(0x0031FF)},
- {RUNE_C(0x003400), RUNE_C(0x004DBF)},
- {RUNE_C(0x004E00), RUNE_C(0x00A48C)},
- {RUNE_C(0x00A4D0), RUNE_C(0x00A4FD)},
- {RUNE_C(0x00A500), RUNE_C(0x00A60C)},
- {RUNE_C(0x00A610), RUNE_C(0x00A62B)},
- {RUNE_C(0x00A640), RUNE_C(0x00A66F)},
- {RUNE_C(0x00A674), RUNE_C(0x00A67D)},
- {RUNE_C(0x00A67F), RUNE_C(0x00A6F1)},
- {RUNE_C(0x00A717), RUNE_C(0x00A71F)},
- {RUNE_C(0x00A722), RUNE_C(0x00A788)},
- {RUNE_C(0x00A78B), RUNE_C(0x00A7CA)},
- {RUNE_C(0x00A7D0), RUNE_C(0x00A7D1)},
- {RUNE_C(0x00A7D3), RUNE_C(0x00A7D3)},
- {RUNE_C(0x00A7D5), RUNE_C(0x00A7D9)},
- {RUNE_C(0x00A7F2), RUNE_C(0x00A827)},
- {RUNE_C(0x00A82C), RUNE_C(0x00A82C)},
- {RUNE_C(0x00A840), RUNE_C(0x00A873)},
- {RUNE_C(0x00A880), RUNE_C(0x00A8C5)},
- {RUNE_C(0x00A8D0), RUNE_C(0x00A8D9)},
- {RUNE_C(0x00A8E0), RUNE_C(0x00A8F7)},
- {RUNE_C(0x00A8FB), RUNE_C(0x00A8FB)},
- {RUNE_C(0x00A8FD), RUNE_C(0x00A92D)},
- {RUNE_C(0x00A930), RUNE_C(0x00A953)},
- {RUNE_C(0x00A960), RUNE_C(0x00A97C)},
- {RUNE_C(0x00A980), RUNE_C(0x00A9C0)},
- {RUNE_C(0x00A9CF), RUNE_C(0x00A9D9)},
- {RUNE_C(0x00A9E0), RUNE_C(0x00A9FE)},
- {RUNE_C(0x00AA00), RUNE_C(0x00AA36)},
- {RUNE_C(0x00AA40), RUNE_C(0x00AA4D)},
- {RUNE_C(0x00AA50), RUNE_C(0x00AA59)},
- {RUNE_C(0x00AA60), RUNE_C(0x00AA76)},
- {RUNE_C(0x00AA7A), RUNE_C(0x00AAC2)},
- {RUNE_C(0x00AADB), RUNE_C(0x00AADD)},
- {RUNE_C(0x00AAE0), RUNE_C(0x00AAEF)},
- {RUNE_C(0x00AAF2), RUNE_C(0x00AAF6)},
- {RUNE_C(0x00AB01), RUNE_C(0x00AB06)},
- {RUNE_C(0x00AB09), RUNE_C(0x00AB0E)},
- {RUNE_C(0x00AB11), RUNE_C(0x00AB16)},
- {RUNE_C(0x00AB20), RUNE_C(0x00AB26)},
- {RUNE_C(0x00AB28), RUNE_C(0x00AB2E)},
- {RUNE_C(0x00AB30), RUNE_C(0x00AB5A)},
- {RUNE_C(0x00AB5C), RUNE_C(0x00AB69)},
- {RUNE_C(0x00AB70), RUNE_C(0x00ABEA)},
- {RUNE_C(0x00ABEC), RUNE_C(0x00ABED)},
- {RUNE_C(0x00ABF0), RUNE_C(0x00ABF9)},
- {RUNE_C(0x00AC00), RUNE_C(0x00D7A3)},
- {RUNE_C(0x00D7B0), RUNE_C(0x00D7C6)},
- {RUNE_C(0x00D7CB), RUNE_C(0x00D7FB)},
- {RUNE_C(0x00F900), RUNE_C(0x00FA6D)},
- {RUNE_C(0x00FA70), RUNE_C(0x00FAD9)},
- {RUNE_C(0x00FB00), RUNE_C(0x00FB06)},
- {RUNE_C(0x00FB13), RUNE_C(0x00FB17)},
- {RUNE_C(0x00FB1D), RUNE_C(0x00FB28)},
- {RUNE_C(0x00FB2A), RUNE_C(0x00FB36)},
- {RUNE_C(0x00FB38), RUNE_C(0x00FB3C)},
- {RUNE_C(0x00FB3E), RUNE_C(0x00FB3E)},
- {RUNE_C(0x00FB40), RUNE_C(0x00FB41)},
- {RUNE_C(0x00FB43), RUNE_C(0x00FB44)},
- {RUNE_C(0x00FB46), RUNE_C(0x00FBB1)},
- {RUNE_C(0x00FBD3), RUNE_C(0x00FC5D)},
- {RUNE_C(0x00FC64), RUNE_C(0x00FD3D)},
- {RUNE_C(0x00FD50), RUNE_C(0x00FD8F)},
- {RUNE_C(0x00FD92), RUNE_C(0x00FDC7)},
- {RUNE_C(0x00FDF0), RUNE_C(0x00FDF9)},
- {RUNE_C(0x00FE00), RUNE_C(0x00FE0F)},
- {RUNE_C(0x00FE20), RUNE_C(0x00FE2F)},
- {RUNE_C(0x00FE33), RUNE_C(0x00FE34)},
- {RUNE_C(0x00FE4D), RUNE_C(0x00FE4F)},
- {RUNE_C(0x00FE71), RUNE_C(0x00FE71)},
- {RUNE_C(0x00FE73), RUNE_C(0x00FE73)},
- {RUNE_C(0x00FE77), RUNE_C(0x00FE77)},
- {RUNE_C(0x00FE79), RUNE_C(0x00FE79)},
- {RUNE_C(0x00FE7B), RUNE_C(0x00FE7B)},
- {RUNE_C(0x00FE7D), RUNE_C(0x00FE7D)},
- {RUNE_C(0x00FE7F), RUNE_C(0x00FEFC)},
- {RUNE_C(0x00FF10), RUNE_C(0x00FF19)},
- {RUNE_C(0x00FF21), RUNE_C(0x00FF3A)},
- {RUNE_C(0x00FF3F), RUNE_C(0x00FF3F)},
- {RUNE_C(0x00FF41), RUNE_C(0x00FF5A)},
- {RUNE_C(0x00FF65), RUNE_C(0x00FFBE)},
- {RUNE_C(0x00FFC2), RUNE_C(0x00FFC7)},
- {RUNE_C(0x00FFCA), RUNE_C(0x00FFCF)},
- {RUNE_C(0x00FFD2), RUNE_C(0x00FFD7)},
- {RUNE_C(0x00FFDA), RUNE_C(0x00FFDC)},
- {RUNE_C(0x010000), RUNE_C(0x01000B)},
- {RUNE_C(0x01000D), RUNE_C(0x010026)},
- {RUNE_C(0x010028), RUNE_C(0x01003A)},
- {RUNE_C(0x01003C), RUNE_C(0x01003D)},
- {RUNE_C(0x01003F), RUNE_C(0x01004D)},
- {RUNE_C(0x010050), RUNE_C(0x01005D)},
- {RUNE_C(0x010080), RUNE_C(0x0100FA)},
- {RUNE_C(0x010140), RUNE_C(0x010174)},
- {RUNE_C(0x0101FD), RUNE_C(0x0101FD)},
- {RUNE_C(0x010280), RUNE_C(0x01029C)},
- {RUNE_C(0x0102A0), RUNE_C(0x0102D0)},
- {RUNE_C(0x0102E0), RUNE_C(0x0102E0)},
- {RUNE_C(0x010300), RUNE_C(0x01031F)},
- {RUNE_C(0x01032D), RUNE_C(0x01034A)},
- {RUNE_C(0x010350), RUNE_C(0x01037A)},
- {RUNE_C(0x010380), RUNE_C(0x01039D)},
- {RUNE_C(0x0103A0), RUNE_C(0x0103C3)},
- {RUNE_C(0x0103C8), RUNE_C(0x0103CF)},
- {RUNE_C(0x0103D1), RUNE_C(0x0103D5)},
- {RUNE_C(0x010400), RUNE_C(0x01049D)},
- {RUNE_C(0x0104A0), RUNE_C(0x0104A9)},
- {RUNE_C(0x0104B0), RUNE_C(0x0104D3)},
- {RUNE_C(0x0104D8), RUNE_C(0x0104FB)},
- {RUNE_C(0x010500), RUNE_C(0x010527)},
- {RUNE_C(0x010530), RUNE_C(0x010563)},
- {RUNE_C(0x010570), RUNE_C(0x01057A)},
- {RUNE_C(0x01057C), RUNE_C(0x01058A)},
- {RUNE_C(0x01058C), RUNE_C(0x010592)},
- {RUNE_C(0x010594), RUNE_C(0x010595)},
- {RUNE_C(0x010597), RUNE_C(0x0105A1)},
- {RUNE_C(0x0105A3), RUNE_C(0x0105B1)},
- {RUNE_C(0x0105B3), RUNE_C(0x0105B9)},
- {RUNE_C(0x0105BB), RUNE_C(0x0105BC)},
- {RUNE_C(0x010600), RUNE_C(0x010736)},
- {RUNE_C(0x010740), RUNE_C(0x010755)},
- {RUNE_C(0x010760), RUNE_C(0x010767)},
- {RUNE_C(0x010780), RUNE_C(0x010785)},
- {RUNE_C(0x010787), RUNE_C(0x0107B0)},
- {RUNE_C(0x0107B2), RUNE_C(0x0107BA)},
- {RUNE_C(0x010800), RUNE_C(0x010805)},
- {RUNE_C(0x010808), RUNE_C(0x010808)},
- {RUNE_C(0x01080A), RUNE_C(0x010835)},
- {RUNE_C(0x010837), RUNE_C(0x010838)},
- {RUNE_C(0x01083C), RUNE_C(0x01083C)},
- {RUNE_C(0x01083F), RUNE_C(0x010855)},
- {RUNE_C(0x010860), RUNE_C(0x010876)},
- {RUNE_C(0x010880), RUNE_C(0x01089E)},
- {RUNE_C(0x0108E0), RUNE_C(0x0108F2)},
- {RUNE_C(0x0108F4), RUNE_C(0x0108F5)},
- {RUNE_C(0x010900), RUNE_C(0x010915)},
- {RUNE_C(0x010920), RUNE_C(0x010939)},
- {RUNE_C(0x010980), RUNE_C(0x0109B7)},
- {RUNE_C(0x0109BE), RUNE_C(0x0109BF)},
- {RUNE_C(0x010A00), RUNE_C(0x010A03)},
- {RUNE_C(0x010A05), RUNE_C(0x010A06)},
- {RUNE_C(0x010A0C), RUNE_C(0x010A13)},
- {RUNE_C(0x010A15), RUNE_C(0x010A17)},
- {RUNE_C(0x010A19), RUNE_C(0x010A35)},
- {RUNE_C(0x010A38), RUNE_C(0x010A3A)},
- {RUNE_C(0x010A3F), RUNE_C(0x010A3F)},
- {RUNE_C(0x010A60), RUNE_C(0x010A7C)},
- {RUNE_C(0x010A80), RUNE_C(0x010A9C)},
- {RUNE_C(0x010AC0), RUNE_C(0x010AC7)},
- {RUNE_C(0x010AC9), RUNE_C(0x010AE6)},
- {RUNE_C(0x010B00), RUNE_C(0x010B35)},
- {RUNE_C(0x010B40), RUNE_C(0x010B55)},
- {RUNE_C(0x010B60), RUNE_C(0x010B72)},
- {RUNE_C(0x010B80), RUNE_C(0x010B91)},
- {RUNE_C(0x010C00), RUNE_C(0x010C48)},
- {RUNE_C(0x010C80), RUNE_C(0x010CB2)},
- {RUNE_C(0x010CC0), RUNE_C(0x010CF2)},
- {RUNE_C(0x010D00), RUNE_C(0x010D27)},
- {RUNE_C(0x010D30), RUNE_C(0x010D39)},
- {RUNE_C(0x010E80), RUNE_C(0x010EA9)},
- {RUNE_C(0x010EAB), RUNE_C(0x010EAC)},
- {RUNE_C(0x010EB0), RUNE_C(0x010EB1)},
- {RUNE_C(0x010EFD), RUNE_C(0x010F1C)},
- {RUNE_C(0x010F27), RUNE_C(0x010F27)},
- {RUNE_C(0x010F30), RUNE_C(0x010F50)},
- {RUNE_C(0x010F70), RUNE_C(0x010F85)},
- {RUNE_C(0x010FB0), RUNE_C(0x010FC4)},
- {RUNE_C(0x010FE0), RUNE_C(0x010FF6)},
- {RUNE_C(0x011000), RUNE_C(0x011046)},
- {RUNE_C(0x011066), RUNE_C(0x011075)},
- {RUNE_C(0x01107F), RUNE_C(0x0110BA)},
- {RUNE_C(0x0110C2), RUNE_C(0x0110C2)},
- {RUNE_C(0x0110D0), RUNE_C(0x0110E8)},
- {RUNE_C(0x0110F0), RUNE_C(0x0110F9)},
- {RUNE_C(0x011100), RUNE_C(0x011134)},
- {RUNE_C(0x011136), RUNE_C(0x01113F)},
- {RUNE_C(0x011144), RUNE_C(0x011147)},
- {RUNE_C(0x011150), RUNE_C(0x011173)},
- {RUNE_C(0x011176), RUNE_C(0x011176)},
- {RUNE_C(0x011180), RUNE_C(0x0111C4)},
- {RUNE_C(0x0111C9), RUNE_C(0x0111CC)},
- {RUNE_C(0x0111CE), RUNE_C(0x0111DA)},
- {RUNE_C(0x0111DC), RUNE_C(0x0111DC)},
- {RUNE_C(0x011200), RUNE_C(0x011211)},
- {RUNE_C(0x011213), RUNE_C(0x011237)},
- {RUNE_C(0x01123E), RUNE_C(0x011241)},
- {RUNE_C(0x011280), RUNE_C(0x011286)},
- {RUNE_C(0x011288), RUNE_C(0x011288)},
- {RUNE_C(0x01128A), RUNE_C(0x01128D)},
- {RUNE_C(0x01128F), RUNE_C(0x01129D)},
- {RUNE_C(0x01129F), RUNE_C(0x0112A8)},
- {RUNE_C(0x0112B0), RUNE_C(0x0112EA)},
- {RUNE_C(0x0112F0), RUNE_C(0x0112F9)},
- {RUNE_C(0x011300), RUNE_C(0x011303)},
- {RUNE_C(0x011305), RUNE_C(0x01130C)},
- {RUNE_C(0x01130F), RUNE_C(0x011310)},
- {RUNE_C(0x011313), RUNE_C(0x011328)},
- {RUNE_C(0x01132A), RUNE_C(0x011330)},
- {RUNE_C(0x011332), RUNE_C(0x011333)},
- {RUNE_C(0x011335), RUNE_C(0x011339)},
- {RUNE_C(0x01133B), RUNE_C(0x011344)},
- {RUNE_C(0x011347), RUNE_C(0x011348)},
- {RUNE_C(0x01134B), RUNE_C(0x01134D)},
- {RUNE_C(0x011350), RUNE_C(0x011350)},
- {RUNE_C(0x011357), RUNE_C(0x011357)},
- {RUNE_C(0x01135D), RUNE_C(0x011363)},
- {RUNE_C(0x011366), RUNE_C(0x01136C)},
- {RUNE_C(0x011370), RUNE_C(0x011374)},
- {RUNE_C(0x011400), RUNE_C(0x01144A)},
- {RUNE_C(0x011450), RUNE_C(0x011459)},
- {RUNE_C(0x01145E), RUNE_C(0x011461)},
- {RUNE_C(0x011480), RUNE_C(0x0114C5)},
- {RUNE_C(0x0114C7), RUNE_C(0x0114C7)},
- {RUNE_C(0x0114D0), RUNE_C(0x0114D9)},
- {RUNE_C(0x011580), RUNE_C(0x0115B5)},
- {RUNE_C(0x0115B8), RUNE_C(0x0115C0)},
- {RUNE_C(0x0115D8), RUNE_C(0x0115DD)},
- {RUNE_C(0x011600), RUNE_C(0x011640)},
- {RUNE_C(0x011644), RUNE_C(0x011644)},
- {RUNE_C(0x011650), RUNE_C(0x011659)},
- {RUNE_C(0x011680), RUNE_C(0x0116B8)},
- {RUNE_C(0x0116C0), RUNE_C(0x0116C9)},
- {RUNE_C(0x011700), RUNE_C(0x01171A)},
- {RUNE_C(0x01171D), RUNE_C(0x01172B)},
- {RUNE_C(0x011730), RUNE_C(0x011739)},
- {RUNE_C(0x011740), RUNE_C(0x011746)},
- {RUNE_C(0x011800), RUNE_C(0x01183A)},
- {RUNE_C(0x0118A0), RUNE_C(0x0118E9)},
- {RUNE_C(0x0118FF), RUNE_C(0x011906)},
- {RUNE_C(0x011909), RUNE_C(0x011909)},
- {RUNE_C(0x01190C), RUNE_C(0x011913)},
- {RUNE_C(0x011915), RUNE_C(0x011916)},
- {RUNE_C(0x011918), RUNE_C(0x011935)},
- {RUNE_C(0x011937), RUNE_C(0x011938)},
- {RUNE_C(0x01193B), RUNE_C(0x011943)},
- {RUNE_C(0x011950), RUNE_C(0x011959)},
- {RUNE_C(0x0119A0), RUNE_C(0x0119A7)},
- {RUNE_C(0x0119AA), RUNE_C(0x0119D7)},
- {RUNE_C(0x0119DA), RUNE_C(0x0119E1)},
- {RUNE_C(0x0119E3), RUNE_C(0x0119E4)},
- {RUNE_C(0x011A00), RUNE_C(0x011A3E)},
- {RUNE_C(0x011A47), RUNE_C(0x011A47)},
- {RUNE_C(0x011A50), RUNE_C(0x011A99)},
- {RUNE_C(0x011A9D), RUNE_C(0x011A9D)},
- {RUNE_C(0x011AB0), RUNE_C(0x011AF8)},
- {RUNE_C(0x011C00), RUNE_C(0x011C08)},
- {RUNE_C(0x011C0A), RUNE_C(0x011C36)},
- {RUNE_C(0x011C38), RUNE_C(0x011C40)},
- {RUNE_C(0x011C50), RUNE_C(0x011C59)},
- {RUNE_C(0x011C72), RUNE_C(0x011C8F)},
- {RUNE_C(0x011C92), RUNE_C(0x011CA7)},
- {RUNE_C(0x011CA9), RUNE_C(0x011CB6)},
- {RUNE_C(0x011D00), RUNE_C(0x011D06)},
- {RUNE_C(0x011D08), RUNE_C(0x011D09)},
- {RUNE_C(0x011D0B), RUNE_C(0x011D36)},
- {RUNE_C(0x011D3A), RUNE_C(0x011D3A)},
- {RUNE_C(0x011D3C), RUNE_C(0x011D3D)},
- {RUNE_C(0x011D3F), RUNE_C(0x011D47)},
- {RUNE_C(0x011D50), RUNE_C(0x011D59)},
- {RUNE_C(0x011D60), RUNE_C(0x011D65)},
- {RUNE_C(0x011D67), RUNE_C(0x011D68)},
- {RUNE_C(0x011D6A), RUNE_C(0x011D8E)},
- {RUNE_C(0x011D90), RUNE_C(0x011D91)},
- {RUNE_C(0x011D93), RUNE_C(0x011D98)},
- {RUNE_C(0x011DA0), RUNE_C(0x011DA9)},
- {RUNE_C(0x011EE0), RUNE_C(0x011EF6)},
- {RUNE_C(0x011F00), RUNE_C(0x011F10)},
- {RUNE_C(0x011F12), RUNE_C(0x011F3A)},
- {RUNE_C(0x011F3E), RUNE_C(0x011F42)},
- {RUNE_C(0x011F50), RUNE_C(0x011F59)},
- {RUNE_C(0x011FB0), RUNE_C(0x011FB0)},
- {RUNE_C(0x012000), RUNE_C(0x012399)},
- {RUNE_C(0x012400), RUNE_C(0x01246E)},
- {RUNE_C(0x012480), RUNE_C(0x012543)},
- {RUNE_C(0x012F90), RUNE_C(0x012FF0)},
- {RUNE_C(0x013000), RUNE_C(0x01342F)},
- {RUNE_C(0x013440), RUNE_C(0x013455)},
- {RUNE_C(0x014400), RUNE_C(0x014646)},
- {RUNE_C(0x016800), RUNE_C(0x016A38)},
- {RUNE_C(0x016A40), RUNE_C(0x016A5E)},
- {RUNE_C(0x016A60), RUNE_C(0x016A69)},
- {RUNE_C(0x016A70), RUNE_C(0x016ABE)},
- {RUNE_C(0x016AC0), RUNE_C(0x016AC9)},
- {RUNE_C(0x016AD0), RUNE_C(0x016AED)},
- {RUNE_C(0x016AF0), RUNE_C(0x016AF4)},
- {RUNE_C(0x016B00), RUNE_C(0x016B36)},
- {RUNE_C(0x016B40), RUNE_C(0x016B43)},
- {RUNE_C(0x016B50), RUNE_C(0x016B59)},
- {RUNE_C(0x016B63), RUNE_C(0x016B77)},
- {RUNE_C(0x016B7D), RUNE_C(0x016B8F)},
- {RUNE_C(0x016E40), RUNE_C(0x016E7F)},
- {RUNE_C(0x016F00), RUNE_C(0x016F4A)},
- {RUNE_C(0x016F4F), RUNE_C(0x016F87)},
- {RUNE_C(0x016F8F), RUNE_C(0x016F9F)},
- {RUNE_C(0x016FE0), RUNE_C(0x016FE1)},
- {RUNE_C(0x016FE3), RUNE_C(0x016FE4)},
- {RUNE_C(0x016FF0), RUNE_C(0x016FF1)},
- {RUNE_C(0x017000), RUNE_C(0x0187F7)},
- {RUNE_C(0x018800), RUNE_C(0x018CD5)},
- {RUNE_C(0x018D00), RUNE_C(0x018D08)},
- {RUNE_C(0x01AFF0), RUNE_C(0x01AFF3)},
- {RUNE_C(0x01AFF5), RUNE_C(0x01AFFB)},
- {RUNE_C(0x01AFFD), RUNE_C(0x01AFFE)},
- {RUNE_C(0x01B000), RUNE_C(0x01B122)},
- {RUNE_C(0x01B132), RUNE_C(0x01B132)},
- {RUNE_C(0x01B150), RUNE_C(0x01B152)},
- {RUNE_C(0x01B155), RUNE_C(0x01B155)},
- {RUNE_C(0x01B164), RUNE_C(0x01B167)},
- {RUNE_C(0x01B170), RUNE_C(0x01B2FB)},
- {RUNE_C(0x01BC00), RUNE_C(0x01BC6A)},
- {RUNE_C(0x01BC70), RUNE_C(0x01BC7C)},
- {RUNE_C(0x01BC80), RUNE_C(0x01BC88)},
- {RUNE_C(0x01BC90), RUNE_C(0x01BC99)},
- {RUNE_C(0x01BC9D), RUNE_C(0x01BC9E)},
- {RUNE_C(0x01CF00), RUNE_C(0x01CF2D)},
- {RUNE_C(0x01CF30), RUNE_C(0x01CF46)},
- {RUNE_C(0x01D165), RUNE_C(0x01D169)},
- {RUNE_C(0x01D16D), RUNE_C(0x01D172)},
- {RUNE_C(0x01D17B), RUNE_C(0x01D182)},
- {RUNE_C(0x01D185), RUNE_C(0x01D18B)},
- {RUNE_C(0x01D1AA), RUNE_C(0x01D1AD)},
- {RUNE_C(0x01D242), RUNE_C(0x01D244)},
- {RUNE_C(0x01D400), RUNE_C(0x01D454)},
- {RUNE_C(0x01D456), RUNE_C(0x01D49C)},
- {RUNE_C(0x01D49E), RUNE_C(0x01D49F)},
- {RUNE_C(0x01D4A2), RUNE_C(0x01D4A2)},
- {RUNE_C(0x01D4A5), RUNE_C(0x01D4A6)},
- {RUNE_C(0x01D4A9), RUNE_C(0x01D4AC)},
- {RUNE_C(0x01D4AE), RUNE_C(0x01D4B9)},
- {RUNE_C(0x01D4BB), RUNE_C(0x01D4BB)},
- {RUNE_C(0x01D4BD), RUNE_C(0x01D4C3)},
- {RUNE_C(0x01D4C5), RUNE_C(0x01D505)},
- {RUNE_C(0x01D507), RUNE_C(0x01D50A)},
- {RUNE_C(0x01D50D), RUNE_C(0x01D514)},
- {RUNE_C(0x01D516), RUNE_C(0x01D51C)},
- {RUNE_C(0x01D51E), RUNE_C(0x01D539)},
- {RUNE_C(0x01D53B), RUNE_C(0x01D53E)},
- {RUNE_C(0x01D540), RUNE_C(0x01D544)},
- {RUNE_C(0x01D546), RUNE_C(0x01D546)},
- {RUNE_C(0x01D54A), RUNE_C(0x01D550)},
- {RUNE_C(0x01D552), RUNE_C(0x01D6A5)},
- {RUNE_C(0x01D6A8), RUNE_C(0x01D6C0)},
- {RUNE_C(0x01D6C2), RUNE_C(0x01D6DA)},
- {RUNE_C(0x01D6DC), RUNE_C(0x01D6FA)},
- {RUNE_C(0x01D6FC), RUNE_C(0x01D714)},
- {RUNE_C(0x01D716), RUNE_C(0x01D734)},
- {RUNE_C(0x01D736), RUNE_C(0x01D74E)},
- {RUNE_C(0x01D750), RUNE_C(0x01D76E)},
- {RUNE_C(0x01D770), RUNE_C(0x01D788)},
- {RUNE_C(0x01D78A), RUNE_C(0x01D7A8)},
- {RUNE_C(0x01D7AA), RUNE_C(0x01D7C2)},
- {RUNE_C(0x01D7C4), RUNE_C(0x01D7CB)},
- {RUNE_C(0x01D7CE), RUNE_C(0x01D7FF)},
- {RUNE_C(0x01DA00), RUNE_C(0x01DA36)},
- {RUNE_C(0x01DA3B), RUNE_C(0x01DA6C)},
- {RUNE_C(0x01DA75), RUNE_C(0x01DA75)},
- {RUNE_C(0x01DA84), RUNE_C(0x01DA84)},
- {RUNE_C(0x01DA9B), RUNE_C(0x01DA9F)},
- {RUNE_C(0x01DAA1), RUNE_C(0x01DAAF)},
- {RUNE_C(0x01DF00), RUNE_C(0x01DF1E)},
- {RUNE_C(0x01DF25), RUNE_C(0x01DF2A)},
- {RUNE_C(0x01E000), RUNE_C(0x01E006)},
- {RUNE_C(0x01E008), RUNE_C(0x01E018)},
- {RUNE_C(0x01E01B), RUNE_C(0x01E021)},
- {RUNE_C(0x01E023), RUNE_C(0x01E024)},
- {RUNE_C(0x01E026), RUNE_C(0x01E02A)},
- {RUNE_C(0x01E030), RUNE_C(0x01E06D)},
- {RUNE_C(0x01E08F), RUNE_C(0x01E08F)},
- {RUNE_C(0x01E100), RUNE_C(0x01E12C)},
- {RUNE_C(0x01E130), RUNE_C(0x01E13D)},
- {RUNE_C(0x01E140), RUNE_C(0x01E149)},
- {RUNE_C(0x01E14E), RUNE_C(0x01E14E)},
- {RUNE_C(0x01E290), RUNE_C(0x01E2AE)},
- {RUNE_C(0x01E2C0), RUNE_C(0x01E2F9)},
- {RUNE_C(0x01E4D0), RUNE_C(0x01E4F9)},
- {RUNE_C(0x01E7E0), RUNE_C(0x01E7E6)},
- {RUNE_C(0x01E7E8), RUNE_C(0x01E7EB)},
- {RUNE_C(0x01E7ED), RUNE_C(0x01E7EE)},
- {RUNE_C(0x01E7F0), RUNE_C(0x01E7FE)},
- {RUNE_C(0x01E800), RUNE_C(0x01E8C4)},
- {RUNE_C(0x01E8D0), RUNE_C(0x01E8D6)},
- {RUNE_C(0x01E900), RUNE_C(0x01E94B)},
- {RUNE_C(0x01E950), RUNE_C(0x01E959)},
- {RUNE_C(0x01EE00), RUNE_C(0x01EE03)},
- {RUNE_C(0x01EE05), RUNE_C(0x01EE1F)},
- {RUNE_C(0x01EE21), RUNE_C(0x01EE22)},
- {RUNE_C(0x01EE24), RUNE_C(0x01EE24)},
- {RUNE_C(0x01EE27), RUNE_C(0x01EE27)},
- {RUNE_C(0x01EE29), RUNE_C(0x01EE32)},
- {RUNE_C(0x01EE34), RUNE_C(0x01EE37)},
- {RUNE_C(0x01EE39), RUNE_C(0x01EE39)},
- {RUNE_C(0x01EE3B), RUNE_C(0x01EE3B)},
- {RUNE_C(0x01EE42), RUNE_C(0x01EE42)},
- {RUNE_C(0x01EE47), RUNE_C(0x01EE47)},
- {RUNE_C(0x01EE49), RUNE_C(0x01EE49)},
- {RUNE_C(0x01EE4B), RUNE_C(0x01EE4B)},
- {RUNE_C(0x01EE4D), RUNE_C(0x01EE4F)},
- {RUNE_C(0x01EE51), RUNE_C(0x01EE52)},
- {RUNE_C(0x01EE54), RUNE_C(0x01EE54)},
- {RUNE_C(0x01EE57), RUNE_C(0x01EE57)},
- {RUNE_C(0x01EE59), RUNE_C(0x01EE59)},
- {RUNE_C(0x01EE5B), RUNE_C(0x01EE5B)},
- {RUNE_C(0x01EE5D), RUNE_C(0x01EE5D)},
- {RUNE_C(0x01EE5F), RUNE_C(0x01EE5F)},
- {RUNE_C(0x01EE61), RUNE_C(0x01EE62)},
- {RUNE_C(0x01EE64), RUNE_C(0x01EE64)},
- {RUNE_C(0x01EE67), RUNE_C(0x01EE6A)},
- {RUNE_C(0x01EE6C), RUNE_C(0x01EE72)},
- {RUNE_C(0x01EE74), RUNE_C(0x01EE77)},
- {RUNE_C(0x01EE79), RUNE_C(0x01EE7C)},
- {RUNE_C(0x01EE7E), RUNE_C(0x01EE7E)},
- {RUNE_C(0x01EE80), RUNE_C(0x01EE89)},
- {RUNE_C(0x01EE8B), RUNE_C(0x01EE9B)},
- {RUNE_C(0x01EEA1), RUNE_C(0x01EEA3)},
- {RUNE_C(0x01EEA5), RUNE_C(0x01EEA9)},
- {RUNE_C(0x01EEAB), RUNE_C(0x01EEBB)},
- {RUNE_C(0x01FBF0), RUNE_C(0x01FBF9)},
- {RUNE_C(0x020000), RUNE_C(0x02A6DF)},
- {RUNE_C(0x02A700), RUNE_C(0x02B739)},
- {RUNE_C(0x02B740), RUNE_C(0x02B81D)},
- {RUNE_C(0x02B820), RUNE_C(0x02CEA1)},
- {RUNE_C(0x02CEB0), RUNE_C(0x02EBE0)},
- {RUNE_C(0x02EBF0), RUNE_C(0x02EE5D)},
- {RUNE_C(0x02F800), RUNE_C(0x02FA1D)},
- {RUNE_C(0x030000), RUNE_C(0x03134A)},
- {RUNE_C(0x031350), RUNE_C(0x0323AF)},
- {RUNE_C(0x0E0100), RUNE_C(0x0E01EF)},
+static constexpr unsigned char stage2[][16] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
+ 0xFE, 0xFF, 0xFF, 0x87, 0xFE, 0xFF, 0xFF, 0x07},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xA0, 0x04,
+ 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xC3, 0xFF, 0x03, 0x00, 0x1F, 0x50, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xB8},
+ {0xC0, 0xD7, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF},
+ {0xFB, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
+ 0xFF, 0xFF, 0x7F, 0x02, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x01, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF,
+ 0xB6, 0x00, 0xFF, 0xFF, 0xFF, 0x87, 0x07, 0x00},
+ {0x00, 0x00, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xEF, 0x9F, 0xFF, 0xFD, 0xFF, 0x9F},
+ {0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x24},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0x07, 0xFF, 0xFF},
+ {0xFF, 0x7E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0xFF},
+ {0xEF, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xC5, 0xF3,
+ 0x9F, 0x79, 0x80, 0xB0, 0xCF, 0xFF, 0x03, 0x50},
+ {0xEE, 0x87, 0xF9, 0xFF, 0xFF, 0xFD, 0x6D, 0xD3,
+ 0x87, 0x39, 0x02, 0x5E, 0xC0, 0xFF, 0x3F, 0x00},
+ {0xEE, 0xBF, 0xFB, 0xFF, 0xFF, 0xFD, 0xED, 0xF3,
+ 0xBF, 0x3B, 0x01, 0x00, 0xCF, 0xFF, 0x00, 0xFE},
+ {0xEE, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xED, 0xF3,
+ 0x9F, 0x39, 0xE0, 0xB0, 0xCF, 0xFF, 0x02, 0x00},
+ {0xEC, 0xC7, 0x3D, 0xD6, 0x18, 0xC7, 0xFF, 0xC3,
+ 0xC7, 0x3D, 0x81, 0x00, 0xC0, 0xFF, 0x00, 0x00},
+ {0xFF, 0xDF, 0xFD, 0xFF, 0xFF, 0xFD, 0xFF, 0xF3,
+ 0xDF, 0x3D, 0x60, 0x27, 0xCF, 0xFF, 0x00, 0x00},
+ {0xEF, 0xDF, 0xFD, 0xFF, 0xFF, 0xFD, 0xEF, 0xF3,
+ 0xDF, 0x3D, 0x60, 0x60, 0xCF, 0xFF, 0x0E, 0x00},
+ {0xFF, 0xDF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xDF, 0x7D, 0xF0, 0x80, 0xCF, 0xFF, 0x00, 0xFC},
+ {0xEE, 0xFF, 0x7F, 0xFC, 0xFF, 0xFF, 0xFB, 0x2F,
+ 0x7F, 0x84, 0x5F, 0xFF, 0xC0, 0xFF, 0x0C, 0x00},
+ {0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07,
+ 0xFF, 0x7F, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0xD6, 0xF7, 0xFF, 0xFF, 0xAF, 0xFF, 0xFF, 0x3F,
+ 0x5F, 0x7F, 0xFF, 0xF3, 0x00, 0x00, 0x00, 0x00},
+ {0x01, 0x00, 0x00, 0x03, 0xFF, 0x03, 0xA0, 0xC2,
+ 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x1F, 0xFE, 0xFF},
+ {0xDF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x1F,
+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xBF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x3D, 0x7F, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x7F,
+ 0x3D, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xE7, 0x00, 0xFE, 0x03, 0x00},
+ {0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x3F},
+ {0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF},
+ {0xFE, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xFF, 0x01},
+ {0xFF, 0xFF, 0x3F, 0x80, 0xFF, 0xFF, 0x1F, 0x00,
+ 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xDF, 0x0D, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x8F, 0x30, 0xFF, 0x03, 0x00, 0x00},
+ {0x00, 0xB8, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0x0F, 0xFF, 0x0F,
+ 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF,
+ 0xFF, 0x03, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x9F},
+ {0xFF, 0x03, 0xFF, 0x03, 0x80, 0x00, 0xFF, 0xBF,
+ 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x1F, 0xFF, 0x03, 0x00, 0xF8, 0x0F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
+ 0xFF, 0xE3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F},
+ {0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7,
+ 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0x07},
+ {0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x3F, 0x3F, 0xFF, 0xAA, 0xFF, 0xFF, 0xFF, 0x3F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x5F,
+ 0xDC, 0x1F, 0xCF, 0x0F, 0xFF, 0x1F, 0xDC, 0x1F},
+ {0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x80},
+ {0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0x1F, 0xE2, 0xFF, 0x01, 0x00},
+ {0x84, 0xFC, 0x2F, 0x3F, 0x50, 0xFD, 0xFF, 0xF3,
+ 0xE0, 0x43, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xF8, 0x0F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x20, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x80},
+ {0xFF, 0xFF, 0x7F, 0x00, 0x7F, 0x7F, 0x7F, 0x7F,
+ 0x7F, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xE0, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x3E, 0x1F,
+ 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0x7F, 0xE6, 0xFE, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F},
+ {0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xBF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00},
+ {0x00, 0x00, 0x80, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xEB, 0x03, 0x00, 0x00, 0xFC, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x3F, 0x00, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xE8},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0x1F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x01, 0x80, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0x7F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00,
+ 0xFF, 0x3F, 0xFF, 0x03, 0xFF, 0xFF, 0x7F, 0xFC},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x07, 0x00, 0x00, 0x38, 0xFF, 0xFF, 0x7C, 0x00},
+ {0x7E, 0x7E, 0x7E, 0x00, 0x7F, 0x7F, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0x03, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x37, 0xFF, 0x03},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xFF,
+ 0x7F, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0x00, 0xF8, 0xE0, 0xFF, 0xFD, 0x7F, 0x5F,
+ 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00,
+ 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x3F, 0xF0, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03},
+ {0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0x00,
+ 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xAA},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F},
+ {0x00, 0x00, 0xFF, 0x03, 0xFE, 0xFF, 0xFF, 0x87,
+ 0xFE, 0xFF, 0xFF, 0x07, 0xE0, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
+ 0xFC, 0xFC, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xEF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xB7,
+ 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20},
+ {0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xE0, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x0F, 0xFF, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0x03, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xF7},
+ {0xFF, 0xF7, 0xB7, 0xFF, 0xFB, 0xFF, 0xFB, 0x1B,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00,
+ 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0x00, 0x00, 0x00},
+ {0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x3F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x91,
+ 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF, 0x7F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x37, 0x00},
+ {0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF, 0xFF, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x6F, 0xF0, 0xEF, 0xFE, 0xFF, 0xFF, 0x3F, 0x87,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x1F},
+ {0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFE, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00,
+ 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF, 0x07, 0x00},
+ {0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0},
+ {0xFF, 0xFF, 0xFF, 0x1F, 0x80, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF},
+ {0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0x1F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x7F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x3F, 0x80},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07,
+ 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0x03},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF,
+ 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x1F, 0xDE, 0xFF, 0x17, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0xBD, 0xFF, 0xBF, 0xFF, 0x01, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0x03},
+ {0xEF, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xED, 0xFB,
+ 0x9F, 0x39, 0x81, 0xE0, 0xCF, 0x1F, 0x1F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xFF, 0xC3, 0x03, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xBF, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF,
+ 0x01, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x11, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
+ 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0x0F, 0xFF, 0x03,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x80},
+ {0x7F, 0xF2, 0x6F, 0xFF, 0xFF, 0xFF, 0xBF, 0xF9,
+ 0x0F, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFC, 0x1B, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
+ 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0x23, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01},
+ {0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF,
+ 0x01, 0x00, 0xFF, 0x03, 0x00, 0x00, 0xFC, 0xFF},
+ {0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFE, 0x7F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xB4,
+ 0xFF, 0x00, 0xFF, 0x03, 0xBF, 0xFD, 0xFF, 0xFF},
+ {0xFF, 0x7F, 0xFB, 0x01, 0xFF, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00},
+ {0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7,
+ 0x07, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
+ 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0x03, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
+ 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00,
+ 0x0F, 0x00, 0xFF, 0x03, 0xF8, 0xFF, 0xFF, 0xE0},
+ {0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x87, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x80, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x03, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x6F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x04, 0x00,
+ 0x00, 0x00, 0x27, 0x00, 0xF0, 0x00, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0x1F},
+ {0xFF, 0x01, 0xFF, 0x63, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE3, 0x07, 0xF8},
+ {0xE7, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xDF, 0x64, 0xDE, 0xFF, 0xEB,
+ 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xBF, 0xE7, 0xDF, 0xDF, 0xFF, 0xFF, 0xFF, 0x7B,
+ 0x5F, 0xFC, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF,
+ 0xFD, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xF7},
+ {0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF,
+ 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF},
+ {0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF,
+ 0xF7, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF8,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x20, 0x00},
+ {0x10, 0x00, 0x00, 0xF8, 0xFE, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x7F, 0xE0, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0xFF, 0xFF, 0xF9, 0xDB, 0x07, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00},
+ {0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0x3F,
+ 0xFF, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x7F, 0x6F, 0xFF, 0x7F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x1F, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x0F, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0xEF, 0xFF, 0xFF, 0xFF, 0x96, 0xFE, 0xF7, 0x0A,
+ 0x84, 0xEA, 0x96, 0xAA, 0x96, 0xF7, 0xF7, 0x5E},
+ {0xFF, 0xFB, 0xFF, 0x0F, 0xEE, 0xFB, 0xFF, 0x0F,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_xidc(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 128]], ch % 128);
}
diff --git a/lib/unicode/prop/uprop_is_xids.c b/lib/unicode/prop/uprop_is_xids.c
index 3b29835..5896b82 100644
--- a/lib/unicode/prop/uprop_is_xids.c
+++ b/lib/unicode/prop/uprop_is_xids.c
@@ -1,688 +1,930 @@
/* This file is autogenerated by gen/prop/bool-props; DO NOT EDIT. */
-#include "_bsearch.h"
#include "bitset.h"
-#include "rune.h"
#include "unicode/prop.h"
-/* clang-format off */
-
-static constexpr bitset(bs, LATIN1_MAX) = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xFE, 0xFF, 0xFF, 0x07, 0xFE, 0xFF, 0xFF, 0x07,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x04,
- 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF,
+static constexpr uint8_t stage1[] = {
+ 0, 1, 2, 2, 2, 3, 4, 5, 2, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 2, 2, 31, 32, 33, 34, 35, 2, 2, 2, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 2, 50, 2, 2, 51, 52,
+ 53, 54, 55, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 2, 58, 59, 60, 57, 57, 57, 57,
+ 61, 62, 63, 64, 57, 57, 57, 57, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 50, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 65, 2, 2, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 78,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 2, 2, 79, 80, 81, 82, 83, 2, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 57, 57, 93, 94, 95, 2, 96, 97, 98, 2, 2, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 57, 57, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 57, 122, 123, 57, 124, 125, 126, 127, 57,
+ 128, 129, 130, 131, 132, 133, 57, 57, 134, 135, 136, 137, 57, 138, 139, 140,
+ 2, 2, 2, 2, 2, 2, 2, 141, 142, 2, 143, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 144,
+ 2, 2, 2, 2, 2, 2, 2, 2, 145, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 2, 2, 2, 2, 146, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 2, 2, 2, 2, 147, 148, 149, 135, 57, 57, 57, 57, 150, 57, 151, 152,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 153,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 154, 56, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 155,
+ 2, 2, 156, 2, 2, 157, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 158, 159, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 160, 161, 162, 2, 2, 163, 164, 165,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 166, 57,
+ 167, 57, 168, 57, 57, 169, 57, 57, 57, 170, 57, 57, 57, 57, 57, 171,
+ 2, 172, 173, 57, 57, 57, 57, 57, 57, 57, 57, 57, 174, 175, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 176, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 177, 2,
+ 178, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 179, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 180, 2, 2, 2, 2, 181, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 2, 2, 2, 2, 182, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 183, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 184, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
};
-static const struct {
- rune lo, hi;
-} lookup[] = {
- {RUNE_C(0x000100), RUNE_C(0x0002C1)},
- {RUNE_C(0x0002C6), RUNE_C(0x0002D1)},
- {RUNE_C(0x0002E0), RUNE_C(0x0002E4)},
- {RUNE_C(0x0002EC), RUNE_C(0x0002EC)},
- {RUNE_C(0x0002EE), RUNE_C(0x0002EE)},
- {RUNE_C(0x000370), RUNE_C(0x000374)},
- {RUNE_C(0x000376), RUNE_C(0x000377)},
- {RUNE_C(0x00037B), RUNE_C(0x00037D)},
- {RUNE_C(0x00037F), RUNE_C(0x00037F)},
- {RUNE_C(0x000386), RUNE_C(0x000386)},
- {RUNE_C(0x000388), RUNE_C(0x00038A)},
- {RUNE_C(0x00038C), RUNE_C(0x00038C)},
- {RUNE_C(0x00038E), RUNE_C(0x0003A1)},
- {RUNE_C(0x0003A3), RUNE_C(0x0003F5)},
- {RUNE_C(0x0003F7), RUNE_C(0x000481)},
- {RUNE_C(0x00048A), RUNE_C(0x00052F)},
- {RUNE_C(0x000531), RUNE_C(0x000556)},
- {RUNE_C(0x000559), RUNE_C(0x000559)},
- {RUNE_C(0x000560), RUNE_C(0x000588)},
- {RUNE_C(0x0005D0), RUNE_C(0x0005EA)},
- {RUNE_C(0x0005EF), RUNE_C(0x0005F2)},
- {RUNE_C(0x000620), RUNE_C(0x00064A)},
- {RUNE_C(0x00066E), RUNE_C(0x00066F)},
- {RUNE_C(0x000671), RUNE_C(0x0006D3)},
- {RUNE_C(0x0006D5), RUNE_C(0x0006D5)},
- {RUNE_C(0x0006E5), RUNE_C(0x0006E6)},
- {RUNE_C(0x0006EE), RUNE_C(0x0006EF)},
- {RUNE_C(0x0006FA), RUNE_C(0x0006FC)},
- {RUNE_C(0x0006FF), RUNE_C(0x0006FF)},
- {RUNE_C(0x000710), RUNE_C(0x000710)},
- {RUNE_C(0x000712), RUNE_C(0x00072F)},
- {RUNE_C(0x00074D), RUNE_C(0x0007A5)},
- {RUNE_C(0x0007B1), RUNE_C(0x0007B1)},
- {RUNE_C(0x0007CA), RUNE_C(0x0007EA)},
- {RUNE_C(0x0007F4), RUNE_C(0x0007F5)},
- {RUNE_C(0x0007FA), RUNE_C(0x0007FA)},
- {RUNE_C(0x000800), RUNE_C(0x000815)},
- {RUNE_C(0x00081A), RUNE_C(0x00081A)},
- {RUNE_C(0x000824), RUNE_C(0x000824)},
- {RUNE_C(0x000828), RUNE_C(0x000828)},
- {RUNE_C(0x000840), RUNE_C(0x000858)},
- {RUNE_C(0x000860), RUNE_C(0x00086A)},
- {RUNE_C(0x000870), RUNE_C(0x000887)},
- {RUNE_C(0x000889), RUNE_C(0x00088E)},
- {RUNE_C(0x0008A0), RUNE_C(0x0008C9)},
- {RUNE_C(0x000904), RUNE_C(0x000939)},
- {RUNE_C(0x00093D), RUNE_C(0x00093D)},
- {RUNE_C(0x000950), RUNE_C(0x000950)},
- {RUNE_C(0x000958), RUNE_C(0x000961)},
- {RUNE_C(0x000971), RUNE_C(0x000980)},
- {RUNE_C(0x000985), RUNE_C(0x00098C)},
- {RUNE_C(0x00098F), RUNE_C(0x000990)},
- {RUNE_C(0x000993), RUNE_C(0x0009A8)},
- {RUNE_C(0x0009AA), RUNE_C(0x0009B0)},
- {RUNE_C(0x0009B2), RUNE_C(0x0009B2)},
- {RUNE_C(0x0009B6), RUNE_C(0x0009B9)},
- {RUNE_C(0x0009BD), RUNE_C(0x0009BD)},
- {RUNE_C(0x0009CE), RUNE_C(0x0009CE)},
- {RUNE_C(0x0009DC), RUNE_C(0x0009DD)},
- {RUNE_C(0x0009DF), RUNE_C(0x0009E1)},
- {RUNE_C(0x0009F0), RUNE_C(0x0009F1)},
- {RUNE_C(0x0009FC), RUNE_C(0x0009FC)},
- {RUNE_C(0x000A05), RUNE_C(0x000A0A)},
- {RUNE_C(0x000A0F), RUNE_C(0x000A10)},
- {RUNE_C(0x000A13), RUNE_C(0x000A28)},
- {RUNE_C(0x000A2A), RUNE_C(0x000A30)},
- {RUNE_C(0x000A32), RUNE_C(0x000A33)},
- {RUNE_C(0x000A35), RUNE_C(0x000A36)},
- {RUNE_C(0x000A38), RUNE_C(0x000A39)},
- {RUNE_C(0x000A59), RUNE_C(0x000A5C)},
- {RUNE_C(0x000A5E), RUNE_C(0x000A5E)},
- {RUNE_C(0x000A72), RUNE_C(0x000A74)},
- {RUNE_C(0x000A85), RUNE_C(0x000A8D)},
- {RUNE_C(0x000A8F), RUNE_C(0x000A91)},
- {RUNE_C(0x000A93), RUNE_C(0x000AA8)},
- {RUNE_C(0x000AAA), RUNE_C(0x000AB0)},
- {RUNE_C(0x000AB2), RUNE_C(0x000AB3)},
- {RUNE_C(0x000AB5), RUNE_C(0x000AB9)},
- {RUNE_C(0x000ABD), RUNE_C(0x000ABD)},
- {RUNE_C(0x000AD0), RUNE_C(0x000AD0)},
- {RUNE_C(0x000AE0), RUNE_C(0x000AE1)},
- {RUNE_C(0x000AF9), RUNE_C(0x000AF9)},
- {RUNE_C(0x000B05), RUNE_C(0x000B0C)},
- {RUNE_C(0x000B0F), RUNE_C(0x000B10)},
- {RUNE_C(0x000B13), RUNE_C(0x000B28)},
- {RUNE_C(0x000B2A), RUNE_C(0x000B30)},
- {RUNE_C(0x000B32), RUNE_C(0x000B33)},
- {RUNE_C(0x000B35), RUNE_C(0x000B39)},
- {RUNE_C(0x000B3D), RUNE_C(0x000B3D)},
- {RUNE_C(0x000B5C), RUNE_C(0x000B5D)},
- {RUNE_C(0x000B5F), RUNE_C(0x000B61)},
- {RUNE_C(0x000B71), RUNE_C(0x000B71)},
- {RUNE_C(0x000B83), RUNE_C(0x000B83)},
- {RUNE_C(0x000B85), RUNE_C(0x000B8A)},
- {RUNE_C(0x000B8E), RUNE_C(0x000B90)},
- {RUNE_C(0x000B92), RUNE_C(0x000B95)},
- {RUNE_C(0x000B99), RUNE_C(0x000B9A)},
- {RUNE_C(0x000B9C), RUNE_C(0x000B9C)},
- {RUNE_C(0x000B9E), RUNE_C(0x000B9F)},
- {RUNE_C(0x000BA3), RUNE_C(0x000BA4)},
- {RUNE_C(0x000BA8), RUNE_C(0x000BAA)},
- {RUNE_C(0x000BAE), RUNE_C(0x000BB9)},
- {RUNE_C(0x000BD0), RUNE_C(0x000BD0)},
- {RUNE_C(0x000C05), RUNE_C(0x000C0C)},
- {RUNE_C(0x000C0E), RUNE_C(0x000C10)},
- {RUNE_C(0x000C12), RUNE_C(0x000C28)},
- {RUNE_C(0x000C2A), RUNE_C(0x000C39)},
- {RUNE_C(0x000C3D), RUNE_C(0x000C3D)},
- {RUNE_C(0x000C58), RUNE_C(0x000C5A)},
- {RUNE_C(0x000C5D), RUNE_C(0x000C5D)},
- {RUNE_C(0x000C60), RUNE_C(0x000C61)},
- {RUNE_C(0x000C80), RUNE_C(0x000C80)},
- {RUNE_C(0x000C85), RUNE_C(0x000C8C)},
- {RUNE_C(0x000C8E), RUNE_C(0x000C90)},
- {RUNE_C(0x000C92), RUNE_C(0x000CA8)},
- {RUNE_C(0x000CAA), RUNE_C(0x000CB3)},
- {RUNE_C(0x000CB5), RUNE_C(0x000CB9)},
- {RUNE_C(0x000CBD), RUNE_C(0x000CBD)},
- {RUNE_C(0x000CDD), RUNE_C(0x000CDE)},
- {RUNE_C(0x000CE0), RUNE_C(0x000CE1)},
- {RUNE_C(0x000CF1), RUNE_C(0x000CF2)},
- {RUNE_C(0x000D04), RUNE_C(0x000D0C)},
- {RUNE_C(0x000D0E), RUNE_C(0x000D10)},
- {RUNE_C(0x000D12), RUNE_C(0x000D3A)},
- {RUNE_C(0x000D3D), RUNE_C(0x000D3D)},
- {RUNE_C(0x000D4E), RUNE_C(0x000D4E)},
- {RUNE_C(0x000D54), RUNE_C(0x000D56)},
- {RUNE_C(0x000D5F), RUNE_C(0x000D61)},
- {RUNE_C(0x000D7A), RUNE_C(0x000D7F)},
- {RUNE_C(0x000D85), RUNE_C(0x000D96)},
- {RUNE_C(0x000D9A), RUNE_C(0x000DB1)},
- {RUNE_C(0x000DB3), RUNE_C(0x000DBB)},
- {RUNE_C(0x000DBD), RUNE_C(0x000DBD)},
- {RUNE_C(0x000DC0), RUNE_C(0x000DC6)},
- {RUNE_C(0x000E01), RUNE_C(0x000E30)},
- {RUNE_C(0x000E32), RUNE_C(0x000E32)},
- {RUNE_C(0x000E40), RUNE_C(0x000E46)},
- {RUNE_C(0x000E81), RUNE_C(0x000E82)},
- {RUNE_C(0x000E84), RUNE_C(0x000E84)},
- {RUNE_C(0x000E86), RUNE_C(0x000E8A)},
- {RUNE_C(0x000E8C), RUNE_C(0x000EA3)},
- {RUNE_C(0x000EA5), RUNE_C(0x000EA5)},
- {RUNE_C(0x000EA7), RUNE_C(0x000EB0)},
- {RUNE_C(0x000EB2), RUNE_C(0x000EB2)},
- {RUNE_C(0x000EBD), RUNE_C(0x000EBD)},
- {RUNE_C(0x000EC0), RUNE_C(0x000EC4)},
- {RUNE_C(0x000EC6), RUNE_C(0x000EC6)},
- {RUNE_C(0x000EDC), RUNE_C(0x000EDF)},
- {RUNE_C(0x000F00), RUNE_C(0x000F00)},
- {RUNE_C(0x000F40), RUNE_C(0x000F47)},
- {RUNE_C(0x000F49), RUNE_C(0x000F6C)},
- {RUNE_C(0x000F88), RUNE_C(0x000F8C)},
- {RUNE_C(0x001000), RUNE_C(0x00102A)},
- {RUNE_C(0x00103F), RUNE_C(0x00103F)},
- {RUNE_C(0x001050), RUNE_C(0x001055)},
- {RUNE_C(0x00105A), RUNE_C(0x00105D)},
- {RUNE_C(0x001061), RUNE_C(0x001061)},
- {RUNE_C(0x001065), RUNE_C(0x001066)},
- {RUNE_C(0x00106E), RUNE_C(0x001070)},
- {RUNE_C(0x001075), RUNE_C(0x001081)},
- {RUNE_C(0x00108E), RUNE_C(0x00108E)},
- {RUNE_C(0x0010A0), RUNE_C(0x0010C5)},
- {RUNE_C(0x0010C7), RUNE_C(0x0010C7)},
- {RUNE_C(0x0010CD), RUNE_C(0x0010CD)},
- {RUNE_C(0x0010D0), RUNE_C(0x0010FA)},
- {RUNE_C(0x0010FC), RUNE_C(0x001248)},
- {RUNE_C(0x00124A), RUNE_C(0x00124D)},
- {RUNE_C(0x001250), RUNE_C(0x001256)},
- {RUNE_C(0x001258), RUNE_C(0x001258)},
- {RUNE_C(0x00125A), RUNE_C(0x00125D)},
- {RUNE_C(0x001260), RUNE_C(0x001288)},
- {RUNE_C(0x00128A), RUNE_C(0x00128D)},
- {RUNE_C(0x001290), RUNE_C(0x0012B0)},
- {RUNE_C(0x0012B2), RUNE_C(0x0012B5)},
- {RUNE_C(0x0012B8), RUNE_C(0x0012BE)},
- {RUNE_C(0x0012C0), RUNE_C(0x0012C0)},
- {RUNE_C(0x0012C2), RUNE_C(0x0012C5)},
- {RUNE_C(0x0012C8), RUNE_C(0x0012D6)},
- {RUNE_C(0x0012D8), RUNE_C(0x001310)},
- {RUNE_C(0x001312), RUNE_C(0x001315)},
- {RUNE_C(0x001318), RUNE_C(0x00135A)},
- {RUNE_C(0x001380), RUNE_C(0x00138F)},
- {RUNE_C(0x0013A0), RUNE_C(0x0013F5)},
- {RUNE_C(0x0013F8), RUNE_C(0x0013FD)},
- {RUNE_C(0x001401), RUNE_C(0x00166C)},
- {RUNE_C(0x00166F), RUNE_C(0x00167F)},
- {RUNE_C(0x001681), RUNE_C(0x00169A)},
- {RUNE_C(0x0016A0), RUNE_C(0x0016EA)},
- {RUNE_C(0x0016EE), RUNE_C(0x0016F8)},
- {RUNE_C(0x001700), RUNE_C(0x001711)},
- {RUNE_C(0x00171F), RUNE_C(0x001731)},
- {RUNE_C(0x001740), RUNE_C(0x001751)},
- {RUNE_C(0x001760), RUNE_C(0x00176C)},
- {RUNE_C(0x00176E), RUNE_C(0x001770)},
- {RUNE_C(0x001780), RUNE_C(0x0017B3)},
- {RUNE_C(0x0017D7), RUNE_C(0x0017D7)},
- {RUNE_C(0x0017DC), RUNE_C(0x0017DC)},
- {RUNE_C(0x001820), RUNE_C(0x001878)},
- {RUNE_C(0x001880), RUNE_C(0x0018A8)},
- {RUNE_C(0x0018AA), RUNE_C(0x0018AA)},
- {RUNE_C(0x0018B0), RUNE_C(0x0018F5)},
- {RUNE_C(0x001900), RUNE_C(0x00191E)},
- {RUNE_C(0x001950), RUNE_C(0x00196D)},
- {RUNE_C(0x001970), RUNE_C(0x001974)},
- {RUNE_C(0x001980), RUNE_C(0x0019AB)},
- {RUNE_C(0x0019B0), RUNE_C(0x0019C9)},
- {RUNE_C(0x001A00), RUNE_C(0x001A16)},
- {RUNE_C(0x001A20), RUNE_C(0x001A54)},
- {RUNE_C(0x001AA7), RUNE_C(0x001AA7)},
- {RUNE_C(0x001B05), RUNE_C(0x001B33)},
- {RUNE_C(0x001B45), RUNE_C(0x001B4C)},
- {RUNE_C(0x001B83), RUNE_C(0x001BA0)},
- {RUNE_C(0x001BAE), RUNE_C(0x001BAF)},
- {RUNE_C(0x001BBA), RUNE_C(0x001BE5)},
- {RUNE_C(0x001C00), RUNE_C(0x001C23)},
- {RUNE_C(0x001C4D), RUNE_C(0x001C4F)},
- {RUNE_C(0x001C5A), RUNE_C(0x001C7D)},
- {RUNE_C(0x001C80), RUNE_C(0x001C88)},
- {RUNE_C(0x001C90), RUNE_C(0x001CBA)},
- {RUNE_C(0x001CBD), RUNE_C(0x001CBF)},
- {RUNE_C(0x001CE9), RUNE_C(0x001CEC)},
- {RUNE_C(0x001CEE), RUNE_C(0x001CF3)},
- {RUNE_C(0x001CF5), RUNE_C(0x001CF6)},
- {RUNE_C(0x001CFA), RUNE_C(0x001CFA)},
- {RUNE_C(0x001D00), RUNE_C(0x001DBF)},
- {RUNE_C(0x001E00), RUNE_C(0x001F15)},
- {RUNE_C(0x001F18), RUNE_C(0x001F1D)},
- {RUNE_C(0x001F20), RUNE_C(0x001F45)},
- {RUNE_C(0x001F48), RUNE_C(0x001F4D)},
- {RUNE_C(0x001F50), RUNE_C(0x001F57)},
- {RUNE_C(0x001F59), RUNE_C(0x001F59)},
- {RUNE_C(0x001F5B), RUNE_C(0x001F5B)},
- {RUNE_C(0x001F5D), RUNE_C(0x001F5D)},
- {RUNE_C(0x001F5F), RUNE_C(0x001F7D)},
- {RUNE_C(0x001F80), RUNE_C(0x001FB4)},
- {RUNE_C(0x001FB6), RUNE_C(0x001FBC)},
- {RUNE_C(0x001FBE), RUNE_C(0x001FBE)},
- {RUNE_C(0x001FC2), RUNE_C(0x001FC4)},
- {RUNE_C(0x001FC6), RUNE_C(0x001FCC)},
- {RUNE_C(0x001FD0), RUNE_C(0x001FD3)},
- {RUNE_C(0x001FD6), RUNE_C(0x001FDB)},
- {RUNE_C(0x001FE0), RUNE_C(0x001FEC)},
- {RUNE_C(0x001FF2), RUNE_C(0x001FF4)},
- {RUNE_C(0x001FF6), RUNE_C(0x001FFC)},
- {RUNE_C(0x002071), RUNE_C(0x002071)},
- {RUNE_C(0x00207F), RUNE_C(0x00207F)},
- {RUNE_C(0x002090), RUNE_C(0x00209C)},
- {RUNE_C(0x002102), RUNE_C(0x002102)},
- {RUNE_C(0x002107), RUNE_C(0x002107)},
- {RUNE_C(0x00210A), RUNE_C(0x002113)},
- {RUNE_C(0x002115), RUNE_C(0x002115)},
- {RUNE_C(0x002118), RUNE_C(0x00211D)},
- {RUNE_C(0x002124), RUNE_C(0x002124)},
- {RUNE_C(0x002126), RUNE_C(0x002126)},
- {RUNE_C(0x002128), RUNE_C(0x002128)},
- {RUNE_C(0x00212A), RUNE_C(0x002139)},
- {RUNE_C(0x00213C), RUNE_C(0x00213F)},
- {RUNE_C(0x002145), RUNE_C(0x002149)},
- {RUNE_C(0x00214E), RUNE_C(0x00214E)},
- {RUNE_C(0x002160), RUNE_C(0x002188)},
- {RUNE_C(0x002C00), RUNE_C(0x002CE4)},
- {RUNE_C(0x002CEB), RUNE_C(0x002CEE)},
- {RUNE_C(0x002CF2), RUNE_C(0x002CF3)},
- {RUNE_C(0x002D00), RUNE_C(0x002D25)},
- {RUNE_C(0x002D27), RUNE_C(0x002D27)},
- {RUNE_C(0x002D2D), RUNE_C(0x002D2D)},
- {RUNE_C(0x002D30), RUNE_C(0x002D67)},
- {RUNE_C(0x002D6F), RUNE_C(0x002D6F)},
- {RUNE_C(0x002D80), RUNE_C(0x002D96)},
- {RUNE_C(0x002DA0), RUNE_C(0x002DA6)},
- {RUNE_C(0x002DA8), RUNE_C(0x002DAE)},
- {RUNE_C(0x002DB0), RUNE_C(0x002DB6)},
- {RUNE_C(0x002DB8), RUNE_C(0x002DBE)},
- {RUNE_C(0x002DC0), RUNE_C(0x002DC6)},
- {RUNE_C(0x002DC8), RUNE_C(0x002DCE)},
- {RUNE_C(0x002DD0), RUNE_C(0x002DD6)},
- {RUNE_C(0x002DD8), RUNE_C(0x002DDE)},
- {RUNE_C(0x003005), RUNE_C(0x003007)},
- {RUNE_C(0x003021), RUNE_C(0x003029)},
- {RUNE_C(0x003031), RUNE_C(0x003035)},
- {RUNE_C(0x003038), RUNE_C(0x00303C)},
- {RUNE_C(0x003041), RUNE_C(0x003096)},
- {RUNE_C(0x00309D), RUNE_C(0x00309F)},
- {RUNE_C(0x0030A1), RUNE_C(0x0030FA)},
- {RUNE_C(0x0030FC), RUNE_C(0x0030FF)},
- {RUNE_C(0x003105), RUNE_C(0x00312F)},
- {RUNE_C(0x003131), RUNE_C(0x00318E)},
- {RUNE_C(0x0031A0), RUNE_C(0x0031BF)},
- {RUNE_C(0x0031F0), RUNE_C(0x0031FF)},
- {RUNE_C(0x003400), RUNE_C(0x004DBF)},
- {RUNE_C(0x004E00), RUNE_C(0x00A48C)},
- {RUNE_C(0x00A4D0), RUNE_C(0x00A4FD)},
- {RUNE_C(0x00A500), RUNE_C(0x00A60C)},
- {RUNE_C(0x00A610), RUNE_C(0x00A61F)},
- {RUNE_C(0x00A62A), RUNE_C(0x00A62B)},
- {RUNE_C(0x00A640), RUNE_C(0x00A66E)},
- {RUNE_C(0x00A67F), RUNE_C(0x00A69D)},
- {RUNE_C(0x00A6A0), RUNE_C(0x00A6EF)},
- {RUNE_C(0x00A717), RUNE_C(0x00A71F)},
- {RUNE_C(0x00A722), RUNE_C(0x00A788)},
- {RUNE_C(0x00A78B), RUNE_C(0x00A7CA)},
- {RUNE_C(0x00A7D0), RUNE_C(0x00A7D1)},
- {RUNE_C(0x00A7D3), RUNE_C(0x00A7D3)},
- {RUNE_C(0x00A7D5), RUNE_C(0x00A7D9)},
- {RUNE_C(0x00A7F2), RUNE_C(0x00A801)},
- {RUNE_C(0x00A803), RUNE_C(0x00A805)},
- {RUNE_C(0x00A807), RUNE_C(0x00A80A)},
- {RUNE_C(0x00A80C), RUNE_C(0x00A822)},
- {RUNE_C(0x00A840), RUNE_C(0x00A873)},
- {RUNE_C(0x00A882), RUNE_C(0x00A8B3)},
- {RUNE_C(0x00A8F2), RUNE_C(0x00A8F7)},
- {RUNE_C(0x00A8FB), RUNE_C(0x00A8FB)},
- {RUNE_C(0x00A8FD), RUNE_C(0x00A8FE)},
- {RUNE_C(0x00A90A), RUNE_C(0x00A925)},
- {RUNE_C(0x00A930), RUNE_C(0x00A946)},
- {RUNE_C(0x00A960), RUNE_C(0x00A97C)},
- {RUNE_C(0x00A984), RUNE_C(0x00A9B2)},
- {RUNE_C(0x00A9CF), RUNE_C(0x00A9CF)},
- {RUNE_C(0x00A9E0), RUNE_C(0x00A9E4)},
- {RUNE_C(0x00A9E6), RUNE_C(0x00A9EF)},
- {RUNE_C(0x00A9FA), RUNE_C(0x00A9FE)},
- {RUNE_C(0x00AA00), RUNE_C(0x00AA28)},
- {RUNE_C(0x00AA40), RUNE_C(0x00AA42)},
- {RUNE_C(0x00AA44), RUNE_C(0x00AA4B)},
- {RUNE_C(0x00AA60), RUNE_C(0x00AA76)},
- {RUNE_C(0x00AA7A), RUNE_C(0x00AA7A)},
- {RUNE_C(0x00AA7E), RUNE_C(0x00AAAF)},
- {RUNE_C(0x00AAB1), RUNE_C(0x00AAB1)},
- {RUNE_C(0x00AAB5), RUNE_C(0x00AAB6)},
- {RUNE_C(0x00AAB9), RUNE_C(0x00AABD)},
- {RUNE_C(0x00AAC0), RUNE_C(0x00AAC0)},
- {RUNE_C(0x00AAC2), RUNE_C(0x00AAC2)},
- {RUNE_C(0x00AADB), RUNE_C(0x00AADD)},
- {RUNE_C(0x00AAE0), RUNE_C(0x00AAEA)},
- {RUNE_C(0x00AAF2), RUNE_C(0x00AAF4)},
- {RUNE_C(0x00AB01), RUNE_C(0x00AB06)},
- {RUNE_C(0x00AB09), RUNE_C(0x00AB0E)},
- {RUNE_C(0x00AB11), RUNE_C(0x00AB16)},
- {RUNE_C(0x00AB20), RUNE_C(0x00AB26)},
- {RUNE_C(0x00AB28), RUNE_C(0x00AB2E)},
- {RUNE_C(0x00AB30), RUNE_C(0x00AB5A)},
- {RUNE_C(0x00AB5C), RUNE_C(0x00AB69)},
- {RUNE_C(0x00AB70), RUNE_C(0x00ABE2)},
- {RUNE_C(0x00AC00), RUNE_C(0x00D7A3)},
- {RUNE_C(0x00D7B0), RUNE_C(0x00D7C6)},
- {RUNE_C(0x00D7CB), RUNE_C(0x00D7FB)},
- {RUNE_C(0x00F900), RUNE_C(0x00FA6D)},
- {RUNE_C(0x00FA70), RUNE_C(0x00FAD9)},
- {RUNE_C(0x00FB00), RUNE_C(0x00FB06)},
- {RUNE_C(0x00FB13), RUNE_C(0x00FB17)},
- {RUNE_C(0x00FB1D), RUNE_C(0x00FB1D)},
- {RUNE_C(0x00FB1F), RUNE_C(0x00FB28)},
- {RUNE_C(0x00FB2A), RUNE_C(0x00FB36)},
- {RUNE_C(0x00FB38), RUNE_C(0x00FB3C)},
- {RUNE_C(0x00FB3E), RUNE_C(0x00FB3E)},
- {RUNE_C(0x00FB40), RUNE_C(0x00FB41)},
- {RUNE_C(0x00FB43), RUNE_C(0x00FB44)},
- {RUNE_C(0x00FB46), RUNE_C(0x00FBB1)},
- {RUNE_C(0x00FBD3), RUNE_C(0x00FC5D)},
- {RUNE_C(0x00FC64), RUNE_C(0x00FD3D)},
- {RUNE_C(0x00FD50), RUNE_C(0x00FD8F)},
- {RUNE_C(0x00FD92), RUNE_C(0x00FDC7)},
- {RUNE_C(0x00FDF0), RUNE_C(0x00FDF9)},
- {RUNE_C(0x00FE71), RUNE_C(0x00FE71)},
- {RUNE_C(0x00FE73), RUNE_C(0x00FE73)},
- {RUNE_C(0x00FE77), RUNE_C(0x00FE77)},
- {RUNE_C(0x00FE79), RUNE_C(0x00FE79)},
- {RUNE_C(0x00FE7B), RUNE_C(0x00FE7B)},
- {RUNE_C(0x00FE7D), RUNE_C(0x00FE7D)},
- {RUNE_C(0x00FE7F), RUNE_C(0x00FEFC)},
- {RUNE_C(0x00FF21), RUNE_C(0x00FF3A)},
- {RUNE_C(0x00FF41), RUNE_C(0x00FF5A)},
- {RUNE_C(0x00FF66), RUNE_C(0x00FF9D)},
- {RUNE_C(0x00FFA0), RUNE_C(0x00FFBE)},
- {RUNE_C(0x00FFC2), RUNE_C(0x00FFC7)},
- {RUNE_C(0x00FFCA), RUNE_C(0x00FFCF)},
- {RUNE_C(0x00FFD2), RUNE_C(0x00FFD7)},
- {RUNE_C(0x00FFDA), RUNE_C(0x00FFDC)},
- {RUNE_C(0x010000), RUNE_C(0x01000B)},
- {RUNE_C(0x01000D), RUNE_C(0x010026)},
- {RUNE_C(0x010028), RUNE_C(0x01003A)},
- {RUNE_C(0x01003C), RUNE_C(0x01003D)},
- {RUNE_C(0x01003F), RUNE_C(0x01004D)},
- {RUNE_C(0x010050), RUNE_C(0x01005D)},
- {RUNE_C(0x010080), RUNE_C(0x0100FA)},
- {RUNE_C(0x010140), RUNE_C(0x010174)},
- {RUNE_C(0x010280), RUNE_C(0x01029C)},
- {RUNE_C(0x0102A0), RUNE_C(0x0102D0)},
- {RUNE_C(0x010300), RUNE_C(0x01031F)},
- {RUNE_C(0x01032D), RUNE_C(0x01034A)},
- {RUNE_C(0x010350), RUNE_C(0x010375)},
- {RUNE_C(0x010380), RUNE_C(0x01039D)},
- {RUNE_C(0x0103A0), RUNE_C(0x0103C3)},
- {RUNE_C(0x0103C8), RUNE_C(0x0103CF)},
- {RUNE_C(0x0103D1), RUNE_C(0x0103D5)},
- {RUNE_C(0x010400), RUNE_C(0x01049D)},
- {RUNE_C(0x0104B0), RUNE_C(0x0104D3)},
- {RUNE_C(0x0104D8), RUNE_C(0x0104FB)},
- {RUNE_C(0x010500), RUNE_C(0x010527)},
- {RUNE_C(0x010530), RUNE_C(0x010563)},
- {RUNE_C(0x010570), RUNE_C(0x01057A)},
- {RUNE_C(0x01057C), RUNE_C(0x01058A)},
- {RUNE_C(0x01058C), RUNE_C(0x010592)},
- {RUNE_C(0x010594), RUNE_C(0x010595)},
- {RUNE_C(0x010597), RUNE_C(0x0105A1)},
- {RUNE_C(0x0105A3), RUNE_C(0x0105B1)},
- {RUNE_C(0x0105B3), RUNE_C(0x0105B9)},
- {RUNE_C(0x0105BB), RUNE_C(0x0105BC)},
- {RUNE_C(0x010600), RUNE_C(0x010736)},
- {RUNE_C(0x010740), RUNE_C(0x010755)},
- {RUNE_C(0x010760), RUNE_C(0x010767)},
- {RUNE_C(0x010780), RUNE_C(0x010785)},
- {RUNE_C(0x010787), RUNE_C(0x0107B0)},
- {RUNE_C(0x0107B2), RUNE_C(0x0107BA)},
- {RUNE_C(0x010800), RUNE_C(0x010805)},
- {RUNE_C(0x010808), RUNE_C(0x010808)},
- {RUNE_C(0x01080A), RUNE_C(0x010835)},
- {RUNE_C(0x010837), RUNE_C(0x010838)},
- {RUNE_C(0x01083C), RUNE_C(0x01083C)},
- {RUNE_C(0x01083F), RUNE_C(0x010855)},
- {RUNE_C(0x010860), RUNE_C(0x010876)},
- {RUNE_C(0x010880), RUNE_C(0x01089E)},
- {RUNE_C(0x0108E0), RUNE_C(0x0108F2)},
- {RUNE_C(0x0108F4), RUNE_C(0x0108F5)},
- {RUNE_C(0x010900), RUNE_C(0x010915)},
- {RUNE_C(0x010920), RUNE_C(0x010939)},
- {RUNE_C(0x010980), RUNE_C(0x0109B7)},
- {RUNE_C(0x0109BE), RUNE_C(0x0109BF)},
- {RUNE_C(0x010A00), RUNE_C(0x010A00)},
- {RUNE_C(0x010A10), RUNE_C(0x010A13)},
- {RUNE_C(0x010A15), RUNE_C(0x010A17)},
- {RUNE_C(0x010A19), RUNE_C(0x010A35)},
- {RUNE_C(0x010A60), RUNE_C(0x010A7C)},
- {RUNE_C(0x010A80), RUNE_C(0x010A9C)},
- {RUNE_C(0x010AC0), RUNE_C(0x010AC7)},
- {RUNE_C(0x010AC9), RUNE_C(0x010AE4)},
- {RUNE_C(0x010B00), RUNE_C(0x010B35)},
- {RUNE_C(0x010B40), RUNE_C(0x010B55)},
- {RUNE_C(0x010B60), RUNE_C(0x010B72)},
- {RUNE_C(0x010B80), RUNE_C(0x010B91)},
- {RUNE_C(0x010C00), RUNE_C(0x010C48)},
- {RUNE_C(0x010C80), RUNE_C(0x010CB2)},
- {RUNE_C(0x010CC0), RUNE_C(0x010CF2)},
- {RUNE_C(0x010D00), RUNE_C(0x010D23)},
- {RUNE_C(0x010E80), RUNE_C(0x010EA9)},
- {RUNE_C(0x010EB0), RUNE_C(0x010EB1)},
- {RUNE_C(0x010F00), RUNE_C(0x010F1C)},
- {RUNE_C(0x010F27), RUNE_C(0x010F27)},
- {RUNE_C(0x010F30), RUNE_C(0x010F45)},
- {RUNE_C(0x010F70), RUNE_C(0x010F81)},
- {RUNE_C(0x010FB0), RUNE_C(0x010FC4)},
- {RUNE_C(0x010FE0), RUNE_C(0x010FF6)},
- {RUNE_C(0x011003), RUNE_C(0x011037)},
- {RUNE_C(0x011071), RUNE_C(0x011072)},
- {RUNE_C(0x011075), RUNE_C(0x011075)},
- {RUNE_C(0x011083), RUNE_C(0x0110AF)},
- {RUNE_C(0x0110D0), RUNE_C(0x0110E8)},
- {RUNE_C(0x011103), RUNE_C(0x011126)},
- {RUNE_C(0x011144), RUNE_C(0x011144)},
- {RUNE_C(0x011147), RUNE_C(0x011147)},
- {RUNE_C(0x011150), RUNE_C(0x011172)},
- {RUNE_C(0x011176), RUNE_C(0x011176)},
- {RUNE_C(0x011183), RUNE_C(0x0111B2)},
- {RUNE_C(0x0111C1), RUNE_C(0x0111C4)},
- {RUNE_C(0x0111DA), RUNE_C(0x0111DA)},
- {RUNE_C(0x0111DC), RUNE_C(0x0111DC)},
- {RUNE_C(0x011200), RUNE_C(0x011211)},
- {RUNE_C(0x011213), RUNE_C(0x01122B)},
- {RUNE_C(0x01123F), RUNE_C(0x011240)},
- {RUNE_C(0x011280), RUNE_C(0x011286)},
- {RUNE_C(0x011288), RUNE_C(0x011288)},
- {RUNE_C(0x01128A), RUNE_C(0x01128D)},
- {RUNE_C(0x01128F), RUNE_C(0x01129D)},
- {RUNE_C(0x01129F), RUNE_C(0x0112A8)},
- {RUNE_C(0x0112B0), RUNE_C(0x0112DE)},
- {RUNE_C(0x011305), RUNE_C(0x01130C)},
- {RUNE_C(0x01130F), RUNE_C(0x011310)},
- {RUNE_C(0x011313), RUNE_C(0x011328)},
- {RUNE_C(0x01132A), RUNE_C(0x011330)},
- {RUNE_C(0x011332), RUNE_C(0x011333)},
- {RUNE_C(0x011335), RUNE_C(0x011339)},
- {RUNE_C(0x01133D), RUNE_C(0x01133D)},
- {RUNE_C(0x011350), RUNE_C(0x011350)},
- {RUNE_C(0x01135D), RUNE_C(0x011361)},
- {RUNE_C(0x011400), RUNE_C(0x011434)},
- {RUNE_C(0x011447), RUNE_C(0x01144A)},
- {RUNE_C(0x01145F), RUNE_C(0x011461)},
- {RUNE_C(0x011480), RUNE_C(0x0114AF)},
- {RUNE_C(0x0114C4), RUNE_C(0x0114C5)},
- {RUNE_C(0x0114C7), RUNE_C(0x0114C7)},
- {RUNE_C(0x011580), RUNE_C(0x0115AE)},
- {RUNE_C(0x0115D8), RUNE_C(0x0115DB)},
- {RUNE_C(0x011600), RUNE_C(0x01162F)},
- {RUNE_C(0x011644), RUNE_C(0x011644)},
- {RUNE_C(0x011680), RUNE_C(0x0116AA)},
- {RUNE_C(0x0116B8), RUNE_C(0x0116B8)},
- {RUNE_C(0x011700), RUNE_C(0x01171A)},
- {RUNE_C(0x011740), RUNE_C(0x011746)},
- {RUNE_C(0x011800), RUNE_C(0x01182B)},
- {RUNE_C(0x0118A0), RUNE_C(0x0118DF)},
- {RUNE_C(0x0118FF), RUNE_C(0x011906)},
- {RUNE_C(0x011909), RUNE_C(0x011909)},
- {RUNE_C(0x01190C), RUNE_C(0x011913)},
- {RUNE_C(0x011915), RUNE_C(0x011916)},
- {RUNE_C(0x011918), RUNE_C(0x01192F)},
- {RUNE_C(0x01193F), RUNE_C(0x01193F)},
- {RUNE_C(0x011941), RUNE_C(0x011941)},
- {RUNE_C(0x0119A0), RUNE_C(0x0119A7)},
- {RUNE_C(0x0119AA), RUNE_C(0x0119D0)},
- {RUNE_C(0x0119E1), RUNE_C(0x0119E1)},
- {RUNE_C(0x0119E3), RUNE_C(0x0119E3)},
- {RUNE_C(0x011A00), RUNE_C(0x011A00)},
- {RUNE_C(0x011A0B), RUNE_C(0x011A32)},
- {RUNE_C(0x011A3A), RUNE_C(0x011A3A)},
- {RUNE_C(0x011A50), RUNE_C(0x011A50)},
- {RUNE_C(0x011A5C), RUNE_C(0x011A89)},
- {RUNE_C(0x011A9D), RUNE_C(0x011A9D)},
- {RUNE_C(0x011AB0), RUNE_C(0x011AF8)},
- {RUNE_C(0x011C00), RUNE_C(0x011C08)},
- {RUNE_C(0x011C0A), RUNE_C(0x011C2E)},
- {RUNE_C(0x011C40), RUNE_C(0x011C40)},
- {RUNE_C(0x011C72), RUNE_C(0x011C8F)},
- {RUNE_C(0x011D00), RUNE_C(0x011D06)},
- {RUNE_C(0x011D08), RUNE_C(0x011D09)},
- {RUNE_C(0x011D0B), RUNE_C(0x011D30)},
- {RUNE_C(0x011D46), RUNE_C(0x011D46)},
- {RUNE_C(0x011D60), RUNE_C(0x011D65)},
- {RUNE_C(0x011D67), RUNE_C(0x011D68)},
- {RUNE_C(0x011D6A), RUNE_C(0x011D89)},
- {RUNE_C(0x011D98), RUNE_C(0x011D98)},
- {RUNE_C(0x011EE0), RUNE_C(0x011EF2)},
- {RUNE_C(0x011F02), RUNE_C(0x011F02)},
- {RUNE_C(0x011F04), RUNE_C(0x011F10)},
- {RUNE_C(0x011F12), RUNE_C(0x011F33)},
- {RUNE_C(0x011FB0), RUNE_C(0x011FB0)},
- {RUNE_C(0x012000), RUNE_C(0x012399)},
- {RUNE_C(0x012400), RUNE_C(0x01246E)},
- {RUNE_C(0x012480), RUNE_C(0x012543)},
- {RUNE_C(0x012F90), RUNE_C(0x012FF0)},
- {RUNE_C(0x013000), RUNE_C(0x01342F)},
- {RUNE_C(0x013441), RUNE_C(0x013446)},
- {RUNE_C(0x014400), RUNE_C(0x014646)},
- {RUNE_C(0x016800), RUNE_C(0x016A38)},
- {RUNE_C(0x016A40), RUNE_C(0x016A5E)},
- {RUNE_C(0x016A70), RUNE_C(0x016ABE)},
- {RUNE_C(0x016AD0), RUNE_C(0x016AED)},
- {RUNE_C(0x016B00), RUNE_C(0x016B2F)},
- {RUNE_C(0x016B40), RUNE_C(0x016B43)},
- {RUNE_C(0x016B63), RUNE_C(0x016B77)},
- {RUNE_C(0x016B7D), RUNE_C(0x016B8F)},
- {RUNE_C(0x016E40), RUNE_C(0x016E7F)},
- {RUNE_C(0x016F00), RUNE_C(0x016F4A)},
- {RUNE_C(0x016F50), RUNE_C(0x016F50)},
- {RUNE_C(0x016F93), RUNE_C(0x016F9F)},
- {RUNE_C(0x016FE0), RUNE_C(0x016FE1)},
- {RUNE_C(0x016FE3), RUNE_C(0x016FE3)},
- {RUNE_C(0x017000), RUNE_C(0x0187F7)},
- {RUNE_C(0x018800), RUNE_C(0x018CD5)},
- {RUNE_C(0x018D00), RUNE_C(0x018D08)},
- {RUNE_C(0x01AFF0), RUNE_C(0x01AFF3)},
- {RUNE_C(0x01AFF5), RUNE_C(0x01AFFB)},
- {RUNE_C(0x01AFFD), RUNE_C(0x01AFFE)},
- {RUNE_C(0x01B000), RUNE_C(0x01B122)},
- {RUNE_C(0x01B132), RUNE_C(0x01B132)},
- {RUNE_C(0x01B150), RUNE_C(0x01B152)},
- {RUNE_C(0x01B155), RUNE_C(0x01B155)},
- {RUNE_C(0x01B164), RUNE_C(0x01B167)},
- {RUNE_C(0x01B170), RUNE_C(0x01B2FB)},
- {RUNE_C(0x01BC00), RUNE_C(0x01BC6A)},
- {RUNE_C(0x01BC70), RUNE_C(0x01BC7C)},
- {RUNE_C(0x01BC80), RUNE_C(0x01BC88)},
- {RUNE_C(0x01BC90), RUNE_C(0x01BC99)},
- {RUNE_C(0x01D400), RUNE_C(0x01D454)},
- {RUNE_C(0x01D456), RUNE_C(0x01D49C)},
- {RUNE_C(0x01D49E), RUNE_C(0x01D49F)},
- {RUNE_C(0x01D4A2), RUNE_C(0x01D4A2)},
- {RUNE_C(0x01D4A5), RUNE_C(0x01D4A6)},
- {RUNE_C(0x01D4A9), RUNE_C(0x01D4AC)},
- {RUNE_C(0x01D4AE), RUNE_C(0x01D4B9)},
- {RUNE_C(0x01D4BB), RUNE_C(0x01D4BB)},
- {RUNE_C(0x01D4BD), RUNE_C(0x01D4C3)},
- {RUNE_C(0x01D4C5), RUNE_C(0x01D505)},
- {RUNE_C(0x01D507), RUNE_C(0x01D50A)},
- {RUNE_C(0x01D50D), RUNE_C(0x01D514)},
- {RUNE_C(0x01D516), RUNE_C(0x01D51C)},
- {RUNE_C(0x01D51E), RUNE_C(0x01D539)},
- {RUNE_C(0x01D53B), RUNE_C(0x01D53E)},
- {RUNE_C(0x01D540), RUNE_C(0x01D544)},
- {RUNE_C(0x01D546), RUNE_C(0x01D546)},
- {RUNE_C(0x01D54A), RUNE_C(0x01D550)},
- {RUNE_C(0x01D552), RUNE_C(0x01D6A5)},
- {RUNE_C(0x01D6A8), RUNE_C(0x01D6C0)},
- {RUNE_C(0x01D6C2), RUNE_C(0x01D6DA)},
- {RUNE_C(0x01D6DC), RUNE_C(0x01D6FA)},
- {RUNE_C(0x01D6FC), RUNE_C(0x01D714)},
- {RUNE_C(0x01D716), RUNE_C(0x01D734)},
- {RUNE_C(0x01D736), RUNE_C(0x01D74E)},
- {RUNE_C(0x01D750), RUNE_C(0x01D76E)},
- {RUNE_C(0x01D770), RUNE_C(0x01D788)},
- {RUNE_C(0x01D78A), RUNE_C(0x01D7A8)},
- {RUNE_C(0x01D7AA), RUNE_C(0x01D7C2)},
- {RUNE_C(0x01D7C4), RUNE_C(0x01D7CB)},
- {RUNE_C(0x01DF00), RUNE_C(0x01DF1E)},
- {RUNE_C(0x01DF25), RUNE_C(0x01DF2A)},
- {RUNE_C(0x01E030), RUNE_C(0x01E06D)},
- {RUNE_C(0x01E100), RUNE_C(0x01E12C)},
- {RUNE_C(0x01E137), RUNE_C(0x01E13D)},
- {RUNE_C(0x01E14E), RUNE_C(0x01E14E)},
- {RUNE_C(0x01E290), RUNE_C(0x01E2AD)},
- {RUNE_C(0x01E2C0), RUNE_C(0x01E2EB)},
- {RUNE_C(0x01E4D0), RUNE_C(0x01E4EB)},
- {RUNE_C(0x01E7E0), RUNE_C(0x01E7E6)},
- {RUNE_C(0x01E7E8), RUNE_C(0x01E7EB)},
- {RUNE_C(0x01E7ED), RUNE_C(0x01E7EE)},
- {RUNE_C(0x01E7F0), RUNE_C(0x01E7FE)},
- {RUNE_C(0x01E800), RUNE_C(0x01E8C4)},
- {RUNE_C(0x01E900), RUNE_C(0x01E943)},
- {RUNE_C(0x01E94B), RUNE_C(0x01E94B)},
- {RUNE_C(0x01EE00), RUNE_C(0x01EE03)},
- {RUNE_C(0x01EE05), RUNE_C(0x01EE1F)},
- {RUNE_C(0x01EE21), RUNE_C(0x01EE22)},
- {RUNE_C(0x01EE24), RUNE_C(0x01EE24)},
- {RUNE_C(0x01EE27), RUNE_C(0x01EE27)},
- {RUNE_C(0x01EE29), RUNE_C(0x01EE32)},
- {RUNE_C(0x01EE34), RUNE_C(0x01EE37)},
- {RUNE_C(0x01EE39), RUNE_C(0x01EE39)},
- {RUNE_C(0x01EE3B), RUNE_C(0x01EE3B)},
- {RUNE_C(0x01EE42), RUNE_C(0x01EE42)},
- {RUNE_C(0x01EE47), RUNE_C(0x01EE47)},
- {RUNE_C(0x01EE49), RUNE_C(0x01EE49)},
- {RUNE_C(0x01EE4B), RUNE_C(0x01EE4B)},
- {RUNE_C(0x01EE4D), RUNE_C(0x01EE4F)},
- {RUNE_C(0x01EE51), RUNE_C(0x01EE52)},
- {RUNE_C(0x01EE54), RUNE_C(0x01EE54)},
- {RUNE_C(0x01EE57), RUNE_C(0x01EE57)},
- {RUNE_C(0x01EE59), RUNE_C(0x01EE59)},
- {RUNE_C(0x01EE5B), RUNE_C(0x01EE5B)},
- {RUNE_C(0x01EE5D), RUNE_C(0x01EE5D)},
- {RUNE_C(0x01EE5F), RUNE_C(0x01EE5F)},
- {RUNE_C(0x01EE61), RUNE_C(0x01EE62)},
- {RUNE_C(0x01EE64), RUNE_C(0x01EE64)},
- {RUNE_C(0x01EE67), RUNE_C(0x01EE6A)},
- {RUNE_C(0x01EE6C), RUNE_C(0x01EE72)},
- {RUNE_C(0x01EE74), RUNE_C(0x01EE77)},
- {RUNE_C(0x01EE79), RUNE_C(0x01EE7C)},
- {RUNE_C(0x01EE7E), RUNE_C(0x01EE7E)},
- {RUNE_C(0x01EE80), RUNE_C(0x01EE89)},
- {RUNE_C(0x01EE8B), RUNE_C(0x01EE9B)},
- {RUNE_C(0x01EEA1), RUNE_C(0x01EEA3)},
- {RUNE_C(0x01EEA5), RUNE_C(0x01EEA9)},
- {RUNE_C(0x01EEAB), RUNE_C(0x01EEBB)},
- {RUNE_C(0x020000), RUNE_C(0x02A6DF)},
- {RUNE_C(0x02A700), RUNE_C(0x02B739)},
- {RUNE_C(0x02B740), RUNE_C(0x02B81D)},
- {RUNE_C(0x02B820), RUNE_C(0x02CEA1)},
- {RUNE_C(0x02CEB0), RUNE_C(0x02EBE0)},
- {RUNE_C(0x02EBF0), RUNE_C(0x02EE5D)},
- {RUNE_C(0x02F800), RUNE_C(0x02FA1D)},
- {RUNE_C(0x030000), RUNE_C(0x03134A)},
- {RUNE_C(0x031350), RUNE_C(0x0323AF)},
+static constexpr unsigned char stage2[][16] = {
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFE, 0xFF, 0xFF, 0x07, 0xFE, 0xFF, 0xFF, 0x07},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x04,
+ 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xC3, 0xFF, 0x03, 0x00, 0x1F, 0x50, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0xB8},
+ {0x40, 0xD7, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF},
+ {0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
+ 0xFF, 0xFF, 0x7F, 0x02, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x87, 0x07, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0x00, 0x00, 0x00, 0xC0, 0xFE, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x2F, 0x00, 0x60, 0xC0, 0x00, 0x9C},
+ {0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x02, 0x00,
+ 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x07, 0x30, 0x04},
+ {0xFF, 0xFF, 0x3F, 0x04, 0x10, 0x01, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0x07, 0xFF, 0xFF},
+ {0xFF, 0x7E, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x23,
+ 0x00, 0x00, 0x01, 0xFF, 0x03, 0x00, 0xFE, 0xFF},
+ {0xE1, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xC5, 0x23,
+ 0x00, 0x40, 0x00, 0xB0, 0x03, 0x00, 0x03, 0x10},
+ {0xE0, 0x87, 0xF9, 0xFF, 0xFF, 0xFD, 0x6D, 0x03,
+ 0x00, 0x00, 0x00, 0x5E, 0x00, 0x00, 0x1C, 0x00},
+ {0xE0, 0xBF, 0xFB, 0xFF, 0xFF, 0xFD, 0xED, 0x23,
+ 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x02},
+ {0xE0, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xED, 0x23,
+ 0x00, 0x00, 0x00, 0xB0, 0x03, 0x00, 0x02, 0x00},
+ {0xE8, 0xC7, 0x3D, 0xD6, 0x18, 0xC7, 0xFF, 0x03,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xE0, 0xDF, 0xFD, 0xFF, 0xFF, 0xFD, 0xFF, 0x23,
+ 0x00, 0x00, 0x00, 0x27, 0x03, 0x00, 0x00, 0x00},
+ {0xE1, 0xDF, 0xFD, 0xFF, 0xFF, 0xFD, 0xEF, 0x23,
+ 0x00, 0x00, 0x00, 0x60, 0x03, 0x00, 0x06, 0x00},
+ {0xF0, 0xDF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x27,
+ 0x00, 0x40, 0x70, 0x80, 0x03, 0x00, 0x00, 0xFC},
+ {0xE0, 0xFF, 0x7F, 0xFC, 0xFF, 0xFF, 0xFB, 0x2F,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x00,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xD6, 0xF7, 0xFF, 0xFF, 0xAF, 0xFF, 0x05, 0x20,
+ 0x5F, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00},
+ {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00},
+ {0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x80,
+ 0x00, 0x00, 0x3F, 0x3C, 0x62, 0xC0, 0xE1, 0xFF},
+ {0x03, 0x40, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xBF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x3D, 0x7F, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x7F,
+ 0x3D, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x3F},
+ {0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF},
+ {0xFE, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xFF, 0x01},
+ {0xFF, 0xFF, 0x03, 0x80, 0xFF, 0xFF, 0x03, 0x00,
+ 0xFF, 0xFF, 0x03, 0x00, 0xFF, 0xDF, 0x01, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00,
+ 0x00, 0x00, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF,
+ 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00,
+ 0xE0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xF8, 0xFF, 0xFF, 0xFF, 0x01, 0xC0, 0x00, 0xFC,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00,
+ 0x00, 0xE0, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x3F},
+ {0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0x6F, 0x04},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0x3F, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x3F, 0x3F, 0xFF, 0xAA, 0xFF, 0xFF, 0xFF, 0x3F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x5F,
+ 0xDC, 0x1F, 0xCF, 0x0F, 0xFF, 0x1F, 0xDC, 0x1F},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80},
+ {0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x84, 0xFC, 0x2F, 0x3F, 0x50, 0xFD, 0xFF, 0xF3,
+ 0xE0, 0x43, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x78, 0x0C, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x20, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00},
+ {0xFF, 0xFF, 0x7F, 0x00, 0x7F, 0x7F, 0x7F, 0x7F,
+ 0x7F, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00},
+ {0xE0, 0x00, 0x00, 0x00, 0xFE, 0x03, 0x3E, 0x1F,
+ 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0x7F, 0xE0, 0xFE, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7},
+ {0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF},
+ {0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F},
+ {0xFF, 0x1F, 0xFF, 0xFF, 0x00, 0x0C, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x80},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00},
+ {0x00, 0x00, 0x80, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xEB, 0x03, 0x00, 0x00, 0xFC, 0xFF},
+ {0xBB, 0xF7, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00},
+ {0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x68},
+ {0x00, 0xFC, 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF,
+ 0x7F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x1F},
+ {0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0xDF, 0xFF, 0x00, 0x7C},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00,
+ 0xF7, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0xC4},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x62, 0x3E,
+ 0x05, 0x00, 0x00, 0x38, 0xFF, 0x07, 0x1C, 0x00},
+ {0x7E, 0x7E, 0x7E, 0x00, 0x7F, 0x7F, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0x03, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xFF,
+ 0x7F, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0x00, 0xF8, 0xA0, 0xFF, 0xFD, 0x7F, 0x5F,
+ 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00,
+ 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x3F, 0xF0, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xAA},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F},
+ {0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x07,
+ 0xFE, 0xFF, 0xFF, 0x07, 0xC0, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0x7F,
+ 0xFC, 0xFC, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xEF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xB7,
+ 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xE0, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x0F, 0xFF, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0xFF, 0xF7},
+ {0xFF, 0xF7, 0xB7, 0xFF, 0xFB, 0xFF, 0xFB, 0x1B,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00,
+ 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0x00, 0x00, 0x00},
+ {0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x3F, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x91,
+ 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF, 0x7F, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x37, 0x00},
+ {0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF, 0xFF, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x01, 0x00, 0xEF, 0xFE, 0xFF, 0xFF, 0x3F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x1F},
+ {0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFE, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00,
+ 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF, 0x07, 0x00},
+ {0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x1F, 0x80, 0x00, 0xFF, 0xFF,
+ 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF},
+ {0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0x1F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00},
+ {0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00},
+ {0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00},
+ {0xF8, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00,
+ 0x90, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x47, 0x00},
+ {0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
+ 0x1E, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x0F, 0x00, 0x80,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0xBD, 0xFF, 0xBF, 0xFF, 0x01, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00},
+ {0xE0, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xED, 0x23,
+ 0x00, 0x00, 0x01, 0xE0, 0x03, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00,
+ 0x80, 0x07, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x80},
+ {0x7F, 0xF2, 0x6F, 0xFF, 0xFF, 0xFF, 0x00, 0x80,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x01, 0x00, 0x0A, 0x00, 0x00, 0x00},
+ {0x01, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x04,
+ 0x00, 0x00, 0x01, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0x03, 0x00, 0x20, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01},
+ {0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF},
+ {0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x7F, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00,
+ 0x40, 0x00, 0x00, 0x00, 0xBF, 0xFD, 0xFF, 0xFF},
+ {0xFF, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x00},
+ {0xF4, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0x0F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
+ 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x0F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xE0},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xF8, 0xFF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x6F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x04, 0x00,
+ 0x00, 0x00, 0x27, 0x00, 0xF0, 0x00, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0x1F},
+ {0xFF, 0x01, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xDF, 0x64, 0xDE, 0xFF, 0xEB,
+ 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xBF, 0xE7, 0xDF, 0xDF, 0xFF, 0xFF, 0xFF, 0x7B,
+ 0x5F, 0xFC, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF,
+ 0xFD, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xF7},
+ {0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF,
+ 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF},
+ {0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF,
+ 0xF7, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x7F, 0xE0, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x80, 0x3F,
+ 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00},
+ {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x7F, 0x6F, 0xFF, 0x7F},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x0F, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xEF, 0xFF, 0xFF, 0xFF, 0x96, 0xFE, 0xF7, 0x0A,
+ 0x84, 0xEA, 0x96, 0xAA, 0x96, 0xF7, 0xF7, 0x5E},
+ {0xFF, 0xFB, 0xFF, 0x0F, 0xEE, 0xFB, 0xFF, 0x0F,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
};
-_MLIB_DEFINE_BSEARCH_CONTAINS(lookup)
-
bool
uprop_is_xids(rune ch)
{
- return ch <= LATIN1_MAX ? TESTBIT(bs, ch) : mlib_lookup_contains(ch);
+ return TESTBIT(stage2[stage1[ch / 128]], ch % 128);
}