aboutsummaryrefslogtreecommitdiff
path: root/lib/unicode/prop/uprop_is_gr_ext.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/unicode/prop/uprop_is_gr_ext.c')
-rw-r--r--lib/unicode/prop/uprop_is_gr_ext.c1142
1 files changed, 770 insertions, 372 deletions
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);
}